<?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>238090</bug_id>
          
          <creation_ts>2022-03-18 12:49:09 -0700</creation_ts>
          <short_desc>BroadcastChannel instances in distinct opaque origins can communicate</short_desc>
          <delta_ts>2022-05-26 14:48:33 -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>Safari Technology Preview</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="Andrew Williams">awillia</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>annulen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>clopez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>kangil.han</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1852808</commentid>
    <comment_count>0</comment_count>
    <who name="Andrew Williams">awillia</who>
    <bug_when>2022-03-18 12:49:09 -0700</bug_when>
    <thetext>I wrote a test to determine whether BroadcastChannel instances in distinct opaque origins (tied to the same document) can communicate, and it looks like they can in Safari Tech Preview:

https://wpt.fyi/results/webmessaging/broadcastchannel/opaque-origin.html?label=experimental&amp;label=master&amp;aligned

BroadcastChannel messages should only be sent to instances that are same-origin, per the HTML standard.

I was curious whether this could be leveraged to bypass top-level site partitioning as well, but it doesn&apos;t appear to. I tested in the browser using the following code (run via the JS console) on two different sites, verifying that no console log messages appeared:

```
const iframe_src = (channel_name, msg) =&gt; `data:text/html,&lt;script&gt;
let bc2 = new BroadcastChannel(&quot;${channel_name}&quot;);
bc2.onmessage = (e) =&gt; {
  console.log(e.data);
};
bc2.postMessage(&quot;${msg}&quot;);
&lt;/script&gt;`;

let iframe2 = document.createElement(&quot;iframe&quot;);

iframe2.src = iframe_src(&apos;test&apos;, window.location.href);

document.body.appendChild(iframe2);
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852892</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-18 17:07:06 -0700</bug_when>
    <thetext>&lt;rdar://problem/90511155&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853187</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-21 07:26:42 -0700</bug_when>
    <thetext>Thank you for the bug report, I will investigate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853296</commentid>
    <comment_count>3</comment_count>
      <attachid>455264</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-21 12:47:04 -0700</bug_when>
    <thetext>Created attachment 455264
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853302</commentid>
    <comment_count>4</comment_count>
      <attachid>455265</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-21 13:01:08 -0700</bug_when>
    <thetext>Created attachment 455265
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853335</commentid>
    <comment_count>5</comment_count>
      <attachid>455265</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-03-21 14:21:00 -0700</bug_when>
    <thetext>Comment on attachment 455265
Patch

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

&gt; Source/WebKit/ChangeLog:14
&gt; +        To address the issue, I introduced a new PartitionedSecurityOrigin type which is similar

Do you think PartitionedSecurityOrigin will eventually replace ClientOrigin, or do we only need it in this case?

&gt; Source/WebCore/page/PartitionedSecurityOrigin.h:74
&gt; +    static bool equal(const WebCore::PartitionedSecurityOrigin&amp; a, const WebCore::PartitionedSecurityOrigin&amp; b) { return a == b; }

This uses isSameOriginAs.  Do we want to use isSameSchemeHostPort for hash table equivalence?

&gt; Source/WebKit/NetworkProcess/NetworkBroadcastChannelRegistry.h:55
&gt; +    NetworkProcess&amp; m_networkProcess;

Can this be a Ref&lt;NetworkProcess&gt; instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853336</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-21 14:24:40 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #5)
&gt; Comment on attachment 455265 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=455265&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/ChangeLog:14
&gt; &gt; +        To address the issue, I introduced a new PartitionedSecurityOrigin type which is similar
&gt; 
&gt; Do you think PartitionedSecurityOrigin will eventually replace ClientOrigin,
&gt; or do we only need it in this case?

I think ClientOrigin is still useful when sending across processes.

&gt; 
&gt; &gt; Source/WebCore/page/PartitionedSecurityOrigin.h:74
&gt; &gt; +    static bool equal(const WebCore::PartitionedSecurityOrigin&amp; a, const WebCore::PartitionedSecurityOrigin&amp; b) { return a == b; }
&gt; 
&gt; This uses isSameOriginAs.  Do we want to use isSameSchemeHostPort for hash
&gt; table equivalence?

We definitely do not. isSameOriginAs() properly deals with unique SecurityOrigins (i.e. if the pointers are equal then the origins are the same, which is helpful in the unique origin case. Also, it only calls isSameSchemeHostPort() for non-unique origins, since the scheme/host/port are empty for unique origins).
 
&gt; &gt; Source/WebKit/NetworkProcess/NetworkBroadcastChannelRegistry.h:55
&gt; &gt; +    NetworkProcess&amp; m_networkProcess;
&gt; 
&gt; Can this be a Ref&lt;NetworkProcess&gt; instead?

Maybe, I&apos;d have to make sure it doesn&apos;t create a cycle. It is actually safe here since NetworkProcess owns NetworkSession (via unique_ptr) which owns the NetworkBroadcastChannelRegistry (also via unique_ptr).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853339</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-21 14:28:54 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #6)
&gt; (In reply to Alex Christensen from comment #5)
&gt; &gt; Comment on attachment 455265 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=455265&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/ChangeLog:14
&gt; &gt; &gt; +        To address the issue, I introduced a new PartitionedSecurityOrigin type which is similar
&gt; &gt; 
&gt; &gt; Do you think PartitionedSecurityOrigin will eventually replace ClientOrigin,
&gt; &gt; or do we only need it in this case?
&gt; 
&gt; I think ClientOrigin is still useful when sending across processes.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/page/PartitionedSecurityOrigin.h:74
&gt; &gt; &gt; +    static bool equal(const WebCore::PartitionedSecurityOrigin&amp; a, const WebCore::PartitionedSecurityOrigin&amp; b) { return a == b; }
&gt; &gt; 
&gt; &gt; This uses isSameOriginAs.  Do we want to use isSameSchemeHostPort for hash
&gt; &gt; table equivalence?
&gt; 
&gt; We definitely do not. isSameOriginAs() properly deals with unique
&gt; SecurityOrigins (i.e. if the pointers are equal then the origins are the
&gt; same, which is helpful in the unique origin case. Also, it only calls
&gt; isSameSchemeHostPort() for non-unique origins, since the scheme/host/port
&gt; are empty for unique origins).

In other words, because SecurityOriginHash relies on isSameSchemeHostPort(), it basically treats distinct opaque security origins as equal. I hope we never store opaque/unique security origins in HashMaps..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853369</commentid>
    <comment_count>8</comment_count>
      <attachid>455283</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-21 15:26:45 -0700</bug_when>
    <thetext>Created attachment 455283
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853414</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-21 16:48:00 -0700</bug_when>
    <thetext>Committed r291589 (248684@main): &lt;https://commits.webkit.org/248684@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 455283.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1872132</commentid>
    <comment_count>10</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-05-26 14:48:33 -0700</bug_when>
    <thetext>This fix shipped with Safari 15.5 (all platforms).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455264</attachid>
            <date>2022-03-21 12:47:04 -0700</date>
            <delta_ts>2022-03-21 13:06:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238090-20220321124703.patch</filename>
            <type>text/plain</type>
            <size>49209</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNTU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzgwOTYzNDY1YjQzZGFi
MWFlNjkyYjg2YWRmODMzYjliN2FhMmZhZi4uOGFmZWQxN2NlM2UyNzk3ODQ1OTI5NjVkMWEyMDc4
YzZjZDAzMmY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIyLTAzLTIxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQnJvYWRjYXN0Q2hhbm5lbCBp
bnN0YW5jZXMgaW4gZGlzdGluY3Qgb3BhcXVlIG9yaWdpbnMgY2FuIGNvbW11bmljYXRlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgwOTAKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzkwNTExMTU1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoZSBpc3N1ZSBpcyB0aGF0IHdlIHdvdWxkIHVzZSBhIENs
aWVudE9yaWdpbiB0byBkaXN0aW5ndWlzaCBvcmlnaW5zIGZvciBCcm9hZGNhc3RDaGFubmVsLAor
ICAgICAgICB3aGljaCByZWxpZXMgb24gU2VjdXJpdHlPcmlnaW5EYXRhIGludGVybmFsbHkuIEEg
dW5pcXVlL29wYXF1ZSBTZWN1cml0eU9yaWdpbiBiZWNvbWVzIGFuIGVtcHR5CisgICAgICAgIFNl
Y3VyaXR5T3JpZ2luRGF0YSB1cG9uIGNvbnZlcnNpb24uIEFzIGEgcmVzdWx0LCB3aGVuIGNvbXBh
cmluZyBDbGllbnRPcmlnaW4gb2JqZWN0cyBmcm9tCisgICAgICAgIHVuaXF1ZSBTZWN1cml0eU9y
aWdpbnMsIHRoZXkgd291bGQgY29tcGFyZSBhcyBlcXVhbC4KKworICAgICAgICBUbyBhZGRyZXNz
IHRoZSBpc3N1ZSwgSSBpbnRyb2R1Y2VkIGEgbmV3IFBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4g
dHlwZSB3aGljaCBpcyBzaW1pbGFyCisgICAgICAgIHRvIENsaWVudE9yaWdpbiBidXQgc3RvcmVz
IFNlY3VyaXR5T3JpZ2luIG9iamVjdHMgaW50ZXJuYWxseSwgaW5zdGVhZCBvZiBTZWN1cml0eU9y
aWdpbkRhdGEKKyAgICAgICAgb2JqZWN0cy4gUGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbidzIG9w
ZXJhdG9yPT0oKSBpcyBzdWNoIHRoYXQgZGlmZmVyZW50IFNlY3VyaXR5T3JpZ2lucworICAgICAg
ICB3b3VsZCBub3QgYmUgZXF1YWwgYnV0IHRoZSBzYW1lIHVuaXF1ZSBTZWN1cml0eU9yaWdpbiB3
b3VsZCBiZS4gSSB0aGVuIHVzZWQgdGhpcyBuZXcKKyAgICAgICAgUGFydGl0aW9uZWRTZWN1cml0
eU9yaWdpbiB0eXBlIGFzIGtleSBpbiBvdXIgSGFzaE1hcCBvbiB0aGUgV2ViUHJvY2VzcyBzaWRl
IGluc3RlYWQgb2YKKyAgICAgICAgQ2xpZW50T3JpZ2luLiBUaGlzIGFsbG93cyBjb21tdW5pY2F0
aW9uIGJldHdlZW4gc2V2ZXJhbCBCcm9hZGNhc3RDaGFubmVscyBmcm9tIHRoZSBzYW1lCisgICAg
ICAgIHVuaXF1ZSBvcmlnaW4sIHdoaWxlIHByZXZlbnRpbmcgY29tbXVuaWNhdGlvbiBiZXR3ZWVu
IGRpc3RpbmN0IG9wYXF1ZSBvcmlnaW5zLgorCisgICAgICAgIFdoZW4gdGhlIFBhcnRpdGlvbmVk
U2VjdXJpdHlPcmlnaW4gY29udGFpbnMgYW4gb3BhcXVlIHNlY3VyaXR5IG9yaWdpbiwgd2UgZG9u
J3QgaW52b2x2ZQorICAgICAgICB0aGUgTmV0d29yayBQcm9jZXNzIGF0IGFsbCBzaW5jZSB0aGUg
ZGVzdGluYXRpb24gY2FuIG9ubHkgYmUgaW4gdGhlIHNhbWUgV2ViUHJvY2Vzcy4KKworICAgICAg
ICBUZXN0OiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9h
ZGNhc3RjaGFubmVsL29wYXF1ZS1vcmlnaW4uaHRtbAorCisgICAgICAgICogSGVhZGVycy5jbWFr
ZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogZG9tL0Jyb2FkY2FzdENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkUGFy
dGl0aW9uT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkJyb2FkY2FzdENoYW5uZWw6Ok1haW5U
aHJlYWRCcmlkZ2U6OnJlZ2lzdGVyQ2hhbm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpCcm9hZGNh
c3RDaGFubmVsOjpNYWluVGhyZWFkQnJpZGdlOjp1bnJlZ2lzdGVyQ2hhbm5lbCk6CisgICAgICAg
IChXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsOjpNYWluVGhyZWFkQnJpZGdlOjpwb3N0TWVzc2Fn
ZSk6CisgICAgICAgICogZG9tL0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oOgorICAgICAgICAq
IGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAqIHBhZ2UvUGFydGl0aW9uZWRTZWN1
cml0eU9yaWdpbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBhcnRpdGlvbmVkU2VjdXJp
dHlPcmlnaW46OlBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6
UGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbjo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbjo6aXNIYXNoVGFi
bGVFbXB0eVZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAg
ICAgICAoV1RGOjphZGQpOgorICAgICAgICAoV1RGOjpQYXJ0aXRpb25lZFNlY3VyaXR5T3JpZ2lu
SGFzaDo6aGFzaCk6CisgICAgICAgIChXVEY6OlBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW5IYXNo
OjplcXVhbCk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6UGFydGl0aW9uZWRT
ZWN1cml0eU9yaWdpbj46OmVtcHR5VmFsdWUpOgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPFdl
YkNvcmU6OlBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4+Ojpjb25zdHJ1Y3RFbXB0eVZhbHVlKToK
KyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxXZWJDb3JlOjpQYXJ0aXRpb25lZFNlY3VyaXR5T3Jp
Z2luPjo6aXNFbXB0eVZhbHVlKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxXZWJDb3JlOjpQ
YXJ0aXRpb25lZFNlY3VyaXR5T3JpZ2luPjo6cGVlayk6CisgICAgICAgIChXVEY6Okhhc2hUcmFp
dHM8V2ViQ29yZTo6UGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbj46OnRha2UpOgorCiAyMDIyLTAz
LTIxICBaaXJhbiBTdW4gIDx6c3VuQGlnYWxpYS5jb20+CiAKICAgICAgICAgW3NlbGVjdGlvbl0g
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnN1YnRyZWVIYXNDaGFuZ2VkKCkgc2hvdWxkbid0
IGJlIGNhbGxlZCBpbiBzZXRSYW5nZVRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggODE4N2Y1MGI2MzM4NGMxZDA0
ZDliZTNlZjM2NGUzNmQzMWYzMTljNy4uODFlZThkY2VhYTcyYzY5MmRkMTRlYmQ2YWFlMzBhYmU2
YzZmYTdmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAyMi0wMy0yMSAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEJyb2FkY2FzdENoYW5uZWwgaW5zdGFu
Y2VzIGluIGRpc3RpbmN0IG9wYXF1ZSBvcmlnaW5zIGNhbiBjb21tdW5pY2F0ZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MDkwCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS85MDUxMTE1NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGUgaXNzdWUgaXMgdGhhdCB3ZSB3b3VsZCB1c2UgYSBDbGllbnRP
cmlnaW4gdG8gZGlzdGluZ3Vpc2ggb3JpZ2lucyBmb3IgQnJvYWRjYXN0Q2hhbm5lbCwKKyAgICAg
ICAgd2hpY2ggcmVsaWVzIG9uIFNlY3VyaXR5T3JpZ2luRGF0YSBpbnRlcm5hbGx5LiBBIHVuaXF1
ZS9vcGFxdWUgU2VjdXJpdHlPcmlnaW4gYmVjb21lcyBhbiBlbXB0eQorICAgICAgICBTZWN1cml0
eU9yaWdpbkRhdGEgdXBvbiBjb252ZXJzaW9uLiBBcyBhIHJlc3VsdCwgd2hlbiBjb21wYXJpbmcg
Q2xpZW50T3JpZ2luIG9iamVjdHMgZnJvbQorICAgICAgICB1bmlxdWUgU2VjdXJpdHlPcmlnaW5z
LCB0aGV5IHdvdWxkIGNvbXBhcmUgYXMgZXF1YWwuCisKKyAgICAgICAgVG8gYWRkcmVzcyB0aGUg
aXNzdWUsIEkgaW50cm9kdWNlZCBhIG5ldyBQYXJ0aXRpb25lZFNlY3VyaXR5T3JpZ2luIHR5cGUg
d2hpY2ggaXMgc2ltaWxhcgorICAgICAgICB0byBDbGllbnRPcmlnaW4gYnV0IHN0b3JlcyBTZWN1
cml0eU9yaWdpbiBvYmplY3RzIGludGVybmFsbHksIGluc3RlYWQgb2YgU2VjdXJpdHlPcmlnaW5E
YXRhCisgICAgICAgIG9iamVjdHMuIFBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4ncyBvcGVyYXRv
cj09KCkgaXMgc3VjaCB0aGF0IGRpZmZlcmVudCBTZWN1cml0eU9yaWdpbnMKKyAgICAgICAgd291
bGQgbm90IGJlIGVxdWFsIGJ1dCB0aGUgc2FtZSB1bmlxdWUgU2VjdXJpdHlPcmlnaW4gd291bGQg
YmUuIEkgdGhlbiB1c2VkIHRoaXMgbmV3CisgICAgICAgIFBhcnRpdGlvbmVkU2VjdXJpdHlPcmln
aW4gdHlwZSBhcyBrZXkgaW4gb3VyIEhhc2hNYXAgb24gdGhlIFdlYlByb2Nlc3Mgc2lkZSBpbnN0
ZWFkIG9mCisgICAgICAgIENsaWVudE9yaWdpbi4gVGhpcyBhbGxvd3MgY29tbXVuaWNhdGlvbiBi
ZXR3ZWVuIHNldmVyYWwgQnJvYWRjYXN0Q2hhbm5lbHMgZnJvbSB0aGUgc2FtZQorICAgICAgICB1
bmlxdWUgb3JpZ2luLCB3aGlsZSBwcmV2ZW50aW5nIGNvbW11bmljYXRpb24gYmV0d2VlbiBkaXN0
aW5jdCBvcGFxdWUgb3JpZ2lucy4KKworICAgICAgICBXaGVuIHRoZSBQYXJ0aXRpb25lZFNlY3Vy
aXR5T3JpZ2luIGNvbnRhaW5zIGFuIG9wYXF1ZSBzZWN1cml0eSBvcmlnaW4sIHdlIGRvbid0IGlu
dm9sdmUKKyAgICAgICAgdGhlIE5ldHdvcmsgUHJvY2VzcyBhdCBhbGwgc2luY2UgdGhlIGRlc3Rp
bmF0aW9uIGNhbiBvbmx5IGJlIGluIHRoZSBzYW1lIFdlYlByb2Nlc3MuCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OnRvQ2xpZW50T3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
QnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5OjpyZWdpc3RlckNoYW5uZWwpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6OnVucmVnaXN0ZXJDaGFubmVsKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Ojpwb3N0TWVzc2FnZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6cG9zdE1lc3Nh
Z2VMb2NhbGx5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5
Ojpwb3N0TWVzc2FnZVRvUmVtb3RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQnJvYWRjYXN0Q2hh
bm5lbFJlZ2lzdHJ5OjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lmg6CisKIDIwMjIt
MDMtMjEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92
ZSB1c2Ugb2YgTWVkaWFTYW1wbGVBVkZPYmpDIGZyb20gV2ViUlRDIHBpcGVsaW5lcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L0NoYW5nZUxvZwppbmRleCA2ODA4ZTYyZDRhZjRlYTY2OGJjMTNlNDQ4MzI2MjE0MmMwNzg3YzIy
Li40ZGJmYmI1MTc4NmNjNTg2YmQ4MjBhZmFjM2UyNmNjMDJiYzhjYjQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0No
YW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIyLTAzLTIxICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKKyAgICAgICAgQnJvYWRjYXN0Q2hhbm5lbCBpbnN0YW5jZXMgaW4gZGlz
dGluY3Qgb3BhcXVlIG9yaWdpbnMgY2FuIGNvbW11bmljYXRlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgwOTAKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzkwNTExMTU1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmNwcDoK
KyAgICAgICAgKFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6cmVnaXN0ZXJDaGFubmVsKToK
KyAgICAgICAgKFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6dW5yZWdpc3RlckNoYW5uZWwp
OgorICAgICAgICAoV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Ojpwb3N0TWVzc2FnZSk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lmg6CisK
IDIwMjItMDMtMDggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBP
cHRpbWl6ZSBmdXJ0aGVyIHRoZSBwYXNzaW5nIG9mIGRhdGEgYWNyb3NzIHRocmVhZHMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCmluZGV4IDQzMTQyYmYyNDkxYjRjZWI4MmNhYmVmMmViZDk4MTI1ZWM2ZTcyMTEu
LjQ4NTg0MWI2Zjc5MTFkYWI2NmY3MTA5ODc5MjY4ODFlZTlhNTg5MWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQpAQCAtMTE0MSw2ICsxMTQxLDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktf
SEVBREVSUwogICAgIHBhZ2UvUGFnZU92ZXJsYXkuaAogICAgIHBhZ2UvUGFnZU92ZXJsYXlDb250
cm9sbGVyLmgKICAgICBwYWdlL1BhZ2VQYXN0ZWJvYXJkQ29udGV4dC5oCisgICAgcGFnZS9QYXJ0
aXRpb25lZFNlY3VyaXR5T3JpZ2luLmgKICAgICBwYWdlL1BlcmZvcm1hbmNlTG9nZ2luZy5oCiAg
ICAgcGFnZS9QZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQuaAogICAgIHBhZ2UvUG9pbnRlckNhcHR1
cmVDb250cm9sbGVyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCAzNDE5OTcxYjk0Y2NiODY5MjIxYmNlNmIwMjVjN2Y1MjkzZTJi
YzNmLi4yNDIwMTc1MmI2YzQxZmVmNzQwMDIxOTBjYTA4YTEzZGFkMzQ5NTJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzU2
LDYgKzEzNTYsNyBAQAogCQk0NjgzREY0MTI3NjdFOTFBMDA3RDAwQzggLyogU2hhZG93UmVhbG1H
bG9iYWxTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDY4M0RGM0IyNzY3REYyNjAwN0QwMEM4IC8qIFNoYWRvd1JlYWxtR2xvYmFsU2NvcGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0Njg4RTk4
MDI3QjZCNDUwMDA1NjdDRDIgLyogQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4OEU5N0YyN0I2
QjQ0NDAwNTY3Q0QyIC8qIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0Njg4RUUzQzI2REQy
NjEwMDAyQUY1QzQgLyogQ3Jvc3NPcmlnaW5Nb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njg4RUUzQTI2REQyNjBDMDAyQUY1QzQgLyogQ3Jvc3NP
cmlnaW5Nb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJNDY4OTNCODQyN0U4RDc0QzAwMkNDMTNEIC8qIFBhcnRpdGlvbmVkU2VjdXJpdHlPcmln
aW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODkz
QjgzMjdFOEQ3MTYwMDJDQzEzRCAvKiBQYXJ0aXRpb25lZFNlY3VyaXR5T3JpZ2luLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY5NDNEQzkyNzYz
RjgxNzAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OTQzREM3Mjc2M0Y4MEUwMDRC
NjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY5ODVGMjMyN0E0QTZBRDAwOTdBMzJC
IC8qIFNoYXJlZFdvcmtlcktleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDY5ODVGMjIyN0E0QTY4NjAwOTdBMzJCIC8qIFNoYXJlZFdvcmtlcktleS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2OUND
Q0ZFMjY5RDAyMUMwMDZFMDMxNCAvKiBCcm9hZGNhc3RDaGFubmVsLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjlDQ0NGQzI2OUQwMjAyMDA2RTAzMTQg
LyogQnJvYWRjYXN0Q2hhbm5lbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC05Mjg1LDYgKzkyODYsNyBAQAogCQk0Njg4RTk3RDI3QjZCNDQzMDA1
NjdDRDIgLyogQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ2ODhFOTdGMjdCNkI0NDQwMDU2N0NEMiAvKiBDb3JlTG9jYXRp
b25HZW9sb2NhdGlvblByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvcmVMb2NhdGlvbkdlb2xv
Y2F0aW9uUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4OEVFM0Ey
NkREMjYwQzAwMkFGNUM0IC8qIENyb3NzT3JpZ2luTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcm9z
c09yaWdpbk1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY4OTNCODMyN0U4
RDcxNjAwMkNDMTNEIC8qIFBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NjhCOEJERTI1Q0M4NDkzMDBGNjc4MjIgLyogSlNCYXNlQXVkaW9Db250ZXh0Q3VzdG9t
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQmFzZUF1ZGlvQ29udGV4dEN1c3RvbS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OTQzREM3Mjc2M0Y4MEUwMDRCNjEwRSAvKiBT
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY5ODVG
MjIyN0E0QTY4NjAwOTdBMzJCIC8qIFNoYXJlZFdvcmtlcktleS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJLZXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTI0MjU5LDYgKzI0MjYxLDcgQEAKIAkJCQlGNDBEQUFFRTI1RDlGM0JGMDAxMUI0
RkEgLyogUGFnZVBhc3RlYm9hcmRDb250ZXh0LmggKi8sCiAJCQkJMzcxRTY1Q0QxMzY2MUVFRDAw
QkVFREIwIC8qIFBhZ2VTZXJpYWxpemVyLmNwcCAqLywKIAkJCQkzNzFFNjVDQjEzNjYxRURDMDBC
RUVEQjAgLyogUGFnZVNlcmlhbGl6ZXIuaCAqLywKKwkJCQk0Njg5M0I4MzI3RThENzE2MDAyQ0Mx
M0QgLyogUGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbi5oICovLAogCQkJCUJDNEE1MzI4MjU2MDU2
M0IwMDI4QzU5MiAvKiBQREZJbWFnZUNhY2hpbmdQb2xpY3kuaCAqLywKIAkJCQk3QzcyNDcxRTI1
MTY3NTg4MDBDMzYzQ0QgLyogUGVyZm9ybWFuY2UrTmF2aWdhdGlvblRpbWluZy5pZGwgKi8sCiAJ
CQkJN0M3MjQ3MUMyNTE2NzRDRTAwQzM2M0NEIC8qIFBlcmZvcm1hbmNlK1BlcmZvcm1hbmNlVGlt
ZWxpbmUuaWRsICovLApAQCAtMzY1OTcsNiArMzY2MDAsNyBAQAogCQkJCTQ0Nzk1ODA0MTY0M0I0
OUEwMDFFMEE3RiAvKiBQYXJzZWRDb250ZW50VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM0
QTBGREEyNUMzNDQ5QTAwRDlFRTk3IC8qIFBhcnNlZFJlcXVlc3RSYW5nZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTM2RDVBMjMxOTNFOEUwQzAwQ0U0Q0FCIC8qIFBhcnNpbmdVdGlsaXRpZXMuaCBp
biBIZWFkZXJzICovLAorCQkJCTQ2ODkzQjg0MjdFOEQ3NEMwMDJDQzEzRCAvKiBQYXJ0aXRpb25l
ZFNlY3VyaXR5T3JpZ2luLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RDQTEyNTFGMTJEMDAz
RUYyNjkgLyogUGFzc3dvcmRJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTRCMjcwOEM3
MEFGMTlFRTQwMDY1MTI3RiAvKiBQYXN0ZWJvYXJkLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDBE
QUFFQzI1RDlGMjVFMDAxMUI0RkEgLyogUGFzdGVib2FyZENvbnRleHQuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Jyb2FkY2FzdENoYW5uZWwuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0Jyb2FkY2FzdENoYW5uZWwuY3BwCmluZGV4IDJiNmVhYjNhNWNk
ZDUwNzA5YjUwZWM0YjcyNDllMTAxMDdiYzliMzAuLmI4NGI3NGU5NjJiMTg4NTM2MTk4YjNiMWJm
ZTJjMjgwNmY2ODVkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ccm9hZGNhc3RD
aGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQnJvYWRjYXN0Q2hhbm5lbC5jcHAK
QEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiTWVz
c2FnZUV2ZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBhcnRpdGlvbmVkU2Vj
dXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCkBA
IC04Niw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgV2Vha1B0cjxCcm9hZGNhc3RDaGFubmVsPiBt
X2Jyb2FkY2FzdENoYW5uZWw7CiAgICAgY29uc3QgQnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXIg
bV9pZGVudGlmaWVyOwogICAgIGNvbnN0IFN0cmluZyBtX25hbWU7IC8vIE1haW4gdGhyZWFkIG9u
bHkuCi0gICAgQ2xpZW50T3JpZ2luIG1fb3JpZ2luOyAvLyBNYWluIHRocmVhZCBvbmx5LgorICAg
IHN0ZDo6b3B0aW9uYWw8UGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbj4gbV9vcmlnaW47IC8vIE1h
aW4gdGhyZWFkIG9ubHkuCiB9OwogCiBCcm9hZGNhc3RDaGFubmVsOjpNYWluVGhyZWFkQnJpZGdl
OjpNYWluVGhyZWFkQnJpZGdlKEJyb2FkY2FzdENoYW5uZWwmIGNoYW5uZWwsIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKQEAgLTEyMCw5ICsxMjEsOSBAQCB2b2lkIEJyb2FkY2FzdENoYW5uZWw6Ok1haW5U
aHJlYWRCcmlkZ2U6OmVuc3VyZU9uTWFpblRocmVhZChGdW5jdGlvbjx2b2lkKERvY3VtZQogdm9p
ZCBCcm9hZGNhc3RDaGFubmVsOjpNYWluVGhyZWFkQnJpZGdlOjpyZWdpc3RlckNoYW5uZWwoKQog
ewogICAgIGVuc3VyZU9uTWFpblRocmVhZChbdGhpcywgY29udGV4dElkZW50aWZpZXIgPSBtX2Jy
b2FkY2FzdENoYW5uZWwtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aWRlbnRpZmllcigpXShh
dXRvJiBkb2N1bWVudCkgewotICAgICAgICBtX29yaWdpbiA9IHsgc2hvdWxkUGFydGl0aW9uT3Jp
Z2luKGRvY3VtZW50KSA/IGRvY3VtZW50LnRvcE9yaWdpbigpLmRhdGEoKSA6IGRvY3VtZW50LnNl
Y3VyaXR5T3JpZ2luKCkuZGF0YSgpLCBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSB9
OworICAgICAgICBtX29yaWdpbiA9IFBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4geyBzaG91bGRQ
YXJ0aXRpb25PcmlnaW4oZG9jdW1lbnQpID8gZG9jdW1lbnQudG9wT3JpZ2luKCkgOiBkb2N1bWVu
dC5zZWN1cml0eU9yaWdpbigpLCBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpIH07CiAgICAgICAg
IGlmIChhdXRvKiBwYWdlID0gZG9jdW1lbnQucGFnZSgpKQotICAgICAgICAgICAgcGFnZS0+YnJv
YWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5KCkucmVnaXN0ZXJDaGFubmVsKG1fb3JpZ2luLCBtX25hbWUs
IG1faWRlbnRpZmllcik7CisgICAgICAgICAgICBwYWdlLT5icm9hZGNhc3RDaGFubmVsUmVnaXN0
cnkoKS5yZWdpc3RlckNoYW5uZWwoKm1fb3JpZ2luLCBtX25hbWUsIG1faWRlbnRpZmllcik7CiAg
ICAgICAgIGNoYW5uZWxUb0NvbnRleHRJZGVudGlmaWVyKCkuYWRkKG1faWRlbnRpZmllciwgY29u
dGV4dElkZW50aWZpZXIpOwogICAgIH0pOwogfQpAQCAtMTMxLDcgKzEzMiw3IEBAIHZvaWQgQnJv
YWRjYXN0Q2hhbm5lbDo6TWFpblRocmVhZEJyaWRnZTo6dW5yZWdpc3RlckNoYW5uZWwoKQogewog
ICAgIGVuc3VyZU9uTWFpblRocmVhZChbdGhpc10oYXV0byYgZG9jdW1lbnQpIHsKICAgICAgICAg
aWYgKGF1dG8qIHBhZ2UgPSBkb2N1bWVudC5wYWdlKCkpCi0gICAgICAgICAgICBwYWdlLT5icm9h
ZGNhc3RDaGFubmVsUmVnaXN0cnkoKS51bnJlZ2lzdGVyQ2hhbm5lbChtX29yaWdpbiwgbV9uYW1l
LCBtX2lkZW50aWZpZXIpOworICAgICAgICAgICAgcGFnZS0+YnJvYWRjYXN0Q2hhbm5lbFJlZ2lz
dHJ5KCkudW5yZWdpc3RlckNoYW5uZWwoKm1fb3JpZ2luLCBtX25hbWUsIG1faWRlbnRpZmllcik7
CiAgICAgICAgIGNoYW5uZWxUb0NvbnRleHRJZGVudGlmaWVyKCkucmVtb3ZlKG1faWRlbnRpZmll
cik7CiAgICAgfSk7CiB9CkBAIC0xNDQsNyArMTQ1LDcgQEAgdm9pZCBCcm9hZGNhc3RDaGFubmVs
OjpNYWluVGhyZWFkQnJpZGdlOjpwb3N0TWVzc2FnZShSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiYKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBhdXRvIGJsb2JIYW5kbGVzID0gbWVz
c2FnZS0+YmxvYkhhbmRsZXMoKTsKLSAgICAgICAgcGFnZS0+YnJvYWRjYXN0Q2hhbm5lbFJlZ2lz
dHJ5KCkucG9zdE1lc3NhZ2UobV9vcmlnaW4sIG1fbmFtZSwgbV9pZGVudGlmaWVyLCBXVEZNb3Zl
KG1lc3NhZ2UpLCBbYmxvYkhhbmRsZXMgPSBXVEZNb3ZlKGJsb2JIYW5kbGVzKV0geworICAgICAg
ICBwYWdlLT5icm9hZGNhc3RDaGFubmVsUmVnaXN0cnkoKS5wb3N0TWVzc2FnZSgqbV9vcmlnaW4s
IG1fbmFtZSwgbV9pZGVudGlmaWVyLCBXVEZNb3ZlKG1lc3NhZ2UpLCBbYmxvYkhhbmRsZXMgPSBX
VEZNb3ZlKGJsb2JIYW5kbGVzKV0gewogICAgICAgICAgICAgLy8gS2VlcHMgQmxvYiBkYXRhIGlu
c2lkZSBtZXNzYWdlRGF0YSBhbGl2ZSB1bnRpbCB0aGUgbWVzc2FnZSBoYXMgYmVlbiBkZWxpdmVy
ZWQuCiAgICAgICAgIH0pOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0Jyb2FkY2Fz
dENoYW5uZWxSZWdpc3RyeS5oCmluZGV4IDEwNDIxOGMxMzAwYTFmMWQ2ZGUyYTcwMDU0MjY3NjQx
NmI1NDA5OTQuLjkzNTg0NWEzODVhMmNjMGQzMzZkM2JmMzkwNjUzZjBlZTZlNzg4ZDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ccm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmgKQEAgLTMxLDE1
ICszMSwxNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0cnVjdCBQYXJ0aXRpb25lZFNl
Y3VyaXR5T3JpZ2luOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwotc3RydWN0IENsaWVu
dE9yaWdpbjsKIAogY2xhc3MgQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5IDogcHVibGljIFJlZkNv
dW50ZWQ8QnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+
QnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5KCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVy
Q2hhbm5lbChjb25zdCBDbGllbnRPcmlnaW4mLCBjb25zdCBTdHJpbmcmIG5hbWUsIEJyb2FkY2Fz
dENoYW5uZWxJZGVudGlmaWVyKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJDaGFu
bmVsKGNvbnN0IENsaWVudE9yaWdpbiYsIGNvbnN0IFN0cmluZyYgbmFtZSwgQnJvYWRjYXN0Q2hh
bm5lbElkZW50aWZpZXIpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2UoY29uc3Qg
Q2xpZW50T3JpZ2luJiwgY29uc3QgU3RyaW5nJiBuYW1lLCBCcm9hZGNhc3RDaGFubmVsSWRlbnRp
ZmllciBzb3VyY2UsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNoYW5uZWwoY29u
c3QgUGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFN0cmluZyYgbmFtZSwgQnJvYWRj
YXN0Q2hhbm5lbElkZW50aWZpZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlckNo
YW5uZWwoY29uc3QgUGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgQnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9z
dE1lc3NhZ2UoY29uc3QgUGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFN0cmluZyYg
bmFtZSwgQnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXIgc291cmNlLCBSZWY8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpID0gMDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAK
aW5kZXggNzdmMWE5M2M2NTY1YmEzZDA3Y2MwMzJlOGZlYzQ4NTBmYTA3ZDQwMS4uMjg0ZDBlY2Ji
ZTUzNTVjNThjNjZkYjYzZWYwYWYyYTg0ZTliMmZlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5jcHAKQEAgLTExODgsOSArMTE4OCw5IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgRW1wdHlCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkoKSA9IGRlZmF1bHQ7CiAKLSAgICB2b2lk
IHJlZ2lzdGVyQ2hhbm5lbChjb25zdCBDbGllbnRPcmlnaW4mLCBjb25zdCBTdHJpbmcmLCBCcm9h
ZGNhc3RDaGFubmVsSWRlbnRpZmllcikgZmluYWwgeyB9Ci0gICAgdm9pZCB1bnJlZ2lzdGVyQ2hh
bm5lbChjb25zdCBDbGllbnRPcmlnaW4mLCBjb25zdCBTdHJpbmcmLCBCcm9hZGNhc3RDaGFubmVs
SWRlbnRpZmllcikgZmluYWwgeyB9Ci0gICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBDbGllbnRP
cmlnaW4mLCBjb25zdCBTdHJpbmcmLCBCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllciwgUmVmPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5h
bCB7IH0KKyAgICB2b2lkIHJlZ2lzdGVyQ2hhbm5lbChjb25zdCBQYXJ0aXRpb25lZFNlY3VyaXR5
T3JpZ2luJiwgY29uc3QgU3RyaW5nJiwgQnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXIpIGZpbmFs
IHsgfQorICAgIHZvaWQgdW5yZWdpc3RlckNoYW5uZWwoY29uc3QgUGFydGl0aW9uZWRTZWN1cml0
eU9yaWdpbiYsIGNvbnN0IFN0cmluZyYsIEJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyKSBmaW5h
bCB7IH0KKyAgICB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFBhcnRpdGlvbmVkU2VjdXJpdHlPcmln
aW4mLCBjb25zdCBTdHJpbmcmLCBCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllciwgUmVmPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbCB7
IH0KIH07CiAKIGNsYXNzIEVtcHR5V2ViTG9ja1JlZ2lzdHJ5IGZpbmFsIDogcHVibGljIFdlYkxv
Y2tSZWdpc3RyeSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhcnRpdGlvbmVk
U2VjdXJpdHlPcmlnaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFydGl0aW9uZWRTZWN1cml0
eU9yaWdpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2ZWU0YzBjMGY2ZWNlZjY5N2IzYTUyZjdiYmVhNDM1MWJm
MTk0MzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhcnRpdGlvbmVk
U2VjdXJpdHlPcmlnaW4uaApAQCAtMCwwICsxLDEwMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlIDx3dGYvSGFzaFRy
YWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4g
eworICAgIFBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4oUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRv
cE9yaWdpbiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIGNsaWVudE9yaWdpbikKKyAgICAgICAgOiB0
b3BPcmlnaW4oV1RGTW92ZSh0b3BPcmlnaW4pCisgICAgICAgICwgY2xpZW50T3JpZ2luKFdURk1v
dmUoY2xpZW50T3JpZ2luKSkKKyAgICB7IH0KKworICAgIFBhcnRpdGlvbmVkU2VjdXJpdHlPcmln
aW4oV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQorICAgICAgICA6IHRvcE9yaWdpbihX
VEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkKKyAgICAgICAgLCBjbGllbnRPcmlnaW4oV1RGOjpI
YXNoVGFibGVEZWxldGVkVmFsdWUpCisgICAgeyB9CisKKyAgICBQYXJ0aXRpb25lZFNlY3VyaXR5
T3JpZ2luKFdURjo6SGFzaFRhYmxlRW1wdHlWYWx1ZVR5cGUpCisgICAgICAgIDogdG9wT3JpZ2lu
KFdURjo6SGFzaFRhYmxlRW1wdHlWYWx1ZSkKKyAgICAgICAgLCBjbGllbnRPcmlnaW4oV1RGOjpI
YXNoVGFibGVFbXB0eVZhbHVlKQorICAgIHsgfQorCisgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0
ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHRvcE9yaWdpbi5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1
ZSgpOyB9CisgICAgYm9vbCBpc0hhc2hUYWJsZUVtcHR5VmFsdWUoKSBjb25zdCB7IHJldHVybiB0
b3BPcmlnaW4uaXNIYXNoVGFibGVFbXB0eVZhbHVlKCk7IH0KKworICAgIFJlZjxTZWN1cml0eU9y
aWdpbj4gdG9wT3JpZ2luOworICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gY2xpZW50T3JpZ2luOwor
fTsKKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQYXJ0aXRpb25lZFNlY3VyaXR5T3Jp
Z2luJiBhLCBjb25zdCBQYXJ0aXRpb25lZFNlY3VyaXR5T3JpZ2luJiBiKQoreworICAgIHJldHVy
biBhLnRvcE9yaWdpbi0+aXNTYW1lT3JpZ2luQXMoYi50b3BPcmlnaW4pICYmIGEuY2xpZW50T3Jp
Z2luLT5pc1NhbWVPcmlnaW5BcyhiLmNsaWVudE9yaWdpbik7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisKK2lubGluZSB2b2lkIGFkZChIYXNoZXImIGhh
c2hlciwgY29uc3QgV2ViQ29yZTo6UGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQor
eworICAgIGFkZChoYXNoZXIsIG9yaWdpbi50b3BPcmlnaW4uZ2V0KCksIG9yaWdpbi5jbGllbnRP
cmlnaW4uZ2V0KCkpOworfQorCitzdHJ1Y3QgUGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbkhhc2gg
eworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFdlYkNvcmU6OlBhcnRpdGlvbmVkU2Vj
dXJpdHlPcmlnaW4mIG9yaWdpbikgeyByZXR1cm4gY29tcHV0ZUhhc2gob3JpZ2luKTsgfQorICAg
IHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFdlYkNvcmU6OlBhcnRpdGlvbmVkU2VjdXJpdHlPcmln
aW4mIGEsIGNvbnN0IFdlYkNvcmU6OlBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4mIGIpIHsgcmV0
dXJuIGEgPT0gYjsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzYWZlVG9Db21wYXJlVG9F
bXB0eU9yRGVsZXRlZCA9IGZhbHNlOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhh
c2g8V2ViQ29yZTo6UGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbj4gOiBQYXJ0aXRpb25lZFNlY3Vy
aXR5T3JpZ2luSGFzaCB7IH07CisKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29y
ZTo6UGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbj4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8V2Vi
Q29yZTo6UGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbj4geworICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBlbXB0eVZhbHVlSXNaZXJvID0gdHJ1ZTsKKyAgICBzdGF0aWMgV2ViQ29yZTo6UGFydGl0
aW9uZWRTZWN1cml0eU9yaWdpbiBlbXB0eVZhbHVlKCkgeyByZXR1cm4gSGFzaFRhYmxlRW1wdHlW
YWx1ZTsgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lPgorICAgIHN0YXRpYyB2b2lkIGNvbnN0
cnVjdEVtcHR5VmFsdWUoV2ViQ29yZTo6UGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbiYgc2xvdCkK
KyAgICB7CisgICAgICAgIG5ldyAoTm90TnVsbCwgc3RkOjphZGRyZXNzb2Yoc2xvdCkpIFdlYkNv
cmU6OlBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4oSGFzaFRhYmxlRW1wdHlWYWx1ZSk7CisgICAg
fQorCisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc0lzRW1wdHlWYWx1ZUZ1bmN0aW9uID0g
dHJ1ZTsKKyAgICBzdGF0aWMgYm9vbCBpc0VtcHR5VmFsdWUoY29uc3QgV2ViQ29yZTo6UGFydGl0
aW9uZWRTZWN1cml0eU9yaWdpbiYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLmlzSGFzaFRhYmxlRW1w
dHlWYWx1ZSgpOyB9CisKKyAgICB1c2luZyBQZWVrVHlwZSA9IHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6UGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbj47CisgICAgc3RhdGljIFBlZWtUeXBlIHBlZWso
Y29uc3QgV2ViQ29yZTo6UGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbiYgdmFsdWUpIHsgcmV0dXJu
IGlzRW1wdHlWYWx1ZSh2YWx1ZSkgPyBzdGQ6Om51bGxvcHQgOiBzdGQ6Om9wdGlvbmFsIHsgdmFs
dWUgfTsgfQorCisgICAgdXNpbmcgVGFrZVR5cGUgPSBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBh
cnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4+OworICAgIHN0YXRpYyBUYWtlVHlwZSB0YWtlKFdlYkNv
cmU6OlBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4mJiB2YWx1ZSkgeyByZXR1cm4gaXNFbXB0eVZh
bHVlKHZhbHVlKSA/IHN0ZDo6bnVsbG9wdCA6IHN0ZDo6b3B0aW9uYWwgeyBXVEZNb3ZlKHZhbHVl
KSB9OyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0
cnkuY3BwCmluZGV4IDY5YTk3NjkwNzcwYWM0MTBhMjliNzE5NTI4ZTYyNWI1YTk0NTAyMGEuLmQ5
MzE5NDkwMzQ4ZmNiYTMyYjdkNDRlZWRmOWJmNDI3MjEwMTc3NGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQnJvYWRjYXN0Q2hh
bm5lbFJlZ2lzdHJ5LmNwcApAQCAtMjYsMTYgKzI2LDM4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oIgogCisjaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQnJvYWRjYXN0
Q2hhbm5lbFJlZ2lzdHJ5TWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VXaXRo
TWVzc2FnZVBvcnRzLmg+CiAjaW5jbHVkZSA8d3RmL0NhbGxiYWNrQWdncmVnYXRvci5oPgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6TmV0
d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeSgpID0gZGVmYXVsdDsKKyNkZWZpbmUgUkVHSVNU
UllfTUVTU0FHRV9DSEVDSyhhc3NlcnRpb24pIFJFR0lTVFJZX01FU1NBR0VfQ0hFQ0tfQ09NUExF
VElPTihhc3NlcnRpb24sICh2b2lkKTApCisjZGVmaW5lIFJFR0lTVFJZX01FU1NBR0VfQ0hFQ0tf
Q09NUExFVElPTihhc3NlcnRpb24sIGNvbXBsZXRpb24pIGRvIHsgXAorICAgIEFTU0VSVChhc3Nl
cnRpb24pOyBcCisgICAgaWYgKFVOTElLRUxZKCEoYXNzZXJ0aW9uKSkpIHsgXAorICAgICAgICBp
ZiAoYXV0byB3ZWJQcm9jZXNzSWRlbnRpZmllciA9IG1fbmV0d29ya1Byb2Nlc3Mud2ViUHJvY2Vz
c0lkZW50aWZpZXJGb3JDb25uZWN0aW9uKGNvbm5lY3Rpb24pKSBcCisgICAgICAgICAgICBtX25l
dHdvcmtQcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6OlRlcm1pbmF0ZVdlYlByb2Nlc3Mod2ViUHJvY2Vzc0lkZW50aWZp
ZXIpLCAwKTsgXAorICAgICAgICB7IGNvbXBsZXRpb247IH0gXAorICAgICAgICByZXR1cm47IFwK
KyAgICB9IFwKK30gd2hpbGUgKDApCisKK3N0YXRpYyBib29sIGlzVmFsaWRDbGllbnRPcmlnaW4o
Y29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4pCit7CisgICAgcmV0dXJu
ICFjbGllbnRPcmlnaW4udG9wT3JpZ2luLmlzRW1wdHkoKSAmJiAhY2xpZW50T3JpZ2luLmNsaWVu
dE9yaWdpbi5pc0VtcHR5KCk7Cit9CisKK05ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6
Ok5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQ
cm9jZXNzKQorICAgIDogbV9uZXR3b3JrUHJvY2VzcyhuZXR3b3JrUHJvY2VzcykKK3sKK30KIAog
dm9pZCBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5OjpyZWdpc3RlckNoYW5uZWwoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9y
aWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lKQogeworICAgIFJFR0lTVFJZX01FU1NBR0VfQ0hFQ0so
aXNWYWxpZENsaWVudE9yaWdpbihvcmlnaW4pKTsKKwogICAgIGF1dG8mIGNoYW5uZWxzRm9yT3Jp
Z2luID0gbV9icm9hZGNhc3RDaGFubmVscy5lbnN1cmUob3JpZ2luLCBbXSB7IHJldHVybiBOYW1l
VG9Db25uZWN0aW9uSWRlbnRpZmllcnNNYXAgeyB9OyB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAg
YXV0byYgY29ubmVjdGlvbklkZW50aWZpZXJzRm9yTmFtZSA9IGNoYW5uZWxzRm9yT3JpZ2luLmVu
c3VyZShuYW1lLCBbXSB7IHJldHVybiBWZWN0b3I8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRD4g
eyB9OyB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgQVNTRVJUKCFjb25uZWN0aW9uSWRlbnRpZmll
cnNGb3JOYW1lLmNvbnRhaW5zKGNvbm5lY3Rpb24udW5pcXVlSUQoKSkpOwpAQCAtNDQsNiArNjYs
OCBAQCB2b2lkIE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6OnJlZ2lzdGVyQ2hhbm5l
bChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3RpbwogCiB2b2lkIE5ldHdvcmtCcm9hZGNhc3RDaGFu
bmVsUmVnaXN0cnk6OnVucmVnaXN0ZXJDaGFubmVsKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFt
ZSkKIHsKKyAgICBSRUdJU1RSWV9NRVNTQUdFX0NIRUNLKGlzVmFsaWRDbGllbnRPcmlnaW4ob3Jp
Z2luKSk7CisKICAgICBhdXRvIGNoYW5uZWxzRm9yT3JpZ2luSXRlcmF0b3IgPSBtX2Jyb2FkY2Fz
dENoYW5uZWxzLmZpbmQob3JpZ2luKTsKICAgICBBU1NFUlQoY2hhbm5lbHNGb3JPcmlnaW5JdGVy
YXRvciAhPSBtX2Jyb2FkY2FzdENoYW5uZWxzLmVuZCgpKTsKICAgICBpZiAoY2hhbm5lbHNGb3JP
cmlnaW5JdGVyYXRvciA9PSBtX2Jyb2FkY2FzdENoYW5uZWxzLmVuZCgpKQpAQCAtNTksNiArODMs
OCBAQCB2b2lkIE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6OnVucmVnaXN0ZXJDaGFu
bmVsKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdAogCiB2b2lkIE5ldHdvcmtCcm9hZGNhc3RDaGFu
bmVsUmVnaXN0cnk6OnBvc3RNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29u
c3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgV2Vi
Q29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CisgICAgUkVHSVNUUllfTUVTU0FHRV9D
SEVDS19DT01QTEVUSU9OKGlzVmFsaWRDbGllbnRPcmlnaW4ob3JpZ2luKSwgY29tcGxldGlvbkhh
bmRsZXIoKSk7CisKICAgICBhdXRvIGNoYW5uZWxzRm9yT3JpZ2luSXRlcmF0b3IgPSBtX2Jyb2Fk
Y2FzdENoYW5uZWxzLmZpbmQob3JpZ2luKTsKICAgICBBU1NFUlQoY2hhbm5lbHNGb3JPcmlnaW5J
dGVyYXRvciAhPSBtX2Jyb2FkY2FzdENoYW5uZWxzLmVuZCgpKTsKICAgICBpZiAoY2hhbm5lbHNG
b3JPcmlnaW5JdGVyYXRvciA9PSBtX2Jyb2FkY2FzdENoYW5uZWxzLmVuZCgpKQpAQCAtMTAxLDQg
KzEyNyw3IEBAIHZvaWQgTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6cmVtb3ZlQ29u
bmVjdGlvbihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3RpCiAgICAgICAgIG1fYnJvYWRjYXN0Q2hh
bm5lbHMucmVtb3ZlKG9yaWdpblRvUmVtb3ZlKTsKIH0KIAorI3VuZGVmIFJFR0lTVFJZX01FU1NB
R0VfQ0hFQ0sKKyN1bmRlZiBSRUdJU1RSWV9NRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04KKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oCmluZGV4IDNmOWFl
ZDIwYmFiNmJjMDI4MTA4NTU2NDliYTdhN2YwZjJlZGY0MWQuLjcxMTRiY2JiZGJjNmJjMjBhNWY2
MDNiMWM1NmEyNDNhYjQ4ZjBmMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oCkBAIC0z
NiwxMCArMzYsMTIgQEAgc3RydWN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzOwogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAorY2xhc3MgTmV0d29ya1Byb2Nlc3M7CisKIGNsYXNzIE5ldHdvcmtCcm9h
ZGNhc3RDaGFubmVsUmVnaXN0cnkgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkoKTsKKyAgICBleHBsaWNp
dCBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5KE5ldHdvcmtQcm9jZXNzJik7CiAKICAg
ICB2b2lkIHJlbW92ZUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJik7CiAKQEAgLTUwLDYgKzUy
LDcgQEAgcHVibGljOgogICAgIHZvaWQgcG9zdE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgY29u
c3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpN
ZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
CiBwcml2YXRlOgorICAgIE5ldHdvcmtQcm9jZXNzJiBtX25ldHdvcmtQcm9jZXNzOwogICAgIHVz
aW5nIE5hbWVUb0Nvbm5lY3Rpb25JZGVudGlmaWVyc01hcCA9IEhhc2hNYXA8U3RyaW5nLCBWZWN0
b3I8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRD4+OwogICAgIEhhc2hNYXA8V2ViQ29yZTo6Q2xp
ZW50T3JpZ2luLCBOYW1lVG9Db25uZWN0aW9uSWRlbnRpZmllcnNNYXA+IG1fYnJvYWRjYXN0Q2hh
bm5lbHM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcAppbmRleCBlYjJmNWJiYmRmYTZlMzFhNTkwMGNhYzdmMmEzMGI1NzZlNTUwY2ZmLi44
MzRkMTlhNWI2M2QwZTUzYThiZjIzNzJhOTUzMWM0YTFjZWY2OGYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMjU1Miw2ICsyNTUy
LDE1IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NDbG9zZWQo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQCiAgICAgICAgIHNlc3Npb24tPnN0b3JhZ2VN
YW5hZ2VyKCkuc3RvcFJlY2VpdmluZ01lc3NhZ2VGcm9tQ29ubmVjdGlvbihjb25uZWN0aW9uKTsK
IH0KIAorV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgTmV0d29ya1Byb2Nlc3M6OndlYlByb2Nl
c3NJZGVudGlmaWVyRm9yQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pIGNv
bnN0Cit7CisgICAgZm9yIChhdXRvJiBbcHJvY2Vzc0lkZW50aWZpZXIsIHdlYkNvbm5lY3Rpb25d
IDogbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMpIHsKKyAgICAgICAgaWYgKCZ3ZWJDb25uZWN0aW9u
LT5jb25uZWN0aW9uKCkgPT0gJmNvbm5lY3Rpb24pCisgICAgICAgICAgICByZXR1cm4gcHJvY2Vz
c0lkZW50aWZpZXI7CisgICAgfQorICAgIHJldHVybiB7IH07Cit9CisKIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKiBOZXR3b3JrUHJvY2Vzczo6d2ViUHJvY2Vzc0Nvbm5lY3Rpb24oUHJv
Y2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllcikgY29uc3QKIHsKICAgICByZXR1cm4gbV93ZWJQcm9j
ZXNzQ29ubmVjdGlvbnMuZ2V0KGlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGY3NzA0NWU1YWY4ZTQzNzIxNjJhNTE2N2Nh
ZmMwMDg0ZDMwOWU4ODkuLmQ5MzVmNDZjY2M5OWNhODY3ODRmNWYxNGU4MGRkNzBiNTAzODNiMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAg
LTMzMiw2ICszMzIsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgT3B0aW9uU2V0PE5ldHdvcmtDYWNo
ZTo6Q2FjaGVPcHRpb24+JiBjYWNoZU9wdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlT3B0
aW9uczsgfQogCiAgICAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIHdlYlByb2Nlc3ND
b25uZWN0aW9uKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKSBjb25zdDsKKyAgICBXZWJDb3Jl
OjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllckZvckNvbm5lY3Rpb24oSVBD
OjpDb25uZWN0aW9uJikgY29uc3Q7CiAgICAgV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsUmVn
aXN0cnkmIG1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5KCkgeyByZXR1cm4gbV9tZXNzYWdlUG9y
dENoYW5uZWxSZWdpc3RyeTsgfQogCiAgICAgdm9pZCBzZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1l
b3V0Rm9yVGVzdGluZyhTZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAppbmRleCA0
ZDA5YzNiYjQyOWM0YzBmMzQ0OGM5OTZkZWE5OTFkYzRmODJmNjg5Li5lODBlMjYxZmIwMjJlYmU1
MzZjODA5OWE0NDkwZjEzNDg5YjQyM2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIE5ldHdvcmtTZXNz
aW9uOjpOZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0
IE5ldHdvcmtTZXNzCiAjZW5kaWYKICAgICAsIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQobWFu
YWdlck9yUHJveHkoKnRoaXMsIG5ldHdvcmtQcm9jZXNzLCBwYXJhbWV0ZXJzKSkKICAgICAsIG1f
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z01vZGVFbmFibGVkKHBhcmFtZXRlcnMuZW5hYmxl
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z01vZGUpCi0gICAgLCBtX2Jyb2FkY2FzdENoYW5u
ZWxSZWdpc3RyeShtYWtlVW5pcXVlUmVmPE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk+
KCkpCisgICAgLCBtX2Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeShtYWtlVW5pcXVlUmVmPE5ldHdv
cmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk+KG5ldHdvcmtQcm9jZXNzKSkKICAgICAsIG1fdGVz
dFNwZWVkTXVsdGlwbGllcihwYXJhbWV0ZXJzLnRlc3RTcGVlZE11bHRpcGxpZXIpCiAgICAgLCBt
X2FsbG93c1NlcnZlclByZWNvbm5lY3QocGFyYW1ldGVycy5hbGxvd3NTZXJ2ZXJQcmVjb25uZWN0
KQogICAgICwgbV9zaG91bGRSdW5TZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZEZvclRlc3Rpbmco
cGFyYW1ldGVycy5zaG91bGRSdW5TZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZEZvclRlc3Rpbmcp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
QnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuY3BwCmluZGV4IDdjYTRi
ZjgxOTVhZDA5ZmRmNDJhNTgyMjA2ZmRiYTU0M2QzNTI0NTMuLmFmYjBhMGNhZWNhMWY1ZWZhY2Nh
OWFlMzE2ZWViMjJlOGMxMmIxZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJCcm9hZGNhc3RDaGFubmVs
UmVnaXN0cnkuY3BwCkBAIC00MCwxNyArNDAsMzAgQEAgc3RhdGljIGlubGluZSBJUEM6OkNvbm5l
Y3Rpb24mIG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpCiAgICAgcmV0dXJuIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KTsKIH0KIAotdm9pZCBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6OnJlZ2lzdGVyQ2hhbm5l
bChjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1l
LCBXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllciBpZGVudGlmaWVyKQorLy8gVW5p
cXVlIG9yaWdpbnMgYXJlIG9ubHkgc3RvcmVkIGluIHByb2Nlc3MgaW4gbV9jaGFubmVsc1Blck9y
aWdpbiBhbmQgbmV2ZXIgc2VudCB0byB0aGUgTmV0d29ya1Byb2Nlc3MgYXMgYSBDbGllbnRPcmln
aW4uCisvLyBUaGUgaWRlbnRpdHkgb2YgdW5pcXVlIG9yaWdpbnMgd291bGRuJ3QgYmUgcHJlc2Vy
dmVkIHdoZW4gc2VyaWFsaXppbmcgdGhlbSBhcyBhIFNlY3VyaXR5T3JpZ2luRGF0YSAodmlhIENs
aWVudE9yaWdpbikuCisvLyBTaW5jZSBCcm9hZGNhc3RDaGFubmVscyBmcm9tIGEgdW5pcXVlIG9y
aWdpbiBjYW4gb25seSBjb21tdW5pY2F0ZSB3aXRoIG90aGVyIEJyb2FkY2FzdENoYW5uZWxzIGZy
b20gdGhlIHNhbWUgdW5pcXVlIG9yaWdpbiwKKy8vIHRoZSBkZXN0aW5hdGlvbiBjaGFubmVscyBo
YXZlIHRvIGJlIHdpdGhpbiB0aGUgc2FtZSBXZWJQcm9jZXNzIGFueXdheS4KK3N0YXRpYyBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkNsaWVudE9yaWdpbj4gdG9DbGllbnRPcmlnaW4oY29uc3QgV2Vi
Q29yZTo6UGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQoreworICAgIGlmIChvcmln
aW4udG9wT3JpZ2luLT5pc1VuaXF1ZSgpIHx8IG9yaWdpbi5jbGllbnRPcmlnaW4tPmlzVW5pcXVl
KCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIFdlYkNvcmU6OkNs
aWVudE9yaWdpbiB7IG9yaWdpbi50b3BPcmlnaW4tPmRhdGEoKSwgb3JpZ2luLmNsaWVudE9yaWdp
bi0+ZGF0YSgpIH07Cit9CisKK3ZvaWQgV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5OjpyZWdp
c3RlckNoYW5uZWwoY29uc3QgV2ViQ29yZTo6UGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbiYgb3Jp
Z2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkJyb2FkY2FzdENoYW5uZWxJZGVudGlm
aWVyIGlkZW50aWZpZXIpCiB7CiAgICAgYXV0byYgY2hhbm5lbHNGb3JPcmlnaW4gPSBtX2NoYW5u
ZWxzUGVyT3JpZ2luLmVuc3VyZShvcmlnaW4sIFtdIHsgcmV0dXJuIEhhc2hNYXA8U3RyaW5nLCBW
ZWN0b3I8V2ViQ29yZTo6QnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXI+PiB7IH07IH0pLml0ZXJh
dG9yLT52YWx1ZTsKICAgICBhdXRvJiBjaGFubmVsc0Zvck5hbWUgPSBjaGFubmVsc0Zvck9yaWdp
bi5lbnN1cmUobmFtZSwgW10geyByZXR1cm4gVmVjdG9yPFdlYkNvcmU6OkJyb2FkY2FzdENoYW5u
ZWxJZGVudGlmaWVyPiB7IH07IH0pLml0ZXJhdG9yLT52YWx1ZTsKICAgICBjaGFubmVsc0Zvck5h
bWUuYXBwZW5kKGlkZW50aWZpZXIpOwogCi0gICAgaWYgKGNoYW5uZWxzRm9yTmFtZS5zaXplKCkg
PT0gMSkKLSAgICAgICAgbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
TmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6UmVnaXN0ZXJDaGFubmVsIHsgb3JpZ2lu
LCBuYW1lIH0sIDApOworICAgIGlmIChjaGFubmVsc0Zvck5hbWUuc2l6ZSgpID09IDEpIHsKKyAg
ICAgICAgaWYgKGF1dG8gY2xpZW50T3JpZ2luID0gdG9DbGllbnRPcmlnaW4ob3JpZ2luKSkKKyAg
ICAgICAgICAgIG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6OlJlZ2lzdGVyQ2hhbm5lbCB7ICpjbGllbnRPcmln
aW4sIG5hbWUgfSwgMCk7CisgICAgfQogfQogCi12b2lkIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdp
c3RyeTo6dW5yZWdpc3RlckNoYW5uZWwoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmln
aW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6QnJvYWRjYXN0Q2hhbm5lbElkZW50aWZp
ZXIgaWRlbnRpZmllcikKK3ZvaWQgV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Ojp1bnJlZ2lz
dGVyQ2hhbm5lbChjb25zdCBXZWJDb3JlOjpQYXJ0aXRpb25lZFNlY3VyaXR5T3JpZ2luJiBvcmln
aW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6QnJvYWRjYXN0Q2hhbm5lbElkZW50aWZp
ZXIgaWRlbnRpZmllcikKIHsKICAgICBhdXRvIGNoYW5uZWxzUGVyT3JpZ2luSXRlcmF0b3IgPSBt
X2NoYW5uZWxzUGVyT3JpZ2luLmZpbmQob3JpZ2luKTsKICAgICBpZiAoY2hhbm5lbHNQZXJPcmln
aW5JdGVyYXRvciA9PSBtX2NoYW5uZWxzUGVyT3JpZ2luLmVuZCgpKQpAQCAtNjgsMjAgKzgxLDIy
IEBAIHZvaWQgV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQ2hhbm5lbChj
b25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mCiAgICAgICAgIHJldHVybjsKIAogICAgIGNoYW5u
ZWxzRm9yT3JpZ2luLnJlbW92ZShjaGFubmVsc0Zvck9yaWdpbkl0ZXJhdG9yKTsKLSAgICBuZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQnJvYWRjYXN0Q2hh
bm5lbFJlZ2lzdHJ5OjpVbnJlZ2lzdGVyQ2hhbm5lbCB7IG9yaWdpbiwgbmFtZSB9LCAwKTsKKyAg
ICBpZiAoYXV0byBjbGllbnRPcmlnaW4gPSB0b0NsaWVudE9yaWdpbihvcmlnaW4pKQorICAgICAg
ICBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQnJvYWRj
YXN0Q2hhbm5lbFJlZ2lzdHJ5OjpVbnJlZ2lzdGVyQ2hhbm5lbCB7ICpjbGllbnRPcmlnaW4sIG5h
bWUgfSwgMCk7CiAKICAgICBpZiAoY2hhbm5lbHNGb3JPcmlnaW4uaXNFbXB0eSgpKQogICAgICAg
ICBtX2NoYW5uZWxzUGVyT3JpZ2luLnJlbW92ZShjaGFubmVsc1Blck9yaWdpbkl0ZXJhdG9yKTsK
IH0KIAotdm9pZCBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6OnBvc3RNZXNzYWdlKGNvbnN0
IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNv
cmU6OkJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyIHNvdXJjZSwgUmVmPFdlYkNvcmU6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4mJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6cG9z
dE1lc3NhZ2UoY29uc3QgV2ViQ29yZTo6UGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbiYgb3JpZ2lu
LCBjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVy
IHNvdXJjZSwgUmVmPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBtZXNzYWdlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0
byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgcG9zdE1lc3NhZ2VMb2NhbGx5KG9yaWdpbiwgbmFt
ZSwgc291cmNlLCBtZXNzYWdlLmNvcHlSZWYoKSwgY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYo
KSk7Ci0gICAgbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5OjpQb3N0TWVzc2FnZSB7IG9y
aWdpbiwgbmFtZSwgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMgeyBXVEZNb3ZlKG1l
c3NhZ2UpLCB7IH0gfSB9LCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0sIDApOworICAgIGlmIChh
dXRvIGNsaWVudE9yaWdpbiA9IHRvQ2xpZW50T3JpZ2luKG9yaWdpbikpCisgICAgICAgIG5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29y
a0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6UG9zdE1lc3NhZ2UgeyAqY2xpZW50T3JpZ2luLCBu
YW1lLCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyB7IFdURk1vdmUobWVzc2FnZSks
IHsgfSB9IH0sIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSwgMCk7CiB9CiAKLXZvaWQgV2ViQnJv
YWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Ojpwb3N0TWVzc2FnZUxvY2FsbHkoY29uc3QgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllcj4gc291cmNlSW5Qcm9jZXNzLCBSZWY8
V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIFJlZjxXVEY6OkNhbGxi
YWNrQWdncmVnYXRvcj4mJiBjYWxsYmFja0FnZ3JlZ2F0b3IpCit2b2lkIFdlYkJyb2FkY2FzdENo
YW5uZWxSZWdpc3RyeTo6cG9zdE1lc3NhZ2VMb2NhbGx5KGNvbnN0IFdlYkNvcmU6OlBhcnRpdGlv
bmVkU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyPiBzb3VyY2VJblByb2Nlc3Ms
IFJlZjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgUmVmPFdURjo6
Q2FsbGJhY2tBZ2dyZWdhdG9yPiYmIGNhbGxiYWNrQWdncmVnYXRvcikKIHsKICAgICBhdXRvIGNo
YW5uZWxzUGVyT3JpZ2luSXRlcmF0b3IgPSBtX2NoYW5uZWxzUGVyT3JpZ2luLmZpbmQob3JpZ2lu
KTsKICAgICBpZiAoY2hhbm5lbHNQZXJPcmlnaW5JdGVyYXRvciA9PSBtX2NoYW5uZWxzUGVyT3Jp
Z2luLmVuZCgpKQpAQCAtMTAwLDE3ICsxMTUsMjEgQEAgdm9pZCBXZWJCcm9hZGNhc3RDaGFubmVs
UmVnaXN0cnk6OnBvc3RNZXNzYWdlTG9jYWxseShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4K
ICAgICB9CiB9CiAKLXZvaWQgV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Ojpwb3N0TWVzc2Fn
ZVRvUmVtb3RlKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBjb25zdCBTdHJp
bmcmIG5hbWUsIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJCcm9h
ZGNhc3RDaGFubmVsUmVnaXN0cnk6OnBvc3RNZXNzYWdlVG9SZW1vdGUoY29uc3QgV2ViQ29yZTo6
Q2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6
TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3Ig
PSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CisgICAgV2ViQ29yZTo6UGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbiBvcmlnaW4geyBjbGllbnRP
cmlnaW4udG9wT3JpZ2luLnNlY3VyaXR5T3JpZ2luKCksIGNsaWVudE9yaWdpbi5jbGllbnRPcmln
aW4uc2VjdXJpdHlPcmlnaW4oKSB9OwogICAgIHBvc3RNZXNzYWdlTG9jYWxseShvcmlnaW4sIG5h
bWUsIHN0ZDo6bnVsbG9wdCwgKm1lc3NhZ2UubWVzc2FnZSwgY2FsbGJhY2tBZ2dyZWdhdG9yLmNv
cHlSZWYoKSk7CiB9CiAKIHZvaWQgV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5OjpuZXR3b3Jr
UHJvY2Vzc0NyYXNoZWQoKQogewogICAgIGZvciAoYXV0byYgW29yaWdpbiwgY2hhbm5lbHNGb3JP
cmlnaW5dIDogbV9jaGFubmVsc1Blck9yaWdpbikgeworICAgICAgICBhdXRvIGNsaWVudE9yaWdp
biA9IHRvQ2xpZW50T3JpZ2luKG9yaWdpbik7CisgICAgICAgIGlmICghY2xpZW50T3JpZ2luKQor
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGZvciAoYXV0byYgbmFtZSA6IGNoYW5uZWxz
Rm9yT3JpZ2luLmtleXMoKSkKLSAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6OlJlZ2lzdGVy
Q2hhbm5lbCB7IG9yaWdpbiwgbmFtZSB9LCAwKTsKKyAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0
cnk6OlJlZ2lzdGVyQ2hhbm5lbCB7ICpjbGllbnRPcmlnaW4sIG5hbWUgfSwgMCk7CiAgICAgfQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmgKaW5kZXggZmIzOTk2
NmNiYWE1MmQ0MzgxYjVmZGZmOWY5MTQ3NTA4Mjc3NmNhMS4uMGI2YjFhY2E0NGFjMmU3YjMwODll
ZjM1Zjk1ZTIxMmYyNjhiOGIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJCcm9hZGNhc3RDaGFubmVsUmVn
aXN0cnkuaApAQCAtMjgsNiArMjgsOCBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvQ2xpZW50T3JpZ2luLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYXJ0aXRpb25lZFNlY3VyaXR5
T3JpZ2luLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC00OCw5ICs1MCw5
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViQnJvYWRjYXN0Q2hh
bm5lbFJlZ2lzdHJ5KTsKICAgICB9CiAKLSAgICB2b2lkIHJlZ2lzdGVyQ2hhbm5lbChjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkJyb2Fk
Y2FzdENoYW5uZWxJZGVudGlmaWVyKSBmaW5hbDsKLSAgICB2b2lkIHVucmVnaXN0ZXJDaGFubmVs
KGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29y
ZTo6QnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXIpIGZpbmFsOwotICAgIHZvaWQgcG9zdE1lc3Nh
Z2UoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJD
b3JlOjpCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllciBzb3VyY2UsIFJlZjxXZWJDb3JlOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWU+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7
CisgICAgdm9pZCByZWdpc3RlckNoYW5uZWwoY29uc3QgV2ViQ29yZTo6UGFydGl0aW9uZWRTZWN1
cml0eU9yaWdpbiYsIGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6QnJvYWRjYXN0Q2hhbm5l
bElkZW50aWZpZXIpIGZpbmFsOworICAgIHZvaWQgdW5yZWdpc3RlckNoYW5uZWwoY29uc3QgV2Vi
Q29yZTo6UGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFN0cmluZyYgbmFtZSwgV2Vi
Q29yZTo6QnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXIpIGZpbmFsOworICAgIHZvaWQgcG9zdE1l
c3NhZ2UoY29uc3QgV2ViQ29yZTo6UGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFN0
cmluZyYgbmFtZSwgV2ViQ29yZTo6QnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXIgc291cmNlLCBS
ZWY8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpIGZpbmFsOwogCiAgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoKTsKIApA
QCAtNjAsOSArNjIsOSBAQCBwcml2YXRlOgogICAgIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3Ry
eSgpID0gZGVmYXVsdDsKIAogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1JlbW90ZShjb25zdCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4mLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6Ok1lc3NhZ2VX
aXRoTWVzc2FnZVBvcnRzJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9p
ZCBwb3N0TWVzc2FnZUxvY2FsbHkoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkJyb2FkY2FzdENoYW5uZWxJZGVu
dGlmaWVyPiBzb3VyY2VJblByb2Nlc3MsIFJlZjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWU+JiYsIFJlZjxXVEY6OkNhbGxiYWNrQWdncmVnYXRvcj4mJik7CisgICAgdm9pZCBwb3N0TWVz
c2FnZUxvY2FsbHkoY29uc3QgV2ViQ29yZTo6UGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbiYsIGNv
bnN0IFN0cmluZyYgbmFtZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVs
SWRlbnRpZmllcj4gc291cmNlSW5Qcm9jZXNzLCBSZWY8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiYmLCBSZWY8V1RGOjpDYWxsYmFja0FnZ3JlZ2F0b3I+JiYpOwogCi0gICAgSGFzaE1h
cDxXZWJDb3JlOjpDbGllbnRPcmlnaW4sIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8V2ViQ29yZTo6
QnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXI+Pj4gbV9jaGFubmVsc1Blck9yaWdpbjsKKyAgICBI
YXNoTWFwPFdlYkNvcmU6OlBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4sIEhhc2hNYXA8U3RyaW5n
LCBWZWN0b3I8V2ViQ29yZTo6QnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXI+Pj4gbV9jaGFubmVs
c1Blck9yaWdpbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0
cnkuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJCcm9hZGNhc3RD
aGFubmVsUmVnaXN0cnkuY3BwCmluZGV4IDY0YzY0YjJjY2MxYTVkMGJkNzRkM2MwNGU2ODE5NDg0
YmY4MjgyZTUuLjc5YjNkNGU2Yzg0ZjYyYzgyMzE2ZWNkOTcwMmNlZWQyNzQyNThmMTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViQnJvYWRjYXN0Q2hh
bm5lbFJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0
L1dlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgUmVmPFdl
YkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeT4gV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Ojpn
ZXRPckNyZWF0ZShib29sIHAKICAgICByZXR1cm4gcmVnaXN0cnk7CiB9CiAKLXZvaWQgV2ViQnJv
YWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5OjpyZWdpc3RlckNoYW5uZWwoY29uc3QgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6QnJvYWRjYXN0
Q2hhbm5lbElkZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgV2ViQnJvYWRjYXN0Q2hhbm5lbFJl
Z2lzdHJ5OjpyZWdpc3RlckNoYW5uZWwoY29uc3QgV2ViQ29yZTo6UGFydGl0aW9uZWRTZWN1cml0
eU9yaWdpbiYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkJyb2FkY2FzdENo
YW5uZWxJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKICAgICBhdXRvJiBjaGFubmVsc0Zvck9yaWdpbiA9IG1fY2hhbm5lbHMuZW5zdXJlKG9yaWdp
biwgW10geyByZXR1cm4gTmFtZVRvQ2hhbm5lbElkZW50aWZpZXJzTWFwIHsgfTsgfSkuaXRlcmF0
b3ItPnZhbHVlOwpAQCAtNTMsNyArNTMsNyBAQCB2b2lkIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdp
c3RyeTo6cmVnaXN0ZXJDaGFubmVsKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgbwogICAg
IGNoYW5uZWxzRm9yTmFtZS5hcHBlbmQoaWRlbnRpZmllcik7CiB9CiAKLXZvaWQgV2ViQnJvYWRj
YXN0Q2hhbm5lbFJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQ2hhbm5lbChjb25zdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpCcm9hZGNhc3RD
aGFubmVsSWRlbnRpZmllciBpZGVudGlmaWVyKQordm9pZCBXZWJCcm9hZGNhc3RDaGFubmVsUmVn
aXN0cnk6OnVucmVnaXN0ZXJDaGFubmVsKGNvbnN0IFdlYkNvcmU6OlBhcnRpdGlvbmVkU2VjdXJp
dHlPcmlnaW4mIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpCcm9hZGNhc3RD
aGFubmVsSWRlbnRpZmllciBpZGVudGlmaWVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAgICAgYXV0byBjaGFubmVsc0Zvck9yaWdpbkl0ZXJhdG9yID0gbV9jaGFubmVscy5maW5k
KG9yaWdpbik7CkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lz
dHJ5Ojp1bnJlZ2lzdGVyQ2hhbm5lbChjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mCiAgICAg
Y2hhbm5lbHNGb3JOYW1lSXRlcmF0b3ItPnZhbHVlLnJlbW92ZUZpcnN0KGlkZW50aWZpZXIpOwog
fQogCi12b2lkIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6cG9zdE1lc3NhZ2UoY29uc3Qg
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29y
ZTo6QnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXIgc291cmNlLCBSZWY8V2ViQ29yZTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Ojpwb3N0
TWVzc2FnZShjb25zdCBXZWJDb3JlOjpQYXJ0aXRpb25lZFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4s
IGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6QnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXIg
c291cmNlLCBSZWY8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJh
Y2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJCcm9hZGNhc3RDaGFu
bmVsUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViQnJv
YWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmgKaW5kZXggNWQwZDE1MGVmOWUwZjEzNTYzZTIzM2ZiZWNm
NzZiNjZhNTBlZWZjOS4uM2E2MmViNjFkMzUwNTVkMmFjMzhjN2MyYzRlZDY1YWUyMTQwZmIxNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJCcm9hZGNh
c3RDaGFubmVsUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBw
b3J0L1dlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8K
IAogI2luY2x1ZGUgPFdlYkNvcmUvQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9DbGllbnRPcmlnaW4uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhcnRpdGlvbmVk
U2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0
Zi9XZWFrUHRyLmg+CiAKQEAgLTM0LDEzICszNCwxMyBAQCBjbGFzcyBXZWJCcm9hZGNhc3RDaGFu
bmVsUmVnaXN0cnkgOiBwdWJsaWMgV2ViQ29yZTo6QnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LCBw
dQogcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5PiBn
ZXRPckNyZWF0ZShib29sIHByaXZhdGVTZXNzaW9uKTsKIAotICAgIHZvaWQgcmVnaXN0ZXJDaGFu
bmVsKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIGNvbnN0IFN0cmluZyYgbmFtZSwgV2Vi
Q29yZTo6QnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXIpIGZpbmFsOwotICAgIHZvaWQgdW5yZWdp
c3RlckNoYW5uZWwoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgY29uc3QgU3RyaW5nJiBu
YW1lLCBXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllcikgZmluYWw7Ci0gICAgdm9p
ZCBwb3N0TWVzc2FnZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBjb25zdCBTdHJpbmcm
IG5hbWUsIFdlYkNvcmU6OkJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyIHNvdXJjZSwgUmVmPFdl
YkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKSBmaW5hbDsKKyAgICB2b2lkIHJlZ2lzdGVyQ2hhbm5lbChjb25zdCBXZWJDb3JlOjpQYXJ0
aXRpb25lZFNlY3VyaXR5T3JpZ2luJiwgY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpCcm9h
ZGNhc3RDaGFubmVsSWRlbnRpZmllcikgZmluYWw7CisgICAgdm9pZCB1bnJlZ2lzdGVyQ2hhbm5l
bChjb25zdCBXZWJDb3JlOjpQYXJ0aXRpb25lZFNlY3VyaXR5T3JpZ2luJiwgY29uc3QgU3RyaW5n
JiBuYW1lLCBXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllcikgZmluYWw7CisgICAg
dm9pZCBwb3N0TWVzc2FnZShjb25zdCBXZWJDb3JlOjpQYXJ0aXRpb25lZFNlY3VyaXR5T3JpZ2lu
JiwgY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmll
ciBzb3VyY2UsIFJlZjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgV2ViQnJvYWRjYXN0
Q2hhbm5lbFJlZ2lzdHJ5KCkgPSBkZWZhdWx0OwogCiAgICAgdXNpbmcgTmFtZVRvQ2hhbm5lbElk
ZW50aWZpZXJzTWFwID0gSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxXZWJDb3JlOjpCcm9hZGNhc3RD
aGFubmVsSWRlbnRpZmllcj4+OwotICAgIEhhc2hNYXA8V2ViQ29yZTo6Q2xpZW50T3JpZ2luLCBO
YW1lVG9DaGFubmVsSWRlbnRpZmllcnNNYXA+IG1fY2hhbm5lbHM7CisgICAgSGFzaE1hcDxXZWJD
b3JlOjpQYXJ0aXRpb25lZFNlY3VyaXR5T3JpZ2luLCBOYW1lVG9DaGFubmVsSWRlbnRpZmllcnNN
YXA+IG1fY2hhbm5lbHM7CiB9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggMzhk
NjczNTVkNDc4OWMxYTNlYmUxMTYwMmU1ZDg1NWFkODQ0NTA4ZC4uMzdlYTFhYzgxZDU2OGRlNjY5
NWFjZDA4NzkyNjQxMjA3MzgyZjhiMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMjItMDMtMjEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKworICAgICAgICBCcm9hZGNhc3RDaGFubmVsIGluc3RhbmNlcyBpbiBkaXN0aW5jdCBvcGFx
dWUgb3JpZ2lucyBjYW4gY29tbXVuaWNhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzODA5MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vOTA1MTEx
NTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1w
b3J0IHdlYi1wbGF0Zm9ybS10ZXN0cyB0ZXN0IGNvdmVyYWdlLgorCisgICAgICAgICogd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL29wYXF1ZS1vcmlnaW4t
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVz
c2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvb3BhcXVlLW9yaWdpbi5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvdzNj
LWltcG9ydC5sb2c6CisKIDIwMjItMDMtMjEgIFppcmFuIFN1biAgPHpzdW5AaWdhbGlhLmNvbT4K
IAogICAgICAgICBbc2VsZWN0aW9uXSBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c3VidHJl
ZUhhc0NoYW5nZWQoKSBzaG91bGRuJ3QgYmUgY2FsbGVkIGluIHNldFJhbmdlVGV4dApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNz
YWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9vcGFxdWUtb3JpZ2luLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2Fk
Y2FzdGNoYW5uZWwvb3BhcXVlLW9yaWdpbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmU5MWM5
YjAzMmMzNWYwMmQ0OTFlZjUyZTNjOTVjODMwZmEyMDczMgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jy
b2FkY2FzdGNoYW5uZWwvb3BhcXVlLW9yaWdpbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBA
CisKK1BBU1MgT3BhcXVlIG9yaWdpbiBzaG91bGQgYmUgc2VyaWFsaXplZCB0byAibnVsbCIKK1BB
U1MgQnJvYWRjYXN0Q2hhbm5lbCBtZXNzYWdlcyBmcm9tIG9wYXF1ZSBvcmlnaW5zIHNob3VsZCBi
ZSBzZWxmLWNvbnRhaW5lZAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL29wYXF1ZS1v
cmlnaW4uaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvb3BhcXVlLW9yaWdpbi5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjNmMzA4NzNiZTIyN2ZhZDJlNTBlMzgzMzg3YzA2MDZiYTc0YWEwMmMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1l
c3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL29wYXF1ZS1vcmlnaW4uaHRtbApAQCAtMCwwICsxLDg1
IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PXV0Zi04
PgorPHRpdGxlPjwvdGl0bGU+Cis8c2NyaXB0IHNyYz0vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpz
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcz48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KKzwhLS0KK3Byb21pc2VfdGVzdCh0
ID0+IHsKKyAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CisgICAgbGV0IGlmciA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgIGlmci5zcmMgPQorICAgICAg
ImRhdGE6dGV4dC9odG1sLDxzY3JpcHQ+IGxldCBiYyA9IG5ldyBCcm9hZGNhc3RDaGFubmVsKFwi
dGVzdFwiKTsiICsKKyAgICAgICJiYy5vbm1lc3NhZ2UgPSAoZSkgPT4geyIgKworICAgICAgIiAg
aWYgKGUuZGF0YSA9PSBcInBpbmdcIikgYmMucG9zdE1lc3NhZ2UoJ3BvbmcnKTsiKworICAgICAg
IiAgZWxzZSBwYXJlbnQucG9zdE1lc3NhZ2Uoe3dvcmtlck1lc3NhZ2VPcmlnaW46IGUuZGF0YSwg
bWVzc2FnZU9yaWdpbjogZS5vcmlnaW59LCBcIipcIik7IH07IiArCisgICAgICAibmV3IFdvcmtl
cihVUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFtcIiIgKworICAgICAgImxldCBiYzIgPSBu
ZXcgQnJvYWRjYXN0Q2hhbm5lbCgndGVzdCcpOyBiYzIucG9zdE1lc3NhZ2UoJ3BpbmcnKTsgIiAr
CisgICAgICAiYmMyLm9ubWVzc2FnZSA9IGUgPT4gYmMyLnBvc3RNZXNzYWdlKGUub3JpZ2luKTsi
ICsKKyAgICAgICJcIl0sIHt0eXBlOiAndGV4dC9qYXZhc2NyaXB0J30pKSk7IDwvc2NyaXB0PiI7
CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCB0LnN0ZXBfZnVuYyhlID0+
IHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhlLmRhdGEud29ya2VyTWVzc2FnZU9yaWdpbiwgIm51
bGwiKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhlLmRhdGEubWVzc2FnZU9yaWdpbiwgIm51bGwi
KTsKKyAgICAgICAgcmVzb2x2ZSgpOworICAgICAgfSksIHtvbmNlOiB0cnVlfSk7CisgICAgdC5h
ZGRfY2xlYW51cCgoKSA9PiB7IGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoaWZyKSB9KTsKKyAg
ICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlmcik7CisgICAgfSk7Cit9LCAiT3BhcXVlIG9y
aWdpbiBzaG91bGQgYmUgc2VyaWFsaXplZCB0byBcIm51bGxcIiIpOworCisKK2NvbnN0IGlmcmFt
ZV9zcmMgPSAoY2hhbm5lbF9uYW1lLCBpZnJhbWVfbmFtZSkgPT4gYGRhdGE6dGV4dC9odG1sLDxz
Y3JpcHQ+CitsZXQgYmMyID0gbmV3IEJyb2FkY2FzdENoYW5uZWwoIiR7Y2hhbm5lbF9uYW1lfSIp
OworYmMyLm9ubWVzc2FnZSA9IChlKSA9PiB7CisgIGlmIChlLmRhdGEgPT0gImZyb20tJHtpZnJh
bWVfbmFtZX0iKSB7CisgICAgcGFyZW50LnBvc3RNZXNzYWdlKCIke2lmcmFtZV9uYW1lfS1kb25l
IiwgIioiKTsKKyAgfSBlbHNlIHsKKyAgICBwYXJlbnQucG9zdE1lc3NhZ2UoImZhaWwiLCAiKiIp
OworICB9Cit9OworbGV0IGJjMyA9IG5ldyBCcm9hZGNhc3RDaGFubmVsKCIke2NoYW5uZWxfbmFt
ZX0iKTsKK2JjMy5wb3N0TWVzc2FnZSgiZnJvbS0ke2lmcmFtZV9uYW1lfSIpOworPC9zY3JpcHQ+
YDsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUs
IHJlamVjdCkgPT4geworICAgIGNvbnN0IGNoYW5uZWxfbmFtZSA9ICJvcGFxdWUtb3JpZ2luLXRl
c3QtMiI7CisgICAgY29uc3QgYmMxID0gbmV3IEJyb2FkY2FzdENoYW5uZWwoY2hhbm5lbF9uYW1l
KTsKKyAgICBiYzEub25tZXNzYWdlID0gdC51bnJlYWNoZWRfZnVuYygiUmVjZWl2ZWQgbWVzc2Fn
ZSBmcm9tIGFuIG9wYXF1ZSBvcmlnaW4iKTsKKworICAgIC8vIFdlJ2xsIGNyZWF0ZSBhbiBpZnJh
bWUgYW5kIGhhdmUgaXQgc2VuZCBhIEJyb2FkY2FzdENoYW5uZWwgbWVzc2FnZQorICAgIC8vIGJl
dHdlZW4gdHdvIGluc3RhbmNlcy4gT25jZSB0aGUgbWVzc2FnZSBpcyByZWNlaXZlZCwgaXQgd2ls
bCBwb3N0TWVzc2FnZQorICAgIC8vIGJhY2sgYW5kIHdlJ2xsIHJlcGVhdCB0aGlzIHdpdGggYW5v
dGhlciBpZnJhbWUuIElmIHRoZSBmaXJzdAorICAgIC8vIEJyb2FkY2FzdENoYW5uZWwgbWVzc2Fn
ZSBpcyByZWNlaXZlZCBieSBgYmMxYCwgb3IgaWYgdGhlIHNlY29uZAorICAgIC8vIEJyb2FkY2Fz
dENoYW5uZWwgbWVzc2FnZSBpcyByZWNlaXZlZCBieSBgYmMxYCBvciBgYmMyYCBpbiB0aGUgZmly
c3QKKyAgICAvLyBpZnJhbWUsIHRoZW4gdGhlIHRlc3Qgc2hvdWxkIGZhaWwuCisKKyAgICB3aW5k
b3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGUgPT4geworICAgICAgaWYoZS5kYXRhID09
ICJpZnJhbWUxLWRvbmUiKSB7CisgICAgICAgIGxldCBpZnJhbWUyID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiaWZyYW1lIik7CisgICAgICAgIGlmcmFtZTIuc3JjID0gaWZyYW1lX3NyYyhjaGFu
bmVsX25hbWUsICJpZnJhbWUyIik7CisgICAgICAgIHQuYWRkX2NsZWFudXAoKCkgPT4geyBkb2N1
bWVudC5ib2R5LnJlbW92ZUNoaWxkKGlmcmFtZTIpIH0pOworICAgICAgICBkb2N1bWVudC5ib2R5
LmFwcGVuZENoaWxkKGlmcmFtZTIpOworICAgICAgfSBlbHNlIGlmKGUuZGF0YSA9PSAiaWZyYW1l
Mi1kb25lIikgeworICAgICAgICByZXNvbHZlKCk7CisgICAgICB9IGVsc2UgaWYoZS5kYXRhID09
ICJmYWlsIikgeworICAgICAgICByZWplY3QoIk9uZSBvcGFxdWUgb3JpZ2luIHJlY2VpdmVkIGEg
bWVzc2FnZSBmcm9tIHRoZSBvdGhlciIpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcmVqZWN0
KCJBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VycmVkIik7CisgICAgICB9CisgICAgfSk7CisKKyAg
ICBsZXQgaWZyYW1lMSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgIGlm
cmFtZTEuc3JjID0gaWZyYW1lX3NyYyhjaGFubmVsX25hbWUsICJpZnJhbWUxIik7CisgICAgdC5h
ZGRfY2xlYW51cCgoKSA9PiB7IGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoaWZyYW1lMSkgfSk7
CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWUxKTsKKyAgICB9KTsKK30sICJC
cm9hZGNhc3RDaGFubmVsIG1lc3NhZ2VzIGZyb20gb3BhcXVlIG9yaWdpbnMgc2hvdWxkIGJlIHNl
bGYtY29udGFpbmVkIik7CisvLy0tPgorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1l
c3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5l
bC93M2MtaW1wb3J0LmxvZwppbmRleCA4NTkyZjAxZGQzNjM5NzAxYWM4YjA0NjgxNTdmODZjNDdi
NmU3ZTFiLi5lNjU1ZTA2M2M0MDc2ZWU3ODE5NmFlNWY3ZTU2MGY1ZTk1ZDA4NDg1IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3Nh
Z2luZy9icm9hZGNhc3RjaGFubmVsL3czYy1pbXBvcnQubG9nCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5u
ZWwvdzNjLWltcG9ydC5sb2cKQEAgLTE5LDYgKzE5LDcgQEAgTGlzdCBvZiBmaWxlczoKIC9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9h
ZGNhc3RjaGFubmVsL2Nyb3NzLW9yaWdpbi5odG1sCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9kZXRhY2hl
ZC1pZnJhbWUuaHRtbAogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvaW50ZXJmYWNlLmFueS5qcworL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2Fk
Y2FzdGNoYW5uZWwvb3BhcXVlLW9yaWdpbi5odG1sCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9vcmRlcmlu
Zy5odG1sCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJt
ZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9vcmlnaW4ud2luZG93LmpzCiAvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hh
bm5lbC9zYW5kYm94Lmh0bWwK
</data>
<flag name="commit-queue"
          id="483220"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455265</attachid>
            <date>2022-03-21 13:01:08 -0700</date>
            <delta_ts>2022-03-21 15:26:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238090-20220321130107.patch</filename>
            <type>text/plain</type>
            <size>49210</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNTU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzgwOTYzNDY1YjQzZGFi
MWFlNjkyYjg2YWRmODMzYjliN2FhMmZhZi4uOGFmZWQxN2NlM2UyNzk3ODQ1OTI5NjVkMWEyMDc4
YzZjZDAzMmY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIyLTAzLTIxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQnJvYWRjYXN0Q2hhbm5lbCBp
bnN0YW5jZXMgaW4gZGlzdGluY3Qgb3BhcXVlIG9yaWdpbnMgY2FuIGNvbW11bmljYXRlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgwOTAKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzkwNTExMTU1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoZSBpc3N1ZSBpcyB0aGF0IHdlIHdvdWxkIHVzZSBhIENs
aWVudE9yaWdpbiB0byBkaXN0aW5ndWlzaCBvcmlnaW5zIGZvciBCcm9hZGNhc3RDaGFubmVsLAor
ICAgICAgICB3aGljaCByZWxpZXMgb24gU2VjdXJpdHlPcmlnaW5EYXRhIGludGVybmFsbHkuIEEg
dW5pcXVlL29wYXF1ZSBTZWN1cml0eU9yaWdpbiBiZWNvbWVzIGFuIGVtcHR5CisgICAgICAgIFNl
Y3VyaXR5T3JpZ2luRGF0YSB1cG9uIGNvbnZlcnNpb24uIEFzIGEgcmVzdWx0LCB3aGVuIGNvbXBh
cmluZyBDbGllbnRPcmlnaW4gb2JqZWN0cyBmcm9tCisgICAgICAgIHVuaXF1ZSBTZWN1cml0eU9y
aWdpbnMsIHRoZXkgd291bGQgY29tcGFyZSBhcyBlcXVhbC4KKworICAgICAgICBUbyBhZGRyZXNz
IHRoZSBpc3N1ZSwgSSBpbnRyb2R1Y2VkIGEgbmV3IFBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4g
dHlwZSB3aGljaCBpcyBzaW1pbGFyCisgICAgICAgIHRvIENsaWVudE9yaWdpbiBidXQgc3RvcmVz
IFNlY3VyaXR5T3JpZ2luIG9iamVjdHMgaW50ZXJuYWxseSwgaW5zdGVhZCBvZiBTZWN1cml0eU9y
aWdpbkRhdGEKKyAgICAgICAgb2JqZWN0cy4gUGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbidzIG9w
ZXJhdG9yPT0oKSBpcyBzdWNoIHRoYXQgZGlmZmVyZW50IFNlY3VyaXR5T3JpZ2lucworICAgICAg
ICB3b3VsZCBub3QgYmUgZXF1YWwgYnV0IHRoZSBzYW1lIHVuaXF1ZSBTZWN1cml0eU9yaWdpbiB3
b3VsZCBiZS4gSSB0aGVuIHVzZWQgdGhpcyBuZXcKKyAgICAgICAgUGFydGl0aW9uZWRTZWN1cml0
eU9yaWdpbiB0eXBlIGFzIGtleSBpbiBvdXIgSGFzaE1hcCBvbiB0aGUgV2ViUHJvY2VzcyBzaWRl
IGluc3RlYWQgb2YKKyAgICAgICAgQ2xpZW50T3JpZ2luLiBUaGlzIGFsbG93cyBjb21tdW5pY2F0
aW9uIGJldHdlZW4gc2V2ZXJhbCBCcm9hZGNhc3RDaGFubmVscyBmcm9tIHRoZSBzYW1lCisgICAg
ICAgIHVuaXF1ZSBvcmlnaW4sIHdoaWxlIHByZXZlbnRpbmcgY29tbXVuaWNhdGlvbiBiZXR3ZWVu
IGRpc3RpbmN0IG9wYXF1ZSBvcmlnaW5zLgorCisgICAgICAgIFdoZW4gdGhlIFBhcnRpdGlvbmVk
U2VjdXJpdHlPcmlnaW4gY29udGFpbnMgYW4gb3BhcXVlIHNlY3VyaXR5IG9yaWdpbiwgd2UgZG9u
J3QgaW52b2x2ZQorICAgICAgICB0aGUgTmV0d29yayBQcm9jZXNzIGF0IGFsbCBzaW5jZSB0aGUg
ZGVzdGluYXRpb24gY2FuIG9ubHkgYmUgaW4gdGhlIHNhbWUgV2ViUHJvY2Vzcy4KKworICAgICAg
ICBUZXN0OiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9h
ZGNhc3RjaGFubmVsL29wYXF1ZS1vcmlnaW4uaHRtbAorCisgICAgICAgICogSGVhZGVycy5jbWFr
ZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogZG9tL0Jyb2FkY2FzdENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkUGFy
dGl0aW9uT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkJyb2FkY2FzdENoYW5uZWw6Ok1haW5U
aHJlYWRCcmlkZ2U6OnJlZ2lzdGVyQ2hhbm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpCcm9hZGNh
c3RDaGFubmVsOjpNYWluVGhyZWFkQnJpZGdlOjp1bnJlZ2lzdGVyQ2hhbm5lbCk6CisgICAgICAg
IChXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsOjpNYWluVGhyZWFkQnJpZGdlOjpwb3N0TWVzc2Fn
ZSk6CisgICAgICAgICogZG9tL0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oOgorICAgICAgICAq
IGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAqIHBhZ2UvUGFydGl0aW9uZWRTZWN1
cml0eU9yaWdpbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBhcnRpdGlvbmVkU2VjdXJp
dHlPcmlnaW46OlBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6
UGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbjo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbjo6aXNIYXNoVGFi
bGVFbXB0eVZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAg
ICAgICAoV1RGOjphZGQpOgorICAgICAgICAoV1RGOjpQYXJ0aXRpb25lZFNlY3VyaXR5T3JpZ2lu
SGFzaDo6aGFzaCk6CisgICAgICAgIChXVEY6OlBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW5IYXNo
OjplcXVhbCk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2ViQ29yZTo6UGFydGl0aW9uZWRT
ZWN1cml0eU9yaWdpbj46OmVtcHR5VmFsdWUpOgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPFdl
YkNvcmU6OlBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4+Ojpjb25zdHJ1Y3RFbXB0eVZhbHVlKToK
KyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxXZWJDb3JlOjpQYXJ0aXRpb25lZFNlY3VyaXR5T3Jp
Z2luPjo6aXNFbXB0eVZhbHVlKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxXZWJDb3JlOjpQ
YXJ0aXRpb25lZFNlY3VyaXR5T3JpZ2luPjo6cGVlayk6CisgICAgICAgIChXVEY6Okhhc2hUcmFp
dHM8V2ViQ29yZTo6UGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbj46OnRha2UpOgorCiAyMDIyLTAz
LTIxICBaaXJhbiBTdW4gIDx6c3VuQGlnYWxpYS5jb20+CiAKICAgICAgICAgW3NlbGVjdGlvbl0g
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnN1YnRyZWVIYXNDaGFuZ2VkKCkgc2hvdWxkbid0
IGJlIGNhbGxlZCBpbiBzZXRSYW5nZVRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggODE4N2Y1MGI2MzM4NGMxZDA0
ZDliZTNlZjM2NGUzNmQzMWYzMTljNy4uODFlZThkY2VhYTcyYzY5MmRkMTRlYmQ2YWFlMzBhYmU2
YzZmYTdmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAyMi0wMy0yMSAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEJyb2FkY2FzdENoYW5uZWwgaW5zdGFu
Y2VzIGluIGRpc3RpbmN0IG9wYXF1ZSBvcmlnaW5zIGNhbiBjb21tdW5pY2F0ZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MDkwCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS85MDUxMTE1NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGUgaXNzdWUgaXMgdGhhdCB3ZSB3b3VsZCB1c2UgYSBDbGllbnRP
cmlnaW4gdG8gZGlzdGluZ3Vpc2ggb3JpZ2lucyBmb3IgQnJvYWRjYXN0Q2hhbm5lbCwKKyAgICAg
ICAgd2hpY2ggcmVsaWVzIG9uIFNlY3VyaXR5T3JpZ2luRGF0YSBpbnRlcm5hbGx5LiBBIHVuaXF1
ZS9vcGFxdWUgU2VjdXJpdHlPcmlnaW4gYmVjb21lcyBhbiBlbXB0eQorICAgICAgICBTZWN1cml0
eU9yaWdpbkRhdGEgdXBvbiBjb252ZXJzaW9uLiBBcyBhIHJlc3VsdCwgd2hlbiBjb21wYXJpbmcg
Q2xpZW50T3JpZ2luIG9iamVjdHMgZnJvbQorICAgICAgICB1bmlxdWUgU2VjdXJpdHlPcmlnaW5z
LCB0aGV5IHdvdWxkIGNvbXBhcmUgYXMgZXF1YWwuCisKKyAgICAgICAgVG8gYWRkcmVzcyB0aGUg
aXNzdWUsIEkgaW50cm9kdWNlZCBhIG5ldyBQYXJ0aXRpb25lZFNlY3VyaXR5T3JpZ2luIHR5cGUg
d2hpY2ggaXMgc2ltaWxhcgorICAgICAgICB0byBDbGllbnRPcmlnaW4gYnV0IHN0b3JlcyBTZWN1
cml0eU9yaWdpbiBvYmplY3RzIGludGVybmFsbHksIGluc3RlYWQgb2YgU2VjdXJpdHlPcmlnaW5E
YXRhCisgICAgICAgIG9iamVjdHMuIFBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4ncyBvcGVyYXRv
cj09KCkgaXMgc3VjaCB0aGF0IGRpZmZlcmVudCBTZWN1cml0eU9yaWdpbnMKKyAgICAgICAgd291
bGQgbm90IGJlIGVxdWFsIGJ1dCB0aGUgc2FtZSB1bmlxdWUgU2VjdXJpdHlPcmlnaW4gd291bGQg
YmUuIEkgdGhlbiB1c2VkIHRoaXMgbmV3CisgICAgICAgIFBhcnRpdGlvbmVkU2VjdXJpdHlPcmln
aW4gdHlwZSBhcyBrZXkgaW4gb3VyIEhhc2hNYXAgb24gdGhlIFdlYlByb2Nlc3Mgc2lkZSBpbnN0
ZWFkIG9mCisgICAgICAgIENsaWVudE9yaWdpbi4gVGhpcyBhbGxvd3MgY29tbXVuaWNhdGlvbiBi
ZXR3ZWVuIHNldmVyYWwgQnJvYWRjYXN0Q2hhbm5lbHMgZnJvbSB0aGUgc2FtZQorICAgICAgICB1
bmlxdWUgb3JpZ2luLCB3aGlsZSBwcmV2ZW50aW5nIGNvbW11bmljYXRpb24gYmV0d2VlbiBkaXN0
aW5jdCBvcGFxdWUgb3JpZ2lucy4KKworICAgICAgICBXaGVuIHRoZSBQYXJ0aXRpb25lZFNlY3Vy
aXR5T3JpZ2luIGNvbnRhaW5zIGFuIG9wYXF1ZSBzZWN1cml0eSBvcmlnaW4sIHdlIGRvbid0IGlu
dm9sdmUKKyAgICAgICAgdGhlIE5ldHdvcmsgUHJvY2VzcyBhdCBhbGwgc2luY2UgdGhlIGRlc3Rp
bmF0aW9uIGNhbiBvbmx5IGJlIGluIHRoZSBzYW1lIFdlYlByb2Nlc3MuCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OnRvQ2xpZW50T3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
QnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5OjpyZWdpc3RlckNoYW5uZWwpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6OnVucmVnaXN0ZXJDaGFubmVsKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Ojpwb3N0TWVzc2FnZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6cG9zdE1lc3Nh
Z2VMb2NhbGx5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5
Ojpwb3N0TWVzc2FnZVRvUmVtb3RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQnJvYWRjYXN0Q2hh
bm5lbFJlZ2lzdHJ5OjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lmg6CisKIDIwMjIt
MDMtMjEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92
ZSB1c2Ugb2YgTWVkaWFTYW1wbGVBVkZPYmpDIGZyb20gV2ViUlRDIHBpcGVsaW5lcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L0NoYW5nZUxvZwppbmRleCA2ODA4ZTYyZDRhZjRlYTY2OGJjMTNlNDQ4MzI2MjE0MmMwNzg3YzIy
Li40ZGJmYmI1MTc4NmNjNTg2YmQ4MjBhZmFjM2UyNmNjMDJiYzhjYjQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0No
YW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIyLTAzLTIxICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKKyAgICAgICAgQnJvYWRjYXN0Q2hhbm5lbCBpbnN0YW5jZXMgaW4gZGlz
dGluY3Qgb3BhcXVlIG9yaWdpbnMgY2FuIGNvbW11bmljYXRlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgwOTAKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzkwNTExMTU1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmNwcDoK
KyAgICAgICAgKFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6cmVnaXN0ZXJDaGFubmVsKToK
KyAgICAgICAgKFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6dW5yZWdpc3RlckNoYW5uZWwp
OgorICAgICAgICAoV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Ojpwb3N0TWVzc2FnZSk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lmg6CisK
IDIwMjItMDMtMDggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBP
cHRpbWl6ZSBmdXJ0aGVyIHRoZSBwYXNzaW5nIG9mIGRhdGEgYWNyb3NzIHRocmVhZHMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCmluZGV4IDQzMTQyYmYyNDkxYjRjZWI4MmNhYmVmMmViZDk4MTI1ZWM2ZTcyMTEu
LjQ4NTg0MWI2Zjc5MTFkYWI2NmY3MTA5ODc5MjY4ODFlZTlhNTg5MWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQpAQCAtMTE0MSw2ICsxMTQxLDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktf
SEVBREVSUwogICAgIHBhZ2UvUGFnZU92ZXJsYXkuaAogICAgIHBhZ2UvUGFnZU92ZXJsYXlDb250
cm9sbGVyLmgKICAgICBwYWdlL1BhZ2VQYXN0ZWJvYXJkQ29udGV4dC5oCisgICAgcGFnZS9QYXJ0
aXRpb25lZFNlY3VyaXR5T3JpZ2luLmgKICAgICBwYWdlL1BlcmZvcm1hbmNlTG9nZ2luZy5oCiAg
ICAgcGFnZS9QZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQuaAogICAgIHBhZ2UvUG9pbnRlckNhcHR1
cmVDb250cm9sbGVyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCAzNDE5OTcxYjk0Y2NiODY5MjIxYmNlNmIwMjVjN2Y1MjkzZTJi
YzNmLi4yNDIwMTc1MmI2YzQxZmVmNzQwMDIxOTBjYTA4YTEzZGFkMzQ5NTJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzU2
LDYgKzEzNTYsNyBAQAogCQk0NjgzREY0MTI3NjdFOTFBMDA3RDAwQzggLyogU2hhZG93UmVhbG1H
bG9iYWxTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDY4M0RGM0IyNzY3REYyNjAwN0QwMEM4IC8qIFNoYWRvd1JlYWxtR2xvYmFsU2NvcGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0Njg4RTk4
MDI3QjZCNDUwMDA1NjdDRDIgLyogQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4OEU5N0YyN0I2
QjQ0NDAwNTY3Q0QyIC8qIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0Njg4RUUzQzI2REQy
NjEwMDAyQUY1QzQgLyogQ3Jvc3NPcmlnaW5Nb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njg4RUUzQTI2REQyNjBDMDAyQUY1QzQgLyogQ3Jvc3NP
cmlnaW5Nb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJNDY4OTNCODQyN0U4RDc0QzAwMkNDMTNEIC8qIFBhcnRpdGlvbmVkU2VjdXJpdHlPcmln
aW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODkz
QjgzMjdFOEQ3MTYwMDJDQzEzRCAvKiBQYXJ0aXRpb25lZFNlY3VyaXR5T3JpZ2luLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY5NDNEQzkyNzYz
RjgxNzAwNEI2MTBFIC8qIFNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OTQzREM3Mjc2M0Y4MEUwMDRC
NjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY5ODVGMjMyN0E0QTZBRDAwOTdBMzJC
IC8qIFNoYXJlZFdvcmtlcktleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDY5ODVGMjIyN0E0QTY4NjAwOTdBMzJCIC8qIFNoYXJlZFdvcmtlcktleS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2OUND
Q0ZFMjY5RDAyMUMwMDZFMDMxNCAvKiBCcm9hZGNhc3RDaGFubmVsLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjlDQ0NGQzI2OUQwMjAyMDA2RTAzMTQg
LyogQnJvYWRjYXN0Q2hhbm5lbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC05Mjg1LDYgKzkyODYsNyBAQAogCQk0Njg4RTk3RDI3QjZCNDQzMDA1
NjdDRDIgLyogQ29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ2ODhFOTdGMjdCNkI0NDQwMDU2N0NEMiAvKiBDb3JlTG9jYXRp
b25HZW9sb2NhdGlvblByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvcmVMb2NhdGlvbkdlb2xv
Y2F0aW9uUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4OEVFM0Ey
NkREMjYwQzAwMkFGNUM0IC8qIENyb3NzT3JpZ2luTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcm9z
c09yaWdpbk1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY4OTNCODMyN0U4
RDcxNjAwMkNDMTNEIC8qIFBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NjhCOEJERTI1Q0M4NDkzMDBGNjc4MjIgLyogSlNCYXNlQXVkaW9Db250ZXh0Q3VzdG9t
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQmFzZUF1ZGlvQ29udGV4dEN1c3RvbS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OTQzREM3Mjc2M0Y4MEUwMDRCNjEwRSAvKiBT
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY5ODVG
MjIyN0E0QTY4NjAwOTdBMzJCIC8qIFNoYXJlZFdvcmtlcktleS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJLZXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTI0MjU5LDYgKzI0MjYxLDcgQEAKIAkJCQlGNDBEQUFFRTI1RDlGM0JGMDAxMUI0
RkEgLyogUGFnZVBhc3RlYm9hcmRDb250ZXh0LmggKi8sCiAJCQkJMzcxRTY1Q0QxMzY2MUVFRDAw
QkVFREIwIC8qIFBhZ2VTZXJpYWxpemVyLmNwcCAqLywKIAkJCQkzNzFFNjVDQjEzNjYxRURDMDBC
RUVEQjAgLyogUGFnZVNlcmlhbGl6ZXIuaCAqLywKKwkJCQk0Njg5M0I4MzI3RThENzE2MDAyQ0Mx
M0QgLyogUGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbi5oICovLAogCQkJCUJDNEE1MzI4MjU2MDU2
M0IwMDI4QzU5MiAvKiBQREZJbWFnZUNhY2hpbmdQb2xpY3kuaCAqLywKIAkJCQk3QzcyNDcxRTI1
MTY3NTg4MDBDMzYzQ0QgLyogUGVyZm9ybWFuY2UrTmF2aWdhdGlvblRpbWluZy5pZGwgKi8sCiAJ
CQkJN0M3MjQ3MUMyNTE2NzRDRTAwQzM2M0NEIC8qIFBlcmZvcm1hbmNlK1BlcmZvcm1hbmNlVGlt
ZWxpbmUuaWRsICovLApAQCAtMzY1OTcsNiArMzY2MDAsNyBAQAogCQkJCTQ0Nzk1ODA0MTY0M0I0
OUEwMDFFMEE3RiAvKiBQYXJzZWRDb250ZW50VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM0
QTBGREEyNUMzNDQ5QTAwRDlFRTk3IC8qIFBhcnNlZFJlcXVlc3RSYW5nZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTM2RDVBMjMxOTNFOEUwQzAwQ0U0Q0FCIC8qIFBhcnNpbmdVdGlsaXRpZXMuaCBp
biBIZWFkZXJzICovLAorCQkJCTQ2ODkzQjg0MjdFOEQ3NEMwMDJDQzEzRCAvKiBQYXJ0aXRpb25l
ZFNlY3VyaXR5T3JpZ2luLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RDQTEyNTFGMTJEMDAz
RUYyNjkgLyogUGFzc3dvcmRJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTRCMjcwOEM3
MEFGMTlFRTQwMDY1MTI3RiAvKiBQYXN0ZWJvYXJkLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDBE
QUFFQzI1RDlGMjVFMDAxMUI0RkEgLyogUGFzdGVib2FyZENvbnRleHQuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Jyb2FkY2FzdENoYW5uZWwuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0Jyb2FkY2FzdENoYW5uZWwuY3BwCmluZGV4IDJiNmVhYjNhNWNk
ZDUwNzA5YjUwZWM0YjcyNDllMTAxMDdiYzliMzAuLmI4NGI3NGU5NjJiMTg4NTM2MTk4YjNiMWJm
ZTJjMjgwNmY2ODVkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ccm9hZGNhc3RD
aGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQnJvYWRjYXN0Q2hhbm5lbC5jcHAK
QEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiTWVz
c2FnZUV2ZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBhcnRpdGlvbmVkU2Vj
dXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCkBA
IC04Niw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgV2Vha1B0cjxCcm9hZGNhc3RDaGFubmVsPiBt
X2Jyb2FkY2FzdENoYW5uZWw7CiAgICAgY29uc3QgQnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXIg
bV9pZGVudGlmaWVyOwogICAgIGNvbnN0IFN0cmluZyBtX25hbWU7IC8vIE1haW4gdGhyZWFkIG9u
bHkuCi0gICAgQ2xpZW50T3JpZ2luIG1fb3JpZ2luOyAvLyBNYWluIHRocmVhZCBvbmx5LgorICAg
IHN0ZDo6b3B0aW9uYWw8UGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbj4gbV9vcmlnaW47IC8vIE1h
aW4gdGhyZWFkIG9ubHkuCiB9OwogCiBCcm9hZGNhc3RDaGFubmVsOjpNYWluVGhyZWFkQnJpZGdl
OjpNYWluVGhyZWFkQnJpZGdlKEJyb2FkY2FzdENoYW5uZWwmIGNoYW5uZWwsIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKQEAgLTEyMCw5ICsxMjEsOSBAQCB2b2lkIEJyb2FkY2FzdENoYW5uZWw6Ok1haW5U
aHJlYWRCcmlkZ2U6OmVuc3VyZU9uTWFpblRocmVhZChGdW5jdGlvbjx2b2lkKERvY3VtZQogdm9p
ZCBCcm9hZGNhc3RDaGFubmVsOjpNYWluVGhyZWFkQnJpZGdlOjpyZWdpc3RlckNoYW5uZWwoKQog
ewogICAgIGVuc3VyZU9uTWFpblRocmVhZChbdGhpcywgY29udGV4dElkZW50aWZpZXIgPSBtX2Jy
b2FkY2FzdENoYW5uZWwtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aWRlbnRpZmllcigpXShh
dXRvJiBkb2N1bWVudCkgewotICAgICAgICBtX29yaWdpbiA9IHsgc2hvdWxkUGFydGl0aW9uT3Jp
Z2luKGRvY3VtZW50KSA/IGRvY3VtZW50LnRvcE9yaWdpbigpLmRhdGEoKSA6IGRvY3VtZW50LnNl
Y3VyaXR5T3JpZ2luKCkuZGF0YSgpLCBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSB9
OworICAgICAgICBtX29yaWdpbiA9IFBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4geyBzaG91bGRQ
YXJ0aXRpb25PcmlnaW4oZG9jdW1lbnQpID8gZG9jdW1lbnQudG9wT3JpZ2luKCkgOiBkb2N1bWVu
dC5zZWN1cml0eU9yaWdpbigpLCBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpIH07CiAgICAgICAg
IGlmIChhdXRvKiBwYWdlID0gZG9jdW1lbnQucGFnZSgpKQotICAgICAgICAgICAgcGFnZS0+YnJv
YWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5KCkucmVnaXN0ZXJDaGFubmVsKG1fb3JpZ2luLCBtX25hbWUs
IG1faWRlbnRpZmllcik7CisgICAgICAgICAgICBwYWdlLT5icm9hZGNhc3RDaGFubmVsUmVnaXN0
cnkoKS5yZWdpc3RlckNoYW5uZWwoKm1fb3JpZ2luLCBtX25hbWUsIG1faWRlbnRpZmllcik7CiAg
ICAgICAgIGNoYW5uZWxUb0NvbnRleHRJZGVudGlmaWVyKCkuYWRkKG1faWRlbnRpZmllciwgY29u
dGV4dElkZW50aWZpZXIpOwogICAgIH0pOwogfQpAQCAtMTMxLDcgKzEzMiw3IEBAIHZvaWQgQnJv
YWRjYXN0Q2hhbm5lbDo6TWFpblRocmVhZEJyaWRnZTo6dW5yZWdpc3RlckNoYW5uZWwoKQogewog
ICAgIGVuc3VyZU9uTWFpblRocmVhZChbdGhpc10oYXV0byYgZG9jdW1lbnQpIHsKICAgICAgICAg
aWYgKGF1dG8qIHBhZ2UgPSBkb2N1bWVudC5wYWdlKCkpCi0gICAgICAgICAgICBwYWdlLT5icm9h
ZGNhc3RDaGFubmVsUmVnaXN0cnkoKS51bnJlZ2lzdGVyQ2hhbm5lbChtX29yaWdpbiwgbV9uYW1l
LCBtX2lkZW50aWZpZXIpOworICAgICAgICAgICAgcGFnZS0+YnJvYWRjYXN0Q2hhbm5lbFJlZ2lz
dHJ5KCkudW5yZWdpc3RlckNoYW5uZWwoKm1fb3JpZ2luLCBtX25hbWUsIG1faWRlbnRpZmllcik7
CiAgICAgICAgIGNoYW5uZWxUb0NvbnRleHRJZGVudGlmaWVyKCkucmVtb3ZlKG1faWRlbnRpZmll
cik7CiAgICAgfSk7CiB9CkBAIC0xNDQsNyArMTQ1LDcgQEAgdm9pZCBCcm9hZGNhc3RDaGFubmVs
OjpNYWluVGhyZWFkQnJpZGdlOjpwb3N0TWVzc2FnZShSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiYKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBhdXRvIGJsb2JIYW5kbGVzID0gbWVz
c2FnZS0+YmxvYkhhbmRsZXMoKTsKLSAgICAgICAgcGFnZS0+YnJvYWRjYXN0Q2hhbm5lbFJlZ2lz
dHJ5KCkucG9zdE1lc3NhZ2UobV9vcmlnaW4sIG1fbmFtZSwgbV9pZGVudGlmaWVyLCBXVEZNb3Zl
KG1lc3NhZ2UpLCBbYmxvYkhhbmRsZXMgPSBXVEZNb3ZlKGJsb2JIYW5kbGVzKV0geworICAgICAg
ICBwYWdlLT5icm9hZGNhc3RDaGFubmVsUmVnaXN0cnkoKS5wb3N0TWVzc2FnZSgqbV9vcmlnaW4s
IG1fbmFtZSwgbV9pZGVudGlmaWVyLCBXVEZNb3ZlKG1lc3NhZ2UpLCBbYmxvYkhhbmRsZXMgPSBX
VEZNb3ZlKGJsb2JIYW5kbGVzKV0gewogICAgICAgICAgICAgLy8gS2VlcHMgQmxvYiBkYXRhIGlu
c2lkZSBtZXNzYWdlRGF0YSBhbGl2ZSB1bnRpbCB0aGUgbWVzc2FnZSBoYXMgYmVlbiBkZWxpdmVy
ZWQuCiAgICAgICAgIH0pOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0Jyb2FkY2Fz
dENoYW5uZWxSZWdpc3RyeS5oCmluZGV4IDEwNDIxOGMxMzAwYTFmMWQ2ZGUyYTcwMDU0MjY3NjQx
NmI1NDA5OTQuLjkzNTg0NWEzODVhMmNjMGQzMzZkM2JmMzkwNjUzZjBlZTZlNzg4ZDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ccm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmgKQEAgLTMxLDE1
ICszMSwxNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0cnVjdCBQYXJ0aXRpb25lZFNl
Y3VyaXR5T3JpZ2luOwogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwotc3RydWN0IENsaWVu
dE9yaWdpbjsKIAogY2xhc3MgQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5IDogcHVibGljIFJlZkNv
dW50ZWQ8QnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+
QnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5KCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVy
Q2hhbm5lbChjb25zdCBDbGllbnRPcmlnaW4mLCBjb25zdCBTdHJpbmcmIG5hbWUsIEJyb2FkY2Fz
dENoYW5uZWxJZGVudGlmaWVyKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJDaGFu
bmVsKGNvbnN0IENsaWVudE9yaWdpbiYsIGNvbnN0IFN0cmluZyYgbmFtZSwgQnJvYWRjYXN0Q2hh
bm5lbElkZW50aWZpZXIpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2UoY29uc3Qg
Q2xpZW50T3JpZ2luJiwgY29uc3QgU3RyaW5nJiBuYW1lLCBCcm9hZGNhc3RDaGFubmVsSWRlbnRp
ZmllciBzb3VyY2UsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNoYW5uZWwoY29u
c3QgUGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFN0cmluZyYgbmFtZSwgQnJvYWRj
YXN0Q2hhbm5lbElkZW50aWZpZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlckNo
YW5uZWwoY29uc3QgUGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgQnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9z
dE1lc3NhZ2UoY29uc3QgUGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFN0cmluZyYg
bmFtZSwgQnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXIgc291cmNlLCBSZWY8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpID0gMDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAK
aW5kZXggNzdmMWE5M2M2NTY1YmEzZDA3Y2MwMzJlOGZlYzQ4NTBmYTA3ZDQwMS4uMjg0ZDBlY2Ji
ZTUzNTVjNThjNjZkYjYzZWYwYWYyYTg0ZTliMmZlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5jcHAKQEAgLTExODgsOSArMTE4OCw5IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgRW1wdHlCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkoKSA9IGRlZmF1bHQ7CiAKLSAgICB2b2lk
IHJlZ2lzdGVyQ2hhbm5lbChjb25zdCBDbGllbnRPcmlnaW4mLCBjb25zdCBTdHJpbmcmLCBCcm9h
ZGNhc3RDaGFubmVsSWRlbnRpZmllcikgZmluYWwgeyB9Ci0gICAgdm9pZCB1bnJlZ2lzdGVyQ2hh
bm5lbChjb25zdCBDbGllbnRPcmlnaW4mLCBjb25zdCBTdHJpbmcmLCBCcm9hZGNhc3RDaGFubmVs
SWRlbnRpZmllcikgZmluYWwgeyB9Ci0gICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBDbGllbnRP
cmlnaW4mLCBjb25zdCBTdHJpbmcmLCBCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllciwgUmVmPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5h
bCB7IH0KKyAgICB2b2lkIHJlZ2lzdGVyQ2hhbm5lbChjb25zdCBQYXJ0aXRpb25lZFNlY3VyaXR5
T3JpZ2luJiwgY29uc3QgU3RyaW5nJiwgQnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXIpIGZpbmFs
IHsgfQorICAgIHZvaWQgdW5yZWdpc3RlckNoYW5uZWwoY29uc3QgUGFydGl0aW9uZWRTZWN1cml0
eU9yaWdpbiYsIGNvbnN0IFN0cmluZyYsIEJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyKSBmaW5h
bCB7IH0KKyAgICB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFBhcnRpdGlvbmVkU2VjdXJpdHlPcmln
aW4mLCBjb25zdCBTdHJpbmcmLCBCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllciwgUmVmPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbCB7
IH0KIH07CiAKIGNsYXNzIEVtcHR5V2ViTG9ja1JlZ2lzdHJ5IGZpbmFsIDogcHVibGljIFdlYkxv
Y2tSZWdpc3RyeSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhcnRpdGlvbmVk
U2VjdXJpdHlPcmlnaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFydGl0aW9uZWRTZWN1cml0
eU9yaWdpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxNThhZDM4ZGViMDIwMjVmYjc4OTVlZjU2MDdkZTBmNjNj
OGFkMDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhcnRpdGlvbmVk
U2VjdXJpdHlPcmlnaW4uaApAQCAtMCwwICsxLDEwMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlIDx3dGYvSGFzaFRy
YWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4g
eworICAgIFBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4oUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRv
cE9yaWdpbiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIGNsaWVudE9yaWdpbikKKyAgICAgICAgOiB0
b3BPcmlnaW4oV1RGTW92ZSh0b3BPcmlnaW4pKQorICAgICAgICAsIGNsaWVudE9yaWdpbihXVEZN
b3ZlKGNsaWVudE9yaWdpbikpCisgICAgeyB9CisKKyAgICBQYXJ0aXRpb25lZFNlY3VyaXR5T3Jp
Z2luKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKKyAgICAgICAgOiB0b3BPcmlnaW4o
V1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpCisgICAgICAgICwgY2xpZW50T3JpZ2luKFdURjo6
SGFzaFRhYmxlRGVsZXRlZFZhbHVlKQorICAgIHsgfQorCisgICAgUGFydGl0aW9uZWRTZWN1cml0
eU9yaWdpbihXVEY6Okhhc2hUYWJsZUVtcHR5VmFsdWVUeXBlKQorICAgICAgICA6IHRvcE9yaWdp
bihXVEY6Okhhc2hUYWJsZUVtcHR5VmFsdWUpCisgICAgICAgICwgY2xpZW50T3JpZ2luKFdURjo6
SGFzaFRhYmxlRW1wdHlWYWx1ZSkKKyAgICB7IH0KKworICAgIGJvb2wgaXNIYXNoVGFibGVEZWxl
dGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiB0b3BPcmlnaW4uaXNIYXNoVGFibGVEZWxldGVkVmFs
dWUoKTsgfQorICAgIGJvb2wgaXNIYXNoVGFibGVFbXB0eVZhbHVlKCkgY29uc3QgeyByZXR1cm4g
dG9wT3JpZ2luLmlzSGFzaFRhYmxlRW1wdHlWYWx1ZSgpOyB9CisKKyAgICBSZWY8U2VjdXJpdHlP
cmlnaW4+IHRvcE9yaWdpbjsKKyAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IGNsaWVudE9yaWdpbjsK
K307CisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUGFydGl0aW9uZWRTZWN1cml0eU9y
aWdpbiYgYSwgY29uc3QgUGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbiYgYikKK3sKKyAgICByZXR1
cm4gYS50b3BPcmlnaW4tPmlzU2FtZU9yaWdpbkFzKGIudG9wT3JpZ2luKSAmJiBhLmNsaWVudE9y
aWdpbi0+aXNTYW1lT3JpZ2luQXMoYi5jbGllbnRPcmlnaW4pOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgeworCitpbmxpbmUgdm9pZCBhZGQoSGFzaGVyJiBo
YXNoZXIsIGNvbnN0IFdlYkNvcmU6OlBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikK
K3sKKyAgICBhZGQoaGFzaGVyLCBvcmlnaW4udG9wT3JpZ2luLmdldCgpLCBvcmlnaW4uY2xpZW50
T3JpZ2luLmdldCgpKTsKK30KKworc3RydWN0IFBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW5IYXNo
IHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBXZWJDb3JlOjpQYXJ0aXRpb25lZFNl
Y3VyaXR5T3JpZ2luJiBvcmlnaW4pIHsgcmV0dXJuIGNvbXB1dGVIYXNoKG9yaWdpbik7IH0KKyAg
ICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBXZWJDb3JlOjpQYXJ0aXRpb25lZFNlY3VyaXR5T3Jp
Z2luJiBhLCBjb25zdCBXZWJDb3JlOjpQYXJ0aXRpb25lZFNlY3VyaXR5T3JpZ2luJiBiKSB7IHJl
dHVybiBhID09IGI7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgc2FmZVRvQ29tcGFyZVRv
RW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRI
YXNoPFdlYkNvcmU6OlBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4+IDogUGFydGl0aW9uZWRTZWN1
cml0eU9yaWdpbkhhc2ggeyB9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNv
cmU6OlBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPFdl
YkNvcmU6OlBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4+IHsKKyAgICBzdGF0aWMgY29uc3RleHBy
IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IHRydWU7CisgICAgc3RhdGljIFdlYkNvcmU6OlBhcnRp
dGlvbmVkU2VjdXJpdHlPcmlnaW4gZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIEhhc2hUYWJsZUVtcHR5
VmFsdWU7IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZT4KKyAgICBzdGF0aWMgdm9pZCBjb25z
dHJ1Y3RFbXB0eVZhbHVlKFdlYkNvcmU6OlBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4mIHNsb3Qp
CisgICAgeworICAgICAgICBuZXcgKE5vdE51bGwsIHN0ZDo6YWRkcmVzc29mKHNsb3QpKSBXZWJD
b3JlOjpQYXJ0aXRpb25lZFNlY3VyaXR5T3JpZ2luKEhhc2hUYWJsZUVtcHR5VmFsdWUpOworICAg
IH0KKworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNJc0VtcHR5VmFsdWVGdW5jdGlvbiA9
IHRydWU7CisgICAgc3RhdGljIGJvb2wgaXNFbXB0eVZhbHVlKGNvbnN0IFdlYkNvcmU6OlBhcnRp
dGlvbmVkU2VjdXJpdHlPcmlnaW4mIHZhbHVlKSB7IHJldHVybiB2YWx1ZS5pc0hhc2hUYWJsZUVt
cHR5VmFsdWUoKTsgfQorCisgICAgdXNpbmcgUGVla1R5cGUgPSBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4+OworICAgIHN0YXRpYyBQZWVrVHlwZSBwZWVr
KGNvbnN0IFdlYkNvcmU6OlBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4mIHZhbHVlKSB7IHJldHVy
biBpc0VtcHR5VmFsdWUodmFsdWUpID8gc3RkOjpudWxsb3B0IDogc3RkOjpvcHRpb25hbCB7IHZh
bHVlIH07IH0KKworICAgIHVzaW5nIFRha2VUeXBlID0gc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQ
YXJ0aXRpb25lZFNlY3VyaXR5T3JpZ2luPjsKKyAgICBzdGF0aWMgVGFrZVR5cGUgdGFrZShXZWJD
b3JlOjpQYXJ0aXRpb25lZFNlY3VyaXR5T3JpZ2luJiYgdmFsdWUpIHsgcmV0dXJuIGlzRW1wdHlW
YWx1ZSh2YWx1ZSkgPyBzdGQ6Om51bGxvcHQgOiBzdGQ6Om9wdGlvbmFsIHsgV1RGTW92ZSh2YWx1
ZSkgfTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lz
dHJ5LmNwcAppbmRleCA2OWE5NzY5MDc3MGFjNDEwYTI5YjcxOTUyOGU2MjViNWE5NDUwMjBhLi5k
OTMxOTQ5MDM0OGZjYmEzMmI3ZDQ0ZWVkZjliZjQyNzIxMDE3NzRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Jyb2FkY2FzdENo
YW5uZWxSZWdpc3RyeS5jcHAKQEAgLTI2LDE2ICsyNiwzOCBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIk5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCIKIAorI2luY2x1
ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkJyb2FkY2Fz
dENoYW5uZWxSZWdpc3RyeU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9NZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0cy5oPgogI2luY2x1ZGUgPHd0Zi9DYWxsYmFja0FnZ3JlZ2F0b3IuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLU5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6Ok5l
dHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkoKSA9IGRlZmF1bHQ7CisjZGVmaW5lIFJFR0lT
VFJZX01FU1NBR0VfQ0hFQ0soYXNzZXJ0aW9uKSBSRUdJU1RSWV9NRVNTQUdFX0NIRUNLX0NPTVBM
RVRJT04oYXNzZXJ0aW9uLCAodm9pZCkwKQorI2RlZmluZSBSRUdJU1RSWV9NRVNTQUdFX0NIRUNL
X0NPTVBMRVRJT04oYXNzZXJ0aW9uLCBjb21wbGV0aW9uKSBkbyB7IFwKKyAgICBBU1NFUlQoYXNz
ZXJ0aW9uKTsgXAorICAgIGlmIChVTkxJS0VMWSghKGFzc2VydGlvbikpKSB7IFwKKyAgICAgICAg
aWYgKGF1dG8gd2ViUHJvY2Vzc0lkZW50aWZpZXIgPSBtX25ldHdvcmtQcm9jZXNzLndlYlByb2Nl
c3NJZGVudGlmaWVyRm9yQ29ubmVjdGlvbihjb25uZWN0aW9uKSkgXAorICAgICAgICAgICAgbV9u
ZXR3b3JrUHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpUZXJtaW5hdGVXZWJQcm9jZXNzKHdlYlByb2Nlc3NJZGVudGlm
aWVyKSwgMCk7IFwKKyAgICAgICAgeyBjb21wbGV0aW9uOyB9IFwKKyAgICAgICAgcmV0dXJuOyBc
CisgICAgfSBcCit9IHdoaWxlICgwKQorCitzdGF0aWMgYm9vbCBpc1ZhbGlkQ2xpZW50T3JpZ2lu
KGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgY2xpZW50T3JpZ2luKQoreworICAgIHJldHVy
biAhY2xpZW50T3JpZ2luLnRvcE9yaWdpbi5pc0VtcHR5KCkgJiYgIWNsaWVudE9yaWdpbi5jbGll
bnRPcmlnaW4uaXNFbXB0eSgpOworfQorCitOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5
OjpOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5KE5ldHdvcmtQcm9jZXNzJiBuZXR3b3Jr
UHJvY2VzcykKKyAgICA6IG1fbmV0d29ya1Byb2Nlc3MobmV0d29ya1Byb2Nlc3MpCit7Cit9CiAK
IHZvaWQgTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6cmVnaXN0ZXJDaGFubmVsKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBv
cmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKKyAgICBSRUdJU1RSWV9NRVNTQUdFX0NIRUNL
KGlzVmFsaWRDbGllbnRPcmlnaW4ob3JpZ2luKSk7CisKICAgICBhdXRvJiBjaGFubmVsc0Zvck9y
aWdpbiA9IG1fYnJvYWRjYXN0Q2hhbm5lbHMuZW5zdXJlKG9yaWdpbiwgW10geyByZXR1cm4gTmFt
ZVRvQ29ubmVjdGlvbklkZW50aWZpZXJzTWFwIHsgfTsgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAg
IGF1dG8mIGNvbm5lY3Rpb25JZGVudGlmaWVyc0Zvck5hbWUgPSBjaGFubmVsc0Zvck9yaWdpbi5l
bnN1cmUobmFtZSwgW10geyByZXR1cm4gVmVjdG9yPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQ+
IHsgfTsgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIEFTU0VSVCghY29ubmVjdGlvbklkZW50aWZp
ZXJzRm9yTmFtZS5jb250YWlucyhjb25uZWN0aW9uLnVuaXF1ZUlEKCkpKTsKQEAgLTQ0LDYgKzY2
LDggQEAgdm9pZCBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5OjpyZWdpc3RlckNoYW5u
ZWwoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW8KIAogdm9pZCBOZXR3b3JrQnJvYWRjYXN0Q2hh
bm5lbFJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQ2hhbm5lbChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5h
bWUpCiB7CisgICAgUkVHSVNUUllfTUVTU0FHRV9DSEVDSyhpc1ZhbGlkQ2xpZW50T3JpZ2luKG9y
aWdpbikpOworCiAgICAgYXV0byBjaGFubmVsc0Zvck9yaWdpbkl0ZXJhdG9yID0gbV9icm9hZGNh
c3RDaGFubmVscy5maW5kKG9yaWdpbik7CiAgICAgQVNTRVJUKGNoYW5uZWxzRm9yT3JpZ2luSXRl
cmF0b3IgIT0gbV9icm9hZGNhc3RDaGFubmVscy5lbmQoKSk7CiAgICAgaWYgKGNoYW5uZWxzRm9y
T3JpZ2luSXRlcmF0b3IgPT0gbV9icm9hZGNhc3RDaGFubmVscy5lbmQoKSkKQEAgLTU5LDYgKzgz
LDggQEAgdm9pZCBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQ2hh
bm5lbChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3QKIAogdm9pZCBOZXR3b3JrQnJvYWRjYXN0Q2hh
bm5lbFJlZ2lzdHJ5Ojpwb3N0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNv
bnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdl
YkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogeworICAgIFJFR0lTVFJZX01FU1NBR0Vf
Q0hFQ0tfQ09NUExFVElPTihpc1ZhbGlkQ2xpZW50T3JpZ2luKG9yaWdpbiksIGNvbXBsZXRpb25I
YW5kbGVyKCkpOworCiAgICAgYXV0byBjaGFubmVsc0Zvck9yaWdpbkl0ZXJhdG9yID0gbV9icm9h
ZGNhc3RDaGFubmVscy5maW5kKG9yaWdpbik7CiAgICAgQVNTRVJUKGNoYW5uZWxzRm9yT3JpZ2lu
SXRlcmF0b3IgIT0gbV9icm9hZGNhc3RDaGFubmVscy5lbmQoKSk7CiAgICAgaWYgKGNoYW5uZWxz
Rm9yT3JpZ2luSXRlcmF0b3IgPT0gbV9icm9hZGNhc3RDaGFubmVscy5lbmQoKSkKQEAgLTEwMSw0
ICsxMjcsNyBAQCB2b2lkIE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6OnJlbW92ZUNv
bm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aQogICAgICAgICBtX2Jyb2FkY2FzdENo
YW5uZWxzLnJlbW92ZShvcmlnaW5Ub1JlbW92ZSk7CiB9CiAKKyN1bmRlZiBSRUdJU1RSWV9NRVNT
QUdFX0NIRUNLCisjdW5kZWYgUkVHSVNUUllfTUVTU0FHRV9DSEVDS19DT01QTEVUSU9OCisKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaAppbmRleCAzZjlh
ZWQyMGJhYjZiYzAyODEwODU1NjQ5YmE3YTdmMGYyZWRmNDFkLi43MTE0YmNiYmRiYzZiYzIwYTVm
NjAzYjFjNTZhMjQzYWI0OGYwZjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaApAQCAt
MzYsMTAgKzM2LDEyIEBAIHN0cnVjdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0czsKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKK2NsYXNzIE5ldHdvcmtQcm9jZXNzOworCiBjbGFzcyBOZXR3b3JrQnJv
YWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKLSAgICBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5KCk7CisgICAgZXhwbGlj
aXQgTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeShOZXR3b3JrUHJvY2VzcyYpOwogCiAg
ICAgdm9pZCByZW1vdmVDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiYpOwogCkBAIC01MCw2ICs1
Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBvc3RNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIGNv
bnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6
TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
IAogcHJpdmF0ZToKKyAgICBOZXR3b3JrUHJvY2VzcyYgbV9uZXR3b3JrUHJvY2VzczsKICAgICB1
c2luZyBOYW1lVG9Db25uZWN0aW9uSWRlbnRpZmllcnNNYXAgPSBIYXNoTWFwPFN0cmluZywgVmVj
dG9yPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQ+PjsKICAgICBIYXNoTWFwPFdlYkNvcmU6OkNs
aWVudE9yaWdpbiwgTmFtZVRvQ29ubmVjdGlvbklkZW50aWZpZXJzTWFwPiBtX2Jyb2FkY2FzdENo
YW5uZWxzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAKaW5kZXggZWIyZjViYmJkZmE2ZTMxYTU5MDBjYWM3ZjJhMzBiNTc2ZTU1MGNmZi4u
ODM0ZDE5YTViNjNkMGU1M2E4YmYyMzcyYTk1MzFjNGExY2VmNjhmMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTI1NTIsNiArMjU1
MiwxNSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjb25uZWN0aW9uVG9XZWJQcm9jZXNzQ2xvc2Vk
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUAogICAgICAgICBzZXNzaW9uLT5zdG9yYWdl
TWFuYWdlcigpLnN0b3BSZWNlaXZpbmdNZXNzYWdlRnJvbUNvbm5lY3Rpb24oY29ubmVjdGlvbik7
CiB9CiAKK1dlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIE5ldHdvcmtQcm9jZXNzOjp3ZWJQcm9j
ZXNzSWRlbnRpZmllckZvckNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKSBj
b25zdAoreworICAgIGZvciAoYXV0byYgW3Byb2Nlc3NJZGVudGlmaWVyLCB3ZWJDb25uZWN0aW9u
XSA6IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zKSB7CisgICAgICAgIGlmICgmd2ViQ29ubmVjdGlv
bi0+Y29ubmVjdGlvbigpID09ICZjb25uZWN0aW9uKQorICAgICAgICAgICAgcmV0dXJuIHByb2Nl
c3NJZGVudGlmaWVyOworICAgIH0KKyAgICByZXR1cm4geyB9OworfQorCiBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyogTmV0d29ya1Byb2Nlc3M6OndlYlByb2Nlc3NDb25uZWN0aW9uKFBy
b2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fd2ViUHJv
Y2Vzc0Nvbm5lY3Rpb25zLmdldChpZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCBmNzcwNDVlNWFmOGU0MzcyMTYyYTUxNjdj
YWZjMDA4NGQzMDllODg5Li5kOTM1ZjQ2Y2NjOTljYTg2Nzg0ZjVmMTRlODBkZDcwYjUwMzgzYjI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBA
IC0zMzIsNiArMzMyLDcgQEAgcHVibGljOgogICAgIGNvbnN0IE9wdGlvblNldDxOZXR3b3JrQ2Fj
aGU6OkNhY2hlT3B0aW9uPiYgY2FjaGVPcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZU9w
dGlvbnM7IH0KIAogICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiB3ZWJQcm9jZXNz
Q29ubmVjdGlvbihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcikgY29uc3Q7CisgICAgV2ViQ29y
ZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXJGb3JDb25uZWN0aW9uKElQ
Qzo6Q29ubmVjdGlvbiYpIGNvbnN0OwogICAgIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFJl
Z2lzdHJ5JiBtZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeSgpIHsgcmV0dXJuIG1fbWVzc2FnZVBv
cnRDaGFubmVsUmVnaXN0cnk7IH0KIAogICAgIHZvaWQgc2V0U2VydmljZVdvcmtlckZldGNoVGlt
ZW91dEZvclRlc3RpbmcoU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXgg
NGQwOWMzYmI0MjljNGMwZjM0NDhjOTk2ZGVhOTkxZGM0ZjgyZjY4OS4uZTgwZTI2MWZiMDIyZWJl
NTM2YzgwOTlhNDQ5MGYxMzQ4OWI0MjNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCBOZXR3b3JrU2Vz
c2lvbjo6TmV0d29ya1Nlc3Npb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBjb25z
dCBOZXR3b3JrU2VzcwogI2VuZGlmCiAgICAgLCBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50KG1h
bmFnZXJPclByb3h5KCp0aGlzLCBuZXR3b3JrUHJvY2VzcywgcGFyYW1ldGVycykpCiAgICAgLCBt
X3ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdNb2RlRW5hYmxlZChwYXJhbWV0ZXJzLmVuYWJs
ZVByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdNb2RlKQotICAgICwgbV9icm9hZGNhc3RDaGFu
bmVsUmVnaXN0cnkobWFrZVVuaXF1ZVJlZjxOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5
PigpKQorICAgICwgbV9icm9hZGNhc3RDaGFubmVsUmVnaXN0cnkobWFrZVVuaXF1ZVJlZjxOZXR3
b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5PihuZXR3b3JrUHJvY2VzcykpCiAgICAgLCBtX3Rl
c3RTcGVlZE11bHRpcGxpZXIocGFyYW1ldGVycy50ZXN0U3BlZWRNdWx0aXBsaWVyKQogICAgICwg
bV9hbGxvd3NTZXJ2ZXJQcmVjb25uZWN0KHBhcmFtZXRlcnMuYWxsb3dzU2VydmVyUHJlY29ubmVj
dCkKICAgICAsIG1fc2hvdWxkUnVuU2VydmljZVdvcmtlcnNPbk1haW5UaHJlYWRGb3JUZXN0aW5n
KHBhcmFtZXRlcnMuc2hvdWxkUnVuU2VydmljZVdvcmtlcnNPbk1haW5UaHJlYWRGb3JUZXN0aW5n
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmNwcAppbmRleCA3Y2E0
YmY4MTk1YWQwOWZkZjQyYTU4MjIwNmZkYmE1NDNkMzUyNDUzLi5hZmIwYTBjYWVjYTFmNWVmYWNj
YTlhZTMxNmVlYjIyZThjMTJiMWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQnJvYWRjYXN0Q2hhbm5l
bFJlZ2lzdHJ5LmNwcApAQCAtNDAsMTcgKzQwLDMwIEBAIHN0YXRpYyBpbmxpbmUgSVBDOjpDb25u
ZWN0aW9uJiBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKQogICAgIHJldHVybiBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCk7CiB9CiAKLXZvaWQgV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5OjpyZWdpc3RlckNoYW5u
ZWwoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFt
ZSwgV2ViQ29yZTo6QnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXIgaWRlbnRpZmllcikKKy8vIFVu
aXF1ZSBvcmlnaW5zIGFyZSBvbmx5IHN0b3JlZCBpbiBwcm9jZXNzIGluIG1fY2hhbm5lbHNQZXJP
cmlnaW4gYW5kIG5ldmVyIHNlbnQgdG8gdGhlIE5ldHdvcmtQcm9jZXNzIGFzIGEgQ2xpZW50T3Jp
Z2luLgorLy8gVGhlIGlkZW50aXR5IG9mIHVuaXF1ZSBvcmlnaW5zIHdvdWxkbid0IGJlIHByZXNl
cnZlZCB3aGVuIHNlcmlhbGl6aW5nIHRoZW0gYXMgYSBTZWN1cml0eU9yaWdpbkRhdGEgKHZpYSBD
bGllbnRPcmlnaW4pLgorLy8gU2luY2UgQnJvYWRjYXN0Q2hhbm5lbHMgZnJvbSBhIHVuaXF1ZSBv
cmlnaW4gY2FuIG9ubHkgY29tbXVuaWNhdGUgd2l0aCBvdGhlciBCcm9hZGNhc3RDaGFubmVscyBm
cm9tIHRoZSBzYW1lIHVuaXF1ZSBvcmlnaW4sCisvLyB0aGUgZGVzdGluYXRpb24gY2hhbm5lbHMg
aGF2ZSB0byBiZSB3aXRoaW4gdGhlIHNhbWUgV2ViUHJvY2VzcyBhbnl3YXkuCitzdGF0aWMgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpDbGllbnRPcmlnaW4+IHRvQ2xpZW50T3JpZ2luKGNvbnN0IFdl
YkNvcmU6OlBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKK3sKKyAgICBpZiAob3Jp
Z2luLnRvcE9yaWdpbi0+aXNVbmlxdWUoKSB8fCBvcmlnaW4uY2xpZW50T3JpZ2luLT5pc1VuaXF1
ZSgpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHJldHVybiBXZWJDb3JlOjpD
bGllbnRPcmlnaW4geyBvcmlnaW4udG9wT3JpZ2luLT5kYXRhKCksIG9yaWdpbi5jbGllbnRPcmln
aW4tPmRhdGEoKSB9OworfQorCit2b2lkIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6cmVn
aXN0ZXJDaGFubmVsKGNvbnN0IFdlYkNvcmU6OlBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4mIG9y
aWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsSWRlbnRp
ZmllciBpZGVudGlmaWVyKQogewogICAgIGF1dG8mIGNoYW5uZWxzRm9yT3JpZ2luID0gbV9jaGFu
bmVsc1Blck9yaWdpbi5lbnN1cmUob3JpZ2luLCBbXSB7IHJldHVybiBIYXNoTWFwPFN0cmluZywg
VmVjdG9yPFdlYkNvcmU6OkJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyPj4geyB9OyB9KS5pdGVy
YXRvci0+dmFsdWU7CiAgICAgYXV0byYgY2hhbm5lbHNGb3JOYW1lID0gY2hhbm5lbHNGb3JPcmln
aW4uZW5zdXJlKG5hbWUsIFtdIHsgcmV0dXJuIFZlY3RvcjxXZWJDb3JlOjpCcm9hZGNhc3RDaGFu
bmVsSWRlbnRpZmllcj4geyB9OyB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgY2hhbm5lbHNGb3JO
YW1lLmFwcGVuZChpZGVudGlmaWVyKTsKIAotICAgIGlmIChjaGFubmVsc0Zvck5hbWUuc2l6ZSgp
ID09IDEpCi0gICAgICAgIG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6OlJlZ2lzdGVyQ2hhbm5lbCB7IG9yaWdp
biwgbmFtZSB9LCAwKTsKKyAgICBpZiAoY2hhbm5lbHNGb3JOYW1lLnNpemUoKSA9PSAxKSB7Cisg
ICAgICAgIGlmIChhdXRvIGNsaWVudE9yaWdpbiA9IHRvQ2xpZW50T3JpZ2luKG9yaWdpbikpCisg
ICAgICAgICAgICBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5OjpSZWdpc3RlckNoYW5uZWwgeyAqY2xpZW50T3Jp
Z2luLCBuYW1lIH0sIDApOworICAgIH0KIH0KIAotdm9pZCBXZWJCcm9hZGNhc3RDaGFubmVsUmVn
aXN0cnk6OnVucmVnaXN0ZXJDaGFubmVsKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3Jp
Z2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkJyb2FkY2FzdENoYW5uZWxJZGVudGlm
aWVyIGlkZW50aWZpZXIpCit2b2lkIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6dW5yZWdp
c3RlckNoYW5uZWwoY29uc3QgV2ViQ29yZTo6UGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbiYgb3Jp
Z2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkJyb2FkY2FzdENoYW5uZWxJZGVudGlm
aWVyIGlkZW50aWZpZXIpCiB7CiAgICAgYXV0byBjaGFubmVsc1Blck9yaWdpbkl0ZXJhdG9yID0g
bV9jaGFubmVsc1Blck9yaWdpbi5maW5kKG9yaWdpbik7CiAgICAgaWYgKGNoYW5uZWxzUGVyT3Jp
Z2luSXRlcmF0b3IgPT0gbV9jaGFubmVsc1Blck9yaWdpbi5lbmQoKSkKQEAgLTY4LDIwICs4MSwy
MiBAQCB2b2lkIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6dW5yZWdpc3RlckNoYW5uZWwo
Y29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJgogICAgICAgICByZXR1cm47CiAKICAgICBjaGFu
bmVsc0Zvck9yaWdpbi5yZW1vdmUoY2hhbm5lbHNGb3JPcmlnaW5JdGVyYXRvcik7Ci0gICAgbmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Jyb2FkY2FzdENo
YW5uZWxSZWdpc3RyeTo6VW5yZWdpc3RlckNoYW5uZWwgeyBvcmlnaW4sIG5hbWUgfSwgMCk7Cisg
ICAgaWYgKGF1dG8gY2xpZW50T3JpZ2luID0gdG9DbGllbnRPcmlnaW4ob3JpZ2luKSkKKyAgICAg
ICAgbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Jyb2Fk
Y2FzdENoYW5uZWxSZWdpc3RyeTo6VW5yZWdpc3RlckNoYW5uZWwgeyAqY2xpZW50T3JpZ2luLCBu
YW1lIH0sIDApOwogCiAgICAgaWYgKGNoYW5uZWxzRm9yT3JpZ2luLmlzRW1wdHkoKSkKICAgICAg
ICAgbV9jaGFubmVsc1Blck9yaWdpbi5yZW1vdmUoY2hhbm5lbHNQZXJPcmlnaW5JdGVyYXRvcik7
CiB9CiAKLXZvaWQgV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Ojpwb3N0TWVzc2FnZShjb25z
dCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJD
b3JlOjpCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllciBzb3VyY2UsIFJlZjxXZWJDb3JlOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6OnBv
c3RNZXNzYWdlKGNvbnN0IFdlYkNvcmU6OlBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4mIG9yaWdp
biwgY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmll
ciBzb3VyY2UsIFJlZjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1
dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIHBvc3RNZXNzYWdlTG9jYWxseShvcmlnaW4sIG5h
bWUsIHNvdXJjZSwgbWVzc2FnZS5jb3B5UmVmKCksIGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVm
KCkpOwotICAgIG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6TmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6UG9zdE1lc3NhZ2UgeyBv
cmlnaW4sIG5hbWUsIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIHsgV1RGTW92ZSht
ZXNzYWdlKSwgeyB9IH0gfSwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9LCAwKTsKKyAgICBpZiAo
YXV0byBjbGllbnRPcmlnaW4gPSB0b0NsaWVudE9yaWdpbihvcmlnaW4pKQorICAgICAgICBuZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdv
cmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6OlBvc3RNZXNzYWdlIHsgKmNsaWVudE9yaWdpbiwg
bmFtZSwgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMgeyBXVEZNb3ZlKG1lc3NhZ2Up
LCB7IH0gfSB9LCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0sIDApOwogfQogCi12b2lkIFdlYkJy
b2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6cG9zdE1lc3NhZ2VMb2NhbGx5KGNvbnN0IFdlYkNvcmU6
OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6QnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXI+IHNvdXJjZUluUHJvY2VzcywgUmVm
PFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBtZXNzYWdlLCBSZWY8V1RGOjpDYWxs
YmFja0FnZ3JlZ2F0b3I+JiYgY2FsbGJhY2tBZ2dyZWdhdG9yKQordm9pZCBXZWJCcm9hZGNhc3RD
aGFubmVsUmVnaXN0cnk6OnBvc3RNZXNzYWdlTG9jYWxseShjb25zdCBXZWJDb3JlOjpQYXJ0aXRp
b25lZFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllcj4gc291cmNlSW5Qcm9jZXNz
LCBSZWY8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIFJlZjxXVEY6
OkNhbGxiYWNrQWdncmVnYXRvcj4mJiBjYWxsYmFja0FnZ3JlZ2F0b3IpCiB7CiAgICAgYXV0byBj
aGFubmVsc1Blck9yaWdpbkl0ZXJhdG9yID0gbV9jaGFubmVsc1Blck9yaWdpbi5maW5kKG9yaWdp
bik7CiAgICAgaWYgKGNoYW5uZWxzUGVyT3JpZ2luSXRlcmF0b3IgPT0gbV9jaGFubmVsc1Blck9y
aWdpbi5lbmQoKSkKQEAgLTEwMCwxNyArMTE1LDIxIEBAIHZvaWQgV2ViQnJvYWRjYXN0Q2hhbm5l
bFJlZ2lzdHJ5Ojpwb3N0TWVzc2FnZUxvY2FsbHkoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
CiAgICAgfQogfQogCi12b2lkIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6cG9zdE1lc3Nh
Z2VUb1JlbW90ZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViQnJv
YWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Ojpwb3N0TWVzc2FnZVRvUmVtb3RlKGNvbnN0IFdlYkNvcmU6
OkNsaWVudE9yaWdpbiYgY2xpZW50T3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6
Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9y
ID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworICAgIFdlYkNvcmU6OlBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4gb3JpZ2luIHsgY2xpZW50
T3JpZ2luLnRvcE9yaWdpbi5zZWN1cml0eU9yaWdpbigpLCBjbGllbnRPcmlnaW4uY2xpZW50T3Jp
Z2luLnNlY3VyaXR5T3JpZ2luKCkgfTsKICAgICBwb3N0TWVzc2FnZUxvY2FsbHkob3JpZ2luLCBu
YW1lLCBzdGQ6Om51bGxvcHQsICptZXNzYWdlLm1lc3NhZ2UsIGNhbGxiYWNrQWdncmVnYXRvci5j
b3B5UmVmKCkpOwogfQogCiB2b2lkIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6bmV0d29y
a1Byb2Nlc3NDcmFzaGVkKCkKIHsKICAgICBmb3IgKGF1dG8mIFtvcmlnaW4sIGNoYW5uZWxzRm9y
T3JpZ2luXSA6IG1fY2hhbm5lbHNQZXJPcmlnaW4pIHsKKyAgICAgICAgYXV0byBjbGllbnRPcmln
aW4gPSB0b0NsaWVudE9yaWdpbihvcmlnaW4pOworICAgICAgICBpZiAoIWNsaWVudE9yaWdpbikK
KyAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBmb3IgKGF1dG8mIG5hbWUgOiBjaGFubmVs
c0Zvck9yaWdpbi5rZXlzKCkpCi0gICAgICAgICAgICBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5OjpSZWdpc3Rl
ckNoYW5uZWwgeyBvcmlnaW4sIG5hbWUgfSwgMCk7CisgICAgICAgICAgICBuZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lz
dHJ5OjpSZWdpc3RlckNoYW5uZWwgeyAqY2xpZW50T3JpZ2luLCBuYW1lIH0sIDApOwogICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oCmluZGV4IGZiMzk5
NjZjYmFhNTJkNDM4MWI1ZmRmZjlmOTE0NzUwODI3NzZjYTEuLjBiNmIxYWNhNDRhYzJlN2IzMDg5
ZWYzNWY5NWUyMTJmMjY4YjhiMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQnJvYWRjYXN0Q2hhbm5lbFJl
Z2lzdHJ5LmgKQEAgLTI4LDYgKzI4LDggQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9Ccm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0NsaWVudE9yaWdpbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFydGl0aW9uZWRTZWN1cml0
eU9yaWdpbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNDgsOSArNTAs
OSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkJyb2FkY2FzdENo
YW5uZWxSZWdpc3RyeSk7CiAgICAgfQogCi0gICAgdm9pZCByZWdpc3RlckNoYW5uZWwoY29uc3Qg
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpCcm9h
ZGNhc3RDaGFubmVsSWRlbnRpZmllcikgZmluYWw7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyQ2hhbm5l
bChjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNv
cmU6OkJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyKSBmaW5hbDsKLSAgICB2b2lkIHBvc3RNZXNz
YWdlKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIGNvbnN0IFN0cmluZyYgbmFtZSwgV2Vi
Q29yZTo6QnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXIgc291cmNlLCBSZWY8V2ViQ29yZTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFs
OworICAgIHZvaWQgcmVnaXN0ZXJDaGFubmVsKGNvbnN0IFdlYkNvcmU6OlBhcnRpdGlvbmVkU2Vj
dXJpdHlPcmlnaW4mLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkJyb2FkY2FzdENoYW5u
ZWxJZGVudGlmaWVyKSBmaW5hbDsKKyAgICB2b2lkIHVucmVnaXN0ZXJDaGFubmVsKGNvbnN0IFdl
YkNvcmU6OlBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4mLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdl
YkNvcmU6OkJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyKSBmaW5hbDsKKyAgICB2b2lkIHBvc3RN
ZXNzYWdlKGNvbnN0IFdlYkNvcmU6OlBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4mLCBjb25zdCBT
dHJpbmcmIG5hbWUsIFdlYkNvcmU6OkJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyIHNvdXJjZSwg
UmVmPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKSBmaW5hbDsKIAogICAgIHZvaWQgbmV0d29ya1Byb2Nlc3NDcmFzaGVkKCk7CiAK
QEAgLTYwLDkgKzYyLDkgQEAgcHJpdmF0ZToKICAgICBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0
cnkoKSA9IGRlZmF1bHQ7CiAKICAgICB2b2lkIHBvc3RNZXNzYWdlVG9SZW1vdGUoY29uc3QgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luJiwgY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpNZXNzYWdl
V2l0aE1lc3NhZ2VQb3J0cyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZv
aWQgcG9zdE1lc3NhZ2VMb2NhbGx5KGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIGNvbnN0
IFN0cmluZyYgbmFtZSwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsSWRl
bnRpZmllcj4gc291cmNlSW5Qcm9jZXNzLCBSZWY8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiYmLCBSZWY8V1RGOjpDYWxsYmFja0FnZ3JlZ2F0b3I+JiYpOworICAgIHZvaWQgcG9zdE1l
c3NhZ2VMb2NhbGx5KGNvbnN0IFdlYkNvcmU6OlBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4mLCBj
b25zdCBTdHJpbmcmIG5hbWUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QnJvYWRjYXN0Q2hhbm5l
bElkZW50aWZpZXI+IHNvdXJjZUluUHJvY2VzcywgUmVmPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4mJiwgUmVmPFdURjo6Q2FsbGJhY2tBZ2dyZWdhdG9yPiYmKTsKIAotICAgIEhhc2hN
YXA8V2ViQ29yZTo6Q2xpZW50T3JpZ2luLCBIYXNoTWFwPFN0cmluZywgVmVjdG9yPFdlYkNvcmU6
OkJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyPj4+IG1fY2hhbm5lbHNQZXJPcmlnaW47CisgICAg
SGFzaE1hcDxXZWJDb3JlOjpQYXJ0aXRpb25lZFNlY3VyaXR5T3JpZ2luLCBIYXNoTWFwPFN0cmlu
ZywgVmVjdG9yPFdlYkNvcmU6OkJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyPj4+IG1fY2hhbm5l
bHNQZXJPcmlnaW47CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lz
dHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViQnJvYWRjYXN0
Q2hhbm5lbFJlZ2lzdHJ5LmNwcAppbmRleCA2NGM2NGIyY2NjMWE1ZDBiZDc0ZDNjMDRlNjgxOTQ4
NGJmODI4MmU1Li43OWIzZDRlNmM4NGY2MmM4MjMxNmVjZDk3MDJjZWVkMjc0MjU4ZjEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYkJyb2FkY2FzdENo
YW5uZWxSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9y
dC9XZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuY3BwCkBAIC00NCw3ICs0NCw3IEBAIFJlZjxX
ZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk+IFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6
Z2V0T3JDcmVhdGUoYm9vbCBwCiAgICAgcmV0dXJuIHJlZ2lzdHJ5OwogfQogCi12b2lkIFdlYkJy
b2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6cmVnaXN0ZXJDaGFubmVsKGNvbnN0IFdlYkNvcmU6OkNs
aWVudE9yaWdpbiYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkJyb2FkY2Fz
dENoYW5uZWxJZGVudGlmaWVyIGlkZW50aWZpZXIpCit2b2lkIFdlYkJyb2FkY2FzdENoYW5uZWxS
ZWdpc3RyeTo6cmVnaXN0ZXJDaGFubmVsKGNvbnN0IFdlYkNvcmU6OlBhcnRpdGlvbmVkU2VjdXJp
dHlPcmlnaW4mIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpCcm9hZGNhc3RD
aGFubmVsSWRlbnRpZmllciBpZGVudGlmaWVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAgICAgYXV0byYgY2hhbm5lbHNGb3JPcmlnaW4gPSBtX2NoYW5uZWxzLmVuc3VyZShvcmln
aW4sIFtdIHsgcmV0dXJuIE5hbWVUb0NoYW5uZWxJZGVudGlmaWVyc01hcCB7IH07IH0pLml0ZXJh
dG9yLT52YWx1ZTsKQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBXZWJCcm9hZGNhc3RDaGFubmVsUmVn
aXN0cnk6OnJlZ2lzdGVyQ2hhbm5lbChjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG8KICAg
ICBjaGFubmVsc0Zvck5hbWUuYXBwZW5kKGlkZW50aWZpZXIpOwogfQogCi12b2lkIFdlYkJyb2Fk
Y2FzdENoYW5uZWxSZWdpc3RyeTo6dW5yZWdpc3RlckNoYW5uZWwoY29uc3QgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6QnJvYWRjYXN0
Q2hhbm5lbElkZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgV2ViQnJvYWRjYXN0Q2hhbm5lbFJl
Z2lzdHJ5Ojp1bnJlZ2lzdGVyQ2hhbm5lbChjb25zdCBXZWJDb3JlOjpQYXJ0aXRpb25lZFNlY3Vy
aXR5T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6QnJvYWRjYXN0
Q2hhbm5lbElkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogICAgIGF1dG8gY2hhbm5lbHNGb3JPcmlnaW5JdGVyYXRvciA9IG1fY2hhbm5lbHMuZmlu
ZChvcmlnaW4pOwpAQCAtNjYsNyArNjYsNyBAQCB2b2lkIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdp
c3RyeTo6dW5yZWdpc3RlckNoYW5uZWwoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJgogICAg
IGNoYW5uZWxzRm9yTmFtZUl0ZXJhdG9yLT52YWx1ZS5yZW1vdmVGaXJzdChpZGVudGlmaWVyKTsK
IH0KIAotdm9pZCBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6OnBvc3RNZXNzYWdlKGNvbnN0
IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNv
cmU6OkJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyIHNvdXJjZSwgUmVmPFdlYkNvcmU6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4mJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6cG9z
dE1lc3NhZ2UoY29uc3QgV2ViQ29yZTo6UGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbiYgb3JpZ2lu
LCBjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVy
IHNvdXJjZSwgUmVmPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBtZXNzYWdlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxi
YWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViQnJvYWRjYXN0Q2hh
bm5lbFJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYkJy
b2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oCmluZGV4IDVkMGQxNTBlZjllMGYxMzU2M2UyMzNmYmVj
Zjc2YjY2YTUwZWVmYzkuLjNhNjJlYjYxZDM1MDU1ZDJhYzM4YzdjMmM0ZWQ2NWFlMjE0MGZiMTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViQnJvYWRj
YXN0Q2hhbm5lbFJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3Vw
cG9ydC9XZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaApAQCAtMjQsNyArMjQsNyBAQAogICov
CiAKICNpbmNsdWRlIDxXZWJDb3JlL0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvQ2xpZW50T3JpZ2luLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYXJ0aXRpb25l
ZFNlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3
dGYvV2Vha1B0ci5oPgogCkBAIC0zNCwxMyArMzQsMTMgQEAgY2xhc3MgV2ViQnJvYWRjYXN0Q2hh
bm5lbFJlZ2lzdHJ5IDogcHVibGljIFdlYkNvcmU6OkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeSwg
cHUKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeT4g
Z2V0T3JDcmVhdGUoYm9vbCBwcml2YXRlU2Vzc2lvbik7CiAKLSAgICB2b2lkIHJlZ2lzdGVyQ2hh
bm5lbChjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdl
YkNvcmU6OkJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyKSBmaW5hbDsKLSAgICB2b2lkIHVucmVn
aXN0ZXJDaGFubmVsKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIGNvbnN0IFN0cmluZyYg
bmFtZSwgV2ViQ29yZTo6QnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXIpIGZpbmFsOwotICAgIHZv
aWQgcG9zdE1lc3NhZ2UoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgY29uc3QgU3RyaW5n
JiBuYW1lLCBXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllciBzb3VyY2UsIFJlZjxX
ZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJikgZmluYWw7CisgICAgdm9pZCByZWdpc3RlckNoYW5uZWwoY29uc3QgV2ViQ29yZTo6UGFy
dGl0aW9uZWRTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6QnJv
YWRjYXN0Q2hhbm5lbElkZW50aWZpZXIpIGZpbmFsOworICAgIHZvaWQgdW5yZWdpc3RlckNoYW5u
ZWwoY29uc3QgV2ViQ29yZTo6UGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgV2ViQ29yZTo6QnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXIpIGZpbmFsOworICAg
IHZvaWQgcG9zdE1lc3NhZ2UoY29uc3QgV2ViQ29yZTo6UGFydGl0aW9uZWRTZWN1cml0eU9yaWdp
biYsIGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6QnJvYWRjYXN0Q2hhbm5lbElkZW50aWZp
ZXIgc291cmNlLCBSZWY8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwogCiBwcml2YXRlOgogICAgIFdlYkJyb2FkY2Fz
dENoYW5uZWxSZWdpc3RyeSgpID0gZGVmYXVsdDsKIAogICAgIHVzaW5nIE5hbWVUb0NoYW5uZWxJ
ZGVudGlmaWVyc01hcCA9IEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8V2ViQ29yZTo6QnJvYWRjYXN0
Q2hhbm5lbElkZW50aWZpZXI+PjsKLSAgICBIYXNoTWFwPFdlYkNvcmU6OkNsaWVudE9yaWdpbiwg
TmFtZVRvQ2hhbm5lbElkZW50aWZpZXJzTWFwPiBtX2NoYW5uZWxzOworICAgIEhhc2hNYXA8V2Vi
Q29yZTo6UGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbiwgTmFtZVRvQ2hhbm5lbElkZW50aWZpZXJz
TWFwPiBtX2NoYW5uZWxzOwogfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDM4
ZDY3MzU1ZDQ3ODljMWEzZWJlMTE2MDJlNWQ4NTVhZDg0NDUwOGQuLjM3ZWExYWM4MWQ1NjhkZTY2
OTVhY2QwODc5MjY0MTIwNzM4MmY4YjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE3IEBACisyMDIyLTAzLTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CisKKyAgICAgICAgQnJvYWRjYXN0Q2hhbm5lbCBpbnN0YW5jZXMgaW4gZGlzdGluY3Qgb3Bh
cXVlIG9yaWdpbnMgY2FuIGNvbW11bmljYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgwOTAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzkwNTEx
MTU1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cG9ydCB3ZWItcGxhdGZvcm0tdGVzdHMgdGVzdCBjb3ZlcmFnZS4KKworICAgICAgICAqIHdlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9vcGFxdWUtb3JpZ2lu
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1l
c3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL29wYXF1ZS1vcmlnaW4uaHRtbDogQWRkZWQuCisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL3cz
Yy1pbXBvcnQubG9nOgorCiAyMDIyLTAzLTIxICBaaXJhbiBTdW4gIDx6c3VuQGlnYWxpYS5jb20+
CiAKICAgICAgICAgW3NlbGVjdGlvbl0gSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnN1YnRy
ZWVIYXNDaGFuZ2VkKCkgc2hvdWxkbid0IGJlIGNhbGxlZCBpbiBzZXRSYW5nZVRleHQKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVz
c2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvb3BhcXVlLW9yaWdpbi1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9h
ZGNhc3RjaGFubmVsL29wYXF1ZS1vcmlnaW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlOTFj
OWIwMzJjMzVmMDJkNDkxZWY1MmUzYzk1YzgzMGZhMjA3MzIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9i
cm9hZGNhc3RjaGFubmVsL29wYXF1ZS1vcmlnaW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBA
QAorCitQQVNTIE9wYXF1ZSBvcmlnaW4gc2hvdWxkIGJlIHNlcmlhbGl6ZWQgdG8gIm51bGwiCitQ
QVNTIEJyb2FkY2FzdENoYW5uZWwgbWVzc2FnZXMgZnJvbSBvcGFxdWUgb3JpZ2lucyBzaG91bGQg
YmUgc2VsZi1jb250YWluZWQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9vcGFxdWUt
b3JpZ2luLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL29wYXF1ZS1vcmlnaW4uaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zZjMwODczYmUyMjdmYWQyZTUwZTM4MzM4N2MwNjA2YmE3NGFhMDJjCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJt
ZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9vcGFxdWUtb3JpZ2luLmh0bWwKQEAgLTAsMCArMSw4
NSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD11dGYt
OD4KKzx0aXRsZT48L3RpdGxlPgorPHNjcmlwdCBzcmM9L3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cz48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPS9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanM+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+Cis8IS0tCitwcm9taXNlX3Rlc3Qo
dCA9PiB7CisgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geworICAgIGxldCBpZnIg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICBpZnIuc3JjID0KKyAgICAg
ICJkYXRhOnRleHQvaHRtbCw8c2NyaXB0PiBsZXQgYmMgPSBuZXcgQnJvYWRjYXN0Q2hhbm5lbChc
InRlc3RcIik7IiArCisgICAgICAiYmMub25tZXNzYWdlID0gKGUpID0+IHsiICsKKyAgICAgICIg
IGlmIChlLmRhdGEgPT0gXCJwaW5nXCIpIGJjLnBvc3RNZXNzYWdlKCdwb25nJyk7IisKKyAgICAg
ICIgIGVsc2UgcGFyZW50LnBvc3RNZXNzYWdlKHt3b3JrZXJNZXNzYWdlT3JpZ2luOiBlLmRhdGEs
IG1lc3NhZ2VPcmlnaW46IGUub3JpZ2lufSwgXCIqXCIpOyB9OyIgKworICAgICAgIm5ldyBXb3Jr
ZXIoVVJMLmNyZWF0ZU9iamVjdFVSTChuZXcgQmxvYihbXCIiICsKKyAgICAgICJsZXQgYmMyID0g
bmV3IEJyb2FkY2FzdENoYW5uZWwoJ3Rlc3QnKTsgYmMyLnBvc3RNZXNzYWdlKCdwaW5nJyk7ICIg
KworICAgICAgImJjMi5vbm1lc3NhZ2UgPSBlID0+IGJjMi5wb3N0TWVzc2FnZShlLm9yaWdpbik7
IiArCisgICAgICAiXCJdLCB7dHlwZTogJ3RleHQvamF2YXNjcmlwdCd9KSkpOyA8L3NjcmlwdD4i
OworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgdC5zdGVwX2Z1bmMoZSA9
PiB7CisgICAgICAgIGFzc2VydF9lcXVhbHMoZS5kYXRhLndvcmtlck1lc3NhZ2VPcmlnaW4sICJu
dWxsIik7CisgICAgICAgIGFzc2VydF9lcXVhbHMoZS5kYXRhLm1lc3NhZ2VPcmlnaW4sICJudWxs
Iik7CisgICAgICAgIHJlc29sdmUoKTsKKyAgICAgIH0pLCB7b25jZTogdHJ1ZX0pOworICAgIHQu
YWRkX2NsZWFudXAoKCkgPT4geyBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGlmcikgfSk7Cisg
ICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnIpOworICAgIH0pOworfSwgIk9wYXF1ZSBv
cmlnaW4gc2hvdWxkIGJlIHNlcmlhbGl6ZWQgdG8gXCJudWxsXCIiKTsKKworCitjb25zdCBpZnJh
bWVfc3JjID0gKGNoYW5uZWxfbmFtZSwgaWZyYW1lX25hbWUpID0+IGBkYXRhOnRleHQvaHRtbCw8
c2NyaXB0PgorbGV0IGJjMiA9IG5ldyBCcm9hZGNhc3RDaGFubmVsKCIke2NoYW5uZWxfbmFtZX0i
KTsKK2JjMi5vbm1lc3NhZ2UgPSAoZSkgPT4geworICBpZiAoZS5kYXRhID09ICJmcm9tLSR7aWZy
YW1lX25hbWV9IikgeworICAgIHBhcmVudC5wb3N0TWVzc2FnZSgiJHtpZnJhbWVfbmFtZX0tZG9u
ZSIsICIqIik7CisgIH0gZWxzZSB7CisgICAgcGFyZW50LnBvc3RNZXNzYWdlKCJmYWlsIiwgIioi
KTsKKyAgfQorfTsKK2xldCBiYzMgPSBuZXcgQnJvYWRjYXN0Q2hhbm5lbCgiJHtjaGFubmVsX25h
bWV9Iik7CitiYzMucG9zdE1lc3NhZ2UoImZyb20tJHtpZnJhbWVfbmFtZX0iKTsKKzwvc2NyaXB0
PmA7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZl
LCByZWplY3QpID0+IHsKKyAgICBjb25zdCBjaGFubmVsX25hbWUgPSAib3BhcXVlLW9yaWdpbi10
ZXN0LTIiOworICAgIGNvbnN0IGJjMSA9IG5ldyBCcm9hZGNhc3RDaGFubmVsKGNoYW5uZWxfbmFt
ZSk7CisgICAgYmMxLm9ubWVzc2FnZSA9IHQudW5yZWFjaGVkX2Z1bmMoIlJlY2VpdmVkIG1lc3Nh
Z2UgZnJvbSBhbiBvcGFxdWUgb3JpZ2luIik7CisKKyAgICAvLyBXZSdsbCBjcmVhdGUgYW4gaWZy
YW1lIGFuZCBoYXZlIGl0IHNlbmQgYSBCcm9hZGNhc3RDaGFubmVsIG1lc3NhZ2UKKyAgICAvLyBi
ZXR3ZWVuIHR3byBpbnN0YW5jZXMuIE9uY2UgdGhlIG1lc3NhZ2UgaXMgcmVjZWl2ZWQsIGl0IHdp
bGwgcG9zdE1lc3NhZ2UKKyAgICAvLyBiYWNrIGFuZCB3ZSdsbCByZXBlYXQgdGhpcyB3aXRoIGFu
b3RoZXIgaWZyYW1lLiBJZiB0aGUgZmlyc3QKKyAgICAvLyBCcm9hZGNhc3RDaGFubmVsIG1lc3Nh
Z2UgaXMgcmVjZWl2ZWQgYnkgYGJjMWAsIG9yIGlmIHRoZSBzZWNvbmQKKyAgICAvLyBCcm9hZGNh
c3RDaGFubmVsIG1lc3NhZ2UgaXMgcmVjZWl2ZWQgYnkgYGJjMWAgb3IgYGJjMmAgaW4gdGhlIGZp
cnN0CisgICAgLy8gaWZyYW1lLCB0aGVuIHRoZSB0ZXN0IHNob3VsZCBmYWlsLgorCisgICAgd2lu
ZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBlID0+IHsKKyAgICAgIGlmKGUuZGF0YSA9
PSAiaWZyYW1lMS1kb25lIikgeworICAgICAgICBsZXQgaWZyYW1lMiA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImlmcmFtZSIpOworICAgICAgICBpZnJhbWUyLnNyYyA9IGlmcmFtZV9zcmMoY2hh
bm5lbF9uYW1lLCAiaWZyYW1lMiIpOworICAgICAgICB0LmFkZF9jbGVhbnVwKCgpID0+IHsgZG9j
dW1lbnQuYm9keS5yZW1vdmVDaGlsZChpZnJhbWUyKSB9KTsKKyAgICAgICAgZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZChpZnJhbWUyKTsKKyAgICAgIH0gZWxzZSBpZihlLmRhdGEgPT0gImlmcmFt
ZTItZG9uZSIpIHsKKyAgICAgICAgcmVzb2x2ZSgpOworICAgICAgfSBlbHNlIGlmKGUuZGF0YSA9
PSAiZmFpbCIpIHsKKyAgICAgICAgcmVqZWN0KCJPbmUgb3BhcXVlIG9yaWdpbiByZWNlaXZlZCBh
IG1lc3NhZ2UgZnJvbSB0aGUgb3RoZXIiKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHJlamVj
dCgiQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cnJlZCIpOworICAgICAgfQorICAgIH0pOworCisg
ICAgbGV0IGlmcmFtZTEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICBp
ZnJhbWUxLnNyYyA9IGlmcmFtZV9zcmMoY2hhbm5lbF9uYW1lLCAiaWZyYW1lMSIpOworICAgIHQu
YWRkX2NsZWFudXAoKCkgPT4geyBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGlmcmFtZTEpIH0p
OworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lMSk7CisgICAgfSk7Cit9LCAi
QnJvYWRjYXN0Q2hhbm5lbCBtZXNzYWdlcyBmcm9tIG9wYXF1ZSBvcmlnaW5zIHNob3VsZCBiZSBz
ZWxmLWNvbnRhaW5lZCIpOworLy8tLT4KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJt
ZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5u
ZWwvdzNjLWltcG9ydC5sb2cKaW5kZXggODU5MmYwMWRkMzYzOTcwMWFjOGIwNDY4MTU3Zjg2YzQ3
YjZlN2UxYi4uZTY1NWUwNjNjNDA3NmVlNzgxOTZhZTVmN2U1NjBmNWU5NWQwODQ4NSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNz
YWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC93M2MtaW1wb3J0LmxvZworKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFu
bmVsL3czYy1pbXBvcnQubG9nCkBAIC0xOSw2ICsxOSw3IEBAIExpc3Qgb2YgZmlsZXM6CiAvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJv
YWRjYXN0Y2hhbm5lbC9jcm9zcy1vcmlnaW4uaHRtbAogL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvZGV0YWNo
ZWQtaWZyYW1lLmh0bWwKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL2ludGVyZmFjZS5hbnkuanMKKy9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9h
ZGNhc3RjaGFubmVsL29wYXF1ZS1vcmlnaW4uaHRtbAogL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvb3JkZXJp
bmcuaHRtbAogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2Vi
bWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvb3JpZ2luLndpbmRvdy5qcwogL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNo
YW5uZWwvc2FuZGJveC5odG1sCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455283</attachid>
            <date>2022-03-21 15:26:45 -0700</date>
            <delta_ts>2022-03-21 16:48:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238090-20220321152644.patch</filename>
            <type>text/plain</type>
            <size>49228</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjdlM2JkZDM0YzdjODI5
YjA1M2U4NTY1MTlkYzRmZjNmOWI0ODA5Zi4uOGVlMWMyMjBhZDY4MzQ4MDA0M2EzMTRmOTIyMTJk
OThkMGI4YmJjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIyLTAzLTIxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQnJvYWRjYXN0Q2hhbm5lbCBp
bnN0YW5jZXMgaW4gZGlzdGluY3Qgb3BhcXVlIG9yaWdpbnMgY2FuIGNvbW11bmljYXRlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgwOTAKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzkwNTExMTU1PgorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXgg
Q2hyaXN0ZW5zZW4uCisKKyAgICAgICAgVGhlIGlzc3VlIGlzIHRoYXQgd2Ugd291bGQgdXNlIGEg
Q2xpZW50T3JpZ2luIHRvIGRpc3Rpbmd1aXNoIG9yaWdpbnMgZm9yIEJyb2FkY2FzdENoYW5uZWws
CisgICAgICAgIHdoaWNoIHJlbGllcyBvbiBTZWN1cml0eU9yaWdpbkRhdGEgaW50ZXJuYWxseS4g
QSB1bmlxdWUvb3BhcXVlIFNlY3VyaXR5T3JpZ2luIGJlY29tZXMgYW4gZW1wdHkKKyAgICAgICAg
U2VjdXJpdHlPcmlnaW5EYXRhIHVwb24gY29udmVyc2lvbi4gQXMgYSByZXN1bHQsIHdoZW4gY29t
cGFyaW5nIENsaWVudE9yaWdpbiBvYmplY3RzIGZyb20KKyAgICAgICAgdW5pcXVlIFNlY3VyaXR5
T3JpZ2lucywgdGhleSB3b3VsZCBjb21wYXJlIGFzIGVxdWFsLgorCisgICAgICAgIFRvIGFkZHJl
c3MgdGhlIGlzc3VlLCBJIGludHJvZHVjZWQgYSBuZXcgUGFydGl0aW9uZWRTZWN1cml0eU9yaWdp
biB0eXBlIHdoaWNoIGlzIHNpbWlsYXIKKyAgICAgICAgdG8gQ2xpZW50T3JpZ2luIGJ1dCBzdG9y
ZXMgU2VjdXJpdHlPcmlnaW4gb2JqZWN0cyBpbnRlcm5hbGx5LCBpbnN0ZWFkIG9mIFNlY3VyaXR5
T3JpZ2luRGF0YQorICAgICAgICBvYmplY3RzLiBQYXJ0aXRpb25lZFNlY3VyaXR5T3JpZ2luJ3Mg
b3BlcmF0b3I9PSgpIGlzIHN1Y2ggdGhhdCBkaWZmZXJlbnQgU2VjdXJpdHlPcmlnaW5zCisgICAg
ICAgIHdvdWxkIG5vdCBiZSBlcXVhbCBidXQgdGhlIHNhbWUgdW5pcXVlIFNlY3VyaXR5T3JpZ2lu
IHdvdWxkIGJlLiBJIHRoZW4gdXNlZCB0aGlzIG5ldworICAgICAgICBQYXJ0aXRpb25lZFNlY3Vy
aXR5T3JpZ2luIHR5cGUgYXMga2V5IGluIG91ciBIYXNoTWFwIG9uIHRoZSBXZWJQcm9jZXNzIHNp
ZGUgaW5zdGVhZCBvZgorICAgICAgICBDbGllbnRPcmlnaW4uIFRoaXMgYWxsb3dzIGNvbW11bmlj
YXRpb24gYmV0d2VlbiBzZXZlcmFsIEJyb2FkY2FzdENoYW5uZWxzIGZyb20gdGhlIHNhbWUKKyAg
ICAgICAgdW5pcXVlIG9yaWdpbiwgd2hpbGUgcHJldmVudGluZyBjb21tdW5pY2F0aW9uIGJldHdl
ZW4gZGlzdGluY3Qgb3BhcXVlIG9yaWdpbnMuCisKKyAgICAgICAgV2hlbiB0aGUgUGFydGl0aW9u
ZWRTZWN1cml0eU9yaWdpbiBjb250YWlucyBhbiBvcGFxdWUgc2VjdXJpdHkgb3JpZ2luLCB3ZSBk
b24ndCBpbnZvbHZlCisgICAgICAgIHRoZSBOZXR3b3JrIFByb2Nlc3MgYXQgYWxsIHNpbmNlIHRo
ZSBkZXN0aW5hdGlvbiBjYW4gb25seSBiZSBpbiB0aGUgc2FtZSBXZWJQcm9jZXNzLgorCisgICAg
ICAgIFRlc3Q6IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jy
b2FkY2FzdGNoYW5uZWwvb3BhcXVlLW9yaWdpbi5odG1sCisKKyAgICAgICAgKiBIZWFkZXJzLmNt
YWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBkb20vQnJvYWRjYXN0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRQ
YXJ0aXRpb25PcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6QnJvYWRjYXN0Q2hhbm5lbDo6TWFp
blRocmVhZEJyaWRnZTo6cmVnaXN0ZXJDaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6OkJyb2Fk
Y2FzdENoYW5uZWw6Ok1haW5UaHJlYWRCcmlkZ2U6OnVucmVnaXN0ZXJDaGFubmVsKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJyb2FkY2FzdENoYW5uZWw6Ok1haW5UaHJlYWRCcmlkZ2U6OnBvc3RNZXNz
YWdlKToKKyAgICAgICAgKiBkb20vQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lmg6CisgICAgICAg
ICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgICogcGFnZS9QYXJ0aXRpb25lZFNl
Y3VyaXR5T3JpZ2luLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGFydGl0aW9uZWRTZWN1
cml0eU9yaWdpbjo6UGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbik6CisgICAgICAgIChXZWJDb3Jl
OjpQYXJ0aXRpb25lZFNlY3VyaXR5T3JpZ2luOjppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpQYXJ0aXRpb25lZFNlY3VyaXR5T3JpZ2luOjppc0hhc2hU
YWJsZUVtcHR5VmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6Cisg
ICAgICAgIChXVEY6OmFkZCk6CisgICAgICAgIChXVEY6OlBhcnRpdGlvbmVkU2VjdXJpdHlPcmln
aW5IYXNoOjpoYXNoKToKKyAgICAgICAgKFdURjo6UGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbkhh
c2g6OmVxdWFsKToKKyAgICAgICAgKFdURjo6SGFzaFRyYWl0czxXZWJDb3JlOjpQYXJ0aXRpb25l
ZFNlY3VyaXR5T3JpZ2luPjo6ZW1wdHlWYWx1ZSk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8
V2ViQ29yZTo6UGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbj46OmNvbnN0cnVjdEVtcHR5VmFsdWUp
OgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPFdlYkNvcmU6OlBhcnRpdGlvbmVkU2VjdXJpdHlP
cmlnaW4+Ojppc0VtcHR5VmFsdWUpOgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRzPFdlYkNvcmU6
OlBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4+OjpwZWVrKToKKyAgICAgICAgKFdURjo6SGFzaFRy
YWl0czxXZWJDb3JlOjpQYXJ0aXRpb25lZFNlY3VyaXR5T3JpZ2luPjo6dGFrZSk6CisKIDIwMjIt
MDMtMjEgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW21l
ZGlhLWNvbnRyb2xzXSBzY3J1YmJpbmcgb24gaU9TIHdoZW4gaW5saW5lIGRvZXMgbm90IHdvcmsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggODg2YWI2YmY5NmU3YmQwNDUxNDI3ZGNhYzE2ZDBhZmVmMmY5MDQ5Mi4uNThl
MjNlNmZmOWFjYWNlNjcxYTBhY2VjZDI1MWQyMWU5YWYzODI4ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzNyBAQAorMjAyMi0wMy0yMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisg
ICAgICAgIEJyb2FkY2FzdENoYW5uZWwgaW5zdGFuY2VzIGluIGRpc3RpbmN0IG9wYXF1ZSBvcmln
aW5zIGNhbiBjb21tdW5pY2F0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM4MDkwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85MDUxMTE1NT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIFRoZSBpc3N1
ZSBpcyB0aGF0IHdlIHdvdWxkIHVzZSBhIENsaWVudE9yaWdpbiB0byBkaXN0aW5ndWlzaCBvcmln
aW5zIGZvciBCcm9hZGNhc3RDaGFubmVsLAorICAgICAgICB3aGljaCByZWxpZXMgb24gU2VjdXJp
dHlPcmlnaW5EYXRhIGludGVybmFsbHkuIEEgdW5pcXVlL29wYXF1ZSBTZWN1cml0eU9yaWdpbiBi
ZWNvbWVzIGFuIGVtcHR5CisgICAgICAgIFNlY3VyaXR5T3JpZ2luRGF0YSB1cG9uIGNvbnZlcnNp
b24uIEFzIGEgcmVzdWx0LCB3aGVuIGNvbXBhcmluZyBDbGllbnRPcmlnaW4gb2JqZWN0cyBmcm9t
CisgICAgICAgIHVuaXF1ZSBTZWN1cml0eU9yaWdpbnMsIHRoZXkgd291bGQgY29tcGFyZSBhcyBl
cXVhbC4KKworICAgICAgICBUbyBhZGRyZXNzIHRoZSBpc3N1ZSwgSSBpbnRyb2R1Y2VkIGEgbmV3
IFBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4gdHlwZSB3aGljaCBpcyBzaW1pbGFyCisgICAgICAg
IHRvIENsaWVudE9yaWdpbiBidXQgc3RvcmVzIFNlY3VyaXR5T3JpZ2luIG9iamVjdHMgaW50ZXJu
YWxseSwgaW5zdGVhZCBvZiBTZWN1cml0eU9yaWdpbkRhdGEKKyAgICAgICAgb2JqZWN0cy4gUGFy
dGl0aW9uZWRTZWN1cml0eU9yaWdpbidzIG9wZXJhdG9yPT0oKSBpcyBzdWNoIHRoYXQgZGlmZmVy
ZW50IFNlY3VyaXR5T3JpZ2lucworICAgICAgICB3b3VsZCBub3QgYmUgZXF1YWwgYnV0IHRoZSBz
YW1lIHVuaXF1ZSBTZWN1cml0eU9yaWdpbiB3b3VsZCBiZS4gSSB0aGVuIHVzZWQgdGhpcyBuZXcK
KyAgICAgICAgUGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbiB0eXBlIGFzIGtleSBpbiBvdXIgSGFz
aE1hcCBvbiB0aGUgV2ViUHJvY2VzcyBzaWRlIGluc3RlYWQgb2YKKyAgICAgICAgQ2xpZW50T3Jp
Z2luLiBUaGlzIGFsbG93cyBjb21tdW5pY2F0aW9uIGJldHdlZW4gc2V2ZXJhbCBCcm9hZGNhc3RD
aGFubmVscyBmcm9tIHRoZSBzYW1lCisgICAgICAgIHVuaXF1ZSBvcmlnaW4sIHdoaWxlIHByZXZl
bnRpbmcgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIGRpc3RpbmN0IG9wYXF1ZSBvcmlnaW5zLgorCisg
ICAgICAgIFdoZW4gdGhlIFBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4gY29udGFpbnMgYW4gb3Bh
cXVlIHNlY3VyaXR5IG9yaWdpbiwgd2UgZG9uJ3QgaW52b2x2ZQorICAgICAgICB0aGUgTmV0d29y
ayBQcm9jZXNzIGF0IGFsbCBzaW5jZSB0aGUgZGVzdGluYXRpb24gY2FuIG9ubHkgYmUgaW4gdGhl
IHNhbWUgV2ViUHJvY2Vzcy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6dG9DbGll
bnRPcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6
OnJlZ2lzdGVyQ2hhbm5lbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkJyb2FkY2FzdENoYW5uZWxS
ZWdpc3RyeTo6dW5yZWdpc3RlckNoYW5uZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJCcm9hZGNh
c3RDaGFubmVsUmVnaXN0cnk6OnBvc3RNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQnJv
YWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Ojpwb3N0TWVzc2FnZUxvY2FsbHkpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6OnBvc3RNZXNzYWdlVG9SZW1vdGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6Om5ldHdvcmtQcm9j
ZXNzQ3Jhc2hlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJCcm9h
ZGNhc3RDaGFubmVsUmVnaXN0cnkuaDoKKwogMjAyMi0wMy0yMSAgQnJlbnQgRnVsZ2hhbSAgPGJm
dWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXNhYmxlIHRoZSA8bW9kZWw+IGVsZW1lbnQg
aW4gQ2FwdGl2ZSBQb3J0YWwgbW9kZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggMTM2ZDRkZjhl
MGU3ZmM5OTcwMjU1NWI0MWQ0YzIyMmE2YTJlODAxYi4uMTUzMWVjOGE5ZTRhZGZmMGI5NDBjODc4
MWY2NmExYzBhZWQyNjBmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTcsNiArNywyMCBAQAog
CiAgICAgICAgICogUGxhdGZvcm1NYWMuY21ha2U6CiAKKzIwMjItMDMtMjEgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBCcm9hZGNhc3RDaGFubmVsIGluc3RhbmNl
cyBpbiBkaXN0aW5jdCBvcGFxdWUgb3JpZ2lucyBjYW4gY29tbXVuaWNhdGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODA5MAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vOTA1MTExNTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3Rl
bnNlbi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkJyb2FkY2FzdENoYW5uZWxSZWdp
c3RyeS5jcHA6CisgICAgICAgIChXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6OnJlZ2lzdGVy
Q2hhbm5lbCk6CisgICAgICAgIChXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6OnVucmVnaXN0
ZXJDaGFubmVsKToKKyAgICAgICAgKFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6cG9zdE1l
c3NhZ2UpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkJyb2FkY2FzdENoYW5uZWxSZWdp
c3RyeS5oOgorCiAyMDIyLTAzLTA4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgT3B0aW1pemUgZnVydGhlciB0aGUgcGFzc2luZyBvZiBkYXRhIGFjcm9zcyB0aHJl
YWRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA0MzE0MmJmMjQ5MWI0Y2ViODJjYWJlZjJlYmQ5ODEy
NWVjNmU3MjExLi40ODU4NDFiNmY3OTExZGFiNjZmNzEwOTg3OTI2ODgxZWU5YTU4OTFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0hlYWRlcnMuY21ha2UKQEAgLTExNDEsNiArMTE0MSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVf
RlJBTUVXT1JLX0hFQURFUlMKICAgICBwYWdlL1BhZ2VPdmVybGF5LmgKICAgICBwYWdlL1BhZ2VP
dmVybGF5Q29udHJvbGxlci5oCiAgICAgcGFnZS9QYWdlUGFzdGVib2FyZENvbnRleHQuaAorICAg
IHBhZ2UvUGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbi5oCiAgICAgcGFnZS9QZXJmb3JtYW5jZUxv
Z2dpbmcuaAogICAgIHBhZ2UvUGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50LmgKICAgICBwYWdlL1Bv
aW50ZXJDYXB0dXJlQ29udHJvbGxlci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDlmZTU2ZGRkMmI5Y2M3MTJiMWZjZDBlYWQ0
ZjFlNzNmZjBmOTE5My4uNDY5MWRiMDNkNjM5ZDY4ZGNlZjYzMjA3N2QzMWQzMDM0MTNhZjE0ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTM1Nyw2ICsxMzU3LDcgQEAKIAkJNDY4M0RGNDEyNzY3RTkxQTAwN0QwMEM4IC8qIFNo
YWRvd1JlYWxtR2xvYmFsU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2ODNERjNCMjc2N0RGMjYwMDdEMDBDOCAvKiBTaGFkb3dSZWFsbUdsb2Jh
bFNjb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNDY4OEU5ODAyN0I2QjQ1MDAwNTY3Q0QyIC8qIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJv
dmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
ODhFOTdGMjdCNkI0NDQwMDU2N0NEMiAvKiBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4
OEVFM0MyNkREMjYxMDAwMkFGNUM0IC8qIENyb3NzT3JpZ2luTW9kZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4OEVFM0EyNkREMjYwQzAwMkFGNUM0
IC8qIENyb3NzT3JpZ2luTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTQ2ODkzQjg0MjdFOEQ3NEMwMDJDQzEzRCAvKiBQYXJ0aXRpb25lZFNl
Y3VyaXR5T3JpZ2luLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0Njg5M0I4MzI3RThENzE2MDAyQ0MxM0QgLyogUGFydGl0aW9uZWRTZWN1cml0eU9yaWdp
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2
OTQzREM5Mjc2M0Y4MTcwMDRCNjEwRSAvKiBTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0Njk0M0RDNzI3
NjNGODBFMDA0QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2OTg1RjIzMjdBNEE2
QUQwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OTg1RjIyMjdBNEE2ODYwMDk3QTMyQiAvKiBTaGFyZWRX
b3JrZXJLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0NjlDQ0NGRTI2OUQwMjFDMDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5Q0NDRkMyNjlEMDIw
MjAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTI4OCw2ICs5Mjg5LDcgQEAKIAkJNDY4OEU5N0Qy
N0I2QjQ0MzAwNTY3Q0QyIC8qIENvcmVMb2NhdGlvbkdlb2xvY2F0aW9uUHJvdmlkZXIubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBDb3JlTG9jYXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0Njg4RTk3RjI3QjZCNDQ0MDA1NjdDRDIgLyog
Q29yZUxvY2F0aW9uR2VvbG9jYXRpb25Qcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3JlTG9j
YXRpb25HZW9sb2NhdGlvblByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ2ODhFRTNBMjZERDI2MEMwMDJBRjVDNCAvKiBDcm9zc09yaWdpbk1vZGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ3Jvc3NPcmlnaW5Nb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2
ODkzQjgzMjdFOEQ3MTYwMDJDQzEzRCAvKiBQYXJ0aXRpb25lZFNlY3VyaXR5T3JpZ2luLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDY4QjhCREUyNUNDODQ5MzAwRjY3ODIyIC8qIEpTQmFzZUF1ZGlvQ29u
dGV4dEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Jhc2VBdWRpb0NvbnRleHRDdXN0
b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0Njk0M0RDNzI3NjNGODBFMDA0
QjYxMEUgLyogU2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2OTg1RjIyMjdBNEE2ODYwMDk3QTMyQiAvKiBTaGFyZWRXb3JrZXJLZXkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyS2V5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yNDI2Miw2ICsyNDI2NCw3IEBACiAJCQkJRjQwREFBRUUyNUQ5
RjNCRjAwMTFCNEZBIC8qIFBhZ2VQYXN0ZWJvYXJkQ29udGV4dC5oICovLAogCQkJCTM3MUU2NUNE
MTM2NjFFRUQwMEJFRURCMCAvKiBQYWdlU2VyaWFsaXplci5jcHAgKi8sCiAJCQkJMzcxRTY1Q0Ix
MzY2MUVEQzAwQkVFREIwIC8qIFBhZ2VTZXJpYWxpemVyLmggKi8sCisJCQkJNDY4OTNCODMyN0U4
RDcxNjAwMkNDMTNEIC8qIFBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4uaCAqLywKIAkJCQlCQzRB
NTMyODI1NjA1NjNCMDAyOEM1OTIgLyogUERGSW1hZ2VDYWNoaW5nUG9saWN5LmggKi8sCiAJCQkJ
N0M3MjQ3MUUyNTE2NzU4ODAwQzM2M0NEIC8qIFBlcmZvcm1hbmNlK05hdmlnYXRpb25UaW1pbmcu
aWRsICovLAogCQkJCTdDNzI0NzFDMjUxNjc0Q0UwMEMzNjNDRCAvKiBQZXJmb3JtYW5jZStQZXJm
b3JtYW5jZVRpbWVsaW5lLmlkbCAqLywKQEAgLTM2NjAyLDYgKzM2NjA1LDcgQEAKIAkJCQk0NDc5
NTgwNDE2NDNCNDlBMDAxRTBBN0YgLyogUGFyc2VkQ29udGVudFR5cGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTVDNEEwRkRBMjVDMzQ0OUEwMEQ5RUU5NyAvKiBQYXJzZWRSZXF1ZXN0UmFuZ2UuaCBp
biBIZWFkZXJzICovLAogCQkJCTUzNkQ1QTIzMTkzRThFMEMwMENFNENBQiAvKiBQYXJzaW5nVXRp
bGl0aWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk0Njg5M0I4NDI3RThENzRDMDAyQ0MxM0QgLyog
UGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNEQ0Ex
MjUxRjEyRDAwM0VGMjY5IC8qIFBhc3N3b3JkSW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0QjI3MDhDNzBBRjE5RUU0MDA2NTEyN0YgLyogUGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRjQwREFBRUMyNUQ5RjI1RTAwMTFCNEZBIC8qIFBhc3RlYm9hcmRDb250ZXh0LmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ccm9hZGNhc3RDaGFu
bmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ccm9hZGNhc3RDaGFubmVsLmNwcAppbmRleCAy
YjZlYWIzYTVjZGQ1MDcwOWI1MGVjNGI3MjQ5ZTEwMTA3YmM5YjMwLi5iODRiNzRlOTYyYjE4ODUz
NjE5OGIzYjFiZmUyYzI4MDZmNjg1ZGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
QnJvYWRjYXN0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Jyb2FkY2FzdENo
YW5uZWwuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2lu
Y2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQYXJ0
aXRpb25lZFNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNp
bmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxT
Y29wZS5oIgpAQCAtODYsNyArODcsNyBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8QnJvYWRjYXN0
Q2hhbm5lbD4gbV9icm9hZGNhc3RDaGFubmVsOwogICAgIGNvbnN0IEJyb2FkY2FzdENoYW5uZWxJ
ZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBjb25zdCBTdHJpbmcgbV9uYW1lOyAvLyBNYWlu
IHRocmVhZCBvbmx5LgotICAgIENsaWVudE9yaWdpbiBtX29yaWdpbjsgLy8gTWFpbiB0aHJlYWQg
b25seS4KKyAgICBzdGQ6Om9wdGlvbmFsPFBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4+IG1fb3Jp
Z2luOyAvLyBNYWluIHRocmVhZCBvbmx5LgogfTsKIAogQnJvYWRjYXN0Q2hhbm5lbDo6TWFpblRo
cmVhZEJyaWRnZTo6TWFpblRocmVhZEJyaWRnZShCcm9hZGNhc3RDaGFubmVsJiBjaGFubmVsLCBj
b25zdCBTdHJpbmcmIG5hbWUpCkBAIC0xMjAsOSArMTIxLDkgQEAgdm9pZCBCcm9hZGNhc3RDaGFu
bmVsOjpNYWluVGhyZWFkQnJpZGdlOjplbnN1cmVPbk1haW5UaHJlYWQoRnVuY3Rpb248dm9pZChE
b2N1bWUKIHZvaWQgQnJvYWRjYXN0Q2hhbm5lbDo6TWFpblRocmVhZEJyaWRnZTo6cmVnaXN0ZXJD
aGFubmVsKCkKIHsKICAgICBlbnN1cmVPbk1haW5UaHJlYWQoW3RoaXMsIGNvbnRleHRJZGVudGlm
aWVyID0gbV9icm9hZGNhc3RDaGFubmVsLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlkZW50
aWZpZXIoKV0oYXV0byYgZG9jdW1lbnQpIHsKLSAgICAgICAgbV9vcmlnaW4gPSB7IHNob3VsZFBh
cnRpdGlvbk9yaWdpbihkb2N1bWVudCkgPyBkb2N1bWVudC50b3BPcmlnaW4oKS5kYXRhKCkgOiBk
b2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmRhdGEoKSwgZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4o
KS5kYXRhKCkgfTsKKyAgICAgICAgbV9vcmlnaW4gPSBQYXJ0aXRpb25lZFNlY3VyaXR5T3JpZ2lu
IHsgc2hvdWxkUGFydGl0aW9uT3JpZ2luKGRvY3VtZW50KSA/IGRvY3VtZW50LnRvcE9yaWdpbigp
IDogZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKSwgZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKSB9
OwogICAgICAgICBpZiAoYXV0byogcGFnZSA9IGRvY3VtZW50LnBhZ2UoKSkKLSAgICAgICAgICAg
IHBhZ2UtPmJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeSgpLnJlZ2lzdGVyQ2hhbm5lbChtX29yaWdp
biwgbV9uYW1lLCBtX2lkZW50aWZpZXIpOworICAgICAgICAgICAgcGFnZS0+YnJvYWRjYXN0Q2hh
bm5lbFJlZ2lzdHJ5KCkucmVnaXN0ZXJDaGFubmVsKCptX29yaWdpbiwgbV9uYW1lLCBtX2lkZW50
aWZpZXIpOwogICAgICAgICBjaGFubmVsVG9Db250ZXh0SWRlbnRpZmllcigpLmFkZChtX2lkZW50
aWZpZXIsIGNvbnRleHRJZGVudGlmaWVyKTsKICAgICB9KTsKIH0KQEAgLTEzMSw3ICsxMzIsNyBA
QCB2b2lkIEJyb2FkY2FzdENoYW5uZWw6Ok1haW5UaHJlYWRCcmlkZ2U6OnVucmVnaXN0ZXJDaGFu
bmVsKCkKIHsKICAgICBlbnN1cmVPbk1haW5UaHJlYWQoW3RoaXNdKGF1dG8mIGRvY3VtZW50KSB7
CiAgICAgICAgIGlmIChhdXRvKiBwYWdlID0gZG9jdW1lbnQucGFnZSgpKQotICAgICAgICAgICAg
cGFnZS0+YnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5KCkudW5yZWdpc3RlckNoYW5uZWwobV9vcmln
aW4sIG1fbmFtZSwgbV9pZGVudGlmaWVyKTsKKyAgICAgICAgICAgIHBhZ2UtPmJyb2FkY2FzdENo
YW5uZWxSZWdpc3RyeSgpLnVucmVnaXN0ZXJDaGFubmVsKCptX29yaWdpbiwgbV9uYW1lLCBtX2lk
ZW50aWZpZXIpOwogICAgICAgICBjaGFubmVsVG9Db250ZXh0SWRlbnRpZmllcigpLnJlbW92ZSht
X2lkZW50aWZpZXIpOwogICAgIH0pOwogfQpAQCAtMTQ0LDcgKzE0NSw3IEBAIHZvaWQgQnJvYWRj
YXN0Q2hhbm5lbDo6TWFpblRocmVhZEJyaWRnZTo6cG9zdE1lc3NhZ2UoUmVmPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4mCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgYXV0byBibG9iSGFu
ZGxlcyA9IG1lc3NhZ2UtPmJsb2JIYW5kbGVzKCk7Ci0gICAgICAgIHBhZ2UtPmJyb2FkY2FzdENo
YW5uZWxSZWdpc3RyeSgpLnBvc3RNZXNzYWdlKG1fb3JpZ2luLCBtX25hbWUsIG1faWRlbnRpZmll
ciwgV1RGTW92ZShtZXNzYWdlKSwgW2Jsb2JIYW5kbGVzID0gV1RGTW92ZShibG9iSGFuZGxlcyld
IHsKKyAgICAgICAgcGFnZS0+YnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5KCkucG9zdE1lc3NhZ2Uo
Km1fb3JpZ2luLCBtX25hbWUsIG1faWRlbnRpZmllciwgV1RGTW92ZShtZXNzYWdlKSwgW2Jsb2JI
YW5kbGVzID0gV1RGTW92ZShibG9iSGFuZGxlcyldIHsKICAgICAgICAgICAgIC8vIEtlZXBzIEJs
b2IgZGF0YSBpbnNpZGUgbWVzc2FnZURhdGEgYWxpdmUgdW50aWwgdGhlIG1lc3NhZ2UgaGFzIGJl
ZW4gZGVsaXZlcmVkLgogICAgICAgICB9KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ccm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ccm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaAppbmRleCAxMDQyMThjMTMwMGExZjFkNmRlMmE3
MDA1NDI2NzY0MTZiNTQwOTk0Li45MzU4NDVhMzg1YTJjYzBkMzM2ZDNiZjM5MDY1M2YwZWU2ZTc4
OGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQnJvYWRjYXN0Q2hhbm5lbFJlZ2lz
dHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5o
CkBAIC0zMSwxNSArMzEsMTUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdHJ1Y3QgUGFy
dGl0aW9uZWRTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKLXN0
cnVjdCBDbGllbnRPcmlnaW47CiAKIGNsYXNzIEJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeSA6IHB1
YmxpYyBSZWZDb3VudGVkPEJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeT4gewogcHVibGljOgogICAg
IHZpcnR1YWwgfkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeSgpIHsgfQotICAgIHZpcnR1YWwgdm9p
ZCByZWdpc3RlckNoYW5uZWwoY29uc3QgQ2xpZW50T3JpZ2luJiwgY29uc3QgU3RyaW5nJiBuYW1l
LCBCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllcikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bnJl
Z2lzdGVyQ2hhbm5lbChjb25zdCBDbGllbnRPcmlnaW4mLCBjb25zdCBTdHJpbmcmIG5hbWUsIEJy
b2FkY2FzdENoYW5uZWxJZGVudGlmaWVyKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBvc3RNZXNz
YWdlKGNvbnN0IENsaWVudE9yaWdpbiYsIGNvbnN0IFN0cmluZyYgbmFtZSwgQnJvYWRjYXN0Q2hh
bm5lbElkZW50aWZpZXIgc291cmNlLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJD
aGFubmVsKGNvbnN0IFBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4mLCBjb25zdCBTdHJpbmcmIG5h
bWUsIEJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVu
cmVnaXN0ZXJDaGFubmVsKGNvbnN0IFBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4mLCBjb25zdCBT
dHJpbmcmIG5hbWUsIEJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4mLCBjb25z
dCBTdHJpbmcmIG5hbWUsIEJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyIHNvdXJjZSwgUmVmPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSA9IDA7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuY3BwCmluZGV4IDc3ZjFhOTNjNjU2NWJhM2QwN2NjMDMyZThmZWM0ODUwZmEwN2Q0MDEu
LjI4NGQwZWNiYmU1MzU1YzU4YzY2ZGI2M2VmMGFmMmE4NGU5YjJmZWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0xMTg4LDkgKzExODgsOSBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIEVtcHR5QnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5KCkgPSBkZWZhdWx0Owog
Ci0gICAgdm9pZCByZWdpc3RlckNoYW5uZWwoY29uc3QgQ2xpZW50T3JpZ2luJiwgY29uc3QgU3Ry
aW5nJiwgQnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXIpIGZpbmFsIHsgfQotICAgIHZvaWQgdW5y
ZWdpc3RlckNoYW5uZWwoY29uc3QgQ2xpZW50T3JpZ2luJiwgY29uc3QgU3RyaW5nJiwgQnJvYWRj
YXN0Q2hhbm5lbElkZW50aWZpZXIpIGZpbmFsIHsgfQotICAgIHZvaWQgcG9zdE1lc3NhZ2UoY29u
c3QgQ2xpZW50T3JpZ2luJiwgY29uc3QgU3RyaW5nJiwgQnJvYWRjYXN0Q2hhbm5lbElkZW50aWZp
ZXIsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJikgZmluYWwgeyB9CisgICAgdm9pZCByZWdpc3RlckNoYW5uZWwoY29uc3QgUGFydGl0aW9u
ZWRTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFN0cmluZyYsIEJyb2FkY2FzdENoYW5uZWxJZGVudGlm
aWVyKSBmaW5hbCB7IH0KKyAgICB2b2lkIHVucmVnaXN0ZXJDaGFubmVsKGNvbnN0IFBhcnRpdGlv
bmVkU2VjdXJpdHlPcmlnaW4mLCBjb25zdCBTdHJpbmcmLCBCcm9hZGNhc3RDaGFubmVsSWRlbnRp
ZmllcikgZmluYWwgeyB9CisgICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBQYXJ0aXRpb25lZFNl
Y3VyaXR5T3JpZ2luJiwgY29uc3QgU3RyaW5nJiwgQnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXIs
IFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JikgZmluYWwgeyB9CiB9OwogCiBjbGFzcyBFbXB0eVdlYkxvY2tSZWdpc3RyeSBmaW5hbCA6IHB1
YmxpYyBXZWJMb2NrUmVnaXN0cnkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YXJ0aXRpb25lZFNlY3VyaXR5T3JpZ2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhcnRpdGlv
bmVkU2VjdXJpdHlPcmlnaW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MTU4YWQzOGRlYjAyMDI1ZmI3ODk1ZWY1
NjA3ZGUwZjYzYzhhZDAzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YXJ0aXRpb25lZFNlY3VyaXR5T3JpZ2luLmgKQEAgLTAsMCArMSwxMDAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSA8
d3RmL0hhc2hUcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaGVyLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZi5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBQYXJ0aXRpb25lZFNlY3Vy
aXR5T3JpZ2luIHsKKyAgICBQYXJ0aXRpb25lZFNlY3VyaXR5T3JpZ2luKFJlZjxTZWN1cml0eU9y
aWdpbj4mJiB0b3BPcmlnaW4sIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBjbGllbnRPcmlnaW4pCisg
ICAgICAgIDogdG9wT3JpZ2luKFdURk1vdmUodG9wT3JpZ2luKSkKKyAgICAgICAgLCBjbGllbnRP
cmlnaW4oV1RGTW92ZShjbGllbnRPcmlnaW4pKQorICAgIHsgfQorCisgICAgUGFydGl0aW9uZWRT
ZWN1cml0eU9yaWdpbihXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCisgICAgICAgIDog
dG9wT3JpZ2luKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKQorICAgICAgICAsIGNsaWVudE9y
aWdpbihXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkKKyAgICB7IH0KKworICAgIFBhcnRpdGlv
bmVkU2VjdXJpdHlPcmlnaW4oV1RGOjpIYXNoVGFibGVFbXB0eVZhbHVlVHlwZSkKKyAgICAgICAg
OiB0b3BPcmlnaW4oV1RGOjpIYXNoVGFibGVFbXB0eVZhbHVlKQorICAgICAgICAsIGNsaWVudE9y
aWdpbihXVEY6Okhhc2hUYWJsZUVtcHR5VmFsdWUpCisgICAgeyB9CisKKyAgICBib29sIGlzSGFz
aFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gdG9wT3JpZ2luLmlzSGFzaFRhYmxl
RGVsZXRlZFZhbHVlKCk7IH0KKyAgICBib29sIGlzSGFzaFRhYmxlRW1wdHlWYWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIHRvcE9yaWdpbi5pc0hhc2hUYWJsZUVtcHR5VmFsdWUoKTsgfQorCisgICAgUmVm
PFNlY3VyaXR5T3JpZ2luPiB0b3BPcmlnaW47CisgICAgUmVmPFNlY3VyaXR5T3JpZ2luPiBjbGll
bnRPcmlnaW47Cit9OworCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBhcnRpdGlvbmVk
U2VjdXJpdHlPcmlnaW4mIGEsIGNvbnN0IFBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4mIGIpCit7
CisgICAgcmV0dXJuIGEudG9wT3JpZ2luLT5pc1NhbWVPcmlnaW5BcyhiLnRvcE9yaWdpbikgJiYg
YS5jbGllbnRPcmlnaW4tPmlzU2FtZU9yaWdpbkFzKGIuY2xpZW50T3JpZ2luKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKKworaW5saW5lIHZvaWQgYWRk
KEhhc2hlciYgaGFzaGVyLCBjb25zdCBXZWJDb3JlOjpQYXJ0aXRpb25lZFNlY3VyaXR5T3JpZ2lu
JiBvcmlnaW4pCit7CisgICAgYWRkKGhhc2hlciwgb3JpZ2luLnRvcE9yaWdpbi5nZXQoKSwgb3Jp
Z2luLmNsaWVudE9yaWdpbi5nZXQoKSk7Cit9CisKK3N0cnVjdCBQYXJ0aXRpb25lZFNlY3VyaXR5
T3JpZ2luSGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgV2ViQ29yZTo6UGFy
dGl0aW9uZWRTZWN1cml0eU9yaWdpbiYgb3JpZ2luKSB7IHJldHVybiBjb21wdXRlSGFzaChvcmln
aW4pOyB9CisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgV2ViQ29yZTo6UGFydGl0aW9uZWRT
ZWN1cml0eU9yaWdpbiYgYSwgY29uc3QgV2ViQ29yZTo6UGFydGl0aW9uZWRTZWN1cml0eU9yaWdp
biYgYikgeyByZXR1cm4gYSA9PSBiOyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHNhZmVU
b0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVj
dCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpQYXJ0aXRpb25lZFNlY3VyaXR5T3JpZ2luPiA6IFBhcnRp
dGlvbmVkU2VjdXJpdHlPcmlnaW5IYXNoIHsgfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRy
YWl0czxXZWJDb3JlOjpQYXJ0aXRpb25lZFNlY3VyaXR5T3JpZ2luPiA6IFNpbXBsZUNsYXNzSGFz
aFRyYWl0czxXZWJDb3JlOjpQYXJ0aXRpb25lZFNlY3VyaXR5T3JpZ2luPiB7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGVtcHR5VmFsdWVJc1plcm8gPSB0cnVlOworICAgIHN0YXRpYyBXZWJD
b3JlOjpQYXJ0aXRpb25lZFNlY3VyaXR5T3JpZ2luIGVtcHR5VmFsdWUoKSB7IHJldHVybiBIYXNo
VGFibGVFbXB0eVZhbHVlOyB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWU+CisgICAgc3RhdGlj
IHZvaWQgY29uc3RydWN0RW1wdHlWYWx1ZShXZWJDb3JlOjpQYXJ0aXRpb25lZFNlY3VyaXR5T3Jp
Z2luJiBzbG90KQorICAgIHsKKyAgICAgICAgbmV3IChOb3ROdWxsLCBzdGQ6OmFkZHJlc3NvZihz
bG90KSkgV2ViQ29yZTo6UGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbihIYXNoVGFibGVFbXB0eVZh
bHVlKTsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzSXNFbXB0eVZhbHVl
RnVuY3Rpb24gPSB0cnVlOworICAgIHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShjb25zdCBXZWJD
b3JlOjpQYXJ0aXRpb25lZFNlY3VyaXR5T3JpZ2luJiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUuaXNI
YXNoVGFibGVFbXB0eVZhbHVlKCk7IH0KKworICAgIHVzaW5nIFBlZWtUeXBlID0gc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQYXJ0aXRpb25lZFNlY3VyaXR5T3JpZ2luPjsKKyAgICBzdGF0aWMgUGVl
a1R5cGUgcGVlayhjb25zdCBXZWJDb3JlOjpQYXJ0aXRpb25lZFNlY3VyaXR5T3JpZ2luJiB2YWx1
ZSkgeyByZXR1cm4gaXNFbXB0eVZhbHVlKHZhbHVlKSA/IHN0ZDo6bnVsbG9wdCA6IHN0ZDo6b3B0
aW9uYWwgeyB2YWx1ZSB9OyB9CisKKyAgICB1c2luZyBUYWtlVHlwZSA9IHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6UGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbj47CisgICAgc3RhdGljIFRha2VUeXBl
IHRha2UoV2ViQ29yZTo6UGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbiYmIHZhbHVlKSB7IHJldHVy
biBpc0VtcHR5VmFsdWUodmFsdWUpID8gc3RkOjpudWxsb3B0IDogc3RkOjpvcHRpb25hbCB7IFdU
Rk1vdmUodmFsdWUpIH07IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lz
dHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Jyb2FkY2FzdENo
YW5uZWxSZWdpc3RyeS5jcHAKaW5kZXggNjlhOTc2OTA3NzBhYzQxMGEyOWI3MTk1MjhlNjI1YjVh
OTQ1MDIwYS4uYTY4ZmFhYTNhNTM5YmYyZjQzMmM0MWFmNTQyYWQwM2QyMzdmMTdiYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQnJvYWRjYXN0Q2hhbm5l
bFJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtC
cm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuY3BwCkBAIC0yNiwxNiArMjYsMzggQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lmgi
CiAKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJX
ZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaD4KICNpbmNsdWRlIDx3dGYvQ2FsbGJhY2tBZ2dyZWdh
dG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1OZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJl
Z2lzdHJ5OjpOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5KCkgPSBkZWZhdWx0OworI2Rl
ZmluZSBSRUdJU1RSWV9NRVNTQUdFX0NIRUNLKGFzc2VydGlvbikgUkVHSVNUUllfTUVTU0FHRV9D
SEVDS19DT01QTEVUSU9OKGFzc2VydGlvbiwgKHZvaWQpMCkKKyNkZWZpbmUgUkVHSVNUUllfTUVT
U0FHRV9DSEVDS19DT01QTEVUSU9OKGFzc2VydGlvbiwgY29tcGxldGlvbikgZG8geyBcCisgICAg
QVNTRVJUKGFzc2VydGlvbik7IFwKKyAgICBpZiAoVU5MSUtFTFkoIShhc3NlcnRpb24pKSkgeyBc
CisgICAgICAgIGlmIChhdXRvIHdlYlByb2Nlc3NJZGVudGlmaWVyID0gbV9uZXR3b3JrUHJvY2Vz
cy0+d2ViUHJvY2Vzc0lkZW50aWZpZXJGb3JDb25uZWN0aW9uKGNvbm5lY3Rpb24pKSBcCisgICAg
ICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpUZXJtaW5hdGVXZWJQcm9jZXNzKHdlYlBy
b2Nlc3NJZGVudGlmaWVyKSwgMCk7IFwKKyAgICAgICAgeyBjb21wbGV0aW9uOyB9IFwKKyAgICAg
ICAgcmV0dXJuOyBcCisgICAgfSBcCit9IHdoaWxlICgwKQorCitzdGF0aWMgYm9vbCBpc1ZhbGlk
Q2xpZW50T3JpZ2luKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgY2xpZW50T3JpZ2luKQor
eworICAgIHJldHVybiAhY2xpZW50T3JpZ2luLnRvcE9yaWdpbi5pc0VtcHR5KCkgJiYgIWNsaWVu
dE9yaWdpbi5jbGllbnRPcmlnaW4uaXNFbXB0eSgpOworfQorCitOZXR3b3JrQnJvYWRjYXN0Q2hh
bm5lbFJlZ2lzdHJ5OjpOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5KE5ldHdvcmtQcm9j
ZXNzJiBuZXR3b3JrUHJvY2VzcykKKyAgICA6IG1fbmV0d29ya1Byb2Nlc3MobmV0d29ya1Byb2Nl
c3MpCit7Cit9CiAKIHZvaWQgTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6cmVnaXN0
ZXJDaGFubmVsKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKKyAgICBSRUdJU1RSWV9N
RVNTQUdFX0NIRUNLKGlzVmFsaWRDbGllbnRPcmlnaW4ob3JpZ2luKSk7CisKICAgICBhdXRvJiBj
aGFubmVsc0Zvck9yaWdpbiA9IG1fYnJvYWRjYXN0Q2hhbm5lbHMuZW5zdXJlKG9yaWdpbiwgW10g
eyByZXR1cm4gTmFtZVRvQ29ubmVjdGlvbklkZW50aWZpZXJzTWFwIHsgfTsgfSkuaXRlcmF0b3It
PnZhbHVlOwogICAgIGF1dG8mIGNvbm5lY3Rpb25JZGVudGlmaWVyc0Zvck5hbWUgPSBjaGFubmVs
c0Zvck9yaWdpbi5lbnN1cmUobmFtZSwgW10geyByZXR1cm4gVmVjdG9yPElQQzo6Q29ubmVjdGlv
bjo6VW5pcXVlSUQ+IHsgfTsgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIEFTU0VSVCghY29ubmVj
dGlvbklkZW50aWZpZXJzRm9yTmFtZS5jb250YWlucyhjb25uZWN0aW9uLnVuaXF1ZUlEKCkpKTsK
QEAgLTQ0LDYgKzY2LDggQEAgdm9pZCBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Ojpy
ZWdpc3RlckNoYW5uZWwoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW8KIAogdm9pZCBOZXR3b3Jr
QnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQ2hhbm5lbChJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBjb25z
dCBTdHJpbmcmIG5hbWUpCiB7CisgICAgUkVHSVNUUllfTUVTU0FHRV9DSEVDSyhpc1ZhbGlkQ2xp
ZW50T3JpZ2luKG9yaWdpbikpOworCiAgICAgYXV0byBjaGFubmVsc0Zvck9yaWdpbkl0ZXJhdG9y
ID0gbV9icm9hZGNhc3RDaGFubmVscy5maW5kKG9yaWdpbik7CiAgICAgQVNTRVJUKGNoYW5uZWxz
Rm9yT3JpZ2luSXRlcmF0b3IgIT0gbV9icm9hZGNhc3RDaGFubmVscy5lbmQoKSk7CiAgICAgaWYg
KGNoYW5uZWxzRm9yT3JpZ2luSXRlcmF0b3IgPT0gbV9icm9hZGNhc3RDaGFubmVscy5lbmQoKSkK
QEAgLTU5LDYgKzgzLDggQEAgdm9pZCBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Ojp1
bnJlZ2lzdGVyQ2hhbm5lbChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3QKIAogdm9pZCBOZXR3b3Jr
QnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Ojpwb3N0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBjb25zdCBTdHJp
bmcmIG5hbWUsIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogeworICAgIFJFR0lT
VFJZX01FU1NBR0VfQ0hFQ0tfQ09NUExFVElPTihpc1ZhbGlkQ2xpZW50T3JpZ2luKG9yaWdpbiks
IGNvbXBsZXRpb25IYW5kbGVyKCkpOworCiAgICAgYXV0byBjaGFubmVsc0Zvck9yaWdpbkl0ZXJh
dG9yID0gbV9icm9hZGNhc3RDaGFubmVscy5maW5kKG9yaWdpbik7CiAgICAgQVNTRVJUKGNoYW5u
ZWxzRm9yT3JpZ2luSXRlcmF0b3IgIT0gbV9icm9hZGNhc3RDaGFubmVscy5lbmQoKSk7CiAgICAg
aWYgKGNoYW5uZWxzRm9yT3JpZ2luSXRlcmF0b3IgPT0gbV9icm9hZGNhc3RDaGFubmVscy5lbmQo
KSkKQEAgLTEwMSw0ICsxMjcsNyBAQCB2b2lkIE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0
cnk6OnJlbW92ZUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aQogICAgICAgICBt
X2Jyb2FkY2FzdENoYW5uZWxzLnJlbW92ZShvcmlnaW5Ub1JlbW92ZSk7CiB9CiAKKyN1bmRlZiBS
RUdJU1RSWV9NRVNTQUdFX0NIRUNLCisjdW5kZWYgUkVHSVNUUllfTUVTU0FHRV9DSEVDS19DT01Q
TEVUSU9OCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnku
aAppbmRleCAzZjlhZWQyMGJhYjZiYzAyODEwODU1NjQ5YmE3YTdmMGYyZWRmNDFkLi5jYjdiMzVh
NzVhOWE0MGI0NzY3NTkxM2I3ZjMyMmRlNGI3NDRjMzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVn
aXN0cnkuaApAQCAtMzYsMTAgKzM2LDEyIEBAIHN0cnVjdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0
czsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIE5ldHdvcmtQcm9jZXNzOworCiBjbGFz
cyBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5IHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICBOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5KCk7
CisgICAgZXhwbGljaXQgTmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeShOZXR3b3JrUHJv
Y2VzcyYpOwogCiAgICAgdm9pZCByZW1vdmVDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiYpOwog
CkBAIC01MCw2ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBvc3RNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKIAogcHJpdmF0ZToKKyAgICBSZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29y
a1Byb2Nlc3M7CiAgICAgdXNpbmcgTmFtZVRvQ29ubmVjdGlvbklkZW50aWZpZXJzTWFwID0gSGFz
aE1hcDxTdHJpbmcsIFZlY3RvcjxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEPj47CiAgICAgSGFz
aE1hcDxXZWJDb3JlOjpDbGllbnRPcmlnaW4sIE5hbWVUb0Nvbm5lY3Rpb25JZGVudGlmaWVyc01h
cD4gbV9icm9hZGNhc3RDaGFubmVsczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGViMmY1YmJiZGZhNmUzMWE1OTAwY2FjN2Yy
YTMwYjU3NmU1NTBjZmYuLjgzNGQxOWE1YjYzZDBlNTNhOGJmMjM3MmE5NTMxYzRhMWNlZjY4ZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CkBAIC0yNTUyLDYgKzI1NTIsMTUgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y29ubmVjdGlvblRv
V2ViUHJvY2Vzc0Nsb3NlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFAKICAgICAgICAg
c2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKS5zdG9wUmVjZWl2aW5nTWVzc2FnZUZyb21Db25uZWN0
aW9uKGNvbm5lY3Rpb24pOwogfQogCitXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBOZXR3b3Jr
UHJvY2Vzczo6d2ViUHJvY2Vzc0lkZW50aWZpZXJGb3JDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbikgY29uc3QKK3sKKyAgICBmb3IgKGF1dG8mIFtwcm9jZXNzSWRlbnRpZmll
ciwgd2ViQ29ubmVjdGlvbl0gOiBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucykgeworICAgICAgICBp
ZiAoJndlYkNvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKSA9PSAmY29ubmVjdGlvbikKKyAgICAgICAg
ICAgIHJldHVybiBwcm9jZXNzSWRlbnRpZmllcjsKKyAgICB9CisgICAgcmV0dXJuIHsgfTsKK30K
KwogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIE5ldHdvcmtQcm9jZXNzOjp3ZWJQcm9j
ZXNzQ29ubmVjdGlvbihQcm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyKSBjb25zdAogewogICAg
IHJldHVybiBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5nZXQoaWRlbnRpZmllcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggZjc3MDQ1ZTVh
ZjhlNDM3MjE2MmE1MTY3Y2FmYzAwODRkMzA5ZTg4OS4uZDkzNWY0NmNjYzk5Y2E4Njc4NGY1ZjE0
ZTgwZGQ3MGI1MDM4M2IyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaApAQCAtMzMyLDYgKzMzMiw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBPcHRp
b25TZXQ8TmV0d29ya0NhY2hlOjpDYWNoZU9wdGlvbj4mIGNhY2hlT3B0aW9ucygpIGNvbnN0IHsg
cmV0dXJuIG1fY2FjaGVPcHRpb25zOyB9CiAKICAgICBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcyogd2ViUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpIGNv
bnN0OworICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVy
Rm9yQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24mKSBjb25zdDsKICAgICBXZWJDb3JlOjpNZXNz
YWdlUG9ydENoYW5uZWxSZWdpc3RyeSYgbWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkoKSB7IHJl
dHVybiBtX21lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5OyB9CiAKICAgICB2b2lkIHNldFNlcnZp
Y2VXb3JrZXJGZXRjaFRpbWVvdXRGb3JUZXN0aW5nKFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nl
c3Npb24uY3BwCmluZGV4IDRkMDljM2JiNDI5YzRjMGYzNDQ4Yzk5NmRlYTk5MWRjNGY4MmY2ODku
LmU4MGUyNjFmYjAyMmViZTUzNmM4MDk5YTQ0OTBmMTM0ODliNDIzYzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC0xMzgsNyArMTM4
LDcgQEAgTmV0d29ya1Nlc3Npb246Ok5ldHdvcmtTZXNzaW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3
b3JrUHJvY2VzcywgY29uc3QgTmV0d29ya1Nlc3MKICNlbmRpZgogICAgICwgbV9wcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudChtYW5hZ2VyT3JQcm94eSgqdGhpcywgbmV0d29ya1Byb2Nlc3MsIHBhcmFt
ZXRlcnMpKQogICAgICwgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnTW9kZUVuYWJsZWQo
cGFyYW1ldGVycy5lbmFibGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnTW9kZSkKLSAgICAs
IG1fYnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5KG1ha2VVbmlxdWVSZWY8TmV0d29ya0Jyb2FkY2Fz
dENoYW5uZWxSZWdpc3RyeT4oKSkKKyAgICAsIG1fYnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5KG1h
a2VVbmlxdWVSZWY8TmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeT4obmV0d29ya1Byb2Nl
c3MpKQogICAgICwgbV90ZXN0U3BlZWRNdWx0aXBsaWVyKHBhcmFtZXRlcnMudGVzdFNwZWVkTXVs
dGlwbGllcikKICAgICAsIG1fYWxsb3dzU2VydmVyUHJlY29ubmVjdChwYXJhbWV0ZXJzLmFsbG93
c1NlcnZlclByZWNvbm5lY3QpCiAgICAgLCBtX3Nob3VsZFJ1blNlcnZpY2VXb3JrZXJzT25NYWlu
VGhyZWFkRm9yVGVzdGluZyhwYXJhbWV0ZXJzLnNob3VsZFJ1blNlcnZpY2VXb3JrZXJzT25NYWlu
VGhyZWFkRm9yVGVzdGluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3Ry
eS5jcHAKaW5kZXggN2NhNGJmODE5NWFkMDlmZGY0MmE1ODIyMDZmZGJhNTQzZDM1MjQ1My4uYWZi
MGEwY2FlY2ExZjVlZmFjY2E5YWUzMTZlZWIyMmU4YzEyYjFmYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkJyb2FkY2FzdENoYW5uZWxSZWdp
c3RyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5jcHAKQEAgLTQwLDE3ICs0MCwzMCBAQCBzdGF0aWMg
aW5saW5lIElQQzo6Q29ubmVjdGlvbiYgbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkKICAgICBy
ZXR1cm4gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpOwogfQogCi12b2lkIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3Ry
eTo6cmVnaXN0ZXJDaGFubmVsKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBj
b25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCisvLyBVbmlxdWUgb3JpZ2lucyBhcmUgb25seSBzdG9yZWQgaW4gcHJvY2VzcyBp
biBtX2NoYW5uZWxzUGVyT3JpZ2luIGFuZCBuZXZlciBzZW50IHRvIHRoZSBOZXR3b3JrUHJvY2Vz
cyBhcyBhIENsaWVudE9yaWdpbi4KKy8vIFRoZSBpZGVudGl0eSBvZiB1bmlxdWUgb3JpZ2lucyB3
b3VsZG4ndCBiZSBwcmVzZXJ2ZWQgd2hlbiBzZXJpYWxpemluZyB0aGVtIGFzIGEgU2VjdXJpdHlP
cmlnaW5EYXRhICh2aWEgQ2xpZW50T3JpZ2luKS4KKy8vIFNpbmNlIEJyb2FkY2FzdENoYW5uZWxz
IGZyb20gYSB1bmlxdWUgb3JpZ2luIGNhbiBvbmx5IGNvbW11bmljYXRlIHdpdGggb3RoZXIgQnJv
YWRjYXN0Q2hhbm5lbHMgZnJvbSB0aGUgc2FtZSB1bmlxdWUgb3JpZ2luLAorLy8gdGhlIGRlc3Rp
bmF0aW9uIGNoYW5uZWxzIGhhdmUgdG8gYmUgd2l0aGluIHRoZSBzYW1lIFdlYlByb2Nlc3MgYW55
d2F5Lgorc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q2xpZW50T3JpZ2luPiB0b0NsaWVu
dE9yaWdpbihjb25zdCBXZWJDb3JlOjpQYXJ0aXRpb25lZFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4p
Cit7CisgICAgaWYgKG9yaWdpbi50b3BPcmlnaW4tPmlzVW5pcXVlKCkgfHwgb3JpZ2luLmNsaWVu
dE9yaWdpbi0+aXNVbmlxdWUoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBy
ZXR1cm4gV2ViQ29yZTo6Q2xpZW50T3JpZ2luIHsgb3JpZ2luLnRvcE9yaWdpbi0+ZGF0YSgpLCBv
cmlnaW4uY2xpZW50T3JpZ2luLT5kYXRhKCkgfTsKK30KKwordm9pZCBXZWJCcm9hZGNhc3RDaGFu
bmVsUmVnaXN0cnk6OnJlZ2lzdGVyQ2hhbm5lbChjb25zdCBXZWJDb3JlOjpQYXJ0aXRpb25lZFNl
Y3VyaXR5T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6QnJvYWRj
YXN0Q2hhbm5lbElkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKICAgICBhdXRvJiBjaGFubmVsc0Zv
ck9yaWdpbiA9IG1fY2hhbm5lbHNQZXJPcmlnaW4uZW5zdXJlKG9yaWdpbiwgW10geyByZXR1cm4g
SGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmll
cj4+IHsgfTsgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIGF1dG8mIGNoYW5uZWxzRm9yTmFtZSA9
IGNoYW5uZWxzRm9yT3JpZ2luLmVuc3VyZShuYW1lLCBbXSB7IHJldHVybiBWZWN0b3I8V2ViQ29y
ZTo6QnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXI+IHsgfTsgfSkuaXRlcmF0b3ItPnZhbHVlOwog
ICAgIGNoYW5uZWxzRm9yTmFtZS5hcHBlbmQoaWRlbnRpZmllcik7CiAKLSAgICBpZiAoY2hhbm5l
bHNGb3JOYW1lLnNpemUoKSA9PSAxKQotICAgICAgICBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5OjpSZWdpc3Rl
ckNoYW5uZWwgeyBvcmlnaW4sIG5hbWUgfSwgMCk7CisgICAgaWYgKGNoYW5uZWxzRm9yTmFtZS5z
aXplKCkgPT0gMSkgeworICAgICAgICBpZiAoYXV0byBjbGllbnRPcmlnaW4gPSB0b0NsaWVudE9y
aWdpbihvcmlnaW4pKQorICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6TmV0d29ya0Jyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6UmVnaXN0ZXJDaGFu
bmVsIHsgKmNsaWVudE9yaWdpbiwgbmFtZSB9LCAwKTsKKyAgICB9CiB9CiAKLXZvaWQgV2ViQnJv
YWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQ2hhbm5lbChjb25zdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4mIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpCcm9hZGNh
c3RDaGFubmVsSWRlbnRpZmllciBpZGVudGlmaWVyKQordm9pZCBXZWJCcm9hZGNhc3RDaGFubmVs
UmVnaXN0cnk6OnVucmVnaXN0ZXJDaGFubmVsKGNvbnN0IFdlYkNvcmU6OlBhcnRpdGlvbmVkU2Vj
dXJpdHlPcmlnaW4mIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpCcm9hZGNh
c3RDaGFubmVsSWRlbnRpZmllciBpZGVudGlmaWVyKQogewogICAgIGF1dG8gY2hhbm5lbHNQZXJP
cmlnaW5JdGVyYXRvciA9IG1fY2hhbm5lbHNQZXJPcmlnaW4uZmluZChvcmlnaW4pOwogICAgIGlm
IChjaGFubmVsc1Blck9yaWdpbkl0ZXJhdG9yID09IG1fY2hhbm5lbHNQZXJPcmlnaW4uZW5kKCkp
CkBAIC02OCwyMCArODEsMjIgQEAgdm9pZCBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6OnVu
cmVnaXN0ZXJDaGFubmVsKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYKICAgICAgICAgcmV0
dXJuOwogCiAgICAgY2hhbm5lbHNGb3JPcmlnaW4ucmVtb3ZlKGNoYW5uZWxzRm9yT3JpZ2luSXRl
cmF0b3IpOwotICAgIG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6OlVucmVnaXN0ZXJDaGFubmVsIHsgb3JpZ2lu
LCBuYW1lIH0sIDApOworICAgIGlmIChhdXRvIGNsaWVudE9yaWdpbiA9IHRvQ2xpZW50T3JpZ2lu
KG9yaWdpbikpCisgICAgICAgIG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6OlVucmVnaXN0ZXJDaGFubmVsIHsg
KmNsaWVudE9yaWdpbiwgbmFtZSB9LCAwKTsKIAogICAgIGlmIChjaGFubmVsc0Zvck9yaWdpbi5p
c0VtcHR5KCkpCiAgICAgICAgIG1fY2hhbm5lbHNQZXJPcmlnaW4ucmVtb3ZlKGNoYW5uZWxzUGVy
T3JpZ2luSXRlcmF0b3IpOwogfQogCi12b2lkIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6
cG9zdE1lc3NhZ2UoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFN0
cmluZyYgbmFtZSwgV2ViQ29yZTo6QnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXIgc291cmNlLCBS
ZWY8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViQnJvYWRjYXN0Q2hh
bm5lbFJlZ2lzdHJ5Ojpwb3N0TWVzc2FnZShjb25zdCBXZWJDb3JlOjpQYXJ0aXRpb25lZFNlY3Vy
aXR5T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6QnJvYWRjYXN0
Q2hhbm5lbElkZW50aWZpZXIgc291cmNlLCBSZWY8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiYmIG1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRv
cjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICBwb3N0TWVzc2FnZUxv
Y2FsbHkob3JpZ2luLCBuYW1lLCBzb3VyY2UsIG1lc3NhZ2UuY29weVJlZigpLCBjYWxsYmFja0Fn
Z3JlZ2F0b3IuY29weVJlZigpKTsKLSAgICBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6
OlBvc3RNZXNzYWdlIHsgb3JpZ2luLCBuYW1lLCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQ
b3J0cyB7IFdURk1vdmUobWVzc2FnZSksIHsgfSB9IH0sIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsg
fSwgMCk7CisgICAgaWYgKGF1dG8gY2xpZW50T3JpZ2luID0gdG9DbGllbnRPcmlnaW4ob3JpZ2lu
KSkKKyAgICAgICAgbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5OjpQb3N0TWVzc2FnZSB7
ICpjbGllbnRPcmlnaW4sIG5hbWUsIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIHsg
V1RGTW92ZShtZXNzYWdlKSwgeyB9IH0gfSwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9LCAwKTsK
IH0KIAotdm9pZCBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6OnBvc3RNZXNzYWdlTG9jYWxs
eShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1l
LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyPiBzb3Vy
Y2VJblByb2Nlc3MsIFJlZjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2Fn
ZSwgUmVmPFdURjo6Q2FsbGJhY2tBZ2dyZWdhdG9yPiYmIGNhbGxiYWNrQWdncmVnYXRvcikKK3Zv
aWQgV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Ojpwb3N0TWVzc2FnZUxvY2FsbHkoY29uc3Qg
V2ViQ29yZTo6UGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBjb25zdCBTdHJpbmcm
IG5hbWUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXI+
IHNvdXJjZUluUHJvY2VzcywgUmVmPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBt
ZXNzYWdlLCBSZWY8V1RGOjpDYWxsYmFja0FnZ3JlZ2F0b3I+JiYgY2FsbGJhY2tBZ2dyZWdhdG9y
KQogewogICAgIGF1dG8gY2hhbm5lbHNQZXJPcmlnaW5JdGVyYXRvciA9IG1fY2hhbm5lbHNQZXJP
cmlnaW4uZmluZChvcmlnaW4pOwogICAgIGlmIChjaGFubmVsc1Blck9yaWdpbkl0ZXJhdG9yID09
IG1fY2hhbm5lbHNQZXJPcmlnaW4uZW5kKCkpCkBAIC0xMDAsMTcgKzExNSwyMSBAQCB2b2lkIFdl
YkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6cG9zdE1lc3NhZ2VMb2NhbGx5KGNvbnN0IFdlYkNv
cmU6OkNsaWVudE9yaWdpbgogICAgIH0KIH0KIAotdm9pZCBXZWJCcm9hZGNhc3RDaGFubmVsUmVn
aXN0cnk6OnBvc3RNZXNzYWdlVG9SZW1vdGUoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBv
cmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9y
dHMmJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6cG9zdE1lc3NhZ2VUb1JlbW90
ZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgY29uc3QgU3RyaW5n
JiBuYW1lLCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIGNh
bGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKKyAgICBXZWJDb3JlOjpQYXJ0aXRpb25lZFNlY3VyaXR5T3JpZ2lu
IG9yaWdpbiB7IGNsaWVudE9yaWdpbi50b3BPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSwgY2xpZW50
T3JpZ2luLmNsaWVudE9yaWdpbi5zZWN1cml0eU9yaWdpbigpIH07CiAgICAgcG9zdE1lc3NhZ2VM
b2NhbGx5KG9yaWdpbiwgbmFtZSwgc3RkOjpudWxsb3B0LCAqbWVzc2FnZS5tZXNzYWdlLCBjYWxs
YmFja0FnZ3JlZ2F0b3IuY29weVJlZigpKTsKIH0KIAogdm9pZCBXZWJCcm9hZGNhc3RDaGFubmVs
UmVnaXN0cnk6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCgpCiB7CiAgICAgZm9yIChhdXRvJiBbb3Jp
Z2luLCBjaGFubmVsc0Zvck9yaWdpbl0gOiBtX2NoYW5uZWxzUGVyT3JpZ2luKSB7CisgICAgICAg
IGF1dG8gY2xpZW50T3JpZ2luID0gdG9DbGllbnRPcmlnaW4ob3JpZ2luKTsKKyAgICAgICAgaWYg
KCFjbGllbnRPcmlnaW4pCisgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgZm9yIChhdXRv
JiBuYW1lIDogY2hhbm5lbHNGb3JPcmlnaW4ua2V5cygpKQotICAgICAgICAgICAgbmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Jyb2FkY2FzdENoYW5uZWxS
ZWdpc3RyeTo6UmVnaXN0ZXJDaGFubmVsIHsgb3JpZ2luLCBuYW1lIH0sIDApOworICAgICAgICAg
ICAgbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Jyb2Fk
Y2FzdENoYW5uZWxSZWdpc3RyeTo6UmVnaXN0ZXJDaGFubmVsIHsgKmNsaWVudE9yaWdpbiwgbmFt
ZSB9LCAwKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0
cnkuaAppbmRleCBmYjM5OTY2Y2JhYTUyZDQzODFiNWZkZmY5ZjkxNDc1MDgyNzc2Y2ExLi4wYjZi
MWFjYTQ0YWMyZTdiMzA4OWVmMzVmOTVlMjEyZjI2OGI4YjI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lz
dHJ5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkJy
b2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oCkBAIC0yOCw2ICsyOCw4IEBACiAjaW5jbHVkZSAiQ29u
bmVjdGlvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9DbGllbnRPcmlnaW4uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Bh
cnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3Jp
Z2luLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKQEAgLTQ4LDkgKzUwLDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkpOwogICAgIH0KIAotICAgIHZvaWQgcmVnaXN0
ZXJDaGFubmVsKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgV2ViQ29yZTo6QnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXIpIGZpbmFsOwotICAgIHZvaWQg
dW5yZWdpc3RlckNoYW5uZWwoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllcikgZmluYWw7Ci0g
ICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCBjb25zdCBT
dHJpbmcmIG5hbWUsIFdlYkNvcmU6OkJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyIHNvdXJjZSwg
UmVmPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKSBmaW5hbDsKKyAgICB2b2lkIHJlZ2lzdGVyQ2hhbm5lbChjb25zdCBXZWJDb3Jl
OjpQYXJ0aXRpb25lZFNlY3VyaXR5T3JpZ2luJiwgY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3Jl
OjpCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllcikgZmluYWw7CisgICAgdm9pZCB1bnJlZ2lzdGVy
Q2hhbm5lbChjb25zdCBXZWJDb3JlOjpQYXJ0aXRpb25lZFNlY3VyaXR5T3JpZ2luJiwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllcikgZmluYWw7
CisgICAgdm9pZCBwb3N0TWVzc2FnZShjb25zdCBXZWJDb3JlOjpQYXJ0aXRpb25lZFNlY3VyaXR5
T3JpZ2luJiwgY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsSWRl
bnRpZmllciBzb3VyY2UsIFJlZjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CiAKICAgICB2b2lkIG5ldHdvcmtQcm9j
ZXNzQ3Jhc2hlZCgpOwogCkBAIC02MCw5ICs2Miw5IEBAIHByaXZhdGU6CiAgICAgV2ViQnJvYWRj
YXN0Q2hhbm5lbFJlZ2lzdHJ5KCkgPSBkZWZhdWx0OwogCiAgICAgdm9pZCBwb3N0TWVzc2FnZVRv
UmVtb3RlKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIGNvbnN0IFN0cmluZyYgbmFtZSwg
V2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKLSAgICB2b2lkIHBvc3RNZXNzYWdlTG9jYWxseShjb25zdCBXZWJDb3JlOjpDbGll
bnRPcmlnaW4mLCBjb25zdCBTdHJpbmcmIG5hbWUsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QnJv
YWRjYXN0Q2hhbm5lbElkZW50aWZpZXI+IHNvdXJjZUluUHJvY2VzcywgUmVmPFdlYkNvcmU6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgUmVmPFdURjo6Q2FsbGJhY2tBZ2dyZWdhdG9yPiYmKTsK
KyAgICB2b2lkIHBvc3RNZXNzYWdlTG9jYWxseShjb25zdCBXZWJDb3JlOjpQYXJ0aXRpb25lZFNl
Y3VyaXR5T3JpZ2luJiwgY29uc3QgU3RyaW5nJiBuYW1lLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyPiBzb3VyY2VJblByb2Nlc3MsIFJlZjxXZWJDb3Jl
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYsIFJlZjxXVEY6OkNhbGxiYWNrQWdncmVnYXRvcj4m
Jik7CiAKLSAgICBIYXNoTWFwPFdlYkNvcmU6OkNsaWVudE9yaWdpbiwgSGFzaE1hcDxTdHJpbmcs
IFZlY3RvcjxXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllcj4+PiBtX2NoYW5uZWxz
UGVyT3JpZ2luOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFydGl0aW9uZWRTZWN1cml0eU9yaWdp
biwgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsSWRlbnRp
Zmllcj4+PiBtX2NoYW5uZWxzUGVyT3JpZ2luOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYkJyb2Fk
Y2FzdENoYW5uZWxSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBw
b3J0L1dlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5jcHAKaW5kZXggNjRjNjRiMmNjYzFhNWQw
YmQ3NGQzYzA0ZTY4MTk0ODRiZjgyODJlNS4uNzliM2Q0ZTZjODRmNjJjODIzMTZlY2Q5NzAyY2Vl
ZDI3NDI1OGYxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9y
dC9XZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvV2ViQ29yZVN1cHBvcnQvV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmNwcApAQCAtNDQs
NyArNDQsNyBAQCBSZWY8V2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5PiBXZWJCcm9hZGNhc3RD
aGFubmVsUmVnaXN0cnk6OmdldE9yQ3JlYXRlKGJvb2wgcAogICAgIHJldHVybiByZWdpc3RyeTsK
IH0KIAotdm9pZCBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6OnJlZ2lzdGVyQ2hhbm5lbChj
b25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBX
ZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllciBpZGVudGlmaWVyKQordm9pZCBXZWJC
cm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6OnJlZ2lzdGVyQ2hhbm5lbChjb25zdCBXZWJDb3JlOjpQ
YXJ0aXRpb25lZFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgV2Vi
Q29yZTo6QnJvYWRjYXN0Q2hhbm5lbElkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGF1dG8mIGNoYW5uZWxzRm9yT3JpZ2luID0gbV9jaGFu
bmVscy5lbnN1cmUob3JpZ2luLCBbXSB7IHJldHVybiBOYW1lVG9DaGFubmVsSWRlbnRpZmllcnNN
YXAgeyB9OyB9KS5pdGVyYXRvci0+dmFsdWU7CkBAIC01Myw3ICs1Myw3IEBAIHZvaWQgV2ViQnJv
YWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5OjpyZWdpc3RlckNoYW5uZWwoY29uc3QgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luJiBvCiAgICAgY2hhbm5lbHNGb3JOYW1lLmFwcGVuZChpZGVudGlmaWVyKTsKIH0K
IAotdm9pZCBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6OnVucmVnaXN0ZXJDaGFubmVsKGNv
bnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdl
YkNvcmU6OkJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyIGlkZW50aWZpZXIpCit2b2lkIFdlYkJy
b2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6dW5yZWdpc3RlckNoYW5uZWwoY29uc3QgV2ViQ29yZTo6
UGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdl
YkNvcmU6OkJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBhdXRvIGNoYW5uZWxzRm9yT3JpZ2luSXRlcmF0b3Ig
PSBtX2NoYW5uZWxzLmZpbmQob3JpZ2luKTsKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBXZWJCcm9h
ZGNhc3RDaGFubmVsUmVnaXN0cnk6OnVucmVnaXN0ZXJDaGFubmVsKGNvbnN0IFdlYkNvcmU6OkNs
aWVudE9yaWdpbiYKICAgICBjaGFubmVsc0Zvck5hbWVJdGVyYXRvci0+dmFsdWUucmVtb3ZlRmly
c3QoaWRlbnRpZmllcik7CiB9CiAKLXZvaWQgV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Ojpw
b3N0TWVzc2FnZShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllciBzb3VyY2UsIFJl
ZjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJCcm9hZGNhc3RDaGFu
bmVsUmVnaXN0cnk6OnBvc3RNZXNzYWdlKGNvbnN0IFdlYkNvcmU6OlBhcnRpdGlvbmVkU2VjdXJp
dHlPcmlnaW4mIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpCcm9hZGNhc3RD
aGFubmVsSWRlbnRpZmllciBzb3VyY2UsIFJlZjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWU+JiYgbWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgYXV0byBjYWxsYmFja0Fn
Z3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0
L1dlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJD
b3JlU3VwcG9ydC9XZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkuaAppbmRleCA1ZDBkMTUwZWY5
ZTBmMTM1NjNlMjMzZmJlY2Y3NmI2NmE1MGVlZmM5Li4zYTYyZWI2MWQzNTA1NWQyYWMzOGM3YzJj
NGVkNjVhZTIxNDBmYjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVT
dXBwb3J0L1dlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LmgKQEAgLTI0
LDcgKzI0LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8V2ViQ29yZS9Ccm9hZGNhc3RDaGFubmVsUmVn
aXN0cnkuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0NsaWVudE9yaWdpbi5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvUGFydGl0aW9uZWRTZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIApAQCAtMzQsMTMgKzM0LDEzIEBAIGNsYXNz
IFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeSA6IHB1YmxpYyBXZWJDb3JlOjpCcm9hZGNhc3RD
aGFubmVsUmVnaXN0cnksIHB1CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJCcm9hZGNhc3RD
aGFubmVsUmVnaXN0cnk+IGdldE9yQ3JlYXRlKGJvb2wgcHJpdmF0ZVNlc3Npb24pOwogCi0gICAg
dm9pZCByZWdpc3RlckNoYW5uZWwoY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpCcm9hZGNhc3RDaGFubmVsSWRlbnRpZmllcikgZmluYWw7
Ci0gICAgdm9pZCB1bnJlZ2lzdGVyQ2hhbm5lbChjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4m
LCBjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVy
KSBmaW5hbDsKLSAgICB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdp
biYsIGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6QnJvYWRjYXN0Q2hhbm5lbElkZW50aWZp
ZXIgc291cmNlLCBSZWY8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOworICAgIHZvaWQgcmVnaXN0ZXJDaGFubmVsKGNv
bnN0IFdlYkNvcmU6OlBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4mLCBjb25zdCBTdHJpbmcmIG5h
bWUsIFdlYkNvcmU6OkJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyKSBmaW5hbDsKKyAgICB2b2lk
IHVucmVnaXN0ZXJDaGFubmVsKGNvbnN0IFdlYkNvcmU6OlBhcnRpdGlvbmVkU2VjdXJpdHlPcmln
aW4mLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkJyb2FkY2FzdENoYW5uZWxJZGVudGlm
aWVyKSBmaW5hbDsKKyAgICB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFdlYkNvcmU6OlBhcnRpdGlv
bmVkU2VjdXJpdHlPcmlnaW4mLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkJyb2FkY2Fz
dENoYW5uZWxJZGVudGlmaWVyIHNvdXJjZSwgUmVmPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKIAogcHJpdmF0ZToK
ICAgICBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnkoKSA9IGRlZmF1bHQ7CiAKICAgICB1c2lu
ZyBOYW1lVG9DaGFubmVsSWRlbnRpZmllcnNNYXAgPSBIYXNoTWFwPFN0cmluZywgVmVjdG9yPFdl
YkNvcmU6OkJyb2FkY2FzdENoYW5uZWxJZGVudGlmaWVyPj47Ci0gICAgSGFzaE1hcDxXZWJDb3Jl
OjpDbGllbnRPcmlnaW4sIE5hbWVUb0NoYW5uZWxJZGVudGlmaWVyc01hcD4gbV9jaGFubmVsczsK
KyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhcnRpdGlvbmVkU2VjdXJpdHlPcmlnaW4sIE5hbWVUb0No
YW5uZWxJZGVudGlmaWVyc01hcD4gbV9jaGFubmVsczsKIH07CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0No
YW5nZUxvZwppbmRleCAzOGQ2NzM1NWQ0Nzg5YzFhM2ViZTExNjAyZTVkODU1YWQ4NDQ1MDhkLi5m
ZjY5NGNjZTI3OTRlNWEzOGEyZjRmMWMzYzNkNjlhNWFiZmNmNTQzIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMi0wMy0yMSAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEJyb2FkY2FzdENoYW5uZWwgaW5zdGFuY2Vz
IGluIGRpc3RpbmN0IG9wYXF1ZSBvcmlnaW5zIGNhbiBjb21tdW5pY2F0ZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MDkwCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS85MDUxMTE1NT4KKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVu
c2VuLgorCisgICAgICAgIEltcG9ydCB3ZWItcGxhdGZvcm0tdGVzdHMgdGVzdCBjb3ZlcmFnZS4K
KworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hh
bm5lbC9vcGFxdWUtb3JpZ2luLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBs
YXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL29wYXF1ZS1vcmlnaW4u
aHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9i
cm9hZGNhc3RjaGFubmVsL3czYy1pbXBvcnQubG9nOgorCiAyMDIyLTAzLTIxICBaaXJhbiBTdW4g
IDx6c3VuQGlnYWxpYS5jb20+CiAKICAgICAgICAgW3NlbGVjdGlvbl0gSFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQ6OnN1YnRyZWVIYXNDaGFuZ2VkKCkgc2hvdWxkbid0IGJlIGNhbGxlZCBpbiBz
ZXRSYW5nZVRleHQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvb3BhcXVlLW9yaWdpbi1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL29wYXF1ZS1vcmlnaW4tZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmZlOTFjOWIwMzJjMzVmMDJkNDkxZWY1MmUzYzk1YzgzMGZhMjA3MzIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL29wYXF1ZS1vcmlnaW4tZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIE9wYXF1ZSBvcmlnaW4gc2hvdWxkIGJlIHNlcmlh
bGl6ZWQgdG8gIm51bGwiCitQQVNTIEJyb2FkY2FzdENoYW5uZWwgbWVzc2FnZXMgZnJvbSBvcGFx
dWUgb3JpZ2lucyBzaG91bGQgYmUgc2VsZi1jb250YWluZWQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRj
YXN0Y2hhbm5lbC9vcGFxdWUtb3JpZ2luLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL29wYXF1ZS1v
cmlnaW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZjMwODczYmUyMjdmYWQyZTUwZTM4MzM4N2MwNjA2YmE3
NGFhMDJjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9vcGFxdWUtb3JpZ2lu
Lmh0bWwKQEAgLTAsMCArMSw4NSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgY2hhcnNldD11dGYtOD4KKzx0aXRsZT48L3RpdGxlPgorPHNjcmlwdCBzcmM9L3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcz48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPS9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanM+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+Cis8
IS0tCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkg
PT4geworICAgIGxldCBpZnIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAg
ICBpZnIuc3JjID0KKyAgICAgICJkYXRhOnRleHQvaHRtbCw8c2NyaXB0PiBsZXQgYmMgPSBuZXcg
QnJvYWRjYXN0Q2hhbm5lbChcInRlc3RcIik7IiArCisgICAgICAiYmMub25tZXNzYWdlID0gKGUp
ID0+IHsiICsKKyAgICAgICIgIGlmIChlLmRhdGEgPT0gXCJwaW5nXCIpIGJjLnBvc3RNZXNzYWdl
KCdwb25nJyk7IisKKyAgICAgICIgIGVsc2UgcGFyZW50LnBvc3RNZXNzYWdlKHt3b3JrZXJNZXNz
YWdlT3JpZ2luOiBlLmRhdGEsIG1lc3NhZ2VPcmlnaW46IGUub3JpZ2lufSwgXCIqXCIpOyB9OyIg
KworICAgICAgIm5ldyBXb3JrZXIoVVJMLmNyZWF0ZU9iamVjdFVSTChuZXcgQmxvYihbXCIiICsK
KyAgICAgICJsZXQgYmMyID0gbmV3IEJyb2FkY2FzdENoYW5uZWwoJ3Rlc3QnKTsgYmMyLnBvc3RN
ZXNzYWdlKCdwaW5nJyk7ICIgKworICAgICAgImJjMi5vbm1lc3NhZ2UgPSBlID0+IGJjMi5wb3N0
TWVzc2FnZShlLm9yaWdpbik7IiArCisgICAgICAiXCJdLCB7dHlwZTogJ3RleHQvamF2YXNjcmlw
dCd9KSkpOyA8L3NjcmlwdD4iOworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdl
IiwgdC5zdGVwX2Z1bmMoZSA9PiB7CisgICAgICAgIGFzc2VydF9lcXVhbHMoZS5kYXRhLndvcmtl
ck1lc3NhZ2VPcmlnaW4sICJudWxsIik7CisgICAgICAgIGFzc2VydF9lcXVhbHMoZS5kYXRhLm1l
c3NhZ2VPcmlnaW4sICJudWxsIik7CisgICAgICAgIHJlc29sdmUoKTsKKyAgICAgIH0pLCB7b25j
ZTogdHJ1ZX0pOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4geyBkb2N1bWVudC5ib2R5LnJlbW92
ZUNoaWxkKGlmcikgfSk7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnIpOworICAg
IH0pOworfSwgIk9wYXF1ZSBvcmlnaW4gc2hvdWxkIGJlIHNlcmlhbGl6ZWQgdG8gXCJudWxsXCIi
KTsKKworCitjb25zdCBpZnJhbWVfc3JjID0gKGNoYW5uZWxfbmFtZSwgaWZyYW1lX25hbWUpID0+
IGBkYXRhOnRleHQvaHRtbCw8c2NyaXB0PgorbGV0IGJjMiA9IG5ldyBCcm9hZGNhc3RDaGFubmVs
KCIke2NoYW5uZWxfbmFtZX0iKTsKK2JjMi5vbm1lc3NhZ2UgPSAoZSkgPT4geworICBpZiAoZS5k
YXRhID09ICJmcm9tLSR7aWZyYW1lX25hbWV9IikgeworICAgIHBhcmVudC5wb3N0TWVzc2FnZSgi
JHtpZnJhbWVfbmFtZX0tZG9uZSIsICIqIik7CisgIH0gZWxzZSB7CisgICAgcGFyZW50LnBvc3RN
ZXNzYWdlKCJmYWlsIiwgIioiKTsKKyAgfQorfTsKK2xldCBiYzMgPSBuZXcgQnJvYWRjYXN0Q2hh
bm5lbCgiJHtjaGFubmVsX25hbWV9Iik7CitiYzMucG9zdE1lc3NhZ2UoImZyb20tJHtpZnJhbWVf
bmFtZX0iKTsKKzwvc2NyaXB0PmA7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgcmV0dXJuIG5l
dyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICBjb25zdCBjaGFubmVsX25hbWUg
PSAib3BhcXVlLW9yaWdpbi10ZXN0LTIiOworICAgIGNvbnN0IGJjMSA9IG5ldyBCcm9hZGNhc3RD
aGFubmVsKGNoYW5uZWxfbmFtZSk7CisgICAgYmMxLm9ubWVzc2FnZSA9IHQudW5yZWFjaGVkX2Z1
bmMoIlJlY2VpdmVkIG1lc3NhZ2UgZnJvbSBhbiBvcGFxdWUgb3JpZ2luIik7CisKKyAgICAvLyBX
ZSdsbCBjcmVhdGUgYW4gaWZyYW1lIGFuZCBoYXZlIGl0IHNlbmQgYSBCcm9hZGNhc3RDaGFubmVs
IG1lc3NhZ2UKKyAgICAvLyBiZXR3ZWVuIHR3byBpbnN0YW5jZXMuIE9uY2UgdGhlIG1lc3NhZ2Ug
aXMgcmVjZWl2ZWQsIGl0IHdpbGwgcG9zdE1lc3NhZ2UKKyAgICAvLyBiYWNrIGFuZCB3ZSdsbCBy
ZXBlYXQgdGhpcyB3aXRoIGFub3RoZXIgaWZyYW1lLiBJZiB0aGUgZmlyc3QKKyAgICAvLyBCcm9h
ZGNhc3RDaGFubmVsIG1lc3NhZ2UgaXMgcmVjZWl2ZWQgYnkgYGJjMWAsIG9yIGlmIHRoZSBzZWNv
bmQKKyAgICAvLyBCcm9hZGNhc3RDaGFubmVsIG1lc3NhZ2UgaXMgcmVjZWl2ZWQgYnkgYGJjMWAg
b3IgYGJjMmAgaW4gdGhlIGZpcnN0CisgICAgLy8gaWZyYW1lLCB0aGVuIHRoZSB0ZXN0IHNob3Vs
ZCBmYWlsLgorCisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBlID0+IHsK
KyAgICAgIGlmKGUuZGF0YSA9PSAiaWZyYW1lMS1kb25lIikgeworICAgICAgICBsZXQgaWZyYW1l
MiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgICAgICBpZnJhbWUyLnNy
YyA9IGlmcmFtZV9zcmMoY2hhbm5lbF9uYW1lLCAiaWZyYW1lMiIpOworICAgICAgICB0LmFkZF9j
bGVhbnVwKCgpID0+IHsgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChpZnJhbWUyKSB9KTsKKyAg
ICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWUyKTsKKyAgICAgIH0gZWxzZSBp
ZihlLmRhdGEgPT0gImlmcmFtZTItZG9uZSIpIHsKKyAgICAgICAgcmVzb2x2ZSgpOworICAgICAg
fSBlbHNlIGlmKGUuZGF0YSA9PSAiZmFpbCIpIHsKKyAgICAgICAgcmVqZWN0KCJPbmUgb3BhcXVl
IG9yaWdpbiByZWNlaXZlZCBhIG1lc3NhZ2UgZnJvbSB0aGUgb3RoZXIiKTsKKyAgICAgIH0gZWxz
ZSB7CisgICAgICAgIHJlamVjdCgiQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cnJlZCIpOworICAg
ICAgfQorICAgIH0pOworCisgICAgbGV0IGlmcmFtZTEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJpZnJhbWUiKTsKKyAgICBpZnJhbWUxLnNyYyA9IGlmcmFtZV9zcmMoY2hhbm5lbF9uYW1lLCAi
aWZyYW1lMSIpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4geyBkb2N1bWVudC5ib2R5LnJlbW92
ZUNoaWxkKGlmcmFtZTEpIH0pOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1l
MSk7CisgICAgfSk7Cit9LCAiQnJvYWRjYXN0Q2hhbm5lbCBtZXNzYWdlcyBmcm9tIG9wYXF1ZSBv
cmlnaW5zIHNob3VsZCBiZSBzZWxmLWNvbnRhaW5lZCIpOworLy8tLT4KKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC93M2MtaW1wb3J0Lmxv
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2Fn
aW5nL2Jyb2FkY2FzdGNoYW5uZWwvdzNjLWltcG9ydC5sb2cKaW5kZXggODU5MmYwMWRkMzYzOTcw
MWFjOGIwNDY4MTU3Zjg2YzQ3YjZlN2UxYi4uZTY1NWUwNjNjNDA3NmVlNzgxOTZhZTVmN2U1NjBm
NWU5NWQwODQ4NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC93M2MtaW1wb3J0LmxvZwor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3Nh
Z2luZy9icm9hZGNhc3RjaGFubmVsL3czYy1pbXBvcnQubG9nCkBAIC0xOSw2ICsxOSw3IEBAIExp
c3Qgb2YgZmlsZXM6CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93ZWJtZXNzYWdpbmcvYnJvYWRjYXN0Y2hhbm5lbC9jcm9zcy1vcmlnaW4uaHRtbAogL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2Fk
Y2FzdGNoYW5uZWwvZGV0YWNoZWQtaWZyYW1lLmh0bWwKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL2ludGVy
ZmFjZS5hbnkuanMKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYm1lc3NhZ2luZy9icm9hZGNhc3RjaGFubmVsL29wYXF1ZS1vcmlnaW4uaHRtbAogL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2Fk
Y2FzdGNoYW5uZWwvb3JkZXJpbmcuaHRtbAogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2VibWVzc2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvb3JpZ2luLndpbmRv
dy5qcwogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VibWVz
c2FnaW5nL2Jyb2FkY2FzdGNoYW5uZWwvc2FuZGJveC5odG1sCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>