<?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>226563</bug_id>
          
          <creation_ts>2021-06-02 18:29:44 -0700</creation_ts>
          <short_desc>[JSC] Implement JIT ICs for InByVal</short_desc>
          <delta_ts>2021-08-18 09:42:51 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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="Ross Kirsling">ross.kirsling</reporter>
          <assigned_to name="Ross Kirsling">ross.kirsling</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>1766252</commentid>
    <comment_count>0</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2021-06-02 18:29:44 -0700</bug_when>
    <thetext>[JSC] Implement JIT ICs for InByVal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766260</commentid>
    <comment_count>1</comment_count>
      <attachid>430432</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2021-06-02 18:57:49 -0700</bug_when>
    <thetext>Created attachment 430432
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766264</commentid>
    <comment_count>2</comment_count>
      <attachid>430435</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2021-06-02 19:29:11 -0700</bug_when>
    <thetext>Created attachment 430435
Patch

(Rebased.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766265</commentid>
    <comment_count>3</comment_count>
      <attachid>430436</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2021-06-02 19:32:39 -0700</bug_when>
    <thetext>Created attachment 430436
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766268</commentid>
    <comment_count>4</comment_count>
      <attachid>430439</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2021-06-02 20:18:23 -0700</bug_when>
    <thetext>Created attachment 430439
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766269</commentid>
    <comment_count>5</comment_count>
      <attachid>430440</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2021-06-02 20:37:32 -0700</bug_when>
    <thetext>Created attachment 430440
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766587</commentid>
    <comment_count>6</comment_count>
      <attachid>430440</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-06-03 16:51:25 -0700</bug_when>
    <thetext>Comment on attachment 430440
Patch

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

Nice. r=me with a few comments

&gt; Source/JavaScriptCore/bytecode/InByStatus.cppSource/JavaScriptCore/bytecode/InByIdStatus.cpp:299
&gt; +CacheableIdentifier InByStatus::singleIdentifier() const
&gt; +{
&gt; +    if (m_variants.isEmpty())
&gt; +        return nullptr;
&gt; +
&gt; +    CacheableIdentifier result = m_variants.first().identifier();
&gt; +    if (!result)
&gt; +        return nullptr;
&gt; +    for (size_t i = 1; i &lt; m_variants.size(); ++i) {
&gt; +        CacheableIdentifier identifier = m_variants[i].identifier();
&gt; +        if (!identifier)
&gt; +            return nullptr;
&gt; +        if (identifier != result)
&gt; +            return nullptr;
&gt; +    }
&gt; +    return result;
&gt; +}

We have so many implementations of this 😭

Maybe it&apos;s time for a templated version inside ICStatusUtils.h?

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:8250
&gt; +            InByStatus status = InByStatus::computeFor(

nit: can we compute this inside the branch where it&apos;s used?

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:479
&gt; +    if (key.getUInt32(i)) {
&gt; +        if (arrayProfile)
&gt; +            arrayProfile-&gt;observeIndexedRead(vm, baseObject, i);
&gt; +        RELEASE_AND_RETURN(scope, JSValue::encode(jsBoolean(baseObject-&gt;hasProperty(globalObject, i))));
&gt; +    }

Can we file a bug on making StructureStubInfo do in by val for indices? I think it should be straight-forward-ish, and could be a nice win. Similar to what we did for GetBy and indexed accesses.

&gt; Source/JavaScriptCore/jit/Repatch.cpp:-922
&gt; -        
&gt; +
&gt;          if (!base-&gt;structure(vm)-&gt;propertyAccessesAreCacheable() || (!wasFound &amp;&amp; !base-&gt;structure(vm)-&gt;propertyAccessesAreCacheableForAbsence()))
&gt;              return GiveUpOnCache;
&gt; -        
&gt; +
&gt;          if (wasFound) {
&gt;              if (!slot.isCacheable())
&gt;                  return GiveUpOnCache;
&gt;          }
&gt; -        
&gt; +
&gt;          Structure* structure = base-&gt;structure(vm);
&gt; -        

nit: lots of whitespace changes that aren&apos;t needed

&gt; Source/JavaScriptCore/jit/Repatch.h:54
&gt; +enum class InByKind {
&gt; +    Normal,
&gt; +    NormalByVal
&gt; +};

I&apos;m sorry for imparting this naming convention onto us. After this patch, I&apos;d propose a renaming like:

&quot;ById&quot; and &quot;ByVal&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766643</commentid>
    <comment_count>7</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2021-06-03 19:18:58 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #6)
&gt; Nice. r=me with a few comments

Thanks!

&gt; &gt; Source/JavaScriptCore/bytecode/InByStatus.cppSource/JavaScriptCore/bytecode/InByIdStatus.cpp:299
&gt; &gt; +CacheableIdentifier InByStatus::singleIdentifier() const
&gt; &gt; +{
&gt; &gt; +    if (m_variants.isEmpty())
&gt; &gt; +        return nullptr;
&gt; &gt; +
&gt; &gt; +    CacheableIdentifier result = m_variants.first().identifier();
&gt; &gt; +    if (!result)
&gt; &gt; +        return nullptr;
&gt; &gt; +    for (size_t i = 1; i &lt; m_variants.size(); ++i) {
&gt; &gt; +        CacheableIdentifier identifier = m_variants[i].identifier();
&gt; &gt; +        if (!identifier)
&gt; &gt; +            return nullptr;
&gt; &gt; +        if (identifier != result)
&gt; &gt; +            return nullptr;
&gt; &gt; +    }
&gt; &gt; +    return result;
&gt; &gt; +}
&gt; 
&gt; We have so many implementations of this 😭
&gt; 
&gt; Maybe it&apos;s time for a templated version inside ICStatusUtils.h?

Done!

&gt; &gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:8250
&gt; &gt; +            InByStatus status = InByStatus::computeFor(
&gt; 
&gt; nit: can we compute this inside the branch where it&apos;s used?

Good call; not sure why existing examples don&apos;t.

&gt; &gt; Source/JavaScriptCore/jit/JITOperations.cpp:479
&gt; &gt; +    if (key.getUInt32(i)) {
&gt; &gt; +        if (arrayProfile)
&gt; &gt; +            arrayProfile-&gt;observeIndexedRead(vm, baseObject, i);
&gt; &gt; +        RELEASE_AND_RETURN(scope, JSValue::encode(jsBoolean(baseObject-&gt;hasProperty(globalObject, i))));
&gt; &gt; +    }
&gt; 
&gt; Can we file a bug on making StructureStubInfo do in by val for indices? I
&gt; think it should be straight-forward-ish, and could be a nice win. Similar to
&gt; what we did for GetBy and indexed accesses.

Filed bug 226619.

&gt; &gt; Source/JavaScriptCore/jit/Repatch.h:54
&gt; &gt; +enum class InByKind {
&gt; &gt; +    Normal,
&gt; &gt; +    NormalByVal
&gt; &gt; +};
&gt; 
&gt; I&apos;m sorry for imparting this naming convention onto us. After this patch,
&gt; I&apos;d propose a renaming like:
&gt; 
&gt; &quot;ById&quot; and &quot;ByVal&quot;

Will do this as well as removing &quot;Id&quot; from *ByIdVariant as we discussed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766645</commentid>
    <comment_count>8</comment_count>
      <attachid>430533</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2021-06-03 19:23:00 -0700</bug_when>
    <thetext>Created attachment 430533
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766648</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-03 20:11:01 -0700</bug_when>
    <thetext>Committed r278445 (238465@main): &lt;https://commits.webkit.org/238465@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 430533.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766649</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-03 20:11:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/78850863&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785139</commentid>
    <comment_count>11</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-08-18 09:42:51 -0700</bug_when>
    <thetext>*** Bug 203865 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430432</attachid>
            <date>2021-06-02 18:57:49 -0700</date>
            <delta_ts>2021-06-02 19:29:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226563-20210602185748.patch</filename>
            <type>text/plain</type>
            <size>126860</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3OTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ZTkzZmU2NTkwNzMxZGFlNTdkMzYyNjNmYWQ4NGNiZDBiMGY4MWVjLi4zYTBiMzg5NDgxZjVlMmE5
NWRhZmU2YjVhMTMwZmUwNjkyMzQ5YWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjQgQEAKKzIwMjEtMDYtMDIgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNv
bnkuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBKSVQgSUNzIGZvciBJbkJ5VmFsCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY1NjMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVbnRpbCBub3cs
IEluQnlWYWwgaGFzIGhhZCBmZXcgb3B0aW1pemF0aW9ucyBpbXBsZW1lbnRlZDoKKyAgICAgICAg
REZHIHdvdWxkIGF0dGVtcHQgdG8gY29udmVydCBzdHJpbmcgaW5kZXggbG9va3VwcyB0byBJbkJ5
SWQgYW5kIGludDMyIGxvb2t1cHMgdG8gSGFzSW5kZXhlZFByb3BlcnR5LAorICAgICAgICBidXQg
dGhlcmUgaGFzIGJlZW4gbm8gaW5saW5lIGNhY2hpbmcgbm9yIGFueSBzcGVjaWFsIGhhbmRsaW5n
IGZvciBzeW1ib2wgbG9va3Vwcy4KKworICAgICAgICBUaGlzIGhhcyBiZWNvbWUgYSBtb3JlIHVy
Z2VudCBwcm9ibGVtIG5vdywgYXMgYCN4IGluIG9iamAgKGkuZS4gSGFzUHJpdmF0ZU5hbWUgLyBI
YXNQcml2YXRlQnJhbmQpCisgICAgICAgIHdpbGwgbmVlZCB0byBtaW1pYyBJbkJ5VmFsJ3MgaW5s
aW5lIGNhY2hpbmcgc3RyYXRlZ3kgaW4gb3JkZXIgdG8gYmUgZGVlbWVkIHBlcmZvcm1hbnQgZW5v
dWdoIHRvIHNoaXAuCisKKyAgICAgICAgVGhpcyBwYXRjaCB0aHVzIGltcGxlbWVudHMgaW5saW5l
IGNhY2hpbmcgZm9yIEluQnlWYWwgYXQgYWxsIEpJVCB0aWVycy4KKyAgICAgICAgVGhlIHJlc3Vs
dCBpcyBhIG5pZ2h0LWFuZC1kYXkgZGlmZmVyZW5jZSBmb3Igc3ltYm9scywgYSBuaWNlIGJvb3N0
IGZvciBzdHJpbmcgaW5kaWNlcywgYW5kIG5vIGNoYW5nZSBmb3IgaW50MzJzOiAKKworICAgICAg
ICBpbi1ieS12YWwtc3ltYm9sICAgICAgICAgICAgICAgICAgMjAzLjU1NzIrLTIuNzY0NyAgICAg
XiAgICAgMTkuMTAzNSstMC43NDk4ICAgICAgICBeIGRlZmluaXRlbHkgMTAuNjU1NXggZmFzdGVy
CisgICAgICAgIGluLWJ5LXZhbC1zdHJpbmctaW5kZXggICAgICAgICAgICAgODcuMDM2OCstNDQu
Nzc2NiAgICAgICAgICA0NS45OTcxKy0zMi4wMDA3ICAgICAgICAgbWlnaHQgYmUgMS44OTIyeCBm
YXN0ZXIKKyAgICAgICAgaW4tYnktdmFsLWludDMyICAgICAgICAgICAgICAgICAgIDExMC45OTA0
Ky0xLjcxMDkgICAgID8gICAgMTExLjM0MzErLTEuNzU1OCAgICAgICAgPworCisgICAgICAgICog
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3Vy
Y2VzLnR4dDoKKyAgICAgICAgKiBieXRlY29kZS9JQ1N0YXR1c01hcC5oOgorICAgICAgICAqIGJ5
dGVjb2RlL0luQnlJZFZhcmlhbnQuY3BwOgorICAgICAgICAoSlNDOjpJbkJ5SWRWYXJpYW50OjpJ
bkJ5SWRWYXJpYW50KToKKyAgICAgICAgKEpTQzo6SW5CeUlkVmFyaWFudDo6YXR0ZW1wdFRvTWVy
Z2UpOgorICAgICAgICAoSlNDOjpJbkJ5SWRWYXJpYW50OjpkdW1wSW5Db250ZXh0IGNvbnN0KToK
KyAgICAgICAgKiBieXRlY29kZS9JbkJ5SWRWYXJpYW50Lmg6CisgICAgICAgIChKU0M6OkluQnlJ
ZFZhcmlhbnQ6OmlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpJbkJ5SWRWYXJpYW50
OjpvdmVybGFwcyk6CisgICAgICAgICogYnl0ZWNvZGUvSW5CeVN0YXR1cy5jcHA6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeUlkU3RhdHVzLmNwcC4KKyAg
ICAgICAgKiBieXRlY29kZS9JbkJ5U3RhdHVzLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW5CeUlkU3RhdHVzLmguCisgICAgICAgICogYnl0ZWNvZGUvUmVj
b3JkZWRTdGF0dXNlcy5jcHA6CisgICAgICAgIChKU0M6OlJlY29yZGVkU3RhdHVzZXM6OmFkZElu
QnlTdGF0dXMpOiBSZW5hbWVkIGZyb20gYWRkSW5CeUlkU3RhdHVzLgorICAgICAgICAqIGJ5dGVj
b2RlL1JlY29yZGVkU3RhdHVzZXMuaDoKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHVi
SW5mby5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjpyZXNldCk6CisgICAg
ICAgICogYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaDoKKyAgICAgICAgKiBkZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAo
SlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpmaWx0ZXJJ
Q1N0YXR1cyk6CisgICAgICAgICogZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3Bw
OgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUluQnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6
CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0Nsb2Ji
ZXJzRXhpdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyc0V4aXRTdGF0ZSk6
CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dD
KToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkdyYXBoOjpkdW1wKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGls
ZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpsaW5rKToKKyAgICAgICAg
KiBkZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6
YWRkSW5CeVZhbCk6CisgICAgICAgICogZGZnL0RGR01heUV4aXQuY3BwOgorICAgICAgICAqIGRm
Zy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzSW5CeVN0YXR1cyk6IFJl
bmFtZWQgZnJvbSBoYXNJbkJ5SWRTdGF0dXMuCisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aW5C
eVN0YXR1cyk6IFJlbmFtZWQgZnJvbSBpbkJ5SWRTdGF0dXMuCisgICAgICAgICogZGZnL0RGR05v
ZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2Uu
Y3BwOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6Cisg
ICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZl
VG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5CeVZhbCk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAg
ICAqIGRmZy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKiBmdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAg
ICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlSW5CeSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVJbkJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlSW5CeVZhbCk6CisgICAgICAgICogaml0L0lDU3RhdHMuaDoKKyAgICAgICAgKiBq
aXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToK
KyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChK
U0M6OkpJVDo6bGluayk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVEluQnlWYWxHZW5lcmF0
b3I6OkpJVEluQnlWYWxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRJbkJ5VmFsR2VuZXJh
dG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKEpTQzo6SklUSW5CeVZhbEdlbmVyYXRv
cjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpKSVRJbkJ5SWRHZW5lcmF0b3I6OkpJVEluQnlJ
ZEdlbmVyYXRvcik6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmg6Cisg
ICAgICAgIChKU0M6OkpJVERlbEJ5SWRHZW5lcmF0b3I6OnNsb3dQYXRoSnVtcCBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkpJVEluQnlWYWxHZW5lcmF0b3I6OkpJVEluQnlWYWxHZW5lcmF0b3IpOgor
ICAgICAgICAoSlNDOjpKSVRJbkJ5VmFsR2VuZXJhdG9yOjpzbG93UGF0aEp1bXAgY29uc3QpOgor
ICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAg
ICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9pbl9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2luX2J5X3ZhbCk6
CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfaW5fYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19v
cF9pbl9ieV92YWwpOgorICAgICAgICAqIGppdC9KSVRUaHVua3MuY3BwOgorICAgICAgICAoSlND
OjpKSVRUaHVua3M6OnByZWluaXRpYWxpemVDVElUaHVua3MpOgorICAgICAgICAqIGppdC9SZXBh
dGNoLmNwcDoKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVJbkJ5KTogUmVuYW1lZCBmcm9tIHRyeUNh
Y2hlSW5CeUlELgorICAgICAgICAoSlNDOjpyZXBhdGNoSW5CeSk6IFJlbmFtZWQgZnJvbSByZXBh
dGNoSW5CeUlELgorICAgICAgICAoSlNDOjpyZXNldEluQnkpOiBSZW5hbWVkIGZyb20gcmVzZXRJ
bkJ5SUQuCisgICAgICAgICogaml0L1JlcGF0Y2guaDoKKyAgICAgICAgKiBsbGludC9MTEludFNs
b3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6
CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAgICAgKiBsbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHA6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKwogMjAyMS0wNS0yNCAg
S2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkLCByZXZlcnQgcjI3NjYxMCBiZWNhdXNlIGl0IGNhdXNlcyBhIDElIFBMVCByZWdyZXNzaW9u
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiYzA4NDBiNjFlMDkzMTZmMzVkZDNj
MzcwYWVkMWFkMzhhY2VkZWE0Li5iY2IxMDM2ODhiYjFkYTMxOWVhYjRhZTg0MDEwYjhkODMwODVl
YmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQwMiw3ICsxNDAyLDkgQEAK
IAkJQTFENzkyRkYxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFENzky
RjkxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oICovOyB9
OwogCQlBMUQ3OTMwMTFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFENzky
RkIxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaCAqLzsgfTsK
IAkJQTMyMUFBNkQyNjI2MzU5QjAwMjNBREEyIC8qIEludGxXb3JrYXJvdW5kLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMzIxQUE2QzI2MjYzNTlCMDAy
M0FEQTIgLyogSW50bFdvcmthcm91bmQuaCAqLzsgfTsKKwkJQTM4MkM1MzEyNjY3MTExRDAwNDJD
RDk5IC8qIEluQnlJZFZhcmlhbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzMzA1RkIxMjBCMEY3ODgwMENFQjgyQiAvKiBJbkJ5SWRWYXJpYW50Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTM4RDI1
MEUyNTgwMEQ0NDAwNDJCRkREIC8qIEpTQXJyYXlCdWZmZXJQcm90b3R5cGVJbmxpbmVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMzhEMjUwRDI1ODAw
RDQzMDA0MkJGREQgLyogSlNBcnJheUJ1ZmZlclByb3RvdHlwZUlubGluZXMuaCAqLzsgfTsKKwkJ
QTM4RDVCRkMyNjY2RDNEQTAwQTEwOUE2IC8qIEluQnlTdGF0dXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzOEQ1QkZBMjY2NkQzREEwMEExMDlBNiAv
KiBJbkJ5U3RhdHVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQTNFRTg1NDMyNjI1MTRCMDAwRkM5QjhEIC8qIEludGxXb3JrYXJvdW5kLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzNzYxOTQwMjYy
NTEyN0MwMENCQ0JBOSAvKiBJbnRsV29ya2Fyb3VuZC5jcHAgKi87IH07CiAJCUEzRkY5QkM3MjIz
NDc0OTEwMEIxQTlBQiAvKiBZYXJyRmxhZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEEzRkY5QkM1MjIzNDc0NjYwMEIxQTlBQiAvKiBZYXJyRmxhZ3Mu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTAz
RkExQTE4OEUwRkIwMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTQxODhFMEZBRjAwMTEw
RjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaCAqLzsgfTsKQEAgLTQ0MzIsNiArNDQzNCw4IEBA
CiAJCUEzMjFBQTZDMjYyNjM1OUIwMDIzQURBMiAvKiBJbnRsV29ya2Fyb3VuZC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsV29ya2Fyb3VuZC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBMzc2MTk0MDI2MjUxMjdDMDBDQkNCQTkgLyogSW50bFdvcmthcm91
bmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50bFdvcmthcm91
bmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzhEMjUwRDI1ODAwRDQzMDA0
MkJGREQgLyogSlNBcnJheUJ1ZmZlclByb3RvdHlwZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNBcnJheUJ1ZmZlclByb3RvdHlwZUlubGluZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTM4RDVCRjkyNjY2RDNEQTAwQTEwOUE2IC8qIEluQnlT
dGF0dXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5CeVN0YXR1
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzOEQ1QkZBMjY2NkQzREEwMEEx
MDlBNiAvKiBJbkJ5U3RhdHVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
QnlTdGF0dXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTNBRkY5MkIyNDVBM0NG
OTAwQzlCQTNCIC8qIEludGxMb2NhbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW50bExvY2FsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBM0FGRjkyQzI0
NUEzQ0ZBMDBDOUJBM0IgLyogSW50bExvY2FsZUNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEludGxMb2NhbGVDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBM0FGRjkyRDI0NUEzQ0ZBMDBDOUJBM0IgLyogSW50bExvY2FsZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsTG9jYWxlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUwNjAsMTAgKzUwNjQsOCBAQAogCQlFMzI4
MkJCOTFGRTkzMEEzMDBFREFGNzEgLyogWWFyckVycm9yQ29kZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBZYXJyRXJyb3JDb2RlLmNwcDsgcGF0aCA9IHlhcnIvWWFy
ckVycm9yQ29kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMjgyQkJBMUZF
OTMwQTQwMEVEQUY3MSAvKiBZYXJyRXJyb3JDb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFlhcnJFcnJvckNvZGUuaDsgcGF0aCA9IHlhcnIvWWFyckVycm9yQ29kZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzJDM0M2ODIzRTk0QzFFMDBCQzk3QzAgLyog
VW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJRTMzMDVGQUYyMEIwRjc4NzAwQ0VCODJCIC8qIEluQnlJZFN0YXR1cy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbkJ5SWRTdGF0dXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTMzMDVGQjAyMEIwRjc4NzAwQ0VCODJCIC8qIEluQnlJZFZhcmlh
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5CeUlkVmFyaWFu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMzA1RkIxMjBCMEY3ODgwMENF
QjgyQiAvKiBJbkJ5SWRWYXJpYW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEluQnlJZFZhcmlhbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTMzMDVGQjIy
MEIwRjc4ODAwQ0VCODJCIC8qIEluQnlJZFN0YXR1cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBJbkJ5SWRTdGF0dXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzMwOTVEQzIzMjEwQTE0MDBFQjc4NTYgLyogSlNJbnRlcm5hbEZpZWxkT2JqZWN0
SW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMzRDQkIyMjFGRDk2QTgwMDBFQjE3OCAvKiBSZWdF
eHBHbG9iYWxEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
Z0V4cEdsb2JhbERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzM0Q0JC
MzIxRkQ5NkE5MDAwRUIxNzggLyogUmVnRXhwR2xvYmFsRGF0YS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZWdFeHBHbG9iYWxEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC04NTgwLDEwICs4NTgyLDEwIEBACiAJCQkJMEY0NEE3QUYyMEJGNjg1RjAwMjJC
MTcxIC8qIElDU3RhdHVzTWFwLmggKi8sCiAJCQkJMEY0NEE3QjUyMEMwQkUzRjAwMjJCMTcxIC8q
IElDU3RhdHVzVXRpbHMuY3BwICovLAogCQkJCTBGQjM5OUJEMjBBRjZCMzgwMDE3RTIxMyAvKiBJ
Q1N0YXR1c1V0aWxzLmggKi8sCi0JCQkJRTMzMDVGQjIyMEIwRjc4ODAwQ0VCODJCIC8qIEluQnlJ
ZFN0YXR1cy5jcHAgKi8sCi0JCQkJRTMzMDVGQUYyMEIwRjc4NzAwQ0VCODJCIC8qIEluQnlJZFN0
YXR1cy5oICovLAogCQkJCUUzMzA1RkIwMjBCMEY3ODcwMENFQjgyQiAvKiBJbkJ5SWRWYXJpYW50
LmNwcCAqLywKIAkJCQlFMzMwNUZCMTIwQjBGNzg4MDBDRUI4MkIgLyogSW5CeUlkVmFyaWFudC5o
ICovLAorCQkJCUEzOEQ1QkY5MjY2NkQzREEwMEExMDlBNiAvKiBJbkJ5U3RhdHVzLmNwcCAqLywK
KwkJCQlBMzhENUJGQTI2NjZEM0RBMDBBMTA5QTYgLyogSW5CeVN0YXR1cy5oICovLAogCQkJCTc5
MDVCQjY2MUQxMjA1MEUwMDE5RkU1NyAvKiBJbmxpbmVBY2Nlc3MuY3BwICovLAogCQkJCTc5MDVC
QjY3MUQxMjA1MEUwMDE5RkU1NyAvKiBJbmxpbmVBY2Nlc3MuaCAqLywKIAkJCQkxNDhBN0JFRDFC
ODI5NzVBMDAyRDkxNTcgLyogSW5saW5lQ2FsbEZyYW1lLmNwcCAqLywKQEAgLTk0NTgsNyArOTQ2
MCw2IEBACiAJCQkJQkMxOEM0NUUwRTE2RjVDRDAwQjM0NDYwIC8qIENMb29wU3RhY2suaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3QzFFQUYwMTc5ODdBQjYwMDI5OURCMiAvKiBDTG9vcFN0YWNrSW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTY5QTA3OTcwRUQxRDNBRTAwRjFGNjgxIC8qIENv
ZGVCbG9jay5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkVGNUI0MjkyNjI4QjUyNDAwMTZFNzc2IC8q
IEpTU2V0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY4Rjk0NDExNjY3NjMzMjAwRDYx
OTcxIC8qIENvZGVCbG9ja0hhc2guaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzk3RjM0MTgyMDIw
RDcwMDJDOUIyNiAvKiBDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGRDhBMzE0MTdENDMyNkMwMENBMkM0MCAvKiBDb2RlQmxvY2tTZXQuaCBpbiBI
ZWFkZXJzICovLApAQCAtOTY1Nyw3ICs5NjU4LDYgQEAKIAkJCQkwRkQ4MkU1NzE0MURBRjEwMDAx
NzlDOTQgLyogREZHT1NSRW50cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDhBMzI2MTdENTFG
NTcwMENBMkM0MCAvKiBERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZDMDk3NkExNDY4QTZGNzAwQ0YyNDQyIC8qIERGR09TUkV4aXQuaCBpbiBIZWFk
ZXJzICovLAotCQkJCUZFRjVCNDI3MjYyOEFCRDkwMDE2RTc3NiAvKiBKU1dlYWtNYXBJbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJFQzE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NS
RXhpdEJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkI5MjFDMTZEMDJGMTEwMDU1QTVEQiAv
KiBERkdPU1JFeGl0Q29tcGlsYXRpb25JbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjcwMjVB
QTE3MTRCMEZDMDAzODJDMEUgLyogREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmggaW4gSGVhZGVy
cyAqLywKQEAgLTk3NTIsNiArOTc1Miw3IEBACiAJCQkJMTQ3MzQxRDIxREMwMkUyRTAwQUEyOUJB
IC8qIEV2YWxFeGVjdXRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTFDMEZGRDFCMTkzRTk4
MDBCNTNGQ0EgLyogRXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTYwMjlEOTFENkUx
RTRGMDAzMDIwNEQgLyogRXhjZXB0aW9uRXZlbnRMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJRkVGNUI0MzAyNjJBMzM4QjAwMTZFNzc2IC8qIEV4Y2VwdGlvbkV4cGVjdGF0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjEyREUxMDE5NzlENUZEMDAwNkZGNEUgLyogRXhjZXB0aW9uRnV6
ei5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MDAwRTE2RjVDRDAwQjM0NDYwIC8qIEV4Y2Vw
dGlvbkhlbHBlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNjQ5MTM3MUQ3OEYwMUQwMEE2OTRE
NCAvKiBFeGNlcHRpb25TY29wZS5oIGluIEhlYWRlcnMgKi8sCkBAIC05Nzg4LDcgKzk3ODksNiBA
QAogCQkJCTBGRUEwQTBDMTcwNTEzREIwMEJCNzIyQyAvKiBGVExDb21waWxlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjlENEMwRDFDM0UxQzExMDA2Q0Q5ODQgLyogRlRMRXhjZXB0aW9uVGFyZ2V0
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJENDE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhp
dEFyZ3VtZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlGRUY1QjQyMzI2MjhBMEVFMDAxNkU3NzYg
LyogSGFzaE1hcEltcGxJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJENjE3MTc4
RTFDMDA2OTBDN0YgLyogRlRMRXhpdEFyZ3VtZW50Rm9yT3BlcmFuZC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYyQjlDRjUxOUQwQkFDMTAwQjFEMUI1IC8qIEZUTEV4aXRQcm9wZXJ0eVZhbHVlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjJCOUNGNzE5RDBCQUMxMDBCMUQxQjUgLyogRlRMRXhpdFRp
bWVPYmplY3RNYXRlcmlhbGl6YXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtOTgzMiw3ICs5ODMy
LDYgQEAKIAkJCQkyQTgzNjM4QTE4RDdEMEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0aXZpdHlDYWxs
YmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTJFRUQ3OTQyNDkyQjg3MDAwOEY0QzkzIC8qIEZ1
bmN0aW9uQWxsb3dsaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEFEOTEwRDFEQ0E5Mjk0MDAx
NEY5RkUgLyogRnVuY3Rpb25Db2RlQmxvY2suaCBpbiBIZWFkZXJzICovLAotCQkJCUZFRjVCNDJD
MjYyOENCQzgwMDE2RTc3NiAvKiBWTVRyYXBzSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkMxOEM0MDQwRTE2RjVDRDAwQjM0NDYwIC8qIEZ1bmN0aW9uQ29uc3RydWN0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTE0NzM0MUQ4MURDMDJGOTkwMEFBMjlCQSAvKiBGdW5jdGlvbkV4ZWN1dGFi
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjBGMUEwMTZCNzJBMUEwMDVERjk1QiAvKiBGdW5j
dGlvbkV4ZWN1dGFibGVEdW1wLmggaW4gSGVhZGVycyAqLywKQEAgLTk5MTEsNiArOTkxMCw3IEBA
CiAJCQkJMTQyRTMxMzYxMzRGRjBBNjAwQUZBREI1IC8qIEhhbmRsZVNldC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTQ3ODI5N0IxMzc5RThBODAwQTdDMkEzIC8qIEhhbmRsZVR5cGVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3OUEwOTA4MDFENzY4NDY1MDA4Qjg4OUIgLyogSGFzaE1hcEltcGwuaCBp
biBIZWFkZXJzICovLAorCQkJCUZFRjVCNDIzMjYyOEEwRUUwMDE2RTc3NiAvKiBIYXNoTWFwSW1w
bElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTc5REZDQkRCMUQ4OEM1OTYwMDUyN0QwMyAv
KiBIYXNPd25Qcm9wZXJ0eUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEJBN0E5ODEzQUFE
RkY4MDA1QjdDMkMgLyogSGVhcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTE3N0ExREMyMkY5NThE
NTAwQjM0Q0EyIC8qIEhlYXBBbmFseXplci5oIGluIEhlYWRlcnMgKi8sCkBAIC05OTMzLDYgKzk5
MzMsOCBAQAogCQkJCUJDMThDNDBGMEUxNkY1Q0QwMEIzNDQ2MCAvKiBJZGVudGlmaWVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4NjA2RERFQTE4REE0NEFCMDBBMzgzRDAgLyogSWRlbnRpZmllcklu
bGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RkQwMDc2MTg5QjAzOEMwMDYzMzIzMSAvKiBJ
ZGVudGlmaWVyc0ZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAorCQkJCUEzODJDNTMxMjY2NzExMUQw
MDQyQ0Q5OSAvKiBJbkJ5SWRWYXJpYW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlBMzhENUJGQzI2
NjZEM0RBMDBBMTA5QTYgLyogSW5CeVN0YXR1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzI1RjhC
Q0UxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZCN0YzOTkxNUVEOEU0NjAwRjE2N0IyIC8qIEluZGV4aW5nSGVhZGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkI3RjM5QTE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5kZXhpbmdIZWFkZXJJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTEwMTg0LDYgKzEwMTg2LDcgQEAKIAkJCQlDMjVE
NzA5QzE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTJBNEJCN0YzMThBNDExNzkwMDhBMEZDRCAvKiBKU01hbmFnZWRWYWx1ZUludGVybmFsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNzAwODc0MjE3Q0JFOEVCMDBDM0U2NDMgLyogSlNNYXAuaCBp
biBIZWFkZXJzICovLAorCQkJCUZFRjVCNDI1MjYyOEE4NTAwMDE2RTc3NiAvKiBKU01hcElubGlu
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3NERFRjk2MTgyRDk5MTQwMDUyMkMyMiAvKiBKU01h
cEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCMjg2RDFFQjhFNkQ1MDAwRUI1RDIg
LyogSlNNYXJraW5nQ29uc3RyYWludFByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwMTND
QThDMUI0OTFBOTQwMENBRTYxMyAvKiBKU01pY3JvdGFzay5oIGluIEhlYWRlcnMgKi8sCkBAIC0x
MDIxOSw2ICsxMDIyMiw3IEBACiAJCQkJMTREMDFBNzcyMUZCMzUxRjAwQkM1NEU5IC8qIEpTU2Ny
aXB0U291cmNlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTE5RDExMTU3RjMzMkMw
MDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNzI5OUQ5RTE3RDEyODM3MDA1RjVGRjkgLyogSlNTZXQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUZFRjVCNDI5MjYyOEI1MjQwMDE2RTc3NiAvKiBKU1NldElubGluZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE3OTBERDcwMTgyRjQ5OTcwMDU4ODgwNyAvKiBKU1NldEl0ZXJhdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCREZDQjJCQkU5MEY0MTM0OUUxQjBCRUQgLyogSlNTb3VyY2VDb2RlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQyNzBFMTZGNUNEMDBCMzQ0NjAgLyogSlNTdHJpbmcu
aCBpbiBIZWFkZXJzICovLApAQCAtMTAyNDcsMTIgKzEwMjUxLDEyIEBACiAJCQkJODZFM0M2MTIx
NjdCQUJENzAwNkQ3NjBBIC8qIEpTVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RTNDNjFC
MTY3QkFCRUUwMDZENzYwQSAvKiBKU1ZhbHVlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTUzRTFGOEY4MjE1NDcxNUEwMDAxRERCQyAvKiBKU1ZhbHVlUHJpdmF0ZS5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJRkU4QzAzMTIyNjRBNjkxMTAwMUE0NEFEIC8qIFNsb3dQYXRoRnVuY3Rpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCUJDMThDNDJDMEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1ZhbHVlUmVm
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkUzQzYxNTE2N0JBQkQ3MDA2RDc2MEEgLyogSlNWaXJ0
dWFsTWFjaGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFM0M2MUQxNjdCQUJFRTAwNkQ3NjBB
IC8qIEpTVmlydHVhbE1hY2hpbmVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzk1QUM2
MTgyMEEyMzU1RTAwNTJDNzZDIC8qIEpTVmlydHVhbE1hY2hpbmVQcml2YXRlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBN0NBM0FFODE3REE0MUFFMDA2NTM4QUYgLyogSlNXZWFrTWFwLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlGRUY1QjQyNzI2MjhBQkQ5MDAxNkU3NzYgLyogSlNXZWFrTWFwSW5saW5l
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc0ODJFOTMxMTZBN0NBRDAwM0IwNzEyIC8qIEpTV2Vh
a09iamVjdE1hcFJlZkludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzQ4MkI5MzExNjcx
MTQ3MDAzQjA3MTIgLyogSlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTM5QkZCQjAyMkFEM0NEQzAwMjNGNEMwIC8qIEpTV2Vha09iamVjdFJlZi5oIGluIEhl
YWRlcnMgKi8sCkBAIC0xMDUzMSw2ICsxMDUzNSw3IEBACiAJCQkJQzIxNjBGRTcxNUY3RTk1RTAw
OTQyREZDIC8qIFNsb3RWaXNpdG9ySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUwNDE1
NTMyNTJFQzA3MzAwOTFFQjVEIC8qIFNsb3RWaXNpdG9yTWFjcm9zLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNzA5RjJGMDE3QTBBQzA0MDA1MTJFOTggLyogU2xvd1BhdGhDYWxsLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlGRThDMDMxMjI2NEE2OTExMDAxQTQ0QUQgLyogU2xvd1BhdGhGdW5jdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1QjRBMzMxQzg0RjBENjAwRjFCMTdFIC8qIFNsb3dQYXRo
UmV0dXJuVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDQwMDQwRTZBNzQ5NDAwNzg2RTZB
IC8qIFNtYWxsU3RyaW5ncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTNGMjNBODIxRUNGMTNGRTAw
OTc4RDk5IC8qIFNuaXBwZXQuaCBpbiBIZWFkZXJzICovLApAQCAtMTA1NjgsNyArMTA1NzMsNiBA
QAogCQkJCUJDREUzQUI4MEU2QzgyRjUwMDE0NTNBNyAvKiBTdHJ1Y3R1cmUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTc5ODY5NDNCMUY4QzBBQ0MwMDkyMzJBRSAvKiBTdHJ1Y3R1cmVDYWNoZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJN0U0RUU3MDkwRUJCNzk2MzAwNTkzNEFBIC8qIFN0cnVjdHVyZUNo
YWluLmggaW4gSGVhZGVycyAqLywKLQkJCQlGRUY1QjQyNTI2MjhBODUwMDAxNkU3NzYgLyogSlNN
YXBJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkyQUFBQTMxMjE4QkQ0OUQxMDAzOTRDQzgg
LyogU3RydWN0dXJlSURCbG9iLmggaW4gSGVhZGVycyAqLywKIAkJCQkyQUY3MzgyRDE4QkJCRjky
MDA4QTVBMzcgLyogU3RydWN0dXJlSURUYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEMkM5
MjQxNkQwMUVFOTAwQzc4MDNGIC8qIFN0cnVjdHVyZUlubGluZXMuaCBpbiBIZWFkZXJzICovLApA
QCAtMTA2NjEsNiArMTA2NjUsNyBAQAogCQkJCUZFMzAyMkQ3MUU0Mjg1NzMwMEJBQzQ5MyAvKiBW
TUluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkVDNTc5NzMyMzEwNUI1MTAwQkNBODNG
IC8qIFZNSW5zcGVjdG9ySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU2RjU2REUxRTY0
RUFENjAwRDE3ODAxIC8qIFZNVHJhcHMuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFRjVCNDJDMjYy
OENCQzgwMDE2RTc3NiAvKiBWTVRyYXBzSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTI4
NDdBREMyMUZGQjg2OTAwNjFBOURCIC8qIFdhc21BaXJJUkdlbmVyYXRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTNGNDBFOTMxRDVBNEFCMzAwOTlBMUI2IC8qIFdhc21CM0lSR2VuZXJhdG9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1M0NBNzMwQTFFQTUzM0Q4MDA3NjA0OUQgLyogV2FzbUJCUVBs
YW4uaCBpbiBIZWFkZXJzICovLApAQCAtMTA3NTMsNyArMTA3NTgsNiBAQAogCQkJCUFERTgwMjlB
MUUwOEYxREUwMDU4REU3OCAvKiBXZWJBc3NlbWJseUxpbmtFcnJvckNvbnN0cnVjdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBREU4MDI5QzFFMDhGMURFMDA1OERFNzggLyogV2ViQXNzZW1ibHlM
aW5rRXJyb3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUFEMkZDQkY1MURCNThEQUQw
MEIzRTczNiAvKiBXZWJBc3NlbWJseU1lbW9yeUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywK
LQkJCQlGRUY1QjQzMDI2MkEzMzhCMDAxNkU3NzYgLyogRXhjZXB0aW9uRXhwZWN0YXRpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCUFEMkZDQzFBMURCNTlDQjIwMEIzRTczNiAvKiBXZWJBc3NlbWJs
eU1lbW9yeUNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQyRkNCRjcxREI1
OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBRDJGQ0MxQjFEQjU5Q0IyMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlNZW1vcnlQcm90
b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRl
eCAzZWVmYTA0ZGI1MTM1NTM1ZWVmYWRmZDczMTc2NTQ4MTNhNjg2NmM4Li43Y2M5MWFlMTY4ZDc0
OTRmOGYxMjZiNTE2ZGE0MzdmNTQ2NjljYmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0
CkBAIC0yNDAsNyArMjQwLDcgQEAgYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCiBieXRlY29k
ZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmNwcAogYnl0ZWNvZGUvSUNTdGF0dXNNYXAuY3BwCiBi
eXRlY29kZS9JQ1N0YXR1c1V0aWxzLmNwcAotYnl0ZWNvZGUvSW5CeUlkU3RhdHVzLmNwcAorYnl0
ZWNvZGUvSW5CeVN0YXR1cy5jcHAKIGJ5dGVjb2RlL0luQnlJZFZhcmlhbnQuY3BwCiBieXRlY29k
ZS9JbmxpbmVBY2Nlc3MuY3BwCiBieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSUNTdGF0dXNNYXAuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5oCmluZGV4IGYwMzE5MDExNWEz
YjhlNDJiNGViOGI4NzQwM2FmMmQ4NGUwMzc0ZWQuLmZhMGE2ZDUyM2I3YWQwZGY4ODIxMTA3ZmUz
Yjg0OTE3YzQ4M2Q5NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9JQ1N0YXR1c01hcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0
YXR1c01hcC5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIENhbGxMaW5rSW5mbzsKIGNsYXNzIENh
bGxMaW5rU3RhdHVzOwogY2xhc3MgQ29kZUJsb2NrOwogY2xhc3MgR2V0QnlTdGF0dXM7Ci1jbGFz
cyBJbkJ5SWRTdGF0dXM7CitjbGFzcyBJbkJ5U3RhdHVzOwogY2xhc3MgUHV0QnlJZFN0YXR1czsK
IGNsYXNzIERlbGV0ZUJ5U3RhdHVzOwogY2xhc3MgU3RydWN0dXJlU3R1YkluZm87CkBAIC00Nyw3
ICs0Nyw3IEBAIHN0cnVjdCBJQ1N0YXR1cyB7CiAgICAgQnlWYWxJbmZvKiBieVZhbEluZm8geyBu
dWxscHRyIH07CiAgICAgQ2FsbExpbmtTdGF0dXMqIGNhbGxTdGF0dXMgeyBudWxscHRyIH07CiAg
ICAgR2V0QnlTdGF0dXMqIGdldFN0YXR1cyB7IG51bGxwdHIgfTsKLSAgICBJbkJ5SWRTdGF0dXMq
IGluU3RhdHVzIHsgbnVsbHB0ciB9OworICAgIEluQnlTdGF0dXMqIGluU3RhdHVzIHsgbnVsbHB0
ciB9OwogICAgIFB1dEJ5SWRTdGF0dXMqIHB1dFN0YXR1cyB7IG51bGxwdHIgfTsKICAgICBEZWxl
dGVCeVN0YXR1cyogZGVsZXRlU3RhdHVzIHsgbnVsbHB0ciB9OwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRTdGF0dXMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFN0YXR1cy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDQ5MzhhNjNjMWIyYWVjOTBiZmQwNDZjZjU3NDk2Yzg1MzEzYTI2NjguLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFN0YXR1cy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwy
OTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBZdXN1a2UgU3V6dWtpIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+LgotICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSW5CeUlkU3RhdHVzLmgi
Ci0KLSNpbmNsdWRlICJDb2RlQmxvY2suaCIKLSNpbmNsdWRlICJDb21wbGV4R2V0U3RhdHVzLmgi
Ci0jaW5jbHVkZSAiSUNTdGF0dXNVdGlscy5oIgotI2luY2x1ZGUgIlBvbHltb3JwaGljQWNjZXNz
LmgiCi0jaW5jbHVkZSAiU3RydWN0dXJlU3R1YkluZm8uaCIKLSNpbmNsdWRlIDx3dGYvTGlzdER1
bXAuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWJvb2wgSW5CeUlkU3RhdHVzOjphcHBlbmRWYXJp
YW50KGNvbnN0IEluQnlJZFZhcmlhbnQmIHZhcmlhbnQpCi17Ci0gICAgcmV0dXJuIGFwcGVuZElD
U3RhdHVzVmFyaWFudChtX3ZhcmlhbnRzLCB2YXJpYW50KTsKLX0KLQotdm9pZCBJbkJ5SWRTdGF0
dXM6OnNocmlua1RvRml0KCkKLXsKLSAgICBtX3ZhcmlhbnRzLnNocmlua1RvRml0KCk7Ci19Ci0K
LSNpZiBFTkFCTEUoSklUKQotSW5CeUlkU3RhdHVzIEluQnlJZFN0YXR1czo6Y29tcHV0ZUZvcihD
b2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIElDU3RhdHVzTWFwJiBtYXAsIEJ5dGVjb2RlSW5kZXgg
Ynl0ZWNvZGVJbmRleCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgRXhpdEZsYWcgZGlkRXhpdCkK
LXsKLSAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHByb2ZpbGVkQmxvY2stPm1fbG9jayk7
Ci0KLSAgICBJbkJ5SWRTdGF0dXMgcmVzdWx0OwotCi0jaWYgRU5BQkxFKERGR19KSVQpCi0gICAg
cmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2sobG9ja2Vy
LCBwcm9maWxlZEJsb2NrLT52bSgpLCBtYXAuZ2V0KENvZGVPcmlnaW4oYnl0ZWNvZGVJbmRleCkp
LnN0dWJJbmZvLCB1aWQpOwotCi0gICAgaWYgKCFyZXN1bHQudGFrZXNTbG93UGF0aCgpICYmIGRp
ZEV4aXQpCi0gICAgICAgIHJldHVybiBJbkJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCk7Ci0jZWxz
ZQotICAgIFVOVVNFRF9QQVJBTShtYXApOwotICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4
KTsKLSAgICBVTlVTRURfUEFSQU0odWlkKTsKLSAgICBVTlVTRURfUEFSQU0oZGlkRXhpdCk7Ci0j
ZW5kaWYKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLUluQnlJZFN0YXR1cyBJbkJ5SWRTdGF0
dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBJQ1N0YXR1c01hcCYgbWFw
LCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCi17
Ci0gICAgcmV0dXJuIGNvbXB1dGVGb3IocHJvZmlsZWRCbG9jaywgbWFwLCBieXRlY29kZUluZGV4
LCB1aWQsIGhhc0JhZENhY2hlRXhpdFNpdGUocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCkp
OwotfQotCi1JbkJ5SWRTdGF0dXMgSW5CeUlkU3RhdHVzOjpjb21wdXRlRm9yKAotICAgIENvZGVC
bG9jayogcHJvZmlsZWRCbG9jaywgSUNTdGF0dXNNYXAmIGJhc2VsaW5lTWFwLAotICAgIElDU3Rh
dHVzQ29udGV4dFN0YWNrJiBjb250ZXh0U3RhY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgVW5p
cXVlZFN0cmluZ0ltcGwqIHVpZCkKLXsKLSAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgg
PSBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgoKTsKLSAgICBFeGl0RmxhZyBkaWRFeGl0ID0gaGFz
QmFkQ2FjaGVFeGl0U2l0ZShwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4KTsKLSAgICAKLSAg
ICBmb3IgKElDU3RhdHVzQ29udGV4dCogY29udGV4dCA6IGNvbnRleHRTdGFjaykgewotICAgICAg
ICBJQ1N0YXR1cyBzdGF0dXMgPSBjb250ZXh0LT5nZXQoY29kZU9yaWdpbik7Ci0gICAgICAgIAot
ICAgICAgICBhdXRvIGJsZXNzID0gWyZdIChjb25zdCBJbkJ5SWRTdGF0dXMmIHJlc3VsdCkgLT4g
SW5CeUlkU3RhdHVzIHsKLSAgICAgICAgICAgIGlmICghY29udGV4dC0+aXNJbmxpbmVkKGNvZGVP
cmlnaW4pKSB7Ci0gICAgICAgICAgICAgICAgSW5CeUlkU3RhdHVzIGJhc2VsaW5lUmVzdWx0ID0g
Y29tcHV0ZUZvcigKLSAgICAgICAgICAgICAgICAgICAgcHJvZmlsZWRCbG9jaywgYmFzZWxpbmVN
YXAsIGJ5dGVjb2RlSW5kZXgsIHVpZCwgZGlkRXhpdCk7Ci0gICAgICAgICAgICAgICAgYmFzZWxp
bmVSZXN1bHQubWVyZ2UocmVzdWx0KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gYmFzZWxpbmVS
ZXN1bHQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoZGlkRXhpdC5pc1NldChFeGl0
RnJvbUlubGluZWQpKQotICAgICAgICAgICAgICAgIHJldHVybiBJbkJ5SWRTdGF0dXMoVGFrZXNT
bG93UGF0aCk7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9OwotICAgICAg
ICAKLSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICAgICAgaWYgKHN0YXR1cy5zdHViSW5mbykgewot
ICAgICAgICAgICAgSW5CeUlkU3RhdHVzIHJlc3VsdDsKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvbnRleHQtPm9wdGltaXplZENvZGVC
bG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBjb21wdXRlRm9yU3R1Yklu
Zm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjayhsb2NrZXIsIHByb2ZpbGVkQmxvY2stPnZtKCksIHN0
YXR1cy5zdHViSW5mbywgdWlkKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChyZXN1
bHQuaXNTZXQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gYmxlc3MocmVzdWx0KTsKLSAgICAg
ICAgfQotI2VuZGlmCi0gICAgICAgIAotICAgICAgICBpZiAoc3RhdHVzLmluU3RhdHVzKQotICAg
ICAgICAgICAgcmV0dXJuIGJsZXNzKCpzdGF0dXMuaW5TdGF0dXMpOwotICAgIH0KLSAgICAKLSAg
ICByZXR1cm4gY29tcHV0ZUZvcihwcm9maWxlZEJsb2NrLCBiYXNlbGluZU1hcCwgYnl0ZWNvZGVJ
bmRleCwgdWlkLCBkaWRFeGl0KTsKLX0KLSNlbmRpZiAvLyBFTkFCTEUoSklUKQotCi0jaWYgRU5B
QkxFKERGR19KSVQpCi1JbkJ5SWRTdGF0dXMgSW5CeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1Yklu
Zm8oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIENvZGVCbG9jayogcHJvZmlsZWRC
bG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4s
IFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCi17Ci0gICAgSW5CeUlkU3RhdHVzIHJlc3VsdCA9IElu
QnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2sobG9j
a2VyLCBwcm9maWxlZEJsb2NrLT52bSgpLCBzdHViSW5mbywgdWlkKTsKLQotICAgIGlmICghcmVz
dWx0LnRha2VzU2xvd1BhdGgoKSAmJiBoYXNCYWRDYWNoZUV4aXRTaXRlKHByb2ZpbGVkQmxvY2ss
IGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCgpKSkKLSAgICAgICAgcmV0dXJuIEluQnlJZFN0YXR1
cyhUYWtlc1Nsb3dQYXRoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1JbkJ5SWRTdGF0dXMg
SW5CeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjayhj
b25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBWTSYgdm0sIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHVi
SW5mbywgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKLXsKLSAgICBTdHViSW5mb1N1bW1hcnkgc3Vt
bWFyeSA9IFN0cnVjdHVyZVN0dWJJbmZvOjpzdW1tYXJ5KHZtLCBzdHViSW5mbyk7Ci0gICAgaWYg
KCFpc0lubGluZWFibGUoc3VtbWFyeSkpCi0gICAgICAgIHJldHVybiBJbkJ5SWRTdGF0dXMoc3Vt
bWFyeSk7Ci0gICAgCi0gICAgLy8gRmluYWxseSBmaWd1cmUgb3V0IGlmIHdlIGNhbiBkZXJpdmUg
YW4gYWNjZXNzIHN0cmF0ZWd5LgotICAgIEluQnlJZFN0YXR1cyByZXN1bHQ7Ci0gICAgcmVzdWx0
Lm1fc3RhdGUgPSBTaW1wbGU7Ci0gICAgc3dpdGNoIChzdHViSW5mby0+Y2FjaGVUeXBlKCkpIHsK
LSAgICBjYXNlIENhY2hlVHlwZTo6VW5zZXQ6Ci0gICAgICAgIHJldHVybiBJbkJ5SWRTdGF0dXMo
Tm9JbmZvcm1hdGlvbik7Ci0KLSAgICBjYXNlIENhY2hlVHlwZTo6SW5CeUlkU2VsZjogewotICAg
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHN0dWJJbmZvLT51LmJ5SWRTZWxmLmJhc2VPYmpl
Y3RTdHJ1Y3R1cmUuZ2V0KCk7Ci0gICAgICAgIGlmIChzdHJ1Y3R1cmUtPnRha2VzU2xvd1BhdGhJ
bkRGR0ZvckltcHVyZVByb3BlcnR5KCkpCi0gICAgICAgICAgICByZXR1cm4gSW5CeUlkU3RhdHVz
KFRha2VzU2xvd1BhdGgpOwotICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwotICAgICAgICBJ
bkJ5SWRWYXJpYW50IHZhcmlhbnQ7Ci0gICAgICAgIHZhcmlhbnQubV9vZmZzZXQgPSBzdHJ1Y3R1
cmUtPmdldENvbmN1cnJlbnRseSh1aWQsIGF0dHJpYnV0ZXMpOwotICAgICAgICBpZiAoIWlzVmFs
aWRPZmZzZXQodmFyaWFudC5tX29mZnNldCkpCi0gICAgICAgICAgICByZXR1cm4gSW5CeUlkU3Rh
dHVzKFRha2VzU2xvd1BhdGgpOwotICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3Nvck9yVmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gSW5CeUlk
U3RhdHVzKFRha2VzU2xvd1BhdGgpOwotCi0gICAgICAgIHZhcmlhbnQubV9zdHJ1Y3R1cmVTZXQu
YWRkKHN0cnVjdHVyZSk7Ci0gICAgICAgIGJvb2wgZGlkQXBwZW5kID0gcmVzdWx0LmFwcGVuZFZh
cmlhbnQodmFyaWFudCk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoZGlkQXBwZW5kLCBkaWRBcHBl
bmQpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIGNhc2UgQ2FjaGVUeXBl
OjpTdHViOiB7Ci0gICAgICAgIFBvbHltb3JwaGljQWNjZXNzKiBsaXN0ID0gc3R1YkluZm8tPnUu
c3R1YjsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBsaXN0SW5kZXggPSAwOyBsaXN0SW5kZXggPCBs
aXN0LT5zaXplKCk7ICsrbGlzdEluZGV4KSB7Ci0gICAgICAgICAgICBjb25zdCBBY2Nlc3NDYXNl
JiBhY2Nlc3MgPSBsaXN0LT5hdChsaXN0SW5kZXgpOwotICAgICAgICAgICAgaWYgKGFjY2Vzcy52
aWFQcm94eSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBJbkJ5SWRTdGF0dXMoVGFrZXNTbG93
UGF0aCk7Ci0KLSAgICAgICAgICAgIGlmIChhY2Nlc3MudXNlc1BvbHlQcm90bygpKQotICAgICAg
ICAgICAgICAgIHJldHVybiBJbkJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCk7Ci0KLSAgICAgICAg
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYWNjZXNzLnN0cnVjdHVyZSgpOwotICAgICAgICAg
ICAgaWYgKCFzdHJ1Y3R1cmUpIHsKLSAgICAgICAgICAgICAgICAvLyBUaGUgbnVsbCBzdHJ1Y3R1
cmUgY2FzZXMgYXJpc2UgZHVlIHRvIGFycmF5Lmxlbmd0aC4gV2UgaGF2ZSBubyB3YXkgb2YgY3Jl
YXRpbmcgYQotICAgICAgICAgICAgICAgIC8vIEluQnlJZFZhcmlhbnQgZm9yIHRob3NlLCBhbmQg
d2UgZG9uJ3QgcmVhbGx5IGhhdmUgdG8gc2luY2UgdGhlIERGRyBoYW5kbGVzIHRob3NlCi0gICAg
ICAgICAgICAgICAgLy8gY2FzZXMgaW4gRml4dXBQaGFzZSB1c2luZyB2YWx1ZSBwcm9maWxpbmcu
IFRoYXQncyBhIGJpdCBhd2t3YXJkIC0gd2Ugc2hvdWxkbid0Ci0gICAgICAgICAgICAgICAgLy8g
aGF2ZSB0byB1c2UgdmFsdWUgcHJvZmlsaW5nIHRvIGRpc2NvdmVyIHNvbWV0aGluZyB0aGF0IHRo
ZSBBY2Nlc3NDYXNlIGNvdWxkIGhhdmUKLSAgICAgICAgICAgICAgICAvLyB0b2xkIHVzLiBCdXQs
IGl0IHdvcmtzIHdlbGwgZW5vdWdoLiBTbywgb3VyIG9ubHkgY29uY2VybiBoZXJlIGlzIHRvIG5v
dAotICAgICAgICAgICAgICAgIC8vIGNyYXNoIG9uIG51bGwgc3RydWN0dXJlLgotICAgICAgICAg
ICAgICAgIHJldHVybiBJbkJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCk7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIENvbXBsZXhHZXRTdGF0dXMgY29tcGxleEdldFN0YXR1cyA9IENvbXBs
ZXhHZXRTdGF0dXM6OmNvbXB1dGVGb3Ioc3RydWN0dXJlLCBhY2Nlc3MuY29uZGl0aW9uU2V0KCks
IHVpZCk7Ci0gICAgICAgICAgICBzd2l0Y2ggKGNvbXBsZXhHZXRTdGF0dXMua2luZCgpKSB7Ci0g
ICAgICAgICAgICBjYXNlIENvbXBsZXhHZXRTdGF0dXM6OlNob3VsZFNraXA6Ci0gICAgICAgICAg
ICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIGNhc2UgQ29tcGxleEdldFN0YXR1czo6VGFr
ZXNTbG93UGF0aDoKLSAgICAgICAgICAgICAgICByZXR1cm4gSW5CeUlkU3RhdHVzKFRha2VzU2xv
d1BhdGgpOwotCi0gICAgICAgICAgICBjYXNlIENvbXBsZXhHZXRTdGF0dXM6OklubGluZWFibGU6
IHsKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKGFjY2Vzcy50eXBlKCkpIHsKLSAgICAgICAgICAg
ICAgICBjYXNlIEFjY2Vzc0Nhc2U6OkluSGl0OgotICAgICAgICAgICAgICAgIGNhc2UgQWNjZXNz
Q2FzZTo6SW5NaXNzOgotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gSW5CeUlkU3RhdHVzKFRha2Vz
U2xvd1BhdGgpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIEluQnlJZFZh
cmlhbnQgdmFyaWFudCgKLSAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlU2V0KHN0cnVjdHVy
ZSksIGNvbXBsZXhHZXRTdGF0dXMub2Zmc2V0KCksCi0gICAgICAgICAgICAgICAgICAgIGNvbXBs
ZXhHZXRTdGF0dXMuY29uZGl0aW9uU2V0KCkpOwotCi0gICAgICAgICAgICAgICAgaWYgKCFyZXN1
bHQuYXBwZW5kVmFyaWFudCh2YXJpYW50KSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIElu
QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHJlc3VsdC5zaHJp
bmtUb0ZpdCgpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIGRlZmF1bHQ6
Ci0gICAgICAgIHJldHVybiBJbkJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCk7Ci0gICAgfQotCi0g
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gSW5CeUlkU3RhdHVz
KCk7Ci19Ci0jZW5kaWYKLQotdm9pZCBJbkJ5SWRTdGF0dXM6Om1lcmdlKGNvbnN0IEluQnlJZFN0
YXR1cyYgb3RoZXIpCi17Ci0gICAgaWYgKG90aGVyLm1fc3RhdGUgPT0gTm9JbmZvcm1hdGlvbikK
LSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIHN3aXRjaCAobV9zdGF0ZSkgewotICAgIGNhc2Ug
Tm9JbmZvcm1hdGlvbjoKLSAgICAgICAgKnRoaXMgPSBvdGhlcjsKLSAgICAgICAgcmV0dXJuOwot
ICAgICAgICAKLSAgICBjYXNlIFNpbXBsZToKLSAgICAgICAgaWYgKG90aGVyLm1fc3RhdGUgIT0g
U2ltcGxlKSB7Ci0gICAgICAgICAgICAqdGhpcyA9IEluQnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRo
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBmb3IgKGNvbnN0IElu
QnlJZFZhcmlhbnQmIG90aGVyVmFyaWFudCA6IG90aGVyLm1fdmFyaWFudHMpIHsKLSAgICAgICAg
ICAgIGlmICghYXBwZW5kVmFyaWFudChvdGhlclZhcmlhbnQpKSB7Ci0gICAgICAgICAgICAgICAg
KnRoaXMgPSBJbkJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHNocmlua1RvRml0KCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgY2FzZSBUYWtlc1Nsb3dQYXRoOgotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci19Ci0KLXZvaWQgSW5CeUlkU3RhdHVzOjpmaWx0ZXIoY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1
Y3R1cmVTZXQpCi17Ci0gICAgaWYgKG1fc3RhdGUgIT0gU2ltcGxlKQotICAgICAgICByZXR1cm47
Ci0gICAgZmlsdGVySUNTdGF0dXNWYXJpYW50cyhtX3ZhcmlhbnRzLCBzdHJ1Y3R1cmVTZXQpOwot
ICAgIGlmIChtX3ZhcmlhbnRzLmlzRW1wdHkoKSkKLSAgICAgICAgbV9zdGF0ZSA9IE5vSW5mb3Jt
YXRpb247Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+Ci12b2lkIEluQnlJZFN0YXR1
czo6bWFya0lmQ2hlYXAoVmlzaXRvciYgdmlzaXRvcikKLXsKLSAgICBmb3IgKEluQnlJZFZhcmlh
bnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKQotICAgICAgICB2YXJpYW50Lm1hcmtJZkNoZWFwKHZp
c2l0b3IpOwotfQotCi10ZW1wbGF0ZSB2b2lkIEluQnlJZFN0YXR1czo6bWFya0lmQ2hlYXAoQWJz
dHJhY3RTbG90VmlzaXRvciYpOwotdGVtcGxhdGUgdm9pZCBJbkJ5SWRTdGF0dXM6Om1hcmtJZkNo
ZWFwKFNsb3RWaXNpdG9yJik7Ci0KLWJvb2wgSW5CeUlkU3RhdHVzOjpmaW5hbGl6ZShWTSYgdm0p
Ci17Ci0gICAgZm9yIChJbkJ5SWRWYXJpYW50JiB2YXJpYW50IDogbV92YXJpYW50cykgewotICAg
ICAgICBpZiAoIXZhcmlhbnQuZmluYWxpemUodm0pKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBJbkJ5SWRTdGF0dXM6OmR1bXAo
UHJpbnRTdHJlYW0mIG91dCkgY29uc3QKLXsKLSAgICBvdXQucHJpbnQoIigiKTsKLSAgICBzd2l0
Y2ggKG1fc3RhdGUpIHsKLSAgICBjYXNlIE5vSW5mb3JtYXRpb246Ci0gICAgICAgIG91dC5wcmlu
dCgiTm9JbmZvcm1hdGlvbiIpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNpbXBsZToKLSAg
ICAgICAgb3V0LnByaW50KCJTaW1wbGUiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUYWtl
c1Nsb3dQYXRoOgotICAgICAgICBvdXQucHJpbnQoIlRha2VzU2xvd1BhdGgiKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgfQotICAgIG91dC5wcmludCgiLCAiLCBsaXN0RHVtcChtX3ZhcmlhbnRzKSwg
IikiKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRTdGF0dXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JbkJ5SWRTdGF0dXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
N2YxNWZjNWU0NjFhOWEwMmU0ZjdiZGI2MWY4Nzk2Y2ZiNzY2OTVhOS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSW5CeUlkU3RhdHVzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMjUgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOCBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+LgotICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCi0jaW5jbHVkZSAiQ29kZU9y
aWdpbi5oIgotI2luY2x1ZGUgIkNvbmN1cnJlbnRKU0xvY2suaCIKLSNpbmNsdWRlICJJQ1N0YXR1
c01hcC5oIgotI2luY2x1ZGUgIkluQnlJZFZhcmlhbnQuaCIKLSNpbmNsdWRlICJTdHViSW5mb1N1
bW1hcnkuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIEFjY2Vzc0Nhc2U7Ci1jbGFzcyBD
b2RlQmxvY2s7Ci1jbGFzcyBTdHJ1Y3R1cmVTdHViSW5mbzsKLQotY2xhc3MgSW5CeUlkU3RhdHVz
IGZpbmFsIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBlbnVt
IFN0YXRlIHsKLSAgICAgICAgLy8gSXQncyB1bmNhY2hlZCBzbyB3ZSBoYXZlIG5vIGluZm9ybWF0
aW9uLgotICAgICAgICBOb0luZm9ybWF0aW9uLAotICAgICAgICAvLyBJdCdzIGNhY2hlZCBmb3Ig
YSBzaW1wbGUgYWNjZXNzIHRvIGEga25vd24gb2JqZWN0IHByb3BlcnR5IHdpdGgKLSAgICAgICAg
Ly8gYSBwb3NzaWJsZSBzdHJ1Y3R1cmUgY2hhaW4gYW5kIGEgcG9zc2libGUgc3BlY2lmaWMgdmFs
dWUuCi0gICAgICAgIFNpbXBsZSwKLSAgICAgICAgLy8gSXQncyBrbm93biB0byBvZnRlbiB0YWtl
IHNsb3cgcGF0aC4KLSAgICAgICAgVGFrZXNTbG93UGF0aCwKLSAgICB9OwotCi0gICAgSW5CeUlk
U3RhdHVzKCkgPSBkZWZhdWx0OwotCi0gICAgSW5CeUlkU3RhdHVzKFN0YXRlIHN0YXRlLCBjb25z
dCBJbkJ5SWRWYXJpYW50JiB2YXJpYW50ID0gSW5CeUlkVmFyaWFudCgpKQotICAgICAgICA6IG1f
c3RhdGUoc3RhdGUpCi0gICAgewotICAgICAgICBBU1NFUlQoKHN0YXRlID09IFNpbXBsZSkgPT0g
dmFyaWFudC5pc1NldCgpKTsKLSAgICAgICAgaWYgKHZhcmlhbnQuaXNTZXQoKSkKLSAgICAgICAg
ICAgIG1fdmFyaWFudHMuYXBwZW5kKHZhcmlhbnQpOwotICAgIH0KLQotICAgIGV4cGxpY2l0IElu
QnlJZFN0YXR1cyhTdHViSW5mb1N1bW1hcnkgc3VtbWFyeSkKLSAgICB7Ci0gICAgICAgIHN3aXRj
aCAoc3VtbWFyeSkgewotICAgICAgICBjYXNlIFN0dWJJbmZvU3VtbWFyeTo6Tm9JbmZvcm1hdGlv
bjoKLSAgICAgICAgICAgIG1fc3RhdGUgPSBOb0luZm9ybWF0aW9uOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICBjYXNlIFN0dWJJbmZvU3VtbWFyeTo6U2ltcGxlOgotICAgICAgICBjYXNl
IFN0dWJJbmZvU3VtbWFyeTo6TWFrZXNDYWxsczoKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNhc2UgU3R1Yklu
Zm9TdW1tYXJ5OjpUYWtlc1Nsb3dQYXRoOgotICAgICAgICBjYXNlIFN0dWJJbmZvU3VtbWFyeTo6
VGFrZXNTbG93UGF0aEFuZE1ha2VzQ2FsbHM6Ci0gICAgICAgICAgICBtX3N0YXRlID0gVGFrZXNT
bG93UGF0aDsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLSAgICAKLSAgICBzdGF0aWMgSW5CeUlkU3Rh
dHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgSUNTdGF0dXNNYXAmLCBCeXRlY29kZUluZGV4LCBV
bmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKLSAgICBzdGF0aWMgSW5CeUlkU3RhdHVzIGNvbXB1dGVG
b3IoQ29kZUJsb2NrKiwgSUNTdGF0dXNNYXAmLCBCeXRlY29kZUluZGV4LCBVbmlxdWVkU3RyaW5n
SW1wbCogdWlkLCBFeGl0RmxhZyk7Ci0gICAgc3RhdGljIEluQnlJZFN0YXR1cyBjb21wdXRlRm9y
KENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgSUNTdGF0dXNNYXAmIGJhc2VsaW5lTWFwLCBJQ1N0
YXR1c0NvbnRleHRTdGFjayYgY29udGV4dFN0YWNrLCBDb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5n
SW1wbCogdWlkKTsKLQotI2lmIEVOQUJMRShERkdfSklUKQotICAgIHN0YXRpYyBJbkJ5SWRTdGF0
dXMgY29tcHV0ZUZvclN0dWJJbmZvKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9j
ayogYmFzZWxpbmVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qLCBDb2RlT3JpZ2luLCBVbmlxdWVk
U3RyaW5nSW1wbCogdWlkKTsKLSNlbmRpZgotCi0gICAgU3RhdGUgc3RhdGUoKSBjb25zdCB7IHJl
dHVybiBtX3N0YXRlOyB9Ci0KLSAgICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
ZSAhPSBOb0luZm9ybWF0aW9uOyB9Ci0gICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0
IHsgcmV0dXJuIGlzU2V0KCk7IH0KLSAgICBib29sIGlzU2ltcGxlKCkgY29uc3QgeyByZXR1cm4g
bV9zdGF0ZSA9PSBTaW1wbGU7IH0KLQotICAgIHNpemVfdCBudW1WYXJpYW50cygpIGNvbnN0IHsg
cmV0dXJuIG1fdmFyaWFudHMuc2l6ZSgpOyB9Ci0gICAgY29uc3QgVmVjdG9yPEluQnlJZFZhcmlh
bnQsIDE+JiB2YXJpYW50cygpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFudHM7IH0KLSAgICBjb25z
dCBJbkJ5SWRWYXJpYW50JiBhdChzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFu
dHNbaW5kZXhdOyB9Ci0gICAgY29uc3QgSW5CeUlkVmFyaWFudCYgb3BlcmF0b3JbXShzaXplX3Qg
aW5kZXgpIGNvbnN0IHsgcmV0dXJuIGF0KGluZGV4KTsgfQotCi0gICAgYm9vbCB0YWtlc1Nsb3dQ
YXRoKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBUYWtlc1Nsb3dQYXRoOyB9Ci0gICAgCi0g
ICAgdm9pZCBtZXJnZShjb25zdCBJbkJ5SWRTdGF0dXMmKTsKLQotICAgIC8vIEF0dGVtcHRzIHRv
IHJlZHVjZSB0aGUgc2V0IG9mIHZhcmlhbnRzIHRvIGZpdCB0aGUgZ2l2ZW4gc3RydWN0dXJlIHNl
dC4gVGhpcyBtYXkgYmUgYXBwcm94aW1hdGUuCi0gICAgdm9pZCBmaWx0ZXIoY29uc3QgU3RydWN0
dXJlU2V0Jik7Ci0gICAgCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4gdm9pZCBtYXJr
SWZDaGVhcChWaXNpdG9yJik7Ci0gICAgYm9vbCBmaW5hbGl6ZShWTSYpOwotCi0gICAgdm9pZCBk
dW1wKFByaW50U3RyZWFtJikgY29uc3Q7Ci0KLXByaXZhdGU6Ci0jaWYgRU5BQkxFKERGR19KSVQp
Ci0gICAgc3RhdGljIEluQnlJZFN0YXR1cyBjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNp
dGVGZWVkYmFjayhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBWTSYsIFN0cnVjdHVyZVN0dWJJ
bmZvKiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7Ci0jZW5kaWYKLSAgICBib29sIGFwcGVuZFZh
cmlhbnQoY29uc3QgSW5CeUlkVmFyaWFudCYpOwotICAgIHZvaWQgc2hyaW5rVG9GaXQoKTsKLQot
ICAgIFN0YXRlIG1fc3RhdGUgeyBOb0luZm9ybWF0aW9uIH07Ci0gICAgVmVjdG9yPEluQnlJZFZh
cmlhbnQsIDE+IG1fdmFyaWFudHM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRWYXJpYW50LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRWYXJpYW50LmNwcAppbmRleCBmNGMy
YjU4NmIxODhlNjM5MjQ1ODcyYWUyNTE2ZGE4YjhlNGYwNWFmLi5mNDk0YmZiZGI0YWVmNWNlNmFi
NzExMjdhZDY1ZTc4MzQwZWVjYmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSW5CeUlkVmFyaWFudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0luQnlJZFZhcmlhbnQuY3BwCkBAIC0yNywxMiArMjcsMTUgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJJbkJ5SWRWYXJpYW50LmgiCiAKKyNpbmNsdWRlICJDYWNoZWFi
bGVJZGVudGlmaWVySW5saW5lcy5oIgorCiBuYW1lc3BhY2UgSlNDIHsKIAotSW5CeUlkVmFyaWFu
dDo6SW5CeUlkVmFyaWFudChjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCwgUHJvcGVy
dHlPZmZzZXQgb2Zmc2V0LCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgY29uZGl0
aW9uU2V0KQorSW5CeUlkVmFyaWFudDo6SW5CeUlkVmFyaWFudChDYWNoZWFibGVJZGVudGlmaWVy
IGlkZW50aWZpZXIsIGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0LCBQcm9wZXJ0eU9m
ZnNldCBvZmZzZXQsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25T
ZXQpCiAgICAgOiBtX3N0cnVjdHVyZVNldChzdHJ1Y3R1cmVTZXQpCiAgICAgLCBtX2NvbmRpdGlv
blNldChjb25kaXRpb25TZXQpCiAgICAgLCBtX29mZnNldChvZmZzZXQpCisgICAgLCBtX2lkZW50
aWZpZXIoV1RGTW92ZShpZGVudGlmaWVyKSkKIHsKICAgICBpZiAoIXN0cnVjdHVyZVNldC5zaXpl
KCkpIHsKICAgICAgICAgQVNTRVJUKG9mZnNldCA9PSBpbnZhbGlkT2Zmc2V0KTsKQEAgLTQyLDYg
KzQ1LDEyIEBAIEluQnlJZFZhcmlhbnQ6OkluQnlJZFZhcmlhbnQoY29uc3QgU3RydWN0dXJlU2V0
JiBzdHJ1Y3R1cmVTZXQsIFByb3BlcnR5T2Zmc2V0IG9mCiAKIGJvb2wgSW5CeUlkVmFyaWFudDo6
YXR0ZW1wdFRvTWVyZ2UoY29uc3QgSW5CeUlkVmFyaWFudCYgb3RoZXIpCiB7CisgICAgaWYgKCEh
bV9pZGVudGlmaWVyICE9ICEhb3RoZXIubV9pZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBpZiAobV9pZGVudGlmaWVyICYmIChtX2lkZW50aWZpZXIgIT0gb3RoZXIubV9p
ZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYgKG1fb2Zmc2V0ICE9
IG90aGVyLm1fb2Zmc2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTg5LDEzICs5OCwx
MyBAQCB2b2lkIEluQnlJZFZhcmlhbnQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIAog
dm9pZCBJbkJ5SWRWYXJpYW50OjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBD
b250ZXh0KiBjb250ZXh0KSBjb25zdAogeworICAgIG91dC5wcmludCgiPGlkPSciLCBtX2lkZW50
aWZpZXIsICInLCAiKTsKICAgICBpZiAoIWlzU2V0KCkpIHsKLSAgICAgICAgb3V0LnByaW50KCI8
ZW1wdHk+Iik7CisgICAgICAgIG91dC5wcmludCgiZW1wdHk+Iik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBvdXQucHJpbnQoCi0gICAgICAgICI8IiwgaW5Db250ZXh0KHN0cnVjdHVy
ZVNldCgpLCBjb250ZXh0KSwgIiwgIiwgaW5Db250ZXh0KG1fY29uZGl0aW9uU2V0LCBjb250ZXh0
KSk7CisgICAgb3V0LnByaW50KGluQ29udGV4dChzdHJ1Y3R1cmVTZXQoKSwgY29udGV4dCksICIs
ICIsIGluQ29udGV4dChtX2NvbmRpdGlvblNldCwgY29udGV4dCkpOwogICAgIG91dC5wcmludCgi
LCBvZmZzZXQgPSAiLCBvZmZzZXQoKSk7CiAgICAgb3V0LnByaW50KCI+Iik7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeUlkVmFyaWFudC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFZhcmlhbnQuaAppbmRleCA3ODJhNWRh
ODgxMDYyMzBkNzQzM2NmMWE5ZTYwZTNkZjhkMTEwZWNlLi43ZDczMjM4ZmJlNTMxMmI1ZDdiOTU0
YzBkMjJkYmE5ZjE4MGUwMDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSW5CeUlkVmFyaWFudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9JbkJ5SWRWYXJpYW50LmgKQEAgLTI2LDYgKzI2LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNp
bmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJvcGVydHlD
b25kaXRpb25TZXQuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU9mZnNldC5oIgogI2luY2x1ZGUgIlN0
cnVjdHVyZVNldC5oIgpAQCAtMzUsMTMgKzM2LDEzIEBAIG5hbWVzcGFjZSBET01KSVQgewogY2xh
c3MgR2V0dGVyU2V0dGVyOwogfQogCi1jbGFzcyBJbkJ5SWRTdGF0dXM7CitjbGFzcyBJbkJ5U3Rh
dHVzOwogc3RydWN0IER1bXBDb250ZXh0OwogCiBjbGFzcyBJbkJ5SWRWYXJpYW50IHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBJbkJ5SWRWYXJpYW50KGNvbnN0
IFN0cnVjdHVyZVNldCYgPSBTdHJ1Y3R1cmVTZXQoKSwgUHJvcGVydHlPZmZzZXQgPSBpbnZhbGlk
T2Zmc2V0LCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgPSBPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvblNldCgpKTsKKyAgICBJbkJ5SWRWYXJpYW50KENhY2hlYWJsZUlkZW50aWZpZXIs
IGNvbnN0IFN0cnVjdHVyZVNldCYgPSBTdHJ1Y3R1cmVTZXQoKSwgUHJvcGVydHlPZmZzZXQgPSBp
bnZhbGlkT2Zmc2V0LCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgPSBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvblNldCgpKTsKIAogICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVy
biAhIW1fc3RydWN0dXJlU2V0LnNpemUoKTsgfQogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2wo
KSBjb25zdCB7IHJldHVybiBpc1NldCgpOyB9CkBAIC02MywxNyArNjQsMjYgQEAgcHVibGljOgog
ICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIHZvaWQgZHVtcEluQ29udGV4
dChQcmludFN0cmVhbSYsIER1bXBDb250ZXh0KikgY29uc3Q7CiAKKyAgICBDYWNoZWFibGVJZGVu
dGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKwogICAg
IGJvb2wgb3ZlcmxhcHMoY29uc3QgSW5CeUlkVmFyaWFudCYgb3RoZXIpCiAgICAgeworICAgICAg
ICBpZiAoISFtX2lkZW50aWZpZXIgIT0gISFvdGhlci5tX2lkZW50aWZpZXIpCisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKG1faWRlbnRpZmllcikgeworICAgICAgICAgICAg
aWYgKG1faWRlbnRpZmllciAhPSBvdGhlci5tX2lkZW50aWZpZXIpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CiAgICAgICAgIHJldHVybiBzdHJ1Y3R1cmVTZXQoKS5v
dmVybGFwcyhvdGhlci5zdHJ1Y3R1cmVTZXQoKSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIGZy
aWVuZCBjbGFzcyBJbkJ5SWRTdGF0dXM7CisgICAgZnJpZW5kIGNsYXNzIEluQnlTdGF0dXM7CiAK
ICAgICBTdHJ1Y3R1cmVTZXQgbV9zdHJ1Y3R1cmVTZXQ7CiAgICAgT2JqZWN0UHJvcGVydHlDb25k
aXRpb25TZXQgbV9jb25kaXRpb25TZXQ7CiAgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7Cisg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5U3Rh
dHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5U3RhdHVzLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45OTIxOWEwZjIxZGMxNDYwNDY0NzE3ZjJiYTYwYWI4NTNhNGMwZWRmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlTdGF0dXMu
Y3BwCkBAIC0wLDAgKzEsMzE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IFl1c3VrZSBT
dXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbkJ5
U3RhdHVzLmgiCisKKyNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkNvbXBsZXhHZXRTdGF0dXMuaCIKKyNpbmNs
dWRlICJJQ1N0YXR1c1V0aWxzLmgiCisjaW5jbHVkZSAiUG9seW1vcnBoaWNBY2Nlc3MuaCIKKyNp
bmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgorI2luY2x1ZGUgPHd0Zi9MaXN0RHVtcC5oPgor
CituYW1lc3BhY2UgSlNDIHsKKworYm9vbCBJbkJ5U3RhdHVzOjphcHBlbmRWYXJpYW50KGNvbnN0
IEluQnlJZFZhcmlhbnQmIHZhcmlhbnQpCit7CisgICAgcmV0dXJuIGFwcGVuZElDU3RhdHVzVmFy
aWFudChtX3ZhcmlhbnRzLCB2YXJpYW50KTsKK30KKwordm9pZCBJbkJ5U3RhdHVzOjpzaHJpbmtU
b0ZpdCgpCit7CisgICAgbV92YXJpYW50cy5zaHJpbmtUb0ZpdCgpOworfQorCisjaWYgRU5BQkxF
KEpJVCkKK0luQnlTdGF0dXMgSW5CeVN0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIHByb2Zp
bGVkQmxvY2ssIElDU3RhdHVzTWFwJiBtYXAsIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCwg
RXhpdEZsYWcgZGlkRXhpdCkKK3sKKyAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHByb2Zp
bGVkQmxvY2stPm1fbG9jayk7CisKKyAgICBJbkJ5U3RhdHVzIHJlc3VsdDsKKworI2lmIEVOQUJM
RShERkdfSklUKQorICAgIHJlc3VsdCA9IGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0
ZUZlZWRiYWNrKGxvY2tlciwgcHJvZmlsZWRCbG9jay0+dm0oKSwgbWFwLmdldChDb2RlT3JpZ2lu
KGJ5dGVjb2RlSW5kZXgpKS5zdHViSW5mbyk7CisKKyAgICBpZiAoIXJlc3VsdC50YWtlc1Nsb3dQ
YXRoKCkgJiYgZGlkRXhpdCkKKyAgICAgICAgcmV0dXJuIEluQnlTdGF0dXMoVGFrZXNTbG93UGF0
aCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShtYXApOworICAgIFVOVVNFRF9QQVJBTShieXRl
Y29kZUluZGV4KTsKKyAgICBVTlVTRURfUEFSQU0oZGlkRXhpdCk7CisjZW5kaWYKKworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK0luQnlTdGF0dXMgSW5CeVN0YXR1czo6Y29tcHV0ZUZvcihDb2Rl
QmxvY2sqIHByb2ZpbGVkQmxvY2ssIElDU3RhdHVzTWFwJiBtYXAsIEJ5dGVjb2RlSW5kZXggYnl0
ZWNvZGVJbmRleCkKK3sKKyAgICByZXR1cm4gY29tcHV0ZUZvcihwcm9maWxlZEJsb2NrLCBtYXAs
IGJ5dGVjb2RlSW5kZXgsIGhhc0JhZENhY2hlRXhpdFNpdGUocHJvZmlsZWRCbG9jaywgYnl0ZWNv
ZGVJbmRleCkpOworfQorCitJbkJ5U3RhdHVzIEluQnlTdGF0dXM6OmNvbXB1dGVGb3IoCisgICAg
Q29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBJQ1N0YXR1c01hcCYgYmFzZWxpbmVNYXAsCisgICAg
SUNTdGF0dXNDb250ZXh0U3RhY2smIGNvbnRleHRTdGFjaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2lu
KQoreworICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IGNvZGVPcmlnaW4uYnl0ZWNv
ZGVJbmRleCgpOworICAgIEV4aXRGbGFnIGRpZEV4aXQgPSBoYXNCYWRDYWNoZUV4aXRTaXRlKHBy
b2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpOworICAgIAorICAgIGZvciAoSUNTdGF0dXNDb250
ZXh0KiBjb250ZXh0IDogY29udGV4dFN0YWNrKSB7CisgICAgICAgIElDU3RhdHVzIHN0YXR1cyA9
IGNvbnRleHQtPmdldChjb2RlT3JpZ2luKTsKKyAgICAgICAgCisgICAgICAgIGF1dG8gYmxlc3Mg
PSBbJl0gKGNvbnN0IEluQnlTdGF0dXMmIHJlc3VsdCkgLT4gSW5CeVN0YXR1cyB7CisgICAgICAg
ICAgICBpZiAoIWNvbnRleHQtPmlzSW5saW5lZChjb2RlT3JpZ2luKSkgeworICAgICAgICAgICAg
ICAgIEluQnlTdGF0dXMgYmFzZWxpbmVSZXN1bHQgPSBjb21wdXRlRm9yKAorICAgICAgICAgICAg
ICAgICAgICBwcm9maWxlZEJsb2NrLCBiYXNlbGluZU1hcCwgYnl0ZWNvZGVJbmRleCwgZGlkRXhp
dCk7CisgICAgICAgICAgICAgICAgYmFzZWxpbmVSZXN1bHQubWVyZ2UocmVzdWx0KTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gYmFzZWxpbmVSZXN1bHQ7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAoZGlkRXhpdC5pc1NldChFeGl0RnJvbUlubGluZWQpKQorICAgICAgICAgICAgICAg
IHJldHVybiBJbkJ5U3RhdHVzKFRha2VzU2xvd1BhdGgpOworICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICAgICAgfTsKKyAgICAgICAgCisjaWYgRU5BQkxFKERGR19KSVQpCisgICAgICAg
IGlmIChzdGF0dXMuc3R1YkluZm8pIHsKKyAgICAgICAgICAgIEluQnlTdGF0dXMgcmVzdWx0Owor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIo
Y29udGV4dC0+b3B0aW1pemVkQ29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICAgICAgICAgIHJl
c3VsdCA9IGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKGxvY2tlciwg
cHJvZmlsZWRCbG9jay0+dm0oKSwgc3RhdHVzLnN0dWJJbmZvKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmIChyZXN1bHQuaXNTZXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gYmxl
c3MocmVzdWx0KTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIAorICAgICAgICBpZiAoc3Rh
dHVzLmluU3RhdHVzKQorICAgICAgICAgICAgcmV0dXJuIGJsZXNzKCpzdGF0dXMuaW5TdGF0dXMp
OworICAgIH0KKyAgICAKKyAgICByZXR1cm4gY29tcHV0ZUZvcihwcm9maWxlZEJsb2NrLCBiYXNl
bGluZU1hcCwgYnl0ZWNvZGVJbmRleCwgZGlkRXhpdCk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKEpJ
VCkKKworI2lmIEVOQUJMRShERkdfSklUKQorSW5CeVN0YXR1cyBJbkJ5U3RhdHVzOjpjb21wdXRl
Rm9yU3R1YkluZm8oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIENvZGVCbG9jayog
cHJvZmlsZWRCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBDb2RlT3JpZ2luIGNv
ZGVPcmlnaW4pCit7CisgICAgSW5CeVN0YXR1cyByZXN1bHQgPSBJbkJ5U3RhdHVzOjpjb21wdXRl
Rm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjayhsb2NrZXIsIHByb2ZpbGVkQmxvY2st
PnZtKCksIHN0dWJJbmZvKTsKKworICAgIGlmICghcmVzdWx0LnRha2VzU2xvd1BhdGgoKSAmJiBo
YXNCYWRDYWNoZUV4aXRTaXRlKHByb2ZpbGVkQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRl
eCgpKSkKKyAgICAgICAgcmV0dXJuIEluQnlTdGF0dXMoVGFrZXNTbG93UGF0aCk7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKworSW5CeVN0YXR1cyBJbkJ5U3RhdHVzOjpjb21wdXRlRm9yU3R1Yklu
Zm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjayhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBWTSYg
dm0sIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbykKK3sKKyAgICBTdHViSW5mb1N1bW1hcnkg
c3VtbWFyeSA9IFN0cnVjdHVyZVN0dWJJbmZvOjpzdW1tYXJ5KHZtLCBzdHViSW5mbyk7CisgICAg
aWYgKCFpc0lubGluZWFibGUoc3VtbWFyeSkpCisgICAgICAgIHJldHVybiBJbkJ5U3RhdHVzKHN1
bW1hcnkpOworICAgIAorICAgIC8vIEZpbmFsbHkgZmlndXJlIG91dCBpZiB3ZSBjYW4gZGVyaXZl
IGFuIGFjY2VzcyBzdHJhdGVneS4KKyAgICBJbkJ5U3RhdHVzIHJlc3VsdDsKKyAgICByZXN1bHQu
bV9zdGF0ZSA9IFNpbXBsZTsKKyAgICBzd2l0Y2ggKHN0dWJJbmZvLT5jYWNoZVR5cGUoKSkgewor
ICAgIGNhc2UgQ2FjaGVUeXBlOjpVbnNldDoKKyAgICAgICAgcmV0dXJuIEluQnlTdGF0dXMoTm9J
bmZvcm1hdGlvbik7CisKKyAgICBjYXNlIENhY2hlVHlwZTo6SW5CeUlkU2VsZjogeworICAgICAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHN0dWJJbmZvLT51LmJ5SWRTZWxmLmJhc2VPYmplY3RT
dHJ1Y3R1cmUuZ2V0KCk7CisgICAgICAgIGlmIChzdHJ1Y3R1cmUtPnRha2VzU2xvd1BhdGhJbkRG
R0ZvckltcHVyZVByb3BlcnR5KCkpCisgICAgICAgICAgICByZXR1cm4gSW5CeVN0YXR1cyhUYWtl
c1Nsb3dQYXRoKTsKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gc3R1
YkluZm8tPmlkZW50aWZpZXIoKTsKKyAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IGlk
ZW50aWZpZXIudWlkKCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHVpZCk7CisgICAgICAgIElu
QnlJZFZhcmlhbnQgdmFyaWFudChXVEZNb3ZlKGlkZW50aWZpZXIpKTsKKyAgICAgICAgdW5zaWdu
ZWQgYXR0cmlidXRlczsKKyAgICAgICAgdmFyaWFudC5tX29mZnNldCA9IHN0cnVjdHVyZS0+Z2V0
Q29uY3VycmVudGx5KHVpZCwgYXR0cmlidXRlcyk7CisgICAgICAgIGlmICghaXNWYWxpZE9mZnNl
dCh2YXJpYW50Lm1fb2Zmc2V0KSkKKyAgICAgICAgICAgIHJldHVybiBJbkJ5U3RhdHVzKFRha2Vz
U2xvd1BhdGgpOworICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3Nvck9yVmFsdWUpCisgICAgICAgICAgICByZXR1cm4gSW5CeVN0YXR1cyhUYWtl
c1Nsb3dQYXRoKTsKKworICAgICAgICB2YXJpYW50Lm1fc3RydWN0dXJlU2V0LmFkZChzdHJ1Y3R1
cmUpOworICAgICAgICBib29sIGRpZEFwcGVuZCA9IHJlc3VsdC5hcHBlbmRWYXJpYW50KHZhcmlh
bnQpOworICAgICAgICBBU1NFUlRfVU5VU0VEKGRpZEFwcGVuZCwgZGlkQXBwZW5kKTsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBjYXNlIENhY2hlVHlwZTo6U3R1Yjogewor
ICAgICAgICBQb2x5bW9ycGhpY0FjY2VzcyogbGlzdCA9IHN0dWJJbmZvLT51LnN0dWI7CisgICAg
ICAgIGZvciAodW5zaWduZWQgbGlzdEluZGV4ID0gMDsgbGlzdEluZGV4IDwgbGlzdC0+c2l6ZSgp
OyArK2xpc3RJbmRleCkgeworICAgICAgICAgICAgY29uc3QgQWNjZXNzQ2FzZSYgYWNjZXNzID0g
bGlzdC0+YXQobGlzdEluZGV4KTsKKyAgICAgICAgICAgIGlmIChhY2Nlc3MudmlhUHJveHkoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gSW5CeVN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsKKworICAg
ICAgICAgICAgaWYgKGFjY2Vzcy51c2VzUG9seVByb3RvKCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIEluQnlTdGF0dXMoVGFrZXNTbG93UGF0aCk7CisKKyAgICAgICAgICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gYWNjZXNzLnN0cnVjdHVyZSgpOworICAgICAgICAgICAgaWYgKCFzdHJ1Y3R1
cmUpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGUgbnVsbCBzdHJ1Y3R1cmUgY2FzZXMgYXJpc2Ug
ZHVlIHRvIGFycmF5Lmxlbmd0aC4gV2UgaGF2ZSBubyB3YXkgb2YgY3JlYXRpbmcgYQorICAgICAg
ICAgICAgICAgIC8vIEluQnlJZFZhcmlhbnQgZm9yIHRob3NlLCBhbmQgd2UgZG9uJ3QgcmVhbGx5
IGhhdmUgdG8gc2luY2UgdGhlIERGRyBoYW5kbGVzIHRob3NlCisgICAgICAgICAgICAgICAgLy8g
Y2FzZXMgaW4gRml4dXBQaGFzZSB1c2luZyB2YWx1ZSBwcm9maWxpbmcuIFRoYXQncyBhIGJpdCBh
d2t3YXJkIC0gd2Ugc2hvdWxkbid0CisgICAgICAgICAgICAgICAgLy8gaGF2ZSB0byB1c2UgdmFs
dWUgcHJvZmlsaW5nIHRvIGRpc2NvdmVyIHNvbWV0aGluZyB0aGF0IHRoZSBBY2Nlc3NDYXNlIGNv
dWxkIGhhdmUKKyAgICAgICAgICAgICAgICAvLyB0b2xkIHVzLiBCdXQsIGl0IHdvcmtzIHdlbGwg
ZW5vdWdoLiBTbywgb3VyIG9ubHkgY29uY2VybiBoZXJlIGlzIHRvIG5vdAorICAgICAgICAgICAg
ICAgIC8vIGNyYXNoIG9uIG51bGwgc3RydWN0dXJlLgorICAgICAgICAgICAgICAgIHJldHVybiBJ
bkJ5U3RhdHVzKFRha2VzU2xvd1BhdGgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBD
b21wbGV4R2V0U3RhdHVzIGNvbXBsZXhHZXRTdGF0dXMgPSBDb21wbGV4R2V0U3RhdHVzOjpjb21w
dXRlRm9yKHN0cnVjdHVyZSwgYWNjZXNzLmNvbmRpdGlvblNldCgpLCBhY2Nlc3MudWlkKCkpOwor
ICAgICAgICAgICAgc3dpdGNoIChjb21wbGV4R2V0U3RhdHVzLmtpbmQoKSkgeworICAgICAgICAg
ICAgY2FzZSBDb21wbGV4R2V0U3RhdHVzOjpTaG91bGRTa2lwOgorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgICAgICBjYXNlIENvbXBsZXhHZXRTdGF0dXM6OlRha2VzU2xvd1Bh
dGg6CisgICAgICAgICAgICAgICAgcmV0dXJuIEluQnlTdGF0dXMoVGFrZXNTbG93UGF0aCk7CisK
KyAgICAgICAgICAgIGNhc2UgQ29tcGxleEdldFN0YXR1czo6SW5saW5lYWJsZTogeworICAgICAg
ICAgICAgICAgIHN3aXRjaCAoYWNjZXNzLnR5cGUoKSkgeworICAgICAgICAgICAgICAgIGNhc2Ug
QWNjZXNzQ2FzZTo6SW5IaXQ6CisgICAgICAgICAgICAgICAgY2FzZSBBY2Nlc3NDYXNlOjpJbk1p
c3M6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBJbkJ5U3RhdHVzKFRha2VzU2xvd1BhdGgpOwor
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIEluQnlJZFZhcmlhbnQgdmFyaWFu
dCgKKyAgICAgICAgICAgICAgICAgICAgYWNjZXNzLmlkZW50aWZpZXIoKSwgU3RydWN0dXJlU2V0
KHN0cnVjdHVyZSksIGNvbXBsZXhHZXRTdGF0dXMub2Zmc2V0KCksCisgICAgICAgICAgICAgICAg
ICAgIGNvbXBsZXhHZXRTdGF0dXMuY29uZGl0aW9uU2V0KCkpOworCisgICAgICAgICAgICAgICAg
aWYgKCFyZXN1bHQuYXBwZW5kVmFyaWFudCh2YXJpYW50KSkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEluQnlTdGF0dXMoVGFrZXNTbG93UGF0aCk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXN1
bHQuc2hyaW5rVG9GaXQoKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBk
ZWZhdWx0OgorICAgICAgICByZXR1cm4gSW5CeVN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsKKyAgICB9
CisKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBJbkJ5U3Rh
dHVzKCk7Cit9CisjZW5kaWYKKwordm9pZCBJbkJ5U3RhdHVzOjptZXJnZShjb25zdCBJbkJ5U3Rh
dHVzJiBvdGhlcikKK3sKKyAgICBpZiAob3RoZXIubV9zdGF0ZSA9PSBOb0luZm9ybWF0aW9uKQor
ICAgICAgICByZXR1cm47CisgICAgCisgICAgc3dpdGNoIChtX3N0YXRlKSB7CisgICAgY2FzZSBO
b0luZm9ybWF0aW9uOgorICAgICAgICAqdGhpcyA9IG90aGVyOworICAgICAgICByZXR1cm47Cisg
ICAgICAgIAorICAgIGNhc2UgU2ltcGxlOgorICAgICAgICBpZiAob3RoZXIubV9zdGF0ZSAhPSBT
aW1wbGUpIHsKKyAgICAgICAgICAgICp0aGlzID0gSW5CeVN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGNvbnN0IEluQnlJ
ZFZhcmlhbnQmIG90aGVyVmFyaWFudCA6IG90aGVyLm1fdmFyaWFudHMpIHsKKyAgICAgICAgICAg
IGlmICghYXBwZW5kVmFyaWFudChvdGhlclZhcmlhbnQpKSB7CisgICAgICAgICAgICAgICAgKnRo
aXMgPSBJbkJ5U3RhdHVzKFRha2VzU2xvd1BhdGgpOworICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBzaHJpbmtUb0ZpdCgpOworICAgICAg
ICByZXR1cm47CisgICAgICAgIAorICAgIGNhc2UgVGFrZXNTbG93UGF0aDoKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICAKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQor
Cit2b2lkIEluQnlTdGF0dXM6OmZpbHRlcihjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNl
dCkKK3sKKyAgICBpZiAobV9zdGF0ZSAhPSBTaW1wbGUpCisgICAgICAgIHJldHVybjsKKyAgICBm
aWx0ZXJJQ1N0YXR1c1ZhcmlhbnRzKG1fdmFyaWFudHMsIHN0cnVjdHVyZVNldCk7CisgICAgaWYg
KG1fdmFyaWFudHMuaXNFbXB0eSgpKQorICAgICAgICBtX3N0YXRlID0gTm9JbmZvcm1hdGlvbjsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KK3ZvaWQgSW5CeVN0YXR1czo6bWFya0lm
Q2hlYXAoVmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBmb3IgKEluQnlJZFZhcmlhbnQmIHZhcmlh
bnQgOiBtX3ZhcmlhbnRzKQorICAgICAgICB2YXJpYW50Lm1hcmtJZkNoZWFwKHZpc2l0b3IpOwor
fQorCit0ZW1wbGF0ZSB2b2lkIEluQnlTdGF0dXM6Om1hcmtJZkNoZWFwKEFic3RyYWN0U2xvdFZp
c2l0b3ImKTsKK3RlbXBsYXRlIHZvaWQgSW5CeVN0YXR1czo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0
b3ImKTsKKworYm9vbCBJbkJ5U3RhdHVzOjpmaW5hbGl6ZShWTSYgdm0pCit7CisgICAgZm9yIChJ
bkJ5SWRWYXJpYW50JiB2YXJpYW50IDogbV92YXJpYW50cykgeworICAgICAgICBpZiAoIXZhcmlh
bnQuZmluYWxpemUodm0pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworQ2FjaGVhYmxlSWRlbnRpZmllciBJbkJ5U3RhdHVzOjpzaW5nbGVJ
ZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICBpZiAobV92YXJpYW50cy5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgQ2FjaGVhYmxlSWRlbnRpZmllciByZXN1bHQgPSBt
X3ZhcmlhbnRzLmZpcnN0KCkuaWRlbnRpZmllcigpOworICAgIGlmICghcmVzdWx0KQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IG1fdmFyaWFudHMu
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0g
bV92YXJpYW50c1tpXS5pZGVudGlmaWVyKCk7CisgICAgICAgIGlmICghaWRlbnRpZmllcikKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBpZiAoaWRlbnRpZmllciAhPSByZXN1
bHQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKwordm9pZCBJbkJ5U3RhdHVzOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7
CisgICAgb3V0LnByaW50KCIoIik7CisgICAgc3dpdGNoIChtX3N0YXRlKSB7CisgICAgY2FzZSBO
b0luZm9ybWF0aW9uOgorICAgICAgICBvdXQucHJpbnQoIk5vSW5mb3JtYXRpb24iKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBTaW1wbGU6CisgICAgICAgIG91dC5wcmludCgiU2ltcGxlIik7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVGFrZXNTbG93UGF0aDoKKyAgICAgICAgb3V0LnBy
aW50KCJUYWtlc1Nsb3dQYXRoIik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBvdXQucHJp
bnQoIiwgIiwgbGlzdER1bXAobV92YXJpYW50cyksICIpIik7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeVN0
YXR1cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlTdGF0dXMuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41YTM0MGI0OTNhMzRmMWJhNmI0YjcwZTgyMzY2MTQ1MjU0OThmN2QzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlTdGF0dXMuaApA
QCAtMCwwICsxLDEyNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBZdXN1a2UgU3V6dWtp
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVz
LmgiCisjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgorI2luY2x1ZGUgIkNvbmN1cnJlbnRKU0xvY2su
aCIKKyNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgorI2luY2x1ZGUgIkluQnlJZFZhcmlhbnQuaCIK
KyNpbmNsdWRlICJTdHViSW5mb1N1bW1hcnkuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNz
IEFjY2Vzc0Nhc2U7CitjbGFzcyBDb2RlQmxvY2s7CitjbGFzcyBTdHJ1Y3R1cmVTdHViSW5mbzsK
KworY2xhc3MgSW5CeVN0YXR1cyBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CitwdWJsaWM6CisgICAgZW51bSBTdGF0ZSB7CisgICAgICAgIC8vIEl0J3MgdW5jYWNoZWQgc28g
d2UgaGF2ZSBubyBpbmZvcm1hdGlvbi4KKyAgICAgICAgTm9JbmZvcm1hdGlvbiwKKyAgICAgICAg
Ly8gSXQncyBjYWNoZWQgZm9yIGEgc2ltcGxlIGFjY2VzcyB0byBhIGtub3duIG9iamVjdCBwcm9w
ZXJ0eSB3aXRoCisgICAgICAgIC8vIGEgcG9zc2libGUgc3RydWN0dXJlIGNoYWluIGFuZCBhIHBv
c3NpYmxlIHNwZWNpZmljIHZhbHVlLgorICAgICAgICBTaW1wbGUsCisgICAgICAgIC8vIEl0J3Mg
a25vd24gdG8gb2Z0ZW4gdGFrZSBzbG93IHBhdGguCisgICAgICAgIFRha2VzU2xvd1BhdGgsCisg
ICAgfTsKKworICAgIEluQnlTdGF0dXMoKSA9IGRlZmF1bHQ7CisKKyAgICBJbkJ5U3RhdHVzKFN0
YXRlIHN0YXRlKQorICAgICAgICA6IG1fc3RhdGUoc3RhdGUpCisgICAgeworICAgICAgICBBU1NF
UlQoc3RhdGUgIT0gU2ltcGxlKTsKKyAgICB9CisKKyAgICBleHBsaWNpdCBJbkJ5U3RhdHVzKFN0
dWJJbmZvU3VtbWFyeSBzdW1tYXJ5KQorICAgIHsKKyAgICAgICAgc3dpdGNoIChzdW1tYXJ5KSB7
CisgICAgICAgIGNhc2UgU3R1YkluZm9TdW1tYXJ5OjpOb0luZm9ybWF0aW9uOgorICAgICAgICAg
ICAgbV9zdGF0ZSA9IE5vSW5mb3JtYXRpb247CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IGNhc2UgU3R1YkluZm9TdW1tYXJ5OjpTaW1wbGU6CisgICAgICAgIGNhc2UgU3R1YkluZm9TdW1t
YXJ5OjpNYWtlc0NhbGxzOgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2FzZSBTdHViSW5mb1N1bW1hcnk6OlRh
a2VzU2xvd1BhdGg6CisgICAgICAgIGNhc2UgU3R1YkluZm9TdW1tYXJ5OjpUYWtlc1Nsb3dQYXRo
QW5kTWFrZXNDYWxsczoKKyAgICAgICAgICAgIG1fc3RhdGUgPSBUYWtlc1Nsb3dQYXRoOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBJbkJ5U3RhdHVzIGNvbXB1dGVGb3Io
Q29kZUJsb2NrKiwgSUNTdGF0dXNNYXAmLCBCeXRlY29kZUluZGV4KTsKKyAgICBzdGF0aWMgSW5C
eVN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayosIElDU3RhdHVzTWFwJiwgQnl0ZWNvZGVJbmRl
eCwgRXhpdEZsYWcpOworICAgIHN0YXRpYyBJbkJ5U3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2Nr
KiBiYXNlbGluZUJsb2NrLCBJQ1N0YXR1c01hcCYgYmFzZWxpbmVNYXAsIElDU3RhdHVzQ29udGV4
dFN0YWNrJiwgQ29kZU9yaWdpbik7CisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICBzdGF0aWMg
SW5CeVN0YXR1cyBjb21wdXRlRm9yU3R1YkluZm8oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwg
Q29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyosIENvZGVPcmlnaW4p
OworI2VuZGlmCisKKyAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0K
KworICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlICE9IE5vSW5mb3JtYXRp
b247IH0KKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gaXNTZXQo
KTsgfQorICAgIGJvb2wgaXNTaW1wbGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IFNpbXBs
ZTsgfQorCisgICAgc2l6ZV90IG51bVZhcmlhbnRzKCkgY29uc3QgeyByZXR1cm4gbV92YXJpYW50
cy5zaXplKCk7IH0KKyAgICBjb25zdCBWZWN0b3I8SW5CeUlkVmFyaWFudCwgMT4mIHZhcmlhbnRz
KCkgY29uc3QgeyByZXR1cm4gbV92YXJpYW50czsgfQorICAgIGNvbnN0IEluQnlJZFZhcmlhbnQm
IGF0KHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV92YXJpYW50c1tpbmRleF07IH0KKyAg
ICBjb25zdCBJbkJ5SWRWYXJpYW50JiBvcGVyYXRvcltdKHNpemVfdCBpbmRleCkgY29uc3QgeyBy
ZXR1cm4gYXQoaW5kZXgpOyB9CisKKyAgICBib29sIHRha2VzU2xvd1BhdGgoKSBjb25zdCB7IHJl
dHVybiBtX3N0YXRlID09IFRha2VzU2xvd1BhdGg7IH0KKyAgICAKKyAgICB2b2lkIG1lcmdlKGNv
bnN0IEluQnlTdGF0dXMmKTsKKworICAgIC8vIEF0dGVtcHRzIHRvIHJlZHVjZSB0aGUgc2V0IG9m
IHZhcmlhbnRzIHRvIGZpdCB0aGUgZ2l2ZW4gc3RydWN0dXJlIHNldC4gVGhpcyBtYXkgYmUgYXBw
cm94aW1hdGUuCisgICAgdm9pZCBmaWx0ZXIoY29uc3QgU3RydWN0dXJlU2V0Jik7CisgICAgCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4gdm9pZCBtYXJrSWZDaGVhcChWaXNpdG9yJik7
CisgICAgYm9vbCBmaW5hbGl6ZShWTSYpOworCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikg
Y29uc3Q7CisKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIHNpbmdsZUlkZW50aWZpZXIoKSBjb25z
dDsKKworcHJpdmF0ZToKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICBzdGF0aWMgSW5CeVN0YXR1
cyBjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjayhjb25zdCBDb25jdXJy
ZW50SlNMb2NrZXImLCBWTSYsIFN0cnVjdHVyZVN0dWJJbmZvKik7CisjZW5kaWYKKyAgICBib29s
IGFwcGVuZFZhcmlhbnQoY29uc3QgSW5CeUlkVmFyaWFudCYpOworICAgIHZvaWQgc2hyaW5rVG9G
aXQoKTsKKworICAgIFN0YXRlIG1fc3RhdGUgeyBOb0luZm9ybWF0aW9uIH07CisgICAgVmVjdG9y
PEluQnlJZFZhcmlhbnQsIDE+IG1fdmFyaWFudHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1
c2VzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2Vz
LmNwcAppbmRleCA5OTVmNDg1YzIzZjY1MDM3YzIxNjdjNTI4NzMxMGYxZDI2ZjRiNjAyLi5mMzhl
NDA5MmUxODJmNmIzMTY0Mjg0MWFiZjI5Njk3ZDZiYjZlNDhmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCkBAIC03MCwxMCAr
NzAsMTAgQEAgUHV0QnlJZFN0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkUHV0QnlJZFN0YXR1
cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
LUluQnlJZFN0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkSW5CeUlkU3RhdHVzKGNvbnN0IENv
ZGVPcmlnaW4mIGNvZGVPcmlnaW4sIGNvbnN0IEluQnlJZFN0YXR1cyYgc3RhdHVzKQorSW5CeVN0
YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkSW5CeVN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBj
b2RlT3JpZ2luLCBjb25zdCBJbkJ5U3RhdHVzJiBzdGF0dXMpCiB7Ci0gICAgYXV0byBzdGF0dXNQ
dHIgPSBtYWtlVW5pcXVlPEluQnlJZFN0YXR1cz4oc3RhdHVzKTsKLSAgICBJbkJ5SWRTdGF0dXMq
IHJlc3VsdCA9IHN0YXR1c1B0ci5nZXQoKTsKKyAgICBhdXRvIHN0YXR1c1B0ciA9IG1ha2VVbmlx
dWU8SW5CeVN0YXR1cz4oc3RhdHVzKTsKKyAgICBJbkJ5U3RhdHVzKiByZXN1bHQgPSBzdGF0dXNQ
dHIuZ2V0KCk7CiAgICAgaW5zLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihjb2RlT3JpZ2luLCBXVEZN
b3ZlKHN0YXR1c1B0cikpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmgKaW5kZXggODQ4OTg3YjUy
MmE1NjU0Mzc1ZDFiNWE4N2Q0NTBkMDQxY2UzNDQxMy4uYmQxNTcwNTQ1NzM4MGMzNzdiODQyODZk
NTNhYTg2OGEzMjYzMjRiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1JlY29yZGVkU3RhdHVzZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUmVjb3JkZWRTdGF0dXNlcy5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiQ2hlY2tQ
cml2YXRlQnJhbmRTdGF0dXMuaCIKICNpbmNsdWRlICJEZWxldGVCeVN0YXR1cy5oIgogI2luY2x1
ZGUgIkdldEJ5U3RhdHVzLmgiCi0jaW5jbHVkZSAiSW5CeUlkU3RhdHVzLmgiCisjaW5jbHVkZSAi
SW5CeVN0YXR1cy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKICNpbmNsdWRlICJTZXRQ
cml2YXRlQnJhbmRTdGF0dXMuaCIKIApAQCAtNDksNyArNDksNyBAQCBzdHJ1Y3QgUmVjb3JkZWRT
dGF0dXNlcyB7CiAgICAgQ2FsbExpbmtTdGF0dXMqIGFkZENhbGxMaW5rU3RhdHVzKGNvbnN0IENv
ZGVPcmlnaW4mLCBjb25zdCBDYWxsTGlua1N0YXR1cyYpOwogICAgIEdldEJ5U3RhdHVzKiBhZGRH
ZXRCeVN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiwgY29uc3QgR2V0QnlTdGF0dXMmKTsKICAgICBQ
dXRCeUlkU3RhdHVzKiBhZGRQdXRCeUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mLCBjb25zdCBQ
dXRCeUlkU3RhdHVzJik7Ci0gICAgSW5CeUlkU3RhdHVzKiBhZGRJbkJ5SWRTdGF0dXMoY29uc3Qg
Q29kZU9yaWdpbiYsIGNvbnN0IEluQnlJZFN0YXR1cyYpOworICAgIEluQnlTdGF0dXMqIGFkZElu
QnlTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYsIGNvbnN0IEluQnlTdGF0dXMmKTsKICAgICBEZWxl
dGVCeVN0YXR1cyogYWRkRGVsZXRlQnlTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYsIGNvbnN0IERl
bGV0ZUJ5U3RhdHVzJik7CiAgICAgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMqIGFkZENoZWNrUHJp
dmF0ZUJyYW5kU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mLCBjb25zdCBDaGVja1ByaXZhdGVCcmFu
ZFN0YXR1cyYpOwogICAgIFNldFByaXZhdGVCcmFuZFN0YXR1cyogYWRkU2V0UHJpdmF0ZUJyYW5k
U3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mLCBjb25zdCBTZXRQcml2YXRlQnJhbmRTdGF0dXMmKTsK
QEAgLTc3LDcgKzc3LDcgQEAgc3RydWN0IFJlY29yZGVkU3RhdHVzZXMgewogICAgIFZlY3Rvcjxz
dGQ6OnBhaXI8Q29kZU9yaWdpbiwgc3RkOjp1bmlxdWVfcHRyPENhbGxMaW5rU3RhdHVzPj4+IGNh
bGxzOwogICAgIFZlY3RvcjxzdGQ6OnBhaXI8Q29kZU9yaWdpbiwgc3RkOjp1bmlxdWVfcHRyPEdl
dEJ5U3RhdHVzPj4+IGdldHM7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxDb2RlT3JpZ2luLCBzdGQ6
OnVuaXF1ZV9wdHI8UHV0QnlJZFN0YXR1cz4+PiBwdXRzOwotICAgIFZlY3RvcjxzdGQ6OnBhaXI8
Q29kZU9yaWdpbiwgc3RkOjp1bmlxdWVfcHRyPEluQnlJZFN0YXR1cz4+PiBpbnM7CisgICAgVmVj
dG9yPHN0ZDo6cGFpcjxDb2RlT3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8SW5CeVN0YXR1cz4+PiBp
bnM7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxDb2RlT3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8RGVs
ZXRlQnlTdGF0dXM+Pj4gZGVsZXRlczsKICAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4s
IHN0ZDo6dW5pcXVlX3B0cjxDaGVja1ByaXZhdGVCcmFuZFN0YXR1cz4+PiBjaGVja1ByaXZhdGVC
cmFuZHM7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxDb2RlT3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8
U2V0UHJpdmF0ZUJyYW5kU3RhdHVzPj4+IHNldFByaXZhdGVCcmFuZHM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAppbmRleCBj
OGU2YmM2M2EzNmEzOWI4NDU4YjkwMGNiMmE1MmVmNGYxNTExMjBmLi5hZmFlNGU4NDJmYzdkNGRk
MWVkZThlYmJjZWVlYmI0ZTI2ZGIyMmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKQEAgLTI3Miw4ICsyNzIsMTEgQEAg
dm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6cmVzZXQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyQmFz
ZSYgbG9ja2VyLCBDb2RlQmxvY2sqIGMKICAgICBjYXNlIEFjY2Vzc1R5cGU6OlB1dDoKICAgICAg
ICAgcmVzZXRQdXRCeUlEKGNvZGVCbG9jaywgKnRoaXMpOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIEFjY2Vzc1R5cGU6OkluOgotICAgICAgICByZXNldEluQnlJRChjb2RlQmxvY2ssICp0aGlz
KTsKKyAgICBjYXNlIEFjY2Vzc1R5cGU6OkluQnlJZDoKKyAgICAgICAgcmVzZXRJbkJ5KGNvZGVC
bG9jaywgKnRoaXMsIEluQnlLaW5kOjpOb3JtYWwpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEFjY2Vzc1R5cGU6OkluQnlWYWw6CisgICAgICAgIHJlc2V0SW5CeShjb2RlQmxvY2ssICp0aGlz
LCBJbkJ5S2luZDo6Tm9ybWFsQnlWYWwpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vz
c1R5cGU6Okluc3RhbmNlT2Y6CiAgICAgICAgIHJlc2V0SW5zdGFuY2VPZigqdGhpcyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCmlu
ZGV4IDg4MjU2OGMyNmVhZDYyZTQwZWFlN2YyNzA4MGYwOTIxZWRlYzc2NDUuLmE5NDA1ZGNlYjlm
MDI0ZjA0OTIyYTY3NTMwMTQxOGRhNmVkMzc5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCkBAIC01NSw3ICs1NSw4IEBAIGVu
dW0gY2xhc3MgQWNjZXNzVHlwZSA6IGludDhfdCB7CiAgICAgVHJ5R2V0QnlJZCwKICAgICBHZXRC
eVZhbCwKICAgICBQdXQsCi0gICAgSW4sCisgICAgSW5CeUlkLAorICAgIEluQnlWYWwsCiAgICAg
SW5zdGFuY2VPZiwKICAgICBEZWxldGVCeUlELAogICAgIERlbGV0ZUJ5VmFsLApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oCmluZGV4IDQ5M2YzNjhlNWVlZTBkY2RhMzZlZWJjNjcxMzE5NmZiMWIwZjRlMTEuLjUy
NmM2NjBlZTlhMjA3YTI0NjdlMzU2MGQxMmZhZWMzYTY2MGJmZTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmgKQEAgLTQ0MzksNyArNDQzOSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFj
dFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgY2Fz
ZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAg
IGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKLSAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoK
KyAgICBjYXNlIEZpbHRlckluQnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1
czoKICAgICBjYXNlIEZpbHRlckNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOgogICAgIGNhc2UgRmls
dGVyU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOgpAQCAtNDYxMCwxMCArNDYxMCwxMCBAQCB2b2lkIEFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpmaWx0ZXJJQ1N0YXR1cyhOb2Rl
KiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAotICAgIGNhc2UgRmlsdGVy
SW5CeUlkU3RhdHVzOiB7CisgICAgY2FzZSBGaWx0ZXJJbkJ5U3RhdHVzOiB7CiAgICAgICAgIEFi
c3RyYWN0VmFsdWUmIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIGlm
ICh2YWx1ZS5tX3N0cnVjdHVyZS5pc0Zpbml0ZSgpKQotICAgICAgICAgICAgbm9kZS0+aW5CeUlk
U3RhdHVzKCktPmZpbHRlcih2YWx1ZS5tX3N0cnVjdHVyZS50b1N0cnVjdHVyZVNldCgpKTsKKyAg
ICAgICAgICAgIG5vZGUtPmluQnlTdGF0dXMoKS0+ZmlsdGVyKHZhbHVlLm1fc3RydWN0dXJlLnRv
U3RydWN0dXJlU2V0KCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBo
YXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRp
b25QaGFzZS5jcHAKaW5kZXggNmY4MTczODhhYzM4ZmU1YWZlMDIwZTQwZjA0ZTM2NzM1NDE1NTYz
OS4uYzIxNmEzOTZkNzE2MDQyMGRmYjQ4MTVmMTI3ZTc4NTlkNWE5MTczYiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9u
UGhhc2UuY3BwCkBAIC00MDQsNyArNDA0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBj
YXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJ
ZFN0YXR1czoKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgotICAg
ICAgICAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgICAgICAgICAgICAgIGNh
c2UgRmlsdGVySW5CeVN0YXR1czoKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5
U3RhdHVzOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0
dXM6CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6CkBA
IC0xMjY3LDcgKzEyNjcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVy
R2V0QnlTdGF0dXM6CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgog
ICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6Ci0gICAgICAgICAgICAg
ICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJJ
bkJ5U3RhdHVzOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAg
ICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1czoKICAgICAg
ICAgICAgICAgICBjYXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1czogewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCA4MmIxNDZk
ZmIwMmY2MzQ1Y2ZmYjU2Y2Y2YTAyYzcxYWUyMGQ4NDVmLi4yODVlMmIwYTg3YWFiZjRkNmEzZTg1
MzUzM2E0MjU1MTE1NzlmZTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNTUsNyArNTUsNyBAQAogI2luY2x1ZGUgIkdldEJ5U3Rh
dHVzLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgotI2lu
Y2x1ZGUgIkluQnlJZFN0YXR1cy5oIgorI2luY2x1ZGUgIkluQnlTdGF0dXMuaCIKICNpbmNsdWRl
ICJJbnN0YW5jZU9mU3RhdHVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgiCiAjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgpAQCAtMjYzLDcgKzI2Myw5IEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIGhhbmRsZURlbGV0ZUJ5SWQoCiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBkZXN0aW5hdGlv
biwgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51
bWJlciwgRGVsZXRlQnlTdGF0dXMsIEVDTUFNb2RlKTsKLSAgICAKKworICAgIHZvaWQgaGFuZGxl
SW5CeUlkKFZpcnR1YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwgTm9kZSogYmFzZSwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgSW5CeVN0YXR1cyk7CisKICAgICAvLyBFaXRoZXIgcmVnaXN0ZXIgYSB3YXRj
aHBvaW50IG9yIGVtaXQgYSBjaGVjayBmb3IgdGhpcyBjb25kaXRpb24uIFJldHVybnMgZmFsc2Ug
aWYgdGhlCiAgICAgLy8gY29uZGl0aW9uIG5vIGxvbmdlciBob2xkcywgYW5kIHRoZXJlZm9yZSBu
byByZWFzb25hYmxlIGNoZWNrIGNhbiBiZSBlbWl0dGVkLgogICAgIGJvb2wgY2hlY2soY29uc3Qg
T2JqZWN0UHJvcGVydHlDb25kaXRpb24mKTsKQEAgLTQ5MjgsNiArNDkzMCwzNSBAQCB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVEZWxldGVCeUlkKAogICAgIHJldHVybjsKIH0KIAordm9pZCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5CeUlkKFZpcnR1YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwg
Tm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBJbkJ5U3RhdHVzIHN0
YXR1cykKK3sKKyAgICBpZiAoc3RhdHVzLmlzU2ltcGxlKCkgJiYgT3B0aW9uczo6dXNlQWNjZXNz
SW5saW5pbmcoKSkgeworICAgICAgICBib29sIGFsbE9LID0gdHJ1ZTsKKyAgICAgICAgTWF0Y2hT
dHJ1Y3R1cmVEYXRhKiBkYXRhID0gbV9ncmFwaC5tX21hdGNoU3RydWN0dXJlRGF0YS5hZGQoKTsK
KyAgICAgICAgZm9yIChjb25zdCBJbkJ5SWRWYXJpYW50JiB2YXJpYW50IDogc3RhdHVzLnZhcmlh
bnRzKCkpIHsKKyAgICAgICAgICAgIGlmICghY2hlY2sodmFyaWFudC5jb25kaXRpb25TZXQoKSkp
IHsKKyAgICAgICAgICAgICAgICBhbGxPSyA9IGZhbHNlOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6
IHZhcmlhbnQuc3RydWN0dXJlU2V0KCkpIHsKKyAgICAgICAgICAgICAgICBNYXRjaFN0cnVjdHVy
ZVZhcmlhbnQgbWF0Y2hWYXJpYW50OworICAgICAgICAgICAgICAgIG1hdGNoVmFyaWFudC5zdHJ1
Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSk7CisgICAgICAgICAg
ICAgICAgbWF0Y2hWYXJpYW50LnJlc3VsdCA9IHZhcmlhbnQuaXNIaXQoKTsKKworICAgICAgICAg
ICAgICAgIGRhdGEtPnZhcmlhbnRzLmFwcGVuZChXVEZNb3ZlKG1hdGNoVmFyaWFudCkpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKGFsbE9LKSB7CisgICAgICAgICAg
ICBhZGRUb0dyYXBoKEZpbHRlckluQnlTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNv
cmRlZFN0YXR1c2VzKCkuYWRkSW5CeVN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBzdGF0dXMp
KSwgYmFzZSk7CisgICAgICAgICAgICBzZXQoZGVzdGluYXRpb24sIGFkZFRvR3JhcGgoTWF0Y2hT
dHJ1Y3R1cmUsIE9wSW5mbyhkYXRhKSwgYmFzZSkpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgfQorCisgICAgc2V0KGRlc3RpbmF0aW9uLCBhZGRUb0dyYXBoKEluQnlJZCwg
T3BJbmZvKGlkZW50aWZpZXIpLCBiYXNlKSk7Cit9CisKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmVt
aXRQdXRCeUlkKAogICAgIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmll
ciwgTm9kZSogdmFsdWUsIGNvbnN0IFB1dEJ5SWRTdGF0dXMmIHB1dEJ5SWRTdGF0dXMsIGJvb2wg
aXNEaXJlY3QsIEVDTUFNb2RlIGVjbWFNb2RlKQogewpAQCAtODIxMiw0OSArODI0Myw1MyBAQCB2
b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogCiAgICAgICAg
IGNhc2Ugb3BfaW5fYnlfdmFsOiB7CiAgICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcEluQnlWYWw+KCk7Ci0gICAgICAgICAgICBBcnJheU1vZGUgYXJy
YXlNb2RlID0gZ2V0QXJyYXlNb2RlKGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9hcnJh
eVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKLSAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwg
YWRkVG9HcmFwaChJbkJ5VmFsLCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgZ2V0KGJ5dGVj
b2RlLm1fYmFzZSksIGdldChieXRlY29kZS5tX3Byb3BlcnR5KSkpOwotICAgICAgICAgICAgTkVY
VF9PUENPREUob3BfaW5fYnlfdmFsKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNhc2Ugb3BfaW5f
YnlfaWQ6IHsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wSW5CeUlkPigpOwogICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChieXRlY29kZS5t
X2Jhc2UpOwotICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5l
U3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2J5dGVjb2RlLm1fcHJvcGVydHldOwotICAgICAg
ICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKVtpZGVu
dGlmaWVyTnVtYmVyXTsKKyAgICAgICAgICAgIE5vZGUqIHByb3BlcnR5ID0gZ2V0KGJ5dGVjb2Rl
Lm1fcHJvcGVydHkpOworICAgICAgICAgICAgYm9vbCBjb21waWxlZEFzSW5CeUlkID0gZmFsc2U7
CiAKLSAgICAgICAgICAgIEluQnlJZFN0YXR1cyBzdGF0dXMgPSBJbkJ5SWRTdGF0dXM6OmNvbXB1
dGVGb3IoCisgICAgICAgICAgICBJbkJ5U3RhdHVzIHN0YXR1cyA9IEluQnlTdGF0dXM6OmNvbXB1
dGVGb3IoCiAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2Nr
LAogICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWND
b250ZXh0U3RhY2ssCi0gICAgICAgICAgICAgICAgY3VycmVudENvZGVPcmlnaW4oKSwgdWlkKTsK
LQotICAgICAgICAgICAgaWYgKHN0YXR1cy5pc1NpbXBsZSgpICYmIE9wdGlvbnM6OnVzZUFjY2Vz
c0lubGluaW5nKCkpIHsKLSAgICAgICAgICAgICAgICBib29sIGFsbE9LID0gdHJ1ZTsKLSAgICAg
ICAgICAgICAgICBNYXRjaFN0cnVjdHVyZURhdGEqIGRhdGEgPSBtX2dyYXBoLm1fbWF0Y2hTdHJ1
Y3R1cmVEYXRhLmFkZCgpOwotICAgICAgICAgICAgICAgIGZvciAoY29uc3QgSW5CeUlkVmFyaWFu
dCYgdmFyaWFudCA6IHN0YXR1cy52YXJpYW50cygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlm
ICghY2hlY2sodmFyaWFudC5jb25kaXRpb25TZXQoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGFsbE9LID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBmb3IgKFN0cnVjdHVyZSogc3Ry
dWN0dXJlIDogdmFyaWFudC5zdHJ1Y3R1cmVTZXQoKSkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgTWF0Y2hTdHJ1Y3R1cmVWYXJpYW50IG1hdGNoVmFyaWFudDsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG1hdGNoVmFyaWFudC5zdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJl
KHN0cnVjdHVyZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFZhcmlhbnQucmVzdWx0
ID0gdmFyaWFudC5pc0hpdCgpOworICAgICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCkp
OwogCi0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT52YXJpYW50cy5hcHBlbmQoV1RGTW92
ZShtYXRjaFZhcmlhbnQpKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGlmICghbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNF
eGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkSWRlbnQpCisgICAgICAgICAgICAgICAgJiYgIW1f
aW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgs
IEJhZFR5cGUpCisgICAgICAgICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFBy
b2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENvbnN0YW50VmFsdWUpKSB7CiAK
LSAgICAgICAgICAgICAgICBpZiAoYWxsT0spIHsKLSAgICAgICAgICAgICAgICAgICAgYWRkVG9H
cmFwaChGaWx0ZXJJbkJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0
YXR1c2VzKCkuYWRkSW5CeUlkU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIHN0YXR1cykpLCBi
YXNlKTsKKyAgICAgICAgICAgICAgICBpZiAoQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVy
ID0gc3RhdHVzLnNpbmdsZUlkZW50aWZpZXIoKSkgeworICAgICAgICAgICAgICAgICAgICBVbmlx
dWVkU3RyaW5nSW1wbCogdWlkID0gaWRlbnRpZmllci51aWQoKTsKKyAgICAgICAgICAgICAgICAg
ICAgbV9ncmFwaC5pZGVudGlmaWVycygpLmVuc3VyZSh1aWQpOworICAgICAgICAgICAgICAgICAg
ICBpZiAoaWRlbnRpZmllci5pc0NlbGwoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgRnJv
emVuVmFsdWUqIGZyb3plbiA9IG1fZ3JhcGguZnJlZXplU3Ryb25nKGlkZW50aWZpZXIuY2VsbCgp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpZGVudGlmaWVyLmlzU3ltYm9sQ2VsbCgp
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tJc0NvbnN0YW50
LCBPcEluZm8oZnJvemVuKSwgcHJvcGVydHkpOworICAgICAgICAgICAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tJZGVudCwgT3BJ
bmZvKHVpZCksIHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrSWRlbnQsIE9wSW5mbyh1aWQpLCBwcm9w
ZXJ0eSk7CiAKLSAgICAgICAgICAgICAgICAgICAgTm9kZSogbWF0Y2ggPSBhZGRUb0dyYXBoKE1h
dGNoU3RydWN0dXJlLCBPcEluZm8oZGF0YSksIGJhc2UpOwotICAgICAgICAgICAgICAgICAgICBz
ZXQoYnl0ZWNvZGUubV9kc3QsIG1hdGNoKTsKLSAgICAgICAgICAgICAgICAgICAgTkVYVF9PUENP
REUob3BfaW5fYnlfaWQpOworICAgICAgICAgICAgICAgICAgICBoYW5kbGVJbkJ5SWQoYnl0ZWNv
ZGUubV9kc3QsIGJhc2UsIGlkZW50aWZpZXIsIHN0YXR1cyk7CisgICAgICAgICAgICAgICAgICAg
IGNvbXBpbGVkQXNJbkJ5SWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKEluQnlJZCwg
T3BJbmZvKENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNv
ZGVCbG9jayhtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIHVpZCkpLCBiYXNlKSk7
CisgICAgICAgICAgICBpZiAoIWNvbXBpbGVkQXNJbkJ5SWQpIHsKKyAgICAgICAgICAgICAgICBB
cnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVC
bG9jaykubV9hcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKKyAgICAgICAgICAgICAgICBzZXQo
Ynl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgoSW5CeVZhbCwgT3BJbmZvKGFycmF5TW9kZS5hc1dv
cmQoKSksIGJhc2UsIHByb3BlcnR5KSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBORVhU
X09QQ09ERShvcF9pbl9ieV92YWwpOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9pbl9i
eV9pZDogeworICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+
YXM8T3BJbkJ5SWQ+KCk7CisgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1f
YmFzZSk7CisgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9pbmxpbmVT
dGFja1RvcC0+bV9pZGVudGlmaWVyUmVtYXBbYnl0ZWNvZGUubV9wcm9wZXJ0eV07CisgICAgICAg
ICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50
aWZpZXJOdW1iZXJdOworICAgICAgICAgICAgSW5CeVN0YXR1cyBzdGF0dXMgPSBJbkJ5U3RhdHVz
Ojpjb21wdXRlRm9yKAorICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmls
ZWRCbG9jaywKKyAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFw
LCBtX2ljQ29udGV4dFN0YWNrLAorICAgICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCkp
OworICAgICAgICAgICAgaGFuZGxlSW5CeUlkKGJ5dGVjb2RlLm1fZHN0LCBiYXNlLCBDYWNoZWFi
bGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9pbmxp
bmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCB1aWQpLCBzdGF0dXMpOwogICAgICAgICAgICAg
TkVYVF9PUENPREUob3BfaW5fYnlfaWQpOwogICAgICAgICB9CiAgICAgICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCBkY2E2YzRhZjI5YTkzNTFlMDVm
ZmMyZmYyMTFhNTVhNmVmOTVlMjAyLi4wMWRhNTZkZTE4ZjhhNTY4ZTgwM2VkYWM4YjNhNWMzM2M1
NzY3YzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJp
emUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAt
NTA0LDcgKzUwNCw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUs
IGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBGaWx0ZXJD
YWxsTGlua1N0YXR1czoKICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgIGNhc2UgRmls
dGVyUHV0QnlJZFN0YXR1czoKLSAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICBjYXNl
IEZpbHRlckluQnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICBj
YXNlIEZpbHRlckNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOgogICAgIGNhc2UgRmlsdGVyU2V0UHJp
dmF0ZUJyYW5kU3RhdHVzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJzRXhpdFN0YXRlLmNwcAppbmRleCA2ZmQ0YTc2YjYxOGY4OTJiYTU1N2I5ODNkM2ZlNTUz
MjY0YzRkOGNhLi44NmEzZDA3NjY0ZDdmYTkyNzUxMjk5Nzc5ZjQ2ZjE5NzJiMGFkMGYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNw
cApAQCAtODIsNyArODIsNyBAQCBib29sIGNsb2JiZXJzRXhpdFN0YXRlKEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZSkKICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgogICAgIGNhc2UgRmls
dGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgotICAgIGNhc2Ug
RmlsdGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVySW5CeVN0YXR1czoKICAgICBjYXNl
IEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRT
dGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggMDI4NGE3ZTMwNGEwMDZlMTBlMWEzMzY2
MDFlYmE3YmJhZjc5MzJiZS4uNDEwYzM0NTAzZmY0N2IxOGVjN2E3MmI4NDNhZjUxNzU1ZGE3YzAx
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMjQ5LDcgKzI0
OSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEZp
bHRlckNhbGxMaW5rU3RhdHVzOgogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2Fz
ZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgotICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAg
IGNhc2UgRmlsdGVySW5CeVN0YXR1czoKICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgog
ICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJT
ZXRQcml2YXRlQnJhbmRTdGF0dXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcAppbmRleCBmNjVmOWI1NzkwZTY2ZTFkOTJlMjEyYzdhMWU1NTRlODlkOGE4YmVh
Li5kMDQ1NTlkZDA3ZGJlMTc5NGM1ZjUwMWExYTY3ZmRmYTNmZWEzY2JlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTI4ODIsNyArMjg4Miw3IEBA
IHByaXZhdGU6CiAgICAgICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CiAgICAgICAgIGNh
c2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoK
LSAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVySW5C
eVN0YXR1czoKICAgICAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICAgICAgY2Fz
ZSBGaWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1czoKICAgICAgICAgY2FzZSBGaWx0ZXJTZXRQ
cml2YXRlQnJhbmRTdGF0dXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dyYXBoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCmlu
ZGV4IDI1YWI5YzMzOTUxZjhlYjk5YjUwZDFjN2UwYTE0NGM4NzgyZDZmZTkuLjExMTAwODI2MDM5
ODIyZjUwNTMyYWUyMzIzOGYzOGVjYTljNzk1NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguY3BwCkBAIC0zODMsOCArMzgzLDggQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0
cmVhbSYgb3V0LCBjb25zdCBjaGFyKiBwcmVmaXhTdHIsIE5vZGUqIG5vZGUsIER1bXBDb250ZXgK
ICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAqbm9kZS0+Y2FsbExpbmtTdGF0dXMoKSk7CiAgICAg
aWYgKG5vZGUtPmhhc0dldEJ5U3RhdHVzKCkpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgKm5v
ZGUtPmdldEJ5U3RhdHVzKCkpOwotICAgIGlmIChub2RlLT5oYXNJbkJ5SWRTdGF0dXMoKSkKLSAg
ICAgICAgb3V0LnByaW50KGNvbW1hLCAqbm9kZS0+aW5CeUlkU3RhdHVzKCkpOworICAgIGlmIChu
b2RlLT5oYXNJbkJ5U3RhdHVzKCkpCisgICAgICAgIG91dC5wcmludChjb21tYSwgKm5vZGUtPmlu
QnlTdGF0dXMoKSk7CiAgICAgaWYgKG5vZGUtPmhhc1B1dEJ5SWRTdGF0dXMoKSkKICAgICAgICAg
b3V0LnByaW50KGNvbW1hLCAqbm9kZS0+cHV0QnlJZFN0YXR1cygpKTsKICAgICBpZiAobm9kZS0+
aXNKdW1wKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
bXBpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3Bw
CmluZGV4IDU1MTAzODEzNmNjNzZlY2Y5ZDI2YWMxNDU1M2I4MDdiNjQ4M2U0OTAuLjdhNTZlMmY1
Y2QxMDQxZTY1Y2MyZjJhNWFmYTNhZGVhZGI4ZjI4NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCkBAIC0yNTQsNiArMjU0LDcgQEAgdm9pZCBKSVRD
b21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQogICAgIGZpbmFsaXplSW5saW5l
Q2FjaGVzKG1fZGVsQnlJZHMsIGxpbmtCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVz
KG1fZGVsQnlWYWxzLCBsaW5rQnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2lu
QnlJZHMsIGxpbmtCdWZmZXIpOworICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1faW5CeVZhbHMs
IGxpbmtCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1faW5zdGFuY2VPZnMsIGxp
bmtCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fcHJpdmF0ZUJyYW5kQWNjZXNz
ZXMsIGxpbmtCdWZmZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBp
bGVyLmgKaW5kZXggOGFkZWFkNTBmNDU1NmNmZjI1ZTdjN2M5OTc4MzA0ZDQxNzcwOTc0Ny4uMTg3
NTQzZDE2ZWQwNjgwOGI5YTE2MTdjNTdmZWVhZGQ3MjBjYTc2NCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaApAQCAtMjE0LDYgKzIxNCwxMSBAQCBwdWJsaWM6
CiAgICAgICAgIG1faW5CeUlkcy5hcHBlbmQoSW5saW5lQ2FjaGVXcmFwcGVyPEpJVEluQnlJZEdl
bmVyYXRvcj4oZ2VuLCBzbG93UGF0aCkpOwogICAgIH0KIAorICAgIHZvaWQgYWRkSW5CeVZhbChj
b25zdCBKSVRJbkJ5VmFsR2VuZXJhdG9yJiBnZW4sIFNsb3dQYXRoR2VuZXJhdG9yKiBzbG93UGF0
aCkKKyAgICB7CisgICAgICAgIG1faW5CeVZhbHMuYXBwZW5kKElubGluZUNhY2hlV3JhcHBlcjxK
SVRJbkJ5VmFsR2VuZXJhdG9yPihnZW4sIHNsb3dQYXRoKSk7CisgICAgfQorCiAgICAgdm9pZCBh
ZGRQcml2YXRlQnJhbmRBY2Nlc3MoY29uc3QgSklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9y
JiBnZW4sIFNsb3dQYXRoR2VuZXJhdG9yKiBzbG93UGF0aCkKICAgICB7CiAgICAgICAgIG1fcHJp
dmF0ZUJyYW5kQWNjZXNzZXMuYXBwZW5kKElubGluZUNhY2hlV3JhcHBlcjxKSVRQcml2YXRlQnJh
bmRBY2Nlc3NHZW5lcmF0b3I+KGdlbiwgc2xvd1BhdGgpKTsKQEAgLTM1Myw2ICszNTgsNyBAQCBw
cml2YXRlOgogICAgIFZlY3RvcjxJbmxpbmVDYWNoZVdyYXBwZXI8SklURGVsQnlJZEdlbmVyYXRv
cj4sIDQ+IG1fZGVsQnlJZHM7CiAgICAgVmVjdG9yPElubGluZUNhY2hlV3JhcHBlcjxKSVREZWxC
eVZhbEdlbmVyYXRvcj4sIDQ+IG1fZGVsQnlWYWxzOwogICAgIFZlY3RvcjxJbmxpbmVDYWNoZVdy
YXBwZXI8SklUSW5CeUlkR2VuZXJhdG9yPiwgND4gbV9pbkJ5SWRzOworICAgIFZlY3RvcjxJbmxp
bmVDYWNoZVdyYXBwZXI8SklUSW5CeVZhbEdlbmVyYXRvcj4sIDQ+IG1faW5CeVZhbHM7CiAgICAg
VmVjdG9yPElubGluZUNhY2hlV3JhcHBlcjxKSVRJbnN0YW5jZU9mR2VuZXJhdG9yPiwgND4gbV9p
bnN0YW5jZU9mczsKICAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVFByaXZhdGVCcmFu
ZEFjY2Vzc0dlbmVyYXRvcj4sIDQ+IG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXM7CiAgICAgVmVjdG9y
PEpTQ2FsbFJlY29yZCwgND4gbV9qc0NhbGxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TWF5RXhpdC5jcHAKaW5kZXggZGMzNzJjNzBmZTg4YTg0NzA0MjI2OWRiYjlmYmUzNjM0MWIwNzFk
MC4uZjlmMjY1ZTA0ZTNiODc3ZGRjOGFlN2Q5ZWJkM2ZkZWQ2MzZkMzA2OCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgRXhpdE1v
ZGUgbWF5RXhpdEltcGwoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBTdGF0ZVR5cGUmIHN0YXRl
KQogICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0
YXR1czoKICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6Ci0gICAgY2FzZSBGaWx0ZXJJbkJ5
SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJJbkJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyRGVs
ZXRlQnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1czoKICAg
ICBjYXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmgKaW5kZXggNTg5M2JlODA2NjAxNjk5YjY3MDE0MGIyMWNlOWI3NGVhZjkzZDExYS4u
NGNkZmYxOWJkNDhmOTBjNzI4MDI5Mzg3ODc2MjViNjU5ZjVkYTJiZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlLmgKQEAgLTMxMDksMTUgKzMxMDksMTUgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gbV9vcEluZm8uYXM8R2V0QnlTdGF0dXMqPigpOwogICAgIH0KICAgICAKLSAgICBi
b29sIGhhc0luQnlJZFN0YXR1cygpCisgICAgYm9vbCBoYXNJbkJ5U3RhdHVzKCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBvcCgpID09IEZpbHRlckluQnlJZFN0YXR1czsKKyAgICAgICAgcmV0dXJu
IG9wKCkgPT0gRmlsdGVySW5CeVN0YXR1czsKICAgICB9CiAgICAgCi0gICAgSW5CeUlkU3RhdHVz
KiBpbkJ5SWRTdGF0dXMoKQorICAgIEluQnlTdGF0dXMqIGluQnlTdGF0dXMoKQogICAgIHsKLSAg
ICAgICAgQVNTRVJUKGhhc0luQnlJZFN0YXR1cygpKTsKLSAgICAgICAgcmV0dXJuIG1fb3BJbmZv
LmFzPEluQnlJZFN0YXR1cyo+KCk7CisgICAgICAgIEFTU0VSVChoYXNJbkJ5U3RhdHVzKCkpOwor
ICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8SW5CeVN0YXR1cyo+KCk7CiAgICAgfQogICAgIAog
ICAgIGJvb2wgaGFzUHV0QnlJZFN0YXR1cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGVUeXBlLmgKaW5kZXggMjlmMzg4YWZjZDM4NzUzOGFmN2U0NDQyYWQwZWZkNmZkM2Q1YjgxMi4u
ZGFiM2U0ZmE5Y2NiMmRiYmFkMTMzZGZlNTMyNmQ0ZDE0NGZkNmZmNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtNTQ2LDcgKzU0Niw3IEBAIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICAvKiBVc2VkIHRvIHByb3ZpZGUgZmVlZGJhY2sgdG8g
dGhlIElDIHByb2ZpbGVyLiAqLyBcCiAgICAgbWFjcm8oRmlsdGVyQ2FsbExpbmtTdGF0dXMsIE5v
ZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhGaWx0ZXJHZXRCeVN0YXR1cywgTm9kZU11c3RH
ZW5lcmF0ZSkgXAotICAgIG1hY3JvKEZpbHRlckluQnlJZFN0YXR1cywgTm9kZU11c3RHZW5lcmF0
ZSkgXAorICAgIG1hY3JvKEZpbHRlckluQnlTdGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAg
ICBtYWNybyhGaWx0ZXJQdXRCeUlkU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFj
cm8oRmlsdGVyRGVsZXRlQnlTdGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhG
aWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1cywgTm9kZU11c3RHZW5lcmF0ZSkgXApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2lu
Z1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlv
blNpbmtpbmdQaGFzZS5jcHAKaW5kZXggOWQxOTFmZjk1YzU0NTU4OGU4NWJjMzAwNTRhZmIzZGM3
MGJkYWE5NC4uNjY3ODM1NTVkZjIxNmQxOGY5MGM1OTU0NmVjNzkyZDUwZDhmZDU4YSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2lu
Z1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9j
YXRpb25TaW5raW5nUGhhc2UuY3BwCkBAIC0xMjU5LDcgKzEyNTksNyBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlckdldEJ5
U3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6Ci0gICAgICAgIGNhc2Ug
RmlsdGVySW5CeUlkU3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRlckluQnlTdGF0dXM6CiAgICAg
ICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVyQ2hlY2tQ
cml2YXRlQnJhbmRTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVyU2V0UHJpdmF0ZUJyYW5kU3Rh
dHVzOgpAQCAtMjYxNiw3ICsyNjE2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNl
IEZpbHRlckNhbGxMaW5rU3RhdHVzOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyR2V0QnlT
dGF0dXM6CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgotICAgICAg
ICAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgICAgICAgICAgICAgIGNhc2Ug
RmlsdGVySW5CeVN0YXR1czoKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3Rh
dHVzOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6
CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwCmluZGV4IDViNTgwYmI1NDNjMTlkY2FiZjg3YTA0ZmM3ODMyNzU4MjQw
ODFkYzEuLmJhMGQzZTM2YzFkZmNkYTE4M2UzZWM2ZGVlMWU3MjYwNjQ5ZjhjM2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwCkBAIC0xNDUxLDcgKzE0NTEsNyBAQCBwcml2YXRlOgogICAgICAgICBj
YXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVz
OgogICAgICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6Ci0gICAgICAgIGNhc2UgRmlsdGVy
SW5CeUlkU3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRlckluQnlTdGF0dXM6CiAgICAgICAgIGNh
c2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRl
QnJhbmRTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVyU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCAyODEz
MTdhM2M1MzBlMDkwYTAzMDJiZTljODhjZDdiNzVjYjM0OWFhLi42M2FlZTI4MGY0ZTJjNWNhOGVl
MWU0M2M4YzNlY2NjNjFhZGM4YWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaApAQCAtMzYxLDcgKzM2MSw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShB
YnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBp
Z25vCiAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKICAgICBjYXNlIEZpbHRlckdldEJ5
U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKLSAgICBjYXNlIEZpbHRlcklu
QnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlckluQnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJE
ZWxldGVCeVN0YXR1czoKICAgICBjYXNlIEZpbHRlckNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOgog
ICAgIGNhc2UgRmlsdGVyU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA3M2Y5MTE0ZWFmODgzY2Vl
ZjljYTAzYjg0ZjE2ZWU2NDRlNmQyOGY4Li4xMjMwM2I5OTg0MmI4MzEwZTg5ZjAwMzJkMTZmODBk
ZGY5YzhkYjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcApAQCAtMTI2NywxOCArMTI2NywzMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlSW5CeVZhbChOb2RlKiBub2RlKQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJh
c2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFsdWVPcGVyYW5kIGtleSh0aGlzLCBu
b2RlLT5jaGlsZDIoKSk7CisgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJl
dXNlLCBrZXkpOwogCiAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwotICAgIEpTVmFs
dWVSZWdzIHJlZ3MgPSBrZXkuanNWYWx1ZVJlZ3MoKTsKKyAgICBKU1ZhbHVlUmVncyBrZXlSZWdz
ID0ga2V5LmpzVmFsdWVSZWdzKCk7CisgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3Vs
dC5yZWdzKCk7CiAKICAgICBiYXNlLnVzZSgpOwogICAgIGtleS51c2UoKTsKIAotICAgIGZsdXNo
UmVnaXN0ZXJzKCk7Ci0gICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhp
cyk7Ci0gICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7Ci0gICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25JbkJ5VmFsLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgYmFzZUdQUiwgcmVncyk7Ci0gICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
KyAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CisgICAg
Q2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVF
eGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6
ZSgpKTsKKyAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVy
cygpOworICAgIEpJVEluQnlWYWxHZW5lcmF0b3IgZ2VuKAorICAgICAgICBtX2ppdC5jb2RlQmxv
Y2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIEpTVmFs
dWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwga2V5UmVncywgcmVzdWx0UmVncyk7CisgICAg
Z2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOworCisgICAgYXV0byBzbG93UGF0aCA9IHNsb3dQ
YXRoQ2FsbCgKKyAgICAgICAgZ2VuLnNsb3dQYXRoSnVtcCgpLCB0aGlzLCBvcGVyYXRpb25JbkJ5
VmFsT3B0aW1pemUsCisgICAgICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVt
ZW50OjpDaGVja05lZWRlZCwKKyAgICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGdlbi5zdHViSW5mbygpLCBudWxscHRyLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1
ZShiYXNlR1BSKSwga2V5UmVncyk7CisKKyAgICBtX2ppdC5hZGRJbkJ5VmFsKGdlbiwgc2xvd1Bh
dGguZ2V0KCkpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsK
KwogICAgIGJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdFJlZ3MucGF5bG9hZEdQUigpLCBub2Rl
LCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCBiNTdjMzdh
YTA1ZGQ0OTA5MWM3ZmEzNjUwZjhiYmZmNzUyMzdmNjM5Li45OTVlYzYzYzY0NzljMTFjYjE3MWI1
ZTQ5NGQ3YWEwZDQzM2FhMTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTQyNzEsNyArNDI3MSw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEZpbHRlckNhbGxM
aW5rU3RhdHVzOgogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQ
dXRCeUlkU3RhdHVzOgotICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2UgRmls
dGVySW5CeVN0YXR1czoKICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgIGNhc2Ug
RmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRl
QnJhbmRTdGF0dXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAppbmRleCBiOTExOGI2MmU4N2Q5NzBhYzU0NjFmNjNiZDNjMzgwZmI4YjAx
MjYwLi4yZmJjNTYyOTEzNzY4NDA3OTFjNDQyYjlkYmIzNDkxMjE2OGMxYzk5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTU3
MDUsNyArNTcwNSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0
dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgotICAgIGNhc2UgRmlsdGVySW5CeUlk
U3RhdHVzOgorICAgIGNhc2UgRmlsdGVySW5CeVN0YXR1czoKICAgICBjYXNlIEZpbHRlckRlbGV0
ZUJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6CiAgICAg
Y2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcAppbmRleCAzMmEw
ZTdmYmQ3N2Q1MmNlNjA4MWU4NGQ2Nzc4YmI5ZjRjMGQyMmViLi45M2VkMzVmNzQ0MDdmOWNkODE4
ZmU5NTliOGFlNmMwMGQxZTMzODc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAKQEAgLTE5Nyw3ICsxOTcsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAgICAgICAg
ICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAgICAgICAgIGNhc2UgRmlsdGVyQ2Fs
bExpbmtTdGF0dXM6Ci0gICAgICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICAg
ICAgICAgIGNhc2UgRmlsdGVySW5CeVN0YXR1czoKICAgICAgICAgICAgIGNhc2UgRmlsdGVyRGVs
ZXRlQnlTdGF0dXM6CiAgICAgICAgICAgICBjYXNlIEZpbHRlckNoZWNrUHJpdmF0ZUJyYW5kU3Rh
dHVzOgogICAgICAgICAgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6CkBAIC00
MDEsNyArNDAxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0
dXM6CiAgICAgICAgICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgICAgICBj
YXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgotICAgICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRT
dGF0dXM6CisgICAgICAgICAgICBjYXNlIEZpbHRlckluQnlTdGF0dXM6CiAgICAgICAgICAgICBj
YXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgICAgICAgICAgY2FzZSBGaWx0ZXJDaGVja1By
aXZhdGVCcmFuZFN0YXR1czoKICAgICAgICAgICAgIGNhc2UgRmlsdGVyU2V0UHJpdmF0ZUJyYW5k
U3RhdHVzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3Bw
CmluZGV4IDRmNmUwMzdjYjExYzUyNGI5MTExMzllMDRjOWYwNWU2YzRkZGI4NzAuLjE5ODhlMzJh
NzVhYzFmNDE0YThlNDA2ZGFhZjRlZGEzODU1ZDYzZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTQwOSw3ICs0MDksNyBAQCBpbmxpbmUg
Q2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEZpbHRlckNh
bGxMaW5rU3RhdHVzOgogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0
ZXJQdXRCeUlkU3RhdHVzOgotICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2Ug
RmlsdGVySW5CeVN0YXR1czoKICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgIGNh
c2UgRmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJTZXRQcml2
YXRlQnJhbmRTdGF0dXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAKaW5kZXggYzA0NzUyZDdiZDlmMWIyZjhhMmVlNTMzMTU3ODEyZTlmZjU1NTFhOS4u
MzY4M2M3MjNiNmMwYTFiMjJmNWYwYTc4ZjA5MWZlOWNhNTJmNTIwNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTY1Miw3ICsxNjUyLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKICAgICAgICAg
Y2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVz
OgotICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJJ
bkJ5U3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgICAgICBj
YXNlIEZpbHRlckNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlclNl
dFByaXZhdGVCcmFuZFN0YXR1czoKQEAgLTEyMjEzLDEzICsxMjIxMyw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwogICAgICAgICBz
ZXRKU1ZhbHVlKG1fb3V0LnBoaShJbnQ2NCwgcmVzdWx0cykpOwogICAgIH0KLSAgICAKLSAgICB2
b2lkIGNvbXBpbGVJbkJ5VmFsKCkKLSAgICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7Ci0g
ICAgICAgIHNldEpTVmFsdWUodm1DYWxsKEludDY0LCBvcGVyYXRpb25JbkJ5VmFsLCB3ZWFrUG9p
bnRlcihnbG9iYWxPYmplY3QpLCBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dKU1ZhbHVl
KG1fbm9kZS0+Y2hpbGQyKCkpKSk7Ci0gICAgfQotICAgIAorCiAgICAgdm9pZCBjb21waWxlSGFz
UHJpdmF0ZU5hbWUoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKQEAgLTEyMjMy
LDM4ICsxMjIyNiw1MyBAQCBwcml2YXRlOgogICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChJbnQ2
NCwgb3BlcmF0aW9uSGFzUHJpdmF0ZUJyYW5kLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBs
b3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dTeW1ib2wobV9ub2RlLT5jaGlsZDIoKSkpKTsK
ICAgICB9CiAKLSAgICB2b2lkIGNvbXBpbGVJbkJ5SWQoKQorICAgIHRlbXBsYXRlPEluQnlLaW5k
IGtpbmQsIHR5cGVuYW1lIFN1YnNjcmlwdEtpbmQ+CisgICAgdm9pZCBjb21waWxlSW5CeShMVmFs
dWUgYmFzZSwgU3Vic2NyaXB0S2luZCBzdWJzY3JpcHRWYWx1ZSkKICAgICB7Ci0gICAgICAgIE5v
ZGUqIG5vZGUgPSBtX25vZGU7Ci0gICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmll
ciA9IG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKTsKLSAgICAgICAgTFZhbHVlIGJhc2UgPSBs
b3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwotCiAgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0
Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoSW50NjQpOwogICAgICAgICBwYXRjaHBvaW50LT5h
cHBlbmRTb21lUmVnaXN0ZXIoYmFzZSk7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCAhPSBJ
bkJ5S2luZDo6Tm9ybWFsKQorICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lz
dGVyKHN1YnNjcmlwdFZhbHVlKTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2Vs
bE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsK
ICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6bGF0ZVJl
ZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOwotCiAgICAgICAgIHBhdGNocG9pbnQtPmNs
b2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKIAotICAgICAgICBS
ZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0KLSAgICAg
ICAgICAgIHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKKyAgICAg
ICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9IHBy
ZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKIAogICAgICAgICBTdGF0
ZSogc3RhdGUgPSAmbV9mdGxTdGF0ZTsKKyAgICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKICAg
ICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAgWz1dIChDQ2FsbEhl
bHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAg
ICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNo
KGppdCk7CiAKLSAgICAgICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPQot
ICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5h
ZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgICAg
ICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0gc3RhdGUtPmppdENvZGUtPmNvbW1v
bi5jb2RlT3JpZ2lucy0+YWRkVW5pcXVlQ2FsbFNpdGVJbmRleChub2RlLT5vcmlnaW4uc2VtYW50
aWMpOwogCiAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZGlyZWN0IGV4aXQgdGFyZ2V0
IGZvciBvcGVyYXRpb24gY2FsbHMuCi0gICAgICAgICAgICAgICAgQm94PENDYWxsSGVscGVyczo6
SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPQotICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25IYW5k
bGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uKHBhcmFtcyktPmp1bXBzKGppdCk7CisgICAgICAgICAg
ICAgICAgQm94PENDYWxsSGVscGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPSBleGNlcHRpb25I
YW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uKHBhcmFtcyktPmp1bXBzKGppdCk7CiAKLSAgICAg
ICAgICAgICAgICBhdXRvIGdlbmVyYXRvciA9IEJveDxKSVRJbkJ5SWRHZW5lcmF0b3I+OjpjcmVh
dGUoCi0gICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNl
bWFudGljLCBjYWxsU2l0ZUluZGV4LAotICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwgaWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigp
KSwKLSAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzBdLmdwcigpKSk7Cisg
ICAgICAgICAgICAgICAgYXV0byByZXR1cm5HUFIgPSBwYXJhbXNbMF0uZ3ByKCk7CisgICAgICAg
ICAgICAgICAgYXV0byBiYXNlID0gSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKTsKKworICAg
ICAgICAgICAgICAgIGNvbnN0IGF1dG8gc3Vic2NyaXB0ID0gWyZdIHsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgY29uc3RleHByIChraW5kID09IEluQnlLaW5kOjpOb3JtYWwpCisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN1YnNjcmlw
dFZhbHVlLnJhd0JpdHMoKSk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVncyhwYXJhbXNbMl0uZ3ByKCkpOworICAgICAg
ICAgICAgICAgIH0oKTsKKworICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8gZ2VuZXJhdG9yID0g
WyZdIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgY29uc3RleHByIChraW5kID09IEluQnlLaW5k
OjpOb3JtYWwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb3g8SklUSW5CeUlk
R2VuZXJhdG9yPjo6Y3JlYXRlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2Rl
QmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBzdWJzY3Jp
cHRWYWx1ZSwgYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhy
ZXR1cm5HUFIpKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBCb3g8SklUSW5CeVZhbEdlbmVyYXRvcj46OmNyZWF0ZSgKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMu
dW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgYmFzZSwgc3Vic2NyaXB0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJldHVybkdQUikpOworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgfSgpOwogCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5n
ZW5lcmF0ZUZhc3RQYXRoKGppdCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJl
bCBkb25lID0gaml0LmxhYmVsKCk7CkBAIC0xMjI3NCwxMiArMTIyODMsMjIgQEAgcHJpdmF0ZToK
IAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5zbG93UGF0aEp1bXAoKS5saW5r
KCZqaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpMYWJlbCBzbG93
UGF0aEJlZ2luID0gaml0LmxhYmVsKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQs
IG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNl
cHRpb25zLmdldCgpLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwgcGFyYW1zWzBdLmdwcigpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksIHBhcmFt
c1sxXS5ncHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyLnJhd0Jp
dHMoKSkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDYWxs
IHNsb3dQYXRoQ2FsbDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoa2lu
ZCA9PSBJbkJ5S2luZDo6Tm9ybWFsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xv
d1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmln
aW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMu
Z2V0KCksIG9wZXJhdGlvbkluQnlJZE9wdGltaXplLCByZXR1cm5HUFIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBiYXNlLCBzdWJzY3JpcHQpLmNhbGwoKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xv
d1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2RlLT5vcmln
aW4uc2VtYW50aWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMu
Z2V0KCksIG9wZXJhdGlvbkluQnlWYWxPcHRpbWl6ZSwgcmV0dXJuR1BSLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG51bGxw
dHIpLCBiYXNlLCBzdWJzY3JpcHQpLmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5qdW1wKCkubGlua1RvKGRvbmUsICZqaXQpOwog
CiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnJlcG9ydFNsb3dQYXRoQ2FsbChz
bG93UGF0aEJlZ2luLCBzbG93UGF0aENhbGwpOwpAQCAtMTIyOTQsNiArMTIzMTMsMTYgQEAgcHJp
dmF0ZToKICAgICAgICAgc2V0SlNWYWx1ZShwYXRjaHBvaW50KTsKICAgICB9CiAKKyAgICB2b2lk
IGNvbXBpbGVJbkJ5SWQoKQorICAgIHsKKyAgICAgICAgY29tcGlsZUluQnk8SW5CeUtpbmQ6Ok5v
cm1hbD4obG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9ub2RlLT5jYWNoZWFibGVJZGVudGlm
aWVyKCkpOworICAgIH0KKworICAgIHZvaWQgY29tcGlsZUluQnlWYWwoKQorICAgIHsKKyAgICAg
ICAgY29tcGlsZUluQnk8SW5CeUtpbmQ6Ok5vcm1hbEJ5VmFsPihsb3dDZWxsKG1fbm9kZS0+Y2hp
bGQxKCkpLCBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpKTsKKyAgICB9CisKICAgICB2b2lk
IGNvbXBpbGVIYXNPd25Qcm9wZXJ0eSgpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaAppbmRleCBhZTNjNzg2OTU4NWFmMjlhNmFm
Yzc0ZDNiZjE4OGI0OTZiZjljMDkzLi5mMDRjMWY0MjhlMTBiZmM3MWZhNWNlMzVlMDAyODY4YmI3
OGFkZWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaApAQCAtNDMsNiArNDMsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhHZXRCeVNlbGZQYXRjaCkgXAogICAgIG1hY3Jv
KEluQWRkQWNjZXNzQ2FzZSkgXAogICAgIG1hY3JvKEluUmVwbGFjZVdpdGhKdW1wKSBcCisgICAg
bWFjcm8oSW5SZXBsYWNlV2l0aEdlbmVyaWMpIFwKICAgICBtYWNybyhJbnN0YW5jZU9mQWRkQWNj
ZXNzQ2FzZSkgXAogICAgIG1hY3JvKEluc3RhbmNlT2ZSZXBsYWNlV2l0aEp1bXApIFwKICAgICBt
YWNybyhPcGVyYXRpb25HZXRCeUlkKSBcCkBAIC01Miw3ICs1Myw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIG1hY3JvKE9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUpIFwKICAgICBtYWNybyhPcGVy
YXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSkgXAogICAgIG1hY3JvKE9wZXJhdGlvbkdlbmVy
aWNJbikgXAotICAgIG1hY3JvKE9wZXJhdGlvbkluQnlJZCkgXAorICAgIG1hY3JvKE9wZXJhdGlv
bkluQnlJZEdlbmVyaWMpIFwKICAgICBtYWNybyhPcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSkgXAog
ICAgIG1hY3JvKE9wZXJhdGlvblB1dEJ5SWRTdHJpY3QpIFwKICAgICBtYWNybyhPcGVyYXRpb25Q
dXRCeUlkTm9uU3RyaWN0KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggYjgzYTQw
NmY3M2NiZDlmODViOTUwNWJiZDBkOTBhMjJmZjczYjc4Mi4uZjllNjQ5MTNhMWM4NjA5ZDdiYWQ4
M2Y3YTczMzQ0ODcyN2RhYzZiYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjc4
LDcgKzI3OCw2IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAg
fQogCiAgICAgICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKLSAgICAgICAgREVGSU5FX1NMT1dfT1Ao
aW5fYnlfdmFsKQogICAgICAgICBERUZJTkVfU0xPV19PUChoYXNfcHJpdmF0ZV9uYW1lKQogICAg
ICAgICBERUZJTkVfU0xPV19PUChoYXNfcHJpdmF0ZV9icmFuZCkKICAgICAgICAgREVGSU5FX1NM
T1dfT1AobGVzcykKQEAgLTM1NCw2ICszNTMsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVN
YWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9iZWxvd2VxKQogICAgICAgICBERUZJTkVf
T1Aob3BfdHJ5X2dldF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX2luX2J5X2lkKQorICAg
ICAgICBERUZJTkVfT1Aob3BfaW5fYnlfdmFsKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5
X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X2lkX3dpdGhfdGhpcykKICAgICAgICAg
REVGSU5FX09QKG9wX2dldF9ieV9pZF9kaXJlY3QpCkBAIC01MDgsOCArNTA4LDkgQEAgdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICBtX2dldEJ5SWRXaXRoVGhpc0luZGV4
ID0gMDsKICAgICBtX3B1dEJ5SWRJbmRleCA9IDA7CiAgICAgbV9pbkJ5SWRJbmRleCA9IDA7Ci0g
ICAgbV9kZWxCeVZhbEluZGV4ID0gMDsKKyAgICBtX2luQnlWYWxJbmRleCA9IDA7CiAgICAgbV9k
ZWxCeUlkSW5kZXggPSAwOworICAgIG1fZGVsQnlWYWxJbmRleCA9IDA7CiAgICAgbV9pbnN0YW5j
ZU9mSW5kZXggPSAwOwogICAgIG1fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXggPSAwOwogICAgIG1f
YnlWYWxJbnN0cnVjdGlvbkluZGV4ID0gMDsKQEAgLTU1Myw2ICs1NTQsNyBAQCB2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bf
ZXEpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF90cnlfZ2V0X2J5X2lkKQogICAgICAg
ICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfaW5fYnlfaWQpCisgICAgICAgIERFRklORV9TTE9XQ0FT
RV9PUChvcF9pbl9ieV92YWwpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9nZXRfYnlf
aWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9nZXRfYnlfaWRfd2l0aF90aGlzKQog
ICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZ2V0X2J5X2lkX2RpcmVjdCkKQEAgLTkwNCw2
ICs5MDYsNyBAQCB2b2lkIEpJVDo6bGluaygpCiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9k
ZWxCeUlkcywgcGF0Y2hCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZGVsQnlW
YWxzLCBwYXRjaEJ1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9pbkJ5SWRzLCBw
YXRjaEJ1ZmZlcik7CisgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9pbkJ5VmFscywgcGF0Y2hC
dWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1faW5zdGFuY2VPZnMsIHBhdGNoQnVm
ZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzLCBw
YXRjaEJ1ZmZlcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IGM3MGE3ZDllMzNmYTE1
NmNkYjU0Yzg4YWM3MjE3OGE2Nzg0NGYxZmYuLjM0ZDBlMDE1OGI5YjRmODBkODdkZDEwMzkyNWFh
YWY2ZWVkZDNlODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNTY0LDYgKzU2NCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2FyZ3VtZW50X2J5X3Zh
bChjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X3Byb3RvdHlw
ZV9vZihjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfaW5fYnlfaWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2luX2J5X3ZhbChjb25z
dCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfaW5pdF9sYXp5X3JlZyhjb25z
dCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bfb3ZlcnJpZGVzX2hhc19pbnN0
YW5jZShjb25zdCBJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfaW5zdGFuY2Vv
Zihjb25zdCBJbnN0cnVjdGlvbiopOwpAQCAtNjk3LDYgKzY5OCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2NoZWNrX3ByaXZhdGVfYnJhbmQoY29uc3QgSW5z
dHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZv
aWQgZW1pdFNsb3dfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19v
cF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImKTsKKyAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1
Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQg
ZW1pdFNsb3dfb3BfaW5zdGFuY2VvZihjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2Fz
ZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9pbnN0YW5jZW9m
X2N1c3RvbShjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9qbGVzcyhjb25zdCBJbnN0cnVjdGlvbios
IFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKQEAgLTEwMDEsNiArMTAwMyw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBWZWN0b3I8SklUR2V0QnlJZFdpdGhUaGlzR2VuZXJh
dG9yPiBtX2dldEJ5SWRzV2l0aFRoaXM7CiAgICAgICAgIFZlY3RvcjxKSVRQdXRCeUlkR2VuZXJh
dG9yPiBtX3B1dEJ5SWRzOwogICAgICAgICBWZWN0b3I8SklUSW5CeUlkR2VuZXJhdG9yPiBtX2lu
QnlJZHM7CisgICAgICAgIFZlY3RvcjxKSVRJbkJ5VmFsR2VuZXJhdG9yPiBtX2luQnlWYWxzOwog
ICAgICAgICBWZWN0b3I8SklURGVsQnlJZEdlbmVyYXRvcj4gbV9kZWxCeUlkczsKICAgICAgICAg
VmVjdG9yPEpJVERlbEJ5VmFsR2VuZXJhdG9yPiBtX2RlbEJ5VmFsczsKICAgICAgICAgVmVjdG9y
PEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I+IG1faW5zdGFuY2VPZnM7CkBAIC0xMDI3LDYgKzEwMzAs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdW5zaWduZWQgbV9nZXRCeUlkV2l0aFRoaXNJ
bmRleCB7IFVJTlRfTUFYIH07CiAgICAgICAgIHVuc2lnbmVkIG1fcHV0QnlJZEluZGV4IHsgVUlO
VF9NQVggfTsKICAgICAgICAgdW5zaWduZWQgbV9pbkJ5SWRJbmRleCB7IFVJTlRfTUFYIH07Cisg
ICAgICAgIHVuc2lnbmVkIG1faW5CeVZhbEluZGV4IHsgVUlOVF9NQVggfTsKICAgICAgICAgdW5z
aWduZWQgbV9kZWxCeVZhbEluZGV4IHsgVUlOVF9NQVggfTsKICAgICAgICAgdW5zaWduZWQgbV9k
ZWxCeUlkSW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBtX2luc3RhbmNlT2ZJ
bmRleCB7IFVJTlRfTUFYIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IGY1MmMzYzc2MjE1YWEzMjZkZGU5Zjg5
ODU2Mjk4YzNkZTY0NjIyY2UuLjE4OTNjNjgwMTJiMDJiNzU2MDA3MzFhNmY3NzY5Y2FiMWJlMGRk
ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IuY3BwCkBAIC0yMzUsMTAgKzIzNSwzOCBAQCB2b2lkIEpJVERlbEJ5SWRHZW5l
cmF0b3I6OmZpbmFsaXplKAogICAgICAgICBmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxv
Y2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKIH0KIAotSklUSW5CeUlk
R2VuZXJhdG9yOjpKSVRJbkJ5SWRHZW5lcmF0b3IoCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29uc3QgUmVn
aXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCi0gICAgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlKQotICAgIDogSklUQnlJ
ZEdlbmVyYXRvcihjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpJ
biwgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUpCitKSVRJbkJ5VmFsR2VuZXJhdG9yOjpKSVRJ
bkJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmln
aW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRS
ZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVl
UmVncyByZXN1bHQpCisgICAgOiBCYXNlKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGVJ
bmRleCwgQWNjZXNzVHlwZTo6SW5CeVZhbCwgdXNlZFJlZ2lzdGVycykKK3sKKyAgICBtX3N0dWJJ
bmZvLT5oYXNDb25zdGFudElkZW50aWZpZXIgPSBmYWxzZTsKKworICAgIG1fc3R1YkluZm8tPmJh
c2VHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT5yZWdzLnByb3BlcnR5
R1BSID0gcHJvcGVydHkucGF5bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0g
cmVzdWx0LnBheWxvYWRHUFIoKTsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIG1fc3R1Yklu
Zm8tPmJhc2VUYWdHUFIgPSBiYXNlLnRhZ0dQUigpOworICAgIG1fc3R1YkluZm8tPnZhbHVlVGFn
R1BSID0gcmVzdWx0LnRhZ0dQUigpOworICAgIG1fc3R1YkluZm8tPnYucHJvcGVydHlUYWdHUFIg
PSBwcm9wZXJ0eS50YWdHUFIoKTsKKyNlbmRpZgorfQorCit2b2lkIEpJVEluQnlWYWxHZW5lcmF0
b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKK3sKKyAgICBtX3N0YXJ0
ID0gaml0LmxhYmVsKCk7CisgICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgp
OworICAgIG1fZG9uZSA9IGppdC5sYWJlbCgpOworfQorCit2b2lkIEpJVEluQnlWYWxHZW5lcmF0
b3I6OmZpbmFsaXplKAorICAgIExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93
UGF0aCkKK3sKKyAgICBBU1NFUlQobV9zdGFydC5pc1NldCgpKTsKKyAgICBCYXNlOjpmaW5hbGl6
ZSgKKyAgICAgICAgZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7Cit9CisKK0pJVEluQnlJZEdlbmVyYXRvcjo6SklU
SW5CeUlkR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmln
aW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0
ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZ3MgYmFzZSwg
SlNWYWx1ZVJlZ3MgdmFsdWUpCisgICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgY29k
ZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkluQnlJZCwgdXNlZFJlZ2lzdGVycywgYmFz
ZSwgdmFsdWUpCiB7CiAgICAgLy8gRklYTUU6IFdlIGFyZSBub3Qgc3VwcG9ydGluZyBmYXN0IHBh
dGggZm9yICJsZW5ndGgiIHByb3BlcnR5LgogICAgIFVOVVNFRF9QQVJBTShwcm9wZXJ0eU5hbWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVy
YXRvci5oCmluZGV4IGQ2Y2E2ZTE2YTNmMzJjNjQwZjk2Y2IyNTUxOTU1NDhiMGYyZWI2NTEuLjkw
NGRiMTQyMjIzOGJkMTRjZjM0MjkxYWY3NTM2ODQwOGJhNTdiOWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKQEAgLTE5NSw2
ICsxOTUsMzEgQEAgcHJpdmF0ZToKICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBt
X3Nsb3dQYXRoSnVtcDsKIH07CiAKK2NsYXNzIEpJVEluQnlWYWxHZW5lcmF0b3IgOiBwdWJsaWMg
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgeworICAgIHVzaW5nIEJhc2UgPSBKSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvcjsKK3B1YmxpYzoKKyAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yKCkgeyB9CisKKyAg
ICBKSVRJbkJ5VmFsR2VuZXJhdG9yKAorICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBD
YWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICAgICAg
SlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3Vs
dCk7CisKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1bXAoKSBjb25zdAorICAg
IHsKKyAgICAgICAgQVNTRVJUKG1fc2xvd1BhdGhKdW1wLm1fanVtcC5pc1NldCgpKTsKKyAgICAg
ICAgcmV0dXJuIG1fc2xvd1BhdGhKdW1wLm1fanVtcDsKKyAgICB9CisKKyAgICB2b2lkIGZpbmFs
aXplKAorICAgICAgICBMaW5rQnVmZmVyJiBmYXN0UGF0aExpbmtCdWZmZXIsIExpbmtCdWZmZXIm
IHNsb3dQYXRoTGlua0J1ZmZlcik7CisKKyAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9B
c3NlbWJsZXImKTsKKworcHJpdmF0ZToKKyAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbV9zdGFy
dDsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBtX3Nsb3dQYXRoSnVtcDsKK307
CisKIGNsYXNzIEpJVEluQnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsK
IHB1YmxpYzoKICAgICBKSVRJbkJ5SWRHZW5lcmF0b3IoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGQ3NjU1YzdkOGRmZjZjMDA1YjAzYWY3
MWE4Mjk1ZTljN2M5OGM0ODYuLjViOWVhMzZlNTczNmNlMmQ1OGE0MGUzNWNlMTI3ZjExODlhZDFi
YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAt
Mzk1LDcgKzM5NSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRCeUlk
V2l0aFRoaXNPcHRpbWl6ZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsCiAgICAgfSkpOwogfQogCi1K
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5CeUlkLCBFbmNvZGVkSlNWYWx1ZSwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5m
bywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgdWludHB0cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIp
KQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluQnlJZEdlbmVyaWMsIEVuY29k
ZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxl
SWRlbnRpZmllcikpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUo
ZmFsc2UpOwogCkBAIC00MTYsNyArNDE2LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbkluQnlJZCwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmEKICAg
ICB9CiAgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOwogCi0g
ICAgTE9HX0lDKChJQ0V2ZW50OjpPcGVyYXRpb25JbkJ5SWQsIGJhc2VPYmplY3QtPmNsYXNzSW5m
byh2bSksIGlkZW50KSk7CisgICAgTE9HX0lDKChJQ0V2ZW50OjpPcGVyYXRpb25JbkJ5SWRHZW5l
cmljLCBiYXNlT2JqZWN0LT5jbGFzc0luZm8odm0pLCBpZGVudCkpOwogCiAgICAgc2NvcGUucmVs
ZWFzZSgpOwogICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIFByb3BlcnR5U2xvdDo6
SW50ZXJuYWxNZXRob2RUeXBlOjpIYXNQcm9wZXJ0eSk7CkBAIC00NDksMTkgKzQ0OSw2MiBAQCBK
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5CeUlkT3B0aW1pemUsIEVuY29kZWRK
U1ZhbHVlLCAoSlNHbG9iYWxPYmplYwogICAgIGJvb2wgZm91bmQgPSBiYXNlT2JqZWN0LT5nZXRQ
cm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xvdCk7CiAgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwogICAgIGlmIChzdHViSW5mby0+Y29u
c2lkZXJDYWNoaW5nQnkodm0sIGNvZGVCbG9jaywgYmFzZU9iamVjdC0+c3RydWN0dXJlKHZtKSwg
aWRlbnRpZmllcikpCi0gICAgICAgIHJlcGF0Y2hJbkJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxv
Y2ssIGJhc2VPYmplY3QsIGlkZW50aWZpZXIsIGZvdW5kLCBzbG90LCAqc3R1YkluZm8pOworICAg
ICAgICByZXBhdGNoSW5CeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgaWRl
bnRpZmllciwgZm91bmQsIHNsb3QsICpzdHViSW5mbywgSW5CeUtpbmQ6Ok5vcm1hbCk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZm91bmQpKTsKIH0KIAotSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluQnlWYWwsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBiYXNlLCBFbmNvZGVkSlNWYWx1ZSBrZXkp
KQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluQnlWYWxPcHRpbWl6ZSwgRW5j
b2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8sIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEtleSkpCiB7CiAgICAgU3VwZXJT
YW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwotICAgIAorCisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZEJhc2UpOworICAgIGlmICghYmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgdGhy
b3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlSW52YWxpZEluUGFyYW1ldGVy
RXJyb3IoZ2xvYmFsT2JqZWN0LCBiYXNlVmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIGVuY29kZWRK
U1ZhbHVlKCk7CisgICAgfQorICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFz
ZVZhbHVlKTsKKyAgICBpZiAoYXJyYXlQcm9maWxlKQorICAgICAgICBhcnJheVByb2ZpbGUtPm9i
c2VydmVTdHJ1Y3R1cmUoYmFzZU9iamVjdC0+c3RydWN0dXJlKHZtKSk7CisKKyAgICBKU1ZhbHVl
IGtleSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkS2V5KTsKKyAgICB1aW50MzJfdCBpOworICAg
IGlmIChrZXkuZ2V0VUludDMyKGkpKSB7CisgICAgICAgIGlmIChhcnJheVByb2ZpbGUpCisgICAg
ICAgICAgICBhcnJheVByb2ZpbGUtPm9ic2VydmVJbmRleGVkUmVhZCh2bSwgYmFzZU9iamVjdCwg
aSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbihiYXNlT2JqZWN0LT5oYXNQcm9wZXJ0eShnbG9iYWxPYmplY3QsIGkpKSkpOworICAg
IH0KKworICAgIGNvbnN0IElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0ga2V5LnRvUHJvcGVydHlL
ZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBQcm9wZXJ0eVNs
b3Q6OkludGVybmFsTWV0aG9kVHlwZTo6SGFzUHJvcGVydHkpOworICAgIGJvb2wgZm91bmQgPSBi
YXNlT2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwor
CisgICAgaWYgKENhY2hlYWJsZUlkZW50aWZpZXI6OmlzQ2FjaGVhYmxlSWRlbnRpZmllckNlbGwo
a2V5KSAmJiAoa2V5LmlzU3ltYm9sKCkgfHwgIXBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkpIHsK
KyAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwor
ICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlm
aWVyOjpjcmVhdGVGcm9tQ2VsbChrZXkuYXNDZWxsKCkpOworICAgICAgICBpZiAoc3R1YkluZm8t
PmNvbnNpZGVyQ2FjaGluZ0J5KHZtLCBjb2RlQmxvY2ssIGJhc2VPYmplY3QtPnN0cnVjdHVyZSh2
bSksIGlkZW50aWZpZXIpKQorICAgICAgICAgICAgcmVwYXRjaEluQnkoZ2xvYmFsT2JqZWN0LCBj
b2RlQmxvY2ssIGJhc2VPYmplY3QsIGlkZW50aWZpZXIsIGZvdW5kLCBzbG90LCAqc3R1YkluZm8s
IEluQnlLaW5kOjpOb3JtYWxCeVZhbCk7CisgICAgfQorCisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc0Jvb2xlYW4oZm91bmQpKTsKK30KKworSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbkluQnlWYWxHZW5lcmljLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgQXJyYXlQcm9maWxlKiBh
cnJheVByb2ZpbGUsIEVuY29kZWRKU1ZhbHVlIGJhc2UsIEVuY29kZWRKU1ZhbHVlIGtleSkpCit7
CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOworCiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzQm9vbGVhbihDb21tb25TbG93UGF0aHM6Om9wSW5CeVZhbChnbG9iYWxPYmplY3QsIGJh
c2UsIEpTVmFsdWU6OmRlY29kZShrZXkpKSkpOworICAgIHN0dWJJbmZvLT50b29rU2xvd1BhdGgg
PSB0cnVlOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKENvbW1vblNsb3dQ
YXRoczo6b3BJbkJ5VmFsKGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKGJhc2UpLCBKU1Zh
bHVlOjpkZWNvZGUoa2V5KSwgYXJyYXlQcm9maWxlKSkpOwogfQogCiBKU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uSGFzUHJpdmF0ZU5hbWUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBiYXNlLCBFbmNvZGVkSlNWYWx1ZSBrZXkp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCBhMzNiMWE1
Y2YxMmI4OWJhNTUyMTkxZTBmN2Y4NjZlYWZlMWEyZTE4Li4zMTQ2NTk2Nzk2MmRiNTE4OTAwMDRk
YjA5YTg2ODE5NjU1YTRlYmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuaApAQCAtMTc0LDEwICsxNzQsMTAgQEAgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25HZXRCeUlkRGlyZWN0LCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWMKIEpT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0QnlJZERpcmVjdEdlbmVyaWMsIEVu
Y29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgdWludHB0cl90
KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldEJ5SWREaXJlY3RPcHRp
bWl6ZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZv
KiwgRW5jb2RlZEpTVmFsdWUsIHVpbnRwdHJfdCkpOwogCi1KU0NfREVDTEFSRV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbkluQnlJZCwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIHVpbnRwdHJfdCkpOworSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25JbkJ5SWRHZW5lcmljLCBFbmNvZGVkSlNWYWx1ZSwg
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgdWlu
dHB0cl90KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluQnlJZE9wdGlt
aXplLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8q
LCBFbmNvZGVkSlNWYWx1ZSwgdWludHB0cl90KSk7Ci0KLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uSW5CeVZhbCwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIEpT
Q2VsbCosIEVuY29kZWRKU1ZhbHVlKSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbkluQnlWYWxHZW5lcmljLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlU3R1YkluZm8qLCBBcnJheVByb2ZpbGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUpKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5CeVZhbE9wdGlt
aXplLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8q
LCBBcnJheVByb2ZpbGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpKTsKIEpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSGFzUHJpdmF0ZU5hbWUsIEVuY29kZWRKU1Zh
bHVlLCAoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSkpOwogSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25IYXNQcml2YXRlQnJhbmQsIEVuY29kZWRKU1Zh
bHVlLCAoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IGI5
OTQzYTBhMmEzMzJjMmMyZDcxODJkZWY1YWU3MDExODJmYjBjZDEuLjExMGY4NzNjY2YzOWExYzcz
ODNkZTRkODQ2MWMyNmFjNzRiZmJlZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0xNTczLDYgKzE1NzMsNzYgQEAgdm9pZCBKSVQ6
OmVtaXRTbG93X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG8KICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4s
IGNhbGwpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcEluQnlWYWw+KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5
dGVjb2RlLm1fZHN0OworICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNl
OworICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7Cisg
ICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7CisgICAg
QXJyYXlQcm9maWxlKiBwcm9maWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOworCisgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7CisgICAgZW1pdEp1bXBTbG93Q2Fz
ZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlKTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHBy
b3BlcnR5LCByZWdUMSk7CisgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKHJlZ1Qw
LCByZWdUMiwgcHJvZmlsZSk7CisKKyAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yIGdlbigKKyAgICAg
ICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRl
eChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksCisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCBKU1Zh
bHVlUmVncyhyZWdUMCkpOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICBh
ZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIG1faW5CeVZhbHMuYXBwZW5kKGdl
bik7CisKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7Cit9CisKK3ZvaWQgSklUOjpl
bWl0U2xvd19vcF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
biwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICBsaW5rQWxs
U2xvd0Nhc2VzKGl0ZXIpOworCisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BJbkJ5VmFsPigpOworICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5t
X2RzdDsKKyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2Nr
KTsKKyAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7
CisKKyAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlWYWxzW21faW5CeVZhbElu
ZGV4KytdOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisKKyNpZiAhRU5B
QkxFKEVYVFJBX0NUSV9USFVOS1MpCisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQ
cm9maWxlKG1ldGFkYXRhLCBvcGVyYXRpb25JbkJ5VmFsT3B0aW1pemUsIGRzdCwgVHJ1c3RlZElt
bVB0cihtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcHJvZmls
ZSwgcmVnVDAsIHJlZ1QxKTsKKyNlbHNlCisgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICB1
aW50MzJfdCBieXRlY29kZU9mZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKKyAgICBB
U1NFUlQoQnl0ZWNvZGVJbmRleChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsK
KworICAgIGNvbnN0ZXhwciBHUFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjQ7
CisgICAgbW92ZShUcnVzdGVkSW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQ
Uik7CisKKyAgICBjb25zdGV4cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIzOwor
ICAgIGNvbnN0ZXhwciBHUFJSZWcgcHJvZmlsZUdQUiA9IGFyZ3VtZW50R1BSMjsKKyAgICBjb25z
dGV4cHIgR1BSUmVnIGJhc2VHUFIgPSByZWdUMDsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHByb3Bl
cnR5R1BSID0gcmVnVDE7CisgICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BS
MCB8fCAhaXNBUk02NCgpKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHByb3BlcnR5R1BSID09IGFyZ3Vt
ZW50R1BSMSk7CisKKyAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBzdHVi
SW5mb0dQUik7CisgICAgbW92ZShUcnVzdGVkSW1tUHRyKHByb2ZpbGUpLCBwcm9maWxlR1BSKTsK
KyAgICAvLyBzbG93X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3Igd2lsbCBkbyBl
eGFjdGx5IHdoYXQgd2UgbmVlZC4KKyAgICAvLyBTbywgdGhlcmUncyBubyBwb2ludCBpbiBjcmVh
dGluZyBhIGR1cGxpY2F0ZSB0aHVuayBqdXN0IHRvIGdpdmUgaXQgYSBkaWZmZXJlbnQgbmFtZS4K
KyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRpb25JbkJ5VmFs
T3B0aW1pemUpLCBkZWNsdHlwZShvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplKT46OnZhbHVlKTsK
KyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X3ZhbF9w
cmVwYXJlQ2FsbEdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKKworICAgIENh
bGwgY2FsbCA9IGFwcGVuZENhbGwob3BlcmF0aW9uSW5CeVZhbE9wdGltaXplKTsKKyAgICBlbWl0
TmFrZWROZWFyQ2FsbCh2bS5nZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRh
Z2dlZENvZGU8Tm9QdHJUYWc+KCkpOworCisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3Qs
IHJldHVyblZhbHVlR1BSKTsKKyNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKKwor
ICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7Cit9CisKIHZv
aWQgSklUOjplbWl0VmFySW5qZWN0aW9uQ2hlY2soYm9vbCBuZWVkc1ZhckluamVjdGlvbkNoZWNr
cykKIHsKICAgICBpZiAoIW5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggYzIy
Yzc3MDQyODlhYmIwODJmOWRkZjIwZDhjMmZmNjY1ZGZkNTZlMi4uMmQ5ZDQ1MDg1NzRkYTBhNmZh
MWE3YTk3MDdmMDZlZDAxZTRkMjk1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCkBAIC05MDgsNiArOTA4LDQ3IEBAIHZv
aWQgSklUOjplbWl0U2xvd19vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0b3I8U2xvCiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0
aEJlZ2luLCBjYWxsKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfaW5fYnlfdmFsKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJbkJ5VmFsPigpOworICAgIFZpcnR1YWxSZWdpc3RlciBk
c3QgPSBieXRlY29kZS5tX2RzdDsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2Rl
Lm1fYmFzZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3Bl
cnR5OworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2sp
OworICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsK
KworICAgIGVtaXRMb2FkMihiYXNlLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5LCByZWdUMywgcmVn
VDIpOworICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCByZWdUMSk7CisgICAg
ZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKHJlZ1QwLCByZWdUNCwgcHJvZmlsZSk7CisK
KyAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIEpTVmFsdWVS
ZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIEpTVmFs
dWVSZWdzKHJlZ1QxLCByZWdUMCkpOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsK
KyAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIG1faW5CeVZhbHMuYXBw
ZW5kKGdlbik7CisKKyAgICBlbWl0U3RvcmUoZHN0LCByZWdUMSwgcmVnVDApOworfQorCit2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7CisgICAg
bGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb24tPmFzPE9wSW5CeVZhbD4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0
ZWNvZGUubV9kc3Q7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2Nv
ZGVCbG9jayk7CisgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQ
cm9maWxlOworCisgICAgSklUSW5CeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9pbkJ5VmFsc1ttX2lu
QnlWYWxJbmRleCsrXTsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgpOworCisg
ICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbldpdGhQcm9maWxlKG1ldGFkYXRhLCBvcGVyYXRp
b25JbkJ5VmFsT3B0aW1pemUsIGRzdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+Z2xvYmFs
T2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcHJvZmlsZSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJl
Z1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSk7CisKKyAgICBnZW4ucmVwb3J0U2xvd1Bh
dGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOworfQorCiB2b2lkIEpJVDo6ZW1pdFZhckluamVj
dGlvbkNoZWNrKGJvb2wgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MpCiB7CiAgICAgaWYgKCFuZWVk
c1ZhckluamVjdGlvbkNoZWNrcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUVGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNw
cAppbmRleCAxMzViMzFiMWYxNmVkMjQ1MDY2ODlhM2NhN2YzMTM5YzE2YjIwZDk0Li42MWJhMzU0
Y2Y4NGRmNjMzODUzOWE0YzNlMmJkNDEyNDIyZGMzZjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRUaHVua3MuY3BwCkBAIC0yNzgsNyArMjc4LDYgQEAgdm9pZCBKSVRUaHVua3M6OnBy
ZWluaXRpYWxpemVDVElUaHVua3MoVk0mIHZtKQogI2RlZmluZSBJTklUX0JBU0VMSU5FX1NMT1df
UEFUSF9DQUxMX1JPVVRJTkUobmFtZSkgY3RpU2xvd1BhdGhGdW5jdGlvblN0dWIodm0sIHNsb3df
cGF0aF8jI25hbWUpCiAKICAgICAvLyBGcm9tIHRoZSBCYXNlbGluZUpJVCBERUZJTkVfU0xPV19P
UCBsaXN0OgotICAgIElOSVRfQkFTRUxJTkVfU0xPV19QQVRIX0NBTExfUk9VVElORShpbl9ieV92
YWwpOwogICAgIElOSVRfQkFTRUxJTkVfU0xPV19QQVRIX0NBTExfUk9VVElORShoYXNfcHJpdmF0
ZV9uYW1lKTsKICAgICBJTklUX0JBU0VMSU5FX1NMT1dfUEFUSF9DQUxMX1JPVVRJTkUoaGFzX3By
aXZhdGVfYnJhbmQpOwogICAgIElOSVRfQkFTRUxJTkVfU0xPV19QQVRIX0NBTExfUk9VVElORShs
ZXNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IDM1OTNjY2U4ODYw
ODgwMTgzNDZhODA4ZTVmODY0Nzg3MWE0NDFiMjkuLmE1MTQ1ZTM0Yzk3NjRlM2IxZjNjNTNkYmVl
OTc5MWQ5ODUzNTk2YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVw
YXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAt
ODk3LDcgKzg5Nyw3IEBAIHZvaWQgcmVwYXRjaERlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBEZWxldGVQCiAgICAgfQogfQogCi1zdGF0
aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbkJ5SUQoCitzdGF0aWMgSW5saW5lQ2FjaGVB
Y3Rpb24gdHJ5Q2FjaGVJbkJ5KAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENv
ZGVCbG9jayogY29kZUJsb2NrLCBKU09iamVjdCogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBw
cm9wZXJ0eU5hbWUsCiAgICAgYm9vbCB3YXNGb3VuZCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90
LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7CkBAIC05MDksMTcgKzkwOSwxNyBAQCBz
dGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbkJ5SUQoCiAgICAgICAgIEdDU2FmZUNv
bmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2ssIHZtLmhlYXApOwogICAg
ICAgICBpZiAoZm9yY2VJQ0ZhaWx1cmUoZ2xvYmFsT2JqZWN0KSkKICAgICAgICAgICAgIHJldHVy
biBHaXZlVXBPbkNhY2hlOwotICAgICAgICAKKwogICAgICAgICBpZiAoIWJhc2UtPnN0cnVjdHVy
ZSh2bSktPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSB8fCAoIXdhc0ZvdW5kICYmICFi
YXNlLT5zdHJ1Y3R1cmUodm0pLT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlRm9yQWJzZW5j
ZSgpKSkKICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwotICAgICAgICAKKwogICAg
ICAgICBpZiAod2FzRm91bmQpIHsKICAgICAgICAgICAgIGlmICghc2xvdC5pc0NhY2hlYWJsZSgp
KQogICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwogICAgICAgICB9Ci0gICAg
ICAgIAorCiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZS0+c3RydWN0dXJlKHZt
KTsKLSAgICAgICAgCisKICAgICAgICAgUmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBwcm90
b3R5cGVBY2Nlc3NDaGFpbjsKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgY29u
ZGl0aW9uU2V0OwogICAgICAgICBpZiAod2FzRm91bmQpIHsKQEAgLTk5MSwyMyArOTkxLDI5IEBA
IHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluQnlJRCgKIAogICAgICAgICBpZiAo
cmVzdWx0LmdlbmVyYXRlZFNvbWVDb2RlKCkpIHsKICAgICAgICAgICAgIExPR19JQygoSUNFdmVu
dDo6SW5SZXBsYWNlV2l0aEp1bXAsIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBzbG90
LnNsb3RCYXNlKCkgPT0gYmFzZSkpOwotICAgICAgICAgICAgCisKICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkpOwogICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdp
cmVTdHViQXNKdW1wKHN0dWJJbmZvLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0
clRhZz4ocmVzdWx0LmNvZGUoKSkpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgZmlyZVdhdGNo
cG9pbnRzQW5kQ2xlYXJTdHViSWZOZWVkZWQodm0sIHN0dWJJbmZvLCBjb2RlQmxvY2ssIHJlc3Vs
dCk7Ci0gICAgCisKICAgICByZXR1cm4gcmVzdWx0LnNob3VsZEdpdmVVcE5vdygpID8gR2l2ZVVw
T25DYWNoZSA6IFJldHJ5Q2FjaGVMYXRlcjsKIH0KIAotdm9pZCByZXBhdGNoSW5CeUlEKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU09iamVjdCog
YmFzZU9iamVjdCwgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIGJvb2wgd2FzRm91
bmQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZv
KQordm9pZCByZXBhdGNoSW5CeShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgSlNPYmplY3QqIGJhc2VPYmplY3QsIENhY2hlYWJsZUlkZW50aWZpZXIg
cHJvcGVydHlOYW1lLCBib29sIHdhc0ZvdW5kLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0
cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgSW5CeUtpbmQga2luZCkKIHsKICAgICBTdXBlclNh
bXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogCi0gICAgaWYgKHRyeUNhY2hlSW5CeUlEKGdsb2JhbE9iamVjdCwgY29k
ZUJsb2NrLCBiYXNlT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHdhc0ZvdW5kLCBzbG90LCBzdHViSW5m
bykgPT0gR2l2ZVVwT25DYWNoZSkKLSAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNv
ZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkluQnlJZCk7
CisgICAgaWYgKHRyeUNhY2hlSW5CeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVj
dCwgcHJvcGVydHlOYW1lLCB3YXNGb3VuZCwgc2xvdCwgc3R1YkluZm8pID09IEdpdmVVcE9uQ2Fj
aGUpIHsKKyAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpJblJlcGxhY2VXaXRoR2VuZXJpYywgYmFz
ZU9iamVjdC0+Y2xhc3NJbmZvKGdsb2JhbE9iamVjdC0+dm0oKSksIElkZW50aWZpZXI6OmZyb21V
aWQodm0sIHByb3BlcnR5TmFtZS51aWQoKSkpKTsKKyAgICAgICAgaWYgKGtpbmQgPT0gSW5CeUtp
bmQ6Ok5vcm1hbCkKKyAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxv
Y2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25JbkJ5SWRHZW5lcmlj
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNv
ZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkluQnlWYWxH
ZW5lcmljKTsKKyAgICB9CiB9CiAKIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUNo
ZWNrUHJpdmF0ZUJyYW5kKApAQCAtMTY4Myw5ICsxNjg5LDEyIEBAIHN0YXRpYyB2b2lkIHJlc2V0
UGF0Y2hhYmxlSnVtcChTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiAgICAgTWFjcm9Bc3Nl
bWJsZXI6OnJlcGF0Y2hKdW1wKHN0dWJJbmZvLnBhdGNoYWJsZUp1bXAoKSwgc3R1YkluZm8uc2xv
d1BhdGhTdGFydExvY2F0aW9uKTsKIH0KIAotdm9pZCByZXNldEluQnlJRChDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQordm9pZCByZXNldEluQnkoQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgSW5CeUtpbmQg
a2luZCkKIHsKLSAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5m
by5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpOworICAgIGlm
IChraW5kID09IEluQnlLaW5kOjpOb3JtYWwpCisgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNo
Q2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25J
bkJ5SWRPcHRpbWl6ZSk7CisgICAgZWxzZQorICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENh
bGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uSW5C
eVZhbE9wdGltaXplKTsKICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1Yklu
Zm8sIHN0dWJJbmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbik7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZXBhdGNoLmgKaW5kZXggMzEzNzlkYzRlNWE5ZGMyZGM2ZWE0OTMxNzc5NDcyNmEwMDIw
MzUxYS4uOTI4Yzk5YjEyOTE5YTFhMDFhMzQyYTY1Zjc4NWM0ZTQ2YTBlMWZmNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKQEAgLTQ4LDExICs0OCwxNiBAQCBlbnVtIGNsYXNzIERl
bEJ5S2luZCB7CiAgICAgTm9ybWFsQnlWYWwKIH07CiAKK2VudW0gY2xhc3MgSW5CeUtpbmQgewor
ICAgIE5vcm1hbCwKKyAgICBOb3JtYWxCeVZhbAorfTsKKwogdm9pZCByZXBhdGNoQXJyYXlHZXRC
eVZhbChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBp
bmRleCwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVwYXRjaEdldEJ5KEpTR2xvYmFsT2Jq
ZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgY29uc3QgUHJv
cGVydHlTbG90JiwgU3RydWN0dXJlU3R1YkluZm8mLCBHZXRCeUtpbmQpOwogdm9pZCByZXBhdGNo
UHV0QnlJRChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUsIFN0cnVjdHVyZSos
IENhY2hlYWJsZUlkZW50aWZpZXIsIGNvbnN0IFB1dFByb3BlcnR5U2xvdCYsIFN0cnVjdHVyZVN0
dWJJbmZvJiwgUHV0S2luZCk7CiB2b2lkIHJlcGF0Y2hEZWxldGVCeShKU0dsb2JhbE9iamVjdCos
IENvZGVCbG9jayosIERlbGV0ZVByb3BlcnR5U2xvdCYsIEpTVmFsdWUsIFN0cnVjdHVyZSosIENh
Y2hlYWJsZUlkZW50aWZpZXIsIFN0cnVjdHVyZVN0dWJJbmZvJiwgRGVsQnlLaW5kLCBFQ01BTW9k
ZSk7Ci12b2lkIHJlcGF0Y2hJbkJ5SUQoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU09i
amVjdCosIENhY2hlYWJsZUlkZW50aWZpZXIsIGJvb2wgd2FzRm91bmQsIGNvbnN0IFByb3BlcnR5
U2xvdCYsIFN0cnVjdHVyZVN0dWJJbmZvJik7Cit2b2lkIHJlcGF0Y2hJbkJ5KEpTR2xvYmFsT2Jq
ZWN0KiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBib29sIHdh
c0ZvdW5kLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIEluQnlLaW5k
KTsKIHZvaWQgcmVwYXRjaENoZWNrUHJpdmF0ZUJyYW5kKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJs
b2NrKiwgSlNPYmplY3QqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmVTdHViSW5mbyYp
Owogdm9pZCByZXBhdGNoU2V0UHJpdmF0ZUJyYW5kKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2Nr
KiwgSlNPYmplY3QqLCBTdHJ1Y3R1cmUqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmVT
dHViSW5mbyYpOwogdm9pZCByZXBhdGNoSW5zdGFuY2VPZihKU0dsb2JhbE9iamVjdCosIENvZGVC
bG9jayosIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgcHJvdG90eXBlLCBTdHJ1Y3R1cmVTdHViSW5m
byYsIGJvb2wgd2FzRm91bmQpOwpAQCAtNjQsNyArNjksNyBAQCB2b2lkIGxpbmtQb2x5bW9ycGhp
Y0NhbGwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqLCBDYWxsTGlua0luZm8mLCBDYWxsVmFy
aWFudAogdm9pZCByZXNldEdldEJ5KENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgR2V0
QnlLaW5kKTsKIHZvaWQgcmVzZXRQdXRCeUlEKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZv
Jik7CiB2b2lkIHJlc2V0RGVsQnkoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBEZWxC
eUtpbmQpOwotdm9pZCByZXNldEluQnlJRChDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYp
Owordm9pZCByZXNldEluQnkoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBJbkJ5S2lu
ZCk7CiB2b2lkIHJlc2V0SW5zdGFuY2VPZihTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXNl
dENoZWNrUHJpdmF0ZUJyYW5kKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lk
IHJlc2V0U2V0UHJpdmF0ZUJyYW5kKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCBm
N2YzZGQxOWIzNGVlNGI3NjFlZjAzZjdjYjM3ZWE3ZjZkMzAxMzgyLi5lNTJjZGJkZWM3Y2Q4OTgw
MzQ4YmMwODY2NTI4MzIyMTY0MjE4Zjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTE0MjUsNiArMTQyNSwxNCBAQCBMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfaW5fYnlfaWQpCiAgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVh
bihhc09iamVjdChiYXNlVmFsdWUpLT5oYXNQcm9wZXJ0eShnbG9iYWxPYmplY3QsIGNvZGVCbG9j
ay0+aWRlbnRpZmllcihieXRlY29kZS5tX3Byb3BlcnR5KSkpKTsKIH0KIAorTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX2luX2J5X3ZhbCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAg
IGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BJbkJ5VmFsPigpOworICAgIGF1dG8mIG1ldGFkYXRh
ID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29s
ZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbkJ5VmFsKGdsb2JhbE9iamVjdCwgZ2V0T3BlcmFuZChj
YWxsRnJhbWUsIGJ5dGVjb2RlLm1fYmFzZSksIGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29k
ZS5tX3Byb3BlcnR5KSwgJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlKSkpOworfQorCiBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2dldHRlcl9ieV9pZCkKIHsKICAgICBMTElOVF9C
RUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaApp
bmRleCA5MmIyMDQzNjgxMGIwNTFiMzhhOTI3Yzc1NmJmN2Q5YzlhNmZhYTY1Li40M2M2Y2E4NDUz
MGU1ZjQ3YTdkZDdiNjk4ZjY0YTEzOGJjZTA0MmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaApAQCAtNzIsNiArNzIsNyBAQCBMTElOVF9TTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZCk7CiBMTElOVF9TTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZF93aXRoX3RoaXMpOwogTExJTlRfU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQpOwogTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9pbl9ieV9pZCk7CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX2luX2J5X3ZhbCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX2RlbF9ieV9pZCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dl
dF9ieV92YWwpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfcHJp
dmF0ZV9uYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbQppbmRleCA4YWEyMjYyZWEzM2NiMmQ0NzM3MzZmNDlhOGYzOTQzOWU3
YTMwMjEwLi5kZDRiM2FjMDI2MGUyNmUyY2M2Y2UxYmFkNTExYjBmZWIzYjU0MzcwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
CkBAIC0yMDEwLDcgKzIwMTAsNiBAQCBpZiBub3QgSlNWQUxVRTY0CiAgICAgc2xvd1BhdGhPcChn
ZXRfcHJvdG90eXBlX29mKQogZW5kCiAKLXNsb3dQYXRoT3AoaW5fYnlfdmFsKQogc2xvd1BhdGhP
cChoYXNfcHJpdmF0ZV9uYW1lKQogc2xvd1BhdGhPcChoYXNfcHJpdmF0ZV9icmFuZCkKIHNsb3dQ
YXRoT3AoaXNfY2FsbGFibGUpCkBAIC0yMDQ0LDYgKzIwNDMsNyBAQCBtYWNybyBsbGludFNsb3dQ
YXRoT3Aob3Bjb2RlTmFtZSkKIGVuZAogCiBsbGludFNsb3dQYXRoT3AoaW5fYnlfaWQpCitsbGlu
dFNsb3dQYXRoT3AoaW5fYnlfdmFsKQogbGxpbnRTbG93UGF0aE9wKGRlbF9ieV9pZCkKIGxsaW50
U2xvd1BhdGhPcChkZWxfYnlfdmFsKQogbGxpbnRTbG93UGF0aE9wKGluc3RhbmNlb2YpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRl
eCAyZWM2ZWM0YWUwMTFiMDkwOGU3Yjk4OTE1NDA5MGM1OTZlM2Q0MmNiLi42YTc4ZTkxNDA4OTdj
ZWE2YWE3N2IyZGE1YWQ2ODEzZTY5MTBmNWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTgzMCwxNCArODMwLDYgQEAgSlND
X0RFRklORV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9pc19jb25zdHJ1Y3RvcikKICAgICBS
RVRVUk4oanNCb29sZWFuKEdFVF9DKGJ5dGVjb2RlLm1fb3BlcmFuZCkuanNWYWx1ZSgpLmlzQ29u
c3RydWN0b3Iodm0pKSk7CiB9CiAKLUpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3Bh
dGhfaW5fYnlfdmFsKQotewotICAgIEJFR0lOKCk7Ci0gICAgYXV0byBieXRlY29kZSA9IHBjLT5h
czxPcEluQnlWYWw+KCk7Ci0gICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShj
b2RlQmxvY2spOwotICAgIFJFVFVSTihqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluQnlW
YWwoZ2xvYmFsT2JqZWN0LCBHRVRfQyhieXRlY29kZS5tX2Jhc2UpLmpzVmFsdWUoKSwgR0VUX0Mo
Ynl0ZWNvZGUubV9wcm9wZXJ0eSkuanNWYWx1ZSgpLCAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGUp
KSk7Ci19Ci0KIEpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfaGFzX3ByaXZh
dGVfbmFtZSkKIHsKICAgICBCRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCAzZGI4MTNjNDE1ZDE2MWFmMjQwNTc2OTI1YmNi
YzZhZWZmNzRlNTA2Li5jODMwOTgxYjAzOTM0MzIzYzQxNTMzNTFlODY2ZDZiMWUwYzZmMjNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApA
QCAtMjUxLDcgKzI1MSw2IEBAIEpTQ19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRo
X3R5cGVvZl9pc19vYmplY3QpOwogSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3Bh
dGhfdHlwZW9mX2lzX2Z1bmN0aW9uKTsKIEpTQ19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xv
d19wYXRoX2lzX2NhbGxhYmxlKTsKIEpTQ19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19w
YXRoX2lzX2NvbnN0cnVjdG9yKTsKLUpTQ19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19w
YXRoX2luX2J5X3ZhbCk7CiBKU0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9o
YXNfcHJpdmF0ZV9uYW1lKTsKIEpTQ19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRo
X2hhc19wcml2YXRlX2JyYW5kKTsKIEpTQ19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19w
YXRoX3N0cmNhdCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDcwNjEyNWEyMmQ0MmNkY2EyMzg2MmYyNTc4NTA2ZmNlOTJmZGEzMWEuLjlk
NDM2MDFmMzZmN2MxNDZjOGI5NzYzNDEyMmRjMGVlZTQ5OTk0YjUgMTAwNjQ0Ci0tLSBhL0pTVGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MjEtMDYtMDIgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAg
ICAgIFtKU0NdIEltcGxlbWVudCBKSVQgSUNzIGZvciBJbkJ5VmFsCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY1NjMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9pbi1ieS12
YWwtaW50MzIuanM6IEFkZGVkLgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9pbi1ieS12YWwt
c3RyaW5nLWluZGV4LmpzOiBBZGRlZC4KKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvaW4tYnkt
dmFsLXN5bWJvbC5qczogQWRkZWQuCisKIDIwMjEtMDUtMjIgIFJvc3MgS2lyc2xpbmcgIDxyb3Nz
LmtpcnNsaW5nQHNvbnkuY29tPgogCiAgICAgICAgIFN1cHBvcnQgRXJnb25vbWljIEJyYW5kIENo
ZWNrcyBwcm9wb3NhbCAoYCN4IGluIG9iamApCmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVu
Y2htYXJrcy9pbi1ieS12YWwtaW50MzIuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pbi1i
eS12YWwtaW50MzIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzg4M2I5ZWY2ZDBhMmI1NjY4YjdjMjE5MzEwMjFi
YjIxNDc2YjEyYQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2lu
LWJ5LXZhbC1pbnQzMi5qcwpAQCAtMCwwICsxLDE2IEBACisvL0Agc2tpcCBpZiAkbW9kZWwgPT0g
IkFwcGxlIFdhdGNoIFNlcmllcyAzIiAjIGFkZGVkIGJ5IG1hcmstanNjLXN0cmVzcy10ZXN0LnB5
CitmdW5jdGlvbiB0ZXN0KG9iamVjdCkKK3sKKyAgICBpZiAoMSBpbiBvYmplY3QpCisgICAgICAg
IHJldHVybiBvYmplY3RbMV07CisgICAgcmV0dXJuIDA7Cit9Citub0lubGluZSh0ZXN0KTsKKwor
dmFyIG8xID0gWzQyXTsKK3ZhciBvMiA9IFs0MiwgNDFdOworCitmb3IgKHZhciBpID0gMDsgaSA8
IDFlNjsgKytpKSB7CisgICAgdGVzdChvMSk7CisgICAgdGVzdChvMik7Cit9CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pbi1ieS12YWwtc3RyaW5nLWluZGV4LmpzIGIvSlNU
ZXN0cy9taWNyb2JlbmNobWFya3MvaW4tYnktdmFsLXN0cmluZy1pbmRleC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xODA2NzlhYWM5Y2NmZDQ0MWFiOWIyZDdhZTIxNDAwNjI5OGYzYTA0Ci0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaW4tYnktdmFsLXN0cmluZy1pbmRleC5qcwpA
QCAtMCwwICsxLDE2IEBACisvL0Agc2tpcCBpZiAkbW9kZWwgPT0gIkFwcGxlIFdhdGNoIFNlcmll
cyAzIiAjIGFkZGVkIGJ5IG1hcmstanNjLXN0cmVzcy10ZXN0LnB5CitmdW5jdGlvbiB0ZXN0KG9i
amVjdCkKK3sKKyAgICBpZiAoJzEnIGluIG9iamVjdCkKKyAgICAgICAgcmV0dXJuIG9iamVjdFsx
XTsKKyAgICByZXR1cm4gMDsKK30KK25vSW5saW5lKHRlc3QpOworCit2YXIgbzEgPSBbNDJdOwor
dmFyIG8yID0gWzQyLCA0MV07CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpIHsKKyAg
ICB0ZXN0KG8xKTsKKyAgICB0ZXN0KG8yKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9i
ZW5jaG1hcmtzL2luLWJ5LXZhbC1zeW1ib2wuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9p
bi1ieS12YWwtc3ltYm9sLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiNmEyYWRkMTU1YjJmZWUwMWNmMWIxMWU5
YzQ4NDMxYzYyZjcxNjQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJr
cy9pbi1ieS12YWwtc3ltYm9sLmpzCkBAIC0wLDAgKzEsMjMgQEAKKy8vQCBza2lwIGlmICRtb2Rl
bCA9PSAiQXBwbGUgV2F0Y2ggU2VyaWVzIDMiICMgYWRkZWQgYnkgbWFyay1qc2Mtc3RyZXNzLXRl
c3QucHkKK2NvbnN0IGNvY29hU3ltYm9sID0gU3ltYm9sKCdjb2NvYScpOworY29uc3QgY2FwcHVj
Y2lub1N5bWJvbCA9IFN5bWJvbCgnY2FwcHVjY2lubycpOworCitmdW5jdGlvbiB0ZXN0KG9iamVj
dCkKK3sKKyAgICBpZiAoY29jb2FTeW1ib2wgaW4gb2JqZWN0KQorICAgICAgICByZXR1cm4gb2Jq
ZWN0W2NvY29hU3ltYm9sXTsKKyAgICByZXR1cm4gMDsKK30KK25vSW5saW5lKHRlc3QpOworCit2
YXIgbzEgPSB7CisgICAgW2NvY29hU3ltYm9sXTogNDIKK307Cit2YXIgbzIgPSB7CisgICAgW2Nh
cHB1Y2Npbm9TeW1ib2xdOiA0MQorfTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkg
eworICAgIHRlc3QobzEpOworICAgIHRlc3QobzIpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430435</attachid>
            <date>2021-06-02 19:29:11 -0700</date>
            <delta_ts>2021-06-02 19:31:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>226563.diff</filename>
            <type>text/plain</type>
            <size>2477</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDUyMDAyZGQyOWUyZS4uZDJhMTQ4M2UwMWVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEwNSw4ICsxMDUsNiBAQAogICAgICAgICAqIGpp
dC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKICAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2luX2J5X3ZhbCk6CiAgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfdmFsKToK
LSAgICAgICAgKiBqaXQvSklUVGh1bmtzLmNwcDoKLSAgICAgICAgKEpTQzo6SklUVGh1bmtzOjpw
cmVpbml0aWFsaXplQ1RJVGh1bmtzKToKICAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CiAgICAg
ICAgIChKU0M6OnRyeUNhY2hlSW5CeSk6IFJlbmFtZWQgZnJvbSB0cnlDYWNoZUluQnlJRC4KICAg
ICAgICAgKEpTQzo6cmVwYXRjaEluQnkpOiBSZW5hbWVkIGZyb20gcmVwYXRjaEluQnlJRC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDIyYTVhMjBlMTJhLi4xNWNjMjIxYjEyMmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02Mjg0LDkgKzYyODQsOSBAQAogCQkJ
CUZFM0EwNkI5MUMxMTAzRDkwMDM5MEZERCAvKiBKSVRSaWdodFNoaWZ0R2VuZXJhdG9yLmggKi8s
CiAJCQkJNzIxMzFCRjMyNjU4N0VGMjAwNzExNENGIC8qIEpJVFNhZmVwb2ludC5jcHAgKi8sCiAJ
CQkJNzIxMzFCRjUyNjU4N0VGMjAwNzExNENGIC8qIEpJVFNhZmVwb2ludC5oICovLAorCQkJCTcy
MTMxQkY0MjY1ODdFRjIwMDcxMTRDRiAvKiBKSVRTY2FubmFibGUuaCAqLywKIAkJCQk1MkI1MTAw
QzI2NUVGQ0Q0MDA4OTcwRTcgLyogSklUU2l6ZVN0YXRpc3RpY3MuY3BwICovLAogCQkJCTUyQjUx
MDBCMjY1RUZDRDQwMDg5NzBFNyAvKiBKSVRTaXplU3RhdGlzdGljcy5oICovLAotCQkJCTcyMTMx
QkY0MjY1ODdFRjIwMDcxMTRDRiAvKiBKSVRTY2FubmFibGUuaCAqLywKIAkJCQkwRjc2NkQyNjE1
QThDQzFCMDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmUuY3BwICovLAogCQkJCTBGNzY2RDFDMTVB
NTAyOEQwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZS5oICovLAogCQkJCUZFNDIzODhGMUJFMThD
MTIwMDUxNDczNyAvKiBKSVRTdWJHZW5lcmF0b3IuY3BwICovLApAQCAtOTYxOSw3ICs5NjE5LDYg
QEAKIAkJCQkwRjJCREMyMTE1MUU4MDNCMDBDRDg5MTAgLyogREZHSW5zZXJ0aW9uU2V0LmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjMwMEI3QzE4QUIxQjE0MDBBNkQ3MkUgLyogREZHSW50ZWdlckNo
ZWNrQ29tYmluaW5nUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGODk4RjMyMUIyNzY4OUYw
MDgzQTMzQyAvKiBERkdJbnRlZ2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJNTJCNTEwMEQyNjVFRkNEQjAwODk3MEU3IC8qIEpJVFNpemVTdGF0aXN0aWNzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkM5N0YzRTE4MjAyMTE5MDAyQzlCMjYgLyogREZHSW52YWxp
ZGF0aW9uUG9pbnRJbmplY3Rpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMzQx
NzBENDBCRjAwQkI3MjJDIC8qIERGR0pJVENvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUM5
RENDMTMyOERGODIwMDJCMkFENyAvKiBERkdKSVRDb21waWxlci5oIGluIEhlYWRlcnMgKi8sCkBA
IC0xMDA3NSw2ICsxMDA3NCw3IEBACiAJCQkJRkUzQTA2QzAxQzExMDQxQTAwMzkwRkREIC8qIEpJ
VFJpZ2h0U2hpZnRHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTcyMTMxQkY5MjY1ODdF
RjIwMDcxMTRDRiAvKiBKSVRTYWZlcG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTcyMTMxQkY4
MjY1ODdFRjIwMDcxMTRDRiAvKiBKSVRTY2FubmFibGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTUy
QjUxMDBEMjY1RUZDREIwMDg5NzBFNyAvKiBKSVRTaXplU3RhdGlzdGljcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEY3NjZEMzExNUFBODExMjAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjc2NkQyQzE1QThDQzNBMDA4RjM2M0UgLyogSklUU3R1YlJvdXRp
bmVTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNUVGOTFGMTY4NzhGN0QwMDNFNUMyNSAvKiBK
SVRUaHVua3MuaCBpbiBIZWFkZXJzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430436</attachid>
            <date>2021-06-02 19:32:39 -0700</date>
            <delta_ts>2021-06-02 20:18:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>226563.diff</filename>
            <type>text/plain</type>
            <size>101797</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
MzQ5YTg1MmYzMzQxLi4xZTM4ZjVlM2ZiMzYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDYtMDIgIFJv
c3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIFtKU0NdIElt
cGxlbWVudCBKSVQgSUNzIGZvciBJbkJ5VmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY1NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9pbi1ieS12YWwtaW50MzIuanM6
IEFkZGVkLgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9pbi1ieS12YWwtc3RyaW5nLWluZGV4
LmpzOiBBZGRlZC4KKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvaW4tYnktdmFsLXN5bWJvbC5q
czogQWRkZWQuCisKIDIwMjEtMDUtMjggIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxl
LmNvbT4KIAogICAgICAgICBGaXggTGlrZWx5RGVuc2VVbnNpZ25lZEludGVnZXJTZXQ6OmNsZWFy
KCkKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2luLWJ5LXZhbC1pbnQzMi5q
cyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2luLWJ5LXZhbC1pbnQzMi5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmM4ODNiOWVmNmQwYQotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2luLWJ5LXZhbC1pbnQzMi5qcwpAQCAtMCww
ICsxLDE2IEBACisvL0Agc2tpcCBpZiAkbW9kZWwgPT0gIkFwcGxlIFdhdGNoIFNlcmllcyAzIiAj
IGFkZGVkIGJ5IG1hcmstanNjLXN0cmVzcy10ZXN0LnB5CitmdW5jdGlvbiB0ZXN0KG9iamVjdCkK
K3sKKyAgICBpZiAoMSBpbiBvYmplY3QpCisgICAgICAgIHJldHVybiBvYmplY3RbMV07CisgICAg
cmV0dXJuIDA7Cit9Citub0lubGluZSh0ZXN0KTsKKwordmFyIG8xID0gWzQyXTsKK3ZhciBvMiA9
IFs0MiwgNDFdOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKSB7CisgICAgdGVzdChv
MSk7CisgICAgdGVzdChvMik7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJr
cy9pbi1ieS12YWwtc3RyaW5nLWluZGV4LmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaW4t
YnktdmFsLXN0cmluZy1pbmRleC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjE4MDY3OWFhYzljYwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5j
aG1hcmtzL2luLWJ5LXZhbC1zdHJpbmctaW5kZXguanMKQEAgLTAsMCArMSwxNiBAQAorLy9AIHNr
aXAgaWYgJG1vZGVsID09ICJBcHBsZSBXYXRjaCBTZXJpZXMgMyIgIyBhZGRlZCBieSBtYXJrLWpz
Yy1zdHJlc3MtdGVzdC5weQorZnVuY3Rpb24gdGVzdChvYmplY3QpCit7CisgICAgaWYgKCcxJyBp
biBvYmplY3QpCisgICAgICAgIHJldHVybiBvYmplY3RbMV07CisgICAgcmV0dXJuIDA7Cit9Citu
b0lubGluZSh0ZXN0KTsKKwordmFyIG8xID0gWzQyXTsKK3ZhciBvMiA9IFs0MiwgNDFdOworCitm
b3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKSB7CisgICAgdGVzdChvMSk7CisgICAgdGVzdChv
Mik7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pbi1ieS12YWwtc3lt
Ym9sLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaW4tYnktdmFsLXN5bWJvbC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjhiNmEyYWRkMTU1YgotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2luLWJ5LXZhbC1zeW1ib2wuanMK
QEAgLTAsMCArMSwyMyBAQAorLy9AIHNraXAgaWYgJG1vZGVsID09ICJBcHBsZSBXYXRjaCBTZXJp
ZXMgMyIgIyBhZGRlZCBieSBtYXJrLWpzYy1zdHJlc3MtdGVzdC5weQorY29uc3QgY29jb2FTeW1i
b2wgPSBTeW1ib2woJ2NvY29hJyk7Citjb25zdCBjYXBwdWNjaW5vU3ltYm9sID0gU3ltYm9sKCdj
YXBwdWNjaW5vJyk7CisKK2Z1bmN0aW9uIHRlc3Qob2JqZWN0KQoreworICAgIGlmIChjb2NvYVN5
bWJvbCBpbiBvYmplY3QpCisgICAgICAgIHJldHVybiBvYmplY3RbY29jb2FTeW1ib2xdOworICAg
IHJldHVybiAwOworfQorbm9JbmxpbmUodGVzdCk7CisKK3ZhciBvMSA9IHsKKyAgICBbY29jb2FT
eW1ib2xdOiA0MgorfTsKK3ZhciBvMiA9IHsKKyAgICBbY2FwcHVjY2lub1N5bWJvbF06IDQxCit9
OworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKSB7CisgICAgdGVzdChvMSk7CisgICAg
dGVzdChvMik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBhN2JiYzRkZDdmYmYuLmQy
YTE0ODNlMDFlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIyIEBACisy
MDIxLTA2LTAyICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAg
ICAgICBbSlNDXSBJbXBsZW1lbnQgSklUIElDcyBmb3IgSW5CeVZhbAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NTYzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW50aWwgbm93LCBJbkJ5VmFsIGhhcyBo
YWQgZmV3IG9wdGltaXphdGlvbnMgaW1wbGVtZW50ZWQ6CisgICAgICAgIERGRyB3b3VsZCBhdHRl
bXB0IHRvIGNvbnZlcnQgc3RyaW5nIGluZGV4IGxvb2t1cHMgdG8gSW5CeUlkIGFuZCBpbnQzMiBs
b29rdXBzIHRvIEhhc0luZGV4ZWRQcm9wZXJ0eSwKKyAgICAgICAgYnV0IHRoZXJlIGhhcyBiZWVu
IG5vIGlubGluZSBjYWNoaW5nIG5vciBhbnkgc3BlY2lhbCBoYW5kbGluZyBmb3Igc3ltYm9sIGxv
b2t1cHMuCisKKyAgICAgICAgVGhpcyBoYXMgYmVjb21lIGEgbW9yZSB1cmdlbnQgcHJvYmxlbSBu
b3csIGFzIGAjeCBpbiBvYmpgIChpLmUuIEhhc1ByaXZhdGVOYW1lIC8gSGFzUHJpdmF0ZUJyYW5k
KQorICAgICAgICB3aWxsIG5lZWQgdG8gbWltaWMgSW5CeVZhbCdzIGlubGluZSBjYWNoaW5nIHN0
cmF0ZWd5IGluIG9yZGVyIHRvIGJlIGRlZW1lZCBwZXJmb3JtYW50IGVub3VnaCB0byBzaGlwLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggdGh1cyBpbXBsZW1lbnRzIGlubGluZSBjYWNoaW5nIGZvciBJ
bkJ5VmFsIGF0IGFsbCBKSVQgdGllcnMuCisgICAgICAgIFRoZSByZXN1bHQgaXMgYSBuaWdodC1h
bmQtZGF5IGRpZmZlcmVuY2UgZm9yIHN5bWJvbHMsIGEgbmljZSBib29zdCBmb3Igc3RyaW5nIGlu
ZGljZXMsIGFuZCBubyBjaGFuZ2UgZm9yIGludDMyczogCisKKyAgICAgICAgaW4tYnktdmFsLXN5
bWJvbCAgICAgICAgICAgICAgICAgIDIwMy41NTcyKy0yLjc2NDcgICAgIF4gICAgIDE5LjEwMzUr
LTAuNzQ5OCAgICAgICAgXiBkZWZpbml0ZWx5IDEwLjY1NTV4IGZhc3RlcgorICAgICAgICBpbi1i
eS12YWwtc3RyaW5nLWluZGV4ICAgICAgICAgICAgIDg3LjAzNjgrLTQ0Ljc3NjYgICAgICAgICAg
NDUuOTk3MSstMzIuMDAwNyAgICAgICAgIG1pZ2h0IGJlIDEuODkyMnggZmFzdGVyCisgICAgICAg
IGluLWJ5LXZhbC1pbnQzMiAgICAgICAgICAgICAgICAgICAxMTAuOTkwNCstMS43MTA5ICAgICA/
ICAgIDExMS4zNDMxKy0xLjc1NTggICAgICAgID8KKworICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogYnl0ZWNvZGUvSUNTdGF0dXNNYXAuaDoKKyAgICAgICAgKiBieXRlY29kZS9JbkJ5SWRW
YXJpYW50LmNwcDoKKyAgICAgICAgKEpTQzo6SW5CeUlkVmFyaWFudDo6SW5CeUlkVmFyaWFudCk6
CisgICAgICAgIChKU0M6OkluQnlJZFZhcmlhbnQ6OmF0dGVtcHRUb01lcmdlKToKKyAgICAgICAg
KEpTQzo6SW5CeUlkVmFyaWFudDo6ZHVtcEluQ29udGV4dCBjb25zdCk6CisgICAgICAgICogYnl0
ZWNvZGUvSW5CeUlkVmFyaWFudC5oOgorICAgICAgICAoSlNDOjpJbkJ5SWRWYXJpYW50OjppZGVu
dGlmaWVyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW5CeUlkVmFyaWFudDo6b3ZlcmxhcHMpOgor
ICAgICAgICAqIGJ5dGVjb2RlL0luQnlTdGF0dXMuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFN0YXR1cy5jcHAuCisgICAgICAgICogYnl0ZWNv
ZGUvSW5CeVN0YXR1cy5oOiBSZW5hbWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0luQnlJZFN0YXR1cy5oLgorICAgICAgICAqIGJ5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMu
Y3BwOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1c2VzOjphZGRJbkJ5U3RhdHVzKTogUmVu
YW1lZCBmcm9tIGFkZEluQnlJZFN0YXR1cy4KKyAgICAgICAgKiBieXRlY29kZS9SZWNvcmRlZFN0
YXR1c2VzLmg6CisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6cmVzZXQpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJJbmZvLmg6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZmlsdGVySUNTdGF0dXMpOgorICAg
ICAgICAqIGRmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBk
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVJbkJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpw
YXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlND
OjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcnNFeGl0U3RhdGUpOgorICAgICAgICAqIGRm
Zy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICog
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZp
eHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpHcmFwaDo6ZHVtcCk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGluayk6CisgICAgICAgICogZGZnL0RGR0pJVENv
bXBpbGVyLmg6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmFkZEluQnlWYWwpOgor
ICAgICAgICAqIGRmZy9ERkdNYXlFeGl0LmNwcDoKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgor
ICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0luQnlTdGF0dXMpOiBSZW5hbWVkIGZyb20gaGFz
SW5CeUlkU3RhdHVzLgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmluQnlTdGF0dXMpOiBSZW5h
bWVkIGZyb20gaW5CeUlkU3RhdHVzLgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAg
ICAgICAqIGRmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcDoKKyAgICAgICAg
KiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9E
RkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6Cisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluQnlWYWwpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHVmFy
YXJnc0ZvcndhcmRpbmdQaGFzZS5jcHA6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGls
ZUluQnkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlSW5C
eUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUluQnlW
YWwpOgorICAgICAgICAqIGppdC9JQ1N0YXRzLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6
OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpKSVQ6Omxpbmsp
OgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRJbkJ5VmFsR2VuZXJhdG9yOjpKSVRJbkJ5VmFs
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUSW5CeVZhbEdlbmVyYXRvcjo6Z2VuZXJhdGVG
YXN0UGF0aCk6CisgICAgICAgIChKU0M6OkpJVEluQnlWYWxHZW5lcmF0b3I6OmZpbmFsaXplKToK
KyAgICAgICAgKEpTQzo6SklUSW5CeUlkR2VuZXJhdG9yOjpKSVRJbkJ5SWRHZW5lcmF0b3IpOgor
ICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpK
SVREZWxCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEp1bXAgY29uc3QpOgorICAgICAgICAoSlNDOjpK
SVRJbkJ5VmFsR2VuZXJhdG9yOjpKSVRJbkJ5VmFsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6
SklUSW5CeVZhbEdlbmVyYXRvcjo6c2xvd1BhdGhKdW1wIGNvbnN0KToKKyAgICAgICAgKiBqaXQv
SklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSklUX09QRVJBVElP
Tik6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBqaXQvSklUUHJv
cGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5fYnlfdmFsKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pbl9ieV92YWwpOgorICAgICAgICAqIGpp
dC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2luX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfdmFsKToK
KyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OnRyeUNhY2hlSW5CeSk6
IFJlbmFtZWQgZnJvbSB0cnlDYWNoZUluQnlJRC4KKyAgICAgICAgKEpTQzo6cmVwYXRjaEluQnkp
OiBSZW5hbWVkIGZyb20gcmVwYXRjaEluQnlJRC4KKyAgICAgICAgKEpTQzo6cmVzZXRJbkJ5KTog
UmVuYW1lZCBmcm9tIHJlc2V0SW5CeUlELgorICAgICAgICAqIGppdC9SZXBhdGNoLmg6CisgICAg
ICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJ
TlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmg6Cisg
ICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
Lmg6CisKIDIwMjEtMDYtMDIgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4K
IAogICAgICAgICBCM01vdmVDb25zdGFudHMgc2hvdWxkIGZpbHRlciBkaXJlY3RseSBvbiBWYWx1
ZXMsIGFuZCBvbmx5IGNyZWF0ZSBWYWx1ZUtleXMgd2hlbiB1c2VmdWwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggNGM5OTZhY2JjZjAyLi4xNWNjMjIxYjEyMmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDAxLDcgKzE0MDEsOSBAQAogCQlBMUQ3OTJGRjFCNDM4
NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUQ3OTJGOTFCNDM4NjRCMDA0NTE2
RjUgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmggKi87IH07CiAJCUExRDc5MzAxMUI0
Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUQ3OTJGQjFCNDM4NjRCMDA0NTE2
RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oICovOyB9OwogCQlBMzIxQUE2RDI2MjYz
NTlCMDAyM0FEQTIgLyogSW50bFdvcmthcm91bmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzMjFBQTZDMjYyNjM1OUIwMDIzQURBMiAvKiBJbnRsV29y
a2Fyb3VuZC5oICovOyB9OworCQlBMzgyQzUzMTI2NjcxMTFEMDA0MkNEOTkgLyogSW5CeUlkVmFy
aWFudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMz
MDVGQjEyMEIwRjc4ODAwQ0VCODJCIC8qIEluQnlJZFZhcmlhbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMzhEMjUwRTI1ODAwRDQ0MDA0MkJG
REQgLyogSlNBcnJheUJ1ZmZlclByb3RvdHlwZUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzOEQyNTBEMjU4MDBENDMwMDQyQkZERCAvKiBK
U0FycmF5QnVmZmVyUHJvdG90eXBlSW5saW5lcy5oICovOyB9OworCQlBMzhENUJGQzI2NjZEM0RB
MDBBMTA5QTYgLyogSW5CeVN0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTM4RDVCRkEyNjY2RDNEQTAwQTEwOUE2IC8qIEluQnlTdGF0dXMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBM0VFODU0
MzI2MjUxNEIwMDBGQzlCOEQgLyogSW50bFdvcmthcm91bmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTM3NjE5NDAyNjI1MTI3QzAwQ0JDQkE5IC8q
IEludGxXb3JrYXJvdW5kLmNwcCAqLzsgfTsKIAkJQTNGRjlCQzcyMjM0NzQ5MTAwQjFBOUFCIC8q
IFlhcnJGbGFncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTNGRjlCQzUyMjM0NzQ2NjAwQjFBOUFCIC8qIFlhcnJGbGFncy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1MDNGQTFBMTg4RTBGQjAwMDEx
MEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNDE4OEUwRkFGMDAxMTBGMTQgLyogSmF2YVNjcmlw
dENhbGxGcmFtZS5oICovOyB9OwpAQCAtNDQzMCw2ICs0NDMyLDggQEAKIAkJQTMyMUFBNkMyNjI2
MzU5QjAwMjNBREEyIC8qIEludGxXb3JrYXJvdW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEludGxXb3JrYXJvdW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUEzNzYxOTQwMjYyNTEyN0MwMENCQ0JBOSAvKiBJbnRsV29ya2Fyb3VuZC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsV29ya2Fyb3VuZC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzOEQyNTBEMjU4MDBENDMwMDQyQkZERCAvKiBKU0FycmF5
QnVmZmVyUHJvdG90eXBlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU0FycmF5QnVmZmVyUHJvdG90eXBlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBMzhENUJGOTI2NjZEM0RBMDBBMTA5QTYgLyogSW5CeVN0YXR1cy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbkJ5U3RhdHVzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTM4RDVCRkEyNjY2RDNEQTAwQTEwOUE2IC8qIEluQnlTdGF0
dXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5CeVN0YXR1cy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBM0FGRjkyQjI0NUEzQ0Y5MDBDOUJBM0IgLyogSW50
bExvY2FsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsTG9jYWxlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzQUZGOTJDMjQ1QTNDRkEwMEM5QkEzQiAv
KiBJbnRsTG9jYWxlQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW50bExvY2FsZUNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUEzQUZGOTJEMjQ1QTNDRkEwMEM5QkEzQiAvKiBJbnRsTG9jYWxlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxMb2NhbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNTA1OCwxMCArNTA2Miw4IEBACiAJCUUzMjgyQkI5MUZFOTMwQTMwMEVE
QUY3MSAvKiBZYXJyRXJyb3JDb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IFlhcnJFcnJvckNvZGUuY3BwOyBwYXRoID0geWFyci9ZYXJyRXJyb3JDb2RlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMyODJCQkExRkU5MzBBNDAwRURBRjcxIC8q
IFlhcnJFcnJvckNvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWWFyckVy
cm9yQ29kZS5oOyBwYXRoID0geWFyci9ZYXJyRXJyb3JDb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzMkMzQzY4MjNFOTRDMUUwMEJDOTdDMCAvKiBVbmxpbmtlZENvZGVCbG9j
a0dlbmVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmxpbmtlZENv
ZGVCbG9ja0dlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMzMwNUZB
RjIwQjBGNzg3MDBDRUI4MkIgLyogSW5CeUlkU3RhdHVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEluQnlJZFN0YXR1cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzMwNUZCMDIwQjBGNzg3MDBDRUI4MkIgLyogSW5CeUlkVmFyaWFudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbkJ5SWRWYXJpYW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzMDVGQjEyMEIwRjc4ODAwQ0VCODJCIC8qIEluQnlJZFZh
cmlhbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5CeUlkVmFyaWFudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMzMwNUZCMjIwQjBGNzg4MDBDRUI4MkIg
LyogSW5CeUlkU3RhdHVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEluQnlJZFN0YXR1cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMzA5NURD
MjMyMTBBMTQwMEVCNzg1NiAvKiBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTMzNENCQjIyMUZEOTZBODAwMEVCMTc4IC8qIFJlZ0V4cEdsb2JhbERhdGEuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVnRXhwR2xvYmFsRGF0YS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMzRDQkIzMjFGRDk2QTkwMDBFQjE3
OCAvKiBSZWdFeHBHbG9iYWxEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlZ0V4cEdsb2JhbERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYyODIs
OSArNjI4NCw5IEBACiAJCQkJRkUzQTA2QjkxQzExMDNEOTAwMzkwRkREIC8qIEpJVFJpZ2h0U2hp
ZnRHZW5lcmF0b3IuaCAqLywKIAkJCQk3MjEzMUJGMzI2NTg3RUYyMDA3MTE0Q0YgLyogSklUU2Fm
ZXBvaW50LmNwcCAqLywKIAkJCQk3MjEzMUJGNTI2NTg3RUYyMDA3MTE0Q0YgLyogSklUU2FmZXBv
aW50LmggKi8sCisJCQkJNzIxMzFCRjQyNjU4N0VGMjAwNzExNENGIC8qIEpJVFNjYW5uYWJsZS5o
ICovLAogCQkJCTUyQjUxMDBDMjY1RUZDRDQwMDg5NzBFNyAvKiBKSVRTaXplU3RhdGlzdGljcy5j
cHAgKi8sCiAJCQkJNTJCNTEwMEIyNjVFRkNENDAwODk3MEU3IC8qIEpJVFNpemVTdGF0aXN0aWNz
LmggKi8sCi0JCQkJNzIxMzFCRjQyNjU4N0VGMjAwNzExNENGIC8qIEpJVFNjYW5uYWJsZS5oICov
LAogCQkJCTBGNzY2RDI2MTVBOENDMUIwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZS5jcHAgKi8s
CiAJCQkJMEY3NjZEMUMxNUE1MDI4RDAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lLmggKi8sCiAJ
CQkJRkU0MjM4OEYxQkUxOEMxMjAwNTE0NzM3IC8qIEpJVFN1YkdlbmVyYXRvci5jcHAgKi8sCkBA
IC04NTc3LDEwICs4NTc5LDEwIEBACiAJCQkJMEY0NEE3QUYyMEJGNjg1RjAwMjJCMTcxIC8qIElD
U3RhdHVzTWFwLmggKi8sCiAJCQkJMEY0NEE3QjUyMEMwQkUzRjAwMjJCMTcxIC8qIElDU3RhdHVz
VXRpbHMuY3BwICovLAogCQkJCTBGQjM5OUJEMjBBRjZCMzgwMDE3RTIxMyAvKiBJQ1N0YXR1c1V0
aWxzLmggKi8sCi0JCQkJRTMzMDVGQjIyMEIwRjc4ODAwQ0VCODJCIC8qIEluQnlJZFN0YXR1cy5j
cHAgKi8sCi0JCQkJRTMzMDVGQUYyMEIwRjc4NzAwQ0VCODJCIC8qIEluQnlJZFN0YXR1cy5oICov
LAogCQkJCUUzMzA1RkIwMjBCMEY3ODcwMENFQjgyQiAvKiBJbkJ5SWRWYXJpYW50LmNwcCAqLywK
IAkJCQlFMzMwNUZCMTIwQjBGNzg4MDBDRUI4MkIgLyogSW5CeUlkVmFyaWFudC5oICovLAorCQkJ
CUEzOEQ1QkY5MjY2NkQzREEwMEExMDlBNiAvKiBJbkJ5U3RhdHVzLmNwcCAqLywKKwkJCQlBMzhE
NUJGQTI2NjZEM0RBMDBBMTA5QTYgLyogSW5CeVN0YXR1cy5oICovLAogCQkJCTc5MDVCQjY2MUQx
MjA1MEUwMDE5RkU1NyAvKiBJbmxpbmVBY2Nlc3MuY3BwICovLAogCQkJCTc5MDVCQjY3MUQxMjA1
MEUwMDE5RkU1NyAvKiBJbmxpbmVBY2Nlc3MuaCAqLywKIAkJCQkxNDhBN0JFRDFCODI5NzVBMDAy
RDkxNTcgLyogSW5saW5lQ2FsbEZyYW1lLmNwcCAqLywKQEAgLTk2MTcsNyArOTYxOSw2IEBACiAJ
CQkJMEYyQkRDMjExNTFFODAzQjAwQ0Q4OTEwIC8qIERGR0luc2VydGlvblNldC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYzMDBCN0MxOEFCMUIxNDAwQTZENzJFIC8qIERGR0ludGVnZXJDaGVja0Nv
bWJpbmluZ1BoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjg5OEYzMjFCMjc2ODlGMDA4M0Ez
M0MgLyogREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAot
CQkJCTUyQjUxMDBEMjY1RUZDREIwMDg5NzBFNyAvKiBKSVRTaXplU3RhdGlzdGljcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZDOTdGM0UxODIwMjExOTAwMkM5QjI2IC8qIERGR0ludmFsaWRhdGlv
blBvaW50SW5qZWN0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTM0MTcwRDQw
QkYwMEJCNzIyQyAvKiBERkdKSVRDb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkVDOURDQzEz
MjhERjgyMDAyQjJBRDcgLyogREZHSklUQ29tcGlsZXIuaCBpbiBIZWFkZXJzICovLApAQCAtOTky
MCw2ICs5OTIxLDggQEAKIAkJCQlCQzE4QzQwRjBFMTZGNUNEMDBCMzQ0NjAgLyogSWRlbnRpZmll
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODYwNkRERUExOERBNDRBQjAwQTM4M0QwIC8qIElkZW50
aWZpZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUZEMDA3NjE4OUIwMzhDMDA2MzMy
MzEgLyogSWRlbnRpZmllcnNGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKKwkJCQlBMzgyQzUzMTI2
NjcxMTFEMDA0MkNEOTkgLyogSW5CeUlkVmFyaWFudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTM4
RDVCRkMyNjY2RDNEQTAwQTEwOUE2IC8qIEluQnlTdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUMyNUY4QkNFMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQjdGMzk5MTVFRDhFNDYwMEYxNjdCMiAvKiBJbmRleGluZ0hlYWRlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOUExNUVEOEU0NjAwRjE2N0IyIC8qIEluZGV4aW5n
SGVhZGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDA3MSw2ICsxMDA3NCw3IEBACiAJ
CQkJRkUzQTA2QzAxQzExMDQxQTAwMzkwRkREIC8qIEpJVFJpZ2h0U2hpZnRHZW5lcmF0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCTcyMTMxQkY5MjY1ODdFRjIwMDcxMTRDRiAvKiBKSVRTYWZlcG9p
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTcyMTMxQkY4MjY1ODdFRjIwMDcxMTRDRiAvKiBKSVRT
Y2FubmFibGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTUyQjUxMDBEMjY1RUZDREIwMDg5NzBFNyAv
KiBKSVRTaXplU3RhdGlzdGljcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3NjZEMzExNUFBODEx
MjAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjc2NkQy
QzE1QThDQzNBMDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVTZXQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGNUVGOTFGMTY4NzhGN0QwMDNFNUMyNSAvKiBKSVRUaHVua3MuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IDBjMjg2MDA0ZmViMS4uODg0YjhmOWU4
YWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0yMzksNyArMjM5LDcgQEAgYnl0
ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCiBieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNl
LmNwcAogYnl0ZWNvZGUvSUNTdGF0dXNNYXAuY3BwCiBieXRlY29kZS9JQ1N0YXR1c1V0aWxzLmNw
cAotYnl0ZWNvZGUvSW5CeUlkU3RhdHVzLmNwcAorYnl0ZWNvZGUvSW5CeVN0YXR1cy5jcHAKIGJ5
dGVjb2RlL0luQnlJZFZhcmlhbnQuY3BwCiBieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwCiBieXRl
Y29kZS9JbmxpbmVDYWxsRnJhbWUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSUNTdGF0dXNNYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9JQ1N0YXR1c01hcC5oCmluZGV4IGYwMzE5MDExNWEzYi4uZmEwYTZkNTIzYjdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSUNTdGF0dXNNYXAuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSUNTdGF0dXNNYXAuaApAQCAtMzUsNyArMzUs
NyBAQCBjbGFzcyBDYWxsTGlua0luZm87CiBjbGFzcyBDYWxsTGlua1N0YXR1czsKIGNsYXNzIENv
ZGVCbG9jazsKIGNsYXNzIEdldEJ5U3RhdHVzOwotY2xhc3MgSW5CeUlkU3RhdHVzOworY2xhc3Mg
SW5CeVN0YXR1czsKIGNsYXNzIFB1dEJ5SWRTdGF0dXM7CiBjbGFzcyBEZWxldGVCeVN0YXR1czsK
IGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvOwpAQCAtNDcsNyArNDcsNyBAQCBzdHJ1Y3QgSUNTdGF0
dXMgewogICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvIHsgbnVsbHB0ciB9OwogICAgIENhbGxMaW5r
U3RhdHVzKiBjYWxsU3RhdHVzIHsgbnVsbHB0ciB9OwogICAgIEdldEJ5U3RhdHVzKiBnZXRTdGF0
dXMgeyBudWxscHRyIH07Ci0gICAgSW5CeUlkU3RhdHVzKiBpblN0YXR1cyB7IG51bGxwdHIgfTsK
KyAgICBJbkJ5U3RhdHVzKiBpblN0YXR1cyB7IG51bGxwdHIgfTsKICAgICBQdXRCeUlkU3RhdHVz
KiBwdXRTdGF0dXMgeyBudWxscHRyIH07CiAgICAgRGVsZXRlQnlTdGF0dXMqIGRlbGV0ZVN0YXR1
cyB7IG51bGxwdHIgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSW5CeUlkVmFyaWFudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SW5CeUlkVmFyaWFudC5jcHAKaW5kZXggZjRjMmI1ODZiMTg4Li5mNDk0YmZiZGI0YWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRWYXJpYW50LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeUlkVmFyaWFudC5jcHAKQEAg
LTI3LDEyICsyNywxNSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkluQnlJZFZh
cmlhbnQuaCIKIAorI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmgiCisKIG5h
bWVzcGFjZSBKU0MgewogCi1JbkJ5SWRWYXJpYW50OjpJbkJ5SWRWYXJpYW50KGNvbnN0IFN0cnVj
dHVyZVNldCYgc3RydWN0dXJlU2V0LCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIGNvbnN0IE9iamVj
dFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQpCitJbkJ5SWRWYXJpYW50OjpJbkJ5
SWRWYXJpYW50KENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RydWN0dXJl
U2V0JiBzdHJ1Y3R1cmVTZXQsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgY29uc3QgT2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCkKICAgICA6IG1fc3RydWN0dXJlU2V0KHN0
cnVjdHVyZVNldCkKICAgICAsIG1fY29uZGl0aW9uU2V0KGNvbmRpdGlvblNldCkKICAgICAsIG1f
b2Zmc2V0KG9mZnNldCkKKyAgICAsIG1faWRlbnRpZmllcihXVEZNb3ZlKGlkZW50aWZpZXIpKQog
ewogICAgIGlmICghc3RydWN0dXJlU2V0LnNpemUoKSkgewogICAgICAgICBBU1NFUlQob2Zmc2V0
ID09IGludmFsaWRPZmZzZXQpOwpAQCAtNDIsNiArNDUsMTIgQEAgSW5CeUlkVmFyaWFudDo6SW5C
eUlkVmFyaWFudChjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCwgUHJvcGVydHlPZmZz
ZXQgb2YKIAogYm9vbCBJbkJ5SWRWYXJpYW50OjphdHRlbXB0VG9NZXJnZShjb25zdCBJbkJ5SWRW
YXJpYW50JiBvdGhlcikKIHsKKyAgICBpZiAoISFtX2lkZW50aWZpZXIgIT0gISFvdGhlci5tX2lk
ZW50aWZpZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChtX2lkZW50aWZpZXIg
JiYgKG1faWRlbnRpZmllciAhPSBvdGhlci5tX2lkZW50aWZpZXIpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKICAgICBpZiAobV9vZmZzZXQgIT0gb3RoZXIubV9vZmZzZXQpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIApAQCAtODksMTMgKzk4LDEzIEBAIHZvaWQgSW5CeUlkVmFyaWFudDo6ZHVt
cChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogCiB2b2lkIEluQnlJZFZhcmlhbnQ6OmR1bXBJbkNv
bnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqIGNvbnRleHQpIGNvbnN0CiB7Cisg
ICAgb3V0LnByaW50KCI8aWQ9JyIsIG1faWRlbnRpZmllciwgIicsICIpOwogICAgIGlmICghaXNT
ZXQoKSkgewotICAgICAgICBvdXQucHJpbnQoIjxlbXB0eT4iKTsKKyAgICAgICAgb3V0LnByaW50
KCJlbXB0eT4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG91dC5wcmludCgKLSAg
ICAgICAgIjwiLCBpbkNvbnRleHQoc3RydWN0dXJlU2V0KCksIGNvbnRleHQpLCAiLCAiLCBpbkNv
bnRleHQobV9jb25kaXRpb25TZXQsIGNvbnRleHQpKTsKKyAgICBvdXQucHJpbnQoaW5Db250ZXh0
KHN0cnVjdHVyZVNldCgpLCBjb250ZXh0KSwgIiwgIiwgaW5Db250ZXh0KG1fY29uZGl0aW9uU2V0
LCBjb250ZXh0KSk7CiAgICAgb3V0LnByaW50KCIsIG9mZnNldCA9ICIsIG9mZnNldCgpKTsKICAg
ICBvdXQucHJpbnQoIj4iKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9JbkJ5SWRWYXJpYW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SW5CeUlkVmFyaWFudC5oCmluZGV4IDc4MmE1ZGE4ODEwNi4uN2Q3MzIzOGZiZTUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeUlkVmFyaWFudC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRWYXJpYW50LmgKQEAgLTI2LDYg
KzI2LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaCIKICNpbmNsdWRlICJQ
cm9wZXJ0eU9mZnNldC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVNldC5oIgpAQCAtMzUsMTMgKzM2
LDEzIEBAIG5hbWVzcGFjZSBET01KSVQgewogY2xhc3MgR2V0dGVyU2V0dGVyOwogfQogCi1jbGFz
cyBJbkJ5SWRTdGF0dXM7CitjbGFzcyBJbkJ5U3RhdHVzOwogc3RydWN0IER1bXBDb250ZXh0Owog
CiBjbGFzcyBJbkJ5SWRWYXJpYW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKLSAgICBJbkJ5SWRWYXJpYW50KGNvbnN0IFN0cnVjdHVyZVNldCYgPSBTdHJ1Y3R1cmVT
ZXQoKSwgUHJvcGVydHlPZmZzZXQgPSBpbnZhbGlkT2Zmc2V0LCBjb25zdCBPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvblNldCYgPSBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCgpKTsKKyAgICBJbkJ5
SWRWYXJpYW50KENhY2hlYWJsZUlkZW50aWZpZXIsIGNvbnN0IFN0cnVjdHVyZVNldCYgPSBTdHJ1
Y3R1cmVTZXQoKSwgUHJvcGVydHlPZmZzZXQgPSBpbnZhbGlkT2Zmc2V0LCBjb25zdCBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvblNldCYgPSBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCgpKTsKIAog
ICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiAhIW1fc3RydWN0dXJlU2V0LnNpemUoKTsg
fQogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBpc1NldCgpOyB9
CkBAIC02MywxNyArNjQsMjYgQEAgcHVibGljOgogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYp
IGNvbnN0OwogICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYsIER1bXBDb250ZXh0
KikgY29uc3Q7CiAKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKwogICAgIGJvb2wgb3ZlcmxhcHMoY29uc3QgSW5CeUlk
VmFyaWFudCYgb3RoZXIpCiAgICAgeworICAgICAgICBpZiAoISFtX2lkZW50aWZpZXIgIT0gISFv
dGhlci5tX2lkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYg
KG1faWRlbnRpZmllcikgeworICAgICAgICAgICAgaWYgKG1faWRlbnRpZmllciAhPSBvdGhlci5t
X2lkZW50aWZpZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CiAg
ICAgICAgIHJldHVybiBzdHJ1Y3R1cmVTZXQoKS5vdmVybGFwcyhvdGhlci5zdHJ1Y3R1cmVTZXQo
KSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBJbkJ5SWRTdGF0dXM7Cisg
ICAgZnJpZW5kIGNsYXNzIEluQnlTdGF0dXM7CiAKICAgICBTdHJ1Y3R1cmVTZXQgbV9zdHJ1Y3R1
cmVTZXQ7CiAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgbV9jb25kaXRpb25TZXQ7CiAg
ICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CisgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBtX2lk
ZW50aWZpZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRTdGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0luQnlTdGF0dXMuY3BwCnNpbWlsYXJpdHkgaW5kZXggNjclCnJlbmFt
ZSBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRTdGF0dXMuY3BwCnJl
bmFtZSB0byBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeVN0YXR1cy5jcHAKaW5k
ZXggNDkzOGE2M2MxYjJhLi45OTIxOWEwZjIxZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9JbkJ5U3RhdHVzLmNwcApAQCAtMjUsOCArMjUsOSBAQAogICovCiAKICNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJbkJ5SWRTdGF0dXMuaCIKKyNpbmNsdWRlICJJ
bkJ5U3RhdHVzLmgiCiAKKyNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oIgog
I2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvbXBsZXhHZXRTdGF0dXMuaCIKICNp
bmNsdWRlICJJQ1N0YXR1c1V0aWxzLmgiCkBAIC0zNiw0NiArMzcsNDUgQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKLWJvb2wgSW5CeUlkU3RhdHVzOjphcHBlbmRWYXJpYW50KGNvbnN0IEluQnlJZFZh
cmlhbnQmIHZhcmlhbnQpCitib29sIEluQnlTdGF0dXM6OmFwcGVuZFZhcmlhbnQoY29uc3QgSW5C
eUlkVmFyaWFudCYgdmFyaWFudCkKIHsKICAgICByZXR1cm4gYXBwZW5kSUNTdGF0dXNWYXJpYW50
KG1fdmFyaWFudHMsIHZhcmlhbnQpOwogfQogCi12b2lkIEluQnlJZFN0YXR1czo6c2hyaW5rVG9G
aXQoKQordm9pZCBJbkJ5U3RhdHVzOjpzaHJpbmtUb0ZpdCgpCiB7CiAgICAgbV92YXJpYW50cy5z
aHJpbmtUb0ZpdCgpOwogfQogCiAjaWYgRU5BQkxFKEpJVCkKLUluQnlJZFN0YXR1cyBJbkJ5SWRT
dGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBJQ1N0YXR1c01hcCYg
bWFwLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQs
IEV4aXRGbGFnIGRpZEV4aXQpCitJbkJ5U3RhdHVzIEluQnlTdGF0dXM6OmNvbXB1dGVGb3IoQ29k
ZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBJQ1N0YXR1c01hcCYgbWFwLCBCeXRlY29kZUluZGV4IGJ5
dGVjb2RlSW5kZXgsIEV4aXRGbGFnIGRpZEV4aXQpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2Vy
IGxvY2tlcihwcm9maWxlZEJsb2NrLT5tX2xvY2spOwogCi0gICAgSW5CeUlkU3RhdHVzIHJlc3Vs
dDsKKyAgICBJbkJ5U3RhdHVzIHJlc3VsdDsKIAogI2lmIEVOQUJMRShERkdfSklUKQotICAgIHJl
c3VsdCA9IGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKGxvY2tlciwg
cHJvZmlsZWRCbG9jay0+dm0oKSwgbWFwLmdldChDb2RlT3JpZ2luKGJ5dGVjb2RlSW5kZXgpKS5z
dHViSW5mbywgdWlkKTsKKyAgICByZXN1bHQgPSBjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhp
dFNpdGVGZWVkYmFjayhsb2NrZXIsIHByb2ZpbGVkQmxvY2stPnZtKCksIG1hcC5nZXQoQ29kZU9y
aWdpbihieXRlY29kZUluZGV4KSkuc3R1YkluZm8pOwogCiAgICAgaWYgKCFyZXN1bHQudGFrZXNT
bG93UGF0aCgpICYmIGRpZEV4aXQpCi0gICAgICAgIHJldHVybiBJbkJ5SWRTdGF0dXMoVGFrZXNT
bG93UGF0aCk7CisgICAgICAgIHJldHVybiBJbkJ5U3RhdHVzKFRha2VzU2xvd1BhdGgpOwogI2Vs
c2UKICAgICBVTlVTRURfUEFSQU0obWFwKTsKICAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRl
eCk7Ci0gICAgVU5VU0VEX1BBUkFNKHVpZCk7CiAgICAgVU5VU0VEX1BBUkFNKGRpZEV4aXQpOwog
I2VuZGlmCiAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1JbkJ5SWRTdGF0dXMgSW5CeUlkU3Rh
dHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgSUNTdGF0dXNNYXAmIG1h
cCwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQor
SW5CeVN0YXR1cyBJbkJ5U3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9j
aywgSUNTdGF0dXNNYXAmIG1hcCwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4KQogewotICAg
IHJldHVybiBjb21wdXRlRm9yKHByb2ZpbGVkQmxvY2ssIG1hcCwgYnl0ZWNvZGVJbmRleCwgdWlk
LCBoYXNCYWRDYWNoZUV4aXRTaXRlKHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpKTsKKyAg
ICByZXR1cm4gY29tcHV0ZUZvcihwcm9maWxlZEJsb2NrLCBtYXAsIGJ5dGVjb2RlSW5kZXgsIGhh
c0JhZENhY2hlRXhpdFNpdGUocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCkpOwogfQogCi1J
bkJ5SWRTdGF0dXMgSW5CeUlkU3RhdHVzOjpjb21wdXRlRm9yKAorSW5CeVN0YXR1cyBJbkJ5U3Rh
dHVzOjpjb21wdXRlRm9yKAogICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgSUNTdGF0dXNN
YXAmIGJhc2VsaW5lTWFwLAotICAgIElDU3RhdHVzQ29udGV4dFN0YWNrJiBjb250ZXh0U3RhY2ss
IENvZGVPcmlnaW4gY29kZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKKyAgICBJQ1N0
YXR1c0NvbnRleHRTdGFjayYgY29udGV4dFN0YWNrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCiB7
CiAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gY29kZU9yaWdpbi5ieXRlY29kZUlu
ZGV4KCk7CiAgICAgRXhpdEZsYWcgZGlkRXhpdCA9IGhhc0JhZENhY2hlRXhpdFNpdGUocHJvZmls
ZWRCbG9jaywgYnl0ZWNvZGVJbmRleCk7CkBAIC04MywyNCArODMsMjQgQEAgSW5CeUlkU3RhdHVz
IEluQnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICBmb3IgKElDU3RhdHVzQ29udGV4dCogY29u
dGV4dCA6IGNvbnRleHRTdGFjaykgewogICAgICAgICBJQ1N0YXR1cyBzdGF0dXMgPSBjb250ZXh0
LT5nZXQoY29kZU9yaWdpbik7CiAgICAgICAgIAotICAgICAgICBhdXRvIGJsZXNzID0gWyZdIChj
b25zdCBJbkJ5SWRTdGF0dXMmIHJlc3VsdCkgLT4gSW5CeUlkU3RhdHVzIHsKKyAgICAgICAgYXV0
byBibGVzcyA9IFsmXSAoY29uc3QgSW5CeVN0YXR1cyYgcmVzdWx0KSAtPiBJbkJ5U3RhdHVzIHsK
ICAgICAgICAgICAgIGlmICghY29udGV4dC0+aXNJbmxpbmVkKGNvZGVPcmlnaW4pKSB7Ci0gICAg
ICAgICAgICAgICAgSW5CeUlkU3RhdHVzIGJhc2VsaW5lUmVzdWx0ID0gY29tcHV0ZUZvcigKLSAg
ICAgICAgICAgICAgICAgICAgcHJvZmlsZWRCbG9jaywgYmFzZWxpbmVNYXAsIGJ5dGVjb2RlSW5k
ZXgsIHVpZCwgZGlkRXhpdCk7CisgICAgICAgICAgICAgICAgSW5CeVN0YXR1cyBiYXNlbGluZVJl
c3VsdCA9IGNvbXB1dGVGb3IoCisgICAgICAgICAgICAgICAgICAgIHByb2ZpbGVkQmxvY2ssIGJh
c2VsaW5lTWFwLCBieXRlY29kZUluZGV4LCBkaWRFeGl0KTsKICAgICAgICAgICAgICAgICBiYXNl
bGluZVJlc3VsdC5tZXJnZShyZXN1bHQpOwogICAgICAgICAgICAgICAgIHJldHVybiBiYXNlbGlu
ZVJlc3VsdDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChkaWRFeGl0LmlzU2V0KEV4
aXRGcm9tSW5saW5lZCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEluQnlJZFN0YXR1cyhUYWtl
c1Nsb3dQYXRoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSW5CeVN0YXR1cyhUYWtlc1Nsb3dQ
YXRoKTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH07CiAgICAgICAgIAog
I2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICBpZiAoc3RhdHVzLnN0dWJJbmZvKSB7Ci0gICAg
ICAgICAgICBJbkJ5SWRTdGF0dXMgcmVzdWx0OworICAgICAgICAgICAgSW5CeVN0YXR1cyByZXN1
bHQ7CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxv
Y2tlcihjb250ZXh0LT5vcHRpbWl6ZWRDb2RlQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAgICAg
ICAgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2sobG9j
a2VyLCBwcm9maWxlZEJsb2NrLT52bSgpLCBzdGF0dXMuc3R1YkluZm8sIHVpZCk7CisgICAgICAg
ICAgICAgICAgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJh
Y2sobG9ja2VyLCBwcm9maWxlZEJsb2NrLT52bSgpLCBzdGF0dXMuc3R1YkluZm8pOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgaWYgKHJlc3VsdC5pc1NldCgpKQogICAgICAgICAgICAgICAg
IHJldHVybiBibGVzcyhyZXN1bHQpOwpAQCAtMTExLDQ0ICsxMTEsNDcgQEAgSW5CeUlkU3RhdHVz
IEluQnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgIHJldHVybiBibGVzcygqc3Rh
dHVzLmluU3RhdHVzKTsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIGNvbXB1dGVGb3IocHJvZmls
ZWRCbG9jaywgYmFzZWxpbmVNYXAsIGJ5dGVjb2RlSW5kZXgsIHVpZCwgZGlkRXhpdCk7CisgICAg
cmV0dXJuIGNvbXB1dGVGb3IocHJvZmlsZWRCbG9jaywgYmFzZWxpbmVNYXAsIGJ5dGVjb2RlSW5k
ZXgsIGRpZEV4aXQpOwogfQogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAKICNpZiBFTkFCTEUoREZH
X0pJVCkKLUluQnlJZFN0YXR1cyBJbkJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mbyhjb25z
dCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgVW5pcXVl
ZFN0cmluZ0ltcGwqIHVpZCkKK0luQnlTdGF0dXMgSW5CeVN0YXR1czo6Y29tcHV0ZUZvclN0dWJJ
bmZvKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBDb2RlQmxvY2sqIHByb2ZpbGVk
QmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgQ29kZU9yaWdpbiBjb2RlT3JpZ2lu
KQogewotICAgIEluQnlJZFN0YXR1cyByZXN1bHQgPSBJbkJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JT
dHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKGxvY2tlciwgcHJvZmlsZWRCbG9jay0+dm0o
KSwgc3R1YkluZm8sIHVpZCk7CisgICAgSW5CeVN0YXR1cyByZXN1bHQgPSBJbkJ5U3RhdHVzOjpj
b21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjayhsb2NrZXIsIHByb2ZpbGVk
QmxvY2stPnZtKCksIHN0dWJJbmZvKTsKIAogICAgIGlmICghcmVzdWx0LnRha2VzU2xvd1BhdGgo
KSAmJiBoYXNCYWRDYWNoZUV4aXRTaXRlKHByb2ZpbGVkQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNv
ZGVJbmRleCgpKSkKLSAgICAgICAgcmV0dXJuIEluQnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsK
KyAgICAgICAgcmV0dXJuIEluQnlTdGF0dXMoVGFrZXNTbG93UGF0aCk7CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAotSW5CeUlkU3RhdHVzIEluQnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZv
V2l0aG91dEV4aXRTaXRlRmVlZGJhY2soY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgVk0mIHZt
LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCitJ
bkJ5U3RhdHVzIEluQnlTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZl
ZWRiYWNrKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFZNJiB2bSwgU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvKQogewogICAgIFN0dWJJbmZvU3VtbWFyeSBzdW1tYXJ5ID0gU3RydWN0dXJl
U3R1YkluZm86OnN1bW1hcnkodm0sIHN0dWJJbmZvKTsKICAgICBpZiAoIWlzSW5saW5lYWJsZShz
dW1tYXJ5KSkKLSAgICAgICAgcmV0dXJuIEluQnlJZFN0YXR1cyhzdW1tYXJ5KTsKKyAgICAgICAg
cmV0dXJuIEluQnlTdGF0dXMoc3VtbWFyeSk7CiAgICAgCiAgICAgLy8gRmluYWxseSBmaWd1cmUg
b3V0IGlmIHdlIGNhbiBkZXJpdmUgYW4gYWNjZXNzIHN0cmF0ZWd5LgotICAgIEluQnlJZFN0YXR1
cyByZXN1bHQ7CisgICAgSW5CeVN0YXR1cyByZXN1bHQ7CiAgICAgcmVzdWx0Lm1fc3RhdGUgPSBT
aW1wbGU7CiAgICAgc3dpdGNoIChzdHViSW5mby0+Y2FjaGVUeXBlKCkpIHsKICAgICBjYXNlIENh
Y2hlVHlwZTo6VW5zZXQ6Ci0gICAgICAgIHJldHVybiBJbkJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlv
bik7CisgICAgICAgIHJldHVybiBJbkJ5U3RhdHVzKE5vSW5mb3JtYXRpb24pOwogCiAgICAgY2Fz
ZSBDYWNoZVR5cGU6OkluQnlJZFNlbGY6IHsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBzdHViSW5mby0+dS5ieUlkU2VsZi5iYXNlT2JqZWN0U3RydWN0dXJlLmdldCgpOwogICAgICAg
ICBpZiAoc3RydWN0dXJlLT50YWtlc1Nsb3dQYXRoSW5ERkdGb3JJbXB1cmVQcm9wZXJ0eSgpKQot
ICAgICAgICAgICAgcmV0dXJuIEluQnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsKKyAgICAgICAg
ICAgIHJldHVybiBJbkJ5U3RhdHVzKFRha2VzU2xvd1BhdGgpOworICAgICAgICBDYWNoZWFibGVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIgPSBzdHViSW5mby0+aWRlbnRpZmllcigpOworICAgICAgICBV
bmlxdWVkU3RyaW5nSW1wbCogdWlkID0gaWRlbnRpZmllci51aWQoKTsKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQodWlkKTsKKyAgICAgICAgSW5CeUlkVmFyaWFudCB2YXJpYW50KFdURk1vdmUoaWRl
bnRpZmllcikpOwogICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwotICAgICAgICBJbkJ5SWRW
YXJpYW50IHZhcmlhbnQ7CiAgICAgICAgIHZhcmlhbnQubV9vZmZzZXQgPSBzdHJ1Y3R1cmUtPmdl
dENvbmN1cnJlbnRseSh1aWQsIGF0dHJpYnV0ZXMpOwogICAgICAgICBpZiAoIWlzVmFsaWRPZmZz
ZXQodmFyaWFudC5tX29mZnNldCkpCi0gICAgICAgICAgICByZXR1cm4gSW5CeUlkU3RhdHVzKFRh
a2VzU2xvd1BhdGgpOworICAgICAgICAgICAgcmV0dXJuIEluQnlTdGF0dXMoVGFrZXNTbG93UGF0
aCk7CiAgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yT3JWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBJbkJ5SWRTdGF0dXMoVGFrZXNTbG93
UGF0aCk7CisgICAgICAgICAgICByZXR1cm4gSW5CeVN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsKIAog
ICAgICAgICB2YXJpYW50Lm1fc3RydWN0dXJlU2V0LmFkZChzdHJ1Y3R1cmUpOwogICAgICAgICBi
b29sIGRpZEFwcGVuZCA9IHJlc3VsdC5hcHBlbmRWYXJpYW50KHZhcmlhbnQpOwpAQCAtMTYxLDEw
ICsxNjQsMTAgQEAgSW5CeUlkU3RhdHVzIEluQnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZv
V2l0aG91dEV4aXRTaXRlRmVlZGJhY2soY29uc3QgQ29uY3UKICAgICAgICAgZm9yICh1bnNpZ25l
ZCBsaXN0SW5kZXggPSAwOyBsaXN0SW5kZXggPCBsaXN0LT5zaXplKCk7ICsrbGlzdEluZGV4KSB7
CiAgICAgICAgICAgICBjb25zdCBBY2Nlc3NDYXNlJiBhY2Nlc3MgPSBsaXN0LT5hdChsaXN0SW5k
ZXgpOwogICAgICAgICAgICAgaWYgKGFjY2Vzcy52aWFQcm94eSgpKQotICAgICAgICAgICAgICAg
IHJldHVybiBJbkJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIEluQnlTdGF0dXMoVGFrZXNTbG93UGF0aCk7CiAKICAgICAgICAgICAgIGlmIChhY2Nlc3Mu
dXNlc1BvbHlQcm90bygpKQotICAgICAgICAgICAgICAgIHJldHVybiBJbkJ5SWRTdGF0dXMoVGFr
ZXNTbG93UGF0aCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEluQnlTdGF0dXMoVGFrZXNTbG93
UGF0aCk7CiAKICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYWNjZXNzLnN0cnVj
dHVyZSgpOwogICAgICAgICAgICAgaWYgKCFzdHJ1Y3R1cmUpIHsKQEAgLTE3NCwxNiArMTc3LDE2
IEBAIEluQnlJZFN0YXR1cyBJbkJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRF
eGl0U2l0ZUZlZWRiYWNrKGNvbnN0IENvbmN1CiAgICAgICAgICAgICAgICAgLy8gaGF2ZSB0byB1
c2UgdmFsdWUgcHJvZmlsaW5nIHRvIGRpc2NvdmVyIHNvbWV0aGluZyB0aGF0IHRoZSBBY2Nlc3ND
YXNlIGNvdWxkIGhhdmUKICAgICAgICAgICAgICAgICAvLyB0b2xkIHVzLiBCdXQsIGl0IHdvcmtz
IHdlbGwgZW5vdWdoLiBTbywgb3VyIG9ubHkgY29uY2VybiBoZXJlIGlzIHRvIG5vdAogICAgICAg
ICAgICAgICAgIC8vIGNyYXNoIG9uIG51bGwgc3RydWN0dXJlLgotICAgICAgICAgICAgICAgIHJl
dHVybiBJbkJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IEluQnlTdGF0dXMoVGFrZXNTbG93UGF0aCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IENvbXBsZXhHZXRTdGF0dXMgY29tcGxleEdldFN0YXR1cyA9IENvbXBsZXhHZXRTdGF0dXM6OmNv
bXB1dGVGb3Ioc3RydWN0dXJlLCBhY2Nlc3MuY29uZGl0aW9uU2V0KCksIHVpZCk7CisgICAgICAg
ICAgICBDb21wbGV4R2V0U3RhdHVzIGNvbXBsZXhHZXRTdGF0dXMgPSBDb21wbGV4R2V0U3RhdHVz
Ojpjb21wdXRlRm9yKHN0cnVjdHVyZSwgYWNjZXNzLmNvbmRpdGlvblNldCgpLCBhY2Nlc3MudWlk
KCkpOwogICAgICAgICAgICAgc3dpdGNoIChjb21wbGV4R2V0U3RhdHVzLmtpbmQoKSkgewogICAg
ICAgICAgICAgY2FzZSBDb21wbGV4R2V0U3RhdHVzOjpTaG91bGRTa2lwOgogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBjYXNlIENvbXBsZXhHZXRTdGF0dXM6OlRha2Vz
U2xvd1BhdGg6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEluQnlJZFN0YXR1cyhUYWtlc1Nsb3dQ
YXRoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSW5CeVN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsK
IAogICAgICAgICAgICAgY2FzZSBDb21wbGV4R2V0U3RhdHVzOjpJbmxpbmVhYmxlOiB7CiAgICAg
ICAgICAgICAgICAgc3dpdGNoIChhY2Nlc3MudHlwZSgpKSB7CkBAIC0xOTEsMTUgKzE5NCwxNSBA
QCBJbkJ5SWRTdGF0dXMgSW5CeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhp
dFNpdGVGZWVkYmFjayhjb25zdCBDb25jdQogICAgICAgICAgICAgICAgIGNhc2UgQWNjZXNzQ2Fz
ZTo6SW5NaXNzOgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gSW5CeUlkU3RhdHVzKFRha2VzU2xv
d1BhdGgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gSW5CeVN0YXR1cyhUYWtlc1Nsb3dQ
YXRoKTsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBJbkJ5SWRWYXJpYW50
IHZhcmlhbnQoCi0gICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpLCBj
b21wbGV4R2V0U3RhdHVzLm9mZnNldCgpLAorICAgICAgICAgICAgICAgICAgICBhY2Nlc3MuaWRl
bnRpZmllcigpLCBTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSwgY29tcGxleEdldFN0YXR1cy5vZmZz
ZXQoKSwKICAgICAgICAgICAgICAgICAgICAgY29tcGxleEdldFN0YXR1cy5jb25kaXRpb25TZXQo
KSk7CiAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5hcHBlbmRWYXJpYW50KHZhcmlhbnQp
KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gSW5CeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgp
OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gSW5CeVN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAg
LTIxMCwxNSArMjEzLDE1IEBAIEluQnlJZFN0YXR1cyBJbkJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JT
dHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKGNvbnN0IENvbmN1CiAgICAgfQogCiAgICAg
ZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIEluQnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsKKyAg
ICAgICAgcmV0dXJuIEluQnlTdGF0dXMoVGFrZXNTbG93UGF0aCk7CiAgICAgfQogCiAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gSW5CeUlkU3RhdHVzKCk7Cisg
ICAgcmV0dXJuIEluQnlTdGF0dXMoKTsKIH0KICNlbmRpZgogCi12b2lkIEluQnlJZFN0YXR1czo6
bWVyZ2UoY29uc3QgSW5CeUlkU3RhdHVzJiBvdGhlcikKK3ZvaWQgSW5CeVN0YXR1czo6bWVyZ2Uo
Y29uc3QgSW5CeVN0YXR1cyYgb3RoZXIpCiB7CiAgICAgaWYgKG90aGVyLm1fc3RhdGUgPT0gTm9J
bmZvcm1hdGlvbikKICAgICAgICAgcmV0dXJuOwpAQCAtMjMwLDEyICsyMzMsMTIgQEAgdm9pZCBJ
bkJ5SWRTdGF0dXM6Om1lcmdlKGNvbnN0IEluQnlJZFN0YXR1cyYgb3RoZXIpCiAgICAgICAgIAog
ICAgIGNhc2UgU2ltcGxlOgogICAgICAgICBpZiAob3RoZXIubV9zdGF0ZSAhPSBTaW1wbGUpIHsK
LSAgICAgICAgICAgICp0aGlzID0gSW5CeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgpOworICAgICAg
ICAgICAgKnRoaXMgPSBJbkJ5U3RhdHVzKFRha2VzU2xvd1BhdGgpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgICAgIGZvciAoY29uc3QgSW5CeUlkVmFyaWFudCYgb3RoZXJW
YXJpYW50IDogb3RoZXIubV92YXJpYW50cykgewogICAgICAgICAgICAgaWYgKCFhcHBlbmRWYXJp
YW50KG90aGVyVmFyaWFudCkpIHsKLSAgICAgICAgICAgICAgICAqdGhpcyA9IEluQnlJZFN0YXR1
cyhUYWtlc1Nsb3dQYXRoKTsKKyAgICAgICAgICAgICAgICAqdGhpcyA9IEluQnlTdGF0dXMoVGFr
ZXNTbG93UGF0aCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CkBAIC0yNDksNyArMjUyLDcgQEAgdm9pZCBJbkJ5SWRTdGF0dXM6Om1lcmdlKGNvbnN0
IEluQnlJZFN0YXR1cyYgb3RoZXIpCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
IH0KIAotdm9pZCBJbkJ5SWRTdGF0dXM6OmZpbHRlcihjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVj
dHVyZVNldCkKK3ZvaWQgSW5CeVN0YXR1czo6ZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNldCYgc3Ry
dWN0dXJlU2V0KQogewogICAgIGlmIChtX3N0YXRlICE9IFNpbXBsZSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMjU5LDE2ICsyNjIsMTYgQEAgdm9pZCBJbkJ5SWRTdGF0dXM6OmZpbHRlcihjb25zdCBT
dHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRv
cj4KLXZvaWQgSW5CeUlkU3RhdHVzOjptYXJrSWZDaGVhcChWaXNpdG9yJiB2aXNpdG9yKQordm9p
ZCBJbkJ5U3RhdHVzOjptYXJrSWZDaGVhcChWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIGZvciAo
SW5CeUlkVmFyaWFudCYgdmFyaWFudCA6IG1fdmFyaWFudHMpCiAgICAgICAgIHZhcmlhbnQubWFy
a0lmQ2hlYXAodmlzaXRvcik7CiB9CiAKLXRlbXBsYXRlIHZvaWQgSW5CeUlkU3RhdHVzOjptYXJr
SWZDaGVhcChBYnN0cmFjdFNsb3RWaXNpdG9yJik7Ci10ZW1wbGF0ZSB2b2lkIEluQnlJZFN0YXR1
czo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImKTsKK3RlbXBsYXRlIHZvaWQgSW5CeVN0YXR1czo6
bWFya0lmQ2hlYXAoQWJzdHJhY3RTbG90VmlzaXRvciYpOwordGVtcGxhdGUgdm9pZCBJbkJ5U3Rh
dHVzOjptYXJrSWZDaGVhcChTbG90VmlzaXRvciYpOwogCi1ib29sIEluQnlJZFN0YXR1czo6Zmlu
YWxpemUoVk0mIHZtKQorYm9vbCBJbkJ5U3RhdHVzOjpmaW5hbGl6ZShWTSYgdm0pCiB7CiAgICAg
Zm9yIChJbkJ5SWRWYXJpYW50JiB2YXJpYW50IDogbV92YXJpYW50cykgewogICAgICAgICBpZiAo
IXZhcmlhbnQuZmluYWxpemUodm0pKQpAQCAtMjc3LDcgKzI4MCwyNSBAQCBib29sIEluQnlJZFN0
YXR1czo6ZmluYWxpemUoVk0mIHZtKQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEluQnlJ
ZFN0YXR1czo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAorQ2FjaGVhYmxlSWRlbnRpZmll
ciBJbkJ5U3RhdHVzOjpzaW5nbGVJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICBpZiAobV92YXJp
YW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgQ2FjaGVhYmxl
SWRlbnRpZmllciByZXN1bHQgPSBtX3ZhcmlhbnRzLmZpcnN0KCkuaWRlbnRpZmllcigpOworICAg
IGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBmb3IgKHNpemVfdCBp
ID0gMTsgaSA8IG1fdmFyaWFudHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgQ2FjaGVhYmxlSWRl
bnRpZmllciBpZGVudGlmaWVyID0gbV92YXJpYW50c1tpXS5pZGVudGlmaWVyKCk7CisgICAgICAg
IGlmICghaWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBp
ZiAoaWRlbnRpZmllciAhPSByZXN1bHQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBJbkJ5U3RhdHVzOjpkdW1wKFByaW50
U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgb3V0LnByaW50KCIoIik7CiAgICAgc3dpdGNoICht
X3N0YXRlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5C
eUlkU3RhdHVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeVN0YXR1cy5o
CnNpbWlsYXJpdHkgaW5kZXggNzglCnJlbmFtZSBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9JbkJ5SWRTdGF0dXMuaApyZW5hbWUgdG8gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0luQnlTdGF0dXMuaAppbmRleCA3ZjE1ZmM1ZTQ2MWEuLjVhMzQwYjQ5M2EzNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFN0YXR1cy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5U3RhdHVzLmgKQEAgLTM5LDcg
KzM5LDcgQEAgY2xhc3MgQWNjZXNzQ2FzZTsKIGNsYXNzIENvZGVCbG9jazsKIGNsYXNzIFN0cnVj
dHVyZVN0dWJJbmZvOwogCi1jbGFzcyBJbkJ5SWRTdGF0dXMgZmluYWwgeworY2xhc3MgSW5CeVN0
YXR1cyBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
ZW51bSBTdGF0ZSB7CkBAIC01MiwxNyArNTIsMTUgQEAgcHVibGljOgogICAgICAgICBUYWtlc1Ns
b3dQYXRoLAogICAgIH07CiAKLSAgICBJbkJ5SWRTdGF0dXMoKSA9IGRlZmF1bHQ7CisgICAgSW5C
eVN0YXR1cygpID0gZGVmYXVsdDsKIAotICAgIEluQnlJZFN0YXR1cyhTdGF0ZSBzdGF0ZSwgY29u
c3QgSW5CeUlkVmFyaWFudCYgdmFyaWFudCA9IEluQnlJZFZhcmlhbnQoKSkKKyAgICBJbkJ5U3Rh
dHVzKFN0YXRlIHN0YXRlKQogICAgICAgICA6IG1fc3RhdGUoc3RhdGUpCiAgICAgewotICAgICAg
ICBBU1NFUlQoKHN0YXRlID09IFNpbXBsZSkgPT0gdmFyaWFudC5pc1NldCgpKTsKLSAgICAgICAg
aWYgKHZhcmlhbnQuaXNTZXQoKSkKLSAgICAgICAgICAgIG1fdmFyaWFudHMuYXBwZW5kKHZhcmlh
bnQpOworICAgICAgICBBU1NFUlQoc3RhdGUgIT0gU2ltcGxlKTsKICAgICB9CiAKLSAgICBleHBs
aWNpdCBJbkJ5SWRTdGF0dXMoU3R1YkluZm9TdW1tYXJ5IHN1bW1hcnkpCisgICAgZXhwbGljaXQg
SW5CeVN0YXR1cyhTdHViSW5mb1N1bW1hcnkgc3VtbWFyeSkKICAgICB7CiAgICAgICAgIHN3aXRj
aCAoc3VtbWFyeSkgewogICAgICAgICBjYXNlIFN0dWJJbmZvU3VtbWFyeTo6Tm9JbmZvcm1hdGlv
bjoKQEAgLTgwLDEyICs3OCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBJbkJ5SWRTdGF0dXMgY29tcHV0
ZUZvcihDb2RlQmxvY2sqLCBJQ1N0YXR1c01hcCYsIEJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJp
bmdJbXBsKiB1aWQpOwotICAgIHN0YXRpYyBJbkJ5SWRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxv
Y2sqLCBJQ1N0YXR1c01hcCYsIEJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQs
IEV4aXRGbGFnKTsKLSAgICBzdGF0aWMgSW5CeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2Nr
KiBiYXNlbGluZUJsb2NrLCBJQ1N0YXR1c01hcCYgYmFzZWxpbmVNYXAsIElDU3RhdHVzQ29udGV4
dFN0YWNrJiBjb250ZXh0U3RhY2ssIENvZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQp
OworICAgIHN0YXRpYyBJbkJ5U3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgSUNTdGF0dXNN
YXAmLCBCeXRlY29kZUluZGV4KTsKKyAgICBzdGF0aWMgSW5CeVN0YXR1cyBjb21wdXRlRm9yKENv
ZGVCbG9jayosIElDU3RhdHVzTWFwJiwgQnl0ZWNvZGVJbmRleCwgRXhpdEZsYWcpOworICAgIHN0
YXRpYyBJbkJ5U3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBJQ1N0
YXR1c01hcCYgYmFzZWxpbmVNYXAsIElDU3RhdHVzQ29udGV4dFN0YWNrJiwgQ29kZU9yaWdpbik7
CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBzdGF0aWMgSW5CeUlkU3RhdHVzIGNvbXB1dGVG
b3JTdHViSW5mbyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqIGJhc2VsaW5l
QmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiwgQ29kZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0ltcGwq
IHVpZCk7CisgICAgc3RhdGljIEluQnlTdGF0dXMgY29tcHV0ZUZvclN0dWJJbmZvKGNvbnN0IENv
bmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgU3RydWN0dXJlU3R1
YkluZm8qLCBDb2RlT3JpZ2luKTsKICNlbmRpZgogCiAgICAgU3RhdGUgc3RhdGUoKSBjb25zdCB7
IHJldHVybiBtX3N0YXRlOyB9CkBAIC0xMDEsNyArOTksNyBAQCBwdWJsaWM6CiAKICAgICBib29s
IHRha2VzU2xvd1BhdGgoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IFRha2VzU2xvd1BhdGg7
IH0KICAgICAKLSAgICB2b2lkIG1lcmdlKGNvbnN0IEluQnlJZFN0YXR1cyYpOworICAgIHZvaWQg
bWVyZ2UoY29uc3QgSW5CeVN0YXR1cyYpOwogCiAgICAgLy8gQXR0ZW1wdHMgdG8gcmVkdWNlIHRo
ZSBzZXQgb2YgdmFyaWFudHMgdG8gZml0IHRoZSBnaXZlbiBzdHJ1Y3R1cmUgc2V0LiBUaGlzIG1h
eSBiZSBhcHByb3hpbWF0ZS4KICAgICB2b2lkIGZpbHRlcihjb25zdCBTdHJ1Y3R1cmVTZXQmKTsK
QEAgLTExMSw5ICsxMDksMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFt
JikgY29uc3Q7CiAKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIHNpbmdsZUlkZW50aWZpZXIoKSBj
b25zdDsKKwogcHJpdmF0ZToKICNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBzdGF0aWMgSW5CeUlk
U3RhdHVzIGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKGNvbnN0IENv
bmN1cnJlbnRKU0xvY2tlciYsIFZNJiwgU3RydWN0dXJlU3R1YkluZm8qLCBVbmlxdWVkU3RyaW5n
SW1wbCogdWlkKTsKKyAgICBzdGF0aWMgSW5CeVN0YXR1cyBjb21wdXRlRm9yU3R1YkluZm9XaXRo
b3V0RXhpdFNpdGVGZWVkYmFjayhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBWTSYsIFN0cnVj
dHVyZVN0dWJJbmZvKik7CiAjZW5kaWYKICAgICBib29sIGFwcGVuZFZhcmlhbnQoY29uc3QgSW5C
eUlkVmFyaWFudCYpOwogICAgIHZvaWQgc2hyaW5rVG9GaXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAppbmRleCA5OTVmNDg1
YzIzZjYuLmYzOGU0MDkyZTE4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcApAQCAtNzAsMTAgKzcwLDEwIEBAIFB1dEJ5SWRT
dGF0dXMqIFJlY29yZGVkU3RhdHVzZXM6OmFkZFB1dEJ5SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdp
biYgY29kZU9yaWdpbiwKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1JbkJ5SWRTdGF0dXMqIFJl
Y29yZGVkU3RhdHVzZXM6OmFkZEluQnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3Jp
Z2luLCBjb25zdCBJbkJ5SWRTdGF0dXMmIHN0YXR1cykKK0luQnlTdGF0dXMqIFJlY29yZGVkU3Rh
dHVzZXM6OmFkZEluQnlTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwgY29uc3Qg
SW5CeVN0YXR1cyYgc3RhdHVzKQogewotICAgIGF1dG8gc3RhdHVzUHRyID0gbWFrZVVuaXF1ZTxJ
bkJ5SWRTdGF0dXM+KHN0YXR1cyk7Ci0gICAgSW5CeUlkU3RhdHVzKiByZXN1bHQgPSBzdGF0dXNQ
dHIuZ2V0KCk7CisgICAgYXV0byBzdGF0dXNQdHIgPSBtYWtlVW5pcXVlPEluQnlTdGF0dXM+KHN0
YXR1cyk7CisgICAgSW5CeVN0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdldCgpOwogICAgIGlu
cy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoY29kZU9yaWdpbiwgV1RGTW92ZShzdGF0dXNQdHIpKSk7
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5oCmluZGV4IDg0ODk4N2I1MjJhNS4uYmQxNTcwNTQ1NzM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0
dXNlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1
c2VzLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJDaGVja1ByaXZhdGVCcmFuZFN0YXR1
cy5oIgogI2luY2x1ZGUgIkRlbGV0ZUJ5U3RhdHVzLmgiCiAjaW5jbHVkZSAiR2V0QnlTdGF0dXMu
aCIKLSNpbmNsdWRlICJJbkJ5SWRTdGF0dXMuaCIKKyNpbmNsdWRlICJJbkJ5U3RhdHVzLmgiCiAj
aW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5oIgogI2luY2x1ZGUgIlNldFByaXZhdGVCcmFuZFN0YXR1
cy5oIgogCkBAIC00OSw3ICs0OSw3IEBAIHN0cnVjdCBSZWNvcmRlZFN0YXR1c2VzIHsKICAgICBD
YWxsTGlua1N0YXR1cyogYWRkQ2FsbExpbmtTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYsIGNvbnN0
IENhbGxMaW5rU3RhdHVzJik7CiAgICAgR2V0QnlTdGF0dXMqIGFkZEdldEJ5U3RhdHVzKGNvbnN0
IENvZGVPcmlnaW4mLCBjb25zdCBHZXRCeVN0YXR1cyYpOwogICAgIFB1dEJ5SWRTdGF0dXMqIGFk
ZFB1dEJ5SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYsIGNvbnN0IFB1dEJ5SWRTdGF0dXMmKTsK
LSAgICBJbkJ5SWRTdGF0dXMqIGFkZEluQnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiwgY29u
c3QgSW5CeUlkU3RhdHVzJik7CisgICAgSW5CeVN0YXR1cyogYWRkSW5CeVN0YXR1cyhjb25zdCBD
b2RlT3JpZ2luJiwgY29uc3QgSW5CeVN0YXR1cyYpOwogICAgIERlbGV0ZUJ5U3RhdHVzKiBhZGRE
ZWxldGVCeVN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiwgY29uc3QgRGVsZXRlQnlTdGF0dXMmKTsK
ICAgICBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyogYWRkQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMo
Y29uc3QgQ29kZU9yaWdpbiYsIGNvbnN0IENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzJik7CiAgICAg
U2V0UHJpdmF0ZUJyYW5kU3RhdHVzKiBhZGRTZXRQcml2YXRlQnJhbmRTdGF0dXMoY29uc3QgQ29k
ZU9yaWdpbiYsIGNvbnN0IFNldFByaXZhdGVCcmFuZFN0YXR1cyYpOwpAQCAtNzcsNyArNzcsNyBA
QCBzdHJ1Y3QgUmVjb3JkZWRTdGF0dXNlcyB7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxDb2RlT3Jp
Z2luLCBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbExpbmtTdGF0dXM+Pj4gY2FsbHM7CiAgICAgVmVjdG9y
PHN0ZDo6cGFpcjxDb2RlT3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8R2V0QnlTdGF0dXM+Pj4gZ2V0
czsKICAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxQdXRC
eUlkU3RhdHVzPj4+IHB1dHM7Ci0gICAgVmVjdG9yPHN0ZDo6cGFpcjxDb2RlT3JpZ2luLCBzdGQ6
OnVuaXF1ZV9wdHI8SW5CeUlkU3RhdHVzPj4+IGluczsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPENv
ZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxJbkJ5U3RhdHVzPj4+IGluczsKICAgICBWZWN0b3I8
c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxEZWxldGVCeVN0YXR1cz4+PiBk
ZWxldGVzOwogICAgIFZlY3RvcjxzdGQ6OnBhaXI8Q29kZU9yaWdpbiwgc3RkOjp1bmlxdWVfcHRy
PENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzPj4+IGNoZWNrUHJpdmF0ZUJyYW5kczsKICAgICBWZWN0
b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxTZXRQcml2YXRlQnJhbmRT
dGF0dXM+Pj4gc2V0UHJpdmF0ZUJyYW5kczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCmluZGV4IGM4ZTZiYzYzYTM2YS4uYWZh
ZTRlODQyZmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Ry
dWN0dXJlU3R1YkluZm8uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
dHJ1Y3R1cmVTdHViSW5mby5jcHAKQEAgLTI3Miw4ICsyNzIsMTEgQEAgdm9pZCBTdHJ1Y3R1cmVT
dHViSW5mbzo6cmVzZXQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyQmFzZSYgbG9ja2VyLCBDb2Rl
QmxvY2sqIGMKICAgICBjYXNlIEFjY2Vzc1R5cGU6OlB1dDoKICAgICAgICAgcmVzZXRQdXRCeUlE
KGNvZGVCbG9jaywgKnRoaXMpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEFjY2Vzc1R5cGU6
OkluOgotICAgICAgICByZXNldEluQnlJRChjb2RlQmxvY2ssICp0aGlzKTsKKyAgICBjYXNlIEFj
Y2Vzc1R5cGU6OkluQnlJZDoKKyAgICAgICAgcmVzZXRJbkJ5KGNvZGVCbG9jaywgKnRoaXMsIElu
QnlLaW5kOjpOb3JtYWwpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc1R5cGU6Oklu
QnlWYWw6CisgICAgICAgIHJlc2V0SW5CeShjb2RlQmxvY2ssICp0aGlzLCBJbkJ5S2luZDo6Tm9y
bWFsQnlWYWwpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6Okluc3RhbmNl
T2Y6CiAgICAgICAgIHJlc2V0SW5zdGFuY2VPZigqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCmluZGV4IDg4MjU2OGMyNmVh
ZC4uYTk0MDVkY2ViOWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3RydWN0dXJlU3R1YkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3RydWN0dXJlU3R1YkluZm8uaApAQCAtNTUsNyArNTUsOCBAQCBlbnVtIGNsYXNzIEFjY2Vz
c1R5cGUgOiBpbnQ4X3QgewogICAgIFRyeUdldEJ5SWQsCiAgICAgR2V0QnlWYWwsCiAgICAgUHV0
LAotICAgIEluLAorICAgIEluQnlJZCwKKyAgICBJbkJ5VmFsLAogICAgIEluc3RhbmNlT2YsCiAg
ICAgRGVsZXRlQnlJRCwKICAgICBEZWxldGVCeVZhbCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCBk
NjAyNTFiZTJkZjUuLjI4MWZhOTBmMzAxYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtNDQzOSw3
ICs0NDM5LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICBjYXNlIEZpbHRlckNhbGxM
aW5rU3RhdHVzOgogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQ
dXRCeUlkU3RhdHVzOgotICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2UgRmls
dGVySW5CeVN0YXR1czoKICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgIGNhc2Ug
RmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRl
QnJhbmRTdGF0dXM6CkBAIC00NjEwLDEwICs0NjEwLDEwIEBAIHZvaWQgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmZpbHRlcklDU3RhdHVzKE5vZGUqIG5vZGUpCiAgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCi0gICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6
IHsKKyAgICBjYXNlIEZpbHRlckluQnlTdGF0dXM6IHsKICAgICAgICAgQWJzdHJhY3RWYWx1ZSYg
dmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgaWYgKHZhbHVlLm1fc3Ry
dWN0dXJlLmlzRmluaXRlKCkpCi0gICAgICAgICAgICBub2RlLT5pbkJ5SWRTdGF0dXMoKS0+Zmls
dGVyKHZhbHVlLm1fc3RydWN0dXJlLnRvU3RydWN0dXJlU2V0KCkpOworICAgICAgICAgICAgbm9k
ZS0+aW5CeVN0YXR1cygpLT5maWx0ZXIodmFsdWUubV9zdHJ1Y3R1cmUudG9TdHJ1Y3R1cmVTZXQo
KSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcApp
bmRleCA2ZjgxNzM4OGFjMzguLmMyMTZhMzk2ZDcxNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCkBA
IC00MDQsNyArNDA0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRlckdl
dEJ5U3RhdHVzOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAg
ICAgICAgICAgICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgotICAgICAgICAgICAgICAg
IGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVySW5C
eVN0YXR1czoKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAg
ICAgICAgICAgICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6CiAgICAgICAg
ICAgICAgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6CkBAIC0xMjY3LDcgKzEy
NjcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6
CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICAgICAg
ICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6Ci0gICAgICAgICAgICAgICAgY2FzZSBGaWx0
ZXJJbkJ5SWRTdGF0dXM6CisgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5U3RhdHVzOgog
ICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAgICAgICAg
ICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1czoKICAgICAgICAgICAgICAgICBj
YXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1czogewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCA3MDc5ZTUyYWRhOGIuLmMxZDZh
MTI3ODg0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKQEAgLTU1LDcgKzU1LDcgQEAKICNpbmNsdWRlICJHZXRCeVN0YXR1cy5oIgogI2lu
Y2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhlYXAuaCIKLSNpbmNsdWRlICJJbkJ5
SWRTdGF0dXMuaCIKKyNpbmNsdWRlICJJbkJ5U3RhdHVzLmgiCiAjaW5jbHVkZSAiSW5zdGFuY2VP
ZlN0YXR1cy5oIgogI2luY2x1ZGUgIkpTQXJyYXlJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKQEAgLTI2Myw3ICsyNjMsOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBoYW5kbGVE
ZWxldGVCeUlkKAogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgZGVzdGluYXRpb24sIE5vZGUqIGJh
c2UsIENhY2hlYWJsZUlkZW50aWZpZXIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIERlbGV0
ZUJ5U3RhdHVzLCBFQ01BTW9kZSk7Ci0gICAgCisKKyAgICB2b2lkIGhhbmRsZUluQnlJZChWaXJ0
dWFsUmVnaXN0ZXIgZGVzdGluYXRpb24sIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIs
IEluQnlTdGF0dXMpOworCiAgICAgLy8gRWl0aGVyIHJlZ2lzdGVyIGEgd2F0Y2hwb2ludCBvciBl
bWl0IGEgY2hlY2sgZm9yIHRoaXMgY29uZGl0aW9uLiBSZXR1cm5zIGZhbHNlIGlmIHRoZQogICAg
IC8vIGNvbmRpdGlvbiBubyBsb25nZXIgaG9sZHMsIGFuZCB0aGVyZWZvcmUgbm8gcmVhc29uYWJs
ZSBjaGVjayBjYW4gYmUgZW1pdHRlZC4KICAgICBib29sIGNoZWNrKGNvbnN0IE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uJik7CkBAIC00OTI4LDYgKzQ5MzAsMzUgQEAgdm9pZCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlRGVsZXRlQnlJZCgKICAgICByZXR1cm47CiB9CiAKK3ZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUluQnlJZChWaXJ0dWFsUmVnaXN0ZXIgZGVzdGluYXRpb24sIE5vZGUqIGJhc2Us
IENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSW5CeVN0YXR1cyBzdGF0dXMpCit7Cisg
ICAgaWYgKHN0YXR1cy5pc1NpbXBsZSgpICYmIE9wdGlvbnM6OnVzZUFjY2Vzc0lubGluaW5nKCkp
IHsKKyAgICAgICAgYm9vbCBhbGxPSyA9IHRydWU7CisgICAgICAgIE1hdGNoU3RydWN0dXJlRGF0
YSogZGF0YSA9IG1fZ3JhcGgubV9tYXRjaFN0cnVjdHVyZURhdGEuYWRkKCk7CisgICAgICAgIGZv
ciAoY29uc3QgSW5CeUlkVmFyaWFudCYgdmFyaWFudCA6IHN0YXR1cy52YXJpYW50cygpKSB7Cisg
ICAgICAgICAgICBpZiAoIWNoZWNrKHZhcmlhbnQuY29uZGl0aW9uU2V0KCkpKSB7CisgICAgICAg
ICAgICAgICAgYWxsT0sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGZvciAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUgOiB2YXJpYW50LnN0
cnVjdHVyZVNldCgpKSB7CisgICAgICAgICAgICAgICAgTWF0Y2hTdHJ1Y3R1cmVWYXJpYW50IG1h
dGNoVmFyaWFudDsKKyAgICAgICAgICAgICAgICBtYXRjaFZhcmlhbnQuc3RydWN0dXJlID0gbV9n
cmFwaC5yZWdpc3RlclN0cnVjdHVyZShzdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAgIG1hdGNo
VmFyaWFudC5yZXN1bHQgPSB2YXJpYW50LmlzSGl0KCk7CisKKyAgICAgICAgICAgICAgICBkYXRh
LT52YXJpYW50cy5hcHBlbmQoV1RGTW92ZShtYXRjaFZhcmlhbnQpKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgIGlmIChhbGxPSykgeworICAgICAgICAgICAgYWRkVG9HcmFw
aChGaWx0ZXJJbkJ5U3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNl
cygpLmFkZEluQnlTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgc3RhdHVzKSksIGJhc2UpOwor
ICAgICAgICAgICAgc2V0KGRlc3RpbmF0aW9uLCBhZGRUb0dyYXBoKE1hdGNoU3RydWN0dXJlLCBP
cEluZm8oZGF0YSksIGJhc2UpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHNldChkZXN0aW5hdGlvbiwgYWRkVG9HcmFwaChJbkJ5SWQsIE9wSW5mbyhpZGVu
dGlmaWVyKSwgYmFzZSkpOworfQorCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjplbWl0UHV0QnlJZCgK
ICAgICBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIE5vZGUqIHZh
bHVlLCBjb25zdCBQdXRCeUlkU3RhdHVzJiBwdXRCeUlkU3RhdHVzLCBib29sIGlzRGlyZWN0LCBF
Q01BTW9kZSBlY21hTW9kZSkKIHsKQEAgLTgyMTIsNDkgKzgyNDMsNTMgQEAgdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKIAogICAgICAgICBjYXNlIG9wX2lu
X2J5X3ZhbDogewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BJbkJ5VmFsPigpOwotICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdl
dEFycmF5TW9kZShieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fYXJyYXlQcm9maWxlLCBB
cnJheTo6UmVhZCk7Ci0gICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgo
SW5CeVZhbCwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIGdldChieXRlY29kZS5tX2Jhc2Up
LCBnZXQoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpKTsKLSAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9w
X2luX2J5X3ZhbCk7Ci0gICAgICAgIH0KLQotICAgICAgICBjYXNlIG9wX2luX2J5X2lkOiB7Ci0g
ICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEluQnlJ
ZD4oKTsKICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKLSAg
ICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lubGluZVN0YWNrVG9wLT5t
X2lkZW50aWZpZXJSZW1hcFtieXRlY29kZS5tX3Byb3BlcnR5XTsKLSAgICAgICAgICAgIFVuaXF1
ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2dyYXBoLmlkZW50aWZpZXJzKClbaWRlbnRpZmllck51bWJl
cl07CisgICAgICAgICAgICBOb2RlKiBwcm9wZXJ0eSA9IGdldChieXRlY29kZS5tX3Byb3BlcnR5
KTsKKyAgICAgICAgICAgIGJvb2wgY29tcGlsZWRBc0luQnlJZCA9IGZhbHNlOwogCi0gICAgICAg
ICAgICBJbkJ5SWRTdGF0dXMgc3RhdHVzID0gSW5CeUlkU3RhdHVzOjpjb21wdXRlRm9yKAorICAg
ICAgICAgICAgSW5CeVN0YXR1cyBzdGF0dXMgPSBJbkJ5U3RhdHVzOjpjb21wdXRlRm9yKAogICAg
ICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKICAgICAgICAg
ICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0YWNr
LAotICAgICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCksIHVpZCk7Ci0KLSAgICAgICAg
ICAgIGlmIChzdGF0dXMuaXNTaW1wbGUoKSAmJiBPcHRpb25zOjp1c2VBY2Nlc3NJbmxpbmluZygp
KSB7Ci0gICAgICAgICAgICAgICAgYm9vbCBhbGxPSyA9IHRydWU7Ci0gICAgICAgICAgICAgICAg
TWF0Y2hTdHJ1Y3R1cmVEYXRhKiBkYXRhID0gbV9ncmFwaC5tX21hdGNoU3RydWN0dXJlRGF0YS5h
ZGQoKTsKLSAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IEluQnlJZFZhcmlhbnQmIHZhcmlhbnQg
OiBzdGF0dXMudmFyaWFudHMoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoIWNoZWNrKHZh
cmlhbnQuY29uZGl0aW9uU2V0KCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhbGxPSyA9
IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6IHZh
cmlhbnQuc3RydWN0dXJlU2V0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIE1hdGNoU3Ry
dWN0dXJlVmFyaWFudCBtYXRjaFZhcmlhbnQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtYXRj
aFZhcmlhbnQuc3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShzdHJ1Y3R1cmUp
OwotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hWYXJpYW50LnJlc3VsdCA9IHZhcmlhbnQu
aXNIaXQoKTsKKyAgICAgICAgICAgICAgICBjdXJyZW50Q29kZU9yaWdpbigpKTsKIAotICAgICAg
ICAgICAgICAgICAgICAgICAgZGF0YS0+dmFyaWFudHMuYXBwZW5kKFdURk1vdmUobWF0Y2hWYXJp
YW50KSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAoIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9j
dXJyZW50SW5kZXgsIEJhZElkZW50KQorICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNr
VG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRUeXBlKQor
ICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4
aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDb25zdGFudFZhbHVlKSkgewogCi0gICAgICAgICAg
ICAgICAgaWYgKGFsbE9LKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRmlsdGVy
SW5CeUlkU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcygpLmFk
ZEluQnlJZFN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBzdGF0dXMpKSwgYmFzZSk7CisgICAg
ICAgICAgICAgICAgaWYgKENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IHN0YXR1cy5z
aW5nbGVJZGVudGlmaWVyKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0lt
cGwqIHVpZCA9IGlkZW50aWZpZXIudWlkKCk7CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgu
aWRlbnRpZmllcnMoKS5lbnN1cmUodWlkKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlkZW50
aWZpZXIuaXNDZWxsKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEZyb3plblZhbHVlKiBm
cm96ZW4gPSBtX2dyYXBoLmZyZWV6ZVN0cm9uZyhpZGVudGlmaWVyLmNlbGwoKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoaWRlbnRpZmllci5pc1N5bWJvbENlbGwoKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrSXNDb25zdGFudCwgT3BJbmZvKGZy
b3plbiksIHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrSWRlbnQsIE9wSW5mbyh1aWQpLCBw
cm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAg
ICAgICAgYWRkVG9HcmFwaChDaGVja0lkZW50LCBPcEluZm8odWlkKSwgcHJvcGVydHkpOwogCi0g
ICAgICAgICAgICAgICAgICAgIE5vZGUqIG1hdGNoID0gYWRkVG9HcmFwaChNYXRjaFN0cnVjdHVy
ZSwgT3BJbmZvKGRhdGEpLCBiYXNlKTsKLSAgICAgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2Rl
Lm1fZHN0LCBtYXRjaCk7Ci0gICAgICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2luX2J5
X2lkKTsKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlSW5CeUlkKGJ5dGVjb2RlLm1fZHN0LCBi
YXNlLCBpZGVudGlmaWVyLCBzdGF0dXMpOworICAgICAgICAgICAgICAgICAgICBjb21waWxlZEFz
SW5CeUlkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChJbkJ5SWQsIE9wSW5mbyhDYWNo
ZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9p
bmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCB1aWQpKSwgYmFzZSkpOworICAgICAgICAg
ICAgaWYgKCFjb21waWxlZEFzSW5CeUlkKSB7CisgICAgICAgICAgICAgICAgQXJyYXlNb2RlIGFy
cmF5TW9kZSA9IGdldEFycmF5TW9kZShieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fYXJy
YXlQcm9maWxlLCBBcnJheTo6UmVhZCk7CisgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1f
ZHN0LCBhZGRUb0dyYXBoKEluQnlWYWwsIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBiYXNl
LCBwcm9wZXJ0eSkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgTkVYVF9PUENPREUob3Bf
aW5fYnlfdmFsKTsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3BfaW5fYnlfaWQ6IHsKKyAg
ICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5CeUlk
PigpOworICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChieXRlY29kZS5tX2Jhc2UpOworICAg
ICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1f
aWRlbnRpZmllclJlbWFwW2J5dGVjb2RlLm1fcHJvcGVydHldOworICAgICAgICAgICAgVW5pcXVl
ZFN0cmluZ0ltcGwqIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKVtpZGVudGlmaWVyTnVtYmVy
XTsKKyAgICAgICAgICAgIEluQnlTdGF0dXMgc3RhdHVzID0gSW5CeVN0YXR1czo6Y29tcHV0ZUZv
cigKKyAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssCisg
ICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcCwgbV9pY0NvbnRl
eHRTdGFjaywKKyAgICAgICAgICAgICAgICBjdXJyZW50Q29kZU9yaWdpbigpKTsKKyAgICAgICAg
ICAgIGhhbmRsZUluQnlJZChieXRlY29kZS5tX2RzdCwgYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1faW5saW5lU3RhY2tUb3At
Pm1fcHJvZmlsZWRCbG9jaywgdWlkKSwgc3RhdHVzKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RF
KG9wX2luX2J5X2lkKTsKICAgICAgICAgfQogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggZGNhNmM0YWYyOWE5Li4wMWRhNTZkZTE4ZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC01MDQsNyArNTA0
LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVh
ZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3Rh
dHVzOgogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlk
U3RhdHVzOgotICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVySW5C
eVN0YXR1czoKICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVy
Q2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRT
dGF0dXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJz
RXhpdFN0YXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0
U3RhdGUuY3BwCmluZGV4IDZmZDRhNzZiNjE4Zi4uODZhM2QwNzY2NGQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcApAQCAtODIs
NyArODIsNyBAQCBib29sIGNsb2JiZXJzRXhpdFN0YXRlKEdyYXBoJiBncmFwaCwgTm9kZSogbm9k
ZSkKICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgogICAgIGNhc2UgRmlsdGVyR2V0QnlT
dGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgotICAgIGNhc2UgRmlsdGVySW5C
eUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVySW5CeVN0YXR1czoKICAgICBjYXNlIEZpbHRlckRl
bGV0ZUJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6CiAg
ICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggMDI4NGE3ZTMwNGEwLi40MTBjMzQ1MDNmZjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCBi
b29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBGaWx0ZXJDYWxs
TGlua1N0YXR1czoKICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVy
UHV0QnlJZFN0YXR1czoKLSAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICBjYXNlIEZp
bHRlckluQnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICBjYXNl
IEZpbHRlckNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOgogICAgIGNhc2UgRmlsdGVyU2V0UHJpdmF0
ZUJyYW5kU3RhdHVzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAKaW5kZXggOGEwOWZiNDUxODg3Li5jNDZhNWZmMTNkNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMjg4Miw3ICsyODgyLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKICAgICAgICAgY2FzZSBGaWx0
ZXJHZXRCeVN0YXR1czoKICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgotICAgICAg
ICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5U3RhdHVz
OgogICAgICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRl
ckNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlclNldFByaXZhdGVC
cmFuZFN0YXR1czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3Jh
cGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKaW5kZXggMjVh
YjljMzM5NTFmLi4xMTEwMDgyNjAzOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3Jh
cGguY3BwCkBAIC0zODMsOCArMzgzLDggQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYg
b3V0LCBjb25zdCBjaGFyKiBwcmVmaXhTdHIsIE5vZGUqIG5vZGUsIER1bXBDb250ZXgKICAgICAg
ICAgb3V0LnByaW50KGNvbW1hLCAqbm9kZS0+Y2FsbExpbmtTdGF0dXMoKSk7CiAgICAgaWYgKG5v
ZGUtPmhhc0dldEJ5U3RhdHVzKCkpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgKm5vZGUtPmdl
dEJ5U3RhdHVzKCkpOwotICAgIGlmIChub2RlLT5oYXNJbkJ5SWRTdGF0dXMoKSkKLSAgICAgICAg
b3V0LnByaW50KGNvbW1hLCAqbm9kZS0+aW5CeUlkU3RhdHVzKCkpOworICAgIGlmIChub2RlLT5o
YXNJbkJ5U3RhdHVzKCkpCisgICAgICAgIG91dC5wcmludChjb21tYSwgKm5vZGUtPmluQnlTdGF0
dXMoKSk7CiAgICAgaWYgKG5vZGUtPmhhc1B1dEJ5SWRTdGF0dXMoKSkKICAgICAgICAgb3V0LnBy
aW50KGNvbW1hLCAqbm9kZS0+cHV0QnlJZFN0YXR1cygpKTsKICAgICBpZiAobm9kZS0+aXNKdW1w
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCmluZGV4
IGRkYmI2ZGI0YzBjNC4uOTEwY2YxMzk5ZmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvbXBpbGVyLmNwcApAQCAtMjU1LDYgKzI1NSw3IEBAIHZvaWQgSklUQ29tcGls
ZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKICAgICBmaW5hbGl6ZUlubGluZUNhY2hl
cyhtX2RlbEJ5SWRzLCBsaW5rQnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2Rl
bEJ5VmFscywgbGlua0J1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9pbkJ5SWRz
LCBsaW5rQnVmZmVyKTsKKyAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2luQnlWYWxzLCBsaW5r
QnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2luc3RhbmNlT2ZzLCBsaW5rQnVm
ZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzLCBs
aW5rQnVmZmVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5o
CmluZGV4IDhhZGVhZDUwZjQ1NS4uMTg3NTQzZDE2ZWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb21waWxlci5oCkBAIC0yMTQsNiArMjE0LDExIEBAIHB1YmxpYzoKICAg
ICAgICAgbV9pbkJ5SWRzLmFwcGVuZChJbmxpbmVDYWNoZVdyYXBwZXI8SklUSW5CeUlkR2VuZXJh
dG9yPihnZW4sIHNsb3dQYXRoKSk7CiAgICAgfQogCisgICAgdm9pZCBhZGRJbkJ5VmFsKGNvbnN0
IEpJVEluQnlWYWxHZW5lcmF0b3ImIGdlbiwgU2xvd1BhdGhHZW5lcmF0b3IqIHNsb3dQYXRoKQor
ICAgIHsKKyAgICAgICAgbV9pbkJ5VmFscy5hcHBlbmQoSW5saW5lQ2FjaGVXcmFwcGVyPEpJVElu
QnlWYWxHZW5lcmF0b3I+KGdlbiwgc2xvd1BhdGgpKTsKKyAgICB9CisKICAgICB2b2lkIGFkZFBy
aXZhdGVCcmFuZEFjY2Vzcyhjb25zdCBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdl
biwgU2xvd1BhdGhHZW5lcmF0b3IqIHNsb3dQYXRoKQogICAgIHsKICAgICAgICAgbV9wcml2YXRl
QnJhbmRBY2Nlc3Nlcy5hcHBlbmQoSW5saW5lQ2FjaGVXcmFwcGVyPEpJVFByaXZhdGVCcmFuZEFj
Y2Vzc0dlbmVyYXRvcj4oZ2VuLCBzbG93UGF0aCkpOwpAQCAtMzUzLDYgKzM1OCw3IEBAIHByaXZh
dGU6CiAgICAgVmVjdG9yPElubGluZUNhY2hlV3JhcHBlcjxKSVREZWxCeUlkR2VuZXJhdG9yPiwg
ND4gbV9kZWxCeUlkczsKICAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVERlbEJ5VmFs
R2VuZXJhdG9yPiwgND4gbV9kZWxCeVZhbHM7CiAgICAgVmVjdG9yPElubGluZUNhY2hlV3JhcHBl
cjxKSVRJbkJ5SWRHZW5lcmF0b3I+LCA0PiBtX2luQnlJZHM7CisgICAgVmVjdG9yPElubGluZUNh
Y2hlV3JhcHBlcjxKSVRJbkJ5VmFsR2VuZXJhdG9yPiwgND4gbV9pbkJ5VmFsczsKICAgICBWZWN0
b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I+LCA0PiBtX2luc3Rh
bmNlT2ZzOwogICAgIFZlY3RvcjxJbmxpbmVDYWNoZVdyYXBwZXI8SklUUHJpdmF0ZUJyYW5kQWNj
ZXNzR2VuZXJhdG9yPiwgND4gbV9wcml2YXRlQnJhbmRBY2Nlc3NlczsKICAgICBWZWN0b3I8SlND
YWxsUmVjb3JkLCA0PiBtX2pzQ2FsbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR01heUV4aXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlF
eGl0LmNwcAppbmRleCBkYzM3MmM3MGZlODguLmY5ZjI2NWUwNGUzYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgRXhpdE1vZGUg
bWF5RXhpdEltcGwoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBTdGF0ZVR5cGUmIHN0YXRlKQog
ICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1
czoKICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6Ci0gICAgY2FzZSBGaWx0ZXJJbkJ5SWRT
dGF0dXM6CisgICAgY2FzZSBGaWx0ZXJJbkJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyRGVsZXRl
QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1czoKICAgICBj
YXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgKaW5kZXggMTY5NjE3YmVhYWZmLi4zYzkxNWM5NzlhODkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oCkBAIC0zMTA5LDE1ICszMTA5LDE1IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIG1fb3BJbmZvLmFzPEdldEJ5U3RhdHVzKj4oKTsKICAgICB9CiAgICAgCi0gICAgYm9v
bCBoYXNJbkJ5SWRTdGF0dXMoKQorICAgIGJvb2wgaGFzSW5CeVN0YXR1cygpCiAgICAgewotICAg
ICAgICByZXR1cm4gb3AoKSA9PSBGaWx0ZXJJbkJ5SWRTdGF0dXM7CisgICAgICAgIHJldHVybiBv
cCgpID09IEZpbHRlckluQnlTdGF0dXM7CiAgICAgfQogICAgIAotICAgIEluQnlJZFN0YXR1cyog
aW5CeUlkU3RhdHVzKCkKKyAgICBJbkJ5U3RhdHVzKiBpbkJ5U3RhdHVzKCkKICAgICB7Ci0gICAg
ICAgIEFTU0VSVChoYXNJbkJ5SWRTdGF0dXMoKSk7Ci0gICAgICAgIHJldHVybiBtX29wSW5mby5h
czxJbkJ5SWRTdGF0dXMqPigpOworICAgICAgICBBU1NFUlQoaGFzSW5CeVN0YXR1cygpKTsKKyAg
ICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPEluQnlTdGF0dXMqPigpOwogICAgIH0KICAgICAKICAg
ICBib29sIGhhc1B1dEJ5SWRTdGF0dXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oCmluZGV4IDI5ZjM4OGFmY2QzOC4uZGFiM2U0ZmE5Y2NiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC01NDYsNyArNTQ2LDcgQEAgbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBERkcgewogICAgIC8qIFVzZWQgdG8gcHJvdmlkZSBmZWVkYmFjayB0byB0
aGUgSUMgcHJvZmlsZXIuICovIFwKICAgICBtYWNybyhGaWx0ZXJDYWxsTGlua1N0YXR1cywgTm9k
ZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEZpbHRlckdldEJ5U3RhdHVzLCBOb2RlTXVzdEdl
bmVyYXRlKSBcCi0gICAgbWFjcm8oRmlsdGVySW5CeUlkU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRl
KSBcCisgICAgbWFjcm8oRmlsdGVySW5CeVN0YXR1cywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAg
IG1hY3JvKEZpbHRlclB1dEJ5SWRTdGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNy
byhGaWx0ZXJEZWxldGVCeVN0YXR1cywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEZp
bHRlckNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5n
UGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9u
U2lua2luZ1BoYXNlLmNwcAppbmRleCA5ZDE5MWZmOTVjNTQuLjY2NzgzNTU1ZGYyMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2lu
Z1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9j
YXRpb25TaW5raW5nUGhhc2UuY3BwCkBAIC0xMjU5LDcgKzEyNTksNyBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlckdldEJ5
U3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6Ci0gICAgICAgIGNhc2Ug
RmlsdGVySW5CeUlkU3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRlckluQnlTdGF0dXM6CiAgICAg
ICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVyQ2hlY2tQ
cml2YXRlQnJhbmRTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVyU2V0UHJpdmF0ZUJyYW5kU3Rh
dHVzOgpAQCAtMjYxNiw3ICsyNjE2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNl
IEZpbHRlckNhbGxMaW5rU3RhdHVzOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyR2V0QnlT
dGF0dXM6CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgotICAgICAg
ICAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgICAgICAgICAgICAgIGNhc2Ug
RmlsdGVySW5CeVN0YXR1czoKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3Rh
dHVzOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6
CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwCmluZGV4IDViNTgwYmI1NDNjMS4uYmEwZDNlMzZjMWRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcApAQCAtMTQ1MSw3ICsxNDUxLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
Y2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKICAgICAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1
czoKICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgotICAgICAgICBjYXNlIEZpbHRl
ckluQnlJZFN0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5U3RhdHVzOgogICAgICAgICBj
YXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlckNoZWNrUHJpdmF0
ZUJyYW5kU3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1czoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggMjgx
MzE3YTNjNTMwLi42M2FlZTI4MGY0ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0zNjEsNyArMzYxLDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRl
KEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29s
IGlnbm8KICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgogICAgIGNhc2UgRmlsdGVyR2V0
QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgotICAgIGNhc2UgRmlsdGVy
SW5CeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVySW5CeVN0YXR1czoKICAgICBjYXNlIEZpbHRl
ckRlbGV0ZUJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6
CiAgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDBhZjVkZDk4MzljOC4u
OTA1OTcyOTk1M2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcApAQCAtMTI4NiwxOCArMTI4NiwzMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlSW5CeVZhbChOb2RlKiBub2RlKQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFsdWVPcGVyYW5kIGtleSh0aGlz
LCBub2RlLT5jaGlsZDIoKSk7CisgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMs
IFJldXNlLCBrZXkpOwogCiAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwotICAgIEpT
VmFsdWVSZWdzIHJlZ3MgPSBrZXkuanNWYWx1ZVJlZ3MoKTsKKyAgICBKU1ZhbHVlUmVncyBrZXlS
ZWdzID0ga2V5LmpzVmFsdWVSZWdzKCk7CisgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJl
c3VsdC5yZWdzKCk7CiAKICAgICBiYXNlLnVzZSgpOwogICAgIGtleS51c2UoKTsKIAotICAgIGZs
dXNoUmVnaXN0ZXJzKCk7Ci0gICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQo
dGhpcyk7Ci0gICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7Ci0gICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25JbkJ5VmFsLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgcmVncyk7Ci0gICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2so
KTsKKyAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7Cisg
ICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJh
dGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+
c2l6ZSgpKTsKKyAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lz
dGVycygpOworICAgIEpJVEluQnlWYWxHZW5lcmF0b3IgZ2VuKAorICAgICAgICBtX2ppdC5jb2Rl
QmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIEpT
VmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwga2V5UmVncywgcmVzdWx0UmVncyk7Cisg
ICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOworCisgICAgYXV0byBzbG93UGF0aCA9IHNs
b3dQYXRoQ2FsbCgKKyAgICAgICAgZ2VuLnNsb3dQYXRoSnVtcCgpLCB0aGlzLCBvcGVyYXRpb25J
bkJ5VmFsT3B0aW1pemUsCisgICAgICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVp
cmVtZW50OjpDaGVja05lZWRlZCwKKyAgICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGdlbi5zdHViSW5mbygpLCBudWxscHRyLCBDQ2FsbEhlbHBlcnM6OkNlbGxW
YWx1ZShiYXNlR1BSKSwga2V5UmVncyk7CisKKyAgICBtX2ppdC5hZGRJbkJ5VmFsKGdlbiwgc2xv
d1BhdGguZ2V0KCkpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgp
KTsKKwogICAgIGJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdFJlZ3MucGF5bG9hZEdQUigpLCBu
b2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCBmMTJm
ODZmMGQ2ODkuLjYzY2EzZmQyZTFhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC00MjcxLDcgKzQyNzEsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBGaWx0ZXJD
YWxsTGlua1N0YXR1czoKICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgIGNhc2UgRmls
dGVyUHV0QnlJZFN0YXR1czoKLSAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICBjYXNl
IEZpbHRlckluQnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICBj
YXNlIEZpbHRlckNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOgogICAgIGNhc2UgRmlsdGVyU2V0UHJp
dmF0ZUJyYW5kU3RhdHVzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggZWY4YmEzODY4ZTg1Li5jZDlkMTdhNjQ4NzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApA
QCAtNTcwNSw3ICs1NzA1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJHZXRC
eVN0YXR1czoKICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6Ci0gICAgY2FzZSBGaWx0ZXJJ
bkJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJJbkJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVy
RGVsZXRlQnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1czoK
ICAgICBjYXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1czoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwCmluZGV4
IDEwNjFiNzNmMzAxNy4uZmRhNjRkMzVkYTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAKQEAgLTE5OCw3ICsx
OTgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAg
ICAgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAgICAgICAgIGNhc2UgRmls
dGVyQ2FsbExpbmtTdGF0dXM6Ci0gICAgICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoK
KyAgICAgICAgICAgIGNhc2UgRmlsdGVySW5CeVN0YXR1czoKICAgICAgICAgICAgIGNhc2UgRmls
dGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAgICAgICBjYXNlIEZpbHRlckNoZWNrUHJpdmF0ZUJy
YW5kU3RhdHVzOgogICAgICAgICAgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6
CkBAIC00MjMsNyArNDIzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNhc2UgRmlsdGVyR2V0
QnlTdGF0dXM6CiAgICAgICAgICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAg
ICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgotICAgICAgICAgICAgY2FzZSBGaWx0ZXJJ
bkJ5SWRTdGF0dXM6CisgICAgICAgICAgICBjYXNlIEZpbHRlckluQnlTdGF0dXM6CiAgICAgICAg
ICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgICAgICAgICAgY2FzZSBGaWx0ZXJD
aGVja1ByaXZhdGVCcmFuZFN0YXR1czoKICAgICAgICAgICAgIGNhc2UgRmlsdGVyU2V0UHJpdmF0
ZUJyYW5kU3RhdHVzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
YXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRp
ZXMuY3BwCmluZGV4IDRmNmUwMzdjYjExYy4uMTk4OGUzMmE3NWFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC00MDksNyArNDA5LDcgQEAg
aW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBG
aWx0ZXJDYWxsTGlua1N0YXR1czoKICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgIGNh
c2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKLSAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAg
ICBjYXNlIEZpbHRlckluQnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoK
ICAgICBjYXNlIEZpbHRlckNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOgogICAgIGNhc2UgRmlsdGVy
U2V0UHJpdmF0ZUJyYW5kU3RhdHVzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCmluZGV4IDIzYmU3ZTc3NWQzYS4uZDc4ZDdlM2FhOTJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0xNjUyLDcg
KzE2NTIsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgog
ICAgICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlclB1dEJ5
SWRTdGF0dXM6Ci0gICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgICAgICBjYXNl
IEZpbHRlckluQnlTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAg
ICAgICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6CiAgICAgICAgIGNhc2Ug
RmlsdGVyU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOgpAQCAtMTIyMTMsMTMgKzEyMjEzLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CiAg
ICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKEludDY0LCByZXN1bHRzKSk7CiAgICAgfQotICAg
IAotICAgIHZvaWQgY29tcGlsZUluQnlWYWwoKQotICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFu
dGljKTsKLSAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkluQnlWYWws
IHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIGxv
d0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSkpKTsKLSAgICB9Ci0gICAgCisKICAgICB2b2lkIGNv
bXBpbGVIYXNQcml2YXRlTmFtZSgpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwpA
QCAtMTIyMzIsMzggKzEyMjI2LDUzIEBAIHByaXZhdGU6CiAgICAgICAgIHNldEpTVmFsdWUodm1D
YWxsKEludDY0LCBvcGVyYXRpb25IYXNQcml2YXRlQnJhbmQsIHdlYWtQb2ludGVyKGdsb2JhbE9i
amVjdCksIGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIGxvd1N5bWJvbChtX25vZGUtPmNoaWxk
MigpKSkpOwogICAgIH0KIAotICAgIHZvaWQgY29tcGlsZUluQnlJZCgpCisgICAgdGVtcGxhdGU8
SW5CeUtpbmQga2luZCwgdHlwZW5hbWUgU3Vic2NyaXB0S2luZD4KKyAgICB2b2lkIGNvbXBpbGVJ
bkJ5KExWYWx1ZSBiYXNlLCBTdWJzY3JpcHRLaW5kIHN1YnNjcmlwdFZhbHVlKQogICAgIHsKLSAg
ICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBp
ZGVudGlmaWVyID0gbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpOwotICAgICAgICBMVmFsdWUg
YmFzZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7Ci0KICAgICAgICAgUGF0Y2hwb2ludFZh
bHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChJbnQ2NCk7CiAgICAgICAgIHBhdGNo
cG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihiYXNlKTsKKyAgICAgICAgaWYgY29uc3RleHByIChr
aW5kICE9IEluQnlLaW5kOjpOb3JtYWwpCisgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRT
b21lUmVnaXN0ZXIoc3Vic2NyaXB0VmFsdWUpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQo
bV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdp
c3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVw
OjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7Ci0KICAgICAgICAgcGF0Y2hw
b2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwogCi0g
ICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUg
PQotICAgICAgICAgICAgcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQp
OworICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFu
ZGxlID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwogCiAgICAg
ICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOworICAgICAgICBOb2RlKiBub2RlID0gbV9u
b2RlOwogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCiAgICAgICAgICAgICBbPV0g
KENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFt
cykgewogICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxv
d1NjcmF0Y2goaml0KTsKIAotICAgICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJ
bmRleCA9Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlLT5qaXRDb2RlLT5jb21tb24uY29kZU9y
aWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAg
ICAgICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPSBzdGF0ZS0+aml0Q29k
ZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGUtPm9yaWdp
bi5zZW1hbnRpYyk7CiAKICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBkaXJlY3QgZXhp
dCB0YXJnZXQgZm9yIG9wZXJhdGlvbiBjYWxscy4KLSAgICAgICAgICAgICAgICBCb3g8Q0NhbGxI
ZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9Ci0gICAgICAgICAgICAgICAgICAgIGV4Y2Vw
dGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKKyAg
ICAgICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9IGV4
Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsK
IAotICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVEluQnlJZEdlbmVyYXRv
cj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCi0gICAgICAgICAgICAgICAgICAgIHBhcmFt
cy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBpZGVudGlmaWVyLCBKU1ZhbHVlUmVncyhwYXJhbXNb
MV0uZ3ByKCkpLAotICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3By
KCkpKTsKKyAgICAgICAgICAgICAgICBhdXRvIHJldHVybkdQUiA9IHBhcmFtc1swXS5ncHIoKTsK
KyAgICAgICAgICAgICAgICBhdXRvIGJhc2UgPSBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkp
OworCisgICAgICAgICAgICAgICAgY29uc3QgYXV0byBzdWJzY3JpcHQgPSBbJl0geworICAgICAg
ICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0gSW5CeUtpbmQ6Ok5vcm1hbCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
c3Vic2NyaXB0VmFsdWUucmF3Qml0cygpKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdzKHBhcmFtc1syXS5ncHIoKSk7
CisgICAgICAgICAgICAgICAgfSgpOworCisgICAgICAgICAgICAgICAgY29uc3QgYXV0byBnZW5l
cmF0b3IgPSBbJl0geworICAgICAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0g
SW5CeUtpbmQ6Ok5vcm1hbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJveDxK
SVRJbkJ5SWRHZW5lcmF0b3I+OjpjcmVhdGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
IHN1YnNjcmlwdFZhbHVlLCBiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFs
dWVSZWdzKHJldHVybkdQUikpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEJveDxKSVRJbkJ5VmFsR2VuZXJhdG9yPjo6Y3JlYXRl
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBiYXNlLCBzdWJzY3JpcHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmV0dXJuR1BSKSk7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KCk7CiAKICAgICAgICAgICAgICAgICBnZW5l
cmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKQEAgLTEyMjc0LDEyICsxMjI4MywyMiBAQCBw
cml2YXRlOgogCiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVt
cCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okxh
YmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkluQnlJZE9wdGltaXplLCBwYXJhbXNbMF0u
Z3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygp
KSwgcGFyYW1zWzFdLmdwcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZp
ZXIucmF3Qml0cygpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OkNhbGwgc2xvd1BhdGhDYWxsOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgY29uc3Rl
eHByIChraW5kID09IEluQnlLaW5kOjpOb3JtYWwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhj
ZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUsIHJldHVybkdQUiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UsIHN1YnNjcmlwdCkuY2FsbCgpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhj
ZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uSW5CeVZhbE9wdGltaXplLCByZXR1cm5HUFIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIobnVsbHB0ciksIGJhc2UsIHN1YnNjcmlwdCkuY2FsbCgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwg
JmppdCk7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1Bh
dGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CkBAIC0xMjI5NCw2ICsxMjMxMywx
NiBAQCBwcml2YXRlOgogICAgICAgICBzZXRKU1ZhbHVlKHBhdGNocG9pbnQpOwogICAgIH0KIAor
ICAgIHZvaWQgY29tcGlsZUluQnlJZCgpCisgICAgeworICAgICAgICBjb21waWxlSW5CeTxJbkJ5
S2luZDo6Tm9ybWFsPihsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX25vZGUtPmNhY2hlYWJs
ZUlkZW50aWZpZXIoKSk7CisgICAgfQorCisgICAgdm9pZCBjb21waWxlSW5CeVZhbCgpCisgICAg
eworICAgICAgICBjb21waWxlSW5CeTxJbkJ5S2luZDo6Tm9ybWFsQnlWYWw+KGxvd0NlbGwobV9u
b2RlLT5jaGlsZDEoKSksIGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSkpOworICAgIH0KKwog
ICAgIHZvaWQgY29tcGlsZUhhc093blByb3BlcnR5KCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5z
ZW1hbnRpYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCmluZGV4IGFlM2M3ODY5NTg1
YS4uZjA0YzFmNDI4ZTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lD
U3RhdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaApAQCAtNDMs
NiArNDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhHZXRCeVNlbGZQYXRjaCkgXAog
ICAgIG1hY3JvKEluQWRkQWNjZXNzQ2FzZSkgXAogICAgIG1hY3JvKEluUmVwbGFjZVdpdGhKdW1w
KSBcCisgICAgbWFjcm8oSW5SZXBsYWNlV2l0aEdlbmVyaWMpIFwKICAgICBtYWNybyhJbnN0YW5j
ZU9mQWRkQWNjZXNzQ2FzZSkgXAogICAgIG1hY3JvKEluc3RhbmNlT2ZSZXBsYWNlV2l0aEp1bXAp
IFwKICAgICBtYWNybyhPcGVyYXRpb25HZXRCeUlkKSBcCkBAIC01Miw3ICs1Myw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIG1hY3JvKE9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUpIFwKICAgICBt
YWNybyhPcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSkgXAogICAgIG1hY3JvKE9wZXJh
dGlvbkdlbmVyaWNJbikgXAotICAgIG1hY3JvKE9wZXJhdGlvbkluQnlJZCkgXAorICAgIG1hY3Jv
KE9wZXJhdGlvbkluQnlJZEdlbmVyaWMpIFwKICAgICBtYWNybyhPcGVyYXRpb25JbkJ5SWRPcHRp
bWl6ZSkgXAogICAgIG1hY3JvKE9wZXJhdGlvblB1dEJ5SWRTdHJpY3QpIFwKICAgICBtYWNybyhP
cGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5k
ZXggZWUxYTRlMzdmZmMyLi40ZTdlY2I5NDIwNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAKQEAgLTI4NSw3ICsyODUsNiBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygp
CiAgICAgICAgIH0KIAogICAgICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7Ci0gICAgICAgIERFRklO
RV9TTE9XX09QKGluX2J5X3ZhbCkKICAgICAgICAgREVGSU5FX1NMT1dfT1AoaGFzX3ByaXZhdGVf
bmFtZSkKICAgICAgICAgREVGSU5FX1NMT1dfT1AoaGFzX3ByaXZhdGVfYnJhbmQpCiAgICAgICAg
IERFRklORV9TTE9XX09QKGxlc3MpCkBAIC0zNjEsNiArMzYwLDcgQEAgdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfYmVsb3dlcSkKICAgICAg
ICAgREVGSU5FX09QKG9wX3RyeV9nZXRfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9pbl9i
eV9pZCkKKyAgICAgICAgREVGSU5FX09QKG9wX2luX2J5X3ZhbCkKICAgICAgICAgREVGSU5FX09Q
KG9wX2dldF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9ieV9pZF93aXRoX3RoaXMp
CiAgICAgICAgIERFRklORV9PUChvcF9nZXRfYnlfaWRfZGlyZWN0KQpAQCAtNTE4LDggKzUxOCw5
IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgbV9nZXRCeUlkV2l0
aFRoaXNJbmRleCA9IDA7CiAgICAgbV9wdXRCeUlkSW5kZXggPSAwOwogICAgIG1faW5CeUlkSW5k
ZXggPSAwOwotICAgIG1fZGVsQnlWYWxJbmRleCA9IDA7CisgICAgbV9pbkJ5VmFsSW5kZXggPSAw
OwogICAgIG1fZGVsQnlJZEluZGV4ID0gMDsKKyAgICBtX2RlbEJ5VmFsSW5kZXggPSAwOwogICAg
IG1faW5zdGFuY2VPZkluZGV4ID0gMDsKICAgICBtX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4ID0g
MDsKICAgICBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleCA9IDA7CkBAIC01NzAsNiArNTcxLDcgQEAg
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dD
QVNFX09QKG9wX2VxKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfdHJ5X2dldF9ieV9p
ZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2luX2J5X2lkKQorICAgICAgICBERUZJ
TkVfU0xPV0NBU0VfT1Aob3BfaW5fYnlfdmFsKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Ao
b3BfZ2V0X2J5X2lkKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZ2V0X2J5X2lkX3dp
dGhfdGhpcykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2dldF9ieV9pZF9kaXJlY3Qp
CkBAIC05MTksNiArOTIxLDcgQEAgdm9pZCBKSVQ6OmxpbmsoKQogICAgIGZpbmFsaXplSW5saW5l
Q2FjaGVzKG1fZGVsQnlJZHMsIHBhdGNoQnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hl
cyhtX2RlbEJ5VmFscywgcGF0Y2hCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1f
aW5CeUlkcywgcGF0Y2hCdWZmZXIpOworICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1faW5CeVZh
bHMsIHBhdGNoQnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2luc3RhbmNlT2Zz
LCBwYXRjaEJ1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9wcml2YXRlQnJhbmRB
Y2Nlc3NlcywgcGF0Y2hCdWZmZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA3NWM5
Y2I5NmIxMzYuLjM4Y2M4ODg3YzM2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC01NjUs
NiArNTY1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYXJn
dW1lbnRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9n
ZXRfcHJvdG90eXBlX29mKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfaW5f
YnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pbml0X2xh
enlfcmVnKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9vdmVycmlk
ZXNfaGFzX2luc3RhbmNlKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9pbnN0YW5jZW9mKGNvbnN0IEluc3RydWN0aW9uKik7CkBAIC02OTgsNiArNjk5LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFu
ZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsK
ICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYXJndW1lbnRfYnlfdmFsKGNvbnN0IEluc3Ry
dWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lk
IGVtaXRTbG93X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2luX2J5X3ZhbChj
b25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAg
ICAgICAgdm9pZCBlbWl0U2xvd19vcF9pbnN0YW5jZW9mKGNvbnN0IEluc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29w
X2luc3RhbmNlb2ZfY3VzdG9tKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2psZXNzKGNvbnN0IElu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwpAQCAtMTAzNyw2
ICsxMDM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFZlY3RvcjxKSVRHZXRCeUlkV2l0
aFRoaXNHZW5lcmF0b3I+IG1fZ2V0QnlJZHNXaXRoVGhpczsKICAgICAgICAgVmVjdG9yPEpJVFB1
dEJ5SWRHZW5lcmF0b3I+IG1fcHV0QnlJZHM7CiAgICAgICAgIFZlY3RvcjxKSVRJbkJ5SWRHZW5l
cmF0b3I+IG1faW5CeUlkczsKKyAgICAgICAgVmVjdG9yPEpJVEluQnlWYWxHZW5lcmF0b3I+IG1f
aW5CeVZhbHM7CiAgICAgICAgIFZlY3RvcjxKSVREZWxCeUlkR2VuZXJhdG9yPiBtX2RlbEJ5SWRz
OwogICAgICAgICBWZWN0b3I8SklURGVsQnlWYWxHZW5lcmF0b3I+IG1fZGVsQnlWYWxzOwogICAg
ICAgICBWZWN0b3I8SklUSW5zdGFuY2VPZkdlbmVyYXRvcj4gbV9pbnN0YW5jZU9mczsKQEAgLTEw
NjMsNiArMTA2Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bnNpZ25lZCBtX2dldEJ5
SWRXaXRoVGhpc0luZGV4IHsgVUlOVF9NQVggfTsKICAgICAgICAgdW5zaWduZWQgbV9wdXRCeUlk
SW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBtX2luQnlJZEluZGV4IHsgVUlO
VF9NQVggfTsKKyAgICAgICAgdW5zaWduZWQgbV9pbkJ5VmFsSW5kZXggeyBVSU5UX01BWCB9Owog
ICAgICAgICB1bnNpZ25lZCBtX2RlbEJ5VmFsSW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1
bnNpZ25lZCBtX2RlbEJ5SWRJbmRleCB7IFVJTlRfTUFYIH07CiAgICAgICAgIHVuc2lnbmVkIG1f
aW5zdGFuY2VPZkluZGV4IHsgVUlOVF9NQVggfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKaW5kZXggZjUyYzNjNzYyMTVh
Li4xODkzYzY4MDEyYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBAIC0yMzUsMTAgKzIzNSwzOCBAQCB2b2lkIEpJ
VERlbEJ5SWRHZW5lcmF0b3I6OmZpbmFsaXplKAogICAgICAgICBmYXN0UGF0aCwgc2xvd1BhdGgs
IGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKIH0K
IAotSklUSW5CeUlkR2VuZXJhdG9yOjpKSVRJbkJ5SWRHZW5lcmF0b3IoCi0gICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0
ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCi0gICAgQ2FjaGVhYmxlSWRlbnRp
ZmllciBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlKQot
ICAgIDogSklUQnlJZEdlbmVyYXRvcihjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBB
Y2Nlc3NUeXBlOjpJbiwgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUpCitKSVRJbkJ5VmFsR2Vu
ZXJhdG9yOjpKSVRJbkJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0
ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3Bl
cnR5LCBKU1ZhbHVlUmVncyByZXN1bHQpCisgICAgOiBCYXNlKGNvZGVCbG9jaywgY29kZU9yaWdp
biwgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6SW5CeVZhbCwgdXNlZFJlZ2lzdGVycykKK3sK
KyAgICBtX3N0dWJJbmZvLT5oYXNDb25zdGFudElkZW50aWZpZXIgPSBmYWxzZTsKKworICAgIG1f
c3R1YkluZm8tPmJhc2VHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT5y
ZWdzLnByb3BlcnR5R1BSID0gcHJvcGVydHkucGF5bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8t
PnZhbHVlR1BSID0gcmVzdWx0LnBheWxvYWRHUFIoKTsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQor
ICAgIG1fc3R1YkluZm8tPmJhc2VUYWdHUFIgPSBiYXNlLnRhZ0dQUigpOworICAgIG1fc3R1Yklu
Zm8tPnZhbHVlVGFnR1BSID0gcmVzdWx0LnRhZ0dQUigpOworICAgIG1fc3R1YkluZm8tPnYucHJv
cGVydHlUYWdHUFIgPSBwcm9wZXJ0eS50YWdHUFIoKTsKKyNlbmRpZgorfQorCit2b2lkIEpJVElu
QnlWYWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKK3sK
KyAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7CisgICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0
Y2hhYmxlSnVtcCgpOworICAgIG1fZG9uZSA9IGppdC5sYWJlbCgpOworfQorCit2b2lkIEpJVElu
QnlWYWxHZW5lcmF0b3I6OmZpbmFsaXplKAorICAgIExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5r
QnVmZmVyJiBzbG93UGF0aCkKK3sKKyAgICBBU1NFUlQobV9zdGFydC5pc1NldCgpKTsKKyAgICBC
YXNlOjpmaW5hbGl6ZSgKKyAgICAgICAgZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2Nh
dGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7Cit9CisKK0pJVEluQnlJZEdl
bmVyYXRvcjo6SklUSW5CeUlkR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0
JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUpCisgICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNv
ZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkluQnlJZCwgdXNlZFJl
Z2lzdGVycywgYmFzZSwgdmFsdWUpCiB7CiAgICAgLy8gRklYTUU6IFdlIGFyZSBub3Qgc3VwcG9y
dGluZyBmYXN0IHBhdGggZm9yICJsZW5ndGgiIHByb3BlcnR5LgogICAgIFVOVVNFRF9QQVJBTShw
cm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVDYWNoZUdlbmVyYXRvci5oCmluZGV4IGQ2Y2E2ZTE2YTNmMy4uOTA0ZGIxNDIyMjM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9y
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRv
ci5oCkBAIC0xOTUsNiArMTk1LDMxIEBAIHByaXZhdGU6CiAgICAgTWFjcm9Bc3NlbWJsZXI6OlBh
dGNoYWJsZUp1bXAgbV9zbG93UGF0aEp1bXA7CiB9OwogCitjbGFzcyBKSVRJbkJ5VmFsR2VuZXJh
dG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKKyAgICB1c2luZyBCYXNlID0g
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3I7CitwdWJsaWM6CisgICAgSklUSW5CeVZhbEdlbmVyYXRv
cigpIHsgfQorCisgICAgSklUSW5CeVZhbEdlbmVyYXRvcigKKyAgICAgICAgQ29kZUJsb2NrKiwg
Q29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3Rl
cnMsCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1Zh
bHVlUmVncyByZXN1bHQpOworCisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2xvd1BhdGhKdW1w
KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3Nsb3dQYXRoSnVtcC5tX2p1bXAuaXNT
ZXQoKSk7CisgICAgICAgIHJldHVybiBtX3Nsb3dQYXRoSnVtcC5tX2p1bXA7CisgICAgfQorCisg
ICAgdm9pZCBmaW5hbGl6ZSgKKyAgICAgICAgTGlua0J1ZmZlciYgZmFzdFBhdGhMaW5rQnVmZmVy
LCBMaW5rQnVmZmVyJiBzbG93UGF0aExpbmtCdWZmZXIpOworCisgICAgdm9pZCBnZW5lcmF0ZUZh
c3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CisKK3ByaXZhdGU6CisgICAgTWFjcm9Bc3NlbWJsZXI6
OkxhYmVsIG1fc3RhcnQ7CisgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbV9zbG93
UGF0aEp1bXA7Cit9OworCiBjbGFzcyBKSVRJbkJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJ
ZEdlbmVyYXRvciB7CiBwdWJsaWM6CiAgICAgSklUSW5CeUlkR2VuZXJhdG9yKCkgeyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCAwNjAzZjkzYTlh
ZmYuLjZiZmU5NTg0NGQxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCkBAIC0zOTQsNyArMzk0LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2wKICAg
ICB9KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25JbkJ5SWQsIEVu
Y29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVh
YmxlSWRlbnRpZmllcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5CeUlk
R2VuZXJpYywgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGJhc2UsIHVpbnRwdHJf
dCByYXdDYWNoZWFibGVJZGVudGlmaWVyKSkKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBl
clNhbXBsZXJTY29wZShmYWxzZSk7CiAKQEAgLTQxNSw3ICs0MTUsNyBAQCBKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uSW5CeUlkLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYQogICAgIH0KICAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJh
c2VWYWx1ZSk7CiAKLSAgICBMT0dfSUMoKElDRXZlbnQ6Ok9wZXJhdGlvbkluQnlJZCwgYmFzZU9i
amVjdC0+Y2xhc3NJbmZvKHZtKSwgaWRlbnQpKTsKKyAgICBMT0dfSUMoKElDRXZlbnQ6Ok9wZXJh
dGlvbkluQnlJZEdlbmVyaWMsIGJhc2VPYmplY3QtPmNsYXNzSW5mbyh2bSksIGlkZW50KSk7CiAK
ICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6Okhhc1Byb3BlcnR5KTsKQEAgLTQ0OCwx
OSArNDQ4LDYyIEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25JbkJ5SWRPcHRp
bWl6ZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjCiAgICAgYm9vbCBmb3VuZCA9IGJh
c2VPYmplY3QtPmdldFByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90KTsKICAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CiAgICAgaWYg
KHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdCeSh2bSwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LT5z
dHJ1Y3R1cmUodm0pLCBpZGVudGlmaWVyKSkKLSAgICAgICAgcmVwYXRjaEluQnlJRChnbG9iYWxP
YmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgaWRlbnRpZmllciwgZm91bmQsIHNsb3QsICpz
dHViSW5mbyk7CisgICAgICAgIHJlcGF0Y2hJbkJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBi
YXNlT2JqZWN0LCBpZGVudGlmaWVyLCBmb3VuZCwgc2xvdCwgKnN0dWJJbmZvLCBJbkJ5S2luZDo6
Tm9ybWFsKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmb3VuZCkpOwog
fQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5CeVZhbCwgRW5jb2RlZEpT
VmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGJhc2UsIEVuY29k
ZWRKU1ZhbHVlIGtleSkpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5CeVZh
bE9wdGltaXplLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkS2V5KSkK
IHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7Ci0gICAg
CisKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3Vl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisgICAgaWYgKCFiYXNlVmFsdWUuaXNPYmplY3QoKSkg
eworICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVJbnZh
bGlkSW5QYXJhbWV0ZXJFcnJvcihnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSkpOworICAgICAgICBy
ZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKKyAgICB9CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3Qg
PSBhc09iamVjdChiYXNlVmFsdWUpOworICAgIGlmIChhcnJheVByb2ZpbGUpCisgICAgICAgIGFy
cmF5UHJvZmlsZS0+b2JzZXJ2ZVN0cnVjdHVyZShiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUodm0pKTsK
KworICAgIEpTVmFsdWUga2V5ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRLZXkpOworICAgIHVp
bnQzMl90IGk7CisgICAgaWYgKGtleS5nZXRVSW50MzIoaSkpIHsKKyAgICAgICAgaWYgKGFycmF5
UHJvZmlsZSkKKyAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+b2JzZXJ2ZUluZGV4ZWRSZWFkKHZt
LCBiYXNlT2JqZWN0LCBpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUoanNCb29sZWFuKGJhc2VPYmplY3QtPmhhc1Byb3BlcnR5KGdsb2JhbE9iamVj
dCwgaSkpKSk7CisgICAgfQorCisgICAgY29uc3QgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBr
ZXkudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmpl
Y3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpIYXNQcm9wZXJ0eSk7CisgICAg
Ym9vbCBmb3VuZCA9IGJhc2VPYmplY3QtPmdldFByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CisKKyAgICBpZiAoQ2FjaGVhYmxlSWRlbnRpZmllcjo6aXNDYWNoZWFibGVJ
ZGVudGlmaWVyQ2VsbChrZXkpICYmIChrZXkuaXNTeW1ib2woKSB8fCAhcGFyc2VJbmRleChwcm9w
ZXJ0eU5hbWUpKSkgeworICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+
Y29kZUJsb2NrKCk7CisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21DZWxsKGtleS5hc0NlbGwoKSk7CisgICAgICAg
IGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nQnkodm0sIGNvZGVCbG9jaywgYmFzZU9iamVj
dC0+c3RydWN0dXJlKHZtKSwgaWRlbnRpZmllcikpCisgICAgICAgICAgICByZXBhdGNoSW5CeShn
bG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgaWRlbnRpZmllciwgZm91bmQsIHNs
b3QsICpzdHViSW5mbywgSW5CeUtpbmQ6Ok5vcm1hbEJ5VmFsKTsKKyAgICB9CisKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmb3VuZCkpOworfQorCitKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uSW5CeVZhbEdlbmVyaWMsIEVuY29kZWRKU1ZhbHVlLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBB
cnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgRW5jb2RlZEpT
VmFsdWUga2V5KSkKK3sKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShm
YWxzZSk7CisKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblBy
b2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbkJ5VmFsKGds
b2JhbE9iamVjdCwgYmFzZSwgSlNWYWx1ZTo6ZGVjb2RlKGtleSkpKSk7CisgICAgc3R1YkluZm8t
PnRvb2tTbG93UGF0aCA9IHRydWU7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xl
YW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluQnlWYWwoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNv
ZGUoYmFzZSksIEpTVmFsdWU6OmRlY29kZShrZXkpLCBhcnJheVByb2ZpbGUpKSk7CiB9CiAKIEpT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25IYXNQcml2YXRlTmFtZSwgRW5jb2RlZEpT
VmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGJhc2UsIEVuY29k
ZWRKU1ZhbHVlIGtleSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5o
CmluZGV4IDNlMWVhYjcyMGFiYi4uZDg3NzA2NmM4NTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMTc0LDEwICsxNzQsMTAgQEAgSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25HZXRCeUlkRGlyZWN0LCBFbmNvZGVkSlNWYWx1ZSwgKEpT
R2xvYmFsT2JqZWMKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0QnlJZERp
cmVjdEdlbmVyaWMsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSwgdWludHB0cl90KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdl
dEJ5SWREaXJlY3RPcHRpbWl6ZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIHVpbnRwdHJfdCkpOwogCi1KU0NfREVD
TEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluQnlJZCwgRW5jb2RlZEpTVmFsdWUsIChKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIHVpbnRwdHJf
dCkpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25JbkJ5SWRHZW5lcmljLCBF
bmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNv
ZGVkSlNWYWx1ZSwgdWludHB0cl90KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbkluQnlJZE9wdGltaXplLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgdWludHB0cl90KSk7Ci0KLUpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5CeVZhbCwgRW5jb2RlZEpTVmFsdWUsIChKU0ds
b2JhbE9iamVjdCosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlKSk7CitKU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbkluQnlWYWxHZW5lcmljLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBBcnJheVByb2ZpbGUqLCBFbmNvZGVkSlNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUpKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uSW5CeVZhbE9wdGltaXplLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlU3R1YkluZm8qLCBBcnJheVByb2ZpbGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSGFzUHJpdmF0ZU5h
bWUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqLCBFbmNvZGVkSlNW
YWx1ZSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25IYXNQcml2YXRlQnJh
bmQsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqLCBFbmNvZGVkSlNW
YWx1ZSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwCmluZGV4IDY0NDY3ZTlhMjVlMS4uMzgxNGM1ZWQ0OGExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtMTU3Myw2ICsxNTcz
LDc2IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvCiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2Fs
bChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfaW5fYnlfdmFs
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJbkJ5VmFsPigpOworICAgIFZpcnR1YWxS
ZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9
IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29k
ZS5tX3Byb3BlcnR5OworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9j
b2RlQmxvY2spOworICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5
UHJvZmlsZTsKKworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOworICAg
IGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7CisgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcmVnVDEpOworICAgIGVtaXRBcnJheVByb2ZpbGluZ1Np
dGVXaXRoQ2VsbChyZWdUMCwgcmVnVDIsIHByb2ZpbGUpOworCisgICAgSklUSW5CeVZhbEdlbmVy
YXRvciBnZW4oCisgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRl
eCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2
YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVS
ZWdzKHJlZ1QxKSwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0
aCgqdGhpcyk7CisgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBtX2lu
QnlWYWxzLmFwcGVuZChnZW4pOworCisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOwor
fQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIp
Cit7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5CeVZhbD4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIg
ZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRh
ZGF0YShtX2NvZGVCbG9jayk7CisgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gJm1ldGFkYXRh
Lm1fYXJyYXlQcm9maWxlOworCisgICAgSklUSW5CeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9pbkJ5
VmFsc1ttX2luQnlWYWxJbmRleCsrXTsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJl
bCgpOworCisjaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorICAgIENhbGwgY2FsbCA9IGNh
bGxPcGVyYXRpb25XaXRoUHJvZmlsZShtZXRhZGF0YSwgb3BlcmF0aW9uSW5CeVZhbE9wdGltaXpl
LCBkc3QsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0
dWJJbmZvKCksIHByb2ZpbGUsIHJlZ1QwLCByZWdUMSk7CisjZWxzZQorICAgIFZNJiB2bSA9IHRo
aXMtPnZtKCk7CisgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgu
b2Zmc2V0KCk7CisgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1f
Ynl0ZWNvZGVJbmRleCk7CisKKyAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BS
ID0gYXJndW1lbnRHUFI0OworICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwg
Ynl0ZWNvZGVPZmZzZXRHUFIpOworCisgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9
IGFyZ3VtZW50R1BSMzsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgPSBhcmd1bWVu
dEdQUjI7CisgICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gcmVnVDA7CisgICAgY29uc3Rl
eHByIEdQUlJlZyBwcm9wZXJ0eUdQUiA9IHJlZ1QxOworICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQ
UiA9PSBhcmd1bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7CisgICAgc3RhdGljX2Fzc2VydChwcm9w
ZXJ0eUdQUiA9PSBhcmd1bWVudEdQUjEpOworCisgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdlbi5z
dHViSW5mbygpKSwgc3R1YkluZm9HUFIpOworICAgIG1vdmUoVHJ1c3RlZEltbVB0cihwcm9maWxl
KSwgcHJvZmlsZUdQUik7CisgICAgLy8gc2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxsR2Vu
ZXJhdG9yIHdpbGwgZG8gZXhhY3RseSB3aGF0IHdlIG5lZWQuCisgICAgLy8gU28sIHRoZXJlJ3Mg
bm8gcG9pbnQgaW4gY3JlYXRpbmcgYSBkdXBsaWNhdGUgdGh1bmsganVzdCB0byBnaXZlIGl0IGEg
ZGlmZmVyZW50IG5hbWUuCisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUo
b3BlcmF0aW9uSW5CeVZhbE9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlWYWxPcHRp
bWl6ZSk+Ojp2YWx1ZSk7CisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93
X29wX2dldF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRh
Zz4oKSk7CisKKyAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkluQnlWYWxPcHRp
bWl6ZSk7CisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlv
bkdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKKworICAgIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIoZHN0LCByZXR1cm5WYWx1ZUdQUik7CisjZW5kaWYgLy8gRU5BQkxFKEVYVFJB
X0NUSV9USFVOS1MpCisKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4s
IGNhbGwpOworfQorCiB2b2lkIEpJVDo6ZW1pdFZhckluamVjdGlvbkNoZWNrKGJvb2wgbmVlZHNW
YXJJbmplY3Rpb25DaGVja3MpCiB7CiAgICAgaWYgKCFuZWVkc1ZhckluamVjdGlvbkNoZWNrcykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3Mz
Ml82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJf
NjQuY3BwCmluZGV4IGMyMmM3NzA0Mjg5YS4uMmQ5ZDQ1MDg1NzRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKQEAgLTkw
OCw2ICs5MDgsNDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luX2J5X2lkKGNvbnN0IEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG8KICAgICBnZW4ucmVwb3J0U2xv
d1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9p
bl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBh
dXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEluQnlWYWw+KCk7CisgICAg
VmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OworICAgIFZpcnR1YWxSZWdpc3Rl
ciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOworICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9
IGJ5dGVjb2RlLm1fcHJvcGVydHk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRh
ZGF0YShtX2NvZGVCbG9jayk7CisgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gJm1ldGFkYXRh
Lm1fYXJyYXlQcm9maWxlOworCisgICAgZW1pdExvYWQyKGJhc2UsIHJlZ1QxLCByZWdUMCwgcHJv
cGVydHksIHJlZ1QzLCByZWdUMik7CisgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJh
c2UsIHJlZ1QxKTsKKyAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwocmVnVDAsIHJl
Z1Q0LCBwcm9maWxlKTsKKworICAgIEpJVEluQnlWYWxHZW5lcmF0b3IgZ2VuKAorICAgICAgICBt
X2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1f
Ynl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwK
KyAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVn
VDMsIHJlZ1QyKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSk7CisgICAgZ2VuLmdlbmVyYXRl
RmFzdFBhdGgoKnRoaXMpOworICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7Cisg
ICAgbV9pbkJ5VmFscy5hcHBlbmQoZ2VuKTsKKworICAgIGVtaXRTdG9yZShkc3QsIHJlZ1QxLCBy
ZWdUMCk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKK3sKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworCisgICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJbkJ5VmFsPigpOworICAgIFZpcnR1YWxS
ZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKKyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVj
b2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKKyAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSAm
bWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CisKKyAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yJiBnZW4g
PSBtX2luQnlWYWxzW21faW5CeVZhbEluZGV4KytdOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdp
biA9IGxhYmVsKCk7CisKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uV2l0aFByb2ZpbGUo
bWV0YWRhdGEsIG9wZXJhdGlvbkluQnlWYWxPcHRpbWl6ZSwgZHN0LCBUcnVzdGVkSW1tUHRyKG1f
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBwcm9maWxlLCBKU1Zh
bHVlUmVncyhyZWdUMSwgcmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpKTsKKworICAg
IGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7Cit9CisKIHZvaWQg
SklUOjplbWl0VmFySW5qZWN0aW9uQ2hlY2soYm9vbCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcykK
IHsKICAgICBpZiAoIW5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvUmVwYXRjaC5jcHAKaW5kZXggOTA1ZjhkN2YyYWZiLi5iNGJhZWJkNGRkYTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtODk3LDcgKzg5Nyw3IEBAIHZvaWQgcmVw
YXRjaERlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29k
ZUJsb2NrLCBEZWxldGVQCiAgICAgfQogfQogCi1zdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5
Q2FjaGVJbkJ5SUQoCitzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbkJ5KAogICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU09i
amVjdCogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsCiAgICAgYm9vbCB3
YXNGb3VuZCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1
YkluZm8pCiB7CkBAIC05MDksMTcgKzkwOSwxNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24g
dHJ5Q2FjaGVJbkJ5SUQoCiAgICAgICAgIEdDU2FmZUNvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIo
Y29kZUJsb2NrLT5tX2xvY2ssIHZtLmhlYXApOwogICAgICAgICBpZiAoZm9yY2VJQ0ZhaWx1cmUo
Z2xvYmFsT2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwotICAgICAg
ICAKKwogICAgICAgICBpZiAoIWJhc2UtPnN0cnVjdHVyZSh2bSktPnByb3BlcnR5QWNjZXNzZXNB
cmVDYWNoZWFibGUoKSB8fCAoIXdhc0ZvdW5kICYmICFiYXNlLT5zdHJ1Y3R1cmUodm0pLT5wcm9w
ZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlRm9yQWJzZW5jZSgpKSkKICAgICAgICAgICAgIHJldHVy
biBHaXZlVXBPbkNhY2hlOwotICAgICAgICAKKwogICAgICAgICBpZiAod2FzRm91bmQpIHsKICAg
ICAgICAgICAgIGlmICghc2xvdC5pc0NhY2hlYWJsZSgpKQogICAgICAgICAgICAgICAgIHJldHVy
biBHaXZlVXBPbkNhY2hlOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gYmFzZS0+c3RydWN0dXJlKHZtKTsKLSAgICAgICAgCisKICAgICAgICAg
UmVmUHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVBY2Nlc3NDaGFpbjsKICAgICAg
ICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgY29uZGl0aW9uU2V0OwogICAgICAgICBpZiAo
d2FzRm91bmQpIHsKQEAgLTk5MSwyMyArOTkxLDI5IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlv
biB0cnlDYWNoZUluQnlJRCgKIAogICAgICAgICBpZiAocmVzdWx0LmdlbmVyYXRlZFNvbWVDb2Rl
KCkpIHsKICAgICAgICAgICAgIExPR19JQygoSUNFdmVudDo6SW5SZXBsYWNlV2l0aEp1bXAsIHN0
cnVjdHVyZS0+Y2xhc3NJbmZvKCksIGlkZW50LCBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZSkpOwot
ICAgICAgICAgICAgCisKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5jb2RlKCkp
OwogICAgICAgICAgICAgSW5saW5lQWNjZXNzOjpyZXdpcmVTdHViQXNKdW1wKHN0dWJJbmZvLCBD
b2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4ocmVzdWx0LmNvZGUoKSkpOwog
ICAgICAgICB9CiAgICAgfQogCiAgICAgZmlyZVdhdGNocG9pbnRzQW5kQ2xlYXJTdHViSWZOZWVk
ZWQodm0sIHN0dWJJbmZvLCBjb2RlQmxvY2ssIHJlc3VsdCk7Ci0gICAgCisKICAgICByZXR1cm4g
cmVzdWx0LnNob3VsZEdpdmVVcE5vdygpID8gR2l2ZVVwT25DYWNoZSA6IFJldHJ5Q2FjaGVMYXRl
cjsKIH0KIAotdm9pZCByZXBhdGNoSW5CeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENvZGVCbG9jayogY29kZUJsb2NrLCBKU09iamVjdCogYmFzZU9iamVjdCwgQ2FjaGVhYmxlSWRl
bnRpZmllciBwcm9wZXJ0eU5hbWUsIGJvb2wgd2FzRm91bmQsIGNvbnN0IFByb3BlcnR5U2xvdCYg
c2xvdCwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQordm9pZCByZXBhdGNoSW5CeShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNPYmplY3Qq
IGJhc2VPYmplY3QsIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBib29sIHdhc0Zv
dW5kLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5m
bywgSW5CeUtpbmQga2luZCkKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJT
Y29wZShmYWxzZSk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogCi0gICAgaWYg
KHRyeUNhY2hlSW5CeUlEKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHdhc0ZvdW5kLCBzbG90LCBzdHViSW5mbykgPT0gR2l2ZVVwT25DYWNoZSkKLSAg
ICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1Bh
dGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkluQnlJZCk7CisgICAgaWYgKHRyeUNhY2hlSW5CeShn
bG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgcHJvcGVydHlOYW1lLCB3YXNGb3Vu
ZCwgc2xvdCwgc3R1YkluZm8pID09IEdpdmVVcE9uQ2FjaGUpIHsKKyAgICAgICAgTE9HX0lDKChJ
Q0V2ZW50OjpJblJlcGxhY2VXaXRoR2VuZXJpYywgYmFzZU9iamVjdC0+Y2xhc3NJbmZvKGdsb2Jh
bE9iamVjdC0+dm0oKSksIElkZW50aWZpZXI6OmZyb21VaWQodm0sIHByb3BlcnR5TmFtZS51aWQo
KSkpKTsKKyAgICAgICAgaWYgKGtpbmQgPT0gSW5CeUtpbmQ6Ok5vcm1hbCkKKyAgICAgICAgICAg
IGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2Fs
bExvY2F0aW9uLCBvcGVyYXRpb25JbkJ5SWRHZW5lcmljKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1Bh
dGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkluQnlWYWxHZW5lcmljKTsKKyAgICB9CiB9CiAKIHN0
YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUNoZWNrUHJpdmF0ZUJyYW5kKApAQCAtMTY4
Myw5ICsxNjg5LDEyIEBAIHN0YXRpYyB2b2lkIHJlc2V0UGF0Y2hhYmxlSnVtcChTdHJ1Y3R1cmVT
dHViSW5mbyYgc3R1YkluZm8pCiAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKHN0dWJJ
bmZvLnBhdGNoYWJsZUp1bXAoKSwgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKIH0K
IAotdm9pZCByZXNldEluQnlJRChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1Yklu
Zm8mIHN0dWJJbmZvKQordm9pZCByZXNldEluQnkoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVj
dHVyZVN0dWJJbmZvJiBzdHViSW5mbywgSW5CeUtpbmQga2luZCkKIHsKLSAgICBmdGxUaHVua0F3
YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwg
b3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpOworICAgIGlmIChraW5kID09IEluQnlLaW5kOjpOb3Jt
YWwpCisgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZv
LnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSk7CisgICAgZWxz
ZQorICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5z
bG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uSW5CeVZhbE9wdGltaXplKTsKICAgICBJbmxp
bmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoU3Rh
cnRMb2NhdGlvbik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVwYXRjaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKaW5kZXggMzEz
NzlkYzRlNWE5Li45MjhjOTliMTI5MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUmVwYXRjaC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5o
CkBAIC00OCwxMSArNDgsMTYgQEAgZW51bSBjbGFzcyBEZWxCeUtpbmQgewogICAgIE5vcm1hbEJ5
VmFsCiB9OwogCitlbnVtIGNsYXNzIEluQnlLaW5kIHsKKyAgICBOb3JtYWwsCisgICAgTm9ybWFs
QnlWYWwKK307CisKIHZvaWQgcmVwYXRjaEFycmF5R2V0QnlWYWwoSlNHbG9iYWxPYmplY3QqLCBD
b2RlQmxvY2sqLCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgaW5kZXgsIFN0cnVjdHVyZVN0dWJJbmZv
Jik7CiB2b2lkIHJlcGF0Y2hHZXRCeShKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFs
dWUsIENhY2hlYWJsZUlkZW50aWZpZXIsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFN0cnVjdHVyZVN0
dWJJbmZvJiwgR2V0QnlLaW5kKTsKIHZvaWQgcmVwYXRjaFB1dEJ5SUQoSlNHbG9iYWxPYmplY3Qq
LCBDb2RlQmxvY2sqLCBKU1ZhbHVlLCBTdHJ1Y3R1cmUqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBj
b25zdCBQdXRQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIFB1dEtpbmQpOwogdm9p
ZCByZXBhdGNoRGVsZXRlQnkoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBEZWxldGVQcm9w
ZXJ0eVNsb3QmLCBKU1ZhbHVlLCBTdHJ1Y3R1cmUqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1
Y3R1cmVTdHViSW5mbyYsIERlbEJ5S2luZCwgRUNNQU1vZGUpOwotdm9pZCByZXBhdGNoSW5CeUlE
KEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqLCBDYWNoZWFibGVJZGVudGlm
aWVyLCBib29sIHdhc0ZvdW5kLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5m
byYpOwordm9pZCByZXBhdGNoSW5CeShKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTT2Jq
ZWN0KiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgYm9vbCB3YXNGb3VuZCwgY29uc3QgUHJvcGVydHlT
bG90JiwgU3RydWN0dXJlU3R1YkluZm8mLCBJbkJ5S2luZCk7CiB2b2lkIHJlcGF0Y2hDaGVja1By
aXZhdGVCcmFuZChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTT2JqZWN0KiwgQ2FjaGVh
YmxlSWRlbnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVwYXRjaFNldFByaXZh
dGVCcmFuZChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTT2JqZWN0KiwgU3RydWN0dXJl
KiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVwYXRj
aEluc3RhbmNlT2YoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU1ZhbHVlIHZhbHVlLCBK
U1ZhbHVlIHByb3RvdHlwZSwgU3RydWN0dXJlU3R1YkluZm8mLCBib29sIHdhc0ZvdW5kKTsKQEAg
LTY0LDcgKzY5LDcgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKiwgQ2FsbExpbmtJbmZvJiwgQ2FsbFZhcmlhbnQKIHZvaWQgcmVzZXRHZXRCeShD
b2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIEdldEJ5S2luZCk7CiB2b2lkIHJlc2V0UHV0
QnlJRChDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXNldERlbEJ5KENv
ZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgRGVsQnlLaW5kKTsKLXZvaWQgcmVzZXRJbkJ5
SUQoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKK3ZvaWQgcmVzZXRJbkJ5KENvZGVC
bG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgSW5CeUtpbmQpOwogdm9pZCByZXNldEluc3RhbmNl
T2YoU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVzZXRDaGVja1ByaXZhdGVCcmFuZChDb2Rl
QmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXNldFNldFByaXZhdGVCcmFuZChD
b2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggZmIwZGRmNjFmNDUzLi5hOWEwMDQ3M2M5
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNw
cApAQCAtMTQyNCw2ICsxNDI0LDE0IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9p
bl9ieV9pZCkKICAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGFzT2JqZWN0KGJhc2VWYWx1ZSkt
Pmhhc1Byb3BlcnR5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2Rl
Lm1fcHJvcGVydHkpKSkpOwogfQogCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaW5f
YnlfdmFsKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgYXV0byBieXRlY29kZSA9IHBjLT5h
czxPcEluQnlWYWw+KCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShj
b2RlQmxvY2spOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpv
cEluQnlWYWwoZ2xvYmFsT2JqZWN0LCBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9i
YXNlKSwgZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fcHJvcGVydHkpLCAmbWV0YWRh
dGEubV9hcnJheVByb2ZpbGUpKSk7Cit9CisKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9wdXRfZ2V0dGVyX2J5X2lkKQogewogICAgIExMSU5UX0JFR0lOKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCmluZGV4IDkyYjIwNDM2ODEwYi4uNDNj
NmNhODQ1MzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuaApAQCAtNzIsNiArNzIsNyBAQCBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX2dldF9ieV9pZCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dl
dF9ieV9pZF93aXRoX3RoaXMpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9wdXRfYnlfaWQpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pbl9i
eV9pZCk7CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2luX2J5X3ZhbCk7
CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2RlbF9ieV9pZCk7CiBMTElO
VF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9ieV92YWwpOwogTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfcHJpdmF0ZV9uYW1lKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRl
eCA4YWEyMjYyZWEzM2MuLmRkNGIzYWMwMjYwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMjAxMCw3ICsyMDEwLDYg
QEAgaWYgbm90IEpTVkFMVUU2NAogICAgIHNsb3dQYXRoT3AoZ2V0X3Byb3RvdHlwZV9vZikKIGVu
ZAogCi1zbG93UGF0aE9wKGluX2J5X3ZhbCkKIHNsb3dQYXRoT3AoaGFzX3ByaXZhdGVfbmFtZSkK
IHNsb3dQYXRoT3AoaGFzX3ByaXZhdGVfYnJhbmQpCiBzbG93UGF0aE9wKGlzX2NhbGxhYmxlKQpA
QCAtMjA0NCw2ICsyMDQzLDcgQEAgbWFjcm8gbGxpbnRTbG93UGF0aE9wKG9wY29kZU5hbWUpCiBl
bmQKIAogbGxpbnRTbG93UGF0aE9wKGluX2J5X2lkKQorbGxpbnRTbG93UGF0aE9wKGluX2J5X3Zh
bCkKIGxsaW50U2xvd1BhdGhPcChkZWxfYnlfaWQpCiBsbGludFNsb3dQYXRoT3AoZGVsX2J5X3Zh
bCkKIGxsaW50U2xvd1BhdGhPcChpbnN0YW5jZW9mKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggNjRjODZlNjExNjI4Li5hMWM0
MTMxMDg2MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmNwcApAQCAtODMwLDE0ICs4MzAsNiBAQCBKU0NfREVGSU5FX0NPTU1PTl9TTE9X
X1BBVEgoc2xvd19wYXRoX2lzX2NvbnN0cnVjdG9yKQogICAgIFJFVFVSTihqc0Jvb2xlYW4oR0VU
X0MoYnl0ZWNvZGUubV9vcGVyYW5kKS5qc1ZhbHVlKCkuaXNDb25zdHJ1Y3Rvcih2bSkpKTsKIH0K
IAotSlNDX0RFRklORV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9pbl9ieV92YWwpCi17Ci0g
ICAgQkVHSU4oKTsKLSAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wSW5CeVZhbD4oKTsKLSAg
ICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7Ci0gICAgUkVU
VVJOKGpzQm9vbGVhbihDb21tb25TbG93UGF0aHM6Om9wSW5CeVZhbChnbG9iYWxPYmplY3QsIEdF
VF9DKGJ5dGVjb2RlLm1fYmFzZSkuanNWYWx1ZSgpLCBHRVRfQyhieXRlY29kZS5tX3Byb3BlcnR5
KS5qc1ZhbHVlKCksICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZSkpKTsKLX0KLQogSlNDX0RFRklO
RV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9oYXNfcHJpdmF0ZV9uYW1lKQogewogICAgIEJF
R0lOKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5oCmluZGV4IDNkYjgxM2M0MTVkMS4uYzgzMDk4MWIwMzkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtMjUxLDcgKzI1MSw2IEBA
IEpTQ19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX3R5cGVvZl9pc19vYmplY3Qp
OwogSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfdHlwZW9mX2lzX2Z1bmN0
aW9uKTsKIEpTQ19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2lzX2NhbGxhYmxl
KTsKIEpTQ19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2lzX2NvbnN0cnVjdG9y
KTsKLUpTQ19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2luX2J5X3ZhbCk7CiBK
U0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9oYXNfcHJpdmF0ZV9uYW1lKTsK
IEpTQ19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2hhc19wcml2YXRlX2JyYW5k
KTsKIEpTQ19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX3N0cmNhdCk7Cg==
</data>
<flag name="commit-queue"
          id="451879"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430439</attachid>
            <date>2021-06-02 20:18:23 -0700</date>
            <delta_ts>2021-06-02 20:37:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>226563.diff</filename>
            <type>text/plain</type>
            <size>101775</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
MzQ5YTg1MmYzMzQxLi4xZTM4ZjVlM2ZiMzYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDYtMDIgIFJv
c3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIFtKU0NdIElt
cGxlbWVudCBKSVQgSUNzIGZvciBJbkJ5VmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY1NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9pbi1ieS12YWwtaW50MzIuanM6
IEFkZGVkLgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9pbi1ieS12YWwtc3RyaW5nLWluZGV4
LmpzOiBBZGRlZC4KKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvaW4tYnktdmFsLXN5bWJvbC5q
czogQWRkZWQuCisKIDIwMjEtMDUtMjggIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxl
LmNvbT4KIAogICAgICAgICBGaXggTGlrZWx5RGVuc2VVbnNpZ25lZEludGVnZXJTZXQ6OmNsZWFy
KCkKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2luLWJ5LXZhbC1pbnQzMi5q
cyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2luLWJ5LXZhbC1pbnQzMi5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmM4ODNiOWVmNmQwYQotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2luLWJ5LXZhbC1pbnQzMi5qcwpAQCAtMCww
ICsxLDE2IEBACisvL0Agc2tpcCBpZiAkbW9kZWwgPT0gIkFwcGxlIFdhdGNoIFNlcmllcyAzIiAj
IGFkZGVkIGJ5IG1hcmstanNjLXN0cmVzcy10ZXN0LnB5CitmdW5jdGlvbiB0ZXN0KG9iamVjdCkK
K3sKKyAgICBpZiAoMSBpbiBvYmplY3QpCisgICAgICAgIHJldHVybiBvYmplY3RbMV07CisgICAg
cmV0dXJuIDA7Cit9Citub0lubGluZSh0ZXN0KTsKKwordmFyIG8xID0gWzQyXTsKK3ZhciBvMiA9
IFs0MiwgNDFdOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKSB7CisgICAgdGVzdChv
MSk7CisgICAgdGVzdChvMik7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJr
cy9pbi1ieS12YWwtc3RyaW5nLWluZGV4LmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaW4t
YnktdmFsLXN0cmluZy1pbmRleC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjE4MDY3OWFhYzljYwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5j
aG1hcmtzL2luLWJ5LXZhbC1zdHJpbmctaW5kZXguanMKQEAgLTAsMCArMSwxNiBAQAorLy9AIHNr
aXAgaWYgJG1vZGVsID09ICJBcHBsZSBXYXRjaCBTZXJpZXMgMyIgIyBhZGRlZCBieSBtYXJrLWpz
Yy1zdHJlc3MtdGVzdC5weQorZnVuY3Rpb24gdGVzdChvYmplY3QpCit7CisgICAgaWYgKCcxJyBp
biBvYmplY3QpCisgICAgICAgIHJldHVybiBvYmplY3RbMV07CisgICAgcmV0dXJuIDA7Cit9Citu
b0lubGluZSh0ZXN0KTsKKwordmFyIG8xID0gWzQyXTsKK3ZhciBvMiA9IFs0MiwgNDFdOworCitm
b3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKSB7CisgICAgdGVzdChvMSk7CisgICAgdGVzdChv
Mik7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pbi1ieS12YWwtc3lt
Ym9sLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaW4tYnktdmFsLXN5bWJvbC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjhiNmEyYWRkMTU1YgotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2luLWJ5LXZhbC1zeW1ib2wuanMK
QEAgLTAsMCArMSwyMyBAQAorLy9AIHNraXAgaWYgJG1vZGVsID09ICJBcHBsZSBXYXRjaCBTZXJp
ZXMgMyIgIyBhZGRlZCBieSBtYXJrLWpzYy1zdHJlc3MtdGVzdC5weQorY29uc3QgY29jb2FTeW1i
b2wgPSBTeW1ib2woJ2NvY29hJyk7Citjb25zdCBjYXBwdWNjaW5vU3ltYm9sID0gU3ltYm9sKCdj
YXBwdWNjaW5vJyk7CisKK2Z1bmN0aW9uIHRlc3Qob2JqZWN0KQoreworICAgIGlmIChjb2NvYVN5
bWJvbCBpbiBvYmplY3QpCisgICAgICAgIHJldHVybiBvYmplY3RbY29jb2FTeW1ib2xdOworICAg
IHJldHVybiAwOworfQorbm9JbmxpbmUodGVzdCk7CisKK3ZhciBvMSA9IHsKKyAgICBbY29jb2FT
eW1ib2xdOiA0MgorfTsKK3ZhciBvMiA9IHsKKyAgICBbY2FwcHVjY2lub1N5bWJvbF06IDQxCit9
OworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKSB7CisgICAgdGVzdChvMSk7CisgICAg
dGVzdChvMik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBhN2JiYzRkZDdmYmYuLmQy
YTE0ODNlMDFlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIyIEBACisy
MDIxLTA2LTAyICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAg
ICAgICBbSlNDXSBJbXBsZW1lbnQgSklUIElDcyBmb3IgSW5CeVZhbAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NTYzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW50aWwgbm93LCBJbkJ5VmFsIGhhcyBo
YWQgZmV3IG9wdGltaXphdGlvbnMgaW1wbGVtZW50ZWQ6CisgICAgICAgIERGRyB3b3VsZCBhdHRl
bXB0IHRvIGNvbnZlcnQgc3RyaW5nIGluZGV4IGxvb2t1cHMgdG8gSW5CeUlkIGFuZCBpbnQzMiBs
b29rdXBzIHRvIEhhc0luZGV4ZWRQcm9wZXJ0eSwKKyAgICAgICAgYnV0IHRoZXJlIGhhcyBiZWVu
IG5vIGlubGluZSBjYWNoaW5nIG5vciBhbnkgc3BlY2lhbCBoYW5kbGluZyBmb3Igc3ltYm9sIGxv
b2t1cHMuCisKKyAgICAgICAgVGhpcyBoYXMgYmVjb21lIGEgbW9yZSB1cmdlbnQgcHJvYmxlbSBu
b3csIGFzIGAjeCBpbiBvYmpgIChpLmUuIEhhc1ByaXZhdGVOYW1lIC8gSGFzUHJpdmF0ZUJyYW5k
KQorICAgICAgICB3aWxsIG5lZWQgdG8gbWltaWMgSW5CeVZhbCdzIGlubGluZSBjYWNoaW5nIHN0
cmF0ZWd5IGluIG9yZGVyIHRvIGJlIGRlZW1lZCBwZXJmb3JtYW50IGVub3VnaCB0byBzaGlwLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggdGh1cyBpbXBsZW1lbnRzIGlubGluZSBjYWNoaW5nIGZvciBJ
bkJ5VmFsIGF0IGFsbCBKSVQgdGllcnMuCisgICAgICAgIFRoZSByZXN1bHQgaXMgYSBuaWdodC1h
bmQtZGF5IGRpZmZlcmVuY2UgZm9yIHN5bWJvbHMsIGEgbmljZSBib29zdCBmb3Igc3RyaW5nIGlu
ZGljZXMsIGFuZCBubyBjaGFuZ2UgZm9yIGludDMyczogCisKKyAgICAgICAgaW4tYnktdmFsLXN5
bWJvbCAgICAgICAgICAgICAgICAgIDIwMy41NTcyKy0yLjc2NDcgICAgIF4gICAgIDE5LjEwMzUr
LTAuNzQ5OCAgICAgICAgXiBkZWZpbml0ZWx5IDEwLjY1NTV4IGZhc3RlcgorICAgICAgICBpbi1i
eS12YWwtc3RyaW5nLWluZGV4ICAgICAgICAgICAgIDg3LjAzNjgrLTQ0Ljc3NjYgICAgICAgICAg
NDUuOTk3MSstMzIuMDAwNyAgICAgICAgIG1pZ2h0IGJlIDEuODkyMnggZmFzdGVyCisgICAgICAg
IGluLWJ5LXZhbC1pbnQzMiAgICAgICAgICAgICAgICAgICAxMTAuOTkwNCstMS43MTA5ICAgICA/
ICAgIDExMS4zNDMxKy0xLjc1NTggICAgICAgID8KKworICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogYnl0ZWNvZGUvSUNTdGF0dXNNYXAuaDoKKyAgICAgICAgKiBieXRlY29kZS9JbkJ5SWRW
YXJpYW50LmNwcDoKKyAgICAgICAgKEpTQzo6SW5CeUlkVmFyaWFudDo6SW5CeUlkVmFyaWFudCk6
CisgICAgICAgIChKU0M6OkluQnlJZFZhcmlhbnQ6OmF0dGVtcHRUb01lcmdlKToKKyAgICAgICAg
KEpTQzo6SW5CeUlkVmFyaWFudDo6ZHVtcEluQ29udGV4dCBjb25zdCk6CisgICAgICAgICogYnl0
ZWNvZGUvSW5CeUlkVmFyaWFudC5oOgorICAgICAgICAoSlNDOjpJbkJ5SWRWYXJpYW50OjppZGVu
dGlmaWVyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW5CeUlkVmFyaWFudDo6b3ZlcmxhcHMpOgor
ICAgICAgICAqIGJ5dGVjb2RlL0luQnlTdGF0dXMuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFN0YXR1cy5jcHAuCisgICAgICAgICogYnl0ZWNv
ZGUvSW5CeVN0YXR1cy5oOiBSZW5hbWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0luQnlJZFN0YXR1cy5oLgorICAgICAgICAqIGJ5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMu
Y3BwOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1c2VzOjphZGRJbkJ5U3RhdHVzKTogUmVu
YW1lZCBmcm9tIGFkZEluQnlJZFN0YXR1cy4KKyAgICAgICAgKiBieXRlY29kZS9SZWNvcmRlZFN0
YXR1c2VzLmg6CisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6cmVzZXQpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJJbmZvLmg6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZmlsdGVySUNTdGF0dXMpOgorICAg
ICAgICAqIGRmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBk
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVJbkJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpw
YXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlND
OjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcnNFeGl0U3RhdGUpOgorICAgICAgICAqIGRm
Zy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICog
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZp
eHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpHcmFwaDo6ZHVtcCk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGluayk6CisgICAgICAgICogZGZnL0RGR0pJVENv
bXBpbGVyLmg6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmFkZEluQnlWYWwpOgor
ICAgICAgICAqIGRmZy9ERkdNYXlFeGl0LmNwcDoKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgor
ICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0luQnlTdGF0dXMpOiBSZW5hbWVkIGZyb20gaGFz
SW5CeUlkU3RhdHVzLgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmluQnlTdGF0dXMpOiBSZW5h
bWVkIGZyb20gaW5CeUlkU3RhdHVzLgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAg
ICAgICAqIGRmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcDoKKyAgICAgICAg
KiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9E
RkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6Cisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluQnlWYWwpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHVmFy
YXJnc0ZvcndhcmRpbmdQaGFzZS5jcHA6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGls
ZUluQnkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlSW5C
eUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUluQnlW
YWwpOgorICAgICAgICAqIGppdC9JQ1N0YXRzLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6
OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpKSVQ6Omxpbmsp
OgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRJbkJ5VmFsR2VuZXJhdG9yOjpKSVRJbkJ5VmFs
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUSW5CeVZhbEdlbmVyYXRvcjo6Z2VuZXJhdGVG
YXN0UGF0aCk6CisgICAgICAgIChKU0M6OkpJVEluQnlWYWxHZW5lcmF0b3I6OmZpbmFsaXplKToK
KyAgICAgICAgKEpTQzo6SklUSW5CeUlkR2VuZXJhdG9yOjpKSVRJbkJ5SWRHZW5lcmF0b3IpOgor
ICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpK
SVREZWxCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEp1bXAgY29uc3QpOgorICAgICAgICAoSlNDOjpK
SVRJbkJ5VmFsR2VuZXJhdG9yOjpKSVRJbkJ5VmFsR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6
SklUSW5CeVZhbEdlbmVyYXRvcjo6c2xvd1BhdGhKdW1wIGNvbnN0KToKKyAgICAgICAgKiBqaXQv
SklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSklUX09QRVJBVElP
Tik6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBqaXQvSklUUHJv
cGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5fYnlfdmFsKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pbl9ieV92YWwpOgorICAgICAgICAqIGpp
dC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2luX2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfdmFsKToK
KyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OnRyeUNhY2hlSW5CeSk6
IFJlbmFtZWQgZnJvbSB0cnlDYWNoZUluQnlJRC4KKyAgICAgICAgKEpTQzo6cmVwYXRjaEluQnkp
OiBSZW5hbWVkIGZyb20gcmVwYXRjaEluQnlJRC4KKyAgICAgICAgKEpTQzo6cmVzZXRJbkJ5KTog
UmVuYW1lZCBmcm9tIHJlc2V0SW5CeUlELgorICAgICAgICAqIGppdC9SZXBhdGNoLmg6CisgICAg
ICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJ
TlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmg6Cisg
ICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
Lmg6CisKIDIwMjEtMDYtMDIgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4K
IAogICAgICAgICBCM01vdmVDb25zdGFudHMgc2hvdWxkIGZpbHRlciBkaXJlY3RseSBvbiBWYWx1
ZXMsIGFuZCBvbmx5IGNyZWF0ZSBWYWx1ZUtleXMgd2hlbiB1c2VmdWwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggNGM5OTZhY2JjZjAyLi4xNWNjMjIxYjEyMmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDAxLDcgKzE0MDEsOSBAQAogCQlBMUQ3OTJGRjFCNDM4
NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUQ3OTJGOTFCNDM4NjRCMDA0NTE2
RjUgLyogSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmggKi87IH07CiAJCUExRDc5MzAxMUI0
Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUQ3OTJGQjFCNDM4NjRCMDA0NTE2
RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oICovOyB9OwogCQlBMzIxQUE2RDI2MjYz
NTlCMDAyM0FEQTIgLyogSW50bFdvcmthcm91bmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzMjFBQTZDMjYyNjM1OUIwMDIzQURBMiAvKiBJbnRsV29y
a2Fyb3VuZC5oICovOyB9OworCQlBMzgyQzUzMTI2NjcxMTFEMDA0MkNEOTkgLyogSW5CeUlkVmFy
aWFudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMz
MDVGQjEyMEIwRjc4ODAwQ0VCODJCIC8qIEluQnlJZFZhcmlhbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMzhEMjUwRTI1ODAwRDQ0MDA0MkJG
REQgLyogSlNBcnJheUJ1ZmZlclByb3RvdHlwZUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzOEQyNTBEMjU4MDBENDMwMDQyQkZERCAvKiBK
U0FycmF5QnVmZmVyUHJvdG90eXBlSW5saW5lcy5oICovOyB9OworCQlBMzhENUJGQzI2NjZEM0RB
MDBBMTA5QTYgLyogSW5CeVN0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTM4RDVCRkEyNjY2RDNEQTAwQTEwOUE2IC8qIEluQnlTdGF0dXMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBM0VFODU0
MzI2MjUxNEIwMDBGQzlCOEQgLyogSW50bFdvcmthcm91bmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTM3NjE5NDAyNjI1MTI3QzAwQ0JDQkE5IC8q
IEludGxXb3JrYXJvdW5kLmNwcCAqLzsgfTsKIAkJQTNGRjlCQzcyMjM0NzQ5MTAwQjFBOUFCIC8q
IFlhcnJGbGFncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTNGRjlCQzUyMjM0NzQ2NjAwQjFBOUFCIC8qIFlhcnJGbGFncy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1MDNGQTFBMTg4RTBGQjAwMDEx
MEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNDE4OEUwRkFGMDAxMTBGMTQgLyogSmF2YVNjcmlw
dENhbGxGcmFtZS5oICovOyB9OwpAQCAtNDQzMCw2ICs0NDMyLDggQEAKIAkJQTMyMUFBNkMyNjI2
MzU5QjAwMjNBREEyIC8qIEludGxXb3JrYXJvdW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEludGxXb3JrYXJvdW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUEzNzYxOTQwMjYyNTEyN0MwMENCQ0JBOSAvKiBJbnRsV29ya2Fyb3VuZC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsV29ya2Fyb3VuZC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzOEQyNTBEMjU4MDBENDMwMDQyQkZERCAvKiBKU0FycmF5
QnVmZmVyUHJvdG90eXBlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU0FycmF5QnVmZmVyUHJvdG90eXBlSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBMzhENUJGOTI2NjZEM0RBMDBBMTA5QTYgLyogSW5CeVN0YXR1cy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbkJ5U3RhdHVzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTM4RDVCRkEyNjY2RDNEQTAwQTEwOUE2IC8qIEluQnlTdGF0
dXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5CeVN0YXR1cy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBM0FGRjkyQjI0NUEzQ0Y5MDBDOUJBM0IgLyogSW50
bExvY2FsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsTG9jYWxlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzQUZGOTJDMjQ1QTNDRkEwMEM5QkEzQiAv
KiBJbnRsTG9jYWxlQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW50bExvY2FsZUNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUEzQUZGOTJEMjQ1QTNDRkEwMEM5QkEzQiAvKiBJbnRsTG9jYWxlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxMb2NhbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNTA1OCwxMCArNTA2Miw4IEBACiAJCUUzMjgyQkI5MUZFOTMwQTMwMEVE
QUY3MSAvKiBZYXJyRXJyb3JDb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IFlhcnJFcnJvckNvZGUuY3BwOyBwYXRoID0geWFyci9ZYXJyRXJyb3JDb2RlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMyODJCQkExRkU5MzBBNDAwRURBRjcxIC8q
IFlhcnJFcnJvckNvZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWWFyckVy
cm9yQ29kZS5oOyBwYXRoID0geWFyci9ZYXJyRXJyb3JDb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzMkMzQzY4MjNFOTRDMUUwMEJDOTdDMCAvKiBVbmxpbmtlZENvZGVCbG9j
a0dlbmVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmxpbmtlZENv
ZGVCbG9ja0dlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMzMwNUZB
RjIwQjBGNzg3MDBDRUI4MkIgLyogSW5CeUlkU3RhdHVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEluQnlJZFN0YXR1cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzMwNUZCMDIwQjBGNzg3MDBDRUI4MkIgLyogSW5CeUlkVmFyaWFudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbkJ5SWRWYXJpYW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzMDVGQjEyMEIwRjc4ODAwQ0VCODJCIC8qIEluQnlJZFZh
cmlhbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5CeUlkVmFyaWFudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMzMwNUZCMjIwQjBGNzg4MDBDRUI4MkIg
LyogSW5CeUlkU3RhdHVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEluQnlJZFN0YXR1cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMzA5NURD
MjMyMTBBMTQwMEVCNzg1NiAvKiBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTMzNENCQjIyMUZEOTZBODAwMEVCMTc4IC8qIFJlZ0V4cEdsb2JhbERhdGEuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVnRXhwR2xvYmFsRGF0YS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMzRDQkIzMjFGRDk2QTkwMDBFQjE3
OCAvKiBSZWdFeHBHbG9iYWxEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlZ0V4cEdsb2JhbERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYyODIs
OSArNjI4NCw5IEBACiAJCQkJRkUzQTA2QjkxQzExMDNEOTAwMzkwRkREIC8qIEpJVFJpZ2h0U2hp
ZnRHZW5lcmF0b3IuaCAqLywKIAkJCQk3MjEzMUJGMzI2NTg3RUYyMDA3MTE0Q0YgLyogSklUU2Fm
ZXBvaW50LmNwcCAqLywKIAkJCQk3MjEzMUJGNTI2NTg3RUYyMDA3MTE0Q0YgLyogSklUU2FmZXBv
aW50LmggKi8sCisJCQkJNzIxMzFCRjQyNjU4N0VGMjAwNzExNENGIC8qIEpJVFNjYW5uYWJsZS5o
ICovLAogCQkJCTUyQjUxMDBDMjY1RUZDRDQwMDg5NzBFNyAvKiBKSVRTaXplU3RhdGlzdGljcy5j
cHAgKi8sCiAJCQkJNTJCNTEwMEIyNjVFRkNENDAwODk3MEU3IC8qIEpJVFNpemVTdGF0aXN0aWNz
LmggKi8sCi0JCQkJNzIxMzFCRjQyNjU4N0VGMjAwNzExNENGIC8qIEpJVFNjYW5uYWJsZS5oICov
LAogCQkJCTBGNzY2RDI2MTVBOENDMUIwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZS5jcHAgKi8s
CiAJCQkJMEY3NjZEMUMxNUE1MDI4RDAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lLmggKi8sCiAJ
CQkJRkU0MjM4OEYxQkUxOEMxMjAwNTE0NzM3IC8qIEpJVFN1YkdlbmVyYXRvci5jcHAgKi8sCkBA
IC04NTc3LDEwICs4NTc5LDEwIEBACiAJCQkJMEY0NEE3QUYyMEJGNjg1RjAwMjJCMTcxIC8qIElD
U3RhdHVzTWFwLmggKi8sCiAJCQkJMEY0NEE3QjUyMEMwQkUzRjAwMjJCMTcxIC8qIElDU3RhdHVz
VXRpbHMuY3BwICovLAogCQkJCTBGQjM5OUJEMjBBRjZCMzgwMDE3RTIxMyAvKiBJQ1N0YXR1c1V0
aWxzLmggKi8sCi0JCQkJRTMzMDVGQjIyMEIwRjc4ODAwQ0VCODJCIC8qIEluQnlJZFN0YXR1cy5j
cHAgKi8sCi0JCQkJRTMzMDVGQUYyMEIwRjc4NzAwQ0VCODJCIC8qIEluQnlJZFN0YXR1cy5oICov
LAogCQkJCUUzMzA1RkIwMjBCMEY3ODcwMENFQjgyQiAvKiBJbkJ5SWRWYXJpYW50LmNwcCAqLywK
IAkJCQlFMzMwNUZCMTIwQjBGNzg4MDBDRUI4MkIgLyogSW5CeUlkVmFyaWFudC5oICovLAorCQkJ
CUEzOEQ1QkY5MjY2NkQzREEwMEExMDlBNiAvKiBJbkJ5U3RhdHVzLmNwcCAqLywKKwkJCQlBMzhE
NUJGQTI2NjZEM0RBMDBBMTA5QTYgLyogSW5CeVN0YXR1cy5oICovLAogCQkJCTc5MDVCQjY2MUQx
MjA1MEUwMDE5RkU1NyAvKiBJbmxpbmVBY2Nlc3MuY3BwICovLAogCQkJCTc5MDVCQjY3MUQxMjA1
MEUwMDE5RkU1NyAvKiBJbmxpbmVBY2Nlc3MuaCAqLywKIAkJCQkxNDhBN0JFRDFCODI5NzVBMDAy
RDkxNTcgLyogSW5saW5lQ2FsbEZyYW1lLmNwcCAqLywKQEAgLTk2MTcsNyArOTYxOSw2IEBACiAJ
CQkJMEYyQkRDMjExNTFFODAzQjAwQ0Q4OTEwIC8qIERGR0luc2VydGlvblNldC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYzMDBCN0MxOEFCMUIxNDAwQTZENzJFIC8qIERGR0ludGVnZXJDaGVja0Nv
bWJpbmluZ1BoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjg5OEYzMjFCMjc2ODlGMDA4M0Ez
M0MgLyogREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAot
CQkJCTUyQjUxMDBEMjY1RUZDREIwMDg5NzBFNyAvKiBKSVRTaXplU3RhdGlzdGljcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZDOTdGM0UxODIwMjExOTAwMkM5QjI2IC8qIERGR0ludmFsaWRhdGlv
blBvaW50SW5qZWN0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTM0MTcwRDQw
QkYwMEJCNzIyQyAvKiBERkdKSVRDb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkVDOURDQzEz
MjhERjgyMDAyQjJBRDcgLyogREZHSklUQ29tcGlsZXIuaCBpbiBIZWFkZXJzICovLApAQCAtOTky
MCw2ICs5OTIxLDggQEAKIAkJCQlCQzE4QzQwRjBFMTZGNUNEMDBCMzQ0NjAgLyogSWRlbnRpZmll
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODYwNkRERUExOERBNDRBQjAwQTM4M0QwIC8qIElkZW50
aWZpZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUZEMDA3NjE4OUIwMzhDMDA2MzMy
MzEgLyogSWRlbnRpZmllcnNGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKKwkJCQlBMzgyQzUzMTI2
NjcxMTFEMDA0MkNEOTkgLyogSW5CeUlkVmFyaWFudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTM4
RDVCRkMyNjY2RDNEQTAwQTEwOUE2IC8qIEluQnlTdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUMyNUY4QkNFMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQjdGMzk5MTVFRDhFNDYwMEYxNjdCMiAvKiBJbmRleGluZ0hlYWRlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOUExNUVEOEU0NjAwRjE2N0IyIC8qIEluZGV4aW5n
SGVhZGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDA3MSw2ICsxMDA3NCw3IEBACiAJ
CQkJRkUzQTA2QzAxQzExMDQxQTAwMzkwRkREIC8qIEpJVFJpZ2h0U2hpZnRHZW5lcmF0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCTcyMTMxQkY5MjY1ODdFRjIwMDcxMTRDRiAvKiBKSVRTYWZlcG9p
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTcyMTMxQkY4MjY1ODdFRjIwMDcxMTRDRiAvKiBKSVRT
Y2FubmFibGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTUyQjUxMDBEMjY1RUZDREIwMDg5NzBFNyAv
KiBKSVRTaXplU3RhdGlzdGljcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3NjZEMzExNUFBODEx
MjAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjc2NkQy
QzE1QThDQzNBMDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmVTZXQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGNUVGOTFGMTY4NzhGN0QwMDNFNUMyNSAvKiBKSVRUaHVua3MuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IDBjMjg2MDA0ZmViMS4uODg0YjhmOWU4
YWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0yMzksNyArMjM5LDcgQEAgYnl0
ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCiBieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNl
LmNwcAogYnl0ZWNvZGUvSUNTdGF0dXNNYXAuY3BwCiBieXRlY29kZS9JQ1N0YXR1c1V0aWxzLmNw
cAotYnl0ZWNvZGUvSW5CeUlkU3RhdHVzLmNwcAorYnl0ZWNvZGUvSW5CeVN0YXR1cy5jcHAKIGJ5
dGVjb2RlL0luQnlJZFZhcmlhbnQuY3BwCiBieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwCiBieXRl
Y29kZS9JbmxpbmVDYWxsRnJhbWUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSUNTdGF0dXNNYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9JQ1N0YXR1c01hcC5oCmluZGV4IGYwMzE5MDExNWEzYi4uZmEwYTZkNTIzYjdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSUNTdGF0dXNNYXAuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSUNTdGF0dXNNYXAuaApAQCAtMzUsNyArMzUs
NyBAQCBjbGFzcyBDYWxsTGlua0luZm87CiBjbGFzcyBDYWxsTGlua1N0YXR1czsKIGNsYXNzIENv
ZGVCbG9jazsKIGNsYXNzIEdldEJ5U3RhdHVzOwotY2xhc3MgSW5CeUlkU3RhdHVzOworY2xhc3Mg
SW5CeVN0YXR1czsKIGNsYXNzIFB1dEJ5SWRTdGF0dXM7CiBjbGFzcyBEZWxldGVCeVN0YXR1czsK
IGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvOwpAQCAtNDcsNyArNDcsNyBAQCBzdHJ1Y3QgSUNTdGF0
dXMgewogICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvIHsgbnVsbHB0ciB9OwogICAgIENhbGxMaW5r
U3RhdHVzKiBjYWxsU3RhdHVzIHsgbnVsbHB0ciB9OwogICAgIEdldEJ5U3RhdHVzKiBnZXRTdGF0
dXMgeyBudWxscHRyIH07Ci0gICAgSW5CeUlkU3RhdHVzKiBpblN0YXR1cyB7IG51bGxwdHIgfTsK
KyAgICBJbkJ5U3RhdHVzKiBpblN0YXR1cyB7IG51bGxwdHIgfTsKICAgICBQdXRCeUlkU3RhdHVz
KiBwdXRTdGF0dXMgeyBudWxscHRyIH07CiAgICAgRGVsZXRlQnlTdGF0dXMqIGRlbGV0ZVN0YXR1
cyB7IG51bGxwdHIgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSW5CeUlkVmFyaWFudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SW5CeUlkVmFyaWFudC5jcHAKaW5kZXggZjRjMmI1ODZiMTg4Li5mNDk0YmZiZGI0YWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRWYXJpYW50LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeUlkVmFyaWFudC5jcHAKQEAg
LTI3LDEyICsyNywxNSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkluQnlJZFZh
cmlhbnQuaCIKIAorI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmgiCisKIG5h
bWVzcGFjZSBKU0MgewogCi1JbkJ5SWRWYXJpYW50OjpJbkJ5SWRWYXJpYW50KGNvbnN0IFN0cnVj
dHVyZVNldCYgc3RydWN0dXJlU2V0LCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIGNvbnN0IE9iamVj
dFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQpCitJbkJ5SWRWYXJpYW50OjpJbkJ5
SWRWYXJpYW50KENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RydWN0dXJl
U2V0JiBzdHJ1Y3R1cmVTZXQsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgY29uc3QgT2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCkKICAgICA6IG1fc3RydWN0dXJlU2V0KHN0
cnVjdHVyZVNldCkKICAgICAsIG1fY29uZGl0aW9uU2V0KGNvbmRpdGlvblNldCkKICAgICAsIG1f
b2Zmc2V0KG9mZnNldCkKKyAgICAsIG1faWRlbnRpZmllcihXVEZNb3ZlKGlkZW50aWZpZXIpKQog
ewogICAgIGlmICghc3RydWN0dXJlU2V0LnNpemUoKSkgewogICAgICAgICBBU1NFUlQob2Zmc2V0
ID09IGludmFsaWRPZmZzZXQpOwpAQCAtNDIsNiArNDUsMTIgQEAgSW5CeUlkVmFyaWFudDo6SW5C
eUlkVmFyaWFudChjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCwgUHJvcGVydHlPZmZz
ZXQgb2YKIAogYm9vbCBJbkJ5SWRWYXJpYW50OjphdHRlbXB0VG9NZXJnZShjb25zdCBJbkJ5SWRW
YXJpYW50JiBvdGhlcikKIHsKKyAgICBpZiAoISFtX2lkZW50aWZpZXIgIT0gISFvdGhlci5tX2lk
ZW50aWZpZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChtX2lkZW50aWZpZXIg
JiYgKG1faWRlbnRpZmllciAhPSBvdGhlci5tX2lkZW50aWZpZXIpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKICAgICBpZiAobV9vZmZzZXQgIT0gb3RoZXIubV9vZmZzZXQpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIApAQCAtODksMTMgKzk4LDEzIEBAIHZvaWQgSW5CeUlkVmFyaWFudDo6ZHVt
cChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogCiB2b2lkIEluQnlJZFZhcmlhbnQ6OmR1bXBJbkNv
bnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqIGNvbnRleHQpIGNvbnN0CiB7Cisg
ICAgb3V0LnByaW50KCI8aWQ9JyIsIG1faWRlbnRpZmllciwgIicsICIpOwogICAgIGlmICghaXNT
ZXQoKSkgewotICAgICAgICBvdXQucHJpbnQoIjxlbXB0eT4iKTsKKyAgICAgICAgb3V0LnByaW50
KCJlbXB0eT4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG91dC5wcmludCgKLSAg
ICAgICAgIjwiLCBpbkNvbnRleHQoc3RydWN0dXJlU2V0KCksIGNvbnRleHQpLCAiLCAiLCBpbkNv
bnRleHQobV9jb25kaXRpb25TZXQsIGNvbnRleHQpKTsKKyAgICBvdXQucHJpbnQoaW5Db250ZXh0
KHN0cnVjdHVyZVNldCgpLCBjb250ZXh0KSwgIiwgIiwgaW5Db250ZXh0KG1fY29uZGl0aW9uU2V0
LCBjb250ZXh0KSk7CiAgICAgb3V0LnByaW50KCIsIG9mZnNldCA9ICIsIG9mZnNldCgpKTsKICAg
ICBvdXQucHJpbnQoIj4iKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9JbkJ5SWRWYXJpYW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SW5CeUlkVmFyaWFudC5oCmluZGV4IDc4MmE1ZGE4ODEwNi4uN2Q3MzIzOGZiZTUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeUlkVmFyaWFudC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRWYXJpYW50LmgKQEAgLTI2LDYg
KzI2LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaCIKICNpbmNsdWRlICJQ
cm9wZXJ0eU9mZnNldC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVNldC5oIgpAQCAtMzUsMTMgKzM2
LDEzIEBAIG5hbWVzcGFjZSBET01KSVQgewogY2xhc3MgR2V0dGVyU2V0dGVyOwogfQogCi1jbGFz
cyBJbkJ5SWRTdGF0dXM7CitjbGFzcyBJbkJ5U3RhdHVzOwogc3RydWN0IER1bXBDb250ZXh0Owog
CiBjbGFzcyBJbkJ5SWRWYXJpYW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKLSAgICBJbkJ5SWRWYXJpYW50KGNvbnN0IFN0cnVjdHVyZVNldCYgPSBTdHJ1Y3R1cmVT
ZXQoKSwgUHJvcGVydHlPZmZzZXQgPSBpbnZhbGlkT2Zmc2V0LCBjb25zdCBPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvblNldCYgPSBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCgpKTsKKyAgICBJbkJ5
SWRWYXJpYW50KENhY2hlYWJsZUlkZW50aWZpZXIsIGNvbnN0IFN0cnVjdHVyZVNldCYgPSBTdHJ1
Y3R1cmVTZXQoKSwgUHJvcGVydHlPZmZzZXQgPSBpbnZhbGlkT2Zmc2V0LCBjb25zdCBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvblNldCYgPSBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCgpKTsKIAog
ICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiAhIW1fc3RydWN0dXJlU2V0LnNpemUoKTsg
fQogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBpc1NldCgpOyB9
CkBAIC02MywxNyArNjQsMjYgQEAgcHVibGljOgogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYp
IGNvbnN0OwogICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYsIER1bXBDb250ZXh0
KikgY29uc3Q7CiAKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKwogICAgIGJvb2wgb3ZlcmxhcHMoY29uc3QgSW5CeUlk
VmFyaWFudCYgb3RoZXIpCiAgICAgeworICAgICAgICBpZiAoISFtX2lkZW50aWZpZXIgIT0gISFv
dGhlci5tX2lkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYg
KG1faWRlbnRpZmllcikgeworICAgICAgICAgICAgaWYgKG1faWRlbnRpZmllciAhPSBvdGhlci5t
X2lkZW50aWZpZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CiAg
ICAgICAgIHJldHVybiBzdHJ1Y3R1cmVTZXQoKS5vdmVybGFwcyhvdGhlci5zdHJ1Y3R1cmVTZXQo
KSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBJbkJ5SWRTdGF0dXM7Cisg
ICAgZnJpZW5kIGNsYXNzIEluQnlTdGF0dXM7CiAKICAgICBTdHJ1Y3R1cmVTZXQgbV9zdHJ1Y3R1
cmVTZXQ7CiAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgbV9jb25kaXRpb25TZXQ7CiAg
ICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CisgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBtX2lk
ZW50aWZpZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRTdGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0luQnlTdGF0dXMuY3BwCnNpbWlsYXJpdHkgaW5kZXggNjclCnJlbmFt
ZSBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRTdGF0dXMuY3BwCnJl
bmFtZSB0byBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeVN0YXR1cy5jcHAKaW5k
ZXggNDkzOGE2M2MxYjJhLi45OTIxOWEwZjIxZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9JbkJ5U3RhdHVzLmNwcApAQCAtMjUsOCArMjUsOSBAQAogICovCiAKICNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJbkJ5SWRTdGF0dXMuaCIKKyNpbmNsdWRlICJJ
bkJ5U3RhdHVzLmgiCiAKKyNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oIgog
I2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvbXBsZXhHZXRTdGF0dXMuaCIKICNp
bmNsdWRlICJJQ1N0YXR1c1V0aWxzLmgiCkBAIC0zNiw0NiArMzcsNDUgQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKLWJvb2wgSW5CeUlkU3RhdHVzOjphcHBlbmRWYXJpYW50KGNvbnN0IEluQnlJZFZh
cmlhbnQmIHZhcmlhbnQpCitib29sIEluQnlTdGF0dXM6OmFwcGVuZFZhcmlhbnQoY29uc3QgSW5C
eUlkVmFyaWFudCYgdmFyaWFudCkKIHsKICAgICByZXR1cm4gYXBwZW5kSUNTdGF0dXNWYXJpYW50
KG1fdmFyaWFudHMsIHZhcmlhbnQpOwogfQogCi12b2lkIEluQnlJZFN0YXR1czo6c2hyaW5rVG9G
aXQoKQordm9pZCBJbkJ5U3RhdHVzOjpzaHJpbmtUb0ZpdCgpCiB7CiAgICAgbV92YXJpYW50cy5z
aHJpbmtUb0ZpdCgpOwogfQogCiAjaWYgRU5BQkxFKEpJVCkKLUluQnlJZFN0YXR1cyBJbkJ5SWRT
dGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBJQ1N0YXR1c01hcCYg
bWFwLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQs
IEV4aXRGbGFnIGRpZEV4aXQpCitJbkJ5U3RhdHVzIEluQnlTdGF0dXM6OmNvbXB1dGVGb3IoQ29k
ZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBJQ1N0YXR1c01hcCYgbWFwLCBCeXRlY29kZUluZGV4IGJ5
dGVjb2RlSW5kZXgsIEV4aXRGbGFnIGRpZEV4aXQpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2Vy
IGxvY2tlcihwcm9maWxlZEJsb2NrLT5tX2xvY2spOwogCi0gICAgSW5CeUlkU3RhdHVzIHJlc3Vs
dDsKKyAgICBJbkJ5U3RhdHVzIHJlc3VsdDsKIAogI2lmIEVOQUJMRShERkdfSklUKQotICAgIHJl
c3VsdCA9IGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKGxvY2tlciwg
cHJvZmlsZWRCbG9jay0+dm0oKSwgbWFwLmdldChDb2RlT3JpZ2luKGJ5dGVjb2RlSW5kZXgpKS5z
dHViSW5mbywgdWlkKTsKKyAgICByZXN1bHQgPSBjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhp
dFNpdGVGZWVkYmFjayhsb2NrZXIsIHByb2ZpbGVkQmxvY2stPnZtKCksIG1hcC5nZXQoQ29kZU9y
aWdpbihieXRlY29kZUluZGV4KSkuc3R1YkluZm8pOwogCiAgICAgaWYgKCFyZXN1bHQudGFrZXNT
bG93UGF0aCgpICYmIGRpZEV4aXQpCi0gICAgICAgIHJldHVybiBJbkJ5SWRTdGF0dXMoVGFrZXNT
bG93UGF0aCk7CisgICAgICAgIHJldHVybiBJbkJ5U3RhdHVzKFRha2VzU2xvd1BhdGgpOwogI2Vs
c2UKICAgICBVTlVTRURfUEFSQU0obWFwKTsKICAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRl
eCk7Ci0gICAgVU5VU0VEX1BBUkFNKHVpZCk7CiAgICAgVU5VU0VEX1BBUkFNKGRpZEV4aXQpOwog
I2VuZGlmCiAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1JbkJ5SWRTdGF0dXMgSW5CeUlkU3Rh
dHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgSUNTdGF0dXNNYXAmIG1h
cCwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQor
SW5CeVN0YXR1cyBJbkJ5U3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9j
aywgSUNTdGF0dXNNYXAmIG1hcCwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4KQogewotICAg
IHJldHVybiBjb21wdXRlRm9yKHByb2ZpbGVkQmxvY2ssIG1hcCwgYnl0ZWNvZGVJbmRleCwgdWlk
LCBoYXNCYWRDYWNoZUV4aXRTaXRlKHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpKTsKKyAg
ICByZXR1cm4gY29tcHV0ZUZvcihwcm9maWxlZEJsb2NrLCBtYXAsIGJ5dGVjb2RlSW5kZXgsIGhh
c0JhZENhY2hlRXhpdFNpdGUocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCkpOwogfQogCi1J
bkJ5SWRTdGF0dXMgSW5CeUlkU3RhdHVzOjpjb21wdXRlRm9yKAorSW5CeVN0YXR1cyBJbkJ5U3Rh
dHVzOjpjb21wdXRlRm9yKAogICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgSUNTdGF0dXNN
YXAmIGJhc2VsaW5lTWFwLAotICAgIElDU3RhdHVzQ29udGV4dFN0YWNrJiBjb250ZXh0U3RhY2ss
IENvZGVPcmlnaW4gY29kZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKKyAgICBJQ1N0
YXR1c0NvbnRleHRTdGFjayYgY29udGV4dFN0YWNrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCiB7
CiAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gY29kZU9yaWdpbi5ieXRlY29kZUlu
ZGV4KCk7CiAgICAgRXhpdEZsYWcgZGlkRXhpdCA9IGhhc0JhZENhY2hlRXhpdFNpdGUocHJvZmls
ZWRCbG9jaywgYnl0ZWNvZGVJbmRleCk7CkBAIC04MywyNCArODMsMjQgQEAgSW5CeUlkU3RhdHVz
IEluQnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICBmb3IgKElDU3RhdHVzQ29udGV4dCogY29u
dGV4dCA6IGNvbnRleHRTdGFjaykgewogICAgICAgICBJQ1N0YXR1cyBzdGF0dXMgPSBjb250ZXh0
LT5nZXQoY29kZU9yaWdpbik7CiAgICAgICAgIAotICAgICAgICBhdXRvIGJsZXNzID0gWyZdIChj
b25zdCBJbkJ5SWRTdGF0dXMmIHJlc3VsdCkgLT4gSW5CeUlkU3RhdHVzIHsKKyAgICAgICAgYXV0
byBibGVzcyA9IFsmXSAoY29uc3QgSW5CeVN0YXR1cyYgcmVzdWx0KSAtPiBJbkJ5U3RhdHVzIHsK
ICAgICAgICAgICAgIGlmICghY29udGV4dC0+aXNJbmxpbmVkKGNvZGVPcmlnaW4pKSB7Ci0gICAg
ICAgICAgICAgICAgSW5CeUlkU3RhdHVzIGJhc2VsaW5lUmVzdWx0ID0gY29tcHV0ZUZvcigKLSAg
ICAgICAgICAgICAgICAgICAgcHJvZmlsZWRCbG9jaywgYmFzZWxpbmVNYXAsIGJ5dGVjb2RlSW5k
ZXgsIHVpZCwgZGlkRXhpdCk7CisgICAgICAgICAgICAgICAgSW5CeVN0YXR1cyBiYXNlbGluZVJl
c3VsdCA9IGNvbXB1dGVGb3IoCisgICAgICAgICAgICAgICAgICAgIHByb2ZpbGVkQmxvY2ssIGJh
c2VsaW5lTWFwLCBieXRlY29kZUluZGV4LCBkaWRFeGl0KTsKICAgICAgICAgICAgICAgICBiYXNl
bGluZVJlc3VsdC5tZXJnZShyZXN1bHQpOwogICAgICAgICAgICAgICAgIHJldHVybiBiYXNlbGlu
ZVJlc3VsdDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChkaWRFeGl0LmlzU2V0KEV4
aXRGcm9tSW5saW5lZCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEluQnlJZFN0YXR1cyhUYWtl
c1Nsb3dQYXRoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSW5CeVN0YXR1cyhUYWtlc1Nsb3dQ
YXRoKTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH07CiAgICAgICAgIAog
I2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICBpZiAoc3RhdHVzLnN0dWJJbmZvKSB7Ci0gICAg
ICAgICAgICBJbkJ5SWRTdGF0dXMgcmVzdWx0OworICAgICAgICAgICAgSW5CeVN0YXR1cyByZXN1
bHQ7CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxv
Y2tlcihjb250ZXh0LT5vcHRpbWl6ZWRDb2RlQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAgICAg
ICAgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2sobG9j
a2VyLCBwcm9maWxlZEJsb2NrLT52bSgpLCBzdGF0dXMuc3R1YkluZm8sIHVpZCk7CisgICAgICAg
ICAgICAgICAgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJh
Y2sobG9ja2VyLCBwcm9maWxlZEJsb2NrLT52bSgpLCBzdGF0dXMuc3R1YkluZm8pOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgaWYgKHJlc3VsdC5pc1NldCgpKQogICAgICAgICAgICAgICAg
IHJldHVybiBibGVzcyhyZXN1bHQpOwpAQCAtMTExLDQ0ICsxMTEsNDcgQEAgSW5CeUlkU3RhdHVz
IEluQnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgIHJldHVybiBibGVzcygqc3Rh
dHVzLmluU3RhdHVzKTsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIGNvbXB1dGVGb3IocHJvZmls
ZWRCbG9jaywgYmFzZWxpbmVNYXAsIGJ5dGVjb2RlSW5kZXgsIHVpZCwgZGlkRXhpdCk7CisgICAg
cmV0dXJuIGNvbXB1dGVGb3IocHJvZmlsZWRCbG9jaywgYmFzZWxpbmVNYXAsIGJ5dGVjb2RlSW5k
ZXgsIGRpZEV4aXQpOwogfQogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAKICNpZiBFTkFCTEUoREZH
X0pJVCkKLUluQnlJZFN0YXR1cyBJbkJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mbyhjb25z
dCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgVW5pcXVl
ZFN0cmluZ0ltcGwqIHVpZCkKK0luQnlTdGF0dXMgSW5CeVN0YXR1czo6Y29tcHV0ZUZvclN0dWJJ
bmZvKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBDb2RlQmxvY2sqIHByb2ZpbGVk
QmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgQ29kZU9yaWdpbiBjb2RlT3JpZ2lu
KQogewotICAgIEluQnlJZFN0YXR1cyByZXN1bHQgPSBJbkJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JT
dHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKGxvY2tlciwgcHJvZmlsZWRCbG9jay0+dm0o
KSwgc3R1YkluZm8sIHVpZCk7CisgICAgSW5CeVN0YXR1cyByZXN1bHQgPSBJbkJ5U3RhdHVzOjpj
b21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjayhsb2NrZXIsIHByb2ZpbGVk
QmxvY2stPnZtKCksIHN0dWJJbmZvKTsKIAogICAgIGlmICghcmVzdWx0LnRha2VzU2xvd1BhdGgo
KSAmJiBoYXNCYWRDYWNoZUV4aXRTaXRlKHByb2ZpbGVkQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNv
ZGVJbmRleCgpKSkKLSAgICAgICAgcmV0dXJuIEluQnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsK
KyAgICAgICAgcmV0dXJuIEluQnlTdGF0dXMoVGFrZXNTbG93UGF0aCk7CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAotSW5CeUlkU3RhdHVzIEluQnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZv
V2l0aG91dEV4aXRTaXRlRmVlZGJhY2soY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgVk0mIHZt
LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCitJ
bkJ5U3RhdHVzIEluQnlTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZl
ZWRiYWNrKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFZNJiB2bSwgU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvKQogewogICAgIFN0dWJJbmZvU3VtbWFyeSBzdW1tYXJ5ID0gU3RydWN0dXJl
U3R1YkluZm86OnN1bW1hcnkodm0sIHN0dWJJbmZvKTsKICAgICBpZiAoIWlzSW5saW5lYWJsZShz
dW1tYXJ5KSkKLSAgICAgICAgcmV0dXJuIEluQnlJZFN0YXR1cyhzdW1tYXJ5KTsKKyAgICAgICAg
cmV0dXJuIEluQnlTdGF0dXMoc3VtbWFyeSk7CiAgICAgCiAgICAgLy8gRmluYWxseSBmaWd1cmUg
b3V0IGlmIHdlIGNhbiBkZXJpdmUgYW4gYWNjZXNzIHN0cmF0ZWd5LgotICAgIEluQnlJZFN0YXR1
cyByZXN1bHQ7CisgICAgSW5CeVN0YXR1cyByZXN1bHQ7CiAgICAgcmVzdWx0Lm1fc3RhdGUgPSBT
aW1wbGU7CiAgICAgc3dpdGNoIChzdHViSW5mby0+Y2FjaGVUeXBlKCkpIHsKICAgICBjYXNlIENh
Y2hlVHlwZTo6VW5zZXQ6Ci0gICAgICAgIHJldHVybiBJbkJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlv
bik7CisgICAgICAgIHJldHVybiBJbkJ5U3RhdHVzKE5vSW5mb3JtYXRpb24pOwogCiAgICAgY2Fz
ZSBDYWNoZVR5cGU6OkluQnlJZFNlbGY6IHsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBzdHViSW5mby0+dS5ieUlkU2VsZi5iYXNlT2JqZWN0U3RydWN0dXJlLmdldCgpOwogICAgICAg
ICBpZiAoc3RydWN0dXJlLT50YWtlc1Nsb3dQYXRoSW5ERkdGb3JJbXB1cmVQcm9wZXJ0eSgpKQot
ICAgICAgICAgICAgcmV0dXJuIEluQnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsKKyAgICAgICAg
ICAgIHJldHVybiBJbkJ5U3RhdHVzKFRha2VzU2xvd1BhdGgpOworICAgICAgICBDYWNoZWFibGVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIgPSBzdHViSW5mby0+aWRlbnRpZmllcigpOworICAgICAgICBV
bmlxdWVkU3RyaW5nSW1wbCogdWlkID0gaWRlbnRpZmllci51aWQoKTsKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQodWlkKTsKKyAgICAgICAgSW5CeUlkVmFyaWFudCB2YXJpYW50KFdURk1vdmUoaWRl
bnRpZmllcikpOwogICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwotICAgICAgICBJbkJ5SWRW
YXJpYW50IHZhcmlhbnQ7CiAgICAgICAgIHZhcmlhbnQubV9vZmZzZXQgPSBzdHJ1Y3R1cmUtPmdl
dENvbmN1cnJlbnRseSh1aWQsIGF0dHJpYnV0ZXMpOwogICAgICAgICBpZiAoIWlzVmFsaWRPZmZz
ZXQodmFyaWFudC5tX29mZnNldCkpCi0gICAgICAgICAgICByZXR1cm4gSW5CeUlkU3RhdHVzKFRh
a2VzU2xvd1BhdGgpOworICAgICAgICAgICAgcmV0dXJuIEluQnlTdGF0dXMoVGFrZXNTbG93UGF0
aCk7CiAgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFj
Y2Vzc29yT3JWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBJbkJ5SWRTdGF0dXMoVGFrZXNTbG93
UGF0aCk7CisgICAgICAgICAgICByZXR1cm4gSW5CeVN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsKIAog
ICAgICAgICB2YXJpYW50Lm1fc3RydWN0dXJlU2V0LmFkZChzdHJ1Y3R1cmUpOwogICAgICAgICBi
b29sIGRpZEFwcGVuZCA9IHJlc3VsdC5hcHBlbmRWYXJpYW50KHZhcmlhbnQpOwpAQCAtMTYxLDEw
ICsxNjQsMTAgQEAgSW5CeUlkU3RhdHVzIEluQnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZv
V2l0aG91dEV4aXRTaXRlRmVlZGJhY2soY29uc3QgQ29uY3UKICAgICAgICAgZm9yICh1bnNpZ25l
ZCBsaXN0SW5kZXggPSAwOyBsaXN0SW5kZXggPCBsaXN0LT5zaXplKCk7ICsrbGlzdEluZGV4KSB7
CiAgICAgICAgICAgICBjb25zdCBBY2Nlc3NDYXNlJiBhY2Nlc3MgPSBsaXN0LT5hdChsaXN0SW5k
ZXgpOwogICAgICAgICAgICAgaWYgKGFjY2Vzcy52aWFQcm94eSgpKQotICAgICAgICAgICAgICAg
IHJldHVybiBJbkJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIEluQnlTdGF0dXMoVGFrZXNTbG93UGF0aCk7CiAKICAgICAgICAgICAgIGlmIChhY2Nlc3Mu
dXNlc1BvbHlQcm90bygpKQotICAgICAgICAgICAgICAgIHJldHVybiBJbkJ5SWRTdGF0dXMoVGFr
ZXNTbG93UGF0aCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEluQnlTdGF0dXMoVGFrZXNTbG93
UGF0aCk7CiAKICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYWNjZXNzLnN0cnVj
dHVyZSgpOwogICAgICAgICAgICAgaWYgKCFzdHJ1Y3R1cmUpIHsKQEAgLTE3NCwxNiArMTc3LDE2
IEBAIEluQnlJZFN0YXR1cyBJbkJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRF
eGl0U2l0ZUZlZWRiYWNrKGNvbnN0IENvbmN1CiAgICAgICAgICAgICAgICAgLy8gaGF2ZSB0byB1
c2UgdmFsdWUgcHJvZmlsaW5nIHRvIGRpc2NvdmVyIHNvbWV0aGluZyB0aGF0IHRoZSBBY2Nlc3ND
YXNlIGNvdWxkIGhhdmUKICAgICAgICAgICAgICAgICAvLyB0b2xkIHVzLiBCdXQsIGl0IHdvcmtz
IHdlbGwgZW5vdWdoLiBTbywgb3VyIG9ubHkgY29uY2VybiBoZXJlIGlzIHRvIG5vdAogICAgICAg
ICAgICAgICAgIC8vIGNyYXNoIG9uIG51bGwgc3RydWN0dXJlLgotICAgICAgICAgICAgICAgIHJl
dHVybiBJbkJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IEluQnlTdGF0dXMoVGFrZXNTbG93UGF0aCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IENvbXBsZXhHZXRTdGF0dXMgY29tcGxleEdldFN0YXR1cyA9IENvbXBsZXhHZXRTdGF0dXM6OmNv
bXB1dGVGb3Ioc3RydWN0dXJlLCBhY2Nlc3MuY29uZGl0aW9uU2V0KCksIHVpZCk7CisgICAgICAg
ICAgICBDb21wbGV4R2V0U3RhdHVzIGNvbXBsZXhHZXRTdGF0dXMgPSBDb21wbGV4R2V0U3RhdHVz
Ojpjb21wdXRlRm9yKHN0cnVjdHVyZSwgYWNjZXNzLmNvbmRpdGlvblNldCgpLCBhY2Nlc3MudWlk
KCkpOwogICAgICAgICAgICAgc3dpdGNoIChjb21wbGV4R2V0U3RhdHVzLmtpbmQoKSkgewogICAg
ICAgICAgICAgY2FzZSBDb21wbGV4R2V0U3RhdHVzOjpTaG91bGRTa2lwOgogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBjYXNlIENvbXBsZXhHZXRTdGF0dXM6OlRha2Vz
U2xvd1BhdGg6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEluQnlJZFN0YXR1cyhUYWtlc1Nsb3dQ
YXRoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSW5CeVN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsK
IAogICAgICAgICAgICAgY2FzZSBDb21wbGV4R2V0U3RhdHVzOjpJbmxpbmVhYmxlOiB7CiAgICAg
ICAgICAgICAgICAgc3dpdGNoIChhY2Nlc3MudHlwZSgpKSB7CkBAIC0xOTEsMTUgKzE5NCwxNSBA
QCBJbkJ5SWRTdGF0dXMgSW5CeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhp
dFNpdGVGZWVkYmFjayhjb25zdCBDb25jdQogICAgICAgICAgICAgICAgIGNhc2UgQWNjZXNzQ2Fz
ZTo6SW5NaXNzOgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gSW5CeUlkU3RhdHVzKFRha2VzU2xv
d1BhdGgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gSW5CeVN0YXR1cyhUYWtlc1Nsb3dQ
YXRoKTsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBJbkJ5SWRWYXJpYW50
IHZhcmlhbnQoCi0gICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpLCBj
b21wbGV4R2V0U3RhdHVzLm9mZnNldCgpLAorICAgICAgICAgICAgICAgICAgICBhY2Nlc3MuaWRl
bnRpZmllcigpLCBTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSwgY29tcGxleEdldFN0YXR1cy5vZmZz
ZXQoKSwKICAgICAgICAgICAgICAgICAgICAgY29tcGxleEdldFN0YXR1cy5jb25kaXRpb25TZXQo
KSk7CiAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5hcHBlbmRWYXJpYW50KHZhcmlhbnQp
KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gSW5CeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgp
OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gSW5CeVN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAg
LTIxMCwxNSArMjEzLDE1IEBAIEluQnlJZFN0YXR1cyBJbkJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JT
dHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKGNvbnN0IENvbmN1CiAgICAgfQogCiAgICAg
ZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIEluQnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsKKyAg
ICAgICAgcmV0dXJuIEluQnlTdGF0dXMoVGFrZXNTbG93UGF0aCk7CiAgICAgfQogCiAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gSW5CeUlkU3RhdHVzKCk7Cisg
ICAgcmV0dXJuIEluQnlTdGF0dXMoKTsKIH0KICNlbmRpZgogCi12b2lkIEluQnlJZFN0YXR1czo6
bWVyZ2UoY29uc3QgSW5CeUlkU3RhdHVzJiBvdGhlcikKK3ZvaWQgSW5CeVN0YXR1czo6bWVyZ2Uo
Y29uc3QgSW5CeVN0YXR1cyYgb3RoZXIpCiB7CiAgICAgaWYgKG90aGVyLm1fc3RhdGUgPT0gTm9J
bmZvcm1hdGlvbikKICAgICAgICAgcmV0dXJuOwpAQCAtMjMwLDEyICsyMzMsMTIgQEAgdm9pZCBJ
bkJ5SWRTdGF0dXM6Om1lcmdlKGNvbnN0IEluQnlJZFN0YXR1cyYgb3RoZXIpCiAgICAgICAgIAog
ICAgIGNhc2UgU2ltcGxlOgogICAgICAgICBpZiAob3RoZXIubV9zdGF0ZSAhPSBTaW1wbGUpIHsK
LSAgICAgICAgICAgICp0aGlzID0gSW5CeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgpOworICAgICAg
ICAgICAgKnRoaXMgPSBJbkJ5U3RhdHVzKFRha2VzU2xvd1BhdGgpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgICAgIGZvciAoY29uc3QgSW5CeUlkVmFyaWFudCYgb3RoZXJW
YXJpYW50IDogb3RoZXIubV92YXJpYW50cykgewogICAgICAgICAgICAgaWYgKCFhcHBlbmRWYXJp
YW50KG90aGVyVmFyaWFudCkpIHsKLSAgICAgICAgICAgICAgICAqdGhpcyA9IEluQnlJZFN0YXR1
cyhUYWtlc1Nsb3dQYXRoKTsKKyAgICAgICAgICAgICAgICAqdGhpcyA9IEluQnlTdGF0dXMoVGFr
ZXNTbG93UGF0aCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CkBAIC0yNDksNyArMjUyLDcgQEAgdm9pZCBJbkJ5SWRTdGF0dXM6Om1lcmdlKGNvbnN0
IEluQnlJZFN0YXR1cyYgb3RoZXIpCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
IH0KIAotdm9pZCBJbkJ5SWRTdGF0dXM6OmZpbHRlcihjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVj
dHVyZVNldCkKK3ZvaWQgSW5CeVN0YXR1czo6ZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNldCYgc3Ry
dWN0dXJlU2V0KQogewogICAgIGlmIChtX3N0YXRlICE9IFNpbXBsZSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMjU5LDE2ICsyNjIsMTYgQEAgdm9pZCBJbkJ5SWRTdGF0dXM6OmZpbHRlcihjb25zdCBT
dHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRv
cj4KLXZvaWQgSW5CeUlkU3RhdHVzOjptYXJrSWZDaGVhcChWaXNpdG9yJiB2aXNpdG9yKQordm9p
ZCBJbkJ5U3RhdHVzOjptYXJrSWZDaGVhcChWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIGZvciAo
SW5CeUlkVmFyaWFudCYgdmFyaWFudCA6IG1fdmFyaWFudHMpCiAgICAgICAgIHZhcmlhbnQubWFy
a0lmQ2hlYXAodmlzaXRvcik7CiB9CiAKLXRlbXBsYXRlIHZvaWQgSW5CeUlkU3RhdHVzOjptYXJr
SWZDaGVhcChBYnN0cmFjdFNsb3RWaXNpdG9yJik7Ci10ZW1wbGF0ZSB2b2lkIEluQnlJZFN0YXR1
czo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImKTsKK3RlbXBsYXRlIHZvaWQgSW5CeVN0YXR1czo6
bWFya0lmQ2hlYXAoQWJzdHJhY3RTbG90VmlzaXRvciYpOwordGVtcGxhdGUgdm9pZCBJbkJ5U3Rh
dHVzOjptYXJrSWZDaGVhcChTbG90VmlzaXRvciYpOwogCi1ib29sIEluQnlJZFN0YXR1czo6Zmlu
YWxpemUoVk0mIHZtKQorYm9vbCBJbkJ5U3RhdHVzOjpmaW5hbGl6ZShWTSYgdm0pCiB7CiAgICAg
Zm9yIChJbkJ5SWRWYXJpYW50JiB2YXJpYW50IDogbV92YXJpYW50cykgewogICAgICAgICBpZiAo
IXZhcmlhbnQuZmluYWxpemUodm0pKQpAQCAtMjc3LDcgKzI4MCwyNSBAQCBib29sIEluQnlJZFN0
YXR1czo6ZmluYWxpemUoVk0mIHZtKQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEluQnlJ
ZFN0YXR1czo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAorQ2FjaGVhYmxlSWRlbnRpZmll
ciBJbkJ5U3RhdHVzOjpzaW5nbGVJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICBpZiAobV92YXJp
YW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgQ2FjaGVhYmxl
SWRlbnRpZmllciByZXN1bHQgPSBtX3ZhcmlhbnRzLmZpcnN0KCkuaWRlbnRpZmllcigpOworICAg
IGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBmb3IgKHNpemVfdCBp
ID0gMTsgaSA8IG1fdmFyaWFudHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgQ2FjaGVhYmxlSWRl
bnRpZmllciBpZGVudGlmaWVyID0gbV92YXJpYW50c1tpXS5pZGVudGlmaWVyKCk7CisgICAgICAg
IGlmICghaWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBp
ZiAoaWRlbnRpZmllciAhPSByZXN1bHQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBJbkJ5U3RhdHVzOjpkdW1wKFByaW50
U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgb3V0LnByaW50KCIoIik7CiAgICAgc3dpdGNoICht
X3N0YXRlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5C
eUlkU3RhdHVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeVN0YXR1cy5o
CnNpbWlsYXJpdHkgaW5kZXggNzglCnJlbmFtZSBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9JbkJ5SWRTdGF0dXMuaApyZW5hbWUgdG8gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0luQnlTdGF0dXMuaAppbmRleCA3ZjE1ZmM1ZTQ2MWEuLjVhMzQwYjQ5M2EzNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFN0YXR1cy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5U3RhdHVzLmgKQEAgLTM5LDcg
KzM5LDcgQEAgY2xhc3MgQWNjZXNzQ2FzZTsKIGNsYXNzIENvZGVCbG9jazsKIGNsYXNzIFN0cnVj
dHVyZVN0dWJJbmZvOwogCi1jbGFzcyBJbkJ5SWRTdGF0dXMgZmluYWwgeworY2xhc3MgSW5CeVN0
YXR1cyBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
ZW51bSBTdGF0ZSB7CkBAIC01MiwxNyArNTIsMTUgQEAgcHVibGljOgogICAgICAgICBUYWtlc1Ns
b3dQYXRoLAogICAgIH07CiAKLSAgICBJbkJ5SWRTdGF0dXMoKSA9IGRlZmF1bHQ7CisgICAgSW5C
eVN0YXR1cygpID0gZGVmYXVsdDsKIAotICAgIEluQnlJZFN0YXR1cyhTdGF0ZSBzdGF0ZSwgY29u
c3QgSW5CeUlkVmFyaWFudCYgdmFyaWFudCA9IEluQnlJZFZhcmlhbnQoKSkKKyAgICBJbkJ5U3Rh
dHVzKFN0YXRlIHN0YXRlKQogICAgICAgICA6IG1fc3RhdGUoc3RhdGUpCiAgICAgewotICAgICAg
ICBBU1NFUlQoKHN0YXRlID09IFNpbXBsZSkgPT0gdmFyaWFudC5pc1NldCgpKTsKLSAgICAgICAg
aWYgKHZhcmlhbnQuaXNTZXQoKSkKLSAgICAgICAgICAgIG1fdmFyaWFudHMuYXBwZW5kKHZhcmlh
bnQpOworICAgICAgICBBU1NFUlQoc3RhdGUgIT0gU2ltcGxlKTsKICAgICB9CiAKLSAgICBleHBs
aWNpdCBJbkJ5SWRTdGF0dXMoU3R1YkluZm9TdW1tYXJ5IHN1bW1hcnkpCisgICAgZXhwbGljaXQg
SW5CeVN0YXR1cyhTdHViSW5mb1N1bW1hcnkgc3VtbWFyeSkKICAgICB7CiAgICAgICAgIHN3aXRj
aCAoc3VtbWFyeSkgewogICAgICAgICBjYXNlIFN0dWJJbmZvU3VtbWFyeTo6Tm9JbmZvcm1hdGlv
bjoKQEAgLTgwLDEyICs3OCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBJbkJ5SWRTdGF0dXMgY29tcHV0
ZUZvcihDb2RlQmxvY2sqLCBJQ1N0YXR1c01hcCYsIEJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJp
bmdJbXBsKiB1aWQpOwotICAgIHN0YXRpYyBJbkJ5SWRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxv
Y2sqLCBJQ1N0YXR1c01hcCYsIEJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQs
IEV4aXRGbGFnKTsKLSAgICBzdGF0aWMgSW5CeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2Nr
KiBiYXNlbGluZUJsb2NrLCBJQ1N0YXR1c01hcCYgYmFzZWxpbmVNYXAsIElDU3RhdHVzQ29udGV4
dFN0YWNrJiBjb250ZXh0U3RhY2ssIENvZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQp
OworICAgIHN0YXRpYyBJbkJ5U3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgSUNTdGF0dXNN
YXAmLCBCeXRlY29kZUluZGV4KTsKKyAgICBzdGF0aWMgSW5CeVN0YXR1cyBjb21wdXRlRm9yKENv
ZGVCbG9jayosIElDU3RhdHVzTWFwJiwgQnl0ZWNvZGVJbmRleCwgRXhpdEZsYWcpOworICAgIHN0
YXRpYyBJbkJ5U3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBJQ1N0
YXR1c01hcCYgYmFzZWxpbmVNYXAsIElDU3RhdHVzQ29udGV4dFN0YWNrJiwgQ29kZU9yaWdpbik7
CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBzdGF0aWMgSW5CeUlkU3RhdHVzIGNvbXB1dGVG
b3JTdHViSW5mbyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqIGJhc2VsaW5l
QmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiwgQ29kZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0ltcGwq
IHVpZCk7CisgICAgc3RhdGljIEluQnlTdGF0dXMgY29tcHV0ZUZvclN0dWJJbmZvKGNvbnN0IENv
bmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgU3RydWN0dXJlU3R1
YkluZm8qLCBDb2RlT3JpZ2luKTsKICNlbmRpZgogCiAgICAgU3RhdGUgc3RhdGUoKSBjb25zdCB7
IHJldHVybiBtX3N0YXRlOyB9CkBAIC0xMDEsNyArOTksNyBAQCBwdWJsaWM6CiAKICAgICBib29s
IHRha2VzU2xvd1BhdGgoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IFRha2VzU2xvd1BhdGg7
IH0KICAgICAKLSAgICB2b2lkIG1lcmdlKGNvbnN0IEluQnlJZFN0YXR1cyYpOworICAgIHZvaWQg
bWVyZ2UoY29uc3QgSW5CeVN0YXR1cyYpOwogCiAgICAgLy8gQXR0ZW1wdHMgdG8gcmVkdWNlIHRo
ZSBzZXQgb2YgdmFyaWFudHMgdG8gZml0IHRoZSBnaXZlbiBzdHJ1Y3R1cmUgc2V0LiBUaGlzIG1h
eSBiZSBhcHByb3hpbWF0ZS4KICAgICB2b2lkIGZpbHRlcihjb25zdCBTdHJ1Y3R1cmVTZXQmKTsK
QEAgLTExMSw5ICsxMDksMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFt
JikgY29uc3Q7CiAKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIHNpbmdsZUlkZW50aWZpZXIoKSBj
b25zdDsKKwogcHJpdmF0ZToKICNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBzdGF0aWMgSW5CeUlk
U3RhdHVzIGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKGNvbnN0IENv
bmN1cnJlbnRKU0xvY2tlciYsIFZNJiwgU3RydWN0dXJlU3R1YkluZm8qLCBVbmlxdWVkU3RyaW5n
SW1wbCogdWlkKTsKKyAgICBzdGF0aWMgSW5CeVN0YXR1cyBjb21wdXRlRm9yU3R1YkluZm9XaXRo
b3V0RXhpdFNpdGVGZWVkYmFjayhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBWTSYsIFN0cnVj
dHVyZVN0dWJJbmZvKik7CiAjZW5kaWYKICAgICBib29sIGFwcGVuZFZhcmlhbnQoY29uc3QgSW5C
eUlkVmFyaWFudCYpOwogICAgIHZvaWQgc2hyaW5rVG9GaXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAppbmRleCA5OTVmNDg1
YzIzZjYuLmYzOGU0MDkyZTE4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcApAQCAtNzAsMTAgKzcwLDEwIEBAIFB1dEJ5SWRT
dGF0dXMqIFJlY29yZGVkU3RhdHVzZXM6OmFkZFB1dEJ5SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdp
biYgY29kZU9yaWdpbiwKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1JbkJ5SWRTdGF0dXMqIFJl
Y29yZGVkU3RhdHVzZXM6OmFkZEluQnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3Jp
Z2luLCBjb25zdCBJbkJ5SWRTdGF0dXMmIHN0YXR1cykKK0luQnlTdGF0dXMqIFJlY29yZGVkU3Rh
dHVzZXM6OmFkZEluQnlTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwgY29uc3Qg
SW5CeVN0YXR1cyYgc3RhdHVzKQogewotICAgIGF1dG8gc3RhdHVzUHRyID0gbWFrZVVuaXF1ZTxJ
bkJ5SWRTdGF0dXM+KHN0YXR1cyk7Ci0gICAgSW5CeUlkU3RhdHVzKiByZXN1bHQgPSBzdGF0dXNQ
dHIuZ2V0KCk7CisgICAgYXV0byBzdGF0dXNQdHIgPSBtYWtlVW5pcXVlPEluQnlTdGF0dXM+KHN0
YXR1cyk7CisgICAgSW5CeVN0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdldCgpOwogICAgIGlu
cy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoY29kZU9yaWdpbiwgV1RGTW92ZShzdGF0dXNQdHIpKSk7
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5oCmluZGV4IDg0ODk4N2I1MjJhNS4uYmQxNTcwNTQ1NzM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0
dXNlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1
c2VzLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJDaGVja1ByaXZhdGVCcmFuZFN0YXR1
cy5oIgogI2luY2x1ZGUgIkRlbGV0ZUJ5U3RhdHVzLmgiCiAjaW5jbHVkZSAiR2V0QnlTdGF0dXMu
aCIKLSNpbmNsdWRlICJJbkJ5SWRTdGF0dXMuaCIKKyNpbmNsdWRlICJJbkJ5U3RhdHVzLmgiCiAj
aW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5oIgogI2luY2x1ZGUgIlNldFByaXZhdGVCcmFuZFN0YXR1
cy5oIgogCkBAIC00OSw3ICs0OSw3IEBAIHN0cnVjdCBSZWNvcmRlZFN0YXR1c2VzIHsKICAgICBD
YWxsTGlua1N0YXR1cyogYWRkQ2FsbExpbmtTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYsIGNvbnN0
IENhbGxMaW5rU3RhdHVzJik7CiAgICAgR2V0QnlTdGF0dXMqIGFkZEdldEJ5U3RhdHVzKGNvbnN0
IENvZGVPcmlnaW4mLCBjb25zdCBHZXRCeVN0YXR1cyYpOwogICAgIFB1dEJ5SWRTdGF0dXMqIGFk
ZFB1dEJ5SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYsIGNvbnN0IFB1dEJ5SWRTdGF0dXMmKTsK
LSAgICBJbkJ5SWRTdGF0dXMqIGFkZEluQnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiwgY29u
c3QgSW5CeUlkU3RhdHVzJik7CisgICAgSW5CeVN0YXR1cyogYWRkSW5CeVN0YXR1cyhjb25zdCBD
b2RlT3JpZ2luJiwgY29uc3QgSW5CeVN0YXR1cyYpOwogICAgIERlbGV0ZUJ5U3RhdHVzKiBhZGRE
ZWxldGVCeVN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiwgY29uc3QgRGVsZXRlQnlTdGF0dXMmKTsK
ICAgICBDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyogYWRkQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMo
Y29uc3QgQ29kZU9yaWdpbiYsIGNvbnN0IENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzJik7CiAgICAg
U2V0UHJpdmF0ZUJyYW5kU3RhdHVzKiBhZGRTZXRQcml2YXRlQnJhbmRTdGF0dXMoY29uc3QgQ29k
ZU9yaWdpbiYsIGNvbnN0IFNldFByaXZhdGVCcmFuZFN0YXR1cyYpOwpAQCAtNzcsNyArNzcsNyBA
QCBzdHJ1Y3QgUmVjb3JkZWRTdGF0dXNlcyB7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxDb2RlT3Jp
Z2luLCBzdGQ6OnVuaXF1ZV9wdHI8Q2FsbExpbmtTdGF0dXM+Pj4gY2FsbHM7CiAgICAgVmVjdG9y
PHN0ZDo6cGFpcjxDb2RlT3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8R2V0QnlTdGF0dXM+Pj4gZ2V0
czsKICAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxQdXRC
eUlkU3RhdHVzPj4+IHB1dHM7Ci0gICAgVmVjdG9yPHN0ZDo6cGFpcjxDb2RlT3JpZ2luLCBzdGQ6
OnVuaXF1ZV9wdHI8SW5CeUlkU3RhdHVzPj4+IGluczsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPENv
ZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxJbkJ5U3RhdHVzPj4+IGluczsKICAgICBWZWN0b3I8
c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxEZWxldGVCeVN0YXR1cz4+PiBk
ZWxldGVzOwogICAgIFZlY3RvcjxzdGQ6OnBhaXI8Q29kZU9yaWdpbiwgc3RkOjp1bmlxdWVfcHRy
PENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzPj4+IGNoZWNrUHJpdmF0ZUJyYW5kczsKICAgICBWZWN0
b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxTZXRQcml2YXRlQnJhbmRT
dGF0dXM+Pj4gc2V0UHJpdmF0ZUJyYW5kczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCmluZGV4IGM4ZTZiYzYzYTM2YS4uYWZh
ZTRlODQyZmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Ry
dWN0dXJlU3R1YkluZm8uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
dHJ1Y3R1cmVTdHViSW5mby5jcHAKQEAgLTI3Miw4ICsyNzIsMTEgQEAgdm9pZCBTdHJ1Y3R1cmVT
dHViSW5mbzo6cmVzZXQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyQmFzZSYgbG9ja2VyLCBDb2Rl
QmxvY2sqIGMKICAgICBjYXNlIEFjY2Vzc1R5cGU6OlB1dDoKICAgICAgICAgcmVzZXRQdXRCeUlE
KGNvZGVCbG9jaywgKnRoaXMpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEFjY2Vzc1R5cGU6
OkluOgotICAgICAgICByZXNldEluQnlJRChjb2RlQmxvY2ssICp0aGlzKTsKKyAgICBjYXNlIEFj
Y2Vzc1R5cGU6OkluQnlJZDoKKyAgICAgICAgcmVzZXRJbkJ5KGNvZGVCbG9jaywgKnRoaXMsIElu
QnlLaW5kOjpOb3JtYWwpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc1R5cGU6Oklu
QnlWYWw6CisgICAgICAgIHJlc2V0SW5CeShjb2RlQmxvY2ssICp0aGlzLCBJbkJ5S2luZDo6Tm9y
bWFsQnlWYWwpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6Okluc3RhbmNl
T2Y6CiAgICAgICAgIHJlc2V0SW5zdGFuY2VPZigqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCmluZGV4IDg4MjU2OGMyNmVh
ZC4uYTk0MDVkY2ViOWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3RydWN0dXJlU3R1YkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3RydWN0dXJlU3R1YkluZm8uaApAQCAtNTUsNyArNTUsOCBAQCBlbnVtIGNsYXNzIEFjY2Vz
c1R5cGUgOiBpbnQ4X3QgewogICAgIFRyeUdldEJ5SWQsCiAgICAgR2V0QnlWYWwsCiAgICAgUHV0
LAotICAgIEluLAorICAgIEluQnlJZCwKKyAgICBJbkJ5VmFsLAogICAgIEluc3RhbmNlT2YsCiAg
ICAgRGVsZXRlQnlJRCwKICAgICBEZWxldGVCeVZhbCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCBk
NjAyNTFiZTJkZjUuLjI4MWZhOTBmMzAxYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtNDQzOSw3
ICs0NDM5LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICBjYXNlIEZpbHRlckNhbGxM
aW5rU3RhdHVzOgogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQ
dXRCeUlkU3RhdHVzOgotICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2UgRmls
dGVySW5CeVN0YXR1czoKICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgIGNhc2Ug
RmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRl
QnJhbmRTdGF0dXM6CkBAIC00NjEwLDEwICs0NjEwLDEwIEBAIHZvaWQgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmZpbHRlcklDU3RhdHVzKE5vZGUqIG5vZGUpCiAgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCi0gICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6
IHsKKyAgICBjYXNlIEZpbHRlckluQnlTdGF0dXM6IHsKICAgICAgICAgQWJzdHJhY3RWYWx1ZSYg
dmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgaWYgKHZhbHVlLm1fc3Ry
dWN0dXJlLmlzRmluaXRlKCkpCi0gICAgICAgICAgICBub2RlLT5pbkJ5SWRTdGF0dXMoKS0+Zmls
dGVyKHZhbHVlLm1fc3RydWN0dXJlLnRvU3RydWN0dXJlU2V0KCkpOworICAgICAgICAgICAgbm9k
ZS0+aW5CeVN0YXR1cygpLT5maWx0ZXIodmFsdWUubV9zdHJ1Y3R1cmUudG9TdHJ1Y3R1cmVTZXQo
KSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcApp
bmRleCA2ZjgxNzM4OGFjMzguLmMyMTZhMzk2ZDcxNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCkBA
IC00MDQsNyArNDA0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRlckdl
dEJ5U3RhdHVzOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAg
ICAgICAgICAgICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgotICAgICAgICAgICAgICAg
IGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVySW5C
eVN0YXR1czoKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAg
ICAgICAgICAgICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6CiAgICAgICAg
ICAgICAgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6CkBAIC0xMjY3LDcgKzEy
NjcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6
CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICAgICAg
ICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6Ci0gICAgICAgICAgICAgICAgY2FzZSBGaWx0
ZXJJbkJ5SWRTdGF0dXM6CisgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5U3RhdHVzOgog
ICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAgICAgICAg
ICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1czoKICAgICAgICAgICAgICAgICBj
YXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1czogewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCA3MDc5ZTUyYWRhOGIuLmMxZDZh
MTI3ODg0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKQEAgLTU1LDcgKzU1LDcgQEAKICNpbmNsdWRlICJHZXRCeVN0YXR1cy5oIgogI2lu
Y2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhlYXAuaCIKLSNpbmNsdWRlICJJbkJ5
SWRTdGF0dXMuaCIKKyNpbmNsdWRlICJJbkJ5U3RhdHVzLmgiCiAjaW5jbHVkZSAiSW5zdGFuY2VP
ZlN0YXR1cy5oIgogI2luY2x1ZGUgIkpTQXJyYXlJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKQEAgLTI2Myw3ICsyNjMsOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBoYW5kbGVE
ZWxldGVCeUlkKAogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgZGVzdGluYXRpb24sIE5vZGUqIGJh
c2UsIENhY2hlYWJsZUlkZW50aWZpZXIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIERlbGV0
ZUJ5U3RhdHVzLCBFQ01BTW9kZSk7Ci0gICAgCisKKyAgICB2b2lkIGhhbmRsZUluQnlJZChWaXJ0
dWFsUmVnaXN0ZXIgZGVzdGluYXRpb24sIE5vZGUqIGJhc2UsIENhY2hlYWJsZUlkZW50aWZpZXIs
IEluQnlTdGF0dXMpOworCiAgICAgLy8gRWl0aGVyIHJlZ2lzdGVyIGEgd2F0Y2hwb2ludCBvciBl
bWl0IGEgY2hlY2sgZm9yIHRoaXMgY29uZGl0aW9uLiBSZXR1cm5zIGZhbHNlIGlmIHRoZQogICAg
IC8vIGNvbmRpdGlvbiBubyBsb25nZXIgaG9sZHMsIGFuZCB0aGVyZWZvcmUgbm8gcmVhc29uYWJs
ZSBjaGVjayBjYW4gYmUgZW1pdHRlZC4KICAgICBib29sIGNoZWNrKGNvbnN0IE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uJik7CkBAIC00OTI4LDYgKzQ5MzAsMzUgQEAgdm9pZCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlRGVsZXRlQnlJZCgKICAgICByZXR1cm47CiB9CiAKK3ZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUluQnlJZChWaXJ0dWFsUmVnaXN0ZXIgZGVzdGluYXRpb24sIE5vZGUqIGJhc2Us
IENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSW5CeVN0YXR1cyBzdGF0dXMpCit7Cisg
ICAgaWYgKHN0YXR1cy5pc1NpbXBsZSgpICYmIE9wdGlvbnM6OnVzZUFjY2Vzc0lubGluaW5nKCkp
IHsKKyAgICAgICAgYm9vbCBhbGxPSyA9IHRydWU7CisgICAgICAgIE1hdGNoU3RydWN0dXJlRGF0
YSogZGF0YSA9IG1fZ3JhcGgubV9tYXRjaFN0cnVjdHVyZURhdGEuYWRkKCk7CisgICAgICAgIGZv
ciAoY29uc3QgSW5CeUlkVmFyaWFudCYgdmFyaWFudCA6IHN0YXR1cy52YXJpYW50cygpKSB7Cisg
ICAgICAgICAgICBpZiAoIWNoZWNrKHZhcmlhbnQuY29uZGl0aW9uU2V0KCkpKSB7CisgICAgICAg
ICAgICAgICAgYWxsT0sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGZvciAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUgOiB2YXJpYW50LnN0
cnVjdHVyZVNldCgpKSB7CisgICAgICAgICAgICAgICAgTWF0Y2hTdHJ1Y3R1cmVWYXJpYW50IG1h
dGNoVmFyaWFudDsKKyAgICAgICAgICAgICAgICBtYXRjaFZhcmlhbnQuc3RydWN0dXJlID0gbV9n
cmFwaC5yZWdpc3RlclN0cnVjdHVyZShzdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAgIG1hdGNo
VmFyaWFudC5yZXN1bHQgPSB2YXJpYW50LmlzSGl0KCk7CisKKyAgICAgICAgICAgICAgICBkYXRh
LT52YXJpYW50cy5hcHBlbmQoV1RGTW92ZShtYXRjaFZhcmlhbnQpKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgIGlmIChhbGxPSykgeworICAgICAgICAgICAgYWRkVG9HcmFw
aChGaWx0ZXJJbkJ5U3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNl
cygpLmFkZEluQnlTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgc3RhdHVzKSksIGJhc2UpOwor
ICAgICAgICAgICAgc2V0KGRlc3RpbmF0aW9uLCBhZGRUb0dyYXBoKE1hdGNoU3RydWN0dXJlLCBP
cEluZm8oZGF0YSksIGJhc2UpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHNldChkZXN0aW5hdGlvbiwgYWRkVG9HcmFwaChJbkJ5SWQsIE9wSW5mbyhpZGVu
dGlmaWVyKSwgYmFzZSkpOworfQorCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjplbWl0UHV0QnlJZCgK
ICAgICBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIE5vZGUqIHZh
bHVlLCBjb25zdCBQdXRCeUlkU3RhdHVzJiBwdXRCeUlkU3RhdHVzLCBib29sIGlzRGlyZWN0LCBF
Q01BTW9kZSBlY21hTW9kZSkKIHsKQEAgLTgyMTIsNDkgKzgyNDMsNTMgQEAgdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKIAogICAgICAgICBjYXNlIG9wX2lu
X2J5X3ZhbDogewogICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlv
bi0+YXM8T3BJbkJ5VmFsPigpOwotICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdl
dEFycmF5TW9kZShieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fYXJyYXlQcm9maWxlLCBB
cnJheTo6UmVhZCk7Ci0gICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3JhcGgo
SW5CeVZhbCwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIGdldChieXRlY29kZS5tX2Jhc2Up
LCBnZXQoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpKTsKLSAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9w
X2luX2J5X3ZhbCk7Ci0gICAgICAgIH0KLQotICAgICAgICBjYXNlIG9wX2luX2J5X2lkOiB7Ci0g
ICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEluQnlJ
ZD4oKTsKICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoYnl0ZWNvZGUubV9iYXNlKTsKLSAg
ICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lubGluZVN0YWNrVG9wLT5t
X2lkZW50aWZpZXJSZW1hcFtieXRlY29kZS5tX3Byb3BlcnR5XTsKLSAgICAgICAgICAgIFVuaXF1
ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2dyYXBoLmlkZW50aWZpZXJzKClbaWRlbnRpZmllck51bWJl
cl07CisgICAgICAgICAgICBOb2RlKiBwcm9wZXJ0eSA9IGdldChieXRlY29kZS5tX3Byb3BlcnR5
KTsKKyAgICAgICAgICAgIGJvb2wgY29tcGlsZWRBc0luQnlJZCA9IGZhbHNlOwogCi0gICAgICAg
ICAgICBJbkJ5SWRTdGF0dXMgc3RhdHVzID0gSW5CeUlkU3RhdHVzOjpjb21wdXRlRm9yKAorICAg
ICAgICAgICAgSW5CeVN0YXR1cyBzdGF0dXMgPSBJbkJ5U3RhdHVzOjpjb21wdXRlRm9yKAogICAg
ICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKICAgICAgICAg
ICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0YWNr
LAotICAgICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCksIHVpZCk7Ci0KLSAgICAgICAg
ICAgIGlmIChzdGF0dXMuaXNTaW1wbGUoKSAmJiBPcHRpb25zOjp1c2VBY2Nlc3NJbmxpbmluZygp
KSB7Ci0gICAgICAgICAgICAgICAgYm9vbCBhbGxPSyA9IHRydWU7Ci0gICAgICAgICAgICAgICAg
TWF0Y2hTdHJ1Y3R1cmVEYXRhKiBkYXRhID0gbV9ncmFwaC5tX21hdGNoU3RydWN0dXJlRGF0YS5h
ZGQoKTsKLSAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IEluQnlJZFZhcmlhbnQmIHZhcmlhbnQg
OiBzdGF0dXMudmFyaWFudHMoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoIWNoZWNrKHZh
cmlhbnQuY29uZGl0aW9uU2V0KCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhbGxPSyA9
IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6IHZh
cmlhbnQuc3RydWN0dXJlU2V0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIE1hdGNoU3Ry
dWN0dXJlVmFyaWFudCBtYXRjaFZhcmlhbnQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtYXRj
aFZhcmlhbnQuc3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShzdHJ1Y3R1cmUp
OwotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hWYXJpYW50LnJlc3VsdCA9IHZhcmlhbnQu
aXNIaXQoKTsKKyAgICAgICAgICAgICAgICBjdXJyZW50Q29kZU9yaWdpbigpKTsKIAotICAgICAg
ICAgICAgICAgICAgICAgICAgZGF0YS0+dmFyaWFudHMuYXBwZW5kKFdURk1vdmUobWF0Y2hWYXJp
YW50KSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAoIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9j
dXJyZW50SW5kZXgsIEJhZElkZW50KQorICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNr
VG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRUeXBlKQor
ICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4
aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDb25zdGFudFZhbHVlKSkgewogCi0gICAgICAgICAg
ICAgICAgaWYgKGFsbE9LKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRmlsdGVy
SW5CeUlkU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcygpLmFk
ZEluQnlJZFN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBzdGF0dXMpKSwgYmFzZSk7CisgICAg
ICAgICAgICAgICAgaWYgKENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IHN0YXR1cy5z
aW5nbGVJZGVudGlmaWVyKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0lt
cGwqIHVpZCA9IGlkZW50aWZpZXIudWlkKCk7CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgu
aWRlbnRpZmllcnMoKS5lbnN1cmUodWlkKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlkZW50
aWZpZXIuaXNDZWxsKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEZyb3plblZhbHVlKiBm
cm96ZW4gPSBtX2dyYXBoLmZyZWV6ZVN0cm9uZyhpZGVudGlmaWVyLmNlbGwoKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoaWRlbnRpZmllci5pc1N5bWJvbENlbGwoKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrSXNDb25zdGFudCwgT3BJbmZvKGZy
b3plbiksIHByb3BlcnR5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrSWRlbnQsIE9wSW5mbyh1aWQpLCBw
cm9wZXJ0eSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAg
ICAgICAgYWRkVG9HcmFwaChDaGVja0lkZW50LCBPcEluZm8odWlkKSwgcHJvcGVydHkpOwogCi0g
ICAgICAgICAgICAgICAgICAgIE5vZGUqIG1hdGNoID0gYWRkVG9HcmFwaChNYXRjaFN0cnVjdHVy
ZSwgT3BJbmZvKGRhdGEpLCBiYXNlKTsKLSAgICAgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2Rl
Lm1fZHN0LCBtYXRjaCk7Ci0gICAgICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2luX2J5
X2lkKTsKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlSW5CeUlkKGJ5dGVjb2RlLm1fZHN0LCBi
YXNlLCBpZGVudGlmaWVyLCBzdGF0dXMpOworICAgICAgICAgICAgICAgICAgICBjb21waWxlZEFz
SW5CeUlkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChJbkJ5SWQsIE9wSW5mbyhDYWNo
ZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9p
bmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCB1aWQpKSwgYmFzZSkpOworICAgICAgICAg
ICAgaWYgKCFjb21waWxlZEFzSW5CeUlkKSB7CisgICAgICAgICAgICAgICAgQXJyYXlNb2RlIGFy
cmF5TW9kZSA9IGdldEFycmF5TW9kZShieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spLm1fYXJy
YXlQcm9maWxlLCBBcnJheTo6UmVhZCk7CisgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1f
ZHN0LCBhZGRUb0dyYXBoKEluQnlWYWwsIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBiYXNl
LCBwcm9wZXJ0eSkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgTkVYVF9PUENPREUob3Bf
aW5fYnlfdmFsKTsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3BfaW5fYnlfaWQ6IHsKKyAg
ICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5CeUlk
PigpOworICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChieXRlY29kZS5tX2Jhc2UpOworICAg
ICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1f
aWRlbnRpZmllclJlbWFwW2J5dGVjb2RlLm1fcHJvcGVydHldOworICAgICAgICAgICAgVW5pcXVl
ZFN0cmluZ0ltcGwqIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKVtpZGVudGlmaWVyTnVtYmVy
XTsKKyAgICAgICAgICAgIEluQnlTdGF0dXMgc3RhdHVzID0gSW5CeVN0YXR1czo6Y29tcHV0ZUZv
cigKKyAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssCisg
ICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcCwgbV9pY0NvbnRl
eHRTdGFjaywKKyAgICAgICAgICAgICAgICBjdXJyZW50Q29kZU9yaWdpbigpKTsKKyAgICAgICAg
ICAgIGhhbmRsZUluQnlJZChieXRlY29kZS5tX2RzdCwgYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1faW5saW5lU3RhY2tUb3At
Pm1fcHJvZmlsZWRCbG9jaywgdWlkKSwgc3RhdHVzKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RF
KG9wX2luX2J5X2lkKTsKICAgICAgICAgfQogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggZGNhNmM0YWYyOWE5Li4wMWRhNTZkZTE4ZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC01MDQsNyArNTA0
LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVh
ZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3Rh
dHVzOgogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlk
U3RhdHVzOgotICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVySW5C
eVN0YXR1czoKICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVy
Q2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRT
dGF0dXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJz
RXhpdFN0YXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0
U3RhdGUuY3BwCmluZGV4IDZmZDRhNzZiNjE4Zi4uODZhM2QwNzY2NGQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcApAQCAtODIs
NyArODIsNyBAQCBib29sIGNsb2JiZXJzRXhpdFN0YXRlKEdyYXBoJiBncmFwaCwgTm9kZSogbm9k
ZSkKICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgogICAgIGNhc2UgRmlsdGVyR2V0QnlT
dGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgotICAgIGNhc2UgRmlsdGVySW5C
eUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVySW5CeVN0YXR1czoKICAgICBjYXNlIEZpbHRlckRl
bGV0ZUJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6CiAg
ICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggMDI4NGE3ZTMwNGEwLi40MTBjMzQ1MDNmZjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCBi
b29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBGaWx0ZXJDYWxs
TGlua1N0YXR1czoKICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVy
UHV0QnlJZFN0YXR1czoKLSAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICBjYXNlIEZp
bHRlckluQnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICBjYXNl
IEZpbHRlckNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOgogICAgIGNhc2UgRmlsdGVyU2V0UHJpdmF0
ZUJyYW5kU3RhdHVzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAKaW5kZXggOGEwOWZiNDUxODg3Li5jNDZhNWZmMTNkNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMjg4Miw3ICsyODgyLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKICAgICAgICAgY2FzZSBGaWx0
ZXJHZXRCeVN0YXR1czoKICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgotICAgICAg
ICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5U3RhdHVz
OgogICAgICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRl
ckNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlclNldFByaXZhdGVC
cmFuZFN0YXR1czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3Jh
cGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKaW5kZXggMjVh
YjljMzM5NTFmLi4xMTEwMDgyNjAzOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3Jh
cGguY3BwCkBAIC0zODMsOCArMzgzLDggQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYg
b3V0LCBjb25zdCBjaGFyKiBwcmVmaXhTdHIsIE5vZGUqIG5vZGUsIER1bXBDb250ZXgKICAgICAg
ICAgb3V0LnByaW50KGNvbW1hLCAqbm9kZS0+Y2FsbExpbmtTdGF0dXMoKSk7CiAgICAgaWYgKG5v
ZGUtPmhhc0dldEJ5U3RhdHVzKCkpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgKm5vZGUtPmdl
dEJ5U3RhdHVzKCkpOwotICAgIGlmIChub2RlLT5oYXNJbkJ5SWRTdGF0dXMoKSkKLSAgICAgICAg
b3V0LnByaW50KGNvbW1hLCAqbm9kZS0+aW5CeUlkU3RhdHVzKCkpOworICAgIGlmIChub2RlLT5o
YXNJbkJ5U3RhdHVzKCkpCisgICAgICAgIG91dC5wcmludChjb21tYSwgKm5vZGUtPmluQnlTdGF0
dXMoKSk7CiAgICAgaWYgKG5vZGUtPmhhc1B1dEJ5SWRTdGF0dXMoKSkKICAgICAgICAgb3V0LnBy
aW50KGNvbW1hLCAqbm9kZS0+cHV0QnlJZFN0YXR1cygpKTsKICAgICBpZiAobm9kZS0+aXNKdW1w
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCmluZGV4
IGRkYmI2ZGI0YzBjNC4uOTEwY2YxMzk5ZmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvbXBpbGVyLmNwcApAQCAtMjU1LDYgKzI1NSw3IEBAIHZvaWQgSklUQ29tcGls
ZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKICAgICBmaW5hbGl6ZUlubGluZUNhY2hl
cyhtX2RlbEJ5SWRzLCBsaW5rQnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2Rl
bEJ5VmFscywgbGlua0J1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9pbkJ5SWRz
LCBsaW5rQnVmZmVyKTsKKyAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2luQnlWYWxzLCBsaW5r
QnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2luc3RhbmNlT2ZzLCBsaW5rQnVm
ZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzLCBs
aW5rQnVmZmVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5o
CmluZGV4IDhhZGVhZDUwZjQ1NS4uMTg3NTQzZDE2ZWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb21waWxlci5oCkBAIC0yMTQsNiArMjE0LDExIEBAIHB1YmxpYzoKICAg
ICAgICAgbV9pbkJ5SWRzLmFwcGVuZChJbmxpbmVDYWNoZVdyYXBwZXI8SklUSW5CeUlkR2VuZXJh
dG9yPihnZW4sIHNsb3dQYXRoKSk7CiAgICAgfQogCisgICAgdm9pZCBhZGRJbkJ5VmFsKGNvbnN0
IEpJVEluQnlWYWxHZW5lcmF0b3ImIGdlbiwgU2xvd1BhdGhHZW5lcmF0b3IqIHNsb3dQYXRoKQor
ICAgIHsKKyAgICAgICAgbV9pbkJ5VmFscy5hcHBlbmQoSW5saW5lQ2FjaGVXcmFwcGVyPEpJVElu
QnlWYWxHZW5lcmF0b3I+KGdlbiwgc2xvd1BhdGgpKTsKKyAgICB9CisKICAgICB2b2lkIGFkZFBy
aXZhdGVCcmFuZEFjY2Vzcyhjb25zdCBKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdl
biwgU2xvd1BhdGhHZW5lcmF0b3IqIHNsb3dQYXRoKQogICAgIHsKICAgICAgICAgbV9wcml2YXRl
QnJhbmRBY2Nlc3Nlcy5hcHBlbmQoSW5saW5lQ2FjaGVXcmFwcGVyPEpJVFByaXZhdGVCcmFuZEFj
Y2Vzc0dlbmVyYXRvcj4oZ2VuLCBzbG93UGF0aCkpOwpAQCAtMzUzLDYgKzM1OCw3IEBAIHByaXZh
dGU6CiAgICAgVmVjdG9yPElubGluZUNhY2hlV3JhcHBlcjxKSVREZWxCeUlkR2VuZXJhdG9yPiwg
ND4gbV9kZWxCeUlkczsKICAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVERlbEJ5VmFs
R2VuZXJhdG9yPiwgND4gbV9kZWxCeVZhbHM7CiAgICAgVmVjdG9yPElubGluZUNhY2hlV3JhcHBl
cjxKSVRJbkJ5SWRHZW5lcmF0b3I+LCA0PiBtX2luQnlJZHM7CisgICAgVmVjdG9yPElubGluZUNh
Y2hlV3JhcHBlcjxKSVRJbkJ5VmFsR2VuZXJhdG9yPiwgND4gbV9pbkJ5VmFsczsKICAgICBWZWN0
b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVEluc3RhbmNlT2ZHZW5lcmF0b3I+LCA0PiBtX2luc3Rh
bmNlT2ZzOwogICAgIFZlY3RvcjxJbmxpbmVDYWNoZVdyYXBwZXI8SklUUHJpdmF0ZUJyYW5kQWNj
ZXNzR2VuZXJhdG9yPiwgND4gbV9wcml2YXRlQnJhbmRBY2Nlc3NlczsKICAgICBWZWN0b3I8SlND
YWxsUmVjb3JkLCA0PiBtX2pzQ2FsbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR01heUV4aXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlF
eGl0LmNwcAppbmRleCBkYzM3MmM3MGZlODguLmY5ZjI2NWUwNGUzYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgRXhpdE1vZGUg
bWF5RXhpdEltcGwoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBTdGF0ZVR5cGUmIHN0YXRlKQog
ICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1
czoKICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6Ci0gICAgY2FzZSBGaWx0ZXJJbkJ5SWRT
dGF0dXM6CisgICAgY2FzZSBGaWx0ZXJJbkJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyRGVsZXRl
QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1czoKICAgICBj
YXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgKaW5kZXggMTY5NjE3YmVhYWZmLi4zYzkxNWM5NzlhODkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oCkBAIC0zMTA5LDE1ICszMTA5LDE1IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIG1fb3BJbmZvLmFzPEdldEJ5U3RhdHVzKj4oKTsKICAgICB9CiAgICAgCi0gICAgYm9v
bCBoYXNJbkJ5SWRTdGF0dXMoKQorICAgIGJvb2wgaGFzSW5CeVN0YXR1cygpCiAgICAgewotICAg
ICAgICByZXR1cm4gb3AoKSA9PSBGaWx0ZXJJbkJ5SWRTdGF0dXM7CisgICAgICAgIHJldHVybiBv
cCgpID09IEZpbHRlckluQnlTdGF0dXM7CiAgICAgfQogICAgIAotICAgIEluQnlJZFN0YXR1cyog
aW5CeUlkU3RhdHVzKCkKKyAgICBJbkJ5U3RhdHVzKiBpbkJ5U3RhdHVzKCkKICAgICB7Ci0gICAg
ICAgIEFTU0VSVChoYXNJbkJ5SWRTdGF0dXMoKSk7Ci0gICAgICAgIHJldHVybiBtX29wSW5mby5h
czxJbkJ5SWRTdGF0dXMqPigpOworICAgICAgICBBU1NFUlQoaGFzSW5CeVN0YXR1cygpKTsKKyAg
ICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPEluQnlTdGF0dXMqPigpOwogICAgIH0KICAgICAKICAg
ICBib29sIGhhc1B1dEJ5SWRTdGF0dXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oCmluZGV4IDI5ZjM4OGFmY2QzOC4uZGFiM2U0ZmE5Y2NiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC01NDYsNyArNTQ2LDcgQEAgbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBERkcgewogICAgIC8qIFVzZWQgdG8gcHJvdmlkZSBmZWVkYmFjayB0byB0
aGUgSUMgcHJvZmlsZXIuICovIFwKICAgICBtYWNybyhGaWx0ZXJDYWxsTGlua1N0YXR1cywgTm9k
ZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEZpbHRlckdldEJ5U3RhdHVzLCBOb2RlTXVzdEdl
bmVyYXRlKSBcCi0gICAgbWFjcm8oRmlsdGVySW5CeUlkU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRl
KSBcCisgICAgbWFjcm8oRmlsdGVySW5CeVN0YXR1cywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAg
IG1hY3JvKEZpbHRlclB1dEJ5SWRTdGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNy
byhGaWx0ZXJEZWxldGVCeVN0YXR1cywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEZp
bHRlckNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5n
UGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9u
U2lua2luZ1BoYXNlLmNwcAppbmRleCA5ZDE5MWZmOTVjNTQuLjY2NzgzNTU1ZGYyMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2lu
Z1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9j
YXRpb25TaW5raW5nUGhhc2UuY3BwCkBAIC0xMjU5LDcgKzEyNTksNyBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlckdldEJ5
U3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6Ci0gICAgICAgIGNhc2Ug
RmlsdGVySW5CeUlkU3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRlckluQnlTdGF0dXM6CiAgICAg
ICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVyQ2hlY2tQ
cml2YXRlQnJhbmRTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVyU2V0UHJpdmF0ZUJyYW5kU3Rh
dHVzOgpAQCAtMjYxNiw3ICsyNjE2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBjYXNl
IEZpbHRlckNhbGxMaW5rU3RhdHVzOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyR2V0QnlT
dGF0dXM6CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgotICAgICAg
ICAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgICAgICAgICAgICAgIGNhc2Ug
RmlsdGVySW5CeVN0YXR1czoKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3Rh
dHVzOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6
CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwCmluZGV4IDViNTgwYmI1NDNjMS4uYmEwZDNlMzZjMWRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcApAQCAtMTQ1MSw3ICsxNDUxLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
Y2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKICAgICAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1
czoKICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgotICAgICAgICBjYXNlIEZpbHRl
ckluQnlJZFN0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5U3RhdHVzOgogICAgICAgICBj
YXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlckNoZWNrUHJpdmF0
ZUJyYW5kU3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1czoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggMjgx
MzE3YTNjNTMwLi42M2FlZTI4MGY0ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0zNjEsNyArMzYxLDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRl
KEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29s
IGlnbm8KICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgogICAgIGNhc2UgRmlsdGVyR2V0
QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgotICAgIGNhc2UgRmlsdGVy
SW5CeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVySW5CeVN0YXR1czoKICAgICBjYXNlIEZpbHRl
ckRlbGV0ZUJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6
CiAgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDBhZjVkZDk4MzljOC4u
OTA1OTcyOTk1M2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcApAQCAtMTI4NiwxOCArMTI4NiwzMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlSW5CeVZhbChOb2RlKiBub2RlKQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFsdWVPcGVyYW5kIGtleSh0aGlz
LCBub2RlLT5jaGlsZDIoKSk7CisgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMs
IFJldXNlLCBrZXkpOwogCiAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwotICAgIEpT
VmFsdWVSZWdzIHJlZ3MgPSBrZXkuanNWYWx1ZVJlZ3MoKTsKKyAgICBKU1ZhbHVlUmVncyBrZXlS
ZWdzID0ga2V5LmpzVmFsdWVSZWdzKCk7CisgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJl
c3VsdC5yZWdzKCk7CiAKICAgICBiYXNlLnVzZSgpOwogICAgIGtleS51c2UoKTsKIAotICAgIGZs
dXNoUmVnaXN0ZXJzKCk7Ci0gICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQo
dGhpcyk7Ci0gICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7Ci0gICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25JbkJ5VmFsLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgcmVncyk7Ci0gICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2so
KTsKKyAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBub2RlLT5vcmlnaW4uc2VtYW50aWM7Cisg
ICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1faml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJh
dGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5lZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+
c2l6ZSgpKTsKKyAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lz
dGVycygpOworICAgIEpJVEluQnlWYWxHZW5lcmF0b3IgZ2VuKAorICAgICAgICBtX2ppdC5jb2Rl
QmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIEpT
VmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BSKSwga2V5UmVncywgcmVzdWx0UmVncyk7Cisg
ICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOworCisgICAgYXV0byBzbG93UGF0aCA9IHNs
b3dQYXRoQ2FsbCgKKyAgICAgICAgZ2VuLnNsb3dQYXRoSnVtcCgpLCB0aGlzLCBvcGVyYXRpb25J
bkJ5VmFsT3B0aW1pemUsCisgICAgICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVp
cmVtZW50OjpDaGVja05lZWRlZCwKKyAgICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGdlbi5zdHViSW5mbygpLCBudWxscHRyLCBDQ2FsbEhlbHBlcnM6OkNlbGxW
YWx1ZShiYXNlR1BSKSwga2V5UmVncyk7CisKKyAgICBtX2ppdC5hZGRJbkJ5VmFsKGdlbiwgc2xv
d1BhdGguZ2V0KCkpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgp
KTsKKwogICAgIGJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdFJlZ3MucGF5bG9hZEdQUigpLCBu
b2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCBmMTJm
ODZmMGQ2ODkuLjYzY2EzZmQyZTFhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC00MjcxLDcgKzQyNzEsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBGaWx0ZXJD
YWxsTGlua1N0YXR1czoKICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgIGNhc2UgRmls
dGVyUHV0QnlJZFN0YXR1czoKLSAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICBjYXNl
IEZpbHRlckluQnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICBj
YXNlIEZpbHRlckNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOgogICAgIGNhc2UgRmlsdGVyU2V0UHJp
dmF0ZUJyYW5kU3RhdHVzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggZWY4YmEzODY4ZTg1Li5jZDlkMTdhNjQ4NzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApA
QCAtNTcwNSw3ICs1NzA1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJHZXRC
eVN0YXR1czoKICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6Ci0gICAgY2FzZSBGaWx0ZXJJ
bkJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJJbkJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVy
RGVsZXRlQnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1czoK
ICAgICBjYXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1czoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwCmluZGV4
IDEwNjFiNzNmMzAxNy4uZmRhNjRkMzVkYTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAKQEAgLTE5OCw3ICsx
OTgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAg
ICAgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAgICAgICAgIGNhc2UgRmls
dGVyQ2FsbExpbmtTdGF0dXM6Ci0gICAgICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoK
KyAgICAgICAgICAgIGNhc2UgRmlsdGVySW5CeVN0YXR1czoKICAgICAgICAgICAgIGNhc2UgRmls
dGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAgICAgICBjYXNlIEZpbHRlckNoZWNrUHJpdmF0ZUJy
YW5kU3RhdHVzOgogICAgICAgICAgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6
CkBAIC00MjMsNyArNDIzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNhc2UgRmlsdGVyR2V0
QnlTdGF0dXM6CiAgICAgICAgICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAg
ICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgotICAgICAgICAgICAgY2FzZSBGaWx0ZXJJ
bkJ5SWRTdGF0dXM6CisgICAgICAgICAgICBjYXNlIEZpbHRlckluQnlTdGF0dXM6CiAgICAgICAg
ICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgICAgICAgICAgY2FzZSBGaWx0ZXJD
aGVja1ByaXZhdGVCcmFuZFN0YXR1czoKICAgICAgICAgICAgIGNhc2UgRmlsdGVyU2V0UHJpdmF0
ZUJyYW5kU3RhdHVzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
YXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRp
ZXMuY3BwCmluZGV4IDRmNmUwMzdjYjExYy4uMTk4OGUzMmE3NWFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC00MDksNyArNDA5LDcgQEAg
aW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBG
aWx0ZXJDYWxsTGlua1N0YXR1czoKICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgIGNh
c2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKLSAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAg
ICBjYXNlIEZpbHRlckluQnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoK
ICAgICBjYXNlIEZpbHRlckNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOgogICAgIGNhc2UgRmlsdGVy
U2V0UHJpdmF0ZUJyYW5kU3RhdHVzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCmluZGV4IDIzYmU3ZTc3NWQzYS4uZDc4ZDdlM2FhOTJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0xNjUyLDcg
KzE2NTIsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgog
ICAgICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlclB1dEJ5
SWRTdGF0dXM6Ci0gICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgICAgICBjYXNl
IEZpbHRlckluQnlTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAg
ICAgICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6CiAgICAgICAgIGNhc2Ug
RmlsdGVyU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOgpAQCAtMTIyMTMsMTMgKzEyMjEzLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CiAg
ICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKEludDY0LCByZXN1bHRzKSk7CiAgICAgfQotICAg
IAotICAgIHZvaWQgY29tcGlsZUluQnlWYWwoKQotICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFu
dGljKTsKLSAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkluQnlWYWws
IHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIGxv
d0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSkpKTsKLSAgICB9Ci0gICAgCisKICAgICB2b2lkIGNv
bXBpbGVIYXNQcml2YXRlTmFtZSgpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwpA
QCAtMTIyMzIsMzggKzEyMjI2LDUzIEBAIHByaXZhdGU6CiAgICAgICAgIHNldEpTVmFsdWUodm1D
YWxsKEludDY0LCBvcGVyYXRpb25IYXNQcml2YXRlQnJhbmQsIHdlYWtQb2ludGVyKGdsb2JhbE9i
amVjdCksIGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIGxvd1N5bWJvbChtX25vZGUtPmNoaWxk
MigpKSkpOwogICAgIH0KIAotICAgIHZvaWQgY29tcGlsZUluQnlJZCgpCisgICAgdGVtcGxhdGU8
SW5CeUtpbmQga2luZCwgdHlwZW5hbWUgU3Vic2NyaXB0S2luZD4KKyAgICB2b2lkIGNvbXBpbGVJ
bkJ5KExWYWx1ZSBiYXNlLCBTdWJzY3JpcHRLaW5kIHN1YnNjcmlwdFZhbHVlKQogICAgIHsKLSAg
ICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKLSAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBp
ZGVudGlmaWVyID0gbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpOwotICAgICAgICBMVmFsdWUg
YmFzZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7Ci0KICAgICAgICAgUGF0Y2hwb2ludFZh
bHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChJbnQ2NCk7CiAgICAgICAgIHBhdGNo
cG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihiYXNlKTsKKyAgICAgICAgaWYgY29uc3RleHByIChr
aW5kICE9IEluQnlLaW5kOjpOb3JtYWwpCisgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRT
b21lUmVnaXN0ZXIoc3Vic2NyaXB0VmFsdWUpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQo
bV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdp
c3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVw
OjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7Ci0KICAgICAgICAgcGF0Y2hw
b2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwogCi0g
ICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUg
PQotICAgICAgICAgICAgcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQp
OworICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFu
ZGxlID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwogCiAgICAg
ICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRlOworICAgICAgICBOb2RlKiBub2RlID0gbV9u
b2RlOwogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoCiAgICAgICAgICAgICBbPV0g
KENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFt
cykgewogICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxv
d1NjcmF0Y2goaml0KTsKIAotICAgICAgICAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJ
bmRleCA9Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlLT5qaXRDb2RlLT5jb21tb24uY29kZU9y
aWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAg
ICAgICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPSBzdGF0ZS0+aml0Q29k
ZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlxdWVDYWxsU2l0ZUluZGV4KG5vZGUtPm9yaWdp
bi5zZW1hbnRpYyk7CiAKICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBkaXJlY3QgZXhp
dCB0YXJnZXQgZm9yIG9wZXJhdGlvbiBjYWxscy4KLSAgICAgICAgICAgICAgICBCb3g8Q0NhbGxI
ZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9Ci0gICAgICAgICAgICAgICAgICAgIGV4Y2Vw
dGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKKyAg
ICAgICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9IGV4
Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsK
IAotICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gQm94PEpJVEluQnlJZEdlbmVyYXRv
cj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCi0gICAgICAgICAgICAgICAgICAgIHBhcmFt
cy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBpZGVudGlmaWVyLCBKU1ZhbHVlUmVncyhwYXJhbXNb
MV0uZ3ByKCkpLAotICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3By
KCkpKTsKKyAgICAgICAgICAgICAgICBhdXRvIHJldHVybkdQUiA9IHBhcmFtc1swXS5ncHIoKTsK
KyAgICAgICAgICAgICAgICBhdXRvIGJhc2UgPSBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkp
OworCisgICAgICAgICAgICAgICAgY29uc3QgYXV0byBzdWJzY3JpcHQgPSBbJl0geworICAgICAg
ICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0gSW5CeUtpbmQ6Ok5vcm1hbCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
c3Vic2NyaXB0VmFsdWUucmF3Qml0cygpKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVSZWdzKHBhcmFtc1syXS5ncHIoKSk7
CisgICAgICAgICAgICAgICAgfSgpOworCisgICAgICAgICAgICAgICAgY29uc3QgYXV0byBnZW5l
cmF0b3IgPSBbJl0geworICAgICAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0g
SW5CeUtpbmQ6Ok5vcm1hbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJveDxK
SVRJbkJ5SWRHZW5lcmF0b3I+OjpjcmVhdGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
IHN1YnNjcmlwdFZhbHVlLCBiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFs
dWVSZWdzKHJldHVybkdQUikpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEJveDxKSVRJbkJ5VmFsR2VuZXJhdG9yPjo6Y3JlYXRl
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBiYXNlLCBzdWJzY3JpcHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmV0dXJuR1BSKSk7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KCk7CiAKICAgICAgICAgICAgICAgICBnZW5l
cmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKQEAgLTEyMjc0LDEyICsxMjI4MywyMiBAQCBw
cml2YXRlOgogCiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVt
cCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Okxh
YmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwoKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJz
KCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlvbkluQnlJZE9wdGltaXplLCBwYXJhbXNbMF0u
Z3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygp
KSwgcGFyYW1zWzFdLmdwcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZp
ZXIucmF3Qml0cygpKS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OkNhbGwgc2xvd1BhdGhDYWxsOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgY29uc3Rl
eHByIChraW5kID09IEluQnlLaW5kOjpOb3JtYWwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhj
ZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUsIHJldHVybkdQUiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UsIHN1YnNjcmlwdCkuY2FsbCgpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhj
ZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uSW5CeVZhbE9wdGltaXplLCByZXR1cm5HUFIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIobnVsbHB0ciksIGJhc2UsIHN1YnNjcmlwdCkuY2FsbCgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwg
JmppdCk7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1Bh
dGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRoQ2FsbCk7CkBAIC0xMjI5NCw2ICsxMjMxMywx
NiBAQCBwcml2YXRlOgogICAgICAgICBzZXRKU1ZhbHVlKHBhdGNocG9pbnQpOwogICAgIH0KIAor
ICAgIHZvaWQgY29tcGlsZUluQnlJZCgpCisgICAgeworICAgICAgICBjb21waWxlSW5CeTxJbkJ5
S2luZDo6Tm9ybWFsPihsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX25vZGUtPmNhY2hlYWJs
ZUlkZW50aWZpZXIoKSk7CisgICAgfQorCisgICAgdm9pZCBjb21waWxlSW5CeVZhbCgpCisgICAg
eworICAgICAgICBjb21waWxlSW5CeTxJbkJ5S2luZDo6Tm9ybWFsQnlWYWw+KGxvd0NlbGwobV9u
b2RlLT5jaGlsZDEoKSksIGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSkpOworICAgIH0KKwog
ICAgIHZvaWQgY29tcGlsZUhhc093blByb3BlcnR5KCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5z
ZW1hbnRpYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCmluZGV4IGFlM2M3ODY5NTg1
YS4uZjA0YzFmNDI4ZTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lD
U3RhdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaApAQCAtNDMs
NiArNDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhHZXRCeVNlbGZQYXRjaCkgXAog
ICAgIG1hY3JvKEluQWRkQWNjZXNzQ2FzZSkgXAogICAgIG1hY3JvKEluUmVwbGFjZVdpdGhKdW1w
KSBcCisgICAgbWFjcm8oSW5SZXBsYWNlV2l0aEdlbmVyaWMpIFwKICAgICBtYWNybyhJbnN0YW5j
ZU9mQWRkQWNjZXNzQ2FzZSkgXAogICAgIG1hY3JvKEluc3RhbmNlT2ZSZXBsYWNlV2l0aEp1bXAp
IFwKICAgICBtYWNybyhPcGVyYXRpb25HZXRCeUlkKSBcCkBAIC01Miw3ICs1Myw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIG1hY3JvKE9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUpIFwKICAgICBt
YWNybyhPcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSkgXAogICAgIG1hY3JvKE9wZXJh
dGlvbkdlbmVyaWNJbikgXAotICAgIG1hY3JvKE9wZXJhdGlvbkluQnlJZCkgXAorICAgIG1hY3Jv
KE9wZXJhdGlvbkluQnlJZEdlbmVyaWMpIFwKICAgICBtYWNybyhPcGVyYXRpb25JbkJ5SWRPcHRp
bWl6ZSkgXAogICAgIG1hY3JvKE9wZXJhdGlvblB1dEJ5SWRTdHJpY3QpIFwKICAgICBtYWNybyhP
cGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5k
ZXggZWUxYTRlMzdmZmMyLi40ZTdlY2I5NDIwNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAKQEAgLTI4NSw3ICsyODUsNiBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygp
CiAgICAgICAgIH0KIAogICAgICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7Ci0gICAgICAgIERFRklO
RV9TTE9XX09QKGluX2J5X3ZhbCkKICAgICAgICAgREVGSU5FX1NMT1dfT1AoaGFzX3ByaXZhdGVf
bmFtZSkKICAgICAgICAgREVGSU5FX1NMT1dfT1AoaGFzX3ByaXZhdGVfYnJhbmQpCiAgICAgICAg
IERFRklORV9TTE9XX09QKGxlc3MpCkBAIC0zNjEsNiArMzYwLDcgQEAgdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfYmVsb3dlcSkKICAgICAg
ICAgREVGSU5FX09QKG9wX3RyeV9nZXRfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9pbl9i
eV9pZCkKKyAgICAgICAgREVGSU5FX09QKG9wX2luX2J5X3ZhbCkKICAgICAgICAgREVGSU5FX09Q
KG9wX2dldF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9ieV9pZF93aXRoX3RoaXMp
CiAgICAgICAgIERFRklORV9PUChvcF9nZXRfYnlfaWRfZGlyZWN0KQpAQCAtNTE4LDggKzUxOCw5
IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgbV9nZXRCeUlkV2l0
aFRoaXNJbmRleCA9IDA7CiAgICAgbV9wdXRCeUlkSW5kZXggPSAwOwogICAgIG1faW5CeUlkSW5k
ZXggPSAwOwotICAgIG1fZGVsQnlWYWxJbmRleCA9IDA7CisgICAgbV9pbkJ5VmFsSW5kZXggPSAw
OwogICAgIG1fZGVsQnlJZEluZGV4ID0gMDsKKyAgICBtX2RlbEJ5VmFsSW5kZXggPSAwOwogICAg
IG1faW5zdGFuY2VPZkluZGV4ID0gMDsKICAgICBtX3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4ID0g
MDsKICAgICBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRleCA9IDA7CkBAIC01NzAsNiArNTcxLDcgQEAg
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dD
QVNFX09QKG9wX2VxKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfdHJ5X2dldF9ieV9p
ZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2luX2J5X2lkKQorICAgICAgICBERUZJ
TkVfU0xPV0NBU0VfT1Aob3BfaW5fYnlfdmFsKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Ao
b3BfZ2V0X2J5X2lkKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZ2V0X2J5X2lkX3dp
dGhfdGhpcykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2dldF9ieV9pZF9kaXJlY3Qp
CkBAIC05MTksNiArOTIxLDcgQEAgdm9pZCBKSVQ6OmxpbmsoKQogICAgIGZpbmFsaXplSW5saW5l
Q2FjaGVzKG1fZGVsQnlJZHMsIHBhdGNoQnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hl
cyhtX2RlbEJ5VmFscywgcGF0Y2hCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1f
aW5CeUlkcywgcGF0Y2hCdWZmZXIpOworICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1faW5CeVZh
bHMsIHBhdGNoQnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2luc3RhbmNlT2Zz
LCBwYXRjaEJ1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9wcml2YXRlQnJhbmRB
Y2Nlc3NlcywgcGF0Y2hCdWZmZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA3NWM5
Y2I5NmIxMzYuLjM4Y2M4ODg3YzM2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC01NjUs
NiArNTY1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYXJn
dW1lbnRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9n
ZXRfcHJvdG90eXBlX29mKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfaW5f
YnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pbml0X2xh
enlfcmVnKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9vdmVycmlk
ZXNfaGFzX2luc3RhbmNlKGNvbnN0IEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9pbnN0YW5jZW9mKGNvbnN0IEluc3RydWN0aW9uKik7CkBAIC02OTgsNiArNjk5LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFu
ZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsK
ICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYXJndW1lbnRfYnlfdmFsKGNvbnN0IEluc3Ry
dWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lk
IGVtaXRTbG93X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNl
RW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2b2lkIGVtaXRTbG93X29wX2luX2J5X3ZhbChj
b25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAg
ICAgICAgdm9pZCBlbWl0U2xvd19vcF9pbnN0YW5jZW9mKGNvbnN0IEluc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29w
X2luc3RhbmNlb2ZfY3VzdG9tKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2psZXNzKGNvbnN0IElu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwpAQCAtMTAzNyw2
ICsxMDM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFZlY3RvcjxKSVRHZXRCeUlkV2l0
aFRoaXNHZW5lcmF0b3I+IG1fZ2V0QnlJZHNXaXRoVGhpczsKICAgICAgICAgVmVjdG9yPEpJVFB1
dEJ5SWRHZW5lcmF0b3I+IG1fcHV0QnlJZHM7CiAgICAgICAgIFZlY3RvcjxKSVRJbkJ5SWRHZW5l
cmF0b3I+IG1faW5CeUlkczsKKyAgICAgICAgVmVjdG9yPEpJVEluQnlWYWxHZW5lcmF0b3I+IG1f
aW5CeVZhbHM7CiAgICAgICAgIFZlY3RvcjxKSVREZWxCeUlkR2VuZXJhdG9yPiBtX2RlbEJ5SWRz
OwogICAgICAgICBWZWN0b3I8SklURGVsQnlWYWxHZW5lcmF0b3I+IG1fZGVsQnlWYWxzOwogICAg
ICAgICBWZWN0b3I8SklUSW5zdGFuY2VPZkdlbmVyYXRvcj4gbV9pbnN0YW5jZU9mczsKQEAgLTEw
NjMsNiArMTA2Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bnNpZ25lZCBtX2dldEJ5
SWRXaXRoVGhpc0luZGV4IHsgVUlOVF9NQVggfTsKICAgICAgICAgdW5zaWduZWQgbV9wdXRCeUlk
SW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBtX2luQnlJZEluZGV4IHsgVUlO
VF9NQVggfTsKKyAgICAgICAgdW5zaWduZWQgbV9pbkJ5VmFsSW5kZXggeyBVSU5UX01BWCB9Owog
ICAgICAgICB1bnNpZ25lZCBtX2RlbEJ5VmFsSW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1
bnNpZ25lZCBtX2RlbEJ5SWRJbmRleCB7IFVJTlRfTUFYIH07CiAgICAgICAgIHVuc2lnbmVkIG1f
aW5zdGFuY2VPZkluZGV4IHsgVUlOVF9NQVggfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKaW5kZXggZjUyYzNjNzYyMTVh
Li4xODkzYzY4MDEyYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBAIC0yMzUsMTAgKzIzNSwzOCBAQCB2b2lkIEpJ
VERlbEJ5SWRHZW5lcmF0b3I6OmZpbmFsaXplKAogICAgICAgICBmYXN0UGF0aCwgc2xvd1BhdGgs
IGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKIH0K
IAotSklUSW5CeUlkR2VuZXJhdG9yOjpKSVRJbkJ5SWRHZW5lcmF0b3IoCi0gICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0
ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCi0gICAgQ2FjaGVhYmxlSWRlbnRp
ZmllciBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlKQot
ICAgIDogSklUQnlJZEdlbmVyYXRvcihjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBB
Y2Nlc3NUeXBlOjpJbiwgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUpCitKSVRJbkJ5VmFsR2Vu
ZXJhdG9yOjpKSVRJbkJ5VmFsR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0
ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3Bl
cnR5LCBKU1ZhbHVlUmVncyByZXN1bHQpCisgICAgOiBCYXNlKGNvZGVCbG9jaywgY29kZU9yaWdp
biwgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6SW5CeVZhbCwgdXNlZFJlZ2lzdGVycykKK3sK
KyAgICBtX3N0dWJJbmZvLT5oYXNDb25zdGFudElkZW50aWZpZXIgPSBmYWxzZTsKKworICAgIG1f
c3R1YkluZm8tPmJhc2VHUFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT5y
ZWdzLnByb3BlcnR5R1BSID0gcHJvcGVydHkucGF5bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8t
PnZhbHVlR1BSID0gcmVzdWx0LnBheWxvYWRHUFIoKTsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQor
ICAgIG1fc3R1YkluZm8tPmJhc2VUYWdHUFIgPSBiYXNlLnRhZ0dQUigpOworICAgIG1fc3R1Yklu
Zm8tPnZhbHVlVGFnR1BSID0gcmVzdWx0LnRhZ0dQUigpOworICAgIG1fc3R1YkluZm8tPnYucHJv
cGVydHlUYWdHUFIgPSBwcm9wZXJ0eS50YWdHUFIoKTsKKyNlbmRpZgorfQorCit2b2lkIEpJVElu
QnlWYWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKK3sK
KyAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7CisgICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0
Y2hhYmxlSnVtcCgpOworICAgIG1fZG9uZSA9IGppdC5sYWJlbCgpOworfQorCit2b2lkIEpJVElu
QnlWYWxHZW5lcmF0b3I6OmZpbmFsaXplKAorICAgIExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5r
QnVmZmVyJiBzbG93UGF0aCkKK3sKKyAgICBBU1NFUlQobV9zdGFydC5pc1NldCgpKTsKKyAgICBC
YXNlOjpmaW5hbGl6ZSgKKyAgICAgICAgZmFzdFBhdGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2Nh
dGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihtX3N0YXJ0KSk7Cit9CisKK0pJVEluQnlJZEdl
bmVyYXRvcjo6SklUSW5CeUlkR2VuZXJhdG9yKENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0
JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUpCisgICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNv
ZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OkluQnlJZCwgdXNlZFJl
Z2lzdGVycywgYmFzZSwgdmFsdWUpCiB7CiAgICAgLy8gRklYTUU6IFdlIGFyZSBub3Qgc3VwcG9y
dGluZyBmYXN0IHBhdGggZm9yICJsZW5ndGgiIHByb3BlcnR5LgogICAgIFVOVVNFRF9QQVJBTShw
cm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVDYWNoZUdlbmVyYXRvci5oCmluZGV4IGQ2Y2E2ZTE2YTNmMy4uOTA0ZGIxNDIyMjM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9y
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRv
ci5oCkBAIC0xOTUsNiArMTk1LDMxIEBAIHByaXZhdGU6CiAgICAgTWFjcm9Bc3NlbWJsZXI6OlBh
dGNoYWJsZUp1bXAgbV9zbG93UGF0aEp1bXA7CiB9OwogCitjbGFzcyBKSVRJbkJ5VmFsR2VuZXJh
dG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKKyAgICB1c2luZyBCYXNlID0g
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3I7CitwdWJsaWM6CisgICAgSklUSW5CeVZhbEdlbmVyYXRv
cigpIHsgfQorCisgICAgSklUSW5CeVZhbEdlbmVyYXRvcigKKyAgICAgICAgQ29kZUJsb2NrKiwg
Q29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3Rl
cnMsCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1Zh
bHVlUmVncyByZXN1bHQpOworCisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2xvd1BhdGhKdW1w
KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3Nsb3dQYXRoSnVtcC5tX2p1bXAuaXNT
ZXQoKSk7CisgICAgICAgIHJldHVybiBtX3Nsb3dQYXRoSnVtcC5tX2p1bXA7CisgICAgfQorCisg
ICAgdm9pZCBmaW5hbGl6ZSgKKyAgICAgICAgTGlua0J1ZmZlciYgZmFzdFBhdGhMaW5rQnVmZmVy
LCBMaW5rQnVmZmVyJiBzbG93UGF0aExpbmtCdWZmZXIpOworCisgICAgdm9pZCBnZW5lcmF0ZUZh
c3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CisKK3ByaXZhdGU6CisgICAgTWFjcm9Bc3NlbWJsZXI6
OkxhYmVsIG1fc3RhcnQ7CisgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbV9zbG93
UGF0aEp1bXA7Cit9OworCiBjbGFzcyBKSVRJbkJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJ
ZEdlbmVyYXRvciB7CiBwdWJsaWM6CiAgICAgSklUSW5CeUlkR2VuZXJhdG9yKCkgeyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCAwNjAzZjkzYTlh
ZmYuLjZiZmU5NTg0NGQxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCkBAIC0zOTQsNyArMzk0LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2wKICAg
ICB9KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25JbkJ5SWQsIEVu
Y29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVh
YmxlSWRlbnRpZmllcikpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5CeUlk
R2VuZXJpYywgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGJhc2UsIHVpbnRwdHJf
dCByYXdDYWNoZWFibGVJZGVudGlmaWVyKSkKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBl
clNhbXBsZXJTY29wZShmYWxzZSk7CiAKQEAgLTQxNSw3ICs0MTUsNyBAQCBKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uSW5CeUlkLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYQogICAgIH0KICAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJh
c2VWYWx1ZSk7CiAKLSAgICBMT0dfSUMoKElDRXZlbnQ6Ok9wZXJhdGlvbkluQnlJZCwgYmFzZU9i
amVjdC0+Y2xhc3NJbmZvKHZtKSwgaWRlbnQpKTsKKyAgICBMT0dfSUMoKElDRXZlbnQ6Ok9wZXJh
dGlvbkluQnlJZEdlbmVyaWMsIGJhc2VPYmplY3QtPmNsYXNzSW5mbyh2bSksIGlkZW50KSk7CiAK
ICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6Okhhc1Byb3BlcnR5KTsKQEAgLTQ0OCwx
OSArNDQ4LDYyIEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25JbkJ5SWRPcHRp
bWl6ZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjCiAgICAgYm9vbCBmb3VuZCA9IGJh
c2VPYmplY3QtPmdldFByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90KTsKICAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CiAgICAgaWYg
KHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdCeSh2bSwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LT5z
dHJ1Y3R1cmUodm0pLCBpZGVudGlmaWVyKSkKLSAgICAgICAgcmVwYXRjaEluQnlJRChnbG9iYWxP
YmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgaWRlbnRpZmllciwgZm91bmQsIHNsb3QsICpz
dHViSW5mbyk7CisgICAgICAgIHJlcGF0Y2hJbkJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBi
YXNlT2JqZWN0LCBpZGVudGlmaWVyLCBmb3VuZCwgc2xvdCwgKnN0dWJJbmZvLCBJbkJ5S2luZDo6
Tm9ybWFsKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmb3VuZCkpOwog
fQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5CeVZhbCwgRW5jb2RlZEpT
VmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGJhc2UsIEVuY29k
ZWRKU1ZhbHVlIGtleSkpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5CeVZh
bE9wdGltaXplLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkS2V5KSkK
IHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7Ci0gICAg
CisKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3Vl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisgICAgaWYgKCFiYXNlVmFsdWUuaXNPYmplY3QoKSkg
eworICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVJbnZh
bGlkSW5QYXJhbWV0ZXJFcnJvcihnbG9iYWxPYmplY3QsIGJhc2VWYWx1ZSkpOworICAgICAgICBy
ZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKKyAgICB9CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3Qg
PSBhc09iamVjdChiYXNlVmFsdWUpOworICAgIGlmIChhcnJheVByb2ZpbGUpCisgICAgICAgIGFy
cmF5UHJvZmlsZS0+b2JzZXJ2ZVN0cnVjdHVyZShiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUodm0pKTsK
KworICAgIEpTVmFsdWUga2V5ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRLZXkpOworICAgIHVp
bnQzMl90IGk7CisgICAgaWYgKGtleS5nZXRVSW50MzIoaSkpIHsKKyAgICAgICAgaWYgKGFycmF5
UHJvZmlsZSkKKyAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+b2JzZXJ2ZUluZGV4ZWRSZWFkKHZt
LCBiYXNlT2JqZWN0LCBpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUoanNCb29sZWFuKGJhc2VPYmplY3QtPmhhc1Byb3BlcnR5KGdsb2JhbE9iamVj
dCwgaSkpKSk7CisgICAgfQorCisgICAgY29uc3QgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBr
ZXkudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmpl
Y3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpIYXNQcm9wZXJ0eSk7CisgICAg
Ym9vbCBmb3VuZCA9IGJhc2VPYmplY3QtPmdldFByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CisKKyAgICBpZiAoQ2FjaGVhYmxlSWRlbnRpZmllcjo6aXNDYWNoZWFibGVJ
ZGVudGlmaWVyQ2VsbChrZXkpICYmIChrZXkuaXNTeW1ib2woKSB8fCAhcGFyc2VJbmRleChwcm9w
ZXJ0eU5hbWUpKSkgeworICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+
Y29kZUJsb2NrKCk7CisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21DZWxsKGtleS5hc0NlbGwoKSk7CisgICAgICAg
IGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nQnkodm0sIGNvZGVCbG9jaywgYmFzZU9iamVj
dC0+c3RydWN0dXJlKHZtKSwgaWRlbnRpZmllcikpCisgICAgICAgICAgICByZXBhdGNoSW5CeShn
bG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgaWRlbnRpZmllciwgZm91bmQsIHNs
b3QsICpzdHViSW5mbywgSW5CeUtpbmQ6Ok5vcm1hbEJ5VmFsKTsKKyAgICB9CisKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmb3VuZCkpOworfQorCitKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uSW5CeVZhbEdlbmVyaWMsIEVuY29kZWRKU1ZhbHVlLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBB
cnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgRW5jb2RlZEpT
VmFsdWUga2V5KSkKK3sKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShm
YWxzZSk7CisKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblBy
b2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbkJ5VmFsKGds
b2JhbE9iamVjdCwgYmFzZSwgSlNWYWx1ZTo6ZGVjb2RlKGtleSkpKSk7CisgICAgc3R1YkluZm8t
PnRvb2tTbG93UGF0aCA9IHRydWU7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xl
YW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluQnlWYWwoZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlOjpkZWNv
ZGUoYmFzZSksIEpTVmFsdWU6OmRlY29kZShrZXkpLCBhcnJheVByb2ZpbGUpKSk7CiB9CiAKIEpT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25IYXNQcml2YXRlTmFtZSwgRW5jb2RlZEpT
VmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIGJhc2UsIEVuY29k
ZWRKU1ZhbHVlIGtleSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5o
CmluZGV4IDNlMWVhYjcyMGFiYi4uZDg3NzA2NmM4NTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMTc0LDEwICsxNzQsMTAgQEAgSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25HZXRCeUlkRGlyZWN0LCBFbmNvZGVkSlNWYWx1ZSwgKEpT
R2xvYmFsT2JqZWMKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0QnlJZERp
cmVjdEdlbmVyaWMsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNW
YWx1ZSwgdWludHB0cl90KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdl
dEJ5SWREaXJlY3RPcHRpbWl6ZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIFN0
cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIHVpbnRwdHJfdCkpOwogCi1KU0NfREVD
TEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluQnlJZCwgRW5jb2RlZEpTVmFsdWUsIChKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIHVpbnRwdHJf
dCkpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25JbkJ5SWRHZW5lcmljLCBF
bmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNv
ZGVkSlNWYWx1ZSwgdWludHB0cl90KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvbkluQnlJZE9wdGltaXplLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgdWludHB0cl90KSk7Ci0KLUpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5CeVZhbCwgRW5jb2RlZEpTVmFsdWUsIChKU0ds
b2JhbE9iamVjdCosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlKSk7CitKU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbkluQnlWYWxHZW5lcmljLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBBcnJheVByb2ZpbGUqLCBFbmNvZGVkSlNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUpKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uSW5CeVZhbE9wdGltaXplLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlU3R1YkluZm8qLCBBcnJheVByb2ZpbGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSGFzUHJpdmF0ZU5h
bWUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqLCBFbmNvZGVkSlNW
YWx1ZSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25IYXNQcml2YXRlQnJh
bmQsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqLCBFbmNvZGVkSlNW
YWx1ZSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwCmluZGV4IDY0NDY3ZTlhMjVlMS4uOGRjMzhjOWNhNzhiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtMTU3Myw2ICsxNTcz
LDc2IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvCiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2Fs
bChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfaW5fYnlfdmFs
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRl
Y29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJbkJ5VmFsPigpOworICAgIFZpcnR1YWxS
ZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9
IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29k
ZS5tX3Byb3BlcnR5OworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9j
b2RlQmxvY2spOworICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5
UHJvZmlsZTsKKworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwgcmVnVDApOworICAg
IGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7CisgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcmVnVDEpOworICAgIGVtaXRBcnJheVByb2ZpbGluZ1Np
dGVXaXRoQ2VsbChyZWdUMCwgcmVnVDIsIHByb2ZpbGUpOworCisgICAgSklUSW5CeVZhbEdlbmVy
YXRvciBnZW4oCisgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRl
eCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2
YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVS
ZWdzKHJlZ1QxKSwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0
aCgqdGhpcyk7CisgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBtX2lu
QnlWYWxzLmFwcGVuZChnZW4pOworCisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOwor
fQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIp
Cit7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5CeVZhbD4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIg
ZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRh
ZGF0YShtX2NvZGVCbG9jayk7CisgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gJm1ldGFkYXRh
Lm1fYXJyYXlQcm9maWxlOworCisgICAgSklUSW5CeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9pbkJ5
VmFsc1ttX2luQnlWYWxJbmRleCsrXTsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJl
bCgpOworCisjaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorICAgIENhbGwgY2FsbCA9IGNh
bGxPcGVyYXRpb24obWV0YWRhdGEsIG9wZXJhdGlvbkluQnlWYWxPcHRpbWl6ZSwgZHN0LCBUcnVz
dGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdlbi5zdHViSW5mbygpLCBw
cm9maWxlLCByZWdUMCwgcmVnVDEpOworI2Vsc2UKKyAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwor
ICAgIHVpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0ID0gbV9ieXRlY29kZUluZGV4Lm9mZnNldCgpOwor
ICAgIEFTU0VSVChCeXRlY29kZUluZGV4KGJ5dGVjb2RlT2Zmc2V0KSA9PSBtX2J5dGVjb2RlSW5k
ZXgpOworCisgICAgY29uc3RleHByIEdQUlJlZyBieXRlY29kZU9mZnNldEdQUiA9IGFyZ3VtZW50
R1BSNDsKKyAgICBtb3ZlKFRydXN0ZWRJbW0zMihieXRlY29kZU9mZnNldCksIGJ5dGVjb2RlT2Zm
c2V0R1BSKTsKKworICAgIGNvbnN0ZXhwciBHUFJSZWcgc3R1YkluZm9HUFIgPSBhcmd1bWVudEdQ
UjM7CisgICAgY29uc3RleHByIEdQUlJlZyBwcm9maWxlR1BSID0gYXJndW1lbnRHUFIyOworICAg
IGNvbnN0ZXhwciBHUFJSZWcgYmFzZUdQUiA9IHJlZ1QwOworICAgIGNvbnN0ZXhwciBHUFJSZWcg
cHJvcGVydHlHUFIgPSByZWdUMTsKKyAgICBzdGF0aWNfYXNzZXJ0KGJhc2VHUFIgPT0gYXJndW1l
bnRHUFIwIHx8ICFpc0FSTTY0KCkpOworICAgIHN0YXRpY19hc3NlcnQocHJvcGVydHlHUFIgPT0g
YXJndW1lbnRHUFIxKTsKKworICAgIG1vdmUoVHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSks
IHN0dWJJbmZvR1BSKTsKKyAgICBtb3ZlKFRydXN0ZWRJbW1QdHIocHJvZmlsZSksIHByb2ZpbGVH
UFIpOworICAgIC8vIHNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRvciB3aWxs
IGRvIGV4YWN0bHkgd2hhdCB3ZSBuZWVkLgorICAgIC8vIFNvLCB0aGVyZSdzIG5vIHBvaW50IGlu
IGNyZWF0aW5nIGEgZHVwbGljYXRlIHRodW5rIGp1c3QgdG8gZ2l2ZSBpdCBhIGRpZmZlcmVudCBu
YW1lLgorICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKG9wZXJhdGlvbklu
QnlWYWxPcHRpbWl6ZSksIGRlY2x0eXBlKG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUpPjo6dmFs
dWUpOworICAgIGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoc2xvd19vcF9nZXRfYnlf
dmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+KCkpOworCisg
ICAgQ2FsbCBjYWxsID0gYXBwZW5kQ2FsbChvcGVyYXRpb25JbkJ5VmFsT3B0aW1pemUpOworICAg
IGVtaXROYWtlZE5lYXJDYWxsKHZtLmdldENUSVN0dWIoY2hlY2tFeGNlcHRpb25HZW5lcmF0b3Ip
LnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CisKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVy
KGRzdCwgcmV0dXJuVmFsdWVHUFIpOworI2VuZGlmIC8vIEVOQUJMRShFWFRSQV9DVElfVEhVTktT
KQorCisgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKK30K
Kwogdm9pZCBKSVQ6OmVtaXRWYXJJbmplY3Rpb25DaGVjayhib29sIG5lZWRzVmFySW5qZWN0aW9u
Q2hlY2tzKQogewogICAgIGlmICghbmVlZHNWYXJJbmplY3Rpb25DaGVja3MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAppbmRl
eCBjMjJjNzcwNDI4OWEuLjUwNTdlMjI4Yjk4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCkBAIC05MDgsNiArOTA4LDQ3
IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvCiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChj
b2xkUGF0aEJlZ2luLCBjYWxsKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfaW5fYnlfdmFsKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgYXV0byBieXRlY29k
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJbkJ5VmFsPigpOworICAgIFZpcnR1YWxSZWdp
c3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5
dGVjb2RlLm1fYmFzZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVydHkgPSBieXRlY29kZS5t
X3Byb3BlcnR5OworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2Rl
QmxvY2spOworICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJv
ZmlsZTsKKworICAgIGVtaXRMb2FkMihiYXNlLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5LCByZWdU
MywgcmVnVDIpOworICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCByZWdUMSk7
CisgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKHJlZ1QwLCByZWdUNCwgcHJvZmls
ZSk7CisKKyAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yIGdlbigKKyAgICAgICAgbV9jb2RlQmxvY2ss
IENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5k
ZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCisgICAgICAgIEpT
VmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiks
IEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCkpOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0
aGlzKTsKKyAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIG1faW5CeVZh
bHMuYXBwZW5kKGdlbik7CisKKyAgICBlbWl0U3RvcmUoZHN0LCByZWdUMSwgcmVnVDApOworfQor
Cit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCit7
CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5CeVZhbD4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0
ID0gYnl0ZWNvZGUubV9kc3Q7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0
YShtX2NvZGVCbG9jayk7CisgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gJm1ldGFkYXRhLm1f
YXJyYXlQcm9maWxlOworCisgICAgSklUSW5CeVZhbEdlbmVyYXRvciYgZ2VuID0gbV9pbkJ5VmFs
c1ttX2luQnlWYWxJbmRleCsrXTsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJlbCgp
OworCisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihtZXRhZGF0YSwgb3BlcmF0aW9uSW5C
eVZhbE9wdGltaXplLCBkc3QsIFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpKSwgZ2VuLnN0dWJJbmZvKCksIHByb2ZpbGUsIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCks
IEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMikpOworCisgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2Fs
bChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRWYXJJbmplY3Rpb25D
aGVjayhib29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKQogewogICAgIGlmICghbmVlZHNWYXJJ
bmplY3Rpb25DaGVja3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Jl
cGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCA5
MDVmOGQ3ZjJhZmIuLmI0YmFlYmQ0ZGRhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0
Y2guY3BwCkBAIC04OTcsNyArODk3LDcgQEAgdm9pZCByZXBhdGNoRGVsZXRlQnkoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIERlbGV0ZVAKICAgICB9
CiB9CiAKLXN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluQnlJRCgKK3N0YXRpYyBJ
bmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluQnkoCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTT2JqZWN0KiBiYXNlLCBDYWNoZWFibGVJ
ZGVudGlmaWVyIHByb3BlcnR5TmFtZSwKICAgICBib29sIHdhc0ZvdW5kLCBjb25zdCBQcm9wZXJ0
eVNsb3QmIHNsb3QsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKIHsKQEAgLTkwOSwxNyAr
OTA5LDE3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluQnlJRCgKICAgICAg
ICAgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jaywgdm0u
aGVhcCk7CiAgICAgICAgIGlmIChmb3JjZUlDRmFpbHVyZShnbG9iYWxPYmplY3QpKQogICAgICAg
ICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7Ci0gICAgICAgIAorCiAgICAgICAgIGlmICghYmFz
ZS0+c3RydWN0dXJlKHZtKS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpIHx8ICghd2Fz
Rm91bmQgJiYgIWJhc2UtPnN0cnVjdHVyZSh2bSktPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFi
bGVGb3JBYnNlbmNlKCkpKQogICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7Ci0gICAg
ICAgIAorCiAgICAgICAgIGlmICh3YXNGb3VuZCkgewogICAgICAgICAgICAgaWYgKCFzbG90Lmlz
Q2FjaGVhYmxlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CiAgICAg
ICAgIH0KLSAgICAgICAgCisKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlLT5z
dHJ1Y3R1cmUodm0pOwotICAgICAgICAKKwogICAgICAgICBSZWZQdHI8UG9seVByb3RvQWNjZXNz
Q2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluOwogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvblNldCBjb25kaXRpb25TZXQ7CiAgICAgICAgIGlmICh3YXNGb3VuZCkgewpAQCAtOTkxLDIz
ICs5OTEsMjkgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlSW5CeUlEKAogCiAg
ICAgICAgIGlmIChyZXN1bHQuZ2VuZXJhdGVkU29tZUNvZGUoKSkgewogICAgICAgICAgICAgTE9H
X0lDKChJQ0V2ZW50OjpJblJlcGxhY2VXaXRoSnVtcCwgc3RydWN0dXJlLT5jbGFzc0luZm8oKSwg
aWRlbnQsIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlKSk7Ci0gICAgICAgICAgICAKKwogICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNvZGUoKSk7CiAgICAgICAgICAgICBJbmxpbmVB
Y2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0
dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAKICAg
ICBmaXJlV2F0Y2hwb2ludHNBbmRDbGVhclN0dWJJZk5lZWRlZCh2bSwgc3R1YkluZm8sIGNvZGVC
bG9jaywgcmVzdWx0KTsKLSAgICAKKwogICAgIHJldHVybiByZXN1bHQuc2hvdWxkR2l2ZVVwTm93
KCkgPyBHaXZlVXBPbkNhY2hlIDogUmV0cnlDYWNoZUxhdGVyOwogfQogCi12b2lkIHJlcGF0Y2hJ
bkJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwg
Ym9vbCB3YXNGb3VuZCwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBTdHJ1Y3R1cmVTdHViSW5m
byYgc3R1YkluZm8pCit2b2lkIHJlcGF0Y2hJbkJ5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU09iamVjdCogYmFzZU9iamVjdCwgQ2FjaGVhYmxl
SWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIGJvb2wgd2FzRm91bmQsIGNvbnN0IFByb3BlcnR5U2xv
dCYgc2xvdCwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBJbkJ5S2luZCBraW5kKQogewog
ICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAKLSAgICBpZiAodHJ5Q2FjaGVJbkJ5SUQoZ2xvYmFs
T2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIHByb3BlcnR5TmFtZSwgd2FzRm91bmQsIHNs
b3QsIHN0dWJJbmZvKSA9PSBHaXZlVXBPbkNhY2hlKQotICAgICAgICBmdGxUaHVua0F3YXJlUmVw
YXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0
aW9uSW5CeUlkKTsKKyAgICBpZiAodHJ5Q2FjaGVJbkJ5KGdsb2JhbE9iamVjdCwgY29kZUJsb2Nr
LCBiYXNlT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHdhc0ZvdW5kLCBzbG90LCBzdHViSW5mbykgPT0g
R2l2ZVVwT25DYWNoZSkgeworICAgICAgICBMT0dfSUMoKElDRXZlbnQ6OkluUmVwbGFjZVdpdGhH
ZW5lcmljLCBiYXNlT2JqZWN0LT5jbGFzc0luZm8oZ2xvYmFsT2JqZWN0LT52bSgpKSwgSWRlbnRp
Zmllcjo6ZnJvbVVpZCh2bSwgcHJvcGVydHlOYW1lLnVpZCgpKSkpOworICAgICAgICBpZiAoa2lu
ZCA9PSBJbkJ5S2luZDo6Tm9ybWFsKQorICAgICAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hD
YWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbklu
QnlJZEdlbmVyaWMpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmdGxUaHVua0F3YXJlUmVw
YXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0
aW9uSW5CeVZhbEdlbmVyaWMpOworICAgIH0KIH0KIAogc3RhdGljIElubGluZUNhY2hlQWN0aW9u
IHRyeUNhY2hlQ2hlY2tQcml2YXRlQnJhbmQoCkBAIC0xNjgzLDkgKzE2ODksMTIgQEAgc3RhdGlj
IHZvaWQgcmVzZXRQYXRjaGFibGVKdW1wKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbykKICAg
ICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoc3R1YkluZm8ucGF0Y2hhYmxlSnVtcCgpLCBz
dHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOwogfQogCi12b2lkIHJlc2V0SW5CeUlEKENv
ZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCit2b2lkIHJl
c2V0SW5CeShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZv
LCBJbkJ5S2luZCBraW5kKQogewotICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxv
Y2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6
ZSk7CisgICAgaWYgKGtpbmQgPT0gSW5CeUtpbmQ6Ok5vcm1hbCkKKyAgICAgICAgZnRsVGh1bmtB
d2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24s
IG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsKKyAgICBlbHNlCisgICAgICAgIGZ0bFRodW5rQXdh
cmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBv
cGVyYXRpb25JbkJ5VmFsT3B0aW1pemUpOwogICAgIElubGluZUFjY2Vzczo6cmV3aXJlU3R1YkFz
SnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAppbmRleCAzMTM3OWRjNGU1YTkuLjkyOGM5OWIxMjkx
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKQEAgLTQ4LDExICs0OCwxNiBAQCBl
bnVtIGNsYXNzIERlbEJ5S2luZCB7CiAgICAgTm9ybWFsQnlWYWwKIH07CiAKK2VudW0gY2xhc3Mg
SW5CeUtpbmQgeworICAgIE5vcm1hbCwKKyAgICBOb3JtYWxCeVZhbAorfTsKKwogdm9pZCByZXBh
dGNoQXJyYXlHZXRCeVZhbChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUgYmFz
ZSwgSlNWYWx1ZSBpbmRleCwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVwYXRjaEdldEJ5
KEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNWYWx1ZSwgQ2FjaGVhYmxlSWRlbnRpZmll
ciwgY29uc3QgUHJvcGVydHlTbG90JiwgU3RydWN0dXJlU3R1YkluZm8mLCBHZXRCeUtpbmQpOwog
dm9pZCByZXBhdGNoUHV0QnlJRChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUs
IFN0cnVjdHVyZSosIENhY2hlYWJsZUlkZW50aWZpZXIsIGNvbnN0IFB1dFByb3BlcnR5U2xvdCYs
IFN0cnVjdHVyZVN0dWJJbmZvJiwgUHV0S2luZCk7CiB2b2lkIHJlcGF0Y2hEZWxldGVCeShKU0ds
b2JhbE9iamVjdCosIENvZGVCbG9jayosIERlbGV0ZVByb3BlcnR5U2xvdCYsIEpTVmFsdWUsIFN0
cnVjdHVyZSosIENhY2hlYWJsZUlkZW50aWZpZXIsIFN0cnVjdHVyZVN0dWJJbmZvJiwgRGVsQnlL
aW5kLCBFQ01BTW9kZSk7Ci12b2lkIHJlcGF0Y2hJbkJ5SUQoSlNHbG9iYWxPYmplY3QqLCBDb2Rl
QmxvY2sqLCBKU09iamVjdCosIENhY2hlYWJsZUlkZW50aWZpZXIsIGJvb2wgd2FzRm91bmQsIGNv
bnN0IFByb3BlcnR5U2xvdCYsIFN0cnVjdHVyZVN0dWJJbmZvJik7Cit2b2lkIHJlcGF0Y2hJbkJ5
KEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqLCBDYWNoZWFibGVJZGVudGlm
aWVyLCBib29sIHdhc0ZvdW5kLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5m
byYsIEluQnlLaW5kKTsKIHZvaWQgcmVwYXRjaENoZWNrUHJpdmF0ZUJyYW5kKEpTR2xvYmFsT2Jq
ZWN0KiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1
cmVTdHViSW5mbyYpOwogdm9pZCByZXBhdGNoU2V0UHJpdmF0ZUJyYW5kKEpTR2xvYmFsT2JqZWN0
KiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqLCBTdHJ1Y3R1cmUqLCBDYWNoZWFibGVJZGVudGlmaWVy
LCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXBhdGNoSW5zdGFuY2VPZihKU0dsb2JhbE9i
amVjdCosIENvZGVCbG9jayosIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgcHJvdG90eXBlLCBTdHJ1
Y3R1cmVTdHViSW5mbyYsIGJvb2wgd2FzRm91bmQpOwpAQCAtNjQsNyArNjksNyBAQCB2b2lkIGxp
bmtQb2x5bW9ycGhpY0NhbGwoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqLCBDYWxsTGlua0lu
Zm8mLCBDYWxsVmFyaWFudAogdm9pZCByZXNldEdldEJ5KENvZGVCbG9jayosIFN0cnVjdHVyZVN0
dWJJbmZvJiwgR2V0QnlLaW5kKTsKIHZvaWQgcmVzZXRQdXRCeUlEKENvZGVCbG9jayosIFN0cnVj
dHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlc2V0RGVsQnkoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1
YkluZm8mLCBEZWxCeUtpbmQpOwotdm9pZCByZXNldEluQnlJRChDb2RlQmxvY2sqLCBTdHJ1Y3R1
cmVTdHViSW5mbyYpOwordm9pZCByZXNldEluQnkoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1Yklu
Zm8mLCBJbkJ5S2luZCk7CiB2b2lkIHJlc2V0SW5zdGFuY2VPZihTdHJ1Y3R1cmVTdHViSW5mbyYp
Owogdm9pZCByZXNldENoZWNrUHJpdmF0ZUJyYW5kKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJ
bmZvJik7CiB2b2lkIHJlc2V0U2V0UHJpdmF0ZUJyYW5kKENvZGVCbG9jayosIFN0cnVjdHVyZVN0
dWJJbmZvJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcAppbmRleCBmYjBkZGY2MWY0NTMuLmE5YTAwNDczYzlkNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0xNDI0LDYgKzE0MjQsMTQg
QEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2luX2J5X2lkKQogICAgIExMSU5UX1JF
VFVSTihqc0Jvb2xlYW4oYXNPYmplY3QoYmFzZVZhbHVlKS0+aGFzUHJvcGVydHkoZ2xvYmFsT2Jq
ZWN0LCBjb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNvZGUubV9wcm9wZXJ0eSkpKSk7CiB9CiAK
K0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pbl9ieV92YWwpCit7CisgICAgTExJTlRf
QkVHSU4oKTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wSW5CeVZhbD4oKTsKKyAgICBh
dXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CisgICAgTExJTlRf
UkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93UGF0aHM6Om9wSW5CeVZhbChnbG9iYWxPYmplY3Qs
IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2Jhc2UpLCBnZXRPcGVyYW5kKGNhbGxG
cmFtZSwgYnl0ZWNvZGUubV9wcm9wZXJ0eSksICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZSkpKTsK
K30KKwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9nZXR0ZXJfYnlfaWQpCiB7
CiAgICAgTExJTlRfQkVHSU4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmgKaW5kZXggOTJiMjA0MzY4MTBiLi40M2M2Y2E4NDUzMGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCkBAIC03Miw2ICs3Miw3IEBA
IExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkKTsKIExMSU5U
X1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkX3dpdGhfdGhpcyk7CiBM
TElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZCk7CiBMTElOVF9T
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2luX2J5X2lkKTsKK0xMSU5UX1NMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfaW5fYnlfdmFsKTsKIExMSU5UX1NMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfZGVsX2J5X2lkKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfZ2V0X2J5X3ZhbCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX2dldF9wcml2YXRlX25hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IDhhYTIyNjJlYTMzYy4uZGQ0YjNh
YzAyNjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtCkBAIC0yMDEwLDcgKzIwMTAsNiBAQCBpZiBub3QgSlNWQUxVRTY0CiAg
ICAgc2xvd1BhdGhPcChnZXRfcHJvdG90eXBlX29mKQogZW5kCiAKLXNsb3dQYXRoT3AoaW5fYnlf
dmFsKQogc2xvd1BhdGhPcChoYXNfcHJpdmF0ZV9uYW1lKQogc2xvd1BhdGhPcChoYXNfcHJpdmF0
ZV9icmFuZCkKIHNsb3dQYXRoT3AoaXNfY2FsbGFibGUpCkBAIC0yMDQ0LDYgKzIwNDMsNyBAQCBt
YWNybyBsbGludFNsb3dQYXRoT3Aob3Bjb2RlTmFtZSkKIGVuZAogCiBsbGludFNsb3dQYXRoT3Ao
aW5fYnlfaWQpCitsbGludFNsb3dQYXRoT3AoaW5fYnlfdmFsKQogbGxpbnRTbG93UGF0aE9wKGRl
bF9ieV9pZCkKIGxsaW50U2xvd1BhdGhPcChkZWxfYnlfdmFsKQogbGxpbnRTbG93UGF0aE9wKGlu
c3RhbmNlb2YpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcAppbmRleCA2NGM4NmU2MTE2MjguLmExYzQxMzEwODYxNCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC04MzAs
MTQgKzgzMCw2IEBAIEpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfaXNfY29u
c3RydWN0b3IpCiAgICAgUkVUVVJOKGpzQm9vbGVhbihHRVRfQyhieXRlY29kZS5tX29wZXJhbmQp
LmpzVmFsdWUoKS5pc0NvbnN0cnVjdG9yKHZtKSkpOwogfQogCi1KU0NfREVGSU5FX0NPTU1PTl9T
TE9XX1BBVEgoc2xvd19wYXRoX2luX2J5X3ZhbCkKLXsKLSAgICBCRUdJTigpOwotICAgIGF1dG8g
Ynl0ZWNvZGUgPSBwYy0+YXM8T3BJbkJ5VmFsPigpOwotICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0
ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKLSAgICBSRVRVUk4oanNCb29sZWFuKENvbW1vblNs
b3dQYXRoczo6b3BJbkJ5VmFsKGdsb2JhbE9iamVjdCwgR0VUX0MoYnl0ZWNvZGUubV9iYXNlKS5q
c1ZhbHVlKCksIEdFVF9DKGJ5dGVjb2RlLm1fcHJvcGVydHkpLmpzVmFsdWUoKSwgJm1ldGFkYXRh
Lm1fYXJyYXlQcm9maWxlKSkpOwotfQotCiBKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xv
d19wYXRoX2hhc19wcml2YXRlX25hbWUpCiB7CiAgICAgQkVHSU4oKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggM2RiODEzYzQxNWQx
Li5jODMwOTgxYjAzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5oCkBAIC0yNTEsNyArMjUxLDYgQEAgSlNDX0RFQ0xBUkVfQ09NTU9OX1NM
T1dfUEFUSChzbG93X3BhdGhfdHlwZW9mX2lzX29iamVjdCk7CiBKU0NfREVDTEFSRV9DT01NT05f
U0xPV19QQVRIKHNsb3dfcGF0aF90eXBlb2ZfaXNfZnVuY3Rpb24pOwogSlNDX0RFQ0xBUkVfQ09N
TU9OX1NMT1dfUEFUSChzbG93X3BhdGhfaXNfY2FsbGFibGUpOwogSlNDX0RFQ0xBUkVfQ09NTU9O
X1NMT1dfUEFUSChzbG93X3BhdGhfaXNfY29uc3RydWN0b3IpOwotSlNDX0RFQ0xBUkVfQ09NTU9O
X1NMT1dfUEFUSChzbG93X3BhdGhfaW5fYnlfdmFsKTsKIEpTQ19ERUNMQVJFX0NPTU1PTl9TTE9X
X1BBVEgoc2xvd19wYXRoX2hhc19wcml2YXRlX25hbWUpOwogSlNDX0RFQ0xBUkVfQ09NTU9OX1NM
T1dfUEFUSChzbG93X3BhdGhfaGFzX3ByaXZhdGVfYnJhbmQpOwogSlNDX0RFQ0xBUkVfQ09NTU9O
X1NMT1dfUEFUSChzbG93X3BhdGhfc3RyY2F0KTsK
</data>
<flag name="commit-queue"
          id="451881"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430440</attachid>
            <date>2021-06-02 20:37:32 -0700</date>
            <delta_ts>2021-06-03 19:23:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>226563.diff</filename>
            <type>text/plain</type>
            <size>101755</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGE3YmJjNGRkN2ZiZi4uZDJhMTQ4M2UwMWVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMjIgQEAKKzIwMjEtMDYtMDIgIFJv
c3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIFtKU0NdIElt
cGxlbWVudCBKSVQgSUNzIGZvciBJbkJ5VmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY1NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVbnRpbCBub3csIEluQnlWYWwgaGFzIGhhZCBmZXcgb3B0aW1p
emF0aW9ucyBpbXBsZW1lbnRlZDoKKyAgICAgICAgREZHIHdvdWxkIGF0dGVtcHQgdG8gY29udmVy
dCBzdHJpbmcgaW5kZXggbG9va3VwcyB0byBJbkJ5SWQgYW5kIGludDMyIGxvb2t1cHMgdG8gSGFz
SW5kZXhlZFByb3BlcnR5LAorICAgICAgICBidXQgdGhlcmUgaGFzIGJlZW4gbm8gaW5saW5lIGNh
Y2hpbmcgbm9yIGFueSBzcGVjaWFsIGhhbmRsaW5nIGZvciBzeW1ib2wgbG9va3Vwcy4KKworICAg
ICAgICBUaGlzIGhhcyBiZWNvbWUgYSBtb3JlIHVyZ2VudCBwcm9ibGVtIG5vdywgYXMgYCN4IGlu
IG9iamAgKGkuZS4gSGFzUHJpdmF0ZU5hbWUgLyBIYXNQcml2YXRlQnJhbmQpCisgICAgICAgIHdp
bGwgbmVlZCB0byBtaW1pYyBJbkJ5VmFsJ3MgaW5saW5lIGNhY2hpbmcgc3RyYXRlZ3kgaW4gb3Jk
ZXIgdG8gYmUgZGVlbWVkIHBlcmZvcm1hbnQgZW5vdWdoIHRvIHNoaXAuCisKKyAgICAgICAgVGhp
cyBwYXRjaCB0aHVzIGltcGxlbWVudHMgaW5saW5lIGNhY2hpbmcgZm9yIEluQnlWYWwgYXQgYWxs
IEpJVCB0aWVycy4KKyAgICAgICAgVGhlIHJlc3VsdCBpcyBhIG5pZ2h0LWFuZC1kYXkgZGlmZmVy
ZW5jZSBmb3Igc3ltYm9scywgYSBuaWNlIGJvb3N0IGZvciBzdHJpbmcgaW5kaWNlcywgYW5kIG5v
IGNoYW5nZSBmb3IgaW50MzJzOiAKKworICAgICAgICBpbi1ieS12YWwtc3ltYm9sICAgICAgICAg
ICAgICAgICAgMjAzLjU1NzIrLTIuNzY0NyAgICAgXiAgICAgMTkuMTAzNSstMC43NDk4ICAgICAg
ICBeIGRlZmluaXRlbHkgMTAuNjU1NXggZmFzdGVyCisgICAgICAgIGluLWJ5LXZhbC1zdHJpbmct
aW5kZXggICAgICAgICAgICAgODcuMDM2OCstNDQuNzc2NiAgICAgICAgICA0NS45OTcxKy0zMi4w
MDA3ICAgICAgICAgbWlnaHQgYmUgMS44OTIyeCBmYXN0ZXIKKyAgICAgICAgaW4tYnktdmFsLWlu
dDMyICAgICAgICAgICAgICAgICAgIDExMC45OTA0Ky0xLjcxMDkgICAgID8gICAgMTExLjM0MzEr
LTEuNzU1OCAgICAgICAgPworCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBieXRlY29k
ZS9JQ1N0YXR1c01hcC5oOgorICAgICAgICAqIGJ5dGVjb2RlL0luQnlJZFZhcmlhbnQuY3BwOgor
ICAgICAgICAoSlNDOjpJbkJ5SWRWYXJpYW50OjpJbkJ5SWRWYXJpYW50KToKKyAgICAgICAgKEpT
Qzo6SW5CeUlkVmFyaWFudDo6YXR0ZW1wdFRvTWVyZ2UpOgorICAgICAgICAoSlNDOjpJbkJ5SWRW
YXJpYW50OjpkdW1wSW5Db250ZXh0IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9JbkJ5SWRW
YXJpYW50Lmg6CisgICAgICAgIChKU0M6OkluQnlJZFZhcmlhbnQ6OmlkZW50aWZpZXIgY29uc3Qp
OgorICAgICAgICAoSlNDOjpJbkJ5SWRWYXJpYW50OjpvdmVybGFwcyk6CisgICAgICAgICogYnl0
ZWNvZGUvSW5CeVN0YXR1cy5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSW5CeUlkU3RhdHVzLmNwcC4KKyAgICAgICAgKiBieXRlY29kZS9JbkJ5U3RhdHVz
Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeUlkU3Rh
dHVzLmguCisgICAgICAgICogYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHA6CisgICAgICAg
IChKU0M6OlJlY29yZGVkU3RhdHVzZXM6OmFkZEluQnlTdGF0dXMpOiBSZW5hbWVkIGZyb20gYWRk
SW5CeUlkU3RhdHVzLgorICAgICAgICAqIGJ5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuaDoKKyAg
ICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHA6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZVN0dWJJbmZvOjpyZXNldCk6CisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0dXJlU3R1
YkluZm8uaDoKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBl
Pjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpmaWx0ZXJJQ1N0YXR1cyk6CisgICAgICAgICogZGZnL0RG
R0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlu
QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgor
ICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJl
cml6ZSk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpjbG9iYmVyc0V4aXRTdGF0ZSk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQ
aGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAg
ICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpkdW1w
KToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkpJVENvbXBpbGVyOjpsaW5rKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6YWRkSW5CeVZhbCk6CisgICAgICAgICogZGZn
L0RGR01heUV4aXQuY3BwOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6
OkRGRzo6Tm9kZTo6aGFzSW5CeVN0YXR1cyk6IFJlbmFtZWQgZnJvbSBoYXNJbkJ5SWRTdGF0dXMu
CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aW5CeVN0YXR1cyk6IFJlbmFtZWQgZnJvbSBpbkJ5
SWRTdGF0dXMuCisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RG
R09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlSW5CeVZhbCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdWYXJhcmdzRm9yd2FyZGlu
Z1BoYXNlLmNwcDoKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAg
KEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlSW5CeSk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVJbkJ5SWQpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlSW5CeVZhbCk6CisgICAgICAg
ICogaml0L0lDU3RhdHMuaDoKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRl
Q29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChKU0M6OkpJVDo6bGluayk6CisgICAgICAgICog
aml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVEluQnlWYWxHZW5lcmF0b3I6OkpJVEluQnlWYWxHZW5lcmF0b3IpOgor
ICAgICAgICAoSlNDOjpKSVRJbkJ5VmFsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAg
ICAgICAgKEpTQzo6SklUSW5CeVZhbEdlbmVyYXRvcjo6ZmluYWxpemUpOgorICAgICAgICAoSlND
OjpKSVRJbkJ5SWRHZW5lcmF0b3I6OkpJVEluQnlJZEdlbmVyYXRvcik6CisgICAgICAgICogaml0
L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpJVERlbEJ5SWRHZW5l
cmF0b3I6OnNsb3dQYXRoSnVtcCBjb25zdCk6CisgICAgICAgIChKU0M6OkpJVEluQnlWYWxHZW5l
cmF0b3I6OkpJVEluQnlWYWxHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRJbkJ5VmFsR2Vu
ZXJhdG9yOjpzbG93UGF0aEp1bXAgY29uc3QpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25z
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAg
KiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbl9ieV92YWwpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRTbG93X29wX2luX2J5X3ZhbCk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5
QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaW5fYnlfdmFsKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9pbl9ieV92YWwpOgorICAgICAgICAqIGpp
dC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVJbkJ5KTogUmVuYW1lZCBmcm9t
IHRyeUNhY2hlSW5CeUlELgorICAgICAgICAoSlNDOjpyZXBhdGNoSW5CeSk6IFJlbmFtZWQgZnJv
bSByZXBhdGNoSW5CeUlELgorICAgICAgICAoSlNDOjpyZXNldEluQnkpOiBSZW5hbWVkIGZyb20g
cmVzZXRJbkJ5SUQuCisgICAgICAgICogaml0L1JlcGF0Y2guaDoKKyAgICAgICAgKiBsbGludC9M
TEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhf
REVDTCk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAgICAgKiBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHA6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKwogMjAyMS0w
Ni0wMiAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgogCiAgICAgICAgIEIz
TW92ZUNvbnN0YW50cyBzaG91bGQgZmlsdGVyIGRpcmVjdGx5IG9uIFZhbHVlcywgYW5kIG9ubHkg
Y3JlYXRlIFZhbHVlS2V5cyB3aGVuIHVzZWZ1bApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA0Yzk5NmFjYmNmMDIuLjE1Y2MyMjFiMTIyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTE0MDEsNyArMTQwMSw5IEBACiAJCUExRDc5MkZGMUI0Mzg2NEIwMDQ1MTZGNSAv
KiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRDc5MkY5MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVt
YmVyRm9ybWF0Q29uc3RydWN0b3IuaCAqLzsgfTsKIAkJQTFENzkzMDExQjQzODY0QjAwNDUxNkY1
IC8qIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRDc5MkZCMUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVt
YmVyRm9ybWF0UHJvdG90eXBlLmggKi87IH07CiAJCUEzMjFBQTZEMjYyNjM1OUIwMDIzQURBMiAv
KiBJbnRsV29ya2Fyb3VuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTMyMUFBNkMyNjI2MzU5QjAwMjNBREEyIC8qIEludGxXb3JrYXJvdW5kLmggKi87
IH07CisJCUEzODJDNTMxMjY2NzExMUQwMDQyQ0Q5OSAvKiBJbkJ5SWRWYXJpYW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzMwNUZCMTIwQjBGNzg4
MDBDRUI4MkIgLyogSW5CeUlkVmFyaWFudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUEzOEQyNTBFMjU4MDBENDQwMDQyQkZERCAvKiBKU0FycmF5
QnVmZmVyUHJvdG90eXBlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTM4RDI1MEQyNTgwMEQ0MzAwNDJCRkREIC8qIEpTQXJyYXlCdWZmZXJQ
cm90b3R5cGVJbmxpbmVzLmggKi87IH07CisJCUEzOEQ1QkZDMjY2NkQzREEwMEExMDlBNiAvKiBJ
bkJ5U3RhdHVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMzhENUJGQTI2NjZEM0RBMDBBMTA5QTYgLyogSW5CeVN0YXR1cy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUEzRUU4NTQzMjYyNTE0QjAwMEZD
OUI4RCAvKiBJbnRsV29ya2Fyb3VuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMzc2MTk0MDI2MjUxMjdDMDBDQkNCQTkgLyogSW50bFdvcmthcm91
bmQuY3BwICovOyB9OwogCQlBM0ZGOUJDNzIyMzQ3NDkxMDBCMUE5QUIgLyogWWFyckZsYWdzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBM0ZGOUJDNTIy
MzQ3NDY2MDBCMUE5QUIgLyogWWFyckZsYWdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTUwM0ZBMUExODhFMEZCMDAwMTEwRjE0IC8qIEphdmFT
Y3JpcHRDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE1MDNGQTE0MTg4RTBGQUYwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmgg
Ki87IH07CkBAIC00NDMwLDYgKzQ0MzIsOCBAQAogCQlBMzIxQUE2QzI2MjYzNTlCMDAyM0FEQTIg
LyogSW50bFdvcmthcm91bmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50
bFdvcmthcm91bmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTM3NjE5NDAyNjI1
MTI3QzAwQ0JDQkE5IC8qIEludGxXb3JrYXJvdW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEludGxXb3JrYXJvdW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTM4RDI1MEQyNTgwMEQ0MzAwNDJCRkREIC8qIEpTQXJyYXlCdWZmZXJQcm90b3R5
cGVJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXJyYXlCdWZm
ZXJQcm90b3R5cGVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzOEQ1
QkY5MjY2NkQzREEwMEExMDlBNiAvKiBJbkJ5U3RhdHVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEluQnlTdGF0dXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBMzhENUJGQTI2NjZEM0RBMDBBMTA5QTYgLyogSW5CeVN0YXR1cy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbkJ5U3RhdHVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUEzQUZGOTJCMjQ1QTNDRjkwMEM5QkEzQiAvKiBJbnRsTG9jYWxlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxMb2NhbGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTNBRkY5MkMyNDVBM0NGQTAwQzlCQTNCIC8qIEludGxMb2NhbGVD
b25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsTG9jYWxl
Q29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTNBRkY5MkQyNDVB
M0NGQTAwQzlCQTNCIC8qIEludGxMb2NhbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSW50bExvY2FsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC01MDU4LDEwICs1MDYyLDggQEAKIAkJRTMyODJCQjkxRkU5MzBBMzAwRURBRjcxIC8qIFlhcnJF
cnJvckNvZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gWWFyckVy
cm9yQ29kZS5jcHA7IHBhdGggPSB5YXJyL1lhcnJFcnJvckNvZGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzI4MkJCQTFGRTkzMEE0MDBFREFGNzEgLyogWWFyckVycm9yQ29k
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBZYXJyRXJyb3JDb2RlLmg7IHBh
dGggPSB5YXJyL1lhcnJFcnJvckNvZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTMyQzNDNjgyM0U5NEMxRTAwQkM5N0MwIC8qIFVubGlua2VkQ29kZUJsb2NrR2VuZXJhdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVubGlua2VkQ29kZUJsb2NrR2VuZXJh
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUzMzA1RkFGMjBCMEY3ODcwMENF
QjgyQiAvKiBJbkJ5SWRTdGF0dXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW5CeUlkU3RhdHVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMzA1RkIwMjBC
MEY3ODcwMENFQjgyQiAvKiBJbkJ5SWRWYXJpYW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEluQnlJZFZhcmlhbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzMwNUZCMTIwQjBGNzg4MDBDRUI4MkIgLyogSW5CeUlkVmFyaWFudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbkJ5SWRWYXJpYW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUUzMzA1RkIyMjBCMEY3ODgwMENFQjgyQiAvKiBJbkJ5SWRTdGF0
dXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5CeUlkU3RhdHVz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzMDk1REMyMzIxMEExNDAwRUI3
ODU2IC8qIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJbnRl
cm5hbEZpZWxkT2JqZWN0SW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzM0
Q0JCMjIxRkQ5NkE4MDAwRUIxNzggLyogUmVnRXhwR2xvYmFsRGF0YS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHBHbG9iYWxEYXRhLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzNENCQjMyMUZEOTZBOTAwMEVCMTc4IC8qIFJlZ0V4cEds
b2JhbERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwR2xvYmFs
RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjI4Miw5ICs2Mjg0LDkgQEAK
IAkJCQlGRTNBMDZCOTFDMTEwM0Q5MDAzOTBGREQgLyogSklUUmlnaHRTaGlmdEdlbmVyYXRvci5o
ICovLAogCQkJCTcyMTMxQkYzMjY1ODdFRjIwMDcxMTRDRiAvKiBKSVRTYWZlcG9pbnQuY3BwICov
LAogCQkJCTcyMTMxQkY1MjY1ODdFRjIwMDcxMTRDRiAvKiBKSVRTYWZlcG9pbnQuaCAqLywKKwkJ
CQk3MjEzMUJGNDI2NTg3RUYyMDA3MTE0Q0YgLyogSklUU2Nhbm5hYmxlLmggKi8sCiAJCQkJNTJC
NTEwMEMyNjVFRkNENDAwODk3MEU3IC8qIEpJVFNpemVTdGF0aXN0aWNzLmNwcCAqLywKIAkJCQk1
MkI1MTAwQjI2NUVGQ0Q0MDA4OTcwRTcgLyogSklUU2l6ZVN0YXRpc3RpY3MuaCAqLywKLQkJCQk3
MjEzMUJGNDI2NTg3RUYyMDA3MTE0Q0YgLyogSklUU2Nhbm5hYmxlLmggKi8sCiAJCQkJMEY3NjZE
MjYxNUE4Q0MxQjAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lLmNwcCAqLywKIAkJCQkwRjc2NkQx
QzE1QTUwMjhEMDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmUuaCAqLywKIAkJCQlGRTQyMzg4RjFC
RTE4QzEyMDA1MTQ3MzcgLyogSklUU3ViR2VuZXJhdG9yLmNwcCAqLywKQEAgLTg1NzcsMTAgKzg1
NzksMTAgQEAKIAkJCQkwRjQ0QTdBRjIwQkY2ODVGMDAyMkIxNzEgLyogSUNTdGF0dXNNYXAuaCAq
LywKIAkJCQkwRjQ0QTdCNTIwQzBCRTNGMDAyMkIxNzEgLyogSUNTdGF0dXNVdGlscy5jcHAgKi8s
CiAJCQkJMEZCMzk5QkQyMEFGNkIzODAwMTdFMjEzIC8qIElDU3RhdHVzVXRpbHMuaCAqLywKLQkJ
CQlFMzMwNUZCMjIwQjBGNzg4MDBDRUI4MkIgLyogSW5CeUlkU3RhdHVzLmNwcCAqLywKLQkJCQlF
MzMwNUZBRjIwQjBGNzg3MDBDRUI4MkIgLyogSW5CeUlkU3RhdHVzLmggKi8sCiAJCQkJRTMzMDVG
QjAyMEIwRjc4NzAwQ0VCODJCIC8qIEluQnlJZFZhcmlhbnQuY3BwICovLAogCQkJCUUzMzA1RkIx
MjBCMEY3ODgwMENFQjgyQiAvKiBJbkJ5SWRWYXJpYW50LmggKi8sCisJCQkJQTM4RDVCRjkyNjY2
RDNEQTAwQTEwOUE2IC8qIEluQnlTdGF0dXMuY3BwICovLAorCQkJCUEzOEQ1QkZBMjY2NkQzREEw
MEExMDlBNiAvKiBJbkJ5U3RhdHVzLmggKi8sCiAJCQkJNzkwNUJCNjYxRDEyMDUwRTAwMTlGRTU3
IC8qIElubGluZUFjY2Vzcy5jcHAgKi8sCiAJCQkJNzkwNUJCNjcxRDEyMDUwRTAwMTlGRTU3IC8q
IElubGluZUFjY2Vzcy5oICovLAogCQkJCTE0OEE3QkVEMUI4Mjk3NUEwMDJEOTE1NyAvKiBJbmxp
bmVDYWxsRnJhbWUuY3BwICovLApAQCAtOTYxNyw3ICs5NjE5LDYgQEAKIAkJCQkwRjJCREMyMTE1
MUU4MDNCMDBDRDg5MTAgLyogREZHSW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjMwMEI3QzE4QUIxQjE0MDBBNkQ3MkUgLyogREZHSW50ZWdlckNoZWNrQ29tYmluaW5nUGhhc2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGODk4RjMyMUIyNzY4OUYwMDgzQTMzQyAvKiBERkdJbnRl
Z2VyUmFuZ2VPcHRpbWl6YXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTJCNTEwMEQy
NjVFRkNEQjAwODk3MEU3IC8qIEpJVFNpemVTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkM5N0YzRTE4MjAyMTE5MDAyQzlCMjYgLyogREZHSW52YWxpZGF0aW9uUG9pbnRJbmplY3Rp
b25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMzQxNzBENDBCRjAwQkI3MjJDIC8q
IERGR0pJVENvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUM5RENDMTMyOERGODIwMDJCMkFE
NyAvKiBERkdKSVRDb21waWxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC05OTIwLDYgKzk5MjEsOCBA
QAogCQkJCUJDMThDNDBGMEUxNkY1Q0QwMEIzNDQ2MCAvKiBJZGVudGlmaWVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4NjA2RERFQTE4REE0NEFCMDBBMzgzRDAgLyogSWRlbnRpZmllcklubGluZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE1RkQwMDc2MTg5QjAzOEMwMDYzMzIzMSAvKiBJZGVudGlm
aWVyc0ZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAorCQkJCUEzODJDNTMxMjY2NzExMUQwMDQyQ0Q5
OSAvKiBJbkJ5SWRWYXJpYW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlBMzhENUJGQzI2NjZEM0RB
MDBBMTA5QTYgLyogSW5CeVN0YXR1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzI1RjhCQ0UxNTc1
NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZCN0YzOTkxNUVEOEU0NjAwRjE2N0IyIC8qIEluZGV4aW5nSGVhZGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkI3RjM5QTE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5kZXhpbmdIZWFkZXJJbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKQEAgLTEwMDcxLDYgKzEwMDc0LDcgQEAKIAkJCQlGRTNBMDZDMDFD
MTEwNDFBMDAzOTBGREQgLyogSklUUmlnaHRTaGlmdEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNzIxMzFCRjkyNjU4N0VGMjAwNzExNENGIC8qIEpJVFNhZmVwb2ludC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNzIxMzFCRjgyNjU4N0VGMjAwNzExNENGIC8qIEpJVFNjYW5uYWJsZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNTJCNTEwMEQyNjVFRkNEQjAwODk3MEU3IC8qIEpJVFNpemVTdGF0
aXN0aWNzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjc2NkQzMTE1QUE4MTEyMDA4RjM2M0UgLyog
SklUU3R1YlJvdXRpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzY2RDJDMTVBOENDM0EwMDhG
MzYzRSAvKiBKSVRTdHViUm91dGluZVNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1RUY5MUYx
Njg3OEY3RDAwM0U1QzI1IC8qIEpJVFRodW5rcy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU291cmNlcy50eHQKaW5kZXggMGMyODYwMDRmZWIxLi44ODRiOGY5ZThhZDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU291cmNlcy50eHQKQEAgLTIzOSw3ICsyMzksNyBAQCBieXRlY29kZS9HZXRCeUlk
VmFyaWFudC5jcHAKIGJ5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwCiBieXRlY29k
ZS9JQ1N0YXR1c01hcC5jcHAKIGJ5dGVjb2RlL0lDU3RhdHVzVXRpbHMuY3BwCi1ieXRlY29kZS9J
bkJ5SWRTdGF0dXMuY3BwCitieXRlY29kZS9JbkJ5U3RhdHVzLmNwcAogYnl0ZWNvZGUvSW5CeUlk
VmFyaWFudC5jcHAKIGJ5dGVjb2RlL0lubGluZUFjY2Vzcy5jcHAKIGJ5dGVjb2RlL0lubGluZUNh
bGxGcmFtZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9J
Q1N0YXR1c01hcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzTWFw
LmgKaW5kZXggZjAzMTkwMTE1YTNiLi5mYTBhNmQ1MjNiN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIENh
bGxMaW5rSW5mbzsKIGNsYXNzIENhbGxMaW5rU3RhdHVzOwogY2xhc3MgQ29kZUJsb2NrOwogY2xh
c3MgR2V0QnlTdGF0dXM7Ci1jbGFzcyBJbkJ5SWRTdGF0dXM7CitjbGFzcyBJbkJ5U3RhdHVzOwog
Y2xhc3MgUHV0QnlJZFN0YXR1czsKIGNsYXNzIERlbGV0ZUJ5U3RhdHVzOwogY2xhc3MgU3RydWN0
dXJlU3R1YkluZm87CkBAIC00Nyw3ICs0Nyw3IEBAIHN0cnVjdCBJQ1N0YXR1cyB7CiAgICAgQnlW
YWxJbmZvKiBieVZhbEluZm8geyBudWxscHRyIH07CiAgICAgQ2FsbExpbmtTdGF0dXMqIGNhbGxT
dGF0dXMgeyBudWxscHRyIH07CiAgICAgR2V0QnlTdGF0dXMqIGdldFN0YXR1cyB7IG51bGxwdHIg
fTsKLSAgICBJbkJ5SWRTdGF0dXMqIGluU3RhdHVzIHsgbnVsbHB0ciB9OworICAgIEluQnlTdGF0
dXMqIGluU3RhdHVzIHsgbnVsbHB0ciB9OwogICAgIFB1dEJ5SWRTdGF0dXMqIHB1dFN0YXR1cyB7
IG51bGxwdHIgfTsKICAgICBEZWxldGVCeVN0YXR1cyogZGVsZXRlU3RhdHVzIHsgbnVsbHB0ciB9
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRW
YXJpYW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRWYXJpYW50
LmNwcAppbmRleCBmNGMyYjU4NmIxODguLmY0OTRiZmJkYjRhZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFZhcmlhbnQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRWYXJpYW50LmNwcApAQCAtMjcsMTIgKzI3LDE1
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW5CeUlkVmFyaWFudC5oIgogCisj
aW5jbHVkZSAiQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaCIKKwogbmFtZXNwYWNlIEpTQyB7
CiAKLUluQnlJZFZhcmlhbnQ6OkluQnlJZFZhcmlhbnQoY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1
Y3R1cmVTZXQsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwgY29uc3QgT2JqZWN0UHJvcGVydHlDb25k
aXRpb25TZXQmIGNvbmRpdGlvblNldCkKK0luQnlJZFZhcmlhbnQ6OkluQnlJZFZhcmlhbnQoQ2Fj
aGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVy
ZVNldCwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
blNldCYgY29uZGl0aW9uU2V0KQogICAgIDogbV9zdHJ1Y3R1cmVTZXQoc3RydWN0dXJlU2V0KQog
ICAgICwgbV9jb25kaXRpb25TZXQoY29uZGl0aW9uU2V0KQogICAgICwgbV9vZmZzZXQob2Zmc2V0
KQorICAgICwgbV9pZGVudGlmaWVyKFdURk1vdmUoaWRlbnRpZmllcikpCiB7CiAgICAgaWYgKCFz
dHJ1Y3R1cmVTZXQuc2l6ZSgpKSB7CiAgICAgICAgIEFTU0VSVChvZmZzZXQgPT0gaW52YWxpZE9m
ZnNldCk7CkBAIC00Miw2ICs0NSwxMiBAQCBJbkJ5SWRWYXJpYW50OjpJbkJ5SWRWYXJpYW50KGNv
bnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0LCBQcm9wZXJ0eU9mZnNldCBvZgogCiBib29s
IEluQnlJZFZhcmlhbnQ6OmF0dGVtcHRUb01lcmdlKGNvbnN0IEluQnlJZFZhcmlhbnQmIG90aGVy
KQogeworICAgIGlmICghIW1faWRlbnRpZmllciAhPSAhIW90aGVyLm1faWRlbnRpZmllcikKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1faWRlbnRpZmllciAmJiAobV9pZGVudGlm
aWVyICE9IG90aGVyLm1faWRlbnRpZmllcikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAg
IGlmIChtX29mZnNldCAhPSBvdGhlci5tX29mZnNldCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CkBAIC04OSwxMyArOTgsMTMgQEAgdm9pZCBJbkJ5SWRWYXJpYW50OjpkdW1wKFByaW50U3RyZWFt
JiBvdXQpIGNvbnN0CiAKIHZvaWQgSW5CeUlkVmFyaWFudDo6ZHVtcEluQ29udGV4dChQcmludFN0
cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29uc3QKIHsKKyAgICBvdXQucHJpbnQo
IjxpZD0nIiwgbV9pZGVudGlmaWVyLCAiJywgIik7CiAgICAgaWYgKCFpc1NldCgpKSB7Ci0gICAg
ICAgIG91dC5wcmludCgiPGVtcHR5PiIpOworICAgICAgICBvdXQucHJpbnQoImVtcHR5PiIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgb3V0LnByaW50KAotICAgICAgICAiPCIsIGlu
Q29udGV4dChzdHJ1Y3R1cmVTZXQoKSwgY29udGV4dCksICIsICIsIGluQ29udGV4dChtX2NvbmRp
dGlvblNldCwgY29udGV4dCkpOworICAgIG91dC5wcmludChpbkNvbnRleHQoc3RydWN0dXJlU2V0
KCksIGNvbnRleHQpLCAiLCAiLCBpbkNvbnRleHQobV9jb25kaXRpb25TZXQsIGNvbnRleHQpKTsK
ICAgICBvdXQucHJpbnQoIiwgb2Zmc2V0ID0gIiwgb2Zmc2V0KCkpOwogICAgIG91dC5wcmludCgi
PiIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJ
ZFZhcmlhbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRWYXJpYW50
LmgKaW5kZXggNzgyYTVkYTg4MTA2Li43ZDczMjM4ZmJlNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRWYXJpYW50LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFZhcmlhbnQuaApAQCAtMjYsNiArMjYsNyBAQAogCiAj
cHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXIuaCIKICNpbmNsdWRl
ICJPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oIgogI2luY2x1ZGUgIlByb3BlcnR5T2Zmc2V0
LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlU2V0LmgiCkBAIC0zNSwxMyArMzYsMTMgQEAgbmFtZXNw
YWNlIERPTUpJVCB7CiBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiB9CiAKLWNsYXNzIEluQnlJZFN0YXR1
czsKK2NsYXNzIEluQnlTdGF0dXM7CiBzdHJ1Y3QgRHVtcENvbnRleHQ7CiAKIGNsYXNzIEluQnlJ
ZFZhcmlhbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIElu
QnlJZFZhcmlhbnQoY29uc3QgU3RydWN0dXJlU2V0JiA9IFN0cnVjdHVyZVNldCgpLCBQcm9wZXJ0
eU9mZnNldCA9IGludmFsaWRPZmZzZXQsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0
JiA9IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0KCkpOworICAgIEluQnlJZFZhcmlhbnQoQ2Fj
aGVhYmxlSWRlbnRpZmllciwgY29uc3QgU3RydWN0dXJlU2V0JiA9IFN0cnVjdHVyZVNldCgpLCBQ
cm9wZXJ0eU9mZnNldCA9IGludmFsaWRPZmZzZXQsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0
aW9uU2V0JiA9IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0KCkpOwogCiAgICAgYm9vbCBpc1Nl
dCgpIGNvbnN0IHsgcmV0dXJuICEhbV9zdHJ1Y3R1cmVTZXQuc2l6ZSgpOyB9CiAgICAgZXhwbGlj
aXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIGlzU2V0KCk7IH0KQEAgLTYzLDE3ICs2
NCwyNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAg
dm9pZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRleHQqKSBjb25zdDsKIAor
ICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRl
bnRpZmllcjsgfQorCiAgICAgYm9vbCBvdmVybGFwcyhjb25zdCBJbkJ5SWRWYXJpYW50JiBvdGhl
cikKICAgICB7CisgICAgICAgIGlmICghIW1faWRlbnRpZmllciAhPSAhIW90aGVyLm1faWRlbnRp
ZmllcikKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAobV9pZGVudGlmaWVy
KSB7CisgICAgICAgICAgICBpZiAobV9pZGVudGlmaWVyICE9IG90aGVyLm1faWRlbnRpZmllcikK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJu
IHN0cnVjdHVyZVNldCgpLm92ZXJsYXBzKG90aGVyLnN0cnVjdHVyZVNldCgpKTsKICAgICB9CiAK
IHByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIEluQnlJZFN0YXR1czsKKyAgICBmcmllbmQgY2xh
c3MgSW5CeVN0YXR1czsKIAogICAgIFN0cnVjdHVyZVNldCBtX3N0cnVjdHVyZVNldDsKICAgICBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBtX2NvbmRpdGlvblNldDsKICAgICBQcm9wZXJ0eU9m
ZnNldCBtX29mZnNldDsKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0luQnlJZFN0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSW5CeVN0YXR1cy5jcHAKc2ltaWxhcml0eSBpbmRleCA2NyUKcmVuYW1lIGZyb20gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFN0YXR1cy5jcHAKcmVuYW1lIHRvIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5U3RhdHVzLmNwcAppbmRleCA0OTM4YTYzYzFi
MmEuLjk5MjE5YTBmMjFkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0luQnlJZFN0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0luQnlTdGF0dXMuY3BwCkBAIC0yNSw4ICsyNSw5IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIkluQnlJZFN0YXR1cy5oIgorI2luY2x1ZGUgIkluQnlTdGF0dXMuaCIK
IAorI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ29k
ZUJsb2NrLmgiCiAjaW5jbHVkZSAiQ29tcGxleEdldFN0YXR1cy5oIgogI2luY2x1ZGUgIklDU3Rh
dHVzVXRpbHMuaCIKQEAgLTM2LDQ2ICszNyw0NSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotYm9v
bCBJbkJ5SWRTdGF0dXM6OmFwcGVuZFZhcmlhbnQoY29uc3QgSW5CeUlkVmFyaWFudCYgdmFyaWFu
dCkKK2Jvb2wgSW5CeVN0YXR1czo6YXBwZW5kVmFyaWFudChjb25zdCBJbkJ5SWRWYXJpYW50JiB2
YXJpYW50KQogewogICAgIHJldHVybiBhcHBlbmRJQ1N0YXR1c1ZhcmlhbnQobV92YXJpYW50cywg
dmFyaWFudCk7CiB9CiAKLXZvaWQgSW5CeUlkU3RhdHVzOjpzaHJpbmtUb0ZpdCgpCit2b2lkIElu
QnlTdGF0dXM6OnNocmlua1RvRml0KCkKIHsKICAgICBtX3ZhcmlhbnRzLnNocmlua1RvRml0KCk7
CiB9CiAKICNpZiBFTkFCTEUoSklUKQotSW5CeUlkU3RhdHVzIEluQnlJZFN0YXR1czo6Y29tcHV0
ZUZvcihDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIElDU3RhdHVzTWFwJiBtYXAsIEJ5dGVjb2Rl
SW5kZXggYnl0ZWNvZGVJbmRleCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgRXhpdEZsYWcgZGlk
RXhpdCkKK0luQnlTdGF0dXMgSW5CeVN0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIHByb2Zp
bGVkQmxvY2ssIElDU3RhdHVzTWFwJiBtYXAsIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCwg
RXhpdEZsYWcgZGlkRXhpdCkKIHsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHByb2Zp
bGVkQmxvY2stPm1fbG9jayk7CiAKLSAgICBJbkJ5SWRTdGF0dXMgcmVzdWx0OworICAgIEluQnlT
dGF0dXMgcmVzdWx0OwogCiAjaWYgRU5BQkxFKERGR19KSVQpCi0gICAgcmVzdWx0ID0gY29tcHV0
ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2sobG9ja2VyLCBwcm9maWxlZEJsb2Nr
LT52bSgpLCBtYXAuZ2V0KENvZGVPcmlnaW4oYnl0ZWNvZGVJbmRleCkpLnN0dWJJbmZvLCB1aWQp
OworICAgIHJlc3VsdCA9IGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNr
KGxvY2tlciwgcHJvZmlsZWRCbG9jay0+dm0oKSwgbWFwLmdldChDb2RlT3JpZ2luKGJ5dGVjb2Rl
SW5kZXgpKS5zdHViSW5mbyk7CiAKICAgICBpZiAoIXJlc3VsdC50YWtlc1Nsb3dQYXRoKCkgJiYg
ZGlkRXhpdCkKLSAgICAgICAgcmV0dXJuIEluQnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsKKyAg
ICAgICAgcmV0dXJuIEluQnlTdGF0dXMoVGFrZXNTbG93UGF0aCk7CiAjZWxzZQogICAgIFVOVVNF
RF9QQVJBTShtYXApOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKLSAgICBVTlVT
RURfUEFSQU0odWlkKTsKICAgICBVTlVTRURfUEFSQU0oZGlkRXhpdCk7CiAjZW5kaWYKIAogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKLUluQnlJZFN0YXR1cyBJbkJ5SWRTdGF0dXM6OmNvbXB1dGVG
b3IoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBJQ1N0YXR1c01hcCYgbWFwLCBCeXRlY29kZUlu
ZGV4IGJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCitJbkJ5U3RhdHVzIElu
QnlTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBJQ1N0YXR1c01h
cCYgbWFwLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCiB7Ci0gICAgcmV0dXJuIGNvbXB1
dGVGb3IocHJvZmlsZWRCbG9jaywgbWFwLCBieXRlY29kZUluZGV4LCB1aWQsIGhhc0JhZENhY2hl
RXhpdFNpdGUocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCkpOworICAgIHJldHVybiBjb21w
dXRlRm9yKHByb2ZpbGVkQmxvY2ssIG1hcCwgYnl0ZWNvZGVJbmRleCwgaGFzQmFkQ2FjaGVFeGl0
U2l0ZShwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4KSk7CiB9CiAKLUluQnlJZFN0YXR1cyBJ
bkJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCitJbkJ5U3RhdHVzIEluQnlTdGF0dXM6OmNvbXB1dGVG
b3IoCiAgICAgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBJQ1N0YXR1c01hcCYgYmFzZWxpbmVN
YXAsCi0gICAgSUNTdGF0dXNDb250ZXh0U3RhY2smIGNvbnRleHRTdGFjaywgQ29kZU9yaWdpbiBj
b2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQorICAgIElDU3RhdHVzQ29udGV4dFN0
YWNrJiBjb250ZXh0U3RhY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbikKIHsKICAgICBCeXRlY29k
ZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgoKTsKICAgICBF
eGl0RmxhZyBkaWRFeGl0ID0gaGFzQmFkQ2FjaGVFeGl0U2l0ZShwcm9maWxlZEJsb2NrLCBieXRl
Y29kZUluZGV4KTsKQEAgLTgzLDI0ICs4MywyNCBAQCBJbkJ5SWRTdGF0dXMgSW5CeUlkU3RhdHVz
Ojpjb21wdXRlRm9yKAogICAgIGZvciAoSUNTdGF0dXNDb250ZXh0KiBjb250ZXh0IDogY29udGV4
dFN0YWNrKSB7CiAgICAgICAgIElDU3RhdHVzIHN0YXR1cyA9IGNvbnRleHQtPmdldChjb2RlT3Jp
Z2luKTsKICAgICAgICAgCi0gICAgICAgIGF1dG8gYmxlc3MgPSBbJl0gKGNvbnN0IEluQnlJZFN0
YXR1cyYgcmVzdWx0KSAtPiBJbkJ5SWRTdGF0dXMgeworICAgICAgICBhdXRvIGJsZXNzID0gWyZd
IChjb25zdCBJbkJ5U3RhdHVzJiByZXN1bHQpIC0+IEluQnlTdGF0dXMgewogICAgICAgICAgICAg
aWYgKCFjb250ZXh0LT5pc0lubGluZWQoY29kZU9yaWdpbikpIHsKLSAgICAgICAgICAgICAgICBJ
bkJ5SWRTdGF0dXMgYmFzZWxpbmVSZXN1bHQgPSBjb21wdXRlRm9yKAotICAgICAgICAgICAgICAg
ICAgICBwcm9maWxlZEJsb2NrLCBiYXNlbGluZU1hcCwgYnl0ZWNvZGVJbmRleCwgdWlkLCBkaWRF
eGl0KTsKKyAgICAgICAgICAgICAgICBJbkJ5U3RhdHVzIGJhc2VsaW5lUmVzdWx0ID0gY29tcHV0
ZUZvcigKKyAgICAgICAgICAgICAgICAgICAgcHJvZmlsZWRCbG9jaywgYmFzZWxpbmVNYXAsIGJ5
dGVjb2RlSW5kZXgsIGRpZEV4aXQpOwogICAgICAgICAgICAgICAgIGJhc2VsaW5lUmVzdWx0Lm1l
cmdlKHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGJhc2VsaW5lUmVzdWx0OwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGRpZEV4aXQuaXNTZXQoRXhpdEZyb21JbmxpbmVk
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gSW5CeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBJbkJ5U3RhdHVzKFRha2VzU2xvd1BhdGgpOwogICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfTsKICAgICAgICAgCiAjaWYgRU5BQkxFKERG
R19KSVQpCiAgICAgICAgIGlmIChzdGF0dXMuc3R1YkluZm8pIHsKLSAgICAgICAgICAgIEluQnlJ
ZFN0YXR1cyByZXN1bHQ7CisgICAgICAgICAgICBJbkJ5U3RhdHVzIHJlc3VsdDsKICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvbnRleHQt
Pm9wdGltaXplZENvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBj
b21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjayhsb2NrZXIsIHByb2ZpbGVk
QmxvY2stPnZtKCksIHN0YXR1cy5zdHViSW5mbywgdWlkKTsKKyAgICAgICAgICAgICAgICByZXN1
bHQgPSBjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjayhsb2NrZXIsIHBy
b2ZpbGVkQmxvY2stPnZtKCksIHN0YXR1cy5zdHViSW5mbyk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBpZiAocmVzdWx0LmlzU2V0KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGJsZXNz
KHJlc3VsdCk7CkBAIC0xMTEsNDQgKzExMSw0NyBAQCBJbkJ5SWRTdGF0dXMgSW5CeUlkU3RhdHVz
Ojpjb21wdXRlRm9yKAogICAgICAgICAgICAgcmV0dXJuIGJsZXNzKCpzdGF0dXMuaW5TdGF0dXMp
OwogICAgIH0KICAgICAKLSAgICByZXR1cm4gY29tcHV0ZUZvcihwcm9maWxlZEJsb2NrLCBiYXNl
bGluZU1hcCwgYnl0ZWNvZGVJbmRleCwgdWlkLCBkaWRFeGl0KTsKKyAgICByZXR1cm4gY29tcHV0
ZUZvcihwcm9maWxlZEJsb2NrLCBiYXNlbGluZU1hcCwgYnl0ZWNvZGVJbmRleCwgZGlkRXhpdCk7
CiB9CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAogI2lmIEVOQUJMRShERkdfSklUKQotSW5CeUlk
U3RhdHVzIEluQnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvKGNvbnN0IENvbmN1cnJlbnRK
U0xvY2tlciYgbG9ja2VyLCBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCog
dWlkKQorSW5CeVN0YXR1cyBJbkJ5U3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8oY29uc3QgQ29u
Y3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgU3RydWN0
dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCiB7Ci0gICAgSW5C
eUlkU3RhdHVzIHJlc3VsdCA9IEluQnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91
dEV4aXRTaXRlRmVlZGJhY2sobG9ja2VyLCBwcm9maWxlZEJsb2NrLT52bSgpLCBzdHViSW5mbywg
dWlkKTsKKyAgICBJbkJ5U3RhdHVzIHJlc3VsdCA9IEluQnlTdGF0dXM6OmNvbXB1dGVGb3JTdHVi
SW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKGxvY2tlciwgcHJvZmlsZWRCbG9jay0+dm0oKSwg
c3R1YkluZm8pOwogCiAgICAgaWYgKCFyZXN1bHQudGFrZXNTbG93UGF0aCgpICYmIGhhc0JhZENh
Y2hlRXhpdFNpdGUocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KCkpKQot
ICAgICAgICByZXR1cm4gSW5CeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgpOworICAgICAgICByZXR1
cm4gSW5CeVN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1J
bkJ5SWRTdGF0dXMgSW5CeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNp
dGVGZWVkYmFjayhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBWTSYgdm0sIFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbywgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKK0luQnlTdGF0dXMgSW5C
eVN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2soY29uc3Qg
Q29uY3VycmVudEpTTG9ja2VyJiwgVk0mIHZtLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8p
CiB7CiAgICAgU3R1YkluZm9TdW1tYXJ5IHN1bW1hcnkgPSBTdHJ1Y3R1cmVTdHViSW5mbzo6c3Vt
bWFyeSh2bSwgc3R1YkluZm8pOwogICAgIGlmICghaXNJbmxpbmVhYmxlKHN1bW1hcnkpKQotICAg
ICAgICByZXR1cm4gSW5CeUlkU3RhdHVzKHN1bW1hcnkpOworICAgICAgICByZXR1cm4gSW5CeVN0
YXR1cyhzdW1tYXJ5KTsKICAgICAKICAgICAvLyBGaW5hbGx5IGZpZ3VyZSBvdXQgaWYgd2UgY2Fu
IGRlcml2ZSBhbiBhY2Nlc3Mgc3RyYXRlZ3kuCi0gICAgSW5CeUlkU3RhdHVzIHJlc3VsdDsKKyAg
ICBJbkJ5U3RhdHVzIHJlc3VsdDsKICAgICByZXN1bHQubV9zdGF0ZSA9IFNpbXBsZTsKICAgICBz
d2l0Y2ggKHN0dWJJbmZvLT5jYWNoZVR5cGUoKSkgewogICAgIGNhc2UgQ2FjaGVUeXBlOjpVbnNl
dDoKLSAgICAgICAgcmV0dXJuIEluQnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uKTsKKyAgICAgICAg
cmV0dXJuIEluQnlTdGF0dXMoTm9JbmZvcm1hdGlvbik7CiAKICAgICBjYXNlIENhY2hlVHlwZTo6
SW5CeUlkU2VsZjogewogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHN0dWJJbmZvLT51
LmJ5SWRTZWxmLmJhc2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgICAgIGlmIChzdHJ1Y3R1
cmUtPnRha2VzU2xvd1BhdGhJbkRGR0ZvckltcHVyZVByb3BlcnR5KCkpCi0gICAgICAgICAgICBy
ZXR1cm4gSW5CeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgpOworICAgICAgICAgICAgcmV0dXJuIElu
QnlTdGF0dXMoVGFrZXNTbG93UGF0aCk7CisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRl
bnRpZmllciA9IHN0dWJJbmZvLT5pZGVudGlmaWVyKCk7CisgICAgICAgIFVuaXF1ZWRTdHJpbmdJ
bXBsKiB1aWQgPSBpZGVudGlmaWVyLnVpZCgpOworICAgICAgICBSRUxFQVNFX0FTU0VSVCh1aWQp
OworICAgICAgICBJbkJ5SWRWYXJpYW50IHZhcmlhbnQoV1RGTW92ZShpZGVudGlmaWVyKSk7CiAg
ICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7Ci0gICAgICAgIEluQnlJZFZhcmlhbnQgdmFyaWFu
dDsKICAgICAgICAgdmFyaWFudC5tX29mZnNldCA9IHN0cnVjdHVyZS0+Z2V0Q29uY3VycmVudGx5
KHVpZCwgYXR0cmlidXRlcyk7CiAgICAgICAgIGlmICghaXNWYWxpZE9mZnNldCh2YXJpYW50Lm1f
b2Zmc2V0KSkKLSAgICAgICAgICAgIHJldHVybiBJbkJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCk7
CisgICAgICAgICAgICByZXR1cm4gSW5CeVN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsKICAgICAgICAg
aWYgKGF0dHJpYnV0ZXMgJiBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3JPclZhbHVl
KQotICAgICAgICAgICAgcmV0dXJuIEluQnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsKKyAgICAg
ICAgICAgIHJldHVybiBJbkJ5U3RhdHVzKFRha2VzU2xvd1BhdGgpOwogCiAgICAgICAgIHZhcmlh
bnQubV9zdHJ1Y3R1cmVTZXQuYWRkKHN0cnVjdHVyZSk7CiAgICAgICAgIGJvb2wgZGlkQXBwZW5k
ID0gcmVzdWx0LmFwcGVuZFZhcmlhbnQodmFyaWFudCk7CkBAIC0xNjEsMTAgKzE2NCwxMCBAQCBJ
bkJ5SWRTdGF0dXMgSW5CeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNp
dGVGZWVkYmFjayhjb25zdCBDb25jdQogICAgICAgICBmb3IgKHVuc2lnbmVkIGxpc3RJbmRleCA9
IDA7IGxpc3RJbmRleCA8IGxpc3QtPnNpemUoKTsgKytsaXN0SW5kZXgpIHsKICAgICAgICAgICAg
IGNvbnN0IEFjY2Vzc0Nhc2UmIGFjY2VzcyA9IGxpc3QtPmF0KGxpc3RJbmRleCk7CiAgICAgICAg
ICAgICBpZiAoYWNjZXNzLnZpYVByb3h5KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEluQnlJ
ZFN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSW5CeVN0YXR1
cyhUYWtlc1Nsb3dQYXRoKTsKIAogICAgICAgICAgICAgaWYgKGFjY2Vzcy51c2VzUG9seVByb3Rv
KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEluQnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gSW5CeVN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsKIAogICAg
ICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBhY2Nlc3Muc3RydWN0dXJlKCk7CiAgICAg
ICAgICAgICBpZiAoIXN0cnVjdHVyZSkgewpAQCAtMTc0LDE2ICsxNzcsMTYgQEAgSW5CeUlkU3Rh
dHVzIEluQnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJh
Y2soY29uc3QgQ29uY3UKICAgICAgICAgICAgICAgICAvLyBoYXZlIHRvIHVzZSB2YWx1ZSBwcm9m
aWxpbmcgdG8gZGlzY292ZXIgc29tZXRoaW5nIHRoYXQgdGhlIEFjY2Vzc0Nhc2UgY291bGQgaGF2
ZQogICAgICAgICAgICAgICAgIC8vIHRvbGQgdXMuIEJ1dCwgaXQgd29ya3Mgd2VsbCBlbm91Z2gu
IFNvLCBvdXIgb25seSBjb25jZXJuIGhlcmUgaXMgdG8gbm90CiAgICAgICAgICAgICAgICAgLy8g
Y3Jhc2ggb24gbnVsbCBzdHJ1Y3R1cmUuCi0gICAgICAgICAgICAgICAgcmV0dXJuIEluQnlJZFN0
YXR1cyhUYWtlc1Nsb3dQYXRoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSW5CeVN0YXR1cyhU
YWtlc1Nsb3dQYXRoKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgQ29tcGxleEdldFN0
YXR1cyBjb21wbGV4R2V0U3RhdHVzID0gQ29tcGxleEdldFN0YXR1czo6Y29tcHV0ZUZvcihzdHJ1
Y3R1cmUsIGFjY2Vzcy5jb25kaXRpb25TZXQoKSwgdWlkKTsKKyAgICAgICAgICAgIENvbXBsZXhH
ZXRTdGF0dXMgY29tcGxleEdldFN0YXR1cyA9IENvbXBsZXhHZXRTdGF0dXM6OmNvbXB1dGVGb3Io
c3RydWN0dXJlLCBhY2Nlc3MuY29uZGl0aW9uU2V0KCksIGFjY2Vzcy51aWQoKSk7CiAgICAgICAg
ICAgICBzd2l0Y2ggKGNvbXBsZXhHZXRTdGF0dXMua2luZCgpKSB7CiAgICAgICAgICAgICBjYXNl
IENvbXBsZXhHZXRTdGF0dXM6OlNob3VsZFNraXA6CiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAKICAgICAgICAgICAgIGNhc2UgQ29tcGxleEdldFN0YXR1czo6VGFrZXNTbG93UGF0aDoKLSAg
ICAgICAgICAgICAgICByZXR1cm4gSW5CeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgpOworICAgICAg
ICAgICAgICAgIHJldHVybiBJbkJ5U3RhdHVzKFRha2VzU2xvd1BhdGgpOwogCiAgICAgICAgICAg
ICBjYXNlIENvbXBsZXhHZXRTdGF0dXM6OklubGluZWFibGU6IHsKICAgICAgICAgICAgICAgICBz
d2l0Y2ggKGFjY2Vzcy50eXBlKCkpIHsKQEAgLTE5MSwxNSArMTk0LDE1IEBAIEluQnlJZFN0YXR1
cyBJbkJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNr
KGNvbnN0IENvbmN1CiAgICAgICAgICAgICAgICAgY2FzZSBBY2Nlc3NDYXNlOjpJbk1pc3M6CiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBJbkJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCk7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBJbkJ5U3RhdHVzKFRha2VzU2xvd1BhdGgpOwogICAgICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIEluQnlJZFZhcmlhbnQgdmFyaWFudCgKLSAg
ICAgICAgICAgICAgICAgICAgU3RydWN0dXJlU2V0KHN0cnVjdHVyZSksIGNvbXBsZXhHZXRTdGF0
dXMub2Zmc2V0KCksCisgICAgICAgICAgICAgICAgICAgIGFjY2Vzcy5pZGVudGlmaWVyKCksIFN0
cnVjdHVyZVNldChzdHJ1Y3R1cmUpLCBjb21wbGV4R2V0U3RhdHVzLm9mZnNldCgpLAogICAgICAg
ICAgICAgICAgICAgICBjb21wbGV4R2V0U3RhdHVzLmNvbmRpdGlvblNldCgpKTsKIAogICAgICAg
ICAgICAgICAgIGlmICghcmVzdWx0LmFwcGVuZFZhcmlhbnQodmFyaWFudCkpCi0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBJbkJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCk7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBJbkJ5U3RhdHVzKFRha2VzU2xvd1BhdGgpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMjEwLDE1ICsyMTMs
MTUgQEAgSW5CeUlkU3RhdHVzIEluQnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvV2l0aG91
dEV4aXRTaXRlRmVlZGJhY2soY29uc3QgQ29uY3UKICAgICB9CiAKICAgICBkZWZhdWx0OgotICAg
ICAgICByZXR1cm4gSW5CeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgpOworICAgICAgICByZXR1cm4g
SW5CeVN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsKICAgICB9CiAKICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBJbkJ5SWRTdGF0dXMoKTsKKyAgICByZXR1cm4gSW5C
eVN0YXR1cygpOwogfQogI2VuZGlmCiAKLXZvaWQgSW5CeUlkU3RhdHVzOjptZXJnZShjb25zdCBJ
bkJ5SWRTdGF0dXMmIG90aGVyKQordm9pZCBJbkJ5U3RhdHVzOjptZXJnZShjb25zdCBJbkJ5U3Rh
dHVzJiBvdGhlcikKIHsKICAgICBpZiAob3RoZXIubV9zdGF0ZSA9PSBOb0luZm9ybWF0aW9uKQog
ICAgICAgICByZXR1cm47CkBAIC0yMzAsMTIgKzIzMywxMiBAQCB2b2lkIEluQnlJZFN0YXR1czo6
bWVyZ2UoY29uc3QgSW5CeUlkU3RhdHVzJiBvdGhlcikKICAgICAgICAgCiAgICAgY2FzZSBTaW1w
bGU6CiAgICAgICAgIGlmIChvdGhlci5tX3N0YXRlICE9IFNpbXBsZSkgewotICAgICAgICAgICAg
KnRoaXMgPSBJbkJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCk7CisgICAgICAgICAgICAqdGhpcyA9
IEluQnlTdGF0dXMoVGFrZXNTbG93UGF0aCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICAgICAgZm9yIChjb25zdCBJbkJ5SWRWYXJpYW50JiBvdGhlclZhcmlhbnQgOiBvdGhl
ci5tX3ZhcmlhbnRzKSB7CiAgICAgICAgICAgICBpZiAoIWFwcGVuZFZhcmlhbnQob3RoZXJWYXJp
YW50KSkgewotICAgICAgICAgICAgICAgICp0aGlzID0gSW5CeUlkU3RhdHVzKFRha2VzU2xvd1Bh
dGgpOworICAgICAgICAgICAgICAgICp0aGlzID0gSW5CeVN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTI0
OSw3ICsyNTIsNyBAQCB2b2lkIEluQnlJZFN0YXR1czo6bWVyZ2UoY29uc3QgSW5CeUlkU3RhdHVz
JiBvdGhlcikKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIElu
QnlJZFN0YXR1czo6ZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0KQordm9p
ZCBJbkJ5U3RhdHVzOjpmaWx0ZXIoY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQpCiB7
CiAgICAgaWYgKG1fc3RhdGUgIT0gU2ltcGxlKQogICAgICAgICByZXR1cm47CkBAIC0yNTksMTYg
KzI2MiwxNiBAQCB2b2lkIEluQnlJZFN0YXR1czo6ZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNldCYg
c3RydWN0dXJlU2V0KQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgotdm9pZCBJbkJ5
SWRTdGF0dXM6Om1hcmtJZkNoZWFwKFZpc2l0b3ImIHZpc2l0b3IpCit2b2lkIEluQnlTdGF0dXM6
Om1hcmtJZkNoZWFwKFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgZm9yIChJbkJ5SWRWYXJpYW50
JiB2YXJpYW50IDogbV92YXJpYW50cykKICAgICAgICAgdmFyaWFudC5tYXJrSWZDaGVhcCh2aXNp
dG9yKTsKIH0KIAotdGVtcGxhdGUgdm9pZCBJbkJ5SWRTdGF0dXM6Om1hcmtJZkNoZWFwKEFic3Ry
YWN0U2xvdFZpc2l0b3ImKTsKLXRlbXBsYXRlIHZvaWQgSW5CeUlkU3RhdHVzOjptYXJrSWZDaGVh
cChTbG90VmlzaXRvciYpOwordGVtcGxhdGUgdm9pZCBJbkJ5U3RhdHVzOjptYXJrSWZDaGVhcChB
YnN0cmFjdFNsb3RWaXNpdG9yJik7Cit0ZW1wbGF0ZSB2b2lkIEluQnlTdGF0dXM6Om1hcmtJZkNo
ZWFwKFNsb3RWaXNpdG9yJik7CiAKLWJvb2wgSW5CeUlkU3RhdHVzOjpmaW5hbGl6ZShWTSYgdm0p
Citib29sIEluQnlTdGF0dXM6OmZpbmFsaXplKFZNJiB2bSkKIHsKICAgICBmb3IgKEluQnlJZFZh
cmlhbnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKSB7CiAgICAgICAgIGlmICghdmFyaWFudC5maW5h
bGl6ZSh2bSkpCkBAIC0yNzcsNyArMjgwLDI1IEBAIGJvb2wgSW5CeUlkU3RhdHVzOjpmaW5hbGl6
ZShWTSYgdm0pCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSW5CeUlkU3RhdHVzOjpkdW1w
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CitDYWNoZWFibGVJZGVudGlmaWVyIEluQnlTdGF0dXM6
OnNpbmdsZUlkZW50aWZpZXIoKSBjb25zdAoreworICAgIGlmIChtX3ZhcmlhbnRzLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIHJl
c3VsdCA9IG1fdmFyaWFudHMuZmlyc3QoKS5pZGVudGlmaWVyKCk7CisgICAgaWYgKCFyZXN1bHQp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgbV92
YXJpYW50cy5zaXplKCk7ICsraSkgeworICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50
aWZpZXIgPSBtX3ZhcmlhbnRzW2ldLmlkZW50aWZpZXIoKTsKKyAgICAgICAgaWYgKCFpZGVudGlm
aWVyKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGlmIChpZGVudGlmaWVy
ICE9IHJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICByZXR1
cm4gcmVzdWx0OworfQorCit2b2lkIEluQnlTdGF0dXM6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkg
Y29uc3QKIHsKICAgICBvdXQucHJpbnQoIigiKTsKICAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRTdGF0dXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5U3RhdHVzLmgKc2ltaWxhcml0eSBp
bmRleCA3OCUKcmVuYW1lIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJ
ZFN0YXR1cy5oCnJlbmFtZSB0byBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeVN0
YXR1cy5oCmluZGV4IDdmMTVmYzVlNDYxYS4uNWEzNDBiNDkzYTM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeUlkU3RhdHVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlTdGF0dXMuaApAQCAtMzksNyArMzksNyBAQCBjbGFz
cyBBY2Nlc3NDYXNlOwogY2xhc3MgQ29kZUJsb2NrOwogY2xhc3MgU3RydWN0dXJlU3R1YkluZm87
CiAKLWNsYXNzIEluQnlJZFN0YXR1cyBmaW5hbCB7CitjbGFzcyBJbkJ5U3RhdHVzIGZpbmFsIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBlbnVtIFN0YXRlIHsK
QEAgLTUyLDE3ICs1MiwxNSBAQCBwdWJsaWM6CiAgICAgICAgIFRha2VzU2xvd1BhdGgsCiAgICAg
fTsKIAotICAgIEluQnlJZFN0YXR1cygpID0gZGVmYXVsdDsKKyAgICBJbkJ5U3RhdHVzKCkgPSBk
ZWZhdWx0OwogCi0gICAgSW5CeUlkU3RhdHVzKFN0YXRlIHN0YXRlLCBjb25zdCBJbkJ5SWRWYXJp
YW50JiB2YXJpYW50ID0gSW5CeUlkVmFyaWFudCgpKQorICAgIEluQnlTdGF0dXMoU3RhdGUgc3Rh
dGUpCiAgICAgICAgIDogbV9zdGF0ZShzdGF0ZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVCgoc3Rh
dGUgPT0gU2ltcGxlKSA9PSB2YXJpYW50LmlzU2V0KCkpOwotICAgICAgICBpZiAodmFyaWFudC5p
c1NldCgpKQotICAgICAgICAgICAgbV92YXJpYW50cy5hcHBlbmQodmFyaWFudCk7CisgICAgICAg
IEFTU0VSVChzdGF0ZSAhPSBTaW1wbGUpOwogICAgIH0KIAotICAgIGV4cGxpY2l0IEluQnlJZFN0
YXR1cyhTdHViSW5mb1N1bW1hcnkgc3VtbWFyeSkKKyAgICBleHBsaWNpdCBJbkJ5U3RhdHVzKFN0
dWJJbmZvU3VtbWFyeSBzdW1tYXJ5KQogICAgIHsKICAgICAgICAgc3dpdGNoIChzdW1tYXJ5KSB7
CiAgICAgICAgIGNhc2UgU3R1YkluZm9TdW1tYXJ5OjpOb0luZm9ybWF0aW9uOgpAQCAtODAsMTIg
Kzc4LDEyIEBAIHB1YmxpYzoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICB9CiAgICAgCi0gICAgc3RhdGljIEluQnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9j
ayosIElDU3RhdHVzTWFwJiwgQnl0ZWNvZGVJbmRleCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7
Ci0gICAgc3RhdGljIEluQnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayosIElDU3RhdHVz
TWFwJiwgQnl0ZWNvZGVJbmRleCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgRXhpdEZsYWcpOwot
ICAgIHN0YXRpYyBJbkJ5SWRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqIGJhc2VsaW5lQmxv
Y2ssIElDU3RhdHVzTWFwJiBiYXNlbGluZU1hcCwgSUNTdGF0dXNDb250ZXh0U3RhY2smIGNvbnRl
eHRTdGFjaywgQ29kZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7CisgICAgc3RhdGlj
IEluQnlTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqLCBJQ1N0YXR1c01hcCYsIEJ5dGVjb2Rl
SW5kZXgpOworICAgIHN0YXRpYyBJbkJ5U3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgSUNT
dGF0dXNNYXAmLCBCeXRlY29kZUluZGV4LCBFeGl0RmxhZyk7CisgICAgc3RhdGljIEluQnlTdGF0
dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIElDU3RhdHVzTWFwJiBiYXNl
bGluZU1hcCwgSUNTdGF0dXNDb250ZXh0U3RhY2smLCBDb2RlT3JpZ2luKTsKIAogI2lmIEVOQUJM
RShERkdfSklUKQotICAgIHN0YXRpYyBJbkJ5SWRTdGF0dXMgY29tcHV0ZUZvclN0dWJJbmZvKGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgU3RydWN0
dXJlU3R1YkluZm8qLCBDb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKKyAgICBz
dGF0aWMgSW5CeVN0YXR1cyBjb21wdXRlRm9yU3R1YkluZm8oY29uc3QgQ29uY3VycmVudEpTTG9j
a2VyJiwgQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyosIENvZGVP
cmlnaW4pOwogI2VuZGlmCiAKICAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dGU7IH0KQEAgLTEwMSw3ICs5OSw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgdGFrZXNTbG93UGF0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gVGFrZXNTbG93UGF0aDsgfQogICAgIAotICAg
IHZvaWQgbWVyZ2UoY29uc3QgSW5CeUlkU3RhdHVzJik7CisgICAgdm9pZCBtZXJnZShjb25zdCBJ
bkJ5U3RhdHVzJik7CiAKICAgICAvLyBBdHRlbXB0cyB0byByZWR1Y2UgdGhlIHNldCBvZiB2YXJp
YW50cyB0byBmaXQgdGhlIGdpdmVuIHN0cnVjdHVyZSBzZXQuIFRoaXMgbWF5IGJlIGFwcHJveGlt
YXRlLgogICAgIHZvaWQgZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNldCYpOwpAQCAtMTExLDkgKzEw
OSwxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKIAor
ICAgIENhY2hlYWJsZUlkZW50aWZpZXIgc2luZ2xlSWRlbnRpZmllcigpIGNvbnN0OworCiBwcml2
YXRlOgogI2lmIEVOQUJMRShERkdfSklUKQotICAgIHN0YXRpYyBJbkJ5SWRTdGF0dXMgY29tcHV0
ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2soY29uc3QgQ29uY3VycmVudEpTTG9j
a2VyJiwgVk0mLCBTdHJ1Y3R1cmVTdHViSW5mbyosIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwor
ICAgIHN0YXRpYyBJbkJ5U3RhdHVzIGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZl
ZWRiYWNrKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFZNJiwgU3RydWN0dXJlU3R1YkluZm8q
KTsKICNlbmRpZgogICAgIGJvb2wgYXBwZW5kVmFyaWFudChjb25zdCBJbkJ5SWRWYXJpYW50Jik7
CiAgICAgdm9pZCBzaHJpbmtUb0ZpdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCmluZGV4IDk5NWY0ODVjMjNmNi4uZjM4ZTQw
OTJlMTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3Jk
ZWRTdGF0dXNlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29y
ZGVkU3RhdHVzZXMuY3BwCkBAIC03MCwxMCArNzAsMTAgQEAgUHV0QnlJZFN0YXR1cyogUmVjb3Jk
ZWRTdGF0dXNlczo6YWRkUHV0QnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2lu
LAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUluQnlJZFN0YXR1cyogUmVjb3JkZWRTdGF0dXNl
czo6YWRkSW5CeUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIGNvbnN0IElu
QnlJZFN0YXR1cyYgc3RhdHVzKQorSW5CeVN0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkSW5C
eVN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBjb25zdCBJbkJ5U3RhdHVzJiBz
dGF0dXMpCiB7Ci0gICAgYXV0byBzdGF0dXNQdHIgPSBtYWtlVW5pcXVlPEluQnlJZFN0YXR1cz4o
c3RhdHVzKTsKLSAgICBJbkJ5SWRTdGF0dXMqIHJlc3VsdCA9IHN0YXR1c1B0ci5nZXQoKTsKKyAg
ICBhdXRvIHN0YXR1c1B0ciA9IG1ha2VVbmlxdWU8SW5CeVN0YXR1cz4oc3RhdHVzKTsKKyAgICBJ
bkJ5U3RhdHVzKiByZXN1bHQgPSBzdGF0dXNQdHIuZ2V0KCk7CiAgICAgaW5zLmFwcGVuZChzdGQ6
Om1ha2VfcGFpcihjb2RlT3JpZ2luLCBXVEZNb3ZlKHN0YXR1c1B0cikpKTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jl
Y29yZGVkU3RhdHVzZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRl
ZFN0YXR1c2VzLmgKaW5kZXggODQ4OTg3YjUyMmE1Li5iZDE1NzA1NDU3MzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuaApAQCAtMjks
NyArMjksNyBAQAogI2luY2x1ZGUgIkNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmgiCiAjaW5jbHVk
ZSAiRGVsZXRlQnlTdGF0dXMuaCIKICNpbmNsdWRlICJHZXRCeVN0YXR1cy5oIgotI2luY2x1ZGUg
IkluQnlJZFN0YXR1cy5oIgorI2luY2x1ZGUgIkluQnlTdGF0dXMuaCIKICNpbmNsdWRlICJQdXRC
eUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAiU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmgiCiAKQEAgLTQ5
LDcgKzQ5LDcgQEAgc3RydWN0IFJlY29yZGVkU3RhdHVzZXMgewogICAgIENhbGxMaW5rU3RhdHVz
KiBhZGRDYWxsTGlua1N0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiwgY29uc3QgQ2FsbExpbmtTdGF0
dXMmKTsKICAgICBHZXRCeVN0YXR1cyogYWRkR2V0QnlTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYs
IGNvbnN0IEdldEJ5U3RhdHVzJik7CiAgICAgUHV0QnlJZFN0YXR1cyogYWRkUHV0QnlJZFN0YXR1
cyhjb25zdCBDb2RlT3JpZ2luJiwgY29uc3QgUHV0QnlJZFN0YXR1cyYpOwotICAgIEluQnlJZFN0
YXR1cyogYWRkSW5CeUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mLCBjb25zdCBJbkJ5SWRTdGF0
dXMmKTsKKyAgICBJbkJ5U3RhdHVzKiBhZGRJbkJ5U3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mLCBj
b25zdCBJbkJ5U3RhdHVzJik7CiAgICAgRGVsZXRlQnlTdGF0dXMqIGFkZERlbGV0ZUJ5U3RhdHVz
KGNvbnN0IENvZGVPcmlnaW4mLCBjb25zdCBEZWxldGVCeVN0YXR1cyYpOwogICAgIENoZWNrUHJp
dmF0ZUJyYW5kU3RhdHVzKiBhZGRDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyhjb25zdCBDb2RlT3Jp
Z2luJiwgY29uc3QgQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXMmKTsKICAgICBTZXRQcml2YXRlQnJh
bmRTdGF0dXMqIGFkZFNldFByaXZhdGVCcmFuZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiwgY29u
c3QgU2V0UHJpdmF0ZUJyYW5kU3RhdHVzJik7CkBAIC03Nyw3ICs3Nyw3IEBAIHN0cnVjdCBSZWNv
cmRlZFN0YXR1c2VzIHsKICAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5p
cXVlX3B0cjxDYWxsTGlua1N0YXR1cz4+PiBjYWxsczsKICAgICBWZWN0b3I8c3RkOjpwYWlyPENv
ZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxHZXRCeVN0YXR1cz4+PiBnZXRzOwogICAgIFZlY3Rv
cjxzdGQ6OnBhaXI8Q29kZU9yaWdpbiwgc3RkOjp1bmlxdWVfcHRyPFB1dEJ5SWRTdGF0dXM+Pj4g
cHV0czsKLSAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxJ
bkJ5SWRTdGF0dXM+Pj4gaW5zOworICAgIFZlY3RvcjxzdGQ6OnBhaXI8Q29kZU9yaWdpbiwgc3Rk
Ojp1bmlxdWVfcHRyPEluQnlTdGF0dXM+Pj4gaW5zOwogICAgIFZlY3RvcjxzdGQ6OnBhaXI8Q29k
ZU9yaWdpbiwgc3RkOjp1bmlxdWVfcHRyPERlbGV0ZUJ5U3RhdHVzPj4+IGRlbGV0ZXM7CiAgICAg
VmVjdG9yPHN0ZDo6cGFpcjxDb2RlT3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8Q2hlY2tQcml2YXRl
QnJhbmRTdGF0dXM+Pj4gY2hlY2tQcml2YXRlQnJhbmRzOwogICAgIFZlY3RvcjxzdGQ6OnBhaXI8
Q29kZU9yaWdpbiwgc3RkOjp1bmlxdWVfcHRyPFNldFByaXZhdGVCcmFuZFN0YXR1cz4+PiBzZXRQ
cml2YXRlQnJhbmRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
dHJ1Y3R1cmVTdHViSW5mby5jcHAKaW5kZXggYzhlNmJjNjNhMzZhLi5hZmFlNGU4NDJmYzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5m
by5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJ
bmZvLmNwcApAQCAtMjcyLDggKzI3MiwxMSBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjpyZXNl
dChjb25zdCBDb25jdXJyZW50SlNMb2NrZXJCYXNlJiBsb2NrZXIsIENvZGVCbG9jayogYwogICAg
IGNhc2UgQWNjZXNzVHlwZTo6UHV0OgogICAgICAgICByZXNldFB1dEJ5SUQoY29kZUJsb2NrLCAq
dGhpcyk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQWNjZXNzVHlwZTo6SW46Ci0gICAgICAg
IHJlc2V0SW5CeUlEKGNvZGVCbG9jaywgKnRoaXMpOworICAgIGNhc2UgQWNjZXNzVHlwZTo6SW5C
eUlkOgorICAgICAgICByZXNldEluQnkoY29kZUJsb2NrLCAqdGhpcywgSW5CeUtpbmQ6Ok5vcm1h
bCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNjZXNzVHlwZTo6SW5CeVZhbDoKKyAgICAg
ICAgcmVzZXRJbkJ5KGNvZGVCbG9jaywgKnRoaXMsIEluQnlLaW5kOjpOb3JtYWxCeVZhbCk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNzVHlwZTo6SW5zdGFuY2VPZjoKICAgICAgICAg
cmVzZXRJbnN0YW5jZU9mKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKaW5kZXggODgyNTY4YzI2ZWFkLi5hOTQwNWRjZWI5
ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVT
dHViSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVT
dHViSW5mby5oCkBAIC01NSw3ICs1NSw4IEBAIGVudW0gY2xhc3MgQWNjZXNzVHlwZSA6IGludDhf
dCB7CiAgICAgVHJ5R2V0QnlJZCwKICAgICBHZXRCeVZhbCwKICAgICBQdXQsCi0gICAgSW4sCisg
ICAgSW5CeUlkLAorICAgIEluQnlWYWwsCiAgICAgSW5zdGFuY2VPZiwKICAgICBEZWxldGVCeUlE
LAogICAgIERlbGV0ZUJ5VmFsLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IGQ2MDI1MWJlMmRmNS4u
MjgxZmE5MGYzMDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC00NDM5LDcgKzQ0MzksNyBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0
cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CiAg
ICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6
Ci0gICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJJbkJ5U3RhdHVz
OgogICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJDaGVja1By
aXZhdGVCcmFuZFN0YXR1czoKICAgICBjYXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1czoK
QEAgLTQ2MTAsMTAgKzQ2MTAsMTAgQEAgdm9pZCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZmlsdGVySUNTdGF0dXMoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgICAgICAKLSAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czogeworICAgIGNhc2Ug
RmlsdGVySW5CeVN0YXR1czogewogICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5v
ZGUobm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBpZiAodmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5p
dGUoKSkKLSAgICAgICAgICAgIG5vZGUtPmluQnlJZFN0YXR1cygpLT5maWx0ZXIodmFsdWUubV9z
dHJ1Y3R1cmUudG9TdHJ1Y3R1cmVTZXQoKSk7CisgICAgICAgICAgICBub2RlLT5pbkJ5U3RhdHVz
KCktPmZpbHRlcih2YWx1ZS5tX3N0cnVjdHVyZS50b1N0cnVjdHVyZVNldCgpKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCmluZGV4IDZmODE3Mzg4
YWMzOC4uYzIxNmEzOTZkNzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKQEAgLTQwNCw3ICs0MDQs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAg
ICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICAgICAgICAg
IGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6Ci0gICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJJ
bkJ5SWRTdGF0dXM6CisgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5U3RhdHVzOgogICAg
ICAgICAgICAgICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAgICAgICAgICAg
Y2FzZSBGaWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1czoKICAgICAgICAgICAgICAgICBjYXNl
IEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1czoKQEAgLTEyNjcsNyArMTI2Nyw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAgICAgICAgICAg
ICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0
ZXJDYWxsTGlua1N0YXR1czoKLSAgICAgICAgICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1
czoKKyAgICAgICAgICAgICAgICBjYXNlIEZpbHRlckluQnlTdGF0dXM6CiAgICAgICAgICAgICAg
ICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRl
ckNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyU2V0
UHJpdmF0ZUJyYW5kU3RhdHVzOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDcwNzllNTJhZGE4Yi4uYzFkNmExMjc4ODQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAt
NTUsNyArNTUsNyBAQAogI2luY2x1ZGUgIkdldEJ5U3RhdHVzLmgiCiAjaW5jbHVkZSAiR2V0dGVy
U2V0dGVyLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgotI2luY2x1ZGUgIkluQnlJZFN0YXR1cy5oIgor
I2luY2x1ZGUgIkluQnlTdGF0dXMuaCIKICNpbmNsdWRlICJJbnN0YW5jZU9mU3RhdHVzLmgiCiAj
aW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgpAQCAt
MjYzLDcgKzI2Myw5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGhhbmRsZURlbGV0ZUJ5SWQoCiAg
ICAgICAgIFZpcnR1YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwgTm9kZSogYmFzZSwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgRGVsZXRlQnlTdGF0dXMsIEVD
TUFNb2RlKTsKLSAgICAKKworICAgIHZvaWQgaGFuZGxlSW5CeUlkKFZpcnR1YWxSZWdpc3RlciBk
ZXN0aW5hdGlvbiwgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSW5CeVN0YXR1cyk7
CisKICAgICAvLyBFaXRoZXIgcmVnaXN0ZXIgYSB3YXRjaHBvaW50IG9yIGVtaXQgYSBjaGVjayBm
b3IgdGhpcyBjb25kaXRpb24uIFJldHVybnMgZmFsc2UgaWYgdGhlCiAgICAgLy8gY29uZGl0aW9u
IG5vIGxvbmdlciBob2xkcywgYW5kIHRoZXJlZm9yZSBubyByZWFzb25hYmxlIGNoZWNrIGNhbiBi
ZSBlbWl0dGVkLgogICAgIGJvb2wgY2hlY2soY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24m
KTsKQEAgLTQ5MjgsNiArNDkzMCwzNSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVEZWxl
dGVCeUlkKAogICAgIHJldHVybjsKIH0KIAordm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5C
eUlkKFZpcnR1YWxSZWdpc3RlciBkZXN0aW5hdGlvbiwgTm9kZSogYmFzZSwgQ2FjaGVhYmxlSWRl
bnRpZmllciBpZGVudGlmaWVyLCBJbkJ5U3RhdHVzIHN0YXR1cykKK3sKKyAgICBpZiAoc3RhdHVz
LmlzU2ltcGxlKCkgJiYgT3B0aW9uczo6dXNlQWNjZXNzSW5saW5pbmcoKSkgeworICAgICAgICBi
b29sIGFsbE9LID0gdHJ1ZTsKKyAgICAgICAgTWF0Y2hTdHJ1Y3R1cmVEYXRhKiBkYXRhID0gbV9n
cmFwaC5tX21hdGNoU3RydWN0dXJlRGF0YS5hZGQoKTsKKyAgICAgICAgZm9yIChjb25zdCBJbkJ5
SWRWYXJpYW50JiB2YXJpYW50IDogc3RhdHVzLnZhcmlhbnRzKCkpIHsKKyAgICAgICAgICAgIGlm
ICghY2hlY2sodmFyaWFudC5jb25kaXRpb25TZXQoKSkpIHsKKyAgICAgICAgICAgICAgICBhbGxP
SyA9IGZhbHNlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6IHZhcmlhbnQuc3RydWN0dXJlU2V0KCkp
IHsKKyAgICAgICAgICAgICAgICBNYXRjaFN0cnVjdHVyZVZhcmlhbnQgbWF0Y2hWYXJpYW50Owor
ICAgICAgICAgICAgICAgIG1hdGNoVmFyaWFudC5zdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVy
U3RydWN0dXJlKHN0cnVjdHVyZSk7CisgICAgICAgICAgICAgICAgbWF0Y2hWYXJpYW50LnJlc3Vs
dCA9IHZhcmlhbnQuaXNIaXQoKTsKKworICAgICAgICAgICAgICAgIGRhdGEtPnZhcmlhbnRzLmFw
cGVuZChXVEZNb3ZlKG1hdGNoVmFyaWFudCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisK
KyAgICAgICAgaWYgKGFsbE9LKSB7CisgICAgICAgICAgICBhZGRUb0dyYXBoKEZpbHRlckluQnlT
dGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzKCkuYWRkSW5CeVN0
YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBzdGF0dXMpKSwgYmFzZSk7CisgICAgICAgICAgICBz
ZXQoZGVzdGluYXRpb24sIGFkZFRvR3JhcGgoTWF0Y2hTdHJ1Y3R1cmUsIE9wSW5mbyhkYXRhKSwg
YmFzZSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgc2V0
KGRlc3RpbmF0aW9uLCBhZGRUb0dyYXBoKEluQnlJZCwgT3BJbmZvKGlkZW50aWZpZXIpLCBiYXNl
KSk7Cit9CisKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmVtaXRQdXRCeUlkKAogICAgIE5vZGUqIGJh
c2UsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgTm9kZSogdmFsdWUsIGNvbnN0IFB1
dEJ5SWRTdGF0dXMmIHB1dEJ5SWRTdGF0dXMsIGJvb2wgaXNEaXJlY3QsIEVDTUFNb2RlIGVjbWFN
b2RlKQogewpAQCAtODIxMiw0OSArODI0Myw1MyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJz
ZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogCiAgICAgICAgIGNhc2Ugb3BfaW5fYnlfdmFsOiB7CiAg
ICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEluQnlW
YWw+KCk7Ci0gICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0QXJyYXlNb2RlKGJ5
dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9hcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkKTsK
LSAgICAgICAgICAgIHNldChieXRlY29kZS5tX2RzdCwgYWRkVG9HcmFwaChJbkJ5VmFsLCBPcElu
Zm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgZ2V0KGJ5dGVjb2RlLm1fYmFzZSksIGdldChieXRlY29k
ZS5tX3Byb3BlcnR5KSkpOwotICAgICAgICAgICAgTkVYVF9PUENPREUob3BfaW5fYnlfdmFsKTsK
LSAgICAgICAgfQotCi0gICAgICAgIGNhc2Ugb3BfaW5fYnlfaWQ6IHsKLSAgICAgICAgICAgIGF1
dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5CeUlkPigpOwogICAgICAg
ICAgICAgTm9kZSogYmFzZSA9IGdldChieXRlY29kZS5tX2Jhc2UpOwotICAgICAgICAgICAgdW5z
aWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJl
bWFwW2J5dGVjb2RlLm1fcHJvcGVydHldOwotICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwq
IHVpZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKVtpZGVudGlmaWVyTnVtYmVyXTsKKyAgICAgICAg
ICAgIE5vZGUqIHByb3BlcnR5ID0gZ2V0KGJ5dGVjb2RlLm1fcHJvcGVydHkpOworICAgICAgICAg
ICAgYm9vbCBjb21waWxlZEFzSW5CeUlkID0gZmFsc2U7CiAKLSAgICAgICAgICAgIEluQnlJZFN0
YXR1cyBzdGF0dXMgPSBJbkJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCisgICAgICAgICAgICBJbkJ5
U3RhdHVzIHN0YXR1cyA9IEluQnlTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgICAgICAgICAg
bV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLAogICAgICAgICAgICAgICAgIG1faW5s
aW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2ssCi0gICAgICAgICAg
ICAgICAgY3VycmVudENvZGVPcmlnaW4oKSwgdWlkKTsKLQotICAgICAgICAgICAgaWYgKHN0YXR1
cy5pc1NpbXBsZSgpICYmIE9wdGlvbnM6OnVzZUFjY2Vzc0lubGluaW5nKCkpIHsKLSAgICAgICAg
ICAgICAgICBib29sIGFsbE9LID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBNYXRjaFN0cnVjdHVy
ZURhdGEqIGRhdGEgPSBtX2dyYXBoLm1fbWF0Y2hTdHJ1Y3R1cmVEYXRhLmFkZCgpOwotICAgICAg
ICAgICAgICAgIGZvciAoY29uc3QgSW5CeUlkVmFyaWFudCYgdmFyaWFudCA6IHN0YXR1cy52YXJp
YW50cygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghY2hlY2sodmFyaWFudC5jb25kaXRp
b25TZXQoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFsbE9LID0gZmFsc2U7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJlIDogdmFyaWFudC5zdHJ1Y3R1
cmVTZXQoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2hTdHJ1Y3R1cmVWYXJpYW50
IG1hdGNoVmFyaWFudDsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoVmFyaWFudC5zdHJ1
Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBtYXRjaFZhcmlhbnQucmVzdWx0ID0gdmFyaWFudC5pc0hpdCgpOworICAg
ICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCkpOwogCi0gICAgICAgICAgICAgICAgICAg
ICAgICBkYXRhLT52YXJpYW50cy5hcHBlbmQoV1RGTW92ZShtYXRjaFZhcmlhbnQpKTsKLSAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghbV9p
bmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwg
QmFkSWRlbnQpCisgICAgICAgICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFBy
b2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZFR5cGUpCisgICAgICAgICAgICAg
ICAgJiYgIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJy
ZW50SW5kZXgsIEJhZENvbnN0YW50VmFsdWUpKSB7CiAKLSAgICAgICAgICAgICAgICBpZiAoYWxs
T0spIHsKLSAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJJbkJ5SWRTdGF0dXMs
IE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzKCkuYWRkSW5CeUlkU3RhdHVz
KGN1cnJlbnRDb2RlT3JpZ2luKCksIHN0YXR1cykpLCBiYXNlKTsKKyAgICAgICAgICAgICAgICBp
ZiAoQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gc3RhdHVzLnNpbmdsZUlkZW50aWZp
ZXIoKSkgeworICAgICAgICAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gaWRl
bnRpZmllci51aWQoKTsKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5pZGVudGlmaWVycygp
LmVuc3VyZSh1aWQpOworICAgICAgICAgICAgICAgICAgICBpZiAoaWRlbnRpZmllci5pc0NlbGwo
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3plbiA9IG1fZ3Jh
cGguZnJlZXplU3Ryb25nKGlkZW50aWZpZXIuY2VsbCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChpZGVudGlmaWVyLmlzU3ltYm9sQ2VsbCgpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tJc0NvbnN0YW50LCBPcEluZm8oZnJvemVuKSwgcHJvcGVy
dHkpOworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tJZGVudCwgT3BJbmZvKHVpZCksIHByb3BlcnR5KTsKKyAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKENoZWNrSWRlbnQsIE9wSW5mbyh1aWQpLCBwcm9wZXJ0eSk7CiAKLSAgICAgICAgICAgICAg
ICAgICAgTm9kZSogbWF0Y2ggPSBhZGRUb0dyYXBoKE1hdGNoU3RydWN0dXJlLCBPcEluZm8oZGF0
YSksIGJhc2UpOwotICAgICAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIG1hdGNo
KTsKLSAgICAgICAgICAgICAgICAgICAgTkVYVF9PUENPREUob3BfaW5fYnlfaWQpOworICAgICAg
ICAgICAgICAgICAgICBoYW5kbGVJbkJ5SWQoYnl0ZWNvZGUubV9kc3QsIGJhc2UsIGlkZW50aWZp
ZXIsIHN0YXR1cyk7CisgICAgICAgICAgICAgICAgICAgIGNvbXBpbGVkQXNJbkJ5SWQgPSB0cnVl
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgc2V0KGJ5
dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKEluQnlJZCwgT3BJbmZvKENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2lubGluZVN0YWNrVG9w
LT5tX3Byb2ZpbGVkQmxvY2ssIHVpZCkpLCBiYXNlKSk7CisgICAgICAgICAgICBpZiAoIWNvbXBp
bGVkQXNJbkJ5SWQpIHsKKyAgICAgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0
QXJyYXlNb2RlKGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9hcnJheVByb2ZpbGUsIEFy
cmF5OjpSZWFkKTsKKyAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3Jh
cGgoSW5CeVZhbCwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIGJhc2UsIHByb3BlcnR5KSk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9pbl9ieV92YWwpOwor
ICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9pbl9ieV9pZDogeworICAgICAgICAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJbkJ5SWQ+KCk7CisgICAgICAg
ICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1fYmFzZSk7CisgICAgICAgICAgICB1bnNp
Z25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9pbmxpbmVTdGFja1RvcC0+bV9pZGVudGlmaWVyUmVt
YXBbYnl0ZWNvZGUubV9wcm9wZXJ0eV07CisgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCog
dWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1iZXJdOworICAgICAgICAg
ICAgSW5CeVN0YXR1cyBzdGF0dXMgPSBJbkJ5U3RhdHVzOjpjb21wdXRlRm9yKAorICAgICAgICAg
ICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKKyAgICAgICAgICAgICAg
ICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0YWNrLAorICAg
ICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCkpOworICAgICAgICAgICAgaGFuZGxlSW5C
eUlkKGJ5dGVjb2RlLm1fZHN0LCBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9t
SWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJs
b2NrLCB1aWQpLCBzdGF0dXMpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfaW5fYnlfaWQp
OwogICAgICAgICB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaAppbmRleCBkY2E2YzRhZjI5YTkuLjAxZGE1NmRlMThmOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTUwNCw3ICs1MDQsNyBAQCB2b2lkIGNs
b2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVh
ZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CiAgICAgY2Fz
ZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6Ci0gICAg
Y2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJJbkJ5U3RhdHVzOgogICAg
IGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZhdGVC
cmFuZFN0YXR1czoKICAgICBjYXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1czoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAKaW5k
ZXggNmZkNGE3NmI2MThmLi44NmEzZDA3NjY0ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCkBAIC04Miw3ICs4Miw3IEBAIGJv
b2wgY2xvYmJlcnNFeGl0U3RhdGUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2Ug
RmlsdGVyQ2FsbExpbmtTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAgICBj
YXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6Ci0gICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6Cisg
ICAgY2FzZSBGaWx0ZXJJbkJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6
CiAgICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1czoKICAgICBjYXNlIEZpbHRl
clNldFByaXZhdGVCcmFuZFN0YXR1czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dD
LmNwcAppbmRleCAwMjg0YTdlMzA0YTAuLjQxMGMzNDUwM2ZmNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIGJvb2wgZG9lc0dDKEdy
YXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgog
ICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVz
OgotICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVySW5CeVN0YXR1
czoKICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyQ2hlY2tQ
cml2YXRlQnJhbmRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCA4YTA5
ZmI0NTE4ODcuLmM0NmE1ZmYxM2Q2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZpeHVwUGhhc2UuY3BwCkBAIC0yODgyLDcgKzI4ODIsNyBAQCBwcml2YXRlOgogICAgICAgICBj
YXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVz
OgogICAgICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6Ci0gICAgICAgIGNhc2UgRmlsdGVy
SW5CeUlkU3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRlckluQnlTdGF0dXM6CiAgICAgICAgIGNh
c2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRl
QnJhbmRTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVyU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAppbmRleCAyNWFiOWMzMzk1MWYuLjEx
MTAwODI2MDM5OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFw
aC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKQEAgLTM4
Myw4ICszODMsOCBAQCB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IGNo
YXIqIHByZWZpeFN0ciwgTm9kZSogbm9kZSwgRHVtcENvbnRleAogICAgICAgICBvdXQucHJpbnQo
Y29tbWEsICpub2RlLT5jYWxsTGlua1N0YXR1cygpKTsKICAgICBpZiAobm9kZS0+aGFzR2V0QnlT
dGF0dXMoKSkKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAqbm9kZS0+Z2V0QnlTdGF0dXMoKSk7
Ci0gICAgaWYgKG5vZGUtPmhhc0luQnlJZFN0YXR1cygpKQotICAgICAgICBvdXQucHJpbnQoY29t
bWEsICpub2RlLT5pbkJ5SWRTdGF0dXMoKSk7CisgICAgaWYgKG5vZGUtPmhhc0luQnlTdGF0dXMo
KSkKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAqbm9kZS0+aW5CeVN0YXR1cygpKTsKICAgICBp
ZiAobm9kZS0+aGFzUHV0QnlJZFN0YXR1cygpKQogICAgICAgICBvdXQucHJpbnQoY29tbWEsICpu
b2RlLT5wdXRCeUlkU3RhdHVzKCkpOwogICAgIGlmIChub2RlLT5pc0p1bXAoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKaW5kZXggZGRiYjZkYjRjMGM0
Li45MTBjZjEzOTlmYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuY3BwCkBAIC0yNTUsNiArMjU1LDcgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5r
QnVmZmVyJiBsaW5rQnVmZmVyKQogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZGVsQnlJZHMs
IGxpbmtCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZGVsQnlWYWxzLCBsaW5r
QnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2luQnlJZHMsIGxpbmtCdWZmZXIp
OworICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1faW5CeVZhbHMsIGxpbmtCdWZmZXIpOwogICAg
IGZpbmFsaXplSW5saW5lQ2FjaGVzKG1faW5zdGFuY2VPZnMsIGxpbmtCdWZmZXIpOwogICAgIGZp
bmFsaXplSW5saW5lQ2FjaGVzKG1fcHJpdmF0ZUJyYW5kQWNjZXNzZXMsIGxpbmtCdWZmZXIpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKaW5kZXggOGFkZWFk
NTBmNDU1Li4xODc1NDNkMTZlZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvbXBpbGVyLmgKQEAgLTIxNCw2ICsyMTQsMTEgQEAgcHVibGljOgogICAgICAgICBtX2luQnlJ
ZHMuYXBwZW5kKElubGluZUNhY2hlV3JhcHBlcjxKSVRJbkJ5SWRHZW5lcmF0b3I+KGdlbiwgc2xv
d1BhdGgpKTsKICAgICB9CiAKKyAgICB2b2lkIGFkZEluQnlWYWwoY29uc3QgSklUSW5CeVZhbEdl
bmVyYXRvciYgZ2VuLCBTbG93UGF0aEdlbmVyYXRvciogc2xvd1BhdGgpCisgICAgeworICAgICAg
ICBtX2luQnlWYWxzLmFwcGVuZChJbmxpbmVDYWNoZVdyYXBwZXI8SklUSW5CeVZhbEdlbmVyYXRv
cj4oZ2VuLCBzbG93UGF0aCkpOworICAgIH0KKwogICAgIHZvaWQgYWRkUHJpdmF0ZUJyYW5kQWNj
ZXNzKGNvbnN0IEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvciYgZ2VuLCBTbG93UGF0aEdl
bmVyYXRvciogc2xvd1BhdGgpCiAgICAgewogICAgICAgICBtX3ByaXZhdGVCcmFuZEFjY2Vzc2Vz
LmFwcGVuZChJbmxpbmVDYWNoZVdyYXBwZXI8SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9y
PihnZW4sIHNsb3dQYXRoKSk7CkBAIC0zNTMsNiArMzU4LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0
b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVERlbEJ5SWRHZW5lcmF0b3I+LCA0PiBtX2RlbEJ5SWRz
OwogICAgIFZlY3RvcjxJbmxpbmVDYWNoZVdyYXBwZXI8SklURGVsQnlWYWxHZW5lcmF0b3I+LCA0
PiBtX2RlbEJ5VmFsczsKICAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVEluQnlJZEdl
bmVyYXRvcj4sIDQ+IG1faW5CeUlkczsKKyAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJ
VEluQnlWYWxHZW5lcmF0b3I+LCA0PiBtX2luQnlWYWxzOwogICAgIFZlY3RvcjxJbmxpbmVDYWNo
ZVdyYXBwZXI8SklUSW5zdGFuY2VPZkdlbmVyYXRvcj4sIDQ+IG1faW5zdGFuY2VPZnM7CiAgICAg
VmVjdG9yPElubGluZUNhY2hlV3JhcHBlcjxKSVRQcml2YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3I+
LCA0PiBtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzOwogICAgIFZlY3RvcjxKU0NhbGxSZWNvcmQsIDQ+
IG1fanNDYWxsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5
RXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCmluZGV4
IGRjMzcyYzcwZmU4OC4uZjlmMjY1ZTA0ZTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR01heUV4aXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTWF5RXhpdC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBFeGl0TW9kZSBtYXlFeGl0SW1wbChH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIFN0YXRlVHlwZSYgc3RhdGUpCiAgICAgY2FzZSBGaWx0
ZXJDYWxsTGlua1N0YXR1czoKICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgIGNhc2Ug
RmlsdGVyUHV0QnlJZFN0YXR1czoKLSAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICBj
YXNlIEZpbHRlckluQnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAg
ICBjYXNlIEZpbHRlckNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOgogICAgIGNhc2UgRmlsdGVyU2V0
UHJpdmF0ZUJyYW5kU3RhdHVzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCAx
Njk2MTdiZWFhZmYuLjNjOTE1Yzk3OWE4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmgKQEAgLTMxMDksMTUgKzMxMDksMTUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9vcElu
Zm8uYXM8R2V0QnlTdGF0dXMqPigpOwogICAgIH0KICAgICAKLSAgICBib29sIGhhc0luQnlJZFN0
YXR1cygpCisgICAgYm9vbCBoYXNJbkJ5U3RhdHVzKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBv
cCgpID09IEZpbHRlckluQnlJZFN0YXR1czsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gRmlsdGVy
SW5CeVN0YXR1czsKICAgICB9CiAgICAgCi0gICAgSW5CeUlkU3RhdHVzKiBpbkJ5SWRTdGF0dXMo
KQorICAgIEluQnlTdGF0dXMqIGluQnlTdGF0dXMoKQogICAgIHsKLSAgICAgICAgQVNTRVJUKGhh
c0luQnlJZFN0YXR1cygpKTsKLSAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPEluQnlJZFN0YXR1
cyo+KCk7CisgICAgICAgIEFTU0VSVChoYXNJbkJ5U3RhdHVzKCkpOworICAgICAgICByZXR1cm4g
bV9vcEluZm8uYXM8SW5CeVN0YXR1cyo+KCk7CiAgICAgfQogICAgIAogICAgIGJvb2wgaGFzUHV0
QnlJZFN0YXR1cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXgg
MjlmMzg4YWZjZDM4Li5kYWIzZTRmYTljY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmgKQEAgLTU0Niw3ICs1NDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CiAgICAgLyogVXNlZCB0byBwcm92aWRlIGZlZWRiYWNrIHRvIHRoZSBJQyBwcm9maWxl
ci4gKi8gXAogICAgIG1hY3JvKEZpbHRlckNhbGxMaW5rU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRl
KSBcCiAgICAgbWFjcm8oRmlsdGVyR2V0QnlTdGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKLSAg
ICBtYWNybyhGaWx0ZXJJbkJ5SWRTdGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNy
byhGaWx0ZXJJbkJ5U3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oRmlsdGVy
UHV0QnlJZFN0YXR1cywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEZpbHRlckRlbGV0
ZUJ5U3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oRmlsdGVyQ2hlY2tQcml2
YXRlQnJhbmRTdGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2Uu
Y3BwCmluZGV4IDlkMTkxZmY5NWM1NC4uNjY3ODM1NTVkZjIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQ
aGFzZS5jcHAKQEAgLTEyNTksNyArMTI1OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgRmls
dGVyQ2FsbExpbmtTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAg
ICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKLSAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRT
dGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVySW5CeVN0YXR1czoKICAgICAgICAgY2FzZSBGaWx0
ZXJEZWxldGVCeVN0YXR1czoKICAgICAgICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0
YXR1czoKICAgICAgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6CkBAIC0yNjE2
LDcgKzI2MTYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyQ2FsbExp
bmtTdGF0dXM6CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAgICAg
ICAgICAgICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6Ci0gICAgICAgICAgICAgICAgY2Fz
ZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5U3Rh
dHVzOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAg
ICAgICAgICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1czoKICAgICAgICAgICAg
ICAgICBjYXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1czoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHAKaW5kZXggNWI1ODBiYjU0M2MxLi5iYTBkM2UzNmMxZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwCkBAIC0xNDUxLDcgKzE0NTEsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEZpbHRlckNh
bGxMaW5rU3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgICAgICBj
YXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6Ci0gICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVz
OgorICAgICAgICBjYXNlIEZpbHRlckluQnlTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVyRGVs
ZXRlQnlTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6
CiAgICAgICAgIGNhc2UgRmlsdGVyU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCAyODEzMTdhM2M1MzAuLjYz
YWVlMjgwZjRlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZl
VG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVj
dXRlLmgKQEAgLTM2MSw3ICszNjEsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0
ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNh
c2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAg
ICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6Ci0gICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6
CisgICAgY2FzZSBGaWx0ZXJJbkJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0
dXM6CiAgICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1czoKICAgICBjYXNlIEZp
bHRlclNldFByaXZhdGVCcmFuZFN0YXR1czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggMGFmNWRkOTgzOWM4Li45MDU5NzI5OTUzZTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CkBAIC0xMjg2LDE4ICsxMjg2LDMxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbkJ5
VmFsKE5vZGUqIG5vZGUpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBu
b2RlLT5jaGlsZDEoKSk7CiAgICAgSlNWYWx1ZU9wZXJhbmQga2V5KHRoaXMsIG5vZGUtPmNoaWxk
MigpKTsKKyAgICBKU1ZhbHVlUmVnc1RlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGtleSk7
CiAKICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7Ci0gICAgSlNWYWx1ZVJlZ3MgcmVn
cyA9IGtleS5qc1ZhbHVlUmVncygpOworICAgIEpTVmFsdWVSZWdzIGtleVJlZ3MgPSBrZXkuanNW
YWx1ZVJlZ3MoKTsKKyAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsK
IAogICAgIGJhc2UudXNlKCk7CiAgICAga2V5LnVzZSgpOwogCi0gICAgZmx1c2hSZWdpc3RlcnMo
KTsKLSAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKLSAgICBK
U1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbkluQnlWYWwsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBiYXNlR1BSLCByZWdzKTsKLSAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAgIENvZGVP
cmlnaW4gY29kZU9yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1hbnRpYzsKKyAgICBDYWxsU2l0ZUlu
ZGV4IGNhbGxTaXRlID0gbV9qaXQucmVjb3JkQ2FsbFNpdGVBbmRHZW5lcmF0ZUV4Y2VwdGlvbkhh
bmRsaW5nT1NSRXhpdElmTmVlZGVkKGNvZGVPcmlnaW4sIG1fc3RyZWFtLT5zaXplKCkpOworICAg
IFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnMgPSB0aGlzLT51c2VkUmVnaXN0ZXJzKCk7CisgICAg
SklUSW5CeVZhbEdlbmVyYXRvciBnZW4oCisgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2Rl
T3JpZ2luLCBjYWxsU2l0ZSwgdXNlZFJlZ2lzdGVycywKKyAgICAgICAgSlNWYWx1ZVJlZ3M6OnBh
eWxvYWRPbmx5KGJhc2VHUFIpLCBrZXlSZWdzLCByZXN1bHRSZWdzKTsKKyAgICBnZW4uZ2VuZXJh
dGVGYXN0UGF0aChtX2ppdCk7CisKKyAgICBhdXRvIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAor
ICAgICAgICBnZW4uc2xvd1BhdGhKdW1wKCksIHRoaXMsIG9wZXJhdGlvbkluQnlWYWxPcHRpbWl6
ZSwKKyAgICAgICAgTmVlZFRvU3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNr
TmVlZGVkLAorICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
Z2VuLnN0dWJJbmZvKCksIG51bGxwdHIsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIp
LCBrZXlSZWdzKTsKKworICAgIG1faml0LmFkZEluQnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7
CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGTW92ZShzbG93UGF0aCkpOworCiAgICAgYmxl
c3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0UmVncy5wYXlsb2FkR1BSKCksIG5vZGUsIFVzZUNoaWxk
cmVuQ2FsbGVkRXhwbGljaXRseSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IGYxMmY4NmYwZDY4OS4uNjNj
YTNmZDJlMWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTQyNzEsNyArNDI3MSw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVz
OgogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3Rh
dHVzOgotICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVySW5CeVN0
YXR1czoKICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyQ2hl
Y2tQcml2YXRlQnJhbmRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0
dXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAppbmRleCBlZjhiYTM4NjhlODUuLmNkOWQxN2E2NDg3NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC01NzA1LDcgKzU3
MDUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2Fz
ZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAg
IGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKLSAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoK
KyAgICBjYXNlIEZpbHRlckluQnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1
czoKICAgICBjYXNlIEZpbHRlckNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOgogICAgIGNhc2UgRmls
dGVyU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAKaW5kZXggMTA2MWI3M2YzMDE3
Li5mZGE2NGQzNWRhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcApAQCAtMTk4LDcgKzE5OCw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgICAgICAgICAgY2Fz
ZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0
YXR1czoKLSAgICAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgICAgICAgICAg
Y2FzZSBGaWx0ZXJJbkJ5U3RhdHVzOgogICAgICAgICAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0
YXR1czoKICAgICAgICAgICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6CiAg
ICAgICAgICAgICBjYXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1czoKQEAgLTQyMyw3ICs0
MjMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAg
ICAgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAgICAgICAgIGNhc2UgRmls
dGVyQ2FsbExpbmtTdGF0dXM6Ci0gICAgICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoK
KyAgICAgICAgICAgIGNhc2UgRmlsdGVySW5CeVN0YXR1czoKICAgICAgICAgICAgIGNhc2UgRmls
dGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAgICAgICBjYXNlIEZpbHRlckNoZWNrUHJpdmF0ZUJy
YW5kU3RhdHVzOgogICAgICAgICAgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXgg
NGY2ZTAzN2NiMTFjLi4xOTg4ZTMyYTc1YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTQwOSw3ICs0MDksNyBAQCBpbmxpbmUgQ2FwYWJp
bGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEZpbHRlckNhbGxMaW5r
U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRC
eUlkU3RhdHVzOgotICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVy
SW5CeVN0YXR1czoKICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgIGNhc2UgRmls
dGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJh
bmRTdGF0dXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKaW5kZXggMjNiZTdlNzc1ZDNhLi5kNzhkN2UzYWE5MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTE2NTIsNyArMTY1Miw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CiAgICAgICAgIGNhc2Ug
RmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKLSAg
ICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVySW5CeVN0
YXR1czoKICAgICAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICAgICAgY2FzZSBG
aWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1czoKICAgICAgICAgY2FzZSBGaWx0ZXJTZXRQcml2
YXRlQnJhbmRTdGF0dXM6CkBAIC0xMjIxMywxMyArMTIyMTMsNyBAQCBwcml2YXRlOgogICAgICAg
ICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKICAgICAgICAgc2V0SlNW
YWx1ZShtX291dC5waGkoSW50NjQsIHJlc3VsdHMpKTsKICAgICB9Ci0gICAgCi0gICAgdm9pZCBj
b21waWxlSW5CeVZhbCgpCi0gICAgewotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwotICAgICAg
ICBzZXRKU1ZhbHVlKHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uSW5CeVZhbCwgd2Vha1BvaW50ZXIo
Z2xvYmFsT2JqZWN0KSwgbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbG93SlNWYWx1ZShtX25v
ZGUtPmNoaWxkMigpKSkpOwotICAgIH0KLSAgICAKKwogICAgIHZvaWQgY29tcGlsZUhhc1ByaXZh
dGVOYW1lKCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CkBAIC0xMjIzMiwzOCAr
MTIyMjYsNTMgQEAgcHJpdmF0ZToKICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG9w
ZXJhdGlvbkhhc1ByaXZhdGVCcmFuZCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgbG93Q2Vs
bChtX25vZGUtPmNoaWxkMSgpKSwgbG93U3ltYm9sKG1fbm9kZS0+Y2hpbGQyKCkpKSk7CiAgICAg
fQogCi0gICAgdm9pZCBjb21waWxlSW5CeUlkKCkKKyAgICB0ZW1wbGF0ZTxJbkJ5S2luZCBraW5k
LCB0eXBlbmFtZSBTdWJzY3JpcHRLaW5kPgorICAgIHZvaWQgY29tcGlsZUluQnkoTFZhbHVlIGJh
c2UsIFN1YnNjcmlwdEtpbmQgc3Vic2NyaXB0VmFsdWUpCiAgICAgewotICAgICAgICBOb2RlKiBu
b2RlID0gbV9ub2RlOwotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBu
b2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCk7Ci0gICAgICAgIExWYWx1ZSBiYXNlID0gbG93Q2Vs
bChtX25vZGUtPmNoaWxkMSgpKTsKLQogICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9p
bnQgPSBtX291dC5wYXRjaHBvaW50KEludDY0KTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5k
U29tZVJlZ2lzdGVyKGJhc2UpOworICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQgIT0gSW5CeUtp
bmQ6Ok5vcm1hbCkKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3Rlcihz
dWJzY3JpcHRWYWx1ZSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNr
LCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CiAgICAg
ICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BS
SW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKLQogICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVy
KFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CiAKLSAgICAgICAgUmVmUHRy
PFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9Ci0gICAgICAgICAg
ICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CisgICAgICAgIFJl
ZlB0cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPSBwcmVwYXJl
UGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CiAKICAgICAgICAgU3RhdGUqIHN0
YXRlID0gJm1fZnRsU3RhdGU7CisgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7CiAgICAgICAg
IHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJz
JiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAg
ICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQp
OwogCi0gICAgICAgICAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0KLSAgICAg
ICAgICAgICAgICAgICAgc3RhdGUtPmppdENvZGUtPmNvbW1vbi5jb2RlT3JpZ2lucy0+YWRkVW5p
cXVlQ2FsbFNpdGVJbmRleChub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAgICAgICAg
IENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9IHN0YXRlLT5qaXRDb2RlLT5jb21tb24uY29k
ZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgobm9kZS0+b3JpZ2luLnNlbWFudGljKTsK
IAogICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGRpcmVjdCBleGl0IHRhcmdldCBmb3Ig
b3BlcmF0aW9uIGNhbGxzLgotICAgICAgICAgICAgICAgIEJveDxDQ2FsbEhlbHBlcnM6Okp1bXBM
aXN0PiBleGNlcHRpb25zID0KLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uSGFuZGxlLT5z
Y2hlZHVsZUV4aXRDcmVhdGlvbihwYXJhbXMpLT5qdW1wcyhqaXQpOworICAgICAgICAgICAgICAg
IEJveDxDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0PiBleGNlcHRpb25zID0gZXhjZXB0aW9uSGFuZGxl
LT5zY2hlZHVsZUV4aXRDcmVhdGlvbihwYXJhbXMpLT5qdW1wcyhqaXQpOwogCi0gICAgICAgICAg
ICAgICAgYXV0byBnZW5lcmF0b3IgPSBCb3g8SklUSW5CeUlkR2VuZXJhdG9yPjo6Y3JlYXRlKAot
ICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgY2FsbFNpdGVJbmRleCwKLSAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksIGlkZW50aWZpZXIsIEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSksCi0g
ICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1swXS5ncHIoKSkpOworICAgICAg
ICAgICAgICAgIGF1dG8gcmV0dXJuR1BSID0gcGFyYW1zWzBdLmdwcigpOworICAgICAgICAgICAg
ICAgIGF1dG8gYmFzZSA9IEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSk7CisKKyAgICAgICAg
ICAgICAgICBjb25zdCBhdXRvIHN1YnNjcmlwdCA9IFsmXSB7CisgICAgICAgICAgICAgICAgICAg
IGlmIGNvbnN0ZXhwciAoa2luZCA9PSBJbkJ5S2luZDo6Tm9ybWFsKQorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdWJzY3JpcHRWYWx1
ZS5yYXdCaXRzKCkpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZVJlZ3MocGFyYW1zWzJdLmdwcigpKTsKKyAgICAgICAgICAg
ICAgICB9KCk7CisKKyAgICAgICAgICAgICAgICBjb25zdCBhdXRvIGdlbmVyYXRvciA9IFsmXSB7
CisgICAgICAgICAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAoa2luZCA9PSBJbkJ5S2luZDo6Tm9y
bWFsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQm94PEpJVEluQnlJZEdlbmVy
YXRvcj46OmNyZWF0ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2Nr
KCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2FsbFNpdGVJbmRleCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgc3Vic2NyaXB0VmFs
dWUsIGJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmV0dXJu
R1BSKSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gQm94PEpJVEluQnlWYWxHZW5lcmF0b3I+OjpjcmVhdGUoCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMs
IGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksIGJhc2UsIHN1YnNjcmlwdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBKU1ZhbHVlUmVncyhyZXR1cm5HUFIpKTsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0oKTsKIAogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+Z2VuZXJh
dGVGYXN0UGF0aChqaXQpOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgZG9u
ZSA9IGppdC5sYWJlbCgpOwpAQCAtMTIyNzQsMTIgKzEyMjgzLDIyIEBAIHByaXZhdGU6CiAKICAg
ICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+c2xvd1BhdGhKdW1wKCkubGluaygmaml0
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgc2xvd1BhdGhC
ZWdpbiA9IGppdC5sYWJlbCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpDYWxsIHNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKnN0YXRlLCBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaml0LCBub2Rl
LT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9u
cy5nZXQoKSwgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUsIHBhcmFtc1swXS5ncHIoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLCBwYXJhbXNbMV0u
Z3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllci5yYXdCaXRzKCkp
LmNhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93
UGF0aENhbGw7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0g
SW5CeUtpbmQ6Ok5vcm1hbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRo
Q2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpz
dGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNl
bWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgp
LCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwgcmV0dXJuR1BSLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYmFzZSwgc3Vic2NyaXB0KS5jYWxsKCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRo
Q2FsbCA9IGNhbGxPcGVyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpz
dGF0ZSwgcGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNl
bWFudGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25zLmdldCgp
LCBvcGVyYXRpb25JbkJ5VmFsT3B0aW1pemUsIHJldHVybkdQUiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKGdlbmVyYXRvci0+c3R1YkluZm8oKSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihudWxscHRyKSwg
YmFzZSwgc3Vic2NyaXB0KS5jYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQuanVtcCgpLmxpbmtUbyhkb25lLCAmaml0KTsKIAogICAg
ICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLT5yZXBvcnRTbG93UGF0aENhbGwoc2xvd1Bh
dGhCZWdpbiwgc2xvd1BhdGhDYWxsKTsKQEAgLTEyMjk0LDYgKzEyMzEzLDE2IEBAIHByaXZhdGU6
CiAgICAgICAgIHNldEpTVmFsdWUocGF0Y2hwb2ludCk7CiAgICAgfQogCisgICAgdm9pZCBjb21w
aWxlSW5CeUlkKCkKKyAgICB7CisgICAgICAgIGNvbXBpbGVJbkJ5PEluQnlLaW5kOjpOb3JtYWw+
KGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIG1fbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigp
KTsKKyAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVJbkJ5VmFsKCkKKyAgICB7CisgICAgICAgIGNv
bXBpbGVJbkJ5PEluQnlLaW5kOjpOb3JtYWxCeVZhbD4obG93Q2VsbChtX25vZGUtPmNoaWxkMSgp
KSwgbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKSk7CisgICAgfQorCiAgICAgdm9pZCBjb21w
aWxlSGFzT3duUHJvcGVydHkoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKaW5kZXggYWUzYzc4Njk1ODVhLi5mMDRjMWY0Mjhl
MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCkBAIC00Myw2ICs0Myw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIG1hY3JvKEdldEJ5U2VsZlBhdGNoKSBcCiAgICAgbWFjcm8oSW5B
ZGRBY2Nlc3NDYXNlKSBcCiAgICAgbWFjcm8oSW5SZXBsYWNlV2l0aEp1bXApIFwKKyAgICBtYWNy
byhJblJlcGxhY2VXaXRoR2VuZXJpYykgXAogICAgIG1hY3JvKEluc3RhbmNlT2ZBZGRBY2Nlc3ND
YXNlKSBcCiAgICAgbWFjcm8oSW5zdGFuY2VPZlJlcGxhY2VXaXRoSnVtcCkgXAogICAgIG1hY3Jv
KE9wZXJhdGlvbkdldEJ5SWQpIFwKQEAgLTUyLDcgKzUzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgbWFjcm8oT3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSkgXAogICAgIG1hY3JvKE9wZXJhdGlv
bkdldEJ5SWRXaXRoVGhpc09wdGltaXplKSBcCiAgICAgbWFjcm8oT3BlcmF0aW9uR2VuZXJpY0lu
KSBcCi0gICAgbWFjcm8oT3BlcmF0aW9uSW5CeUlkKSBcCisgICAgbWFjcm8oT3BlcmF0aW9uSW5C
eUlkR2VuZXJpYykgXAogICAgIG1hY3JvKE9wZXJhdGlvbkluQnlJZE9wdGltaXplKSBcCiAgICAg
bWFjcm8oT3BlcmF0aW9uUHV0QnlJZFN0cmljdCkgXAogICAgIG1hY3JvKE9wZXJhdGlvblB1dEJ5
SWROb25TdHJpY3QpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBlZTFhNGUzN2Zm
YzIuLjRlN2VjYjk0MjA2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjg1LDcg
KzI4NSw2IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgfQog
CiAgICAgICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKLSAgICAgICAgREVGSU5FX1NMT1dfT1AoaW5f
YnlfdmFsKQogICAgICAgICBERUZJTkVfU0xPV19PUChoYXNfcHJpdmF0ZV9uYW1lKQogICAgICAg
ICBERUZJTkVfU0xPV19PUChoYXNfcHJpdmF0ZV9icmFuZCkKICAgICAgICAgREVGSU5FX1NMT1df
T1AobGVzcykKQEAgLTM2MSw2ICszNjAsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWlu
UGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9iZWxvd2VxKQogICAgICAgICBERUZJTkVfT1Ao
b3BfdHJ5X2dldF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX2luX2J5X2lkKQorICAgICAg
ICBERUZJTkVfT1Aob3BfaW5fYnlfdmFsKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X2lk
KQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X2lkX3dpdGhfdGhpcykKICAgICAgICAgREVG
SU5FX09QKG9wX2dldF9ieV9pZF9kaXJlY3QpCkBAIC01MTgsOCArNTE4LDkgQEAgdm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICBtX2dldEJ5SWRXaXRoVGhpc0luZGV4ID0g
MDsKICAgICBtX3B1dEJ5SWRJbmRleCA9IDA7CiAgICAgbV9pbkJ5SWRJbmRleCA9IDA7Ci0gICAg
bV9kZWxCeVZhbEluZGV4ID0gMDsKKyAgICBtX2luQnlWYWxJbmRleCA9IDA7CiAgICAgbV9kZWxC
eUlkSW5kZXggPSAwOworICAgIG1fZGVsQnlWYWxJbmRleCA9IDA7CiAgICAgbV9pbnN0YW5jZU9m
SW5kZXggPSAwOwogICAgIG1fcHJpdmF0ZUJyYW5kQWNjZXNzSW5kZXggPSAwOwogICAgIG1fYnlW
YWxJbnN0cnVjdGlvbkluZGV4ID0gMDsKQEAgLTU3MCw2ICs1NzEsNyBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZXEp
CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF90cnlfZ2V0X2J5X2lkKQogICAgICAgICBE
RUZJTkVfU0xPV0NBU0VfT1Aob3BfaW5fYnlfaWQpCisgICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9pbl9ieV92YWwpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9nZXRfYnlfaWQp
CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9nZXRfYnlfaWRfd2l0aF90aGlzKQogICAg
ICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZ2V0X2J5X2lkX2RpcmVjdCkKQEAgLTkxOSw2ICs5
MjEsNyBAQCB2b2lkIEpJVDo6bGluaygpCiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9kZWxC
eUlkcywgcGF0Y2hCdWZmZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZGVsQnlWYWxz
LCBwYXRjaEJ1ZmZlcik7CiAgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9pbkJ5SWRzLCBwYXRj
aEJ1ZmZlcik7CisgICAgZmluYWxpemVJbmxpbmVDYWNoZXMobV9pbkJ5VmFscywgcGF0Y2hCdWZm
ZXIpOwogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1faW5zdGFuY2VPZnMsIHBhdGNoQnVmZmVy
KTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzLCBwYXRj
aEJ1ZmZlcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDc1YzljYjk2YjEzNi4uMzhj
Yzg4ODdjMzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTU2NSw2ICs1NjUsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9hcmd1bWVudF9ieV92YWwo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9wcm90b3R5cGVf
b2YoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2luX2J5X2lkKGNv
bnN0IEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9pbl9ieV92YWwoY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2luaXRfbGF6eV9yZWcoY29uc3Qg
SW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX292ZXJyaWRlc19oYXNfaW5zdGFu
Y2UoY29uc3QgSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2luc3RhbmNlb2Yo
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKQEAgLTY5OCw2ICs2OTksNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9jaGVja19wcml2YXRlX2JyYW5kKGNvbnN0IEluc3Ry
dWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lk
IGVtaXRTbG93X29wX2dldF9hcmd1bWVudF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bf
aW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJik7CisgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVt
aXRTbG93X29wX2luc3RhbmNlb2YoY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfaW5zdGFuY2VvZl9j
dXN0b20oY29uc3QgSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
Jik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bfamxlc3MoY29uc3QgSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CkBAIC0xMDM3LDYgKzEwMzksNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9yPEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRv
cj4gbV9nZXRCeUlkc1dpdGhUaGlzOwogICAgICAgICBWZWN0b3I8SklUUHV0QnlJZEdlbmVyYXRv
cj4gbV9wdXRCeUlkczsKICAgICAgICAgVmVjdG9yPEpJVEluQnlJZEdlbmVyYXRvcj4gbV9pbkJ5
SWRzOworICAgICAgICBWZWN0b3I8SklUSW5CeVZhbEdlbmVyYXRvcj4gbV9pbkJ5VmFsczsKICAg
ICAgICAgVmVjdG9yPEpJVERlbEJ5SWRHZW5lcmF0b3I+IG1fZGVsQnlJZHM7CiAgICAgICAgIFZl
Y3RvcjxKSVREZWxCeVZhbEdlbmVyYXRvcj4gbV9kZWxCeVZhbHM7CiAgICAgICAgIFZlY3RvcjxK
SVRJbnN0YW5jZU9mR2VuZXJhdG9yPiBtX2luc3RhbmNlT2ZzOwpAQCAtMTA2Myw2ICsxMDY2LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVuc2lnbmVkIG1fZ2V0QnlJZFdpdGhUaGlzSW5k
ZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBtX3B1dEJ5SWRJbmRleCB7IFVJTlRf
TUFYIH07CiAgICAgICAgIHVuc2lnbmVkIG1faW5CeUlkSW5kZXggeyBVSU5UX01BWCB9OworICAg
ICAgICB1bnNpZ25lZCBtX2luQnlWYWxJbmRleCB7IFVJTlRfTUFYIH07CiAgICAgICAgIHVuc2ln
bmVkIG1fZGVsQnlWYWxJbmRleCB7IFVJTlRfTUFYIH07CiAgICAgICAgIHVuc2lnbmVkIG1fZGVs
QnlJZEluZGV4IHsgVUlOVF9NQVggfTsKICAgICAgICAgdW5zaWduZWQgbV9pbnN0YW5jZU9mSW5k
ZXggeyBVSU5UX01BWCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAppbmRleCBmNTJjM2M3NjIxNWEuLjE4OTNjNjgwMTJi
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvci5jcHAKQEAgLTIzNSwxMCArMjM1LDM4IEBAIHZvaWQgSklURGVsQnlJZEdlbmVy
YXRvcjo6ZmluYWxpemUoCiAgICAgICAgIGZhc3RQYXRoLCBzbG93UGF0aCwgZmFzdFBhdGgubG9j
YXRpb25PZjxKSVRTdHViUm91dGluZVB0clRhZz4obV9zdGFydCkpOwogfQogCi1KSVRJbkJ5SWRH
ZW5lcmF0b3I6OkpJVEluQnlJZEdlbmVyYXRvcigKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Q29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywKLSAgICBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5
TmFtZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUpCi0gICAgOiBKSVRCeUlk
R2VuZXJhdG9yKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6Oklu
LCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSkKK0pJVEluQnlWYWxHZW5lcmF0b3I6OkpJVElu
QnlWYWxHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdp
biwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJl
Z2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVS
ZWdzIHJlc3VsdCkKKyAgICA6IEJhc2UoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZUlu
ZGV4LCBBY2Nlc3NUeXBlOjpJbkJ5VmFsLCB1c2VkUmVnaXN0ZXJzKQoreworICAgIG1fc3R1Yklu
Zm8tPmhhc0NvbnN0YW50SWRlbnRpZmllciA9IGZhbHNlOworCisgICAgbV9zdHViSW5mby0+YmFz
ZUdQUiA9IGJhc2UucGF5bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8tPnJlZ3MucHJvcGVydHlH
UFIgPSBwcm9wZXJ0eS5wYXlsb2FkR1BSKCk7CisgICAgbV9zdHViSW5mby0+dmFsdWVHUFIgPSBy
ZXN1bHQucGF5bG9hZEdQUigpOworI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgbV9zdHViSW5m
by0+YmFzZVRhZ0dQUiA9IGJhc2UudGFnR1BSKCk7CisgICAgbV9zdHViSW5mby0+dmFsdWVUYWdH
UFIgPSByZXN1bHQudGFnR1BSKCk7CisgICAgbV9zdHViSW5mby0+di5wcm9wZXJ0eVRhZ0dQUiA9
IHByb3BlcnR5LnRhZ0dQUigpOworI2VuZGlmCit9CisKK3ZvaWQgSklUSW5CeVZhbEdlbmVyYXRv
cjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQoreworICAgIG1fc3RhcnQg
PSBqaXQubGFiZWwoKTsKKyAgICBtX3Nsb3dQYXRoSnVtcCA9IGppdC5wYXRjaGFibGVKdW1wKCk7
CisgICAgbV9kb25lID0gaml0LmxhYmVsKCk7Cit9CisKK3ZvaWQgSklUSW5CeVZhbEdlbmVyYXRv
cjo6ZmluYWxpemUoCisgICAgTGlua0J1ZmZlciYgZmFzdFBhdGgsIExpbmtCdWZmZXImIHNsb3dQ
YXRoKQoreworICAgIEFTU0VSVChtX3N0YXJ0LmlzU2V0KCkpOworICAgIEJhc2U6OmZpbmFsaXpl
KAorICAgICAgICBmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1
YlJvdXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKK30KKworSklUSW5CeUlkR2VuZXJhdG9yOjpKSVRJ
bkJ5SWRHZW5lcmF0b3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdp
biwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3Rl
cnMsIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVncyBiYXNlLCBK
U1ZhbHVlUmVncyB2YWx1ZSkKKyAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBjb2Rl
T3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6SW5CeUlkLCB1c2VkUmVnaXN0ZXJzLCBiYXNl
LCB2YWx1ZSkKIHsKICAgICAvLyBGSVhNRTogV2UgYXJlIG5vdCBzdXBwb3J0aW5nIGZhc3QgcGF0
aCBmb3IgImxlbmd0aCIgcHJvcGVydHkuCiAgICAgVU5VU0VEX1BBUkFNKHByb3BlcnR5TmFtZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2Vu
ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJh
dG9yLmgKaW5kZXggZDZjYTZlMTZhM2YzLi45MDRkYjE0MjIyMzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKQEAgLTE5NSw2
ICsxOTUsMzEgQEAgcHJpdmF0ZToKICAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBt
X3Nsb3dQYXRoSnVtcDsKIH07CiAKK2NsYXNzIEpJVEluQnlWYWxHZW5lcmF0b3IgOiBwdWJsaWMg
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgeworICAgIHVzaW5nIEJhc2UgPSBKSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvcjsKK3B1YmxpYzoKKyAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yKCkgeyB9CisKKyAg
ICBKSVRJbkJ5VmFsR2VuZXJhdG9yKAorICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBD
YWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICAgICAg
SlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgcHJvcGVydHksIEpTVmFsdWVSZWdzIHJlc3Vs
dCk7CisKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aEp1bXAoKSBjb25zdAorICAg
IHsKKyAgICAgICAgQVNTRVJUKG1fc2xvd1BhdGhKdW1wLm1fanVtcC5pc1NldCgpKTsKKyAgICAg
ICAgcmV0dXJuIG1fc2xvd1BhdGhKdW1wLm1fanVtcDsKKyAgICB9CisKKyAgICB2b2lkIGZpbmFs
aXplKAorICAgICAgICBMaW5rQnVmZmVyJiBmYXN0UGF0aExpbmtCdWZmZXIsIExpbmtCdWZmZXIm
IHNsb3dQYXRoTGlua0J1ZmZlcik7CisKKyAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9B
c3NlbWJsZXImKTsKKworcHJpdmF0ZToKKyAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgbV9zdGFy
dDsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6UGF0Y2hhYmxlSnVtcCBtX3Nsb3dQYXRoSnVtcDsKK307
CisKIGNsYXNzIEpJVEluQnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsK
IHB1YmxpYzoKICAgICBKSVRJbkJ5SWRHZW5lcmF0b3IoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDA2MDNmOTNhOWFmZi4uNmJmZTk1ODQ0
ZDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAg
LTM5NCw3ICszOTQsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0QnlJ
ZFdpdGhUaGlzT3B0aW1pemUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbAogICAgIH0pKTsKIH0KIAot
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluQnlJZCwgRW5jb2RlZEpTVmFsdWUs
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1Yklu
Zm8sIEVuY29kZWRKU1ZhbHVlIGJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJZGVudGlmaWVy
KSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25JbkJ5SWRHZW5lcmljLCBFbmNv
ZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgdWludHB0cl90IHJhd0NhY2hlYWJs
ZUlkZW50aWZpZXIpKQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3Bl
KGZhbHNlKTsKIApAQCAtNDE1LDcgKzQxNSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25JbkJ5SWQsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAg
ICAgfQogICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKIAot
ICAgIExPR19JQygoSUNFdmVudDo6T3BlcmF0aW9uSW5CeUlkLCBiYXNlT2JqZWN0LT5jbGFzc0lu
Zm8odm0pLCBpZGVudCkpOworICAgIExPR19JQygoSUNFdmVudDo6T3BlcmF0aW9uSW5CeUlkR2Vu
ZXJpYywgYmFzZU9iamVjdC0+Y2xhc3NJbmZvKHZtKSwgaWRlbnQpKTsKIAogICAgIHNjb3BlLnJl
bGVhc2UoKTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6
OkludGVybmFsTWV0aG9kVHlwZTo6SGFzUHJvcGVydHkpOwpAQCAtNDQ4LDE5ICs0NDgsNjIgQEAg
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluQnlJZE9wdGltaXplLCBFbmNvZGVk
SlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWMKICAgICBib29sIGZvdW5kID0gYmFzZU9iamVjdC0+Z2V0
UHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3QpOwogICAgIENvZGVCbG9jayog
Y29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKICAgICBpZiAoc3R1YkluZm8tPmNv
bnNpZGVyQ2FjaGluZ0J5KHZtLCBjb2RlQmxvY2ssIGJhc2VPYmplY3QtPnN0cnVjdHVyZSh2bSks
IGlkZW50aWZpZXIpKQotICAgICAgICByZXBhdGNoSW5CeUlEKGdsb2JhbE9iamVjdCwgY29kZUJs
b2NrLCBiYXNlT2JqZWN0LCBpZGVudGlmaWVyLCBmb3VuZCwgc2xvdCwgKnN0dWJJbmZvKTsKKyAg
ICAgICAgcmVwYXRjaEluQnkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIGlk
ZW50aWZpZXIsIGZvdW5kLCBzbG90LCAqc3R1YkluZm8sIEluQnlLaW5kOjpOb3JtYWwpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZvdW5kKSk7CiB9CiAKLUpTQ19ERUZJ
TkVfSklUX09QRVJBVElPTihvcGVyYXRpb25JbkJ5VmFsLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogYmFzZSwgRW5jb2RlZEpTVmFsdWUga2V5
KSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25JbkJ5VmFsT3B0aW1pemUsIEVu
Y29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJJbmZvLCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRLZXkpKQogewogICAgIFN1cGVy
U2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKLSAgICAKKworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xB
UkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRCYXNlKTsKKyAgICBpZiAoIWJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CisgICAgICAgIHRo
cm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUludmFsaWRJblBhcmFtZXRl
ckVycm9yKGdsb2JhbE9iamVjdCwgYmFzZVZhbHVlKSk7CisgICAgICAgIHJldHVybiBlbmNvZGVk
SlNWYWx1ZSgpOworICAgIH0KKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJh
c2VWYWx1ZSk7CisgICAgaWYgKGFycmF5UHJvZmlsZSkKKyAgICAgICAgYXJyYXlQcm9maWxlLT5v
YnNlcnZlU3RydWN0dXJlKGJhc2VPYmplY3QtPnN0cnVjdHVyZSh2bSkpOworCisgICAgSlNWYWx1
ZSBrZXkgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEtleSk7CisgICAgdWludDMyX3QgaTsKKyAg
ICBpZiAoa2V5LmdldFVJbnQzMihpKSkgeworICAgICAgICBpZiAoYXJyYXlQcm9maWxlKQorICAg
ICAgICAgICAgYXJyYXlQcm9maWxlLT5vYnNlcnZlSW5kZXhlZFJlYWQodm0sIGJhc2VPYmplY3Qs
IGkpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShq
c0Jvb2xlYW4oYmFzZU9iamVjdC0+aGFzUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCBpKSkpKTsKKyAg
ICB9CisKKyAgICBjb25zdCBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IGtleS50b1Byb3BlcnR5
S2V5KGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgUHJvcGVydHlT
bG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6Okhhc1Byb3BlcnR5KTsKKyAgICBib29sIGZvdW5kID0g
YmFzZU9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBz
bG90KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
KworICAgIGlmIChDYWNoZWFibGVJZGVudGlmaWVyOjppc0NhY2hlYWJsZUlkZW50aWZpZXJDZWxs
KGtleSkgJiYgKGtleS5pc1N5bWJvbCgpIHx8ICFwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpKSB7
CisgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsK
KyAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gQ2FjaGVhYmxlSWRlbnRp
Zmllcjo6Y3JlYXRlRnJvbUNlbGwoa2V5LmFzQ2VsbCgpKTsKKyAgICAgICAgaWYgKHN0dWJJbmZv
LT5jb25zaWRlckNhY2hpbmdCeSh2bSwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUo
dm0pLCBpZGVudGlmaWVyKSkKKyAgICAgICAgICAgIHJlcGF0Y2hJbkJ5KGdsb2JhbE9iamVjdCwg
Y29kZUJsb2NrLCBiYXNlT2JqZWN0LCBpZGVudGlmaWVyLCBmb3VuZCwgc2xvdCwgKnN0dWJJbmZv
LCBJbkJ5S2luZDo6Tm9ybWFsQnlWYWwpOworICAgIH0KKworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNCb29sZWFuKGZvdW5kKSk7Cit9CisKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25JbkJ5VmFsR2VuZXJpYywgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEFycmF5UHJvZmlsZSog
YXJyYXlQcm9maWxlLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBFbmNvZGVkSlNWYWx1ZSBrZXkpKQor
eworICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKwogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluQnlWYWwoZ2xvYmFsT2JqZWN0LCBi
YXNlLCBKU1ZhbHVlOjpkZWNvZGUoa2V5KSkpKTsKKyAgICBzdHViSW5mby0+dG9va1Nsb3dQYXRo
ID0gdHJ1ZTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihDb21tb25TbG93
UGF0aHM6Om9wSW5CeVZhbChnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRlY29kZShiYXNlKSwgSlNW
YWx1ZTo6ZGVjb2RlKGtleSksIGFycmF5UHJvZmlsZSkpKTsKIH0KIAogSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbkhhc1ByaXZhdGVOYW1lLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQ2VsbCogYmFzZSwgRW5jb2RlZEpTVmFsdWUga2V5
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggM2UxZWFi
NzIwYWJiLi5kODc3MDY2Yzg1MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCkBAIC0xNzQsMTAgKzE3NCwxMCBAQCBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbkdldEJ5SWREaXJlY3QsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplYwog
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRCeUlkRGlyZWN0R2VuZXJpYywg
RW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCB1aW50cHRy
X3QpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uR2V0QnlJZERpcmVjdE9w
dGltaXplLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1Yklu
Zm8qLCBFbmNvZGVkSlNWYWx1ZSwgdWludHB0cl90KSk7CiAKLUpTQ19ERUNMQVJFX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uSW5CeUlkLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0Kiwg
U3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgdWludHB0cl90KSk7CitKU0NfREVD
TEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluQnlJZEdlbmVyaWMsIEVuY29kZWRKU1ZhbHVl
LCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCB1
aW50cHRyX3QpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5CeUlkT3B0
aW1pemUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5m
byosIEVuY29kZWRKU1ZhbHVlLCB1aW50cHRyX3QpKTsKLQotSlNDX0RFQ0xBUkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25JbkJ5VmFsLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0Kiwg
SlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUpKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uSW5CeVZhbEdlbmVyaWMsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmVTdHViSW5mbyosIEFycmF5UHJvZmlsZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSkpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25JbkJ5VmFsT3B0
aW1pemUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5m
byosIEFycmF5UHJvZmlsZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkpOwogSlND
X0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25IYXNQcml2YXRlTmFtZSwgRW5jb2RlZEpT
VmFsdWUsIChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlKSk7CiBKU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkhhc1ByaXZhdGVCcmFuZCwgRW5jb2RlZEpT
VmFsdWUsIChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXgg
NjQ0NjdlOWEyNWUxLi5hODdiYjMyY2NmZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0xNTczLDYgKzE1NzMsNzYgQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIFZlY3RvcjxTbG8KICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVn
aW4sIGNhbGwpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcEluQnlWYWw+KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9
IGJ5dGVjb2RlLm1fZHN0OworICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9i
YXNlOworICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7
CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7Cisg
ICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOworCisg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihiYXNlLCByZWdUMCk7CisgICAgZW1pdEp1bXBTbG93
Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlKTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KHByb3BlcnR5LCByZWdUMSk7CisgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKHJl
Z1QwLCByZWdUMiwgcHJvZmlsZSk7CisKKyAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yIGdlbigKKyAg
ICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksCisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCBK
U1ZhbHVlUmVncyhyZWdUMCkpOworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAg
ICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOworICAgIG1faW5CeVZhbHMuYXBwZW5k
KGdlbik7CisKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7Cit9CisKK3ZvaWQgSklU
OjplbWl0U2xvd19vcF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKK3sKKyAgICBsaW5r
QWxsU2xvd0Nhc2VzKGl0ZXIpOworCisgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVj
dGlvbi0+YXM8T3BJbkJ5VmFsPigpOworICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29k
ZS5tX2RzdDsKKyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJs
b2NrKTsKKyAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2Zp
bGU7CisKKyAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlWYWxzW21faW5CeVZh
bEluZGV4KytdOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVsKCk7CisKKyNpZiAh
RU5BQkxFKEVYVFJBX0NUSV9USFVOS1MpCisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25JbkJ5VmFsT3B0aW1pemUsIGRzdCwgVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCkpLCBnZW4uc3R1YkluZm8oKSwgcHJvZmlsZSwgcmVnVDAsIHJlZ1QxKTsK
KyNlbHNlCisgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKKyAgICB1aW50MzJfdCBieXRlY29kZU9m
ZnNldCA9IG1fYnl0ZWNvZGVJbmRleC5vZmZzZXQoKTsKKyAgICBBU1NFUlQoQnl0ZWNvZGVJbmRl
eChieXRlY29kZU9mZnNldCkgPT0gbV9ieXRlY29kZUluZGV4KTsKKworICAgIGNvbnN0ZXhwciBH
UFJSZWcgYnl0ZWNvZGVPZmZzZXRHUFIgPSBhcmd1bWVudEdQUjQ7CisgICAgbW92ZShUcnVzdGVk
SW1tMzIoYnl0ZWNvZGVPZmZzZXQpLCBieXRlY29kZU9mZnNldEdQUik7CisKKyAgICBjb25zdGV4
cHIgR1BSUmVnIHN0dWJJbmZvR1BSID0gYXJndW1lbnRHUFIzOworICAgIGNvbnN0ZXhwciBHUFJS
ZWcgcHJvZmlsZUdQUiA9IGFyZ3VtZW50R1BSMjsKKyAgICBjb25zdGV4cHIgR1BSUmVnIGJhc2VH
UFIgPSByZWdUMDsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHByb3BlcnR5R1BSID0gcmVnVDE7Cisg
ICAgc3RhdGljX2Fzc2VydChiYXNlR1BSID09IGFyZ3VtZW50R1BSMCB8fCAhaXNBUk02NCgpKTsK
KyAgICBzdGF0aWNfYXNzZXJ0KHByb3BlcnR5R1BSID09IGFyZ3VtZW50R1BSMSk7CisKKyAgICBt
b3ZlKFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBzdHViSW5mb0dQUik7CisgICAgbW92
ZShUcnVzdGVkSW1tUHRyKHByb2ZpbGUpLCBwcm9maWxlR1BSKTsKKyAgICAvLyBzbG93X29wX2dl
dF9ieV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3Igd2lsbCBkbyBleGFjdGx5IHdoYXQgd2UgbmVl
ZC4KKyAgICAvLyBTbywgdGhlcmUncyBubyBwb2ludCBpbiBjcmVhdGluZyBhIGR1cGxpY2F0ZSB0
aHVuayBqdXN0IHRvIGdpdmUgaXQgYSBkaWZmZXJlbnQgbmFtZS4KKyAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShvcGVyYXRpb25JbkJ5VmFsT3B0aW1pemUpLCBkZWNsdHlw
ZShvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplKT46OnZhbHVlKTsKKyAgICBlbWl0TmFrZWROZWFy
Q2FsbCh2bS5nZXRDVElTdHViKHNsb3dfb3BfZ2V0X2J5X3ZhbF9wcmVwYXJlQ2FsbEdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKKworICAgIENhbGwgY2FsbCA9IGFwcGVuZENh
bGwob3BlcmF0aW9uSW5CeVZhbE9wdGltaXplKTsKKyAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bS5n
ZXRDVElTdHViKGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKS5yZXRhZ2dlZENvZGU8Tm9QdHJUYWc+
KCkpOworCisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIHJldHVyblZhbHVlR1BSKTsK
KyNlbmRpZiAvLyBFTkFCTEUoRVhUUkFfQ1RJX1RIVU5LUykKKworICAgIGdlbi5yZXBvcnRTbG93
UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7Cit9CisKIHZvaWQgSklUOjplbWl0VmFySW5q
ZWN0aW9uQ2hlY2soYm9vbCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcykKIHsKICAgICBpZiAoIW5l
ZWRzVmFySW5qZWN0aW9uQ2hlY2tzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggYzIyYzc3MDQyODlhLi44NTU3ZDJk
ZWNlNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2VzczMyXzY0LmNwcApAQCAtOTA4LDYgKzkwOCw0NyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfaW5fYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9y
PFNsbwogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CiB9
CiAKK3ZvaWQgSklUOjplbWl0X29wX2luX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQoreworICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wSW5CeVZhbD4oKTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9k
c3Q7CisgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmly
dHVhbFJlZ2lzdGVyIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsKKyAgICBhdXRvJiBt
ZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKKyAgICBBcnJheVByb2Zp
bGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CisKKyAgICBlbWl0TG9hZDIo
YmFzZSwgcmVnVDEsIHJlZ1QwLCBwcm9wZXJ0eSwgcmVnVDMsIHJlZ1QyKTsKKyAgICBlbWl0SnVt
cFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwgcmVnVDEpOworICAgIGVtaXRBcnJheVByb2ZpbGlu
Z1NpdGVXaXRoQ2VsbChyZWdUMCwgcmVnVDQsIHByb2ZpbGUpOworCisgICAgSklUSW5CeVZhbEdl
bmVyYXRvciBnZW4oCisgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJ
bmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJV
bmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHko
cmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVn
VDApKTsKKyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgYWRkU2xvd0Nhc2Uo
Z2VuLnNsb3dQYXRoSnVtcCgpKTsKKyAgICBtX2luQnlWYWxzLmFwcGVuZChnZW4pOworCisgICAg
ZW1pdFN0b3JlKGRzdCwgcmVnVDEsIHJlZ1QwKTsKK30KKwordm9pZCBKSVQ6OmVtaXRTbG93X29w
X2luX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQoreworICAgIGxpbmtBbGxTbG93Q2FzZXMo
aXRlcik7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcElu
QnlWYWw+KCk7CisgICAgVmlydHVhbFJlZ2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OworICAg
IGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOworICAgIEFy
cmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKKworICAgIEpJ
VEluQnlWYWxHZW5lcmF0b3ImIGdlbiA9IG1faW5CeVZhbHNbbV9pbkJ5VmFsSW5kZXgrK107CisK
KyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKworICAgIENhbGwgY2FsbCA9IGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uSW5CeVZhbE9wdGltaXplLCBkc3QsIFRydXN0ZWRJbW1QdHIo
bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCksIHByb2ZpbGUsIEpT
VmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMikpOworCisg
ICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKK30KKwogdm9p
ZCBKSVQ6OmVtaXRWYXJJbmplY3Rpb25DaGVjayhib29sIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tz
KQogewogICAgIGlmICghbmVlZHNWYXJJbmplY3Rpb25DaGVja3MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZXBhdGNoLmNwcAppbmRleCA5MDVmOGQ3ZjJhZmIuLmI0YmFlYmQ0ZGRhMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC04OTcsNyArODk3LDcgQEAgdm9pZCBy
ZXBhdGNoRGVsZXRlQnkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIERlbGV0ZVAKICAgICB9CiB9CiAKLXN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0
cnlDYWNoZUluQnlJRCgKK3N0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluQnkoCiAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpT
T2JqZWN0KiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwKICAgICBib29s
IHdhc0ZvdW5kLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0cnVjdHVyZVN0dWJJbmZvJiBz
dHViSW5mbykKIHsKQEAgLTkwOSwxNyArOTA5LDE3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlv
biB0cnlDYWNoZUluQnlJRCgKICAgICAgICAgR0NTYWZlQ29uY3VycmVudEpTTG9ja2VyIGxvY2tl
cihjb2RlQmxvY2stPm1fbG9jaywgdm0uaGVhcCk7CiAgICAgICAgIGlmIChmb3JjZUlDRmFpbHVy
ZShnbG9iYWxPYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7Ci0gICAg
ICAgIAorCiAgICAgICAgIGlmICghYmFzZS0+c3RydWN0dXJlKHZtKS0+cHJvcGVydHlBY2Nlc3Nl
c0FyZUNhY2hlYWJsZSgpIHx8ICghd2FzRm91bmQgJiYgIWJhc2UtPnN0cnVjdHVyZSh2bSktPnBy
b3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGVGb3JBYnNlbmNlKCkpKQogICAgICAgICAgICAgcmV0
dXJuIEdpdmVVcE9uQ2FjaGU7Ci0gICAgICAgIAorCiAgICAgICAgIGlmICh3YXNGb3VuZCkgewog
ICAgICAgICAgICAgaWYgKCFzbG90LmlzQ2FjaGVhYmxlKCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIEdpdmVVcE9uQ2FjaGU7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlLT5zdHJ1Y3R1cmUodm0pOwotICAgICAgICAKKwogICAgICAg
ICBSZWZQdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluOwogICAg
ICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBjb25kaXRpb25TZXQ7CiAgICAgICAgIGlm
ICh3YXNGb3VuZCkgewpAQCAtOTkxLDIzICs5OTEsMjkgQEAgc3RhdGljIElubGluZUNhY2hlQWN0
aW9uIHRyeUNhY2hlSW5CeUlEKAogCiAgICAgICAgIGlmIChyZXN1bHQuZ2VuZXJhdGVkU29tZUNv
ZGUoKSkgewogICAgICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpJblJlcGxhY2VXaXRoSnVtcCwg
c3RydWN0dXJlLT5jbGFzc0luZm8oKSwgaWRlbnQsIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlKSk7
Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LmNvZGUo
KSk7CiAgICAgICAgICAgICBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8s
IENvZGVMb2NhdGlvbkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihyZXN1bHQuY29kZSgpKSk7
CiAgICAgICAgIH0KICAgICB9CiAKICAgICBmaXJlV2F0Y2hwb2ludHNBbmRDbGVhclN0dWJJZk5l
ZWRlZCh2bSwgc3R1YkluZm8sIGNvZGVCbG9jaywgcmVzdWx0KTsKLSAgICAKKwogICAgIHJldHVy
biByZXN1bHQuc2hvdWxkR2l2ZVVwTm93KCkgPyBHaXZlVXBPbkNhY2hlIDogUmV0cnlDYWNoZUxh
dGVyOwogfQogCi12b2lkIHJlcGF0Y2hJbkJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBDYWNoZWFibGVJ
ZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgYm9vbCB3YXNGb3VuZCwgY29uc3QgUHJvcGVydHlTbG90
JiBzbG90LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCit2b2lkIHJlcGF0Y2hJbkJ5KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKU09iamVj
dCogYmFzZU9iamVjdCwgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIGJvb2wgd2Fz
Rm91bmQsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJ
bmZvLCBJbkJ5S2luZCBraW5kKQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxl
clNjb3BlKGZhbHNlKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAKLSAgICBp
ZiAodHJ5Q2FjaGVJbkJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIHBy
b3BlcnR5TmFtZSwgd2FzRm91bmQsIHNsb3QsIHN0dWJJbmZvKSA9PSBHaXZlVXBPbkNhY2hlKQot
ICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93
UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uSW5CeUlkKTsKKyAgICBpZiAodHJ5Q2FjaGVJbkJ5
KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHdhc0Zv
dW5kLCBzbG90LCBzdHViSW5mbykgPT0gR2l2ZVVwT25DYWNoZSkgeworICAgICAgICBMT0dfSUMo
KElDRXZlbnQ6OkluUmVwbGFjZVdpdGhHZW5lcmljLCBiYXNlT2JqZWN0LT5jbGFzc0luZm8oZ2xv
YmFsT2JqZWN0LT52bSgpKSwgSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgcHJvcGVydHlOYW1lLnVp
ZCgpKSkpOworICAgICAgICBpZiAoa2luZCA9PSBJbkJ5S2luZDo6Tm9ybWFsKQorICAgICAgICAg
ICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhD
YWxsTG9jYXRpb24sIG9wZXJhdGlvbkluQnlJZEdlbmVyaWMpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93
UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uSW5CeVZhbEdlbmVyaWMpOworICAgIH0KIH0KIAog
c3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlQ2hlY2tQcml2YXRlQnJhbmQoCkBAIC0x
NjgzLDkgKzE2ODksMTIgQEAgc3RhdGljIHZvaWQgcmVzZXRQYXRjaGFibGVKdW1wKFN0cnVjdHVy
ZVN0dWJJbmZvJiBzdHViSW5mbykKICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaEp1bXAoc3R1
YkluZm8ucGF0Y2hhYmxlSnVtcCgpLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24pOwog
fQogCi12b2lkIHJlc2V0SW5CeUlEKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVTdHVi
SW5mbyYgc3R1YkluZm8pCit2b2lkIHJlc2V0SW5CeShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3Ry
dWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBJbkJ5S2luZCBraW5kKQogewotICAgIGZ0bFRodW5r
QXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9u
LCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSk7CisgICAgaWYgKGtpbmQgPT0gSW5CeUtpbmQ6Ok5v
cm1hbCkKKyAgICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1Yklu
Zm8uc2xvd1BhdGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkluQnlJZE9wdGltaXplKTsKKyAgICBl
bHNlCisgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZv
LnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25JbkJ5VmFsT3B0aW1pemUpOwogICAgIElu
bGluZUFjY2Vzczo6cmV3aXJlU3R1YkFzSnVtcChzdHViSW5mbywgc3R1YkluZm8uc2xvd1BhdGhT
dGFydExvY2F0aW9uKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZXBhdGNoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAppbmRleCAz
MTM3OWRjNGU1YTkuLjkyOGM5OWIxMjkxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZXBhdGNoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmgKQEAgLTQ4LDExICs0OCwxNiBAQCBlbnVtIGNsYXNzIERlbEJ5S2luZCB7CiAgICAgTm9ybWFs
QnlWYWwKIH07CiAKK2VudW0gY2xhc3MgSW5CeUtpbmQgeworICAgIE5vcm1hbCwKKyAgICBOb3Jt
YWxCeVZhbAorfTsKKwogdm9pZCByZXBhdGNoQXJyYXlHZXRCeVZhbChKU0dsb2JhbE9iamVjdCos
IENvZGVCbG9jayosIEpTVmFsdWUgYmFzZSwgSlNWYWx1ZSBpbmRleCwgU3RydWN0dXJlU3R1Yklu
Zm8mKTsKIHZvaWQgcmVwYXRjaEdldEJ5KEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNW
YWx1ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciwgY29uc3QgUHJvcGVydHlTbG90JiwgU3RydWN0dXJl
U3R1YkluZm8mLCBHZXRCeUtpbmQpOwogdm9pZCByZXBhdGNoUHV0QnlJRChKU0dsb2JhbE9iamVj
dCosIENvZGVCbG9jayosIEpTVmFsdWUsIFN0cnVjdHVyZSosIENhY2hlYWJsZUlkZW50aWZpZXIs
IGNvbnN0IFB1dFByb3BlcnR5U2xvdCYsIFN0cnVjdHVyZVN0dWJJbmZvJiwgUHV0S2luZCk7CiB2
b2lkIHJlcGF0Y2hEZWxldGVCeShKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIERlbGV0ZVBy
b3BlcnR5U2xvdCYsIEpTVmFsdWUsIFN0cnVjdHVyZSosIENhY2hlYWJsZUlkZW50aWZpZXIsIFN0
cnVjdHVyZVN0dWJJbmZvJiwgRGVsQnlLaW5kLCBFQ01BTW9kZSk7Ci12b2lkIHJlcGF0Y2hJbkJ5
SUQoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU09iamVjdCosIENhY2hlYWJsZUlkZW50
aWZpZXIsIGJvb2wgd2FzRm91bmQsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFN0cnVjdHVyZVN0dWJJ
bmZvJik7Cit2b2lkIHJlcGF0Y2hJbkJ5KEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNP
YmplY3QqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBib29sIHdhc0ZvdW5kLCBjb25zdCBQcm9wZXJ0
eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIEluQnlLaW5kKTsKIHZvaWQgcmVwYXRjaENoZWNr
UHJpdmF0ZUJyYW5kKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqLCBDYWNo
ZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXBhdGNoU2V0UHJp
dmF0ZUJyYW5kKEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXBh
dGNoSW5zdGFuY2VPZihKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFsdWUgdmFsdWUs
IEpTVmFsdWUgcHJvdG90eXBlLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIGJvb2wgd2FzRm91bmQpOwpA
QCAtNjQsNyArNjksNyBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqLCBDYWxsTGlua0luZm8mLCBDYWxsVmFyaWFudAogdm9pZCByZXNldEdldEJ5
KENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgR2V0QnlLaW5kKTsKIHZvaWQgcmVzZXRQ
dXRCeUlEKENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlc2V0RGVsQnko
Q29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBEZWxCeUtpbmQpOwotdm9pZCByZXNldElu
QnlJRChDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwordm9pZCByZXNldEluQnkoQ29k
ZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mLCBJbkJ5S2luZCk7CiB2b2lkIHJlc2V0SW5zdGFu
Y2VPZihTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXNldENoZWNrUHJpdmF0ZUJyYW5kKENv
ZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CiB2b2lkIHJlc2V0U2V0UHJpdmF0ZUJyYW5k
KENvZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCBmYjBkZGY2MWY0NTMuLmE5YTAwNDcz
YzlkNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCkBAIC0xNDI0LDYgKzE0MjQsMTQgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2luX2J5X2lkKQogICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oYXNPYmplY3QoYmFzZVZhbHVl
KS0+aGFzUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2stPmlkZW50aWZpZXIoYnl0ZWNv
ZGUubV9wcm9wZXJ0eSkpKSk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9p
bl9ieV92YWwpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMt
PmFzPE9wSW5CeVZhbD4oKTsKKyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRh
KGNvZGVCbG9jayk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93UGF0aHM6
Om9wSW5CeVZhbChnbG9iYWxPYmplY3QsIGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5t
X2Jhc2UpLCBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9wcm9wZXJ0eSksICZtZXRh
ZGF0YS5tX2FycmF5UHJvZmlsZSkpKTsKK30KKwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX3B1dF9nZXR0ZXJfYnlfaWQpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKaW5kZXggOTJiMjA0MzY4MTBiLi40
M2M2Y2E4NDUzMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5oCkBAIC03Miw2ICs3Miw3IEBAIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfZ2V0X2J5X2lkKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
Z2V0X2J5X2lkX3dpdGhfdGhpcyk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX3B1dF9ieV9pZCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2lu
X2J5X2lkKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfaW5fYnlfdmFs
KTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZGVsX2J5X2lkKTsKIExM
SU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5X3ZhbCk7CiBMTElOVF9T
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9wcml2YXRlX25hbWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmlu
ZGV4IDhhYTIyNjJlYTMzYy4uZGQ0YjNhYzAyNjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0yMDEwLDcgKzIwMTAs
NiBAQCBpZiBub3QgSlNWQUxVRTY0CiAgICAgc2xvd1BhdGhPcChnZXRfcHJvdG90eXBlX29mKQog
ZW5kCiAKLXNsb3dQYXRoT3AoaW5fYnlfdmFsKQogc2xvd1BhdGhPcChoYXNfcHJpdmF0ZV9uYW1l
KQogc2xvd1BhdGhPcChoYXNfcHJpdmF0ZV9icmFuZCkKIHNsb3dQYXRoT3AoaXNfY2FsbGFibGUp
CkBAIC0yMDQ0LDYgKzIwNDMsNyBAQCBtYWNybyBsbGludFNsb3dQYXRoT3Aob3Bjb2RlTmFtZSkK
IGVuZAogCiBsbGludFNsb3dQYXRoT3AoaW5fYnlfaWQpCitsbGludFNsb3dQYXRoT3AoaW5fYnlf
dmFsKQogbGxpbnRTbG93UGF0aE9wKGRlbF9ieV9pZCkKIGxsaW50U2xvd1BhdGhPcChkZWxfYnlf
dmFsKQogbGxpbnRTbG93UGF0aE9wKGluc3RhbmNlb2YpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCA2NGM4NmU2MTE2MjguLmEx
YzQxMzEwODYxNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwCkBAIC04MzAsMTQgKzgzMCw2IEBAIEpTQ19ERUZJTkVfQ09NTU9OX1NM
T1dfUEFUSChzbG93X3BhdGhfaXNfY29uc3RydWN0b3IpCiAgICAgUkVUVVJOKGpzQm9vbGVhbihH
RVRfQyhieXRlY29kZS5tX29wZXJhbmQpLmpzVmFsdWUoKS5pc0NvbnN0cnVjdG9yKHZtKSkpOwog
fQogCi1KU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2luX2J5X3ZhbCkKLXsK
LSAgICBCRUdJTigpOwotICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BJbkJ5VmFsPigpOwot
ICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKLSAgICBS
RVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbkJ5VmFsKGdsb2JhbE9iamVjdCwg
R0VUX0MoYnl0ZWNvZGUubV9iYXNlKS5qc1ZhbHVlKCksIEdFVF9DKGJ5dGVjb2RlLm1fcHJvcGVy
dHkpLmpzVmFsdWUoKSwgJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlKSkpOwotfQotCiBKU0NfREVG
SU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2hhc19wcml2YXRlX25hbWUpCiB7CiAgICAg
QkVHSU4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmgKaW5kZXggM2RiODEzYzQxNWQxLi5jODMwOTgxYjAzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0yNTEsNyArMjUxLDYg
QEAgSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfdHlwZW9mX2lzX29iamVj
dCk7CiBKU0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF90eXBlb2ZfaXNfZnVu
Y3Rpb24pOwogSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfaXNfY2FsbGFi
bGUpOwogSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfaXNfY29uc3RydWN0
b3IpOwotSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfaW5fYnlfdmFsKTsK
IEpTQ19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2hhc19wcml2YXRlX25hbWUp
OwogSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfaGFzX3ByaXZhdGVfYnJh
bmQpOwogSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfc3RyY2F0KTsKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzQ5
YTg1MmYzMzQxLi4xZTM4ZjVlM2ZiMzYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDYtMDIgIFJvc3Mg
S2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxl
bWVudCBKSVQgSUNzIGZvciBJbkJ5VmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjY1NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9pbi1ieS12YWwtaW50MzIuanM6IEFk
ZGVkLgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9pbi1ieS12YWwtc3RyaW5nLWluZGV4Lmpz
OiBBZGRlZC4KKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvaW4tYnktdmFsLXN5bWJvbC5qczog
QWRkZWQuCisKIDIwMjEtMDUtMjggIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNv
bT4KIAogICAgICAgICBGaXggTGlrZWx5RGVuc2VVbnNpZ25lZEludGVnZXJTZXQ6OmNsZWFyKCkK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2luLWJ5LXZhbC1pbnQzMi5qcyBi
L0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2luLWJ5LXZhbC1pbnQzMi5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmM4ODNiOWVmNmQwYQotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2luLWJ5LXZhbC1pbnQzMi5qcwpAQCAtMCwwICsx
LDE2IEBACisvL0Agc2tpcCBpZiAkbW9kZWwgPT0gIkFwcGxlIFdhdGNoIFNlcmllcyAzIiAjIGFk
ZGVkIGJ5IG1hcmstanNjLXN0cmVzcy10ZXN0LnB5CitmdW5jdGlvbiB0ZXN0KG9iamVjdCkKK3sK
KyAgICBpZiAoMSBpbiBvYmplY3QpCisgICAgICAgIHJldHVybiBvYmplY3RbMV07CisgICAgcmV0
dXJuIDA7Cit9Citub0lubGluZSh0ZXN0KTsKKwordmFyIG8xID0gWzQyXTsKK3ZhciBvMiA9IFs0
MiwgNDFdOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKSB7CisgICAgdGVzdChvMSk7
CisgICAgdGVzdChvMik7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9p
bi1ieS12YWwtc3RyaW5nLWluZGV4LmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaW4tYnkt
dmFsLXN0cmluZy1pbmRleC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLjE4MDY3OWFhYzljYwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1h
cmtzL2luLWJ5LXZhbC1zdHJpbmctaW5kZXguanMKQEAgLTAsMCArMSwxNiBAQAorLy9AIHNraXAg
aWYgJG1vZGVsID09ICJBcHBsZSBXYXRjaCBTZXJpZXMgMyIgIyBhZGRlZCBieSBtYXJrLWpzYy1z
dHJlc3MtdGVzdC5weQorZnVuY3Rpb24gdGVzdChvYmplY3QpCit7CisgICAgaWYgKCcxJyBpbiBv
YmplY3QpCisgICAgICAgIHJldHVybiBvYmplY3RbMV07CisgICAgcmV0dXJuIDA7Cit9Citub0lu
bGluZSh0ZXN0KTsKKwordmFyIG8xID0gWzQyXTsKK3ZhciBvMiA9IFs0MiwgNDFdOworCitmb3Ig
KHZhciBpID0gMDsgaSA8IDFlNjsgKytpKSB7CisgICAgdGVzdChvMSk7CisgICAgdGVzdChvMik7
Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pbi1ieS12YWwtc3ltYm9s
LmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaW4tYnktdmFsLXN5bWJvbC5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjhiNmEyYWRkMTU1YgotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2luLWJ5LXZhbC1zeW1ib2wuanMKQEAg
LTAsMCArMSwyMyBAQAorLy9AIHNraXAgaWYgJG1vZGVsID09ICJBcHBsZSBXYXRjaCBTZXJpZXMg
MyIgIyBhZGRlZCBieSBtYXJrLWpzYy1zdHJlc3MtdGVzdC5weQorY29uc3QgY29jb2FTeW1ib2wg
PSBTeW1ib2woJ2NvY29hJyk7Citjb25zdCBjYXBwdWNjaW5vU3ltYm9sID0gU3ltYm9sKCdjYXBw
dWNjaW5vJyk7CisKK2Z1bmN0aW9uIHRlc3Qob2JqZWN0KQoreworICAgIGlmIChjb2NvYVN5bWJv
bCBpbiBvYmplY3QpCisgICAgICAgIHJldHVybiBvYmplY3RbY29jb2FTeW1ib2xdOworICAgIHJl
dHVybiAwOworfQorbm9JbmxpbmUodGVzdCk7CisKK3ZhciBvMSA9IHsKKyAgICBbY29jb2FTeW1i
b2xdOiA0MgorfTsKK3ZhciBvMiA9IHsKKyAgICBbY2FwcHVjY2lub1N5bWJvbF06IDQxCit9Owor
Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKSB7CisgICAgdGVzdChvMSk7CisgICAgdGVz
dChvMik7Cit9Cg==
</data>
<flag name="review"
          id="451882"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430533</attachid>
            <date>2021-06-03 19:23:00 -0700</date>
            <delta_ts>2021-06-03 20:11:02 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>226563.diff</filename>
            <type>text/plain</type>
            <size>106424</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGE3YmJjNGRkN2ZiZi4uNDkwZDg3MDBmZDVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNDMgQEAKKzIwMjEtMDYtMDMgIFJv
c3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisgICAgICAgIFtKU0NdIElt
cGxlbWVudCBKSVQgSUNzIGZvciBJbkJ5VmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY1NjMKKworICAgICAgICBSZXZpZXdlZCBieSBTYWFtIEJh
cmF0aS4KKworICAgICAgICBVbnRpbCBub3csIEluQnlWYWwgaGFzIGhhZCBmZXcgb3B0aW1pemF0
aW9ucyBpbXBsZW1lbnRlZDoKKyAgICAgICAgREZHIHdvdWxkIGF0dGVtcHQgdG8gY29udmVydCBz
dHJpbmcgaW5kZXggbG9va3VwcyB0byBJbkJ5SWQgYW5kIGludDMyIGxvb2t1cHMgdG8gSGFzSW5k
ZXhlZFByb3BlcnR5LAorICAgICAgICBidXQgdGhlcmUgaGFzIGJlZW4gbm8gaW5saW5lIGNhY2hp
bmcgbm9yIGFueSBzcGVjaWFsIGhhbmRsaW5nIGZvciBzeW1ib2wgbG9va3Vwcy4KKworICAgICAg
ICBUaGlzIGhhcyBiZWNvbWUgYSBtb3JlIHVyZ2VudCBwcm9ibGVtIG5vdywgYXMgYCN4IGluIG9i
amAgKGkuZS4gSGFzUHJpdmF0ZU5hbWUgLyBIYXNQcml2YXRlQnJhbmQpCisgICAgICAgIHdpbGwg
bmVlZCB0byBtaW1pYyBJbkJ5VmFsJ3MgaW5saW5lIGNhY2hpbmcgc3RyYXRlZ3kgaW4gb3JkZXIg
dG8gYmUgZGVlbWVkIHBlcmZvcm1hbnQgZW5vdWdoIHRvIHNoaXAuCisKKyAgICAgICAgVGhpcyBw
YXRjaCB0aHVzIGltcGxlbWVudHMgaW5saW5lIGNhY2hpbmcgZm9yIEluQnlWYWwgYXQgYWxsIEpJ
VCB0aWVycy4KKyAgICAgICAgVGhlIHJlc3VsdCBpcyBhIG5pZ2h0LWFuZC1kYXkgZGlmZmVyZW5j
ZSBmb3Igc3ltYm9scywgYSBuaWNlIGJvb3N0IGZvciBzdHJpbmcgaW5kaWNlcywgYW5kIG5vIGNo
YW5nZSBmb3IgaW50MzJzOiAKKworICAgICAgICBpbi1ieS12YWwtc3ltYm9sICAgICAgICAgICAg
ICAgICAgMjAzLjU1NzIrLTIuNzY0NyAgICAgXiAgICAgMTkuMTAzNSstMC43NDk4ICAgICAgICBe
IGRlZmluaXRlbHkgMTAuNjU1NXggZmFzdGVyCisgICAgICAgIGluLWJ5LXZhbC1zdHJpbmctaW5k
ZXggICAgICAgICAgICAgODcuMDM2OCstNDQuNzc2NiAgICAgICAgICA0NS45OTcxKy0zMi4wMDA3
ICAgICAgICAgbWlnaHQgYmUgMS44OTIyeCBmYXN0ZXIKKyAgICAgICAgaW4tYnktdmFsLWludDMy
ICAgICAgICAgICAgICAgICAgIDExMC45OTA0Ky0xLjcxMDkgICAgID8gICAgMTExLjM0MzErLTEu
NzU1OCAgICAgICAgPworCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBieXRlY29kZS9D
aGVja1ByaXZhdGVCcmFuZFN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkNoZWNrUHJpdmF0ZUJy
YW5kU3RhdHVzOjpzaW5nbGVJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9E
ZWxldGVCeVN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkRlbGV0ZUJ5U3RhdHVzOjpzaW5nbGVJ
ZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeVN0YXR1cy5jcHA6Cisg
ICAgICAgIChKU0M6OkdldEJ5U3RhdHVzOjpzaW5nbGVJZGVudGlmaWVyIGNvbnN0KToKKyAgICAg
ICAgKiBieXRlY29kZS9JQ1N0YXR1c01hcC5oOgorICAgICAgICAqIGJ5dGVjb2RlL0lDU3RhdHVz
VXRpbHMuaDoKKyAgICAgICAgKEpTQzo6c2luZ2xlSWRlbnRpZmllckZvcklDU3RhdHVzKToKKyAg
ICAgICAgKiBieXRlY29kZS9JbkJ5SWRWYXJpYW50LmNwcDoKKyAgICAgICAgKEpTQzo6SW5CeUlk
VmFyaWFudDo6SW5CeUlkVmFyaWFudCk6CisgICAgICAgIChKU0M6OkluQnlJZFZhcmlhbnQ6OmF0
dGVtcHRUb01lcmdlKToKKyAgICAgICAgKEpTQzo6SW5CeUlkVmFyaWFudDo6ZHVtcEluQ29udGV4
dCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvSW5CeUlkVmFyaWFudC5oOgorICAgICAgICAo
SlNDOjpJbkJ5SWRWYXJpYW50OjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW5C
eUlkVmFyaWFudDo6b3ZlcmxhcHMpOgorICAgICAgICAqIGJ5dGVjb2RlL0luQnlTdGF0dXMuY3Bw
OiBSZW5hbWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFN0YXR1
cy5jcHAuCisgICAgICAgIChKU0M6OkluQnlTdGF0dXM6OmFwcGVuZFZhcmlhbnQpOgorICAgICAg
ICAoSlNDOjpJbkJ5U3RhdHVzOjpzaHJpbmtUb0ZpdCk6CisgICAgICAgIChKU0M6OkluQnlTdGF0
dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAoSlNDOjpJbkJ5U3RhdHVzOjpjb21wdXRlRm9yU3R1
YkluZm8pOgorICAgICAgICAoSlNDOjpJbkJ5U3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9XaXRo
b3V0RXhpdFNpdGVGZWVkYmFjayk6CisgICAgICAgIChKU0M6OkluQnlTdGF0dXM6Om1lcmdlKToK
KyAgICAgICAgKEpTQzo6SW5CeVN0YXR1czo6ZmlsdGVyKToKKyAgICAgICAgKEpTQzo6SW5CeVN0
YXR1czo6bWFya0lmQ2hlYXApOgorICAgICAgICAoSlNDOjpJbkJ5U3RhdHVzOjpmaW5hbGl6ZSk6
CisgICAgICAgIChKU0M6OkluQnlTdGF0dXM6OnNpbmdsZUlkZW50aWZpZXIgY29uc3QpOgorICAg
ICAgICAoSlNDOjpJbkJ5U3RhdHVzOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9J
bkJ5U3RhdHVzLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SW5CeUlkU3RhdHVzLmguCisgICAgICAgICogYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHA6
CisgICAgICAgIChKU0M6OlJlY29yZGVkU3RhdHVzZXM6OmFkZEluQnlTdGF0dXMpOiBSZW5hbWVk
IGZyb20gYWRkSW5CeUlkU3RhdHVzLgorICAgICAgICAqIGJ5dGVjb2RlL1JlY29yZGVkU3RhdHVz
ZXMuaDoKKyAgICAgICAgKiBieXRlY29kZS9TZXRQcml2YXRlQnJhbmRTdGF0dXMuY3BwOgorICAg
ICAgICAoSlNDOjpTZXRQcml2YXRlQnJhbmRTdGF0dXM6OnNpbmdsZUlkZW50aWZpZXIgY29uc3Qp
OgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlU3R1YkluZm86OnJlc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1
cmVTdHViSW5mby5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRl
cnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmZpbHRlcklDU3RhdHVzKToKKyAgICAgICAgKiBk
ZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlSW5CeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpj
bG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OmNsb2JiZXJzRXhpdFN0YXRlKToKKyAgICAgICAgKiBkZmcvREZHRG9l
c0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdG
aXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUp
OgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6
OmR1bXApOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6SklUQ29tcGlsZXI6OmxpbmspOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5o
OgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjphZGRJbkJ5VmFsKToKKyAgICAgICAg
KiBkZmcvREZHTWF5RXhpdC5jcHA6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpOb2RlOjpoYXNJbkJ5U3RhdHVzKTogUmVuYW1lZCBmcm9tIGhhc0luQnlJZFN0
YXR1cy4KKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjppbkJ5U3RhdHVzKTogUmVuYW1lZCBmcm9t
IGluQnlJZFN0YXR1cy4KKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBk
ZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU2FmZVRv
RXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVJbkJ5VmFsKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgor
ICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1ZhcmFyZ3NGb3J3
YXJkaW5nUGhhc2UuY3BwOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAg
ICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1Rv
QjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9k
ZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVJbkJ5KToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUluQnlJZCk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVJbkJ5VmFsKToKKyAg
ICAgICAgKiBqaXQvSUNTdGF0cy5oOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnBy
aXZhdGVDb21waWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKEpTQzo6SklUOjpsaW5rKToKKyAgICAg
ICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6SklUSW5CeVZhbEdlbmVyYXRvcjo6SklUSW5CeVZhbEdlbmVyYXRv
cik6CisgICAgICAgIChKU0M6OkpJVEluQnlWYWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgp
OgorICAgICAgICAoSlNDOjpKSVRJbkJ5VmFsR2VuZXJhdG9yOjpmaW5hbGl6ZSk6CisgICAgICAg
IChKU0M6OkpJVEluQnlJZEdlbmVyYXRvcjo6SklUSW5CeUlkR2VuZXJhdG9yKToKKyAgICAgICAg
KiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6SklURGVsQnlJ
ZEdlbmVyYXRvcjo6c2xvd1BhdGhKdW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SklUSW5CeVZh
bEdlbmVyYXRvcjo6SklUSW5CeVZhbEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVEluQnlW
YWxHZW5lcmF0b3I6OnNsb3dQYXRoSnVtcCBjb25zdCk6CisgICAgICAgICogaml0L0pJVE9wZXJh
dGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAg
ICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNj
ZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2luX2J5X3ZhbCk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfdmFsKToKKyAgICAgICAgKiBqaXQvSklUUHJv
cGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9pbl9ieV92
YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2luX2J5X3ZhbCk6CisgICAgICAg
ICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjp0cnlDYWNoZUluQnkpOiBSZW5hbWVk
IGZyb20gdHJ5Q2FjaGVJbkJ5SUQuCisgICAgICAgIChKU0M6OnJlcGF0Y2hJbkJ5KTogUmVuYW1l
ZCBmcm9tIHJlcGF0Y2hJbkJ5SUQuCisgICAgICAgIChKU0M6OnJlc2V0SW5CeSk6IFJlbmFtZWQg
ZnJvbSByZXNldEluQnlJRC4KKyAgICAgICAgKiBqaXQvUmVwYXRjaC5oOgorICAgICAgICAqIGxs
aW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1df
UEFUSF9ERUNMKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5oOgorICAgICAgICAq
IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorCiAy
MDIxLTA2LTAyICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CiAKICAgICAg
ICAgQjNNb3ZlQ29uc3RhbnRzIHNob3VsZCBmaWx0ZXIgZGlyZWN0bHkgb24gVmFsdWVzLCBhbmQg
b25seSBjcmVhdGUgVmFsdWVLZXlzIHdoZW4gdXNlZnVsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDRjOTk2YWNiY2YwMi4uMTVjYzIyMWIxMjJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTQwMSw3ICsxNDAxLDkgQEAKIAkJQTFENzkyRkYxQjQzODY0QjAwNDUx
NkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFENzkyRjkxQjQzODY0QjAwNDUxNkY1IC8qIElu
dGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oICovOyB9OwogCQlBMUQ3OTMwMTFCNDM4NjRCMDA0
NTE2RjUgLyogSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFENzkyRkIxQjQzODY0QjAwNDUxNkY1IC8qIElu
dGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaCAqLzsgfTsKIAkJQTMyMUFBNkQyNjI2MzU5QjAwMjNB
REEyIC8qIEludGxXb3JrYXJvdW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBMzIxQUE2QzI2MjYzNTlCMDAyM0FEQTIgLyogSW50bFdvcmthcm91bmQu
aCAqLzsgfTsKKwkJQTM4MkM1MzEyNjY3MTExRDAwNDJDRDk5IC8qIEluQnlJZFZhcmlhbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMzA1RkIxMjBC
MEY3ODgwMENFQjgyQiAvKiBJbkJ5SWRWYXJpYW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTM4RDI1MEUyNTgwMEQ0NDAwNDJCRkREIC8qIEpT
QXJyYXlCdWZmZXJQcm90b3R5cGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBMzhEMjUwRDI1ODAwRDQzMDA0MkJGREQgLyogSlNBcnJheUJ1
ZmZlclByb3RvdHlwZUlubGluZXMuaCAqLzsgfTsKKwkJQTM4RDVCRkMyNjY2RDNEQTAwQTEwOUE2
IC8qIEluQnlTdGF0dXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEEzOEQ1QkZBMjY2NkQzREEwMEExMDlBNiAvKiBJbkJ5U3RhdHVzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTNFRTg1NDMyNjI1MTRC
MDAwRkM5QjhEIC8qIEludGxXb3JrYXJvdW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzNzYxOTQwMjYyNTEyN0MwMENCQ0JBOSAvKiBJbnRsV29y
a2Fyb3VuZC5jcHAgKi87IH07CiAJCUEzRkY5QkM3MjIzNDc0OTEwMEIxQTlBQiAvKiBZYXJyRmxh
Z3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzRkY5
QkM1MjIzNDc0NjYwMEIxQTlBQiAvKiBZYXJyRmxhZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTAzRkExQTE4OEUwRkIwMDAxMTBGMTQgLyog
SmF2YVNjcmlwdENhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTUwM0ZBMTQxODhFMEZBRjAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJh
bWUuaCAqLzsgfTsKQEAgLTQ0MzAsNiArNDQzMiw4IEBACiAJCUEzMjFBQTZDMjYyNjM1OUIwMDIz
QURBMiAvKiBJbnRsV29ya2Fyb3VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbnRsV29ya2Fyb3VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzc2MTk0
MDI2MjUxMjdDMDBDQkNCQTkgLyogSW50bFdvcmthcm91bmQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSW50bFdvcmthcm91bmQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBMzhEMjUwRDI1ODAwRDQzMDA0MkJGREQgLyogSlNBcnJheUJ1ZmZlclBy
b3RvdHlwZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBcnJh
eUJ1ZmZlclByb3RvdHlwZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTM4RDVCRjkyNjY2RDNEQTAwQTEwOUE2IC8qIEluQnlTdGF0dXMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5CeVN0YXR1cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUEzOEQ1QkZBMjY2NkQzREEwMEExMDlBNiAvKiBJbkJ5U3RhdHVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluQnlTdGF0dXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTNBRkY5MkIyNDVBM0NGOTAwQzlCQTNCIC8qIEludGxMb2NhbGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bExvY2FsZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBM0FGRjkyQzI0NUEzQ0ZBMDBDOUJBM0IgLyogSW50bExv
Y2FsZUNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxM
b2NhbGVDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBM0FGRjky
RDI0NUEzQ0ZBMDBDOUJBM0IgLyogSW50bExvY2FsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBJbnRsTG9jYWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTUwNTgsMTAgKzUwNjIsOCBAQAogCQlFMzI4MkJCOTFGRTkzMEEzMDBFREFGNzEgLyog
WWFyckVycm9yQ29kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBZ
YXJyRXJyb3JDb2RlLmNwcDsgcGF0aCA9IHlhcnIvWWFyckVycm9yQ29kZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMjgyQkJBMUZFOTMwQTQwMEVEQUY3MSAvKiBZYXJyRXJy
b3JDb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFlhcnJFcnJvckNvZGUu
aDsgcGF0aCA9IHlhcnIvWWFyckVycm9yQ29kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMzJDM0M2ODIzRTk0QzFFMDBCQzk3QzAgLyogVW5saW5rZWRDb2RlQmxvY2tHZW5lcmF0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5saW5rZWRDb2RlQmxvY2tH
ZW5lcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTMzMDVGQUYyMEIwRjc4
NzAwQ0VCODJCIC8qIEluQnlJZFN0YXR1cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbkJ5SWRTdGF0dXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzMDVG
QjAyMEIwRjc4NzAwQ0VCODJCIC8qIEluQnlJZFZhcmlhbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSW5CeUlkVmFyaWFudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzMzA1RkIxMjBCMEY3ODgwMENFQjgyQiAvKiBJbkJ5SWRWYXJpYW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluQnlJZFZhcmlhbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTMzMDVGQjIyMEIwRjc4ODAwQ0VCODJCIC8qIEluQnlJ
ZFN0YXR1cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbkJ5SWRT
dGF0dXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzMwOTVEQzIzMjEwQTE0
MDBFQjc4NTYgLyogSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0ludGVybmFsRmllbGRPYmplY3RJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzMzRDQkIyMjFGRDk2QTgwMDBFQjE3OCAvKiBSZWdFeHBHbG9iYWxEYXRhLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZ0V4cEdsb2JhbERhdGEuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzM0Q0JCMzIxRkQ5NkE5MDAwRUIxNzggLyogUmVn
RXhwR2xvYmFsRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBH
bG9iYWxEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MjgyLDkgKzYyODQs
OSBAQAogCQkJCUZFM0EwNkI5MUMxMTAzRDkwMDM5MEZERCAvKiBKSVRSaWdodFNoaWZ0R2VuZXJh
dG9yLmggKi8sCiAJCQkJNzIxMzFCRjMyNjU4N0VGMjAwNzExNENGIC8qIEpJVFNhZmVwb2ludC5j
cHAgKi8sCiAJCQkJNzIxMzFCRjUyNjU4N0VGMjAwNzExNENGIC8qIEpJVFNhZmVwb2ludC5oICov
LAorCQkJCTcyMTMxQkY0MjY1ODdFRjIwMDcxMTRDRiAvKiBKSVRTY2FubmFibGUuaCAqLywKIAkJ
CQk1MkI1MTAwQzI2NUVGQ0Q0MDA4OTcwRTcgLyogSklUU2l6ZVN0YXRpc3RpY3MuY3BwICovLAog
CQkJCTUyQjUxMDBCMjY1RUZDRDQwMDg5NzBFNyAvKiBKSVRTaXplU3RhdGlzdGljcy5oICovLAot
CQkJCTcyMTMxQkY0MjY1ODdFRjIwMDcxMTRDRiAvKiBKSVRTY2FubmFibGUuaCAqLywKIAkJCQkw
Rjc2NkQyNjE1QThDQzFCMDA4RjM2M0UgLyogSklUU3R1YlJvdXRpbmUuY3BwICovLAogCQkJCTBG
NzY2RDFDMTVBNTAyOEQwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZS5oICovLAogCQkJCUZFNDIz
ODhGMUJFMThDMTIwMDUxNDczNyAvKiBKSVRTdWJHZW5lcmF0b3IuY3BwICovLApAQCAtODU3Nywx
MCArODU3OSwxMCBAQAogCQkJCTBGNDRBN0FGMjBCRjY4NUYwMDIyQjE3MSAvKiBJQ1N0YXR1c01h
cC5oICovLAogCQkJCTBGNDRBN0I1MjBDMEJFM0YwMDIyQjE3MSAvKiBJQ1N0YXR1c1V0aWxzLmNw
cCAqLywKIAkJCQkwRkIzOTlCRDIwQUY2QjM4MDAxN0UyMTMgLyogSUNTdGF0dXNVdGlscy5oICov
LAotCQkJCUUzMzA1RkIyMjBCMEY3ODgwMENFQjgyQiAvKiBJbkJ5SWRTdGF0dXMuY3BwICovLAot
CQkJCUUzMzA1RkFGMjBCMEY3ODcwMENFQjgyQiAvKiBJbkJ5SWRTdGF0dXMuaCAqLywKIAkJCQlF
MzMwNUZCMDIwQjBGNzg3MDBDRUI4MkIgLyogSW5CeUlkVmFyaWFudC5jcHAgKi8sCiAJCQkJRTMz
MDVGQjEyMEIwRjc4ODAwQ0VCODJCIC8qIEluQnlJZFZhcmlhbnQuaCAqLywKKwkJCQlBMzhENUJG
OTI2NjZEM0RBMDBBMTA5QTYgLyogSW5CeVN0YXR1cy5jcHAgKi8sCisJCQkJQTM4RDVCRkEyNjY2
RDNEQTAwQTEwOUE2IC8qIEluQnlTdGF0dXMuaCAqLywKIAkJCQk3OTA1QkI2NjFEMTIwNTBFMDAx
OUZFNTcgLyogSW5saW5lQWNjZXNzLmNwcCAqLywKIAkJCQk3OTA1QkI2NzFEMTIwNTBFMDAxOUZF
NTcgLyogSW5saW5lQWNjZXNzLmggKi8sCiAJCQkJMTQ4QTdCRUQxQjgyOTc1QTAwMkQ5MTU3IC8q
IElubGluZUNhbGxGcmFtZS5jcHAgKi8sCkBAIC05NjE3LDcgKzk2MTksNiBAQAogCQkJCTBGMkJE
QzIxMTUxRTgwM0IwMENEODkxMCAvKiBERkdJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMzAwQjdDMThBQjFCMTQwMEE2RDcyRSAvKiBERkdJbnRlZ2VyQ2hlY2tDb21iaW5pbmdQ
aGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY4OThGMzIxQjI3Njg5RjAwODNBMzNDIC8qIERG
R0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MkI1
MTAwRDI2NUVGQ0RCMDA4OTcwRTcgLyogSklUU2l6ZVN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGQzk3RjNFMTgyMDIxMTkwMDJDOUIyNiAvKiBERkdJbnZhbGlkYXRpb25Qb2ludElu
amVjdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEEzNDE3MEQ0MEJGMDBCQjcy
MkMgLyogREZHSklUQ29kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFQzlEQ0MxMzI4REY4MjAw
MkIyQUQ3IC8qIERGR0pJVENvbXBpbGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTk5MjAsNiArOTky
MSw4IEBACiAJCQkJQkMxOEM0MEYwRTE2RjVDRDAwQjM0NDYwIC8qIElkZW50aWZpZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg2MDZEREVBMThEQTQ0QUIwMEEzODNEMCAvKiBJZGVudGlmaWVySW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVGRDAwNzYxODlCMDM4QzAwNjMzMjMxIC8qIElk
ZW50aWZpZXJzRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTM4MkM1MzEyNjY3MTExRDAw
NDJDRDk5IC8qIEluQnlJZFZhcmlhbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUEzOEQ1QkZDMjY2
NkQzREEwMEExMDlBNiAvKiBJbkJ5U3RhdHVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjVGOEJD
RTE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkI3RjM5OTE1RUQ4RTQ2MDBGMTY3QjIgLyogSW5kZXhpbmdIZWFkZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQjdGMzlBMTVFRDhFNDYwMEYxNjdCMiAvKiBJbmRleGluZ0hlYWRlcklu
bGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMTAwNzEsNiArMTAwNzQsNyBAQAogCQkJCUZFM0Ew
NkMwMUMxMTA0MUEwMDM5MEZERCAvKiBKSVRSaWdodFNoaWZ0R2VuZXJhdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk3MjEzMUJGOTI2NTg3RUYyMDA3MTE0Q0YgLyogSklUU2FmZXBvaW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQk3MjEzMUJGODI2NTg3RUYyMDA3MTE0Q0YgLyogSklUU2Nhbm5hYmxl
LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MkI1MTAwRDI2NUVGQ0RCMDA4OTcwRTcgLyogSklUU2l6
ZVN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzY2RDMxMTVBQTgxMTIwMDhGMzYz
RSAvKiBKSVRTdHViUm91dGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3NjZEMkMxNUE4Q0Mz
QTAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjVF
RjkxRjE2ODc4RjdEMDAzRTVDMjUgLyogSklUVGh1bmtzLmggaW4gSGVhZGVycyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCAwYzI4NjAwNGZlYjEuLjg4NGI4ZjllOGFkOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtMjM5LDcgKzIzOSw3IEBAIGJ5dGVjb2RlL0dl
dEJ5SWRWYXJpYW50LmNwcAogYnl0ZWNvZGUvR2V0dGVyU2V0dGVyQWNjZXNzQ2FzZS5jcHAKIGJ5
dGVjb2RlL0lDU3RhdHVzTWFwLmNwcAogYnl0ZWNvZGUvSUNTdGF0dXNVdGlscy5jcHAKLWJ5dGVj
b2RlL0luQnlJZFN0YXR1cy5jcHAKK2J5dGVjb2RlL0luQnlTdGF0dXMuY3BwCiBieXRlY29kZS9J
bkJ5SWRWYXJpYW50LmNwcAogYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmNwcAogYnl0ZWNvZGUvSW5s
aW5lQ2FsbEZyYW1lLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DaGVja1ByaXZhdGVCcmFuZFN0YXR1cy5jcHAKaW5kZXggZDU0ZmEyM2JlYzNkLi5m
ZjA0NzJjZDEwMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
aGVja1ByaXZhdGVCcmFuZFN0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmNwcApAQCAtMjE5LDIwICsyMTksNyBAQCB2
b2lkIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOjpmaWx0ZXIoY29uc3QgU3RydWN0dXJlU2V0JiBz
dHJ1Y3R1cmVTZXQpCiAKIENhY2hlYWJsZUlkZW50aWZpZXIgQ2hlY2tQcml2YXRlQnJhbmRTdGF0
dXM6OnNpbmdsZUlkZW50aWZpZXIoKSBjb25zdAogewotICAgIGlmIChtX3ZhcmlhbnRzLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBDYWNoZWFibGVJZGVudGlmaWVy
IHJlc3VsdCA9IG1fdmFyaWFudHMuZmlyc3QoKS5pZGVudGlmaWVyKCk7Ci0gICAgaWYgKCFyZXN1
bHQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwg
bV92YXJpYW50cy5zaXplKCk7ICsraSkgewotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlk
ZW50aWZpZXIgPSBtX3ZhcmlhbnRzW2ldLmlkZW50aWZpZXIoKTsKLSAgICAgICAgaWYgKCFpZGVu
dGlmaWVyKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIGlmIChpZGVudGlm
aWVyICE9IHJlc3VsdCkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLSAgICBy
ZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBzaW5nbGVJZGVudGlmaWVyRm9ySUNTdGF0dXMobV92
YXJpYW50cyk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRGVsZXRlQnlTdGF0dXMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmNwcAppbmRleCAwMTkwOWEx
ZTEzMGIuLjcyMTZmNGE0MGIyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0RlbGV0ZUJ5U3RhdHVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRGVsZXRlQnlTdGF0dXMuY3BwCkBAIC0yNDUsMjAgKzI0NSw3IEBAIHZvaWQgRGVsZXRl
QnlTdGF0dXM6OmZpbHRlcihjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCkKIAogQ2FjaGVhYmxlSWRl
bnRpZmllciBEZWxldGVCeVN0YXR1czo6c2luZ2xlSWRlbnRpZmllcigpIGNvbnN0CiB7Ci0gICAg
aWYgKG1fdmFyaWFudHMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAg
IENhY2hlYWJsZUlkZW50aWZpZXIgcmVzdWx0ID0gbV92YXJpYW50cy5maXJzdCgpLmlkZW50aWZp
ZXIoKTsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgZm9y
IChzaXplX3QgaSA9IDE7IGkgPCBtX3ZhcmlhbnRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIENh
Y2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IG1fdmFyaWFudHNbaV0uaWRlbnRpZmllcigp
OwotICAgICAgICBpZiAoIWlkZW50aWZpZXIpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICAgICAgaWYgKGlkZW50aWZpZXIgIT0gcmVzdWx0KQotICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHNpbmdsZUlkZW50
aWZpZXJGb3JJQ1N0YXR1cyhtX3ZhcmlhbnRzKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlz
aXRvcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0
YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3Bw
CmluZGV4IGJkNzRmYjY0ZjM0MS4uZmFlYjM4YzFhZTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9HZXRCeVN0YXR1cy5jcHAKQEAgLTU3OSwyMCArNTc5LDcgQEAgQ2Fj
aGVhYmxlSWRlbnRpZmllciBHZXRCeVN0YXR1czo6c2luZ2xlSWRlbnRpZmllcigpIGNvbnN0CiAg
ICAgaWYgKGlzTW9kdWxlTmFtZXNwYWNlKCkpCiAgICAgICAgIHJldHVybiBtX21vZHVsZU5hbWVz
cGFjZURhdGEtPm1faWRlbnRpZmllcjsKIAotICAgIGlmIChtX3ZhcmlhbnRzLmlzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBDYWNoZWFibGVJZGVudGlmaWVyIHJlc3Vs
dCA9IG1fdmFyaWFudHMuZmlyc3QoKS5pZGVudGlmaWVyKCk7Ci0gICAgaWYgKCFyZXN1bHQpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgbV92YXJp
YW50cy5zaXplKCk7ICsraSkgewotICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZp
ZXIgPSBtX3ZhcmlhbnRzW2ldLmlkZW50aWZpZXIoKTsKLSAgICAgICAgaWYgKCFpZGVudGlmaWVy
KQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIGlmIChpZGVudGlmaWVyICE9
IHJlc3VsdCkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLSAgICByZXR1cm4g
cmVzdWx0OworICAgIHJldHVybiBzaW5nbGVJZGVudGlmaWVyRm9ySUNTdGF0dXMobV92YXJpYW50
cyk7CiB9CiAKIHZvaWQgR2V0QnlTdGF0dXM6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzTWFwLmgKaW5kZXggZjAz
MTkwMTE1YTNiLi5mYTBhNmQ1MjNiN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JQ1N0YXR1c01hcC5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIENhbGxMaW5rSW5mbzsK
IGNsYXNzIENhbGxMaW5rU3RhdHVzOwogY2xhc3MgQ29kZUJsb2NrOwogY2xhc3MgR2V0QnlTdGF0
dXM7Ci1jbGFzcyBJbkJ5SWRTdGF0dXM7CitjbGFzcyBJbkJ5U3RhdHVzOwogY2xhc3MgUHV0QnlJ
ZFN0YXR1czsKIGNsYXNzIERlbGV0ZUJ5U3RhdHVzOwogY2xhc3MgU3RydWN0dXJlU3R1YkluZm87
CkBAIC00Nyw3ICs0Nyw3IEBAIHN0cnVjdCBJQ1N0YXR1cyB7CiAgICAgQnlWYWxJbmZvKiBieVZh
bEluZm8geyBudWxscHRyIH07CiAgICAgQ2FsbExpbmtTdGF0dXMqIGNhbGxTdGF0dXMgeyBudWxs
cHRyIH07CiAgICAgR2V0QnlTdGF0dXMqIGdldFN0YXR1cyB7IG51bGxwdHIgfTsKLSAgICBJbkJ5
SWRTdGF0dXMqIGluU3RhdHVzIHsgbnVsbHB0ciB9OworICAgIEluQnlTdGF0dXMqIGluU3RhdHVz
IHsgbnVsbHB0ciB9OwogICAgIFB1dEJ5SWRTdGF0dXMqIHB1dFN0YXR1cyB7IG51bGxwdHIgfTsK
ICAgICBEZWxldGVCeVN0YXR1cyogZGVsZXRlU3RhdHVzIHsgbnVsbHB0ciB9OwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c1V0aWxzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSUNTdGF0dXNVdGlscy5oCmluZGV4IGY4MWZh
YjAxOTUwNi4uN2FiYjRiMzQ1M2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSUNTdGF0dXNVdGlscy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JQ1N0YXR1c1V0aWxzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiQnl0ZWNvZGVJbmRleC5oIgorI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJFeGl0RmxhZy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTcyLDYgKzcz
LDI1IEBAIHZvaWQgZmlsdGVySUNTdGF0dXNWYXJpYW50cyhWYXJpYW50VmVjdG9yVHlwZSYgdmFy
aWFudHMsIGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0CiAgICAgICAgIH0pOwogfQogCit0ZW1wbGF0
ZTx0eXBlbmFtZSBWYXJpYW50VmVjdG9yVHlwZT4KK0NhY2hlYWJsZUlkZW50aWZpZXIgc2luZ2xl
SWRlbnRpZmllckZvcklDU3RhdHVzKFZhcmlhbnRWZWN0b3JUeXBlJiB2YXJpYW50cykKK3sKKyAg
ICBpZiAodmFyaWFudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IENhY2hlYWJsZUlkZW50aWZpZXIgcmVzdWx0ID0gdmFyaWFudHMuZmlyc3QoKS5pZGVudGlmaWVy
KCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgZm9y
IChzaXplX3QgaSA9IDE7IGkgPCB2YXJpYW50cy5zaXplKCk7ICsraSkgeworICAgICAgICBDYWNo
ZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSB2YXJpYW50c1tpXS5pZGVudGlmaWVyKCk7Cisg
ICAgICAgIGlmICghaWRlbnRpZmllciB8fCBpZGVudGlmaWVyICE9IHJlc3VsdCkKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIEV4
aXRGbGFnIGhhc0JhZENhY2hlRXhpdFNpdGUoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBCeXRl
Y29kZUluZGV4KTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeUlkVmFyaWFudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvSW5CeUlkVmFyaWFudC5jcHAKaW5kZXggZjRjMmI1ODZiMTg4Li5mNDk0
YmZiZGI0YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5
SWRWYXJpYW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeUlk
VmFyaWFudC5jcHAKQEAgLTI3LDEyICsyNywxNSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkluQnlJZFZhcmlhbnQuaCIKIAorI2luY2x1ZGUgIkNhY2hlYWJsZUlkZW50aWZpZXJJ
bmxpbmVzLmgiCisKIG5hbWVzcGFjZSBKU0MgewogCi1JbkJ5SWRWYXJpYW50OjpJbkJ5SWRWYXJp
YW50KGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0LCBQcm9wZXJ0eU9mZnNldCBvZmZz
ZXQsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0JiBjb25kaXRpb25TZXQpCitJbkJ5
SWRWYXJpYW50OjpJbkJ5SWRWYXJpYW50KENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwg
Y29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCwg
Y29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmIGNvbmRpdGlvblNldCkKICAgICA6IG1f
c3RydWN0dXJlU2V0KHN0cnVjdHVyZVNldCkKICAgICAsIG1fY29uZGl0aW9uU2V0KGNvbmRpdGlv
blNldCkKICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKKyAgICAsIG1faWRlbnRpZmllcihXVEZNb3Zl
KGlkZW50aWZpZXIpKQogewogICAgIGlmICghc3RydWN0dXJlU2V0LnNpemUoKSkgewogICAgICAg
ICBBU1NFUlQob2Zmc2V0ID09IGludmFsaWRPZmZzZXQpOwpAQCAtNDIsNiArNDUsMTIgQEAgSW5C
eUlkVmFyaWFudDo6SW5CeUlkVmFyaWFudChjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNl
dCwgUHJvcGVydHlPZmZzZXQgb2YKIAogYm9vbCBJbkJ5SWRWYXJpYW50OjphdHRlbXB0VG9NZXJn
ZShjb25zdCBJbkJ5SWRWYXJpYW50JiBvdGhlcikKIHsKKyAgICBpZiAoISFtX2lkZW50aWZpZXIg
IT0gISFvdGhlci5tX2lkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlm
IChtX2lkZW50aWZpZXIgJiYgKG1faWRlbnRpZmllciAhPSBvdGhlci5tX2lkZW50aWZpZXIpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBpZiAobV9vZmZzZXQgIT0gb3RoZXIubV9vZmZz
ZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtODksMTMgKzk4LDEzIEBAIHZvaWQgSW5C
eUlkVmFyaWFudDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogCiB2b2lkIEluQnlJZFZh
cmlhbnQ6OmR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqIGNvbnRl
eHQpIGNvbnN0CiB7CisgICAgb3V0LnByaW50KCI8aWQ9JyIsIG1faWRlbnRpZmllciwgIicsICIp
OwogICAgIGlmICghaXNTZXQoKSkgewotICAgICAgICBvdXQucHJpbnQoIjxlbXB0eT4iKTsKKyAg
ICAgICAgb3V0LnByaW50KCJlbXB0eT4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IG91dC5wcmludCgKLSAgICAgICAgIjwiLCBpbkNvbnRleHQoc3RydWN0dXJlU2V0KCksIGNvbnRl
eHQpLCAiLCAiLCBpbkNvbnRleHQobV9jb25kaXRpb25TZXQsIGNvbnRleHQpKTsKKyAgICBvdXQu
cHJpbnQoaW5Db250ZXh0KHN0cnVjdHVyZVNldCgpLCBjb250ZXh0KSwgIiwgIiwgaW5Db250ZXh0
KG1fY29uZGl0aW9uU2V0LCBjb250ZXh0KSk7CiAgICAgb3V0LnByaW50KCIsIG9mZnNldCA9ICIs
IG9mZnNldCgpKTsKICAgICBvdXQucHJpbnQoIj4iKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRWYXJpYW50LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvSW5CeUlkVmFyaWFudC5oCmluZGV4IDc4MmE1ZGE4ODEwNi4uN2Q3MzIz
OGZiZTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeUlk
VmFyaWFudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRWYXJp
YW50LmgKQEAgLTI2LDYgKzI2LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJDYWNo
ZWFibGVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQu
aCIKICNpbmNsdWRlICJQcm9wZXJ0eU9mZnNldC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVNldC5o
IgpAQCAtMzUsMTMgKzM2LDEzIEBAIG5hbWVzcGFjZSBET01KSVQgewogY2xhc3MgR2V0dGVyU2V0
dGVyOwogfQogCi1jbGFzcyBJbkJ5SWRTdGF0dXM7CitjbGFzcyBJbkJ5U3RhdHVzOwogc3RydWN0
IER1bXBDb250ZXh0OwogCiBjbGFzcyBJbkJ5SWRWYXJpYW50IHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBJbkJ5SWRWYXJpYW50KGNvbnN0IFN0cnVjdHVyZVNl
dCYgPSBTdHJ1Y3R1cmVTZXQoKSwgUHJvcGVydHlPZmZzZXQgPSBpbnZhbGlkT2Zmc2V0LCBjb25z
dCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgPSBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNl
dCgpKTsKKyAgICBJbkJ5SWRWYXJpYW50KENhY2hlYWJsZUlkZW50aWZpZXIsIGNvbnN0IFN0cnVj
dHVyZVNldCYgPSBTdHJ1Y3R1cmVTZXQoKSwgUHJvcGVydHlPZmZzZXQgPSBpbnZhbGlkT2Zmc2V0
LCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgPSBPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvblNldCgpKTsKIAogICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiAhIW1fc3RydWN0
dXJlU2V0LnNpemUoKTsgfQogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJl
dHVybiBpc1NldCgpOyB9CkBAIC02MywxNyArNjQsMjYgQEAgcHVibGljOgogICAgIHZvaWQgZHVt
cChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVh
bSYsIER1bXBDb250ZXh0KikgY29uc3Q7CiAKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKwogICAgIGJvb2wgb3Zlcmxh
cHMoY29uc3QgSW5CeUlkVmFyaWFudCYgb3RoZXIpCiAgICAgeworICAgICAgICBpZiAoISFtX2lk
ZW50aWZpZXIgIT0gISFvdGhlci5tX2lkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgaWYgKG1faWRlbnRpZmllcikgeworICAgICAgICAgICAgaWYgKG1faWRlbnRp
ZmllciAhPSBvdGhlci5tX2lkZW50aWZpZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICB9CiAgICAgICAgIHJldHVybiBzdHJ1Y3R1cmVTZXQoKS5vdmVybGFwcyhvdGhl
ci5zdHJ1Y3R1cmVTZXQoKSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBJ
bkJ5SWRTdGF0dXM7CisgICAgZnJpZW5kIGNsYXNzIEluQnlTdGF0dXM7CiAKICAgICBTdHJ1Y3R1
cmVTZXQgbV9zdHJ1Y3R1cmVTZXQ7CiAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgbV9j
b25kaXRpb25TZXQ7CiAgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CisgICAgQ2FjaGVhYmxl
SWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRTdGF0dXMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlTdGF0dXMuY3BwCnNpbWlsYXJpdHkg
aW5kZXggNzAlCnJlbmFtZSBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5
SWRTdGF0dXMuY3BwCnJlbmFtZSB0byBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5C
eVN0YXR1cy5jcHAKaW5kZXggNDkzOGE2M2MxYjJhLi44YTZjYzYwZjRjNmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRTdGF0dXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5U3RhdHVzLmNwcApAQCAtMjUsOCArMjUs
OSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJbkJ5SWRTdGF0dXMu
aCIKKyNpbmNsdWRlICJJbkJ5U3RhdHVzLmgiCiAKKyNpbmNsdWRlICJDYWNoZWFibGVJZGVudGlm
aWVySW5saW5lcy5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvbXBsZXhH
ZXRTdGF0dXMuaCIKICNpbmNsdWRlICJJQ1N0YXR1c1V0aWxzLmgiCkBAIC0zNiw0NiArMzcsNDUg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWJvb2wgSW5CeUlkU3RhdHVzOjphcHBlbmRWYXJpYW50
KGNvbnN0IEluQnlJZFZhcmlhbnQmIHZhcmlhbnQpCitib29sIEluQnlTdGF0dXM6OmFwcGVuZFZh
cmlhbnQoY29uc3QgSW5CeUlkVmFyaWFudCYgdmFyaWFudCkKIHsKICAgICByZXR1cm4gYXBwZW5k
SUNTdGF0dXNWYXJpYW50KG1fdmFyaWFudHMsIHZhcmlhbnQpOwogfQogCi12b2lkIEluQnlJZFN0
YXR1czo6c2hyaW5rVG9GaXQoKQordm9pZCBJbkJ5U3RhdHVzOjpzaHJpbmtUb0ZpdCgpCiB7CiAg
ICAgbV92YXJpYW50cy5zaHJpbmtUb0ZpdCgpOwogfQogCiAjaWYgRU5BQkxFKEpJVCkKLUluQnlJ
ZFN0YXR1cyBJbkJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2Nr
LCBJQ1N0YXR1c01hcCYgbWFwLCBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRT
dHJpbmdJbXBsKiB1aWQsIEV4aXRGbGFnIGRpZEV4aXQpCitJbkJ5U3RhdHVzIEluQnlTdGF0dXM6
OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBJQ1N0YXR1c01hcCYgbWFwLCBC
eXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgsIEV4aXRGbGFnIGRpZEV4aXQpCiB7CiAgICAgQ29u
Y3VycmVudEpTTG9ja2VyIGxvY2tlcihwcm9maWxlZEJsb2NrLT5tX2xvY2spOwogCi0gICAgSW5C
eUlkU3RhdHVzIHJlc3VsdDsKKyAgICBJbkJ5U3RhdHVzIHJlc3VsdDsKIAogI2lmIEVOQUJMRShE
RkdfSklUKQotICAgIHJlc3VsdCA9IGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZl
ZWRiYWNrKGxvY2tlciwgcHJvZmlsZWRCbG9jay0+dm0oKSwgbWFwLmdldChDb2RlT3JpZ2luKGJ5
dGVjb2RlSW5kZXgpKS5zdHViSW5mbywgdWlkKTsKKyAgICByZXN1bHQgPSBjb21wdXRlRm9yU3R1
YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjayhsb2NrZXIsIHByb2ZpbGVkQmxvY2stPnZtKCks
IG1hcC5nZXQoQ29kZU9yaWdpbihieXRlY29kZUluZGV4KSkuc3R1YkluZm8pOwogCiAgICAgaWYg
KCFyZXN1bHQudGFrZXNTbG93UGF0aCgpICYmIGRpZEV4aXQpCi0gICAgICAgIHJldHVybiBJbkJ5
SWRTdGF0dXMoVGFrZXNTbG93UGF0aCk7CisgICAgICAgIHJldHVybiBJbkJ5U3RhdHVzKFRha2Vz
U2xvd1BhdGgpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0obWFwKTsKICAgICBVTlVTRURfUEFS
QU0oYnl0ZWNvZGVJbmRleCk7Ci0gICAgVU5VU0VEX1BBUkFNKHVpZCk7CiAgICAgVU5VU0VEX1BB
UkFNKGRpZEV4aXQpOwogI2VuZGlmCiAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1JbkJ5SWRT
dGF0dXMgSW5CeUlkU3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywg
SUNTdGF0dXNNYXAmIG1hcCwgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBVbmlxdWVkU3Ry
aW5nSW1wbCogdWlkKQorSW5CeVN0YXR1cyBJbkJ5U3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9j
ayogcHJvZmlsZWRCbG9jaywgSUNTdGF0dXNNYXAmIG1hcCwgQnl0ZWNvZGVJbmRleCBieXRlY29k
ZUluZGV4KQogewotICAgIHJldHVybiBjb21wdXRlRm9yKHByb2ZpbGVkQmxvY2ssIG1hcCwgYnl0
ZWNvZGVJbmRleCwgdWlkLCBoYXNCYWRDYWNoZUV4aXRTaXRlKHByb2ZpbGVkQmxvY2ssIGJ5dGVj
b2RlSW5kZXgpKTsKKyAgICByZXR1cm4gY29tcHV0ZUZvcihwcm9maWxlZEJsb2NrLCBtYXAsIGJ5
dGVjb2RlSW5kZXgsIGhhc0JhZENhY2hlRXhpdFNpdGUocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJ
bmRleCkpOwogfQogCi1JbkJ5SWRTdGF0dXMgSW5CeUlkU3RhdHVzOjpjb21wdXRlRm9yKAorSW5C
eVN0YXR1cyBJbkJ5U3RhdHVzOjpjb21wdXRlRm9yKAogICAgIENvZGVCbG9jayogcHJvZmlsZWRC
bG9jaywgSUNTdGF0dXNNYXAmIGJhc2VsaW5lTWFwLAotICAgIElDU3RhdHVzQ29udGV4dFN0YWNr
JiBjb250ZXh0U3RhY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0ltcGwq
IHVpZCkKKyAgICBJQ1N0YXR1c0NvbnRleHRTdGFjayYgY29udGV4dFN0YWNrLCBDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4pCiB7CiAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gY29kZU9y
aWdpbi5ieXRlY29kZUluZGV4KCk7CiAgICAgRXhpdEZsYWcgZGlkRXhpdCA9IGhhc0JhZENhY2hl
RXhpdFNpdGUocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCk7CkBAIC04MywyNCArODMsMjQg
QEAgSW5CeUlkU3RhdHVzIEluQnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICBmb3IgKElDU3Rh
dHVzQ29udGV4dCogY29udGV4dCA6IGNvbnRleHRTdGFjaykgewogICAgICAgICBJQ1N0YXR1cyBz
dGF0dXMgPSBjb250ZXh0LT5nZXQoY29kZU9yaWdpbik7CiAgICAgICAgIAotICAgICAgICBhdXRv
IGJsZXNzID0gWyZdIChjb25zdCBJbkJ5SWRTdGF0dXMmIHJlc3VsdCkgLT4gSW5CeUlkU3RhdHVz
IHsKKyAgICAgICAgYXV0byBibGVzcyA9IFsmXSAoY29uc3QgSW5CeVN0YXR1cyYgcmVzdWx0KSAt
PiBJbkJ5U3RhdHVzIHsKICAgICAgICAgICAgIGlmICghY29udGV4dC0+aXNJbmxpbmVkKGNvZGVP
cmlnaW4pKSB7Ci0gICAgICAgICAgICAgICAgSW5CeUlkU3RhdHVzIGJhc2VsaW5lUmVzdWx0ID0g
Y29tcHV0ZUZvcigKLSAgICAgICAgICAgICAgICAgICAgcHJvZmlsZWRCbG9jaywgYmFzZWxpbmVN
YXAsIGJ5dGVjb2RlSW5kZXgsIHVpZCwgZGlkRXhpdCk7CisgICAgICAgICAgICAgICAgSW5CeVN0
YXR1cyBiYXNlbGluZVJlc3VsdCA9IGNvbXB1dGVGb3IoCisgICAgICAgICAgICAgICAgICAgIHBy
b2ZpbGVkQmxvY2ssIGJhc2VsaW5lTWFwLCBieXRlY29kZUluZGV4LCBkaWRFeGl0KTsKICAgICAg
ICAgICAgICAgICBiYXNlbGluZVJlc3VsdC5tZXJnZShyZXN1bHQpOwogICAgICAgICAgICAgICAg
IHJldHVybiBiYXNlbGluZVJlc3VsdDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChk
aWRFeGl0LmlzU2V0KEV4aXRGcm9tSW5saW5lZCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIElu
QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSW5CeVN0
YXR1cyhUYWtlc1Nsb3dQYXRoKTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAg
IH07CiAgICAgICAgIAogI2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICBpZiAoc3RhdHVzLnN0
dWJJbmZvKSB7Ci0gICAgICAgICAgICBJbkJ5SWRTdGF0dXMgcmVzdWx0OworICAgICAgICAgICAg
SW5CeVN0YXR1cyByZXN1bHQ7CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgQ29uY3Vy
cmVudEpTTG9ja2VyIGxvY2tlcihjb250ZXh0LT5vcHRpbWl6ZWRDb2RlQmxvY2stPm1fbG9jayk7
Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRT
aXRlRmVlZGJhY2sobG9ja2VyLCBwcm9maWxlZEJsb2NrLT52bSgpLCBzdGF0dXMuc3R1YkluZm8s
IHVpZCk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91
dEV4aXRTaXRlRmVlZGJhY2sobG9ja2VyLCBwcm9maWxlZEJsb2NrLT52bSgpLCBzdGF0dXMuc3R1
YkluZm8pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHJlc3VsdC5pc1NldCgpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBibGVzcyhyZXN1bHQpOwpAQCAtMTExLDQ0ICsxMTEsNDcg
QEAgSW5CeUlkU3RhdHVzIEluQnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgIHJl
dHVybiBibGVzcygqc3RhdHVzLmluU3RhdHVzKTsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIGNv
bXB1dGVGb3IocHJvZmlsZWRCbG9jaywgYmFzZWxpbmVNYXAsIGJ5dGVjb2RlSW5kZXgsIHVpZCwg
ZGlkRXhpdCk7CisgICAgcmV0dXJuIGNvbXB1dGVGb3IocHJvZmlsZWRCbG9jaywgYmFzZWxpbmVN
YXAsIGJ5dGVjb2RlSW5kZXgsIGRpZEV4aXQpOwogfQogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAK
ICNpZiBFTkFCTEUoREZHX0pJVCkKLUluQnlJZFN0YXR1cyBJbkJ5SWRTdGF0dXM6OmNvbXB1dGVG
b3JTdHViSW5mbyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwgQ29kZUJsb2NrKiBw
cm9maWxlZEJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIENvZGVPcmlnaW4gY29k
ZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKK0luQnlTdGF0dXMgSW5CeVN0YXR1czo6
Y29tcHV0ZUZvclN0dWJJbmZvKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBDb2Rl
QmxvY2sqIHByb2ZpbGVkQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgQ29kZU9y
aWdpbiBjb2RlT3JpZ2luKQogewotICAgIEluQnlJZFN0YXR1cyByZXN1bHQgPSBJbkJ5SWRTdGF0
dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKGxvY2tlciwgcHJv
ZmlsZWRCbG9jay0+dm0oKSwgc3R1YkluZm8sIHVpZCk7CisgICAgSW5CeVN0YXR1cyByZXN1bHQg
PSBJbkJ5U3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjayhs
b2NrZXIsIHByb2ZpbGVkQmxvY2stPnZtKCksIHN0dWJJbmZvKTsKIAogICAgIGlmICghcmVzdWx0
LnRha2VzU2xvd1BhdGgoKSAmJiBoYXNCYWRDYWNoZUV4aXRTaXRlKHByb2ZpbGVkQmxvY2ssIGNv
ZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCgpKSkKLSAgICAgICAgcmV0dXJuIEluQnlJZFN0YXR1cyhU
YWtlc1Nsb3dQYXRoKTsKKyAgICAgICAgcmV0dXJuIEluQnlTdGF0dXMoVGFrZXNTbG93UGF0aCk7
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotSW5CeUlkU3RhdHVzIEluQnlJZFN0YXR1czo6Y29t
cHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2soY29uc3QgQ29uY3VycmVudEpT
TG9ja2VyJiwgVk0mIHZtLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFVuaXF1ZWRTdHJp
bmdJbXBsKiB1aWQpCitJbkJ5U3RhdHVzIEluQnlTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dp
dGhvdXRFeGl0U2l0ZUZlZWRiYWNrKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFZNJiB2bSwg
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvKQogewogICAgIFN0dWJJbmZvU3VtbWFyeSBzdW1t
YXJ5ID0gU3RydWN0dXJlU3R1YkluZm86OnN1bW1hcnkodm0sIHN0dWJJbmZvKTsKICAgICBpZiAo
IWlzSW5saW5lYWJsZShzdW1tYXJ5KSkKLSAgICAgICAgcmV0dXJuIEluQnlJZFN0YXR1cyhzdW1t
YXJ5KTsKKyAgICAgICAgcmV0dXJuIEluQnlTdGF0dXMoc3VtbWFyeSk7CiAgICAgCiAgICAgLy8g
RmluYWxseSBmaWd1cmUgb3V0IGlmIHdlIGNhbiBkZXJpdmUgYW4gYWNjZXNzIHN0cmF0ZWd5Lgot
ICAgIEluQnlJZFN0YXR1cyByZXN1bHQ7CisgICAgSW5CeVN0YXR1cyByZXN1bHQ7CiAgICAgcmVz
dWx0Lm1fc3RhdGUgPSBTaW1wbGU7CiAgICAgc3dpdGNoIChzdHViSW5mby0+Y2FjaGVUeXBlKCkp
IHsKICAgICBjYXNlIENhY2hlVHlwZTo6VW5zZXQ6Ci0gICAgICAgIHJldHVybiBJbkJ5SWRTdGF0
dXMoTm9JbmZvcm1hdGlvbik7CisgICAgICAgIHJldHVybiBJbkJ5U3RhdHVzKE5vSW5mb3JtYXRp
b24pOwogCiAgICAgY2FzZSBDYWNoZVR5cGU6OkluQnlJZFNlbGY6IHsKICAgICAgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBzdHViSW5mby0+dS5ieUlkU2VsZi5iYXNlT2JqZWN0U3RydWN0dXJl
LmdldCgpOwogICAgICAgICBpZiAoc3RydWN0dXJlLT50YWtlc1Nsb3dQYXRoSW5ERkdGb3JJbXB1
cmVQcm9wZXJ0eSgpKQotICAgICAgICAgICAgcmV0dXJuIEluQnlJZFN0YXR1cyhUYWtlc1Nsb3dQ
YXRoKTsKKyAgICAgICAgICAgIHJldHVybiBJbkJ5U3RhdHVzKFRha2VzU2xvd1BhdGgpOworICAg
ICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBzdHViSW5mby0+aWRlbnRpZmll
cigpOworICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gaWRlbnRpZmllci51aWQoKTsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQodWlkKTsKKyAgICAgICAgSW5CeUlkVmFyaWFudCB2YXJp
YW50KFdURk1vdmUoaWRlbnRpZmllcikpOwogICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwot
ICAgICAgICBJbkJ5SWRWYXJpYW50IHZhcmlhbnQ7CiAgICAgICAgIHZhcmlhbnQubV9vZmZzZXQg
PSBzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSh1aWQsIGF0dHJpYnV0ZXMpOwogICAgICAgICBp
ZiAoIWlzVmFsaWRPZmZzZXQodmFyaWFudC5tX29mZnNldCkpCi0gICAgICAgICAgICByZXR1cm4g
SW5CeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgpOworICAgICAgICAgICAgcmV0dXJuIEluQnlTdGF0
dXMoVGFrZXNTbG93UGF0aCk7CiAgICAgICAgIGlmIChhdHRyaWJ1dGVzICYgUHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yT3JWYWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBJbkJ5SWRT
dGF0dXMoVGFrZXNTbG93UGF0aCk7CisgICAgICAgICAgICByZXR1cm4gSW5CeVN0YXR1cyhUYWtl
c1Nsb3dQYXRoKTsKIAogICAgICAgICB2YXJpYW50Lm1fc3RydWN0dXJlU2V0LmFkZChzdHJ1Y3R1
cmUpOwogICAgICAgICBib29sIGRpZEFwcGVuZCA9IHJlc3VsdC5hcHBlbmRWYXJpYW50KHZhcmlh
bnQpOwpAQCAtMTYxLDEwICsxNjQsMTAgQEAgSW5CeUlkU3RhdHVzIEluQnlJZFN0YXR1czo6Y29t
cHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2soY29uc3QgQ29uY3UKICAgICAg
ICAgZm9yICh1bnNpZ25lZCBsaXN0SW5kZXggPSAwOyBsaXN0SW5kZXggPCBsaXN0LT5zaXplKCk7
ICsrbGlzdEluZGV4KSB7CiAgICAgICAgICAgICBjb25zdCBBY2Nlc3NDYXNlJiBhY2Nlc3MgPSBs
aXN0LT5hdChsaXN0SW5kZXgpOwogICAgICAgICAgICAgaWYgKGFjY2Vzcy52aWFQcm94eSgpKQot
ICAgICAgICAgICAgICAgIHJldHVybiBJbkJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIEluQnlTdGF0dXMoVGFrZXNTbG93UGF0aCk7CiAKICAgICAgICAg
ICAgIGlmIChhY2Nlc3MudXNlc1BvbHlQcm90bygpKQotICAgICAgICAgICAgICAgIHJldHVybiBJ
bkJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEluQnlT
dGF0dXMoVGFrZXNTbG93UGF0aCk7CiAKICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gYWNjZXNzLnN0cnVjdHVyZSgpOwogICAgICAgICAgICAgaWYgKCFzdHJ1Y3R1cmUpIHsKQEAg
LTE3NCwxNiArMTc3LDE2IEBAIEluQnlJZFN0YXR1cyBJbkJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JT
dHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKGNvbnN0IENvbmN1CiAgICAgICAgICAgICAg
ICAgLy8gaGF2ZSB0byB1c2UgdmFsdWUgcHJvZmlsaW5nIHRvIGRpc2NvdmVyIHNvbWV0aGluZyB0
aGF0IHRoZSBBY2Nlc3NDYXNlIGNvdWxkIGhhdmUKICAgICAgICAgICAgICAgICAvLyB0b2xkIHVz
LiBCdXQsIGl0IHdvcmtzIHdlbGwgZW5vdWdoLiBTbywgb3VyIG9ubHkgY29uY2VybiBoZXJlIGlz
IHRvIG5vdAogICAgICAgICAgICAgICAgIC8vIGNyYXNoIG9uIG51bGwgc3RydWN0dXJlLgotICAg
ICAgICAgICAgICAgIHJldHVybiBJbkJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIEluQnlTdGF0dXMoVGFrZXNTbG93UGF0aCk7CiAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgIENvbXBsZXhHZXRTdGF0dXMgY29tcGxleEdldFN0YXR1cyA9IENvbXBs
ZXhHZXRTdGF0dXM6OmNvbXB1dGVGb3Ioc3RydWN0dXJlLCBhY2Nlc3MuY29uZGl0aW9uU2V0KCks
IHVpZCk7CisgICAgICAgICAgICBDb21wbGV4R2V0U3RhdHVzIGNvbXBsZXhHZXRTdGF0dXMgPSBD
b21wbGV4R2V0U3RhdHVzOjpjb21wdXRlRm9yKHN0cnVjdHVyZSwgYWNjZXNzLmNvbmRpdGlvblNl
dCgpLCBhY2Nlc3MudWlkKCkpOwogICAgICAgICAgICAgc3dpdGNoIChjb21wbGV4R2V0U3RhdHVz
LmtpbmQoKSkgewogICAgICAgICAgICAgY2FzZSBDb21wbGV4R2V0U3RhdHVzOjpTaG91bGRTa2lw
OgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBjYXNlIENvbXBsZXhH
ZXRTdGF0dXM6OlRha2VzU2xvd1BhdGg6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEluQnlJZFN0
YXR1cyhUYWtlc1Nsb3dQYXRoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSW5CeVN0YXR1cyhU
YWtlc1Nsb3dQYXRoKTsKIAogICAgICAgICAgICAgY2FzZSBDb21wbGV4R2V0U3RhdHVzOjpJbmxp
bmVhYmxlOiB7CiAgICAgICAgICAgICAgICAgc3dpdGNoIChhY2Nlc3MudHlwZSgpKSB7CkBAIC0x
OTEsMTUgKzE5NCwxNSBAQCBJbkJ5SWRTdGF0dXMgSW5CeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1
YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjayhjb25zdCBDb25jdQogICAgICAgICAgICAgICAg
IGNhc2UgQWNjZXNzQ2FzZTo6SW5NaXNzOgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gSW5CeUlk
U3RhdHVzKFRha2VzU2xvd1BhdGgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gSW5CeVN0
YXR1cyhUYWtlc1Nsb3dQYXRoKTsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAg
ICBJbkJ5SWRWYXJpYW50IHZhcmlhbnQoCi0gICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZVNl
dChzdHJ1Y3R1cmUpLCBjb21wbGV4R2V0U3RhdHVzLm9mZnNldCgpLAorICAgICAgICAgICAgICAg
ICAgICBhY2Nlc3MuaWRlbnRpZmllcigpLCBTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSwgY29tcGxl
eEdldFN0YXR1cy5vZmZzZXQoKSwKICAgICAgICAgICAgICAgICAgICAgY29tcGxleEdldFN0YXR1
cy5jb25kaXRpb25TZXQoKSk7CiAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5hcHBlbmRW
YXJpYW50KHZhcmlhbnQpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gSW5CeUlkU3RhdHVz
KFRha2VzU2xvd1BhdGgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gSW5CeVN0YXR1cyhU
YWtlc1Nsb3dQYXRoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KQEAgLTIxMCwxNSArMjEzLDE1IEBAIEluQnlJZFN0YXR1cyBJbkJ5SWRTdGF0
dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKGNvbnN0IENvbmN1
CiAgICAgfQogCiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIEluQnlJZFN0YXR1cyhUYWtl
c1Nsb3dQYXRoKTsKKyAgICAgICAgcmV0dXJuIEluQnlTdGF0dXMoVGFrZXNTbG93UGF0aCk7CiAg
ICAgfQogCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gSW5C
eUlkU3RhdHVzKCk7CisgICAgcmV0dXJuIEluQnlTdGF0dXMoKTsKIH0KICNlbmRpZgogCi12b2lk
IEluQnlJZFN0YXR1czo6bWVyZ2UoY29uc3QgSW5CeUlkU3RhdHVzJiBvdGhlcikKK3ZvaWQgSW5C
eVN0YXR1czo6bWVyZ2UoY29uc3QgSW5CeVN0YXR1cyYgb3RoZXIpCiB7CiAgICAgaWYgKG90aGVy
Lm1fc3RhdGUgPT0gTm9JbmZvcm1hdGlvbikKICAgICAgICAgcmV0dXJuOwpAQCAtMjMwLDEyICsy
MzMsMTIgQEAgdm9pZCBJbkJ5SWRTdGF0dXM6Om1lcmdlKGNvbnN0IEluQnlJZFN0YXR1cyYgb3Ro
ZXIpCiAgICAgICAgIAogICAgIGNhc2UgU2ltcGxlOgogICAgICAgICBpZiAob3RoZXIubV9zdGF0
ZSAhPSBTaW1wbGUpIHsKLSAgICAgICAgICAgICp0aGlzID0gSW5CeUlkU3RhdHVzKFRha2VzU2xv
d1BhdGgpOworICAgICAgICAgICAgKnRoaXMgPSBJbkJ5U3RhdHVzKFRha2VzU2xvd1BhdGgpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGZvciAoY29uc3QgSW5CeUlk
VmFyaWFudCYgb3RoZXJWYXJpYW50IDogb3RoZXIubV92YXJpYW50cykgewogICAgICAgICAgICAg
aWYgKCFhcHBlbmRWYXJpYW50KG90aGVyVmFyaWFudCkpIHsKLSAgICAgICAgICAgICAgICAqdGhp
cyA9IEluQnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsKKyAgICAgICAgICAgICAgICAqdGhpcyA9
IEluQnlTdGF0dXMoVGFrZXNTbG93UGF0aCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CkBAIC0yNDksNyArMjUyLDcgQEAgdm9pZCBJbkJ5SWRTdGF0
dXM6Om1lcmdlKGNvbnN0IEluQnlJZFN0YXR1cyYgb3RoZXIpCiAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBJbkJ5SWRTdGF0dXM6OmZpbHRlcihjb25zdCBTdHJ1
Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCkKK3ZvaWQgSW5CeVN0YXR1czo6ZmlsdGVyKGNvbnN0IFN0
cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0KQogewogICAgIGlmIChtX3N0YXRlICE9IFNpbXBsZSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjU5LDE2ICsyNjIsMTYgQEAgdm9pZCBJbkJ5SWRTdGF0dXM6
OmZpbHRlcihjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCkKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgVmlzaXRvcj4KLXZvaWQgSW5CeUlkU3RhdHVzOjptYXJrSWZDaGVhcChWaXNpdG9y
JiB2aXNpdG9yKQordm9pZCBJbkJ5U3RhdHVzOjptYXJrSWZDaGVhcChWaXNpdG9yJiB2aXNpdG9y
KQogewogICAgIGZvciAoSW5CeUlkVmFyaWFudCYgdmFyaWFudCA6IG1fdmFyaWFudHMpCiAgICAg
ICAgIHZhcmlhbnQubWFya0lmQ2hlYXAodmlzaXRvcik7CiB9CiAKLXRlbXBsYXRlIHZvaWQgSW5C
eUlkU3RhdHVzOjptYXJrSWZDaGVhcChBYnN0cmFjdFNsb3RWaXNpdG9yJik7Ci10ZW1wbGF0ZSB2
b2lkIEluQnlJZFN0YXR1czo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImKTsKK3RlbXBsYXRlIHZv
aWQgSW5CeVN0YXR1czo6bWFya0lmQ2hlYXAoQWJzdHJhY3RTbG90VmlzaXRvciYpOwordGVtcGxh
dGUgdm9pZCBJbkJ5U3RhdHVzOjptYXJrSWZDaGVhcChTbG90VmlzaXRvciYpOwogCi1ib29sIElu
QnlJZFN0YXR1czo6ZmluYWxpemUoVk0mIHZtKQorYm9vbCBJbkJ5U3RhdHVzOjpmaW5hbGl6ZShW
TSYgdm0pCiB7CiAgICAgZm9yIChJbkJ5SWRWYXJpYW50JiB2YXJpYW50IDogbV92YXJpYW50cykg
ewogICAgICAgICBpZiAoIXZhcmlhbnQuZmluYWxpemUodm0pKQpAQCAtMjc3LDcgKzI4MCwxMiBA
QCBib29sIEluQnlJZFN0YXR1czo6ZmluYWxpemUoVk0mIHZtKQogICAgIHJldHVybiB0cnVlOwog
fQogCi12b2lkIEluQnlJZFN0YXR1czo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAorQ2Fj
aGVhYmxlSWRlbnRpZmllciBJbkJ5U3RhdHVzOjpzaW5nbGVJZGVudGlmaWVyKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gc2luZ2xlSWRlbnRpZmllckZvcklDU3RhdHVzKG1fdmFyaWFudHMpOworfQor
Cit2b2lkIEluQnlTdGF0dXM6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBv
dXQucHJpbnQoIigiKTsKICAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRTdGF0dXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbkJ5U3RhdHVzLmgKc2ltaWxhcml0eSBpbmRleCA3OCUKcmVuYW1l
IGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFN0YXR1cy5oCnJlbmFt
ZSB0byBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeVN0YXR1cy5oCmluZGV4IDdm
MTVmYzVlNDYxYS4uNWEzNDBiNDkzYTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSW5CeUlkU3RhdHVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0luQnlTdGF0dXMuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBBY2Nlc3NDYXNlOwog
Y2xhc3MgQ29kZUJsb2NrOwogY2xhc3MgU3RydWN0dXJlU3R1YkluZm87CiAKLWNsYXNzIEluQnlJ
ZFN0YXR1cyBmaW5hbCB7CitjbGFzcyBJbkJ5U3RhdHVzIGZpbmFsIHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBlbnVtIFN0YXRlIHsKQEAgLTUyLDE3ICs1Miwx
NSBAQCBwdWJsaWM6CiAgICAgICAgIFRha2VzU2xvd1BhdGgsCiAgICAgfTsKIAotICAgIEluQnlJ
ZFN0YXR1cygpID0gZGVmYXVsdDsKKyAgICBJbkJ5U3RhdHVzKCkgPSBkZWZhdWx0OwogCi0gICAg
SW5CeUlkU3RhdHVzKFN0YXRlIHN0YXRlLCBjb25zdCBJbkJ5SWRWYXJpYW50JiB2YXJpYW50ID0g
SW5CeUlkVmFyaWFudCgpKQorICAgIEluQnlTdGF0dXMoU3RhdGUgc3RhdGUpCiAgICAgICAgIDog
bV9zdGF0ZShzdGF0ZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVCgoc3RhdGUgPT0gU2ltcGxlKSA9
PSB2YXJpYW50LmlzU2V0KCkpOwotICAgICAgICBpZiAodmFyaWFudC5pc1NldCgpKQotICAgICAg
ICAgICAgbV92YXJpYW50cy5hcHBlbmQodmFyaWFudCk7CisgICAgICAgIEFTU0VSVChzdGF0ZSAh
PSBTaW1wbGUpOwogICAgIH0KIAotICAgIGV4cGxpY2l0IEluQnlJZFN0YXR1cyhTdHViSW5mb1N1
bW1hcnkgc3VtbWFyeSkKKyAgICBleHBsaWNpdCBJbkJ5U3RhdHVzKFN0dWJJbmZvU3VtbWFyeSBz
dW1tYXJ5KQogICAgIHsKICAgICAgICAgc3dpdGNoIChzdW1tYXJ5KSB7CiAgICAgICAgIGNhc2Ug
U3R1YkluZm9TdW1tYXJ5OjpOb0luZm9ybWF0aW9uOgpAQCAtODAsMTIgKzc4LDEyIEBAIHB1Ymxp
YzoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgCi0g
ICAgc3RhdGljIEluQnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayosIElDU3RhdHVzTWFw
JiwgQnl0ZWNvZGVJbmRleCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7Ci0gICAgc3RhdGljIElu
QnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayosIElDU3RhdHVzTWFwJiwgQnl0ZWNvZGVJ
bmRleCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgRXhpdEZsYWcpOwotICAgIHN0YXRpYyBJbkJ5
SWRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIElDU3RhdHVzTWFw
JiBiYXNlbGluZU1hcCwgSUNTdGF0dXNDb250ZXh0U3RhY2smIGNvbnRleHRTdGFjaywgQ29kZU9y
aWdpbiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7CisgICAgc3RhdGljIEluQnlTdGF0dXMgY29t
cHV0ZUZvcihDb2RlQmxvY2sqLCBJQ1N0YXR1c01hcCYsIEJ5dGVjb2RlSW5kZXgpOworICAgIHN0
YXRpYyBJbkJ5U3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgSUNTdGF0dXNNYXAmLCBCeXRl
Y29kZUluZGV4LCBFeGl0RmxhZyk7CisgICAgc3RhdGljIEluQnlTdGF0dXMgY29tcHV0ZUZvcihD
b2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIElDU3RhdHVzTWFwJiBiYXNlbGluZU1hcCwgSUNTdGF0
dXNDb250ZXh0U3RhY2smLCBDb2RlT3JpZ2luKTsKIAogI2lmIEVOQUJMRShERkdfSklUKQotICAg
IHN0YXRpYyBJbkJ5SWRTdGF0dXMgY29tcHV0ZUZvclN0dWJJbmZvKGNvbnN0IENvbmN1cnJlbnRK
U0xvY2tlciYsIENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qLCBD
b2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKKyAgICBzdGF0aWMgSW5CeVN0YXR1
cyBjb21wdXRlRm9yU3R1YkluZm8oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUJsb2Nr
KiBiYXNlbGluZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyosIENvZGVPcmlnaW4pOwogI2VuZGlm
CiAKICAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KQEAgLTEwMSw3
ICs5OSw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgdGFrZXNTbG93UGF0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdGUgPT0gVGFrZXNTbG93UGF0aDsgfQogICAgIAotICAgIHZvaWQgbWVyZ2UoY29u
c3QgSW5CeUlkU3RhdHVzJik7CisgICAgdm9pZCBtZXJnZShjb25zdCBJbkJ5U3RhdHVzJik7CiAK
ICAgICAvLyBBdHRlbXB0cyB0byByZWR1Y2UgdGhlIHNldCBvZiB2YXJpYW50cyB0byBmaXQgdGhl
IGdpdmVuIHN0cnVjdHVyZSBzZXQuIFRoaXMgbWF5IGJlIGFwcHJveGltYXRlLgogICAgIHZvaWQg
ZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNldCYpOwpAQCAtMTExLDkgKzEwOSwxMSBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKIAorICAgIENhY2hlYWJsZUlk
ZW50aWZpZXIgc2luZ2xlSWRlbnRpZmllcigpIGNvbnN0OworCiBwcml2YXRlOgogI2lmIEVOQUJM
RShERkdfSklUKQotICAgIHN0YXRpYyBJbkJ5SWRTdGF0dXMgY29tcHV0ZUZvclN0dWJJbmZvV2l0
aG91dEV4aXRTaXRlRmVlZGJhY2soY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgVk0mLCBTdHJ1
Y3R1cmVTdHViSW5mbyosIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOworICAgIHN0YXRpYyBJbkJ5
U3RhdHVzIGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKGNvbnN0IENv
bmN1cnJlbnRKU0xvY2tlciYsIFZNJiwgU3RydWN0dXJlU3R1YkluZm8qKTsKICNlbmRpZgogICAg
IGJvb2wgYXBwZW5kVmFyaWFudChjb25zdCBJbkJ5SWRWYXJpYW50Jik7CiAgICAgdm9pZCBzaHJp
bmtUb0ZpdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jl
Y29yZGVkU3RhdHVzZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29y
ZGVkU3RhdHVzZXMuY3BwCmluZGV4IDk5NWY0ODVjMjNmNi4uZjM4ZTQwOTJlMTgyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3Bw
CkBAIC03MCwxMCArNzAsMTAgQEAgUHV0QnlJZFN0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRk
UHV0QnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLAogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLUluQnlJZFN0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkSW5CeUlkU3Rh
dHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIGNvbnN0IEluQnlJZFN0YXR1cyYgc3Rh
dHVzKQorSW5CeVN0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkSW5CeVN0YXR1cyhjb25zdCBD
b2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBjb25zdCBJbkJ5U3RhdHVzJiBzdGF0dXMpCiB7Ci0gICAg
YXV0byBzdGF0dXNQdHIgPSBtYWtlVW5pcXVlPEluQnlJZFN0YXR1cz4oc3RhdHVzKTsKLSAgICBJ
bkJ5SWRTdGF0dXMqIHJlc3VsdCA9IHN0YXR1c1B0ci5nZXQoKTsKKyAgICBhdXRvIHN0YXR1c1B0
ciA9IG1ha2VVbmlxdWU8SW5CeVN0YXR1cz4oc3RhdHVzKTsKKyAgICBJbkJ5U3RhdHVzKiByZXN1
bHQgPSBzdGF0dXNQdHIuZ2V0KCk7CiAgICAgaW5zLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihjb2Rl
T3JpZ2luLCBXVEZNb3ZlKHN0YXR1c1B0cikpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmgKaW5k
ZXggODQ4OTg3YjUyMmE1Li5iZDE1NzA1NDU3MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuaApAQCAtMjksNyArMjksNyBAQAogI2lu
Y2x1ZGUgIkNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLmgiCiAjaW5jbHVkZSAiRGVsZXRlQnlTdGF0
dXMuaCIKICNpbmNsdWRlICJHZXRCeVN0YXR1cy5oIgotI2luY2x1ZGUgIkluQnlJZFN0YXR1cy5o
IgorI2luY2x1ZGUgIkluQnlTdGF0dXMuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCiAj
aW5jbHVkZSAiU2V0UHJpdmF0ZUJyYW5kU3RhdHVzLmgiCiAKQEAgLTQ5LDcgKzQ5LDcgQEAgc3Ry
dWN0IFJlY29yZGVkU3RhdHVzZXMgewogICAgIENhbGxMaW5rU3RhdHVzKiBhZGRDYWxsTGlua1N0
YXR1cyhjb25zdCBDb2RlT3JpZ2luJiwgY29uc3QgQ2FsbExpbmtTdGF0dXMmKTsKICAgICBHZXRC
eVN0YXR1cyogYWRkR2V0QnlTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYsIGNvbnN0IEdldEJ5U3Rh
dHVzJik7CiAgICAgUHV0QnlJZFN0YXR1cyogYWRkUHV0QnlJZFN0YXR1cyhjb25zdCBDb2RlT3Jp
Z2luJiwgY29uc3QgUHV0QnlJZFN0YXR1cyYpOwotICAgIEluQnlJZFN0YXR1cyogYWRkSW5CeUlk
U3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mLCBjb25zdCBJbkJ5SWRTdGF0dXMmKTsKKyAgICBJbkJ5
U3RhdHVzKiBhZGRJbkJ5U3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mLCBjb25zdCBJbkJ5U3RhdHVz
Jik7CiAgICAgRGVsZXRlQnlTdGF0dXMqIGFkZERlbGV0ZUJ5U3RhdHVzKGNvbnN0IENvZGVPcmln
aW4mLCBjb25zdCBEZWxldGVCeVN0YXR1cyYpOwogICAgIENoZWNrUHJpdmF0ZUJyYW5kU3RhdHVz
KiBhZGRDaGVja1ByaXZhdGVCcmFuZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiwgY29uc3QgQ2hl
Y2tQcml2YXRlQnJhbmRTdGF0dXMmKTsKICAgICBTZXRQcml2YXRlQnJhbmRTdGF0dXMqIGFkZFNl
dFByaXZhdGVCcmFuZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiwgY29uc3QgU2V0UHJpdmF0ZUJy
YW5kU3RhdHVzJik7CkBAIC03Nyw3ICs3Nyw3IEBAIHN0cnVjdCBSZWNvcmRlZFN0YXR1c2VzIHsK
ICAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxDYWxsTGlu
a1N0YXR1cz4+PiBjYWxsczsKICAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6
dW5pcXVlX3B0cjxHZXRCeVN0YXR1cz4+PiBnZXRzOwogICAgIFZlY3RvcjxzdGQ6OnBhaXI8Q29k
ZU9yaWdpbiwgc3RkOjp1bmlxdWVfcHRyPFB1dEJ5SWRTdGF0dXM+Pj4gcHV0czsKLSAgICBWZWN0
b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxJbkJ5SWRTdGF0dXM+Pj4g
aW5zOworICAgIFZlY3RvcjxzdGQ6OnBhaXI8Q29kZU9yaWdpbiwgc3RkOjp1bmlxdWVfcHRyPElu
QnlTdGF0dXM+Pj4gaW5zOwogICAgIFZlY3RvcjxzdGQ6OnBhaXI8Q29kZU9yaWdpbiwgc3RkOjp1
bmlxdWVfcHRyPERlbGV0ZUJ5U3RhdHVzPj4+IGRlbGV0ZXM7CiAgICAgVmVjdG9yPHN0ZDo6cGFp
cjxDb2RlT3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8Q2hlY2tQcml2YXRlQnJhbmRTdGF0dXM+Pj4g
Y2hlY2tQcml2YXRlQnJhbmRzOwogICAgIFZlY3RvcjxzdGQ6OnBhaXI8Q29kZU9yaWdpbiwgc3Rk
Ojp1bmlxdWVfcHRyPFNldFByaXZhdGVCcmFuZFN0YXR1cz4+PiBzZXRQcml2YXRlQnJhbmRzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NldFByaXZhdGVCcmFu
ZFN0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2V0UHJpdmF0ZUJy
YW5kU3RhdHVzLmNwcAppbmRleCA4MzA3YTM0NjFjOWMuLjdiNWQ0ODEyZmVjMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NldFByaXZhdGVCcmFuZFN0YXR1cy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NldFByaXZhdGVCcmFuZFN0
YXR1cy5jcHAKQEAgLTIyNiwyMCArMjI2LDcgQEAgdm9pZCBTZXRQcml2YXRlQnJhbmRTdGF0dXM6
OmZpbHRlcihjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCkKIAogQ2FjaGVhYmxlSWRl
bnRpZmllciBTZXRQcml2YXRlQnJhbmRTdGF0dXM6OnNpbmdsZUlkZW50aWZpZXIoKSBjb25zdAog
ewotICAgIGlmIChtX3ZhcmlhbnRzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0KLSAgICBDYWNoZWFibGVJZGVudGlmaWVyIHJlc3VsdCA9IG1fdmFyaWFudHMuZmlyc3QoKS5p
ZGVudGlmaWVyKCk7Ci0gICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgbV92YXJpYW50cy5zaXplKCk7ICsraSkgewotICAg
ICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBtX3ZhcmlhbnRzW2ldLmlkZW50
aWZpZXIoKTsKLSAgICAgICAgaWYgKCFpZGVudGlmaWVyKQotICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgICAgIGlmIChpZGVudGlmaWVyICE9IHJlc3VsdCkKLSAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBzaW5n
bGVJZGVudGlmaWVyRm9ySUNTdGF0dXMobV92YXJpYW50cyk7CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFZpc2l0b3I+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3RydWN0dXJlU3R1YkluZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0
cnVjdHVyZVN0dWJJbmZvLmNwcAppbmRleCBjOGU2YmM2M2EzNmEuLmFmYWU0ZTg0MmZjNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZv
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1Yklu
Zm8uY3BwCkBAIC0yNzIsOCArMjcyLDExIEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OnJlc2V0
KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlckJhc2UmIGxvY2tlciwgQ29kZUJsb2NrKiBjCiAgICAg
Y2FzZSBBY2Nlc3NUeXBlOjpQdXQ6CiAgICAgICAgIHJlc2V0UHV0QnlJRChjb2RlQmxvY2ssICp0
aGlzKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBY2Nlc3NUeXBlOjpJbjoKLSAgICAgICAg
cmVzZXRJbkJ5SUQoY29kZUJsb2NrLCAqdGhpcyk7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpJbkJ5
SWQ6CisgICAgICAgIHJlc2V0SW5CeShjb2RlQmxvY2ssICp0aGlzLCBJbkJ5S2luZDo6Tm9ybWFs
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpJbkJ5VmFsOgorICAgICAg
ICByZXNldEluQnkoY29kZUJsb2NrLCAqdGhpcywgSW5CeUtpbmQ6Ok5vcm1hbEJ5VmFsKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpJbnN0YW5jZU9mOgogICAgICAgICBy
ZXNldEluc3RhbmNlT2YoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAppbmRleCA4ODI1NjhjMjZlYWQuLmE5NDA1ZGNlYjlm
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0
dWJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0
dWJJbmZvLmgKQEAgLTU1LDcgKzU1LDggQEAgZW51bSBjbGFzcyBBY2Nlc3NUeXBlIDogaW50OF90
IHsKICAgICBUcnlHZXRCeUlkLAogICAgIEdldEJ5VmFsLAogICAgIFB1dCwKLSAgICBJbiwKKyAg
ICBJbkJ5SWQsCisgICAgSW5CeVZhbCwKICAgICBJbnN0YW5jZU9mLAogICAgIERlbGV0ZUJ5SUQs
CiAgICAgRGVsZXRlQnlWYWwsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggZDYwMjUxYmUyZGY1Li4y
ODFmYTkwZjMwMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTQ0MzksNyArNDQzOSw3IEBAIGJv
b2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3Rz
KHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKICAg
ICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoK
LSAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlckluQnlTdGF0dXM6
CiAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICBjYXNlIEZpbHRlckNoZWNrUHJp
dmF0ZUJyYW5kU3RhdHVzOgogICAgIGNhc2UgRmlsdGVyU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOgpA
QCAtNDYxMCwxMCArNDYxMCwxMCBAQCB2b2lkIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RT
dGF0ZVR5cGU+OjpmaWx0ZXJJQ1N0YXR1cyhOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgICAgIAotICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOiB7CisgICAgY2FzZSBG
aWx0ZXJJbkJ5U3RhdHVzOiB7CiAgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gZm9yTm9k
ZShub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIGlmICh2YWx1ZS5tX3N0cnVjdHVyZS5pc0Zpbml0
ZSgpKQotICAgICAgICAgICAgbm9kZS0+aW5CeUlkU3RhdHVzKCktPmZpbHRlcih2YWx1ZS5tX3N0
cnVjdHVyZS50b1N0cnVjdHVyZVNldCgpKTsKKyAgICAgICAgICAgIG5vZGUtPmluQnlTdGF0dXMo
KS0+ZmlsdGVyKHZhbHVlLm1fc3RydWN0dXJlLnRvU3RydWN0dXJlU2V0KCkpOwogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKaW5kZXggNmY4MTczODhh
YzM4Li5jMjE2YTM5NmQ3MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcApAQCAtNDA0LDcgKzQwNCw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAg
ICAgICAgICAgICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgICAgICAgICAg
Y2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKLSAgICAgICAgICAgICAgICBjYXNlIEZpbHRlcklu
QnlJZFN0YXR1czoKKyAgICAgICAgICAgICAgICBjYXNlIEZpbHRlckluQnlTdGF0dXM6CiAgICAg
ICAgICAgICAgICAgY2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICAgICAgICAgICAgICBj
YXNlIEZpbHRlckNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOgogICAgICAgICAgICAgICAgIGNhc2Ug
RmlsdGVyU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOgpAQCAtMTI2Nyw3ICsxMjY3LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgICAgICAgICAg
ICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRl
ckNhbGxMaW5rU3RhdHVzOgotICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVz
OgorICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVySW5CeVN0YXR1czoKICAgICAgICAgICAgICAg
ICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVy
Q2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJTZXRQ
cml2YXRlQnJhbmRTdGF0dXM6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAKaW5kZXggNzA3OWU1MmFkYThiLi4zODZmNWY1ODNkYmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC01
NSw3ICs1NSw3IEBACiAjaW5jbHVkZSAiR2V0QnlTdGF0dXMuaCIKICNpbmNsdWRlICJHZXR0ZXJT
ZXR0ZXIuaCIKICNpbmNsdWRlICJIZWFwLmgiCi0jaW5jbHVkZSAiSW5CeUlkU3RhdHVzLmgiCisj
aW5jbHVkZSAiSW5CeVN0YXR1cy5oIgogI2luY2x1ZGUgIkluc3RhbmNlT2ZTdGF0dXMuaCIKICNp
bmNsdWRlICJKU0FycmF5SXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCkBAIC0y
NjMsNyArMjYzLDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgaGFuZGxlRGVsZXRlQnlJZCgKICAg
ICAgICAgVmlydHVhbFJlZ2lzdGVyIGRlc3RpbmF0aW9uLCBOb2RlKiBiYXNlLCBDYWNoZWFibGVJ
ZGVudGlmaWVyLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBEZWxldGVCeVN0YXR1cywgRUNN
QU1vZGUpOwotICAgIAorCisgICAgdm9pZCBoYW5kbGVJbkJ5SWQoVmlydHVhbFJlZ2lzdGVyIGRl
c3RpbmF0aW9uLCBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVudGlmaWVyLCBJbkJ5U3RhdHVzKTsK
KwogICAgIC8vIEVpdGhlciByZWdpc3RlciBhIHdhdGNocG9pbnQgb3IgZW1pdCBhIGNoZWNrIGZv
ciB0aGlzIGNvbmRpdGlvbi4gUmV0dXJucyBmYWxzZSBpZiB0aGUKICAgICAvLyBjb25kaXRpb24g
bm8gbG9uZ2VyIGhvbGRzLCBhbmQgdGhlcmVmb3JlIG5vIHJlYXNvbmFibGUgY2hlY2sgY2FuIGJl
IGVtaXR0ZWQuCiAgICAgYm9vbCBjaGVjayhjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYp
OwpAQCAtNDkyOCw2ICs0OTMwLDM1IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURlbGV0
ZUJ5SWQoCiAgICAgcmV0dXJuOwogfQogCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbkJ5
SWQoVmlydHVhbFJlZ2lzdGVyIGRlc3RpbmF0aW9uLCBOb2RlKiBiYXNlLCBDYWNoZWFibGVJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIEluQnlTdGF0dXMgc3RhdHVzKQoreworICAgIGlmIChzdGF0dXMu
aXNTaW1wbGUoKSAmJiBPcHRpb25zOjp1c2VBY2Nlc3NJbmxpbmluZygpKSB7CisgICAgICAgIGJv
b2wgYWxsT0sgPSB0cnVlOworICAgICAgICBNYXRjaFN0cnVjdHVyZURhdGEqIGRhdGEgPSBtX2dy
YXBoLm1fbWF0Y2hTdHJ1Y3R1cmVEYXRhLmFkZCgpOworICAgICAgICBmb3IgKGNvbnN0IEluQnlJ
ZFZhcmlhbnQmIHZhcmlhbnQgOiBzdGF0dXMudmFyaWFudHMoKSkgeworICAgICAgICAgICAgaWYg
KCFjaGVjayh2YXJpYW50LmNvbmRpdGlvblNldCgpKSkgeworICAgICAgICAgICAgICAgIGFsbE9L
ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJlIDogdmFyaWFudC5zdHJ1Y3R1cmVTZXQoKSkg
eworICAgICAgICAgICAgICAgIE1hdGNoU3RydWN0dXJlVmFyaWFudCBtYXRjaFZhcmlhbnQ7Cisg
ICAgICAgICAgICAgICAgbWF0Y2hWYXJpYW50LnN0cnVjdHVyZSA9IG1fZ3JhcGgucmVnaXN0ZXJT
dHJ1Y3R1cmUoc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICBtYXRjaFZhcmlhbnQucmVzdWx0
ID0gdmFyaWFudC5pc0hpdCgpOworCisgICAgICAgICAgICAgICAgZGF0YS0+dmFyaWFudHMuYXBw
ZW5kKFdURk1vdmUobWF0Y2hWYXJpYW50KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoYWxsT0spIHsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoRmlsdGVySW5CeVN0
YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMoKS5hZGRJbkJ5U3Rh
dHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIHN0YXR1cykpLCBiYXNlKTsKKyAgICAgICAgICAgIHNl
dChkZXN0aW5hdGlvbiwgYWRkVG9HcmFwaChNYXRjaFN0cnVjdHVyZSwgT3BJbmZvKGRhdGEpLCBi
YXNlKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzZXQo
ZGVzdGluYXRpb24sIGFkZFRvR3JhcGgoSW5CeUlkLCBPcEluZm8oaWRlbnRpZmllciksIGJhc2Up
KTsKK30KKwogdm9pZCBCeXRlQ29kZVBhcnNlcjo6ZW1pdFB1dEJ5SWQoCiAgICAgTm9kZSogYmFz
ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBOb2RlKiB2YWx1ZSwgY29uc3QgUHV0
QnlJZFN0YXR1cyYgcHV0QnlJZFN0YXR1cywgYm9vbCBpc0RpcmVjdCwgRUNNQU1vZGUgZWNtYU1v
ZGUpCiB7CkBAIC04MjEyLDQ5ICs4MjQzLDUxIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2sodW5zaWduZWQgbGltaXQpCiAKICAgICAgICAgY2FzZSBvcF9pbl9ieV92YWw6IHsKICAg
ICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5CeVZh
bD4oKTsKLSAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUoYnl0
ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKS5tX2FycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQpOwot
ICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKEluQnlWYWwsIE9wSW5m
byhhcnJheU1vZGUuYXNXb3JkKCkpLCBnZXQoYnl0ZWNvZGUubV9iYXNlKSwgZ2V0KGJ5dGVjb2Rl
Lm1fcHJvcGVydHkpKSk7Ci0gICAgICAgICAgICBORVhUX09QQ09ERShvcF9pbl9ieV92YWwpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgY2FzZSBvcF9pbl9ieV9pZDogewotICAgICAgICAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJbkJ5SWQ+KCk7CiAgICAgICAg
ICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1fYmFzZSk7Ci0gICAgICAgICAgICB1bnNp
Z25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9pbmxpbmVTdGFja1RvcC0+bV9pZGVudGlmaWVyUmVt
YXBbYnl0ZWNvZGUubV9wcm9wZXJ0eV07Ci0gICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCog
dWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1iZXJdOwotCi0gICAgICAg
ICAgICBJbkJ5SWRTdGF0dXMgc3RhdHVzID0gSW5CeUlkU3RhdHVzOjpjb21wdXRlRm9yKAotICAg
ICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKLSAgICAgICAg
ICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0YWNr
LAotICAgICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCksIHVpZCk7CisgICAgICAgICAg
ICBOb2RlKiBwcm9wZXJ0eSA9IGdldChieXRlY29kZS5tX3Byb3BlcnR5KTsKKyAgICAgICAgICAg
IGJvb2wgY29tcGlsZWRBc0luQnlJZCA9IGZhbHNlOwogCi0gICAgICAgICAgICBpZiAoc3RhdHVz
LmlzU2ltcGxlKCkgJiYgT3B0aW9uczo6dXNlQWNjZXNzSW5saW5pbmcoKSkgewotICAgICAgICAg
ICAgICAgIGJvb2wgYWxsT0sgPSB0cnVlOwotICAgICAgICAgICAgICAgIE1hdGNoU3RydWN0dXJl
RGF0YSogZGF0YSA9IG1fZ3JhcGgubV9tYXRjaFN0cnVjdHVyZURhdGEuYWRkKCk7Ci0gICAgICAg
ICAgICAgICAgZm9yIChjb25zdCBJbkJ5SWRWYXJpYW50JiB2YXJpYW50IDogc3RhdHVzLnZhcmlh
bnRzKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjaGVjayh2YXJpYW50LmNvbmRpdGlv
blNldCgpKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgYWxsT0sgPSBmYWxzZTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgIGZvciAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUgOiB2YXJpYW50LnN0cnVjdHVy
ZVNldCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBNYXRjaFN0cnVjdHVyZVZhcmlhbnQg
bWF0Y2hWYXJpYW50OwotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hWYXJpYW50LnN0cnVj
dHVyZSA9IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG1hdGNoVmFyaWFudC5yZXN1bHQgPSB2YXJpYW50LmlzSGl0KCk7CisgICAg
ICAgICAgICBpZiAoIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUo
bV9jdXJyZW50SW5kZXgsIEJhZElkZW50KQorICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0
YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRUeXBl
KQorICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhh
c0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDb25zdGFudFZhbHVlKSkgewogCi0gICAgICAg
ICAgICAgICAgICAgICAgICBkYXRhLT52YXJpYW50cy5hcHBlbmQoV1RGTW92ZShtYXRjaFZhcmlh
bnQpKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBJbkJ5U3RhdHVzIHN0YXR1cyA9IEluQnlTdGF0dXM6OmNvbXB1dGVGb3IoCisgICAg
ICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgbV9pbmxp
bmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcCwKKyAgICAgICAgICAgICAgICAgICAgbV9pY0NvbnRl
eHRTdGFjaywgY3VycmVudENvZGVPcmlnaW4oKSk7CiAKLSAgICAgICAgICAgICAgICBpZiAoYWxs
T0spIHsKLSAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJJbkJ5SWRTdGF0dXMs
IE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzKCkuYWRkSW5CeUlkU3RhdHVz
KGN1cnJlbnRDb2RlT3JpZ2luKCksIHN0YXR1cykpLCBiYXNlKTsKKyAgICAgICAgICAgICAgICBp
ZiAoQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gc3RhdHVzLnNpbmdsZUlkZW50aWZp
ZXIoKSkgeworICAgICAgICAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gaWRl
bnRpZmllci51aWQoKTsKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5pZGVudGlmaWVycygp
LmVuc3VyZSh1aWQpOworICAgICAgICAgICAgICAgICAgICBpZiAoaWRlbnRpZmllci5pc0NlbGwo
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgRnJvemVuVmFsdWUqIGZyb3plbiA9IG1fZ3Jh
cGguZnJlZXplU3Ryb25nKGlkZW50aWZpZXIuY2VsbCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChpZGVudGlmaWVyLmlzU3ltYm9sQ2VsbCgpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tJc0NvbnN0YW50LCBPcEluZm8oZnJvemVuKSwgcHJvcGVy
dHkpOworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tJZGVudCwgT3BJbmZvKHVpZCksIHByb3BlcnR5KTsKKyAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKENoZWNrSWRlbnQsIE9wSW5mbyh1aWQpLCBwcm9wZXJ0eSk7CiAKLSAgICAgICAgICAgICAg
ICAgICAgTm9kZSogbWF0Y2ggPSBhZGRUb0dyYXBoKE1hdGNoU3RydWN0dXJlLCBPcEluZm8oZGF0
YSksIGJhc2UpOwotICAgICAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIG1hdGNo
KTsKLSAgICAgICAgICAgICAgICAgICAgTkVYVF9PUENPREUob3BfaW5fYnlfaWQpOworICAgICAg
ICAgICAgICAgICAgICBoYW5kbGVJbkJ5SWQoYnl0ZWNvZGUubV9kc3QsIGJhc2UsIGlkZW50aWZp
ZXIsIHN0YXR1cyk7CisgICAgICAgICAgICAgICAgICAgIGNvbXBpbGVkQXNJbkJ5SWQgPSB0cnVl
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgc2V0KGJ5
dGVjb2RlLm1fZHN0LCBhZGRUb0dyYXBoKEluQnlJZCwgT3BJbmZvKENhY2hlYWJsZUlkZW50aWZp
ZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2lubGluZVN0YWNrVG9w
LT5tX3Byb2ZpbGVkQmxvY2ssIHVpZCkpLCBiYXNlKSk7CisgICAgICAgICAgICBpZiAoIWNvbXBp
bGVkQXNJbkJ5SWQpIHsKKyAgICAgICAgICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gZ2V0
QXJyYXlNb2RlKGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jaykubV9hcnJheVByb2ZpbGUsIEFy
cmF5OjpSZWFkKTsKKyAgICAgICAgICAgICAgICBzZXQoYnl0ZWNvZGUubV9kc3QsIGFkZFRvR3Jh
cGgoSW5CeVZhbCwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIGJhc2UsIHByb3BlcnR5KSk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9pbl9ieV92YWwpOwor
ICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9pbl9ieV9pZDogeworICAgICAgICAgICAgYXV0
byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJbkJ5SWQ+KCk7CisgICAgICAg
ICAgICBOb2RlKiBiYXNlID0gZ2V0KGJ5dGVjb2RlLm1fYmFzZSk7CisgICAgICAgICAgICB1bnNp
Z25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9pbmxpbmVTdGFja1RvcC0+bV9pZGVudGlmaWVyUmVt
YXBbYnl0ZWNvZGUubV9wcm9wZXJ0eV07CisgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCog
dWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1iZXJdOworICAgICAgICAg
ICAgSW5CeVN0YXR1cyBzdGF0dXMgPSBJbkJ5U3RhdHVzOjpjb21wdXRlRm9yKAorICAgICAgICAg
ICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgbV9pbmxpbmVTdGFja1Rv
cC0+bV9iYXNlbGluZU1hcCwKKyAgICAgICAgICAgICAgICBtX2ljQ29udGV4dFN0YWNrLCBjdXJy
ZW50Q29kZU9yaWdpbigpKTsKKyAgICAgICAgICAgIGhhbmRsZUluQnlJZChieXRlY29kZS5tX2Rz
dCwgYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5
Q29kZUJsb2NrKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgdWlkKSwgc3RhdHVz
KTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2luX2J5X2lkKTsKICAgICAgICAgfQogICAg
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggZGNh
NmM0YWYyOWE5Li4wMWRhNTZkZTE4ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2xvYmJlcml6ZS5oCkBAIC01MDQsNyArNTA0LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUK
ICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0
dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgotICAgIGNhc2UgRmlsdGVySW5CeUlk
U3RhdHVzOgorICAgIGNhc2UgRmlsdGVySW5CeVN0YXR1czoKICAgICBjYXNlIEZpbHRlckRlbGV0
ZUJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6CiAgICAg
Y2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCmluZGV4IDZmZDRhNzZiNjE4Zi4u
ODZhM2QwNzY2NGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJzRXhpdFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJzRXhpdFN0YXRlLmNwcApAQCAtODIsNyArODIsNyBAQCBib29sIGNsb2JiZXJzRXhpdFN0
YXRlKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3Rh
dHVzOgogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRCeUlk
U3RhdHVzOgotICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVySW5C
eVN0YXR1czoKICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVy
Q2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJhbmRT
dGF0dXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggMDI4NGE3
ZTMwNGEwLi40MTBjMzQ1MDNmZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Qy5jcHAKQEAgLTI0OSw3ICsyNDksNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKICAgICBjYXNlIEZpbHRlckdl
dEJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKLSAgICBjYXNlIEZpbHRl
ckluQnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlckluQnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0
ZXJEZWxldGVCeVN0YXR1czoKICAgICBjYXNlIEZpbHRlckNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVz
OgogICAgIGNhc2UgRmlsdGVyU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggOGEwOWZiNDUxODg3Li5jNDZhNWZm
MTNkNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApA
QCAtMjg4Miw3ICsyODgyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBGaWx0ZXJDYWxsTGlu
a1N0YXR1czoKICAgICAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAgICAgICAgY2FzZSBG
aWx0ZXJQdXRCeUlkU3RhdHVzOgotICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAg
ICAgICAgY2FzZSBGaWx0ZXJJbkJ5U3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5
U3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlckNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOgogICAg
ICAgICBjYXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1czoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5jcHAKaW5kZXggMjVhYjljMzM5NTFmLi4xMTEwMDgyNjAzOTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCkBAIC0zODMsOCArMzgzLDggQEAgdm9p
ZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBjb25zdCBjaGFyKiBwcmVmaXhTdHIsIE5v
ZGUqIG5vZGUsIER1bXBDb250ZXgKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAqbm9kZS0+Y2Fs
bExpbmtTdGF0dXMoKSk7CiAgICAgaWYgKG5vZGUtPmhhc0dldEJ5U3RhdHVzKCkpCiAgICAgICAg
IG91dC5wcmludChjb21tYSwgKm5vZGUtPmdldEJ5U3RhdHVzKCkpOwotICAgIGlmIChub2RlLT5o
YXNJbkJ5SWRTdGF0dXMoKSkKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCAqbm9kZS0+aW5CeUlk
U3RhdHVzKCkpOworICAgIGlmIChub2RlLT5oYXNJbkJ5U3RhdHVzKCkpCisgICAgICAgIG91dC5w
cmludChjb21tYSwgKm5vZGUtPmluQnlTdGF0dXMoKSk7CiAgICAgaWYgKG5vZGUtPmhhc1B1dEJ5
SWRTdGF0dXMoKSkKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAqbm9kZS0+cHV0QnlJZFN0YXR1
cygpKTsKICAgICBpZiAobm9kZS0+aXNKdW1wKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuY3BwCmluZGV4IGRkYmI2ZGI0YzBjNC4uOTEwY2YxMzk5ZmM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcApAQCAtMjU1
LDYgKzI1NSw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0J1ZmZl
cikKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2RlbEJ5SWRzLCBsaW5rQnVmZmVyKTsKICAg
ICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2RlbEJ5VmFscywgbGlua0J1ZmZlcik7CiAgICAgZmlu
YWxpemVJbmxpbmVDYWNoZXMobV9pbkJ5SWRzLCBsaW5rQnVmZmVyKTsKKyAgICBmaW5hbGl6ZUlu
bGluZUNhY2hlcyhtX2luQnlWYWxzLCBsaW5rQnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNh
Y2hlcyhtX2luc3RhbmNlT2ZzLCBsaW5rQnVmZmVyKTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hl
cyhtX3ByaXZhdGVCcmFuZEFjY2Vzc2VzLCBsaW5rQnVmZmVyKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCmluZGV4IDhhZGVhZDUwZjQ1NS4uMTg3NTQzZDE2
ZWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCkBAIC0y
MTQsNiArMjE0LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9pbkJ5SWRzLmFwcGVuZChJbmxpbmVD
YWNoZVdyYXBwZXI8SklUSW5CeUlkR2VuZXJhdG9yPihnZW4sIHNsb3dQYXRoKSk7CiAgICAgfQog
CisgICAgdm9pZCBhZGRJbkJ5VmFsKGNvbnN0IEpJVEluQnlWYWxHZW5lcmF0b3ImIGdlbiwgU2xv
d1BhdGhHZW5lcmF0b3IqIHNsb3dQYXRoKQorICAgIHsKKyAgICAgICAgbV9pbkJ5VmFscy5hcHBl
bmQoSW5saW5lQ2FjaGVXcmFwcGVyPEpJVEluQnlWYWxHZW5lcmF0b3I+KGdlbiwgc2xvd1BhdGgp
KTsKKyAgICB9CisKICAgICB2b2lkIGFkZFByaXZhdGVCcmFuZEFjY2Vzcyhjb25zdCBKSVRQcml2
YXRlQnJhbmRBY2Nlc3NHZW5lcmF0b3ImIGdlbiwgU2xvd1BhdGhHZW5lcmF0b3IqIHNsb3dQYXRo
KQogICAgIHsKICAgICAgICAgbV9wcml2YXRlQnJhbmRBY2Nlc3Nlcy5hcHBlbmQoSW5saW5lQ2Fj
aGVXcmFwcGVyPEpJVFByaXZhdGVCcmFuZEFjY2Vzc0dlbmVyYXRvcj4oZ2VuLCBzbG93UGF0aCkp
OwpAQCAtMzUzLDYgKzM1OCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPElubGluZUNhY2hlV3Jh
cHBlcjxKSVREZWxCeUlkR2VuZXJhdG9yPiwgND4gbV9kZWxCeUlkczsKICAgICBWZWN0b3I8SW5s
aW5lQ2FjaGVXcmFwcGVyPEpJVERlbEJ5VmFsR2VuZXJhdG9yPiwgND4gbV9kZWxCeVZhbHM7CiAg
ICAgVmVjdG9yPElubGluZUNhY2hlV3JhcHBlcjxKSVRJbkJ5SWRHZW5lcmF0b3I+LCA0PiBtX2lu
QnlJZHM7CisgICAgVmVjdG9yPElubGluZUNhY2hlV3JhcHBlcjxKSVRJbkJ5VmFsR2VuZXJhdG9y
PiwgND4gbV9pbkJ5VmFsczsKICAgICBWZWN0b3I8SW5saW5lQ2FjaGVXcmFwcGVyPEpJVEluc3Rh
bmNlT2ZHZW5lcmF0b3I+LCA0PiBtX2luc3RhbmNlT2ZzOwogICAgIFZlY3RvcjxJbmxpbmVDYWNo
ZVdyYXBwZXI8SklUUHJpdmF0ZUJyYW5kQWNjZXNzR2VuZXJhdG9yPiwgND4gbV9wcml2YXRlQnJh
bmRBY2Nlc3NlczsKICAgICBWZWN0b3I8SlNDYWxsUmVjb3JkLCA0PiBtX2pzQ2FsbHM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAppbmRleCBkYzM3MmM3MGZlODguLmY5
ZjI2NWUwNGUzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlF
eGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCkBA
IC0xMDcsNyArMTA3LDcgQEAgRXhpdE1vZGUgbWF5RXhpdEltcGwoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlLCBTdGF0ZVR5cGUmIHN0YXRlKQogICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6
CiAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0
dXM6Ci0gICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJJbkJ5U3Rh
dHVzOgogICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJDaGVj
a1ByaXZhdGVCcmFuZFN0YXR1czoKICAgICBjYXNlIEZpbHRlclNldFByaXZhdGVCcmFuZFN0YXR1
czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggMTY5NjE3YmVhYWZmLi4zYzkx
NWM5NzlhODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC0zMTA5LDE1ICsz
MTA5LDE1IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPEdldEJ5U3RhdHVz
Kj4oKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBoYXNJbkJ5SWRTdGF0dXMoKQorICAgIGJvb2wg
aGFzSW5CeVN0YXR1cygpCiAgICAgewotICAgICAgICByZXR1cm4gb3AoKSA9PSBGaWx0ZXJJbkJ5
SWRTdGF0dXM7CisgICAgICAgIHJldHVybiBvcCgpID09IEZpbHRlckluQnlTdGF0dXM7CiAgICAg
fQogICAgIAotICAgIEluQnlJZFN0YXR1cyogaW5CeUlkU3RhdHVzKCkKKyAgICBJbkJ5U3RhdHVz
KiBpbkJ5U3RhdHVzKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChoYXNJbkJ5SWRTdGF0dXMoKSk7
Ci0gICAgICAgIHJldHVybiBtX29wSW5mby5hczxJbkJ5SWRTdGF0dXMqPigpOworICAgICAgICBB
U1NFUlQoaGFzSW5CeVN0YXR1cygpKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPEluQnlT
dGF0dXMqPigpOwogICAgIH0KICAgICAKICAgICBib29sIGhhc1B1dEJ5SWRTdGF0dXMoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IDI5ZjM4OGFmY2QzOC4uZGFi
M2U0ZmE5Y2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC01
NDYsNyArNTQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIC8qIFVz
ZWQgdG8gcHJvdmlkZSBmZWVkYmFjayB0byB0aGUgSUMgcHJvZmlsZXIuICovIFwKICAgICBtYWNy
byhGaWx0ZXJDYWxsTGlua1N0YXR1cywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEZp
bHRlckdldEJ5U3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCi0gICAgbWFjcm8oRmlsdGVySW5C
eUlkU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oRmlsdGVySW5CeVN0YXR1
cywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEZpbHRlclB1dEJ5SWRTdGF0dXMsIE5v
ZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhGaWx0ZXJEZWxldGVCeVN0YXR1cywgTm9kZU11
c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEZpbHRlckNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzLCBO
b2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAppbmRleCA5ZDE5MWZm
OTVjNTQuLjY2NzgzNTU1ZGYyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCkBAIC0xMjU5
LDcgKzEyNTksNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVz
OgogICAgICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlclB1
dEJ5SWRTdGF0dXM6Ci0gICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgICAgICBj
YXNlIEZpbHRlckluQnlTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6
CiAgICAgICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6CiAgICAgICAgIGNh
c2UgRmlsdGVyU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOgpAQCAtMjYxNiw3ICsyNjE2LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgogICAgICAg
ICAgICAgICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgICAgICAgICAgICAgY2FzZSBG
aWx0ZXJQdXRCeUlkU3RhdHVzOgotICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3Rh
dHVzOgorICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVySW5CeVN0YXR1czoKICAgICAgICAgICAg
ICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgICAgICAgICAgICAgIGNhc2UgRmls
dGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6CiAgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJT
ZXRQcml2YXRlQnJhbmRTdGF0dXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDViNTgwYmI1
NDNjMS4uYmEwZDNlMzZjMWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtMTQ1MSw3ICsx
NDUxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKICAg
ICAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlk
U3RhdHVzOgotICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICAgICAgY2FzZSBG
aWx0ZXJJbkJ5U3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAg
ICAgICBjYXNlIEZpbHRlckNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOgogICAgICAgICBjYXNlIEZp
bHRlclNldFByaXZhdGVCcmFuZFN0YXR1czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggMjgxMzE3YTNjNTMwLi42M2FlZTI4MGY0ZTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0zNjEsNyAr
MzYxLDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGlnbm8KICAgICBjYXNlIEZpbHRlckNhbGxMaW5r
U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJQdXRC
eUlkU3RhdHVzOgotICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVy
SW5CeVN0YXR1czoKICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVzOgogICAgIGNhc2UgRmls
dGVyQ2hlY2tQcml2YXRlQnJhbmRTdGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJTZXRQcml2YXRlQnJh
bmRTdGF0dXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCmluZGV4IDBhZjVkZDk4MzljOC4uOTA1OTcyOTk1M2U2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMTI4NiwxOCArMTI4
NiwzMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5CeVZhbChOb2RlKiBub2RlKQog
ewogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwog
ICAgIEpTVmFsdWVPcGVyYW5kIGtleSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgSlNWYWx1
ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBrZXkpOwogCiAgICAgR1BSUmVnIGJh
c2VHUFIgPSBiYXNlLmdwcigpOwotICAgIEpTVmFsdWVSZWdzIHJlZ3MgPSBrZXkuanNWYWx1ZVJl
Z3MoKTsKKyAgICBKU1ZhbHVlUmVncyBrZXlSZWdzID0ga2V5LmpzVmFsdWVSZWdzKCk7CisgICAg
SlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKICAgICBiYXNlLnVzZSgp
OwogICAgIGtleS51c2UoKTsKIAotICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgSlNWYWx1ZVJl
Z3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgSlNWYWx1ZVJlZ3MgcmVzdWx0
UmVncyA9IHJlc3VsdC5yZWdzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25JbkJ5VmFs
LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgcmVncyk7
Ci0gICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4g
PSBub2RlLT5vcmlnaW4uc2VtYW50aWM7CisgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSA9IG1f
aml0LnJlY29yZENhbGxTaXRlQW5kR2VuZXJhdGVFeGNlcHRpb25IYW5kbGluZ09TUkV4aXRJZk5l
ZWRlZChjb2RlT3JpZ2luLCBtX3N0cmVhbS0+c2l6ZSgpKTsKKyAgICBSZWdpc3RlclNldCB1c2Vk
UmVnaXN0ZXJzID0gdGhpcy0+dXNlZFJlZ2lzdGVycygpOworICAgIEpJVEluQnlWYWxHZW5lcmF0
b3IgZ2VuKAorICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUs
IHVzZWRSZWdpc3RlcnMsCisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BS
KSwga2V5UmVncywgcmVzdWx0UmVncyk7CisgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQp
OworCisgICAgYXV0byBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgZ2VuLnNsb3dQ
YXRoSnVtcCgpLCB0aGlzLCBvcGVyYXRpb25JbkJ5VmFsT3B0aW1pemUsCisgICAgICAgIE5lZWRU
b1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKKyAgICAgICAg
cmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGdlbi5zdHViSW5mbygpLCBu
dWxscHRyLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwga2V5UmVncyk7CisKKyAg
ICBtX2ppdC5hZGRJbkJ5VmFsKGdlbiwgc2xvd1BhdGguZ2V0KCkpOworICAgIGFkZFNsb3dQYXRo
R2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKKwogICAgIGJsZXNzZWRCb29sZWFuUmVzdWx0
KHJlc3VsdFJlZ3MucGF5bG9hZEdQUigpLCBub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0
bHkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcAppbmRleCBmMTJmODZmMGQ2ODkuLjYzY2EzZmQyZTFhZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCkBAIC00MjcxLDcgKzQyNzEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKICAgICBjYXNlIEZpbHRl
ckdldEJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKLSAgICBjYXNlIEZp
bHRlckluQnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlckluQnlTdGF0dXM6CiAgICAgY2FzZSBG
aWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICBjYXNlIEZpbHRlckNoZWNrUHJpdmF0ZUJyYW5kU3Rh
dHVzOgogICAgIGNhc2UgRmlsdGVyU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggZWY4YmEz
ODY4ZTg1Li5jZDlkMTdhNjQ4NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtNTcwNSw3ICs1NzA1LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtT
dGF0dXM6CiAgICAgY2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAgICBjYXNlIEZpbHRlclB1dEJ5
SWRTdGF0dXM6Ci0gICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJJ
bkJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgY2FzZSBGaWx0
ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1czoKICAgICBjYXNlIEZpbHRlclNldFByaXZhdGVCcmFu
ZFN0YXR1czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyYXJn
c0ZvcndhcmRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFy
Z3NGb3J3YXJkaW5nUGhhc2UuY3BwCmluZGV4IDEwNjFiNzNmMzAxNy4uZmRhNjRkMzVkYTM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5n
UGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyYXJnc0Zvcndh
cmRpbmdQaGFzZS5jcHAKQEAgLTE5OCw3ICsxOTgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
Y2FzZSBGaWx0ZXJHZXRCeVN0YXR1czoKICAgICAgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0
YXR1czoKICAgICAgICAgICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6Ci0gICAgICAgICAg
ICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICAgICAgICAgIGNhc2UgRmlsdGVySW5CeVN0
YXR1czoKICAgICAgICAgICAgIGNhc2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAgICAg
ICBjYXNlIEZpbHRlckNoZWNrUHJpdmF0ZUJyYW5kU3RhdHVzOgogICAgICAgICAgICAgY2FzZSBG
aWx0ZXJTZXRQcml2YXRlQnJhbmRTdGF0dXM6CkBAIC00MjMsNyArNDIzLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIGNhc2UgRmlsdGVyR2V0QnlTdGF0dXM6CiAgICAgICAgICAgICBjYXNlIEZp
bHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVz
OgotICAgICAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgICAgICAgICBjYXNl
IEZpbHRlckluQnlTdGF0dXM6CiAgICAgICAgICAgICBjYXNlIEZpbHRlckRlbGV0ZUJ5U3RhdHVz
OgogICAgICAgICAgICAgY2FzZSBGaWx0ZXJDaGVja1ByaXZhdGVCcmFuZFN0YXR1czoKICAgICAg
ICAgICAgIGNhc2UgRmlsdGVyU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDRmNmUwMzdjYjExYy4uMTk4
OGUzMmE3NWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFi
aWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRp
ZXMuY3BwCkBAIC00MDksNyArNDA5LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKICAgICBjYXNl
IEZpbHRlckdldEJ5U3RhdHVzOgogICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKLSAgICBj
YXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlckluQnlTdGF0dXM6CiAgICAg
Y2FzZSBGaWx0ZXJEZWxldGVCeVN0YXR1czoKICAgICBjYXNlIEZpbHRlckNoZWNrUHJpdmF0ZUJy
YW5kU3RhdHVzOgogICAgIGNhc2UgRmlsdGVyU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDIzYmU3ZTc3
NWQzYS4uZDc4ZDdlM2FhOTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCkBAIC0xNjUyLDcgKzE2NTIsNyBAQCBwcml2YXRlOgogICAgICAgICBj
YXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgogICAgICAgICBjYXNlIEZpbHRlckdldEJ5U3RhdHVz
OgogICAgICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6Ci0gICAgICAgIGNhc2UgRmlsdGVy
SW5CeUlkU3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRlckluQnlTdGF0dXM6CiAgICAgICAgIGNh
c2UgRmlsdGVyRGVsZXRlQnlTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVyQ2hlY2tQcml2YXRl
QnJhbmRTdGF0dXM6CiAgICAgICAgIGNhc2UgRmlsdGVyU2V0UHJpdmF0ZUJyYW5kU3RhdHVzOgpA
QCAtMTIyMTMsMTMgKzEyMjEzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgbV9vdXQuYXBwZW5kVG8o
Y29udGludWF0aW9uLCBsYXN0TmV4dCk7CiAgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKElu
dDY0LCByZXN1bHRzKSk7CiAgICAgfQotICAgIAotICAgIHZvaWQgY29tcGlsZUluQnlWYWwoKQot
ICAgIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG1fb3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgc2V0SlNWYWx1ZSh2bUNh
bGwoSW50NjQsIG9wZXJhdGlvbkluQnlWYWwsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxv
d0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSkpKTsK
LSAgICB9Ci0gICAgCisKICAgICB2b2lkIGNvbXBpbGVIYXNQcml2YXRlTmFtZSgpCiAgICAgewog
ICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOwpAQCAtMTIyMzIsMzggKzEyMjI2LDUzIEBAIHByaXZh
dGU6CiAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKEludDY0LCBvcGVyYXRpb25IYXNQcml2YXRl
QnJhbmQsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxvd0NlbGwobV9ub2RlLT5jaGlsZDEo
KSksIGxvd1N5bWJvbChtX25vZGUtPmNoaWxkMigpKSkpOwogICAgIH0KIAotICAgIHZvaWQgY29t
cGlsZUluQnlJZCgpCisgICAgdGVtcGxhdGU8SW5CeUtpbmQga2luZCwgdHlwZW5hbWUgU3Vic2Ny
aXB0S2luZD4KKyAgICB2b2lkIGNvbXBpbGVJbkJ5KExWYWx1ZSBiYXNlLCBTdWJzY3JpcHRLaW5k
IHN1YnNjcmlwdFZhbHVlKQogICAgIHsKLSAgICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKLSAg
ICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gbm9kZS0+Y2FjaGVhYmxlSWRl
bnRpZmllcigpOwotICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEo
KSk7Ci0KICAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hw
b2ludChJbnQ2NCk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihiYXNl
KTsKKyAgICAgICAgaWYgY29uc3RleHByIChraW5kICE9IEluQnlLaW5kOjpOb3JtYWwpCisgICAg
ICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIoc3Vic2NyaXB0VmFsdWUpOwog
ICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVS
ZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICBwYXRjaHBvaW50LT5h
cHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1Jl
Z2lzdGVyKSk7Ci0KICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFj
cm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwogCi0gICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0
aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPQotICAgICAgICAgICAgcHJlcGFyZVBhdGNocG9p
bnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOworICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4
Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNl
cHRpb25zKHBhdGNocG9pbnQpOwogCiAgICAgICAgIFN0YXRlKiBzdGF0ZSA9ICZtX2Z0bFN0YXRl
OworICAgICAgICBOb2RlKiBub2RlID0gbV9ub2RlOwogICAgICAgICBwYXRjaHBvaW50LT5zZXRH
ZW5lcmF0b3IoCiAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFj
a21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAgIEFsbG93TWFj
cm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKIAotICAgICAgICAgICAg
ICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9Ci0gICAgICAgICAgICAgICAgICAgIHN0
YXRlLT5qaXRDb2RlLT5jb21tb24uY29kZU9yaWdpbnMtPmFkZFVuaXF1ZUNhbGxTaXRlSW5kZXgo
bm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgICAgICAgICBDYWxsU2l0ZUluZGV4IGNh
bGxTaXRlSW5kZXggPSBzdGF0ZS0+aml0Q29kZS0+Y29tbW9uLmNvZGVPcmlnaW5zLT5hZGRVbmlx
dWVDYWxsU2l0ZUluZGV4KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAKICAgICAgICAgICAgICAg
ICAvLyBUaGlzIGlzIHRoZSBkaXJlY3QgZXhpdCB0YXJnZXQgZm9yIG9wZXJhdGlvbiBjYWxscy4K
LSAgICAgICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9
Ci0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRp
b24ocGFyYW1zKS0+anVtcHMoaml0KTsKKyAgICAgICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJz
OjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9IGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3Jl
YXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKIAotICAgICAgICAgICAgICAgIGF1dG8gZ2VuZXJh
dG9yID0gQm94PEpJVEluQnlJZEdlbmVyYXRvcj46OmNyZWF0ZSgKLSAgICAgICAgICAgICAgICAg
ICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgs
Ci0gICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBpZGVu
dGlmaWVyLCBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLAotICAgICAgICAgICAgICAgICAg
ICBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpKTsKKyAgICAgICAgICAgICAgICBhdXRvIHJl
dHVybkdQUiA9IHBhcmFtc1swXS5ncHIoKTsKKyAgICAgICAgICAgICAgICBhdXRvIGJhc2UgPSBK
U1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpOworCisgICAgICAgICAgICAgICAgY29uc3QgYXV0
byBzdWJzY3JpcHQgPSBbJl0geworICAgICAgICAgICAgICAgICAgICBpZiBjb25zdGV4cHIgKGtp
bmQgPT0gSW5CeUtpbmQ6Ok5vcm1hbCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3Vic2NyaXB0VmFsdWUucmF3Qml0cygpKTsKKyAg
ICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWVSZWdzKHBhcmFtc1syXS5ncHIoKSk7CisgICAgICAgICAgICAgICAgfSgpOworCisgICAg
ICAgICAgICAgICAgY29uc3QgYXV0byBnZW5lcmF0b3IgPSBbJl0geworICAgICAgICAgICAgICAg
ICAgICBpZiBjb25zdGV4cHIgKGtpbmQgPT0gSW5CeUtpbmQ6Ok5vcm1hbCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEJveDxKSVRJbkJ5SWRHZW5lcmF0b3I+OjpjcmVhdGUoCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4u
c2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFy
YW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHN1YnNjcmlwdFZhbHVlLCBiYXNlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJldHVybkdQUikpOworICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJveDxK
SVRJbkJ5VmFsR2VuZXJhdG9yPjo6Y3JlYXRlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBiYXNlLCBzdWJzY3JpcHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJl
Z3MocmV0dXJuR1BSKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9
KCk7CiAKICAgICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsK
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsK
QEAgLTEyMjc0LDEyICsxMjI4MywyMiBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAgICAgICAg
ICAgICBnZW5lcmF0b3ItPnNsb3dQYXRoSnVtcCgpLmxpbmsoJmppdCk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIHNsb3dQYXRoQmVnaW4gPSBqaXQubGFiZWwo
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBzbG93UGF0aENh
bGwgPSBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdGF0ZSwg
cGFyYW1zLnVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIGppdCwgbm9kZS0+b3JpZ2luLnNlbWFudGlj
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMuZ2V0KCksIG9wZXJhdGlv
bkluQnlJZE9wdGltaXplLCBwYXJhbXNbMF0uZ3ByKCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIoZ2VuZXJhdG9yLT5zdHViSW5mbygpKSwgcGFyYW1zWzFdLmdwcigpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXIucmF3Qml0cygpKS5jYWxsKCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgc2xvd1BhdGhDYWxsOworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgY29uc3RleHByIChraW5kID09IEluQnlLaW5kOjpOb3JtYWwp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0
aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2
YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uSW5CeUlk
T3B0aW1pemUsIHJldHVybkdQUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaml0
LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KGdlbmVyYXRvci0+c3R1YkluZm8oKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJhc2UsIHN1YnNjcmlwdCkuY2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0
aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RhdGUsIHBhcmFtcy51bmF2
YWlsYWJsZVJlZ2lzdGVycygpLCBqaXQsIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5nZXQoKSwgb3BlcmF0aW9uSW5CeVZh
bE9wdGltaXplLCByZXR1cm5HUFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpp
dC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cihnZW5lcmF0b3ItPnN0dWJJbmZvKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIobnVsbHB0ciksIGJhc2UsIHN1YnNjcmlwdCku
Y2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAg
ICAgaml0Lmp1bXAoKS5saW5rVG8oZG9uZSwgJmppdCk7CiAKICAgICAgICAgICAgICAgICAgICAg
ICAgIGdlbmVyYXRvci0+cmVwb3J0U2xvd1BhdGhDYWxsKHNsb3dQYXRoQmVnaW4sIHNsb3dQYXRo
Q2FsbCk7CkBAIC0xMjI5NCw2ICsxMjMxMywxNiBAQCBwcml2YXRlOgogICAgICAgICBzZXRKU1Zh
bHVlKHBhdGNocG9pbnQpOwogICAgIH0KIAorICAgIHZvaWQgY29tcGlsZUluQnlJZCgpCisgICAg
eworICAgICAgICBjb21waWxlSW5CeTxJbkJ5S2luZDo6Tm9ybWFsPihsb3dDZWxsKG1fbm9kZS0+
Y2hpbGQxKCkpLCBtX25vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKSk7CisgICAgfQorCisgICAg
dm9pZCBjb21waWxlSW5CeVZhbCgpCisgICAgeworICAgICAgICBjb21waWxlSW5CeTxJbkJ5S2lu
ZDo6Tm9ybWFsQnlWYWw+KGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIGxvd0pTVmFsdWUobV9u
b2RlLT5jaGlsZDIoKSkpOworICAgIH0KKwogICAgIHZvaWQgY29tcGlsZUhhc093blByb3BlcnR5
KCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRpYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SUNTdGF0cy5oCmluZGV4IGFlM2M3ODY5NTg1YS4uZjA0YzFmNDI4ZTEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0lDU3RhdHMuaApAQCAtNDMsNiArNDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBtYWNybyhHZXRCeVNlbGZQYXRjaCkgXAogICAgIG1hY3JvKEluQWRkQWNjZXNzQ2FzZSkgXAog
ICAgIG1hY3JvKEluUmVwbGFjZVdpdGhKdW1wKSBcCisgICAgbWFjcm8oSW5SZXBsYWNlV2l0aEdl
bmVyaWMpIFwKICAgICBtYWNybyhJbnN0YW5jZU9mQWRkQWNjZXNzQ2FzZSkgXAogICAgIG1hY3Jv
KEluc3RhbmNlT2ZSZXBsYWNlV2l0aEp1bXApIFwKICAgICBtYWNybyhPcGVyYXRpb25HZXRCeUlk
KSBcCkBAIC01Miw3ICs1Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKE9wZXJhdGlv
bkdldEJ5VmFsT3B0aW1pemUpIFwKICAgICBtYWNybyhPcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNP
cHRpbWl6ZSkgXAogICAgIG1hY3JvKE9wZXJhdGlvbkdlbmVyaWNJbikgXAotICAgIG1hY3JvKE9w
ZXJhdGlvbkluQnlJZCkgXAorICAgIG1hY3JvKE9wZXJhdGlvbkluQnlJZEdlbmVyaWMpIFwKICAg
ICBtYWNybyhPcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSkgXAogICAgIG1hY3JvKE9wZXJhdGlvblB1
dEJ5SWRTdHJpY3QpIFwKICAgICBtYWNybyhPcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0KSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggZWUxYTRlMzdmZmMyLi40ZTdlY2I5NDIwNjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTI4NSw3ICsyODUsNiBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIH0KIAogICAgICAgICBzd2l0Y2gg
KG9wY29kZUlEKSB7Ci0gICAgICAgIERFRklORV9TTE9XX09QKGluX2J5X3ZhbCkKICAgICAgICAg
REVGSU5FX1NMT1dfT1AoaGFzX3ByaXZhdGVfbmFtZSkKICAgICAgICAgREVGSU5FX1NMT1dfT1Ao
aGFzX3ByaXZhdGVfYnJhbmQpCiAgICAgICAgIERFRklORV9TTE9XX09QKGxlc3MpCkBAIC0zNjEs
NiArMzYwLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBE
RUZJTkVfT1Aob3BfYmVsb3dlcSkKICAgICAgICAgREVGSU5FX09QKG9wX3RyeV9nZXRfYnlfaWQp
CiAgICAgICAgIERFRklORV9PUChvcF9pbl9ieV9pZCkKKyAgICAgICAgREVGSU5FX09QKG9wX2lu
X2J5X3ZhbCkKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9ieV9pZCkKICAgICAgICAgREVGSU5F
X09QKG9wX2dldF9ieV9pZF93aXRoX3RoaXMpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfYnlf
aWRfZGlyZWN0KQpAQCAtNTE4LDggKzUxOCw5IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNs
b3dDYXNlcygpCiAgICAgbV9nZXRCeUlkV2l0aFRoaXNJbmRleCA9IDA7CiAgICAgbV9wdXRCeUlk
SW5kZXggPSAwOwogICAgIG1faW5CeUlkSW5kZXggPSAwOwotICAgIG1fZGVsQnlWYWxJbmRleCA9
IDA7CisgICAgbV9pbkJ5VmFsSW5kZXggPSAwOwogICAgIG1fZGVsQnlJZEluZGV4ID0gMDsKKyAg
ICBtX2RlbEJ5VmFsSW5kZXggPSAwOwogICAgIG1faW5zdGFuY2VPZkluZGV4ID0gMDsKICAgICBt
X3ByaXZhdGVCcmFuZEFjY2Vzc0luZGV4ID0gMDsKICAgICBtX2J5VmFsSW5zdHJ1Y3Rpb25JbmRl
eCA9IDA7CkBAIC01NzAsNiArNTcxLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nh
c2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2VxKQogICAgICAgICBERUZJTkVf
U0xPV0NBU0VfT1Aob3BfdHJ5X2dldF9ieV9pZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09Q
KG9wX2luX2J5X2lkKQorICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfaW5fYnlfdmFsKQog
ICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZ2V0X2J5X2lkKQogICAgICAgICBERUZJTkVf
U0xPV0NBU0VfT1Aob3BfZ2V0X2J5X2lkX3dpdGhfdGhpcykKICAgICAgICAgREVGSU5FX1NMT1dD
QVNFX09QKG9wX2dldF9ieV9pZF9kaXJlY3QpCkBAIC05MTksNiArOTIxLDcgQEAgdm9pZCBKSVQ6
OmxpbmsoKQogICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1fZGVsQnlJZHMsIHBhdGNoQnVmZmVy
KTsKICAgICBmaW5hbGl6ZUlubGluZUNhY2hlcyhtX2RlbEJ5VmFscywgcGF0Y2hCdWZmZXIpOwog
ICAgIGZpbmFsaXplSW5saW5lQ2FjaGVzKG1faW5CeUlkcywgcGF0Y2hCdWZmZXIpOworICAgIGZp
bmFsaXplSW5saW5lQ2FjaGVzKG1faW5CeVZhbHMsIHBhdGNoQnVmZmVyKTsKICAgICBmaW5hbGl6
ZUlubGluZUNhY2hlcyhtX2luc3RhbmNlT2ZzLCBwYXRjaEJ1ZmZlcik7CiAgICAgZmluYWxpemVJ
bmxpbmVDYWNoZXMobV9wcml2YXRlQnJhbmRBY2Nlc3NlcywgcGF0Y2hCdWZmZXIpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaAppbmRleCA3NWM5Y2I5NmIxMzYuLjM4Y2M4ODg3YzM2YiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oCkBAIC01NjUsNiArNTY1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYXJndW1lbnRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfcHJvdG90eXBlX29mKGNvbnN0IEluc3RydWN0
aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pbl9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKik7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9pbml0X2xhenlfcmVnKGNvbnN0IEluc3RydWN0aW9uKik7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlKGNvbnN0IEluc3RydWN0
aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pbnN0YW5jZW9mKGNvbnN0IEluc3RydWN0aW9u
Kik7CkBAIC02OTgsNiArNjk5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1p
dFNsb3dfb3BfY2hlY2tfcHJpdmF0ZV9icmFuZChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9nZXRf
YXJndW1lbnRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2luX2J5X2lkKGNvbnN0IElu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOworICAgICAgICB2
b2lkIGVtaXRTbG93X29wX2luX2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9pbnN0YW5j
ZW9mKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYp
OwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2luc3RhbmNlb2ZfY3VzdG9tKGNvbnN0IEluc3Ry
dWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lk
IGVtaXRTbG93X29wX2psZXNzKGNvbnN0IEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50
cnk+OjppdGVyYXRvciYpOwpAQCAtMTAzNyw2ICsxMDM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIFZlY3RvcjxKSVRHZXRCeUlkV2l0aFRoaXNHZW5lcmF0b3I+IG1fZ2V0QnlJZHNXaXRo
VGhpczsKICAgICAgICAgVmVjdG9yPEpJVFB1dEJ5SWRHZW5lcmF0b3I+IG1fcHV0QnlJZHM7CiAg
ICAgICAgIFZlY3RvcjxKSVRJbkJ5SWRHZW5lcmF0b3I+IG1faW5CeUlkczsKKyAgICAgICAgVmVj
dG9yPEpJVEluQnlWYWxHZW5lcmF0b3I+IG1faW5CeVZhbHM7CiAgICAgICAgIFZlY3RvcjxKSVRE
ZWxCeUlkR2VuZXJhdG9yPiBtX2RlbEJ5SWRzOwogICAgICAgICBWZWN0b3I8SklURGVsQnlWYWxH
ZW5lcmF0b3I+IG1fZGVsQnlWYWxzOwogICAgICAgICBWZWN0b3I8SklUSW5zdGFuY2VPZkdlbmVy
YXRvcj4gbV9pbnN0YW5jZU9mczsKQEAgLTEwNjMsNiArMTA2Niw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB1bnNpZ25lZCBtX2dldEJ5SWRXaXRoVGhpc0luZGV4IHsgVUlOVF9NQVggfTsK
ICAgICAgICAgdW5zaWduZWQgbV9wdXRCeUlkSW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1
bnNpZ25lZCBtX2luQnlJZEluZGV4IHsgVUlOVF9NQVggfTsKKyAgICAgICAgdW5zaWduZWQgbV9p
bkJ5VmFsSW5kZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBtX2RlbEJ5VmFsSW5k
ZXggeyBVSU5UX01BWCB9OwogICAgICAgICB1bnNpZ25lZCBtX2RlbEJ5SWRJbmRleCB7IFVJTlRf
TUFYIH07CiAgICAgICAgIHVuc2lnbmVkIG1faW5zdGFuY2VPZkluZGV4IHsgVUlOVF9NQVggfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVy
YXRvci5jcHAKaW5kZXggZjUyYzNjNzYyMTVhLi4xODkzYzY4MDEyYjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBA
IC0yMzUsMTAgKzIzNSwzOCBAQCB2b2lkIEpJVERlbEJ5SWRHZW5lcmF0b3I6OmZpbmFsaXplKAog
ICAgICAgICBmYXN0UGF0aCwgc2xvd1BhdGgsIGZhc3RQYXRoLmxvY2F0aW9uT2Y8SklUU3R1YlJv
dXRpbmVQdHJUYWc+KG1fc3RhcnQpKTsKIH0KIAotSklUSW5CeUlkR2VuZXJhdG9yOjpKSVRJbkJ5
SWRHZW5lcmF0b3IoCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9y
aWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdp
c3RlcnMsCi0gICAgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWdz
IGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlKQotICAgIDogSklUQnlJZEdlbmVyYXRvcihjb2RlQmxv
Y2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpJbiwgdXNlZFJlZ2lzdGVycywg
YmFzZSwgdmFsdWUpCitKSVRJbkJ5VmFsR2VuZXJhdG9yOjpKSVRJbkJ5VmFsR2VuZXJhdG9yKENv
ZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgg
Y2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVS
ZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQpCisgICAg
OiBCYXNlKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGVJbmRleCwgQWNjZXNzVHlwZTo6
SW5CeVZhbCwgdXNlZFJlZ2lzdGVycykKK3sKKyAgICBtX3N0dWJJbmZvLT5oYXNDb25zdGFudElk
ZW50aWZpZXIgPSBmYWxzZTsKKworICAgIG1fc3R1YkluZm8tPmJhc2VHUFIgPSBiYXNlLnBheWxv
YWRHUFIoKTsKKyAgICBtX3N0dWJJbmZvLT5yZWdzLnByb3BlcnR5R1BSID0gcHJvcGVydHkucGF5
bG9hZEdQUigpOworICAgIG1fc3R1YkluZm8tPnZhbHVlR1BSID0gcmVzdWx0LnBheWxvYWRHUFIo
KTsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIG1fc3R1YkluZm8tPmJhc2VUYWdHUFIgPSBi
YXNlLnRhZ0dQUigpOworICAgIG1fc3R1YkluZm8tPnZhbHVlVGFnR1BSID0gcmVzdWx0LnRhZ0dQ
UigpOworICAgIG1fc3R1YkluZm8tPnYucHJvcGVydHlUYWdHUFIgPSBwcm9wZXJ0eS50YWdHUFIo
KTsKKyNlbmRpZgorfQorCit2b2lkIEpJVEluQnlWYWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBh
dGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKK3sKKyAgICBtX3N0YXJ0ID0gaml0LmxhYmVsKCk7Cisg
ICAgbV9zbG93UGF0aEp1bXAgPSBqaXQucGF0Y2hhYmxlSnVtcCgpOworICAgIG1fZG9uZSA9IGpp
dC5sYWJlbCgpOworfQorCit2b2lkIEpJVEluQnlWYWxHZW5lcmF0b3I6OmZpbmFsaXplKAorICAg
IExpbmtCdWZmZXImIGZhc3RQYXRoLCBMaW5rQnVmZmVyJiBzbG93UGF0aCkKK3sKKyAgICBBU1NF
UlQobV9zdGFydC5pc1NldCgpKTsKKyAgICBCYXNlOjpmaW5hbGl6ZSgKKyAgICAgICAgZmFzdFBh
dGgsIHNsb3dQYXRoLCBmYXN0UGF0aC5sb2NhdGlvbk9mPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiht
X3N0YXJ0KSk7Cit9CisKK0pJVEluQnlJZEdlbmVyYXRvcjo6SklUSW5CeUlkR2VuZXJhdG9yKENv
ZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgg
Y2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVu
dGlmaWVyIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUp
CisgICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUs
IEFjY2Vzc1R5cGU6OkluQnlJZCwgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUpCiB7CiAgICAg
Ly8gRklYTUU6IFdlIGFyZSBub3Qgc3VwcG9ydGluZyBmYXN0IHBhdGggZm9yICJsZW5ndGgiIHBy
b3BlcnR5LgogICAgIFVOVVNFRF9QQVJBTShwcm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCmluZGV4IGQ2Y2E2
ZTE2YTNmMy4uOTA0ZGIxNDIyMjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCkBAIC0xOTUsNiArMTk1LDMxIEBAIHByaXZh
dGU6CiAgICAgTWFjcm9Bc3NlbWJsZXI6OlBhdGNoYWJsZUp1bXAgbV9zbG93UGF0aEp1bXA7CiB9
OwogCitjbGFzcyBKSVRJbkJ5VmFsR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2Vu
ZXJhdG9yIHsKKyAgICB1c2luZyBCYXNlID0gSklUSW5saW5lQ2FjaGVHZW5lcmF0b3I7CitwdWJs
aWM6CisgICAgSklUSW5CeVZhbEdlbmVyYXRvcigpIHsgfQorCisgICAgSklUSW5CeVZhbEdlbmVy
YXRvcigKKyAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29u
c3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIEpTVmFsdWVSZWdzIGJhc2Us
IEpTVmFsdWVSZWdzIHByb3BlcnR5LCBKU1ZhbHVlUmVncyByZXN1bHQpOworCisgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAgc2xvd1BhdGhKdW1wKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VS
VChtX3Nsb3dQYXRoSnVtcC5tX2p1bXAuaXNTZXQoKSk7CisgICAgICAgIHJldHVybiBtX3Nsb3dQ
YXRoSnVtcC5tX2p1bXA7CisgICAgfQorCisgICAgdm9pZCBmaW5hbGl6ZSgKKyAgICAgICAgTGlu
a0J1ZmZlciYgZmFzdFBhdGhMaW5rQnVmZmVyLCBMaW5rQnVmZmVyJiBzbG93UGF0aExpbmtCdWZm
ZXIpOworCisgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CisKK3By
aXZhdGU6CisgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIG1fc3RhcnQ7CisgICAgTWFjcm9Bc3Nl
bWJsZXI6OlBhdGNoYWJsZUp1bXAgbV9zbG93UGF0aEp1bXA7Cit9OworCiBjbGFzcyBKSVRJbkJ5
SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiBwdWJsaWM6CiAgICAgSklU
SW5CeUlkR2VuZXJhdG9yKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcAppbmRleCAwNjAzZjkzYTlhZmYuLjQxODVjNzYyYzk4NSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0zOTQsNyArMzk0LDcgQEAg
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXpl
LCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2wKICAgICB9KSk7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25JbkJ5SWQsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1
ZSBiYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRlbnRpZmllcikpCitKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uSW5CeUlkR2VuZXJpYywgRW5jb2RlZEpTVmFsdWUsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVu
Y29kZWRKU1ZhbHVlIGJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJZGVudGlmaWVyKSkKIHsK
ICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAKQEAgLTQx
NSw3ICs0MTUsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5CeUlkLCBF
bmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogICAgIH0KICAgICBKU09iamVj
dCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CiAKLSAgICBMT0dfSUMoKElDRXZl
bnQ6Ok9wZXJhdGlvbkluQnlJZCwgYmFzZU9iamVjdC0+Y2xhc3NJbmZvKHZtKSwgaWRlbnQpKTsK
KyAgICBMT0dfSUMoKElDRXZlbnQ6Ok9wZXJhdGlvbkluQnlJZEdlbmVyaWMsIGJhc2VPYmplY3Qt
PmNsYXNzSW5mbyh2bSksIGlkZW50KSk7CiAKICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgUHJv
cGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5
cGU6Okhhc1Byb3BlcnR5KTsKQEAgLTQ0OCwxOSArNDQ4LDY0IEBAIEpTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2Jh
bE9iamVjCiAgICAgYm9vbCBmb3VuZCA9IGJhc2VPYmplY3QtPmdldFByb3BlcnR5U2xvdChnbG9i
YWxPYmplY3QsIGlkZW50LCBzbG90KTsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxG
cmFtZS0+Y29kZUJsb2NrKCk7CiAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdCeSh2
bSwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUodm0pLCBpZGVudGlmaWVyKSkKLSAg
ICAgICAgcmVwYXRjaEluQnlJRChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwg
aWRlbnRpZmllciwgZm91bmQsIHNsb3QsICpzdHViSW5mbyk7CisgICAgICAgIHJlcGF0Y2hJbkJ5
KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBpZGVudGlmaWVyLCBmb3VuZCwg
c2xvdCwgKnN0dWJJbmZvLCBJbkJ5S2luZDo6Tm9ybWFsKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzQm9vbGVhbihmb3VuZCkpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uSW5CeVZhbCwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0NlbGwqIGJhc2UsIEVuY29kZWRKU1ZhbHVlIGtleSkpCitKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uSW5CeVZhbE9wdGltaXplLCBFbmNvZGVkSlNWYWx1ZSwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
QXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkS2V5KSkKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBl
clNhbXBsZXJTY29wZShmYWxzZSk7Ci0gICAgCisKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAg
ICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisgICAg
aWYgKCFiYXNlVmFsdWUuaXNPYmplY3QoKSkgeworICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9i
YWxPYmplY3QsIHNjb3BlLCBjcmVhdGVJbnZhbGlkSW5QYXJhbWV0ZXJFcnJvcihnbG9iYWxPYmpl
Y3QsIGJhc2VWYWx1ZSkpOworICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKKyAgICB9
CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOworICAgIGlm
IChhcnJheVByb2ZpbGUpCisgICAgICAgIGFycmF5UHJvZmlsZS0+b2JzZXJ2ZVN0cnVjdHVyZShi
YXNlT2JqZWN0LT5zdHJ1Y3R1cmUodm0pKTsKKworICAgIEpTVmFsdWUga2V5ID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRLZXkpOworICAgIHVpbnQzMl90IGk7CisgICAgaWYgKGtleS5nZXRVSW50
MzIoaSkpIHsKKyAgICAgICAgLy8gRklYTUU6IEluQnlWYWwgc2hvdWxkIGhhdmUgaW5saW5lIGNh
Y2hpbmcgZm9yIGludGVnZXIgaW5kaWNlcyB0b28sIGFzIEdldEJ5VmFsIGRvZXMuCisgICAgICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY2MTkKKyAgICAg
ICAgaWYgKGFycmF5UHJvZmlsZSkKKyAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+b2JzZXJ2ZUlu
ZGV4ZWRSZWFkKHZtLCBiYXNlT2JqZWN0LCBpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGJhc2VPYmplY3QtPmhhc1Byb3BlcnR5
KGdsb2JhbE9iamVjdCwgaSkpKSk7CisgICAgfQorCisgICAgY29uc3QgSWRlbnRpZmllciBwcm9w
ZXJ0eU5hbWUgPSBrZXkudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIFByb3BlcnR5U2xvdCBz
bG90KGJhc2VPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpIYXNQcm9w
ZXJ0eSk7CisgICAgYm9vbCBmb3VuZCA9IGJhc2VPYmplY3QtPmdldFByb3BlcnR5U2xvdChnbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAgICBpZiAoQ2FjaGVhYmxlSWRlbnRpZmllcjo6
aXNDYWNoZWFibGVJZGVudGlmaWVyQ2VsbChrZXkpICYmIChrZXkuaXNTeW1ib2woKSB8fCAhcGFy
c2VJbmRleChwcm9wZXJ0eU5hbWUpKSkgeworICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CisgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRl
bnRpZmllciA9IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21DZWxsKGtleS5hc0NlbGwo
KSk7CisgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nQnkodm0sIGNvZGVCbG9j
aywgYmFzZU9iamVjdC0+c3RydWN0dXJlKHZtKSwgaWRlbnRpZmllcikpCisgICAgICAgICAgICBy
ZXBhdGNoSW5CeShnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgaWRlbnRpZmll
ciwgZm91bmQsIHNsb3QsICpzdHViSW5mbywgSW5CeUtpbmQ6Ok5vcm1hbEJ5VmFsKTsKKyAgICB9
CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmb3VuZCkpOworfQorCitK
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5CeVZhbEdlbmVyaWMsIEVuY29kZWRK
U1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvLCBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSwgRW5jb2RlZEpTVmFsdWUgYmFz
ZSwgRW5jb2RlZEpTVmFsdWUga2V5KSkKK3sKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNh
bXBsZXJTY29wZShmYWxzZSk7CisKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJ
VE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsK
IAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6
b3BJbkJ5VmFsKGdsb2JhbE9iamVjdCwgYmFzZSwgSlNWYWx1ZTo6ZGVjb2RlKGtleSkpKSk7Cisg
ICAgc3R1YkluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluQnlWYWwoZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlOjpkZWNvZGUoYmFzZSksIEpTVmFsdWU6OmRlY29kZShrZXkpLCBhcnJheVByb2ZpbGUp
KSk7CiB9CiAKIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25IYXNQcml2YXRlTmFt
ZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwq
IGJhc2UsIEVuY29kZWRKU1ZhbHVlIGtleSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5oCmluZGV4IDNlMWVhYjcyMGFiYi4uZDg3NzA2NmM4NTMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMTc0LDEwICsxNzQsMTAgQEAg
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25HZXRCeUlkRGlyZWN0LCBFbmNvZGVk
SlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWMKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uR2V0QnlJZERpcmVjdEdlbmVyaWMsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3Qq
LCBFbmNvZGVkSlNWYWx1ZSwgdWludHB0cl90KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbkdldEJ5SWREaXJlY3RPcHRpbWl6ZSwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIHVpbnRwdHJfdCkp
OwogCi1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluQnlJZCwgRW5jb2RlZEpT
VmFsdWUsIChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFs
dWUsIHVpbnRwdHJfdCkpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25JbkJ5
SWRHZW5lcmljLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1
YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgdWludHB0cl90KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbkluQnlJZE9wdGltaXplLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgdWludHB0cl90KSk7
Ci0KLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW5CeVZhbCwgRW5jb2RlZEpT
VmFsdWUsIChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlKSk7CitKU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkluQnlWYWxHZW5lcmljLCBFbmNvZGVkSlNW
YWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBBcnJheVByb2ZpbGUq
LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uSW5CeVZhbE9wdGltaXplLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBBcnJheVByb2ZpbGUqLCBFbmNvZGVkSlNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
SGFzUHJpdmF0ZU5hbWUsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwq
LCBFbmNvZGVkSlNWYWx1ZSkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25I
YXNQcml2YXRlQnJhbmQsIEVuY29kZWRKU1ZhbHVlLCAoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwq
LCBFbmNvZGVkSlNWYWx1ZSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDY0NDY3ZTlhMjVlMS4uYTg3YmIzMmNjZmU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAt
MTU3Myw2ICsxNTczLDc2IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9pbl9ieV9pZChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvCiAgICAgZ2VuLnJlcG9y
dFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBjYWxsKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRf
b3BfaW5fYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7Cisg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJbkJ5VmFsPigpOwor
ICAgIFZpcnR1YWxSZWdpc3RlciBkc3QgPSBieXRlY29kZS5tX2RzdDsKKyAgICBWaXJ0dWFsUmVn
aXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgcHJvcGVy
dHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OworICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUu
bWV0YWRhdGEobV9jb2RlQmxvY2spOworICAgIEFycmF5UHJvZmlsZSogcHJvZmlsZSA9ICZtZXRh
ZGF0YS5tX2FycmF5UHJvZmlsZTsKKworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFzZSwg
cmVnVDApOworICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7Cisg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9wZXJ0eSwgcmVnVDEpOworICAgIGVtaXRBcnJh
eVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChyZWdUMCwgcmVnVDIsIHByb2ZpbGUpOworCisgICAgSklU
SW5CeVZhbEdlbmVyYXRvciBnZW4oCisgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1f
Ynl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJT
ZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAorICAgICAgICBKU1ZhbHVlUmVncyhyZWdU
MCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgSlNWYWx1ZVJlZ3MocmVnVDApKTsKKyAgICBnZW4uZ2Vu
ZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgp
KTsKKyAgICBtX2luQnlWYWxzLmFwcGVuZChnZW4pOworCisgICAgZW1pdFB1dFZpcnR1YWxSZWdp
c3Rlcihkc3QpOworfQorCit2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfaW5fYnlfdmFsKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImIGl0ZXIpCit7CisgICAgbGlua0FsbFNsb3dDYXNlcyhpdGVyKTsKKworICAgIGF1dG8g
Ynl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wSW5CeVZhbD4oKTsKKyAgICBWaXJ0
dWFsUmVnaXN0ZXIgZHN0ID0gYnl0ZWNvZGUubV9kc3Q7CisgICAgYXV0byYgbWV0YWRhdGEgPSBi
eXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7CisgICAgQXJyYXlQcm9maWxlKiBwcm9maWxl
ID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOworCisgICAgSklUSW5CeVZhbEdlbmVyYXRvciYg
Z2VuID0gbV9pbkJ5VmFsc1ttX2luQnlWYWxJbmRleCsrXTsKKworICAgIExhYmVsIGNvbGRQYXRo
QmVnaW4gPSBsYWJlbCgpOworCisjaWYgIUVOQUJMRShFWFRSQV9DVElfVEhVTktTKQorICAgIENh
bGwgY2FsbCA9IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSW5CeVZhbE9wdGltaXplLCBkc3QsIFRy
dXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKSwgZ2VuLnN0dWJJbmZvKCks
IHByb2ZpbGUsIHJlZ1QwLCByZWdUMSk7CisjZWxzZQorICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7
CisgICAgdWludDMyX3QgYnl0ZWNvZGVPZmZzZXQgPSBtX2J5dGVjb2RlSW5kZXgub2Zmc2V0KCk7
CisgICAgQVNTRVJUKEJ5dGVjb2RlSW5kZXgoYnl0ZWNvZGVPZmZzZXQpID09IG1fYnl0ZWNvZGVJ
bmRleCk7CisKKyAgICBjb25zdGV4cHIgR1BSUmVnIGJ5dGVjb2RlT2Zmc2V0R1BSID0gYXJndW1l
bnRHUFI0OworICAgIG1vdmUoVHJ1c3RlZEltbTMyKGJ5dGVjb2RlT2Zmc2V0KSwgYnl0ZWNvZGVP
ZmZzZXRHUFIpOworCisgICAgY29uc3RleHByIEdQUlJlZyBzdHViSW5mb0dQUiA9IGFyZ3VtZW50
R1BSMzsKKyAgICBjb25zdGV4cHIgR1BSUmVnIHByb2ZpbGVHUFIgPSBhcmd1bWVudEdQUjI7Cisg
ICAgY29uc3RleHByIEdQUlJlZyBiYXNlR1BSID0gcmVnVDA7CisgICAgY29uc3RleHByIEdQUlJl
ZyBwcm9wZXJ0eUdQUiA9IHJlZ1QxOworICAgIHN0YXRpY19hc3NlcnQoYmFzZUdQUiA9PSBhcmd1
bWVudEdQUjAgfHwgIWlzQVJNNjQoKSk7CisgICAgc3RhdGljX2Fzc2VydChwcm9wZXJ0eUdQUiA9
PSBhcmd1bWVudEdQUjEpOworCisgICAgbW92ZShUcnVzdGVkSW1tUHRyKGdlbi5zdHViSW5mbygp
KSwgc3R1YkluZm9HUFIpOworICAgIG1vdmUoVHJ1c3RlZEltbVB0cihwcm9maWxlKSwgcHJvZmls
ZUdQUik7CisgICAgLy8gc2xvd19vcF9nZXRfYnlfdmFsX3ByZXBhcmVDYWxsR2VuZXJhdG9yIHdp
bGwgZG8gZXhhY3RseSB3aGF0IHdlIG5lZWQuCisgICAgLy8gU28sIHRoZXJlJ3Mgbm8gcG9pbnQg
aW4gY3JlYXRpbmcgYSBkdXBsaWNhdGUgdGh1bmsganVzdCB0byBnaXZlIGl0IGEgZGlmZmVyZW50
IG5hbWUuCisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUob3BlcmF0aW9u
SW5CeVZhbE9wdGltaXplKSwgZGVjbHR5cGUob3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSk+Ojp2
YWx1ZSk7CisgICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihzbG93X29wX2dldF9i
eV92YWxfcHJlcGFyZUNhbGxHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxOb1B0clRhZz4oKSk7CisK
KyAgICBDYWxsIGNhbGwgPSBhcHBlbmRDYWxsKG9wZXJhdGlvbkluQnlWYWxPcHRpbWl6ZSk7Cisg
ICAgZW1pdE5ha2VkTmVhckNhbGwodm0uZ2V0Q1RJU3R1YihjaGVja0V4Y2VwdGlvbkdlbmVyYXRv
cikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigpKTsKKworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0
ZXIoZHN0LCByZXR1cm5WYWx1ZUdQUik7CisjZW5kaWYgLy8gRU5BQkxFKEVYVFJBX0NUSV9USFVO
S1MpCisKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIGNhbGwpOwor
fQorCiB2b2lkIEpJVDo6ZW1pdFZhckluamVjdGlvbkNoZWNrKGJvb2wgbmVlZHNWYXJJbmplY3Rp
b25DaGVja3MpCiB7CiAgICAgaWYgKCFuZWVkc1ZhckluamVjdGlvbkNoZWNrcykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmlu
ZGV4IGMyMmM3NzA0Mjg5YS4uODU1N2QyZGVjZTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKQEAgLTkwOCw2ICs5MDgs
NDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2luX2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG8KICAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxs
KGNvbGRQYXRoQmVnaW4sIGNhbGwpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9pbl9ieV92YWwo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBhdXRvIGJ5dGVj
b2RlID0gY3VycmVudEluc3RydWN0aW9uLT5hczxPcEluQnlWYWw+KCk7CisgICAgVmlydHVhbFJl
Z2lzdGVyIGRzdCA9IGJ5dGVjb2RlLm1fZHN0OworICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0g
Ynl0ZWNvZGUubV9iYXNlOworICAgIFZpcnR1YWxSZWdpc3RlciBwcm9wZXJ0eSA9IGJ5dGVjb2Rl
Lm1fcHJvcGVydHk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2Nv
ZGVCbG9jayk7CisgICAgQXJyYXlQcm9maWxlKiBwcm9maWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQ
cm9maWxlOworCisgICAgZW1pdExvYWQyKGJhc2UsIHJlZ1QxLCByZWdUMCwgcHJvcGVydHksIHJl
Z1QzLCByZWdUMik7CisgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIHJlZ1Qx
KTsKKyAgICBlbWl0QXJyYXlQcm9maWxpbmdTaXRlV2l0aENlbGwocmVnVDAsIHJlZ1Q0LCBwcm9m
aWxlKTsKKworICAgIEpJVEluQnlWYWxHZW5lcmF0b3IgZ2VuKAorICAgICAgICBtX2NvZGVCbG9j
aywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJ
bmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKKyAgICAgICAg
SlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1Qy
KSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSk7CisgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgo
KnRoaXMpOworICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CisgICAgbV9pbkJ5
VmFscy5hcHBlbmQoZ2VuKTsKKworICAgIGVtaXRTdG9yZShkc3QsIHJlZ1QxLCByZWdUMCk7Cit9
CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9pbl9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikK
K3sKKyAgICBsaW5rQWxsU2xvd0Nhc2VzKGl0ZXIpOworCisgICAgYXV0byBieXRlY29kZSA9IGN1
cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BJbkJ5VmFsPigpOworICAgIFZpcnR1YWxSZWdpc3RlciBk
c3QgPSBieXRlY29kZS5tX2RzdDsKKyAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFk
YXRhKG1fY29kZUJsb2NrKTsKKyAgICBBcnJheVByb2ZpbGUqIHByb2ZpbGUgPSAmbWV0YWRhdGEu
bV9hcnJheVByb2ZpbGU7CisKKyAgICBKSVRJbkJ5VmFsR2VuZXJhdG9yJiBnZW4gPSBtX2luQnlW
YWxzW21faW5CeVZhbEluZGV4KytdOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVs
KCk7CisKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkluQnlWYWxPcHRp
bWl6ZSwgZHN0LCBUcnVzdGVkSW1tUHRyKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSksIGdl
bi5zdHViSW5mbygpLCBwcm9maWxlLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBKU1ZhbHVl
UmVncyhyZWdUMywgcmVnVDIpKTsKKworICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBh
dGhCZWdpbiwgY2FsbCk7Cit9CisKIHZvaWQgSklUOjplbWl0VmFySW5qZWN0aW9uQ2hlY2soYm9v
bCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcykKIHsKICAgICBpZiAoIW5lZWRzVmFySW5qZWN0aW9u
Q2hlY2tzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggOTA1ZjhkN2Yy
YWZiLi4wNzI5ZGU2MmY3NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApA
QCAtODk3LDcgKzg5Nyw3IEBAIHZvaWQgcmVwYXRjaERlbGV0ZUJ5KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBEZWxldGVQCiAgICAgfQogfQogCi1z
dGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVJbkJ5SUQoCitzdGF0aWMgSW5saW5lQ2Fj
aGVBY3Rpb24gdHJ5Q2FjaGVJbkJ5KAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENvZGVCbG9jayogY29kZUJsb2NrLCBKU09iamVjdCogYmFzZSwgQ2FjaGVhYmxlSWRlbnRpZmll
ciBwcm9wZXJ0eU5hbWUsCiAgICAgYm9vbCB3YXNGb3VuZCwgY29uc3QgUHJvcGVydHlTbG90JiBz
bG90LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8pCiB7CkBAIC0xMDAyLDEyICsxMDAyLDE4
IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUluQnlJRCgKICAgICByZXR1cm4g
cmVzdWx0LnNob3VsZEdpdmVVcE5vdygpID8gR2l2ZVVwT25DYWNoZSA6IFJldHJ5Q2FjaGVMYXRl
cjsKIH0KIAotdm9pZCByZXBhdGNoSW5CeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENvZGVCbG9jayogY29kZUJsb2NrLCBKU09iamVjdCogYmFzZU9iamVjdCwgQ2FjaGVhYmxlSWRl
bnRpZmllciBwcm9wZXJ0eU5hbWUsIGJvb2wgd2FzRm91bmQsIGNvbnN0IFByb3BlcnR5U2xvdCYg
c2xvdCwgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvKQordm9pZCByZXBhdGNoSW5CeShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNPYmplY3Qq
IGJhc2VPYmplY3QsIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBib29sIHdhc0Zv
dW5kLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5m
bywgSW5CeUtpbmQga2luZCkKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJT
Y29wZShmYWxzZSk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogCi0gICAgaWYg
KHRyeUNhY2hlSW5CeUlEKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHdhc0ZvdW5kLCBzbG90LCBzdHViSW5mbykgPT0gR2l2ZVVwT25DYWNoZSkKLSAg
ICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1Bh
dGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkluQnlJZCk7CisgICAgaWYgKHRyeUNhY2hlSW5CeShn
bG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgcHJvcGVydHlOYW1lLCB3YXNGb3Vu
ZCwgc2xvdCwgc3R1YkluZm8pID09IEdpdmVVcE9uQ2FjaGUpIHsKKyAgICAgICAgTE9HX0lDKChJ
Q0V2ZW50OjpJblJlcGxhY2VXaXRoR2VuZXJpYywgYmFzZU9iamVjdC0+Y2xhc3NJbmZvKGdsb2Jh
bE9iamVjdC0+dm0oKSksIElkZW50aWZpZXI6OmZyb21VaWQodm0sIHByb3BlcnR5TmFtZS51aWQo
KSkpKTsKKyAgICAgICAgaWYgKGtpbmQgPT0gSW5CeUtpbmQ6Ok5vcm1hbCkKKyAgICAgICAgICAg
IGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2Fs
bExvY2F0aW9uLCBvcGVyYXRpb25JbkJ5SWRHZW5lcmljKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgZnRsVGh1bmtBd2FyZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1Bh
dGhDYWxsTG9jYXRpb24sIG9wZXJhdGlvbkluQnlWYWxHZW5lcmljKTsKKyAgICB9CiB9CiAKIHN0
YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUNoZWNrUHJpdmF0ZUJyYW5kKApAQCAtMTY4
Myw5ICsxNjg5LDEyIEBAIHN0YXRpYyB2b2lkIHJlc2V0UGF0Y2hhYmxlSnVtcChTdHJ1Y3R1cmVT
dHViSW5mbyYgc3R1YkluZm8pCiAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKHN0dWJJ
bmZvLnBhdGNoYWJsZUp1bXAoKSwgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKTsKIH0K
IAotdm9pZCByZXNldEluQnlJRChDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlU3R1Yklu
Zm8mIHN0dWJJbmZvKQordm9pZCByZXNldEluQnkoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVj
dHVyZVN0dWJJbmZvJiBzdHViSW5mbywgSW5CeUtpbmQga2luZCkKIHsKLSAgICBmdGxUaHVua0F3
YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5zbG93UGF0aENhbGxMb2NhdGlvbiwg
b3BlcmF0aW9uSW5CeUlkT3B0aW1pemUpOworICAgIGlmIChraW5kID09IEluQnlLaW5kOjpOb3Jt
YWwpCisgICAgICAgIGZ0bFRodW5rQXdhcmVSZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZv
LnNsb3dQYXRoQ2FsbExvY2F0aW9uLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSk7CisgICAgZWxz
ZQorICAgICAgICBmdGxUaHVua0F3YXJlUmVwYXRjaENhbGwoY29kZUJsb2NrLCBzdHViSW5mby5z
bG93UGF0aENhbGxMb2NhdGlvbiwgb3BlcmF0aW9uSW5CeVZhbE9wdGltaXplKTsKICAgICBJbmxp
bmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoc3R1YkluZm8sIHN0dWJJbmZvLnNsb3dQYXRoU3Rh
cnRMb2NhdGlvbik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVwYXRjaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKaW5kZXggMzEz
NzlkYzRlNWE5Li45MjhjOTliMTI5MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUmVwYXRjaC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5o
CkBAIC00OCwxMSArNDgsMTYgQEAgZW51bSBjbGFzcyBEZWxCeUtpbmQgewogICAgIE5vcm1hbEJ5
VmFsCiB9OwogCitlbnVtIGNsYXNzIEluQnlLaW5kIHsKKyAgICBOb3JtYWwsCisgICAgTm9ybWFs
QnlWYWwKK307CisKIHZvaWQgcmVwYXRjaEFycmF5R2V0QnlWYWwoSlNHbG9iYWxPYmplY3QqLCBD
b2RlQmxvY2sqLCBKU1ZhbHVlIGJhc2UsIEpTVmFsdWUgaW5kZXgsIFN0cnVjdHVyZVN0dWJJbmZv
Jik7CiB2b2lkIHJlcGF0Y2hHZXRCeShKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTVmFs
dWUsIENhY2hlYWJsZUlkZW50aWZpZXIsIGNvbnN0IFByb3BlcnR5U2xvdCYsIFN0cnVjdHVyZVN0
dWJJbmZvJiwgR2V0QnlLaW5kKTsKIHZvaWQgcmVwYXRjaFB1dEJ5SUQoSlNHbG9iYWxPYmplY3Qq
LCBDb2RlQmxvY2sqLCBKU1ZhbHVlLCBTdHJ1Y3R1cmUqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBj
b25zdCBQdXRQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIFB1dEtpbmQpOwogdm9p
ZCByZXBhdGNoRGVsZXRlQnkoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBEZWxldGVQcm9w
ZXJ0eVNsb3QmLCBKU1ZhbHVlLCBTdHJ1Y3R1cmUqLCBDYWNoZWFibGVJZGVudGlmaWVyLCBTdHJ1
Y3R1cmVTdHViSW5mbyYsIERlbEJ5S2luZCwgRUNNQU1vZGUpOwotdm9pZCByZXBhdGNoSW5CeUlE
KEpTR2xvYmFsT2JqZWN0KiwgQ29kZUJsb2NrKiwgSlNPYmplY3QqLCBDYWNoZWFibGVJZGVudGlm
aWVyLCBib29sIHdhc0ZvdW5kLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBTdHJ1Y3R1cmVTdHViSW5m
byYpOwordm9pZCByZXBhdGNoSW5CeShKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTT2Jq
ZWN0KiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgYm9vbCB3YXNGb3VuZCwgY29uc3QgUHJvcGVydHlT
bG90JiwgU3RydWN0dXJlU3R1YkluZm8mLCBJbkJ5S2luZCk7CiB2b2lkIHJlcGF0Y2hDaGVja1By
aXZhdGVCcmFuZChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTT2JqZWN0KiwgQ2FjaGVh
YmxlSWRlbnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVwYXRjaFNldFByaXZh
dGVCcmFuZChKU0dsb2JhbE9iamVjdCosIENvZGVCbG9jayosIEpTT2JqZWN0KiwgU3RydWN0dXJl
KiwgQ2FjaGVhYmxlSWRlbnRpZmllciwgU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVwYXRj
aEluc3RhbmNlT2YoSlNHbG9iYWxPYmplY3QqLCBDb2RlQmxvY2sqLCBKU1ZhbHVlIHZhbHVlLCBK
U1ZhbHVlIHByb3RvdHlwZSwgU3RydWN0dXJlU3R1YkluZm8mLCBib29sIHdhc0ZvdW5kKTsKQEAg
LTY0LDcgKzY5LDcgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKiwgQ2FsbExpbmtJbmZvJiwgQ2FsbFZhcmlhbnQKIHZvaWQgcmVzZXRHZXRCeShD
b2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYsIEdldEJ5S2luZCk7CiB2b2lkIHJlc2V0UHV0
QnlJRChDb2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXNldERlbEJ5KENv
ZGVCbG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgRGVsQnlLaW5kKTsKLXZvaWQgcmVzZXRJbkJ5
SUQoQ29kZUJsb2NrKiwgU3RydWN0dXJlU3R1YkluZm8mKTsKK3ZvaWQgcmVzZXRJbkJ5KENvZGVC
bG9jayosIFN0cnVjdHVyZVN0dWJJbmZvJiwgSW5CeUtpbmQpOwogdm9pZCByZXNldEluc3RhbmNl
T2YoU3RydWN0dXJlU3R1YkluZm8mKTsKIHZvaWQgcmVzZXRDaGVja1ByaXZhdGVCcmFuZChDb2Rl
QmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwogdm9pZCByZXNldFNldFByaXZhdGVCcmFuZChD
b2RlQmxvY2sqLCBTdHJ1Y3R1cmVTdHViSW5mbyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggZmIwZGRmNjFmNDUzLi5hOWEwMDQ3M2M5
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNw
cApAQCAtMTQyNCw2ICsxNDI0LDE0IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9p
bl9ieV9pZCkKICAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGFzT2JqZWN0KGJhc2VWYWx1ZSkt
Pmhhc1Byb3BlcnR5KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2Rl
Lm1fcHJvcGVydHkpKSkpOwogfQogCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaW5f
YnlfdmFsKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgYXV0byBieXRlY29kZSA9IHBjLT5h
czxPcEluQnlWYWw+KCk7CisgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShj
b2RlQmxvY2spOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpv
cEluQnlWYWwoZ2xvYmFsT2JqZWN0LCBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9i
YXNlKSwgZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fcHJvcGVydHkpLCAmbWV0YWRh
dGEubV9hcnJheVByb2ZpbGUpKSk7Cit9CisKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9wdXRfZ2V0dGVyX2J5X2lkKQogewogICAgIExMSU5UX0JFR0lOKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCmluZGV4IDkyYjIwNDM2ODEwYi4uNDNj
NmNhODQ1MzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuaApAQCAtNzIsNiArNzIsNyBAQCBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX2dldF9ieV9pZCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dl
dF9ieV9pZF93aXRoX3RoaXMpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9wdXRfYnlfaWQpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9pbl9i
eV9pZCk7CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2luX2J5X3ZhbCk7
CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2RlbF9ieV9pZCk7CiBMTElO
VF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9ieV92YWwpOwogTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfcHJpdmF0ZV9uYW1lKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRl
eCA4YWEyMjYyZWEzM2MuLmRkNGIzYWMwMjYwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMjAxMCw3ICsyMDEwLDYg
QEAgaWYgbm90IEpTVkFMVUU2NAogICAgIHNsb3dQYXRoT3AoZ2V0X3Byb3RvdHlwZV9vZikKIGVu
ZAogCi1zbG93UGF0aE9wKGluX2J5X3ZhbCkKIHNsb3dQYXRoT3AoaGFzX3ByaXZhdGVfbmFtZSkK
IHNsb3dQYXRoT3AoaGFzX3ByaXZhdGVfYnJhbmQpCiBzbG93UGF0aE9wKGlzX2NhbGxhYmxlKQpA
QCAtMjA0NCw2ICsyMDQzLDcgQEAgbWFjcm8gbGxpbnRTbG93UGF0aE9wKG9wY29kZU5hbWUpCiBl
bmQKIAogbGxpbnRTbG93UGF0aE9wKGluX2J5X2lkKQorbGxpbnRTbG93UGF0aE9wKGluX2J5X3Zh
bCkKIGxsaW50U2xvd1BhdGhPcChkZWxfYnlfaWQpCiBsbGludFNsb3dQYXRoT3AoZGVsX2J5X3Zh
bCkKIGxsaW50U2xvd1BhdGhPcChpbnN0YW5jZW9mKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggNjRjODZlNjExNjI4Li5hMWM0
MTMxMDg2MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmNwcApAQCAtODMwLDE0ICs4MzAsNiBAQCBKU0NfREVGSU5FX0NPTU1PTl9TTE9X
X1BBVEgoc2xvd19wYXRoX2lzX2NvbnN0cnVjdG9yKQogICAgIFJFVFVSTihqc0Jvb2xlYW4oR0VU
X0MoYnl0ZWNvZGUubV9vcGVyYW5kKS5qc1ZhbHVlKCkuaXNDb25zdHJ1Y3Rvcih2bSkpKTsKIH0K
IAotSlNDX0RFRklORV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9pbl9ieV92YWwpCi17Ci0g
ICAgQkVHSU4oKTsKLSAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wSW5CeVZhbD4oKTsKLSAg
ICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7Ci0gICAgUkVU
VVJOKGpzQm9vbGVhbihDb21tb25TbG93UGF0aHM6Om9wSW5CeVZhbChnbG9iYWxPYmplY3QsIEdF
VF9DKGJ5dGVjb2RlLm1fYmFzZSkuanNWYWx1ZSgpLCBHRVRfQyhieXRlY29kZS5tX3Byb3BlcnR5
KS5qc1ZhbHVlKCksICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZSkpKTsKLX0KLQogSlNDX0RFRklO
RV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9oYXNfcHJpdmF0ZV9uYW1lKQogewogICAgIEJF
R0lOKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5oCmluZGV4IDNkYjgxM2M0MTVkMS4uYzgzMDk4MWIwMzkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtMjUxLDcgKzI1MSw2IEBA
IEpTQ19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX3R5cGVvZl9pc19vYmplY3Qp
OwogSlNDX0RFQ0xBUkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfdHlwZW9mX2lzX2Z1bmN0
aW9uKTsKIEpTQ19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2lzX2NhbGxhYmxl
KTsKIEpTQ19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2lzX2NvbnN0cnVjdG9y
KTsKLUpTQ19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2luX2J5X3ZhbCk7CiBK
U0NfREVDTEFSRV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9oYXNfcHJpdmF0ZV9uYW1lKTsK
IEpTQ19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2hhc19wcml2YXRlX2JyYW5k
KTsKIEpTQ19ERUNMQVJFX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX3N0cmNhdCk7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDM0OWE4
NTJmMzM0MS4uNDEzMjdhNTZhMTdlIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysg
Yi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTA2LTAzICBSb3NzIEtp
cnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBbSlNDXSBJbXBsZW1l
bnQgSklUIElDcyBmb3IgSW5CeVZhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI2NTYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGku
CisKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvaW4tYnktdmFsLWludDMyLmpzOiBBZGRlZC4K
KyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvaW4tYnktdmFsLXN0cmluZy1pbmRleC5qczogQWRk
ZWQuCisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL2luLWJ5LXZhbC1zeW1ib2wuanM6IEFkZGVk
LgorCiAyMDIxLTA1LTI4ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CiAK
ICAgICAgICAgRml4IExpa2VseURlbnNlVW5zaWduZWRJbnRlZ2VyU2V0OjpjbGVhcigpCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pbi1ieS12YWwtaW50MzIuanMgYi9KU1Rl
c3RzL21pY3JvYmVuY2htYXJrcy9pbi1ieS12YWwtaW50MzIuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jODgzYjllZjZkMGEKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pbi1ieS12YWwtaW50MzIuanMKQEAgLTAsMCArMSwxNiBA
QAorLy9AIHNraXAgaWYgJG1vZGVsID09ICJBcHBsZSBXYXRjaCBTZXJpZXMgMyIgIyBhZGRlZCBi
eSBtYXJrLWpzYy1zdHJlc3MtdGVzdC5weQorZnVuY3Rpb24gdGVzdChvYmplY3QpCit7CisgICAg
aWYgKDEgaW4gb2JqZWN0KQorICAgICAgICByZXR1cm4gb2JqZWN0WzFdOworICAgIHJldHVybiAw
OworfQorbm9JbmxpbmUodGVzdCk7CisKK3ZhciBvMSA9IFs0Ml07Cit2YXIgbzIgPSBbNDIsIDQx
XTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkgeworICAgIHRlc3QobzEpOworICAg
IHRlc3QobzIpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaW4tYnkt
dmFsLXN0cmluZy1pbmRleC5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2luLWJ5LXZhbC1z
dHJpbmctaW5kZXguanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4x
ODA2NzlhYWM5Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9p
bi1ieS12YWwtc3RyaW5nLWluZGV4LmpzCkBAIC0wLDAgKzEsMTYgQEAKKy8vQCBza2lwIGlmICRt
b2RlbCA9PSAiQXBwbGUgV2F0Y2ggU2VyaWVzIDMiICMgYWRkZWQgYnkgbWFyay1qc2Mtc3RyZXNz
LXRlc3QucHkKK2Z1bmN0aW9uIHRlc3Qob2JqZWN0KQoreworICAgIGlmICgnMScgaW4gb2JqZWN0
KQorICAgICAgICByZXR1cm4gb2JqZWN0WzFdOworICAgIHJldHVybiAwOworfQorbm9JbmxpbmUo
dGVzdCk7CisKK3ZhciBvMSA9IFs0Ml07Cit2YXIgbzIgPSBbNDIsIDQxXTsKKworZm9yICh2YXIg
aSA9IDA7IGkgPCAxZTY7ICsraSkgeworICAgIHRlc3QobzEpOworICAgIHRlc3QobzIpOworfQpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvaW4tYnktdmFsLXN5bWJvbC5qcyBi
L0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2luLWJ5LXZhbC1zeW1ib2wuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44YjZhMmFkZDE1NWIKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9pbi1ieS12YWwtc3ltYm9sLmpzCkBAIC0wLDAg
KzEsMjMgQEAKKy8vQCBza2lwIGlmICRtb2RlbCA9PSAiQXBwbGUgV2F0Y2ggU2VyaWVzIDMiICMg
YWRkZWQgYnkgbWFyay1qc2Mtc3RyZXNzLXRlc3QucHkKK2NvbnN0IGNvY29hU3ltYm9sID0gU3lt
Ym9sKCdjb2NvYScpOworY29uc3QgY2FwcHVjY2lub1N5bWJvbCA9IFN5bWJvbCgnY2FwcHVjY2lu
bycpOworCitmdW5jdGlvbiB0ZXN0KG9iamVjdCkKK3sKKyAgICBpZiAoY29jb2FTeW1ib2wgaW4g
b2JqZWN0KQorICAgICAgICByZXR1cm4gb2JqZWN0W2NvY29hU3ltYm9sXTsKKyAgICByZXR1cm4g
MDsKK30KK25vSW5saW5lKHRlc3QpOworCit2YXIgbzEgPSB7CisgICAgW2NvY29hU3ltYm9sXTog
NDIKK307Cit2YXIgbzIgPSB7CisgICAgW2NhcHB1Y2Npbm9TeW1ib2xdOiA0MQorfTsKKworZm9y
ICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkgeworICAgIHRlc3QobzEpOworICAgIHRlc3QobzIp
OworfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>