<?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>222838</bug_id>
          
          <creation_ts>2021-03-05 15:31:04 -0800</creation_ts>
          <short_desc>PCM: Align fraud prevention token naming with issue 73 in the Privacy CG repo</short_desc>
          <delta_ts>2021-03-08 11:52:04 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="John Wilander">wilander</reporter>
          <assigned_to name="John Wilander">wilander</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1736601</commentid>
    <comment_count>0</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-03-05 15:31:04 -0800</bug_when>
    <thetext>The below names for fraud prevention token link attribute, well-known locations, and report fields were suggested in https://github.com/privacycg/private-click-measurement/issues/73 and we should update WebKit’s implementation accordingly.

# Link Attribute

attributionsourcenonce/attributionSourceNonce: This is the random nonce the click source provides so that subsequent requests for signing an unlinkable token can be done with knowledge of the context of the click even though the user has left the click source webpage.

Example: &lt;a href=&quot;https://shop.example&quot; attributionsourceid=&quot;55&quot; attributeon=&quot;https://shop.example&quot; attributionsourcenonce=&quot;ABCDEFabcdef0123456789&quot;&gt;Link to be measured&lt;/a&gt;


# Well-Known Locations

/.well-known/private-click-measurement/sign-unlinkable-token/: This is the well-known location where the browser sends an unlinkable token together with the attribution source nonce to get a token signature.

/.well-known/private-click-measurement/get-token-public-key/: This is the well-known location where the browser fetches the public key associated with the private key used for signing tokens. Note that this key is associated with signatures that validate both unlinkable and secret tokens.


# Attribution Report Fields

source_secret_token: This field in the JSON report will contain the secret token associated with the unlinkable token signed by the click source. Note that the source prefix is needed here to allow for a similar token from the attribute-on website.

source_secret_token_signature: This field in the JSON report will contain the secret token signature associated with the unlinkable token signature from the click source. Note that the source prefix is needed here to allow for a similar signature from the attribute-on website.

Example:

{
  &quot;source_engagement_type&quot;: &quot;click&quot;,
  &quot;source_site&quot;: &quot;https://news.example&quot;,
  &quot;source_id&quot;: 55,
  &quot;attributed_on_site&quot;: &quot;https://shop.example&quot;,
  &quot;trigger_data&quot;: 10,
  &quot;source_secret_token&quot;: &lt;encoded token&gt;,
  &quot;source_secret_token_signature&quot;: &lt;encoded signature&gt;,
  &quot;version&quot;: 2
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736602</commentid>
    <comment_count>1</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-03-05 15:31:25 -0800</bug_when>
    <thetext>&lt;rdar://75115427&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736619</commentid>
    <comment_count>2</comment_count>
      <attachid>422447</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-03-05 15:55:47 -0800</bug_when>
    <thetext>Created attachment 422447
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737148</commentid>
    <comment_count>3</comment_count>
      <attachid>422447</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-03-08 10:13:00 -0800</bug_when>
    <thetext>Comment on attachment 422447
Patch

Win bot build failure is unrelated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737161</commentid>
    <comment_count>4</comment_count>
      <attachid>422447</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-03-08 10:46:45 -0800</bug_when>
    <thetext>Comment on attachment 422447
Patch

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

I think the patch works as advertised, but I&apos;m a little confused by the source code name changes (at least in the context of the Issue 73).

&gt; Source/WebCore/loader/PrivateClickMeasurement.cpp:227
&gt; +void PrivateClickMeasurement::setSourceSecretToken(SourceSecretToken&amp;&amp; token)

I&apos;m a little confused by the code renaming. If &apos;sign-secret-token&apos; became &apos;sign-unlinkable-token&apos;, and &apos;get-unlinkable-token-public-key&apos; became &apos;get-token-public-key&apos; why all of this flipping of secret and unlinkable? It seems like sourceSecretToken -&gt; sourceUnlinkableToken makes sense, but why didn&apos;t &quot;setSourceUnlinkableToken&apos; just become &quot;setTokenPublicKey&quot; or something?

&gt; Source/WebCore/loader/PrivateClickMeasurement.h:298
&gt; +    struct SourceSecretToken {

If this used to represent the unlinkable token, why isn&apos;t this now called &apos;SourcePublicKeyToken&apos; or something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737166</commentid>
    <comment_count>5</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-03-08 10:55:54 -0800</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #4)
&gt; Comment on attachment 422447 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=422447&amp;action=review
&gt; 
&gt; I think the patch works as advertised, but I&apos;m a little confused by the
&gt; source code name changes (at least in the context of the Issue 73).
&gt; 
&gt; &gt; Source/WebCore/loader/PrivateClickMeasurement.cpp:227
&gt; &gt; +void PrivateClickMeasurement::setSourceSecretToken(SourceSecretToken&amp;&amp; token)
&gt; 
&gt; I&apos;m a little confused by the code renaming. If &apos;sign-secret-token&apos; became
&gt; &apos;sign-unlinkable-token&apos;, and &apos;get-unlinkable-token-public-key&apos; became
&gt; &apos;get-token-public-key&apos; why all of this flipping of secret and unlinkable? It
&gt; seems like sourceSecretToken -&gt; sourceUnlinkableToken makes sense, but why
&gt; didn&apos;t &quot;setSourceUnlinkableToken&apos; just become &quot;setTokenPublicKey&quot; or
&gt; something?
&gt; 
&gt; &gt; Source/WebCore/loader/PrivateClickMeasurement.h:298
&gt; &gt; +    struct SourceSecretToken {
&gt; 
&gt; If this used to represent the unlinkable token, why isn&apos;t this now called
&gt; &apos;SourcePublicKeyToken&apos; or something?

There are three pieces of data in flight here:
· The public key which is used to generate tokens and validate them.
· The unlinkable token which is sent to the click source website for signing right after a click.
· The secret token which is kept secret in the browser engine until it&apos;s time to send the attribution report. This token cannot be linked to the unlinkable token but the signature of the unlinkable token can be transformed to also be valid for the secret token. This is the magic of blinded signatures – you sign one token at Event A and later at Event B receive another token which you&apos;ve never seen before but with your own signature which proves that you trusted (an) Event A.

I&apos;ll go through the names you called out to make sure I didn&apos;t mess something up myself.

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737182</commentid>
    <comment_count>6</comment_count>
      <attachid>422447</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-03-08 11:34:06 -0800</bug_when>
    <thetext>Comment on attachment 422447
Patch

It looks correct after a check of the names you mentioned, Brent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737198</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-08 11:52:01 -0800</bug_when>
    <thetext>Committed r274087: &lt;https://commits.webkit.org/r274087&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 422447.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422447</attachid>
            <date>2021-03-05 15:55:47 -0800</date>
            <delta_ts>2021-03-08 11:52:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222838-20210305155546.patch</filename>
            <type>text/plain</type>
            <size>62984</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MDEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjMzYTE1ZDJmOWM1NzIw
YmQ3OWU2NzUwYzMyZTRmYmU5MzI5MGI2OC4uYjVhZmIxYjc5ZGZlYmYxYTA4NjlkZDgzMDU5MGMw
MzFlZTUzNmI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDIxLTAzLTA1ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFBDTTogQWxpZ24gZnJh
dWQgcHJldmVudGlvbiB0b2tlbiBuYW1pbmcgd2l0aCBpc3N1ZSA3MyBpbiB0aGUgUHJpdmFjeSBD
RyByZXBvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjI4MzgKKyAgICAgICAgPHJkYXI6Ly83NTExNTQyNz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGRvZXNuJ3QgY2hhbmdlIGZ1bmN0
aW9uYWxpdHkgYW5kIG9ubHkgYWxpZ25zIG5hbWluZyB0byB0aGlzIFczQyBQcml2YWN5IENHIGlz
c3VlOgorICAgICAgICBodHRwczovL2dpdGh1Yi5jb20vcHJpdmFjeWNnL3ByaXZhdGUtY2xpY2st
bWVhc3VyZW1lbnQvaXNzdWVzLzczCisKKyAgICAgICAgTmFtaW5nIGZvciBQQ00gZnJhdWQgcHJl
dmVudGlvbiBpcyB1cGRhdGVkIGxpa2UgdGhpczoKKworICAgICAgICAvLndlbGwta25vd24vcHJp
dmF0ZS1jbGljay1tZWFzdXJlbWVudC9zaWduLXNlY3JldC10b2tlbi8gY2hhbmdlZCB0bworICAg
ICAgICAvLndlbGwta25vd24vcHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudC9zaWduLXVubGlua2Fi
bGUtdG9rZW4vCisKKyAgICAgICAgLy53ZWxsLWtub3duL3ByaXZhdGUtY2xpY2stbWVhc3VyZW1l
bnQvZ2V0LXVubGlua2FibGUtdG9rZW4tcHVibGljLWtleS8gY2hhbmdlZCB0bworICAgICAgICAv
LndlbGwta25vd24vcHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudC9nZXQtdG9rZW4tcHVibGljLWtl
eS8KKworICAgICAgICBzb3VyY2Vfc2VjcmV0X3Rva2VuIGluIHJlcXVlc3RzIGZvciB0b2tlbiBz
aWduYXR1cmUgY2hhbmdlZCB0byBzb3VyY2VfdW5saW5rYWJsZV90b2tlbgorCisgICAgICAgIHNv
dXJjZV91bmxpbmthYmxlX3Rva2VuIGluIGF0dHJpYnV0aW9uIHJlcG9ydHMgY2hhbmdlZCB0byBz
b3VyY2Vfc2VjcmV0X3Rva2VuCisKKyAgICAgICAgVmFyaWFibGUsIG1lbWJlciwgYW5kIGZ1bmN0
aW9uIG5hbWVzIGFyZSBiZWluZyByZW5hbWVkIHNpbWlsYXJseS4KKworICAgICAgICAqIGxvYWRl
ci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6YXR0cmlidXRpb25SZXBvcnRKU09OIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50Ojp0b2tlblNpZ25hdHVyZUpTT04gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnNldFNvdXJj
ZVNlY3JldFRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpTb3VyY2VTZWNyZXRUb2tlbjo6aXNWYWxpZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6c2V0U291cmNlVW5saW5rYWJsZVRva2VuKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VVbmxp
bmthYmxlVG9rZW46OmlzVmFsaWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OnNldFNvdXJjZVVubGlua2FibGVUb2tlblZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50Ojpzb3VyY2VVbmxpbmthYmxlVG9rZW4gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnNldFNvdXJj
ZVNlY3JldFRva2VuVmFsdWUpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9jb2NvYS9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6OmNhbGN1bGF0ZUFuZFVwZGF0ZVNvdXJjZVVubGlua2FibGVUb2tlbik6
CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6Y2FsY3VsYXRlQW5k
VXBkYXRlU291cmNlU2VjcmV0VG9rZW4pOgorCiAyMDIxLTAzLTA1ICBEZXZpbiBSb3Vzc28gIDxk
cm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBbUGF5bWVudCBSZXF1ZXN0XSBpZiBgcmVxdWVz
dFNoaXBwaW5nOiBmYWxzZWAgdGhlbiB3ZSBzaG91bGQgbm90IHNob3cgYW55IGBQYXltZW50U2hp
cHBpbmdPcHRpb25gIGluIHRoZSBBcHBsZSBQYXkgc2hlZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYmRlY2QwY2Qy
ZGY0ZmY2OTA2OGZhYTFlZmEyZmMzN2RkNjFiMTY2Ny4uMmIzNDc1YjBhZWM5YTgwNjRjZGRlMGMx
MTg0NzViNjJmNjUwNzM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MSBAQAorMjAyMS0wMy0wNSAg
Sm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBQQ006IEFsaWdu
IGZyYXVkIHByZXZlbnRpb24gdG9rZW4gbmFtaW5nIHdpdGggaXNzdWUgNzMgaW4gdGhlIFByaXZh
Y3kgQ0cgcmVwbworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIyODM4CisgICAgICAgIDxyZGFyOi8vNzUxMTU0Mjc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBkb2Vzbid0IGNoYW5nZSBm
dW5jdGlvbmFsaXR5IGFuZCBvbmx5IGFsaWducyBuYW1pbmcgdG8gdGhpcyBXM0MgUHJpdmFjeSBD
RyBpc3N1ZToKKyAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL3ByaXZhY3ljZy9wcml2YXRlLWNs
aWNrLW1lYXN1cmVtZW50L2lzc3Vlcy83MworCisgICAgICAgIE5hbWluZyBmb3IgUENNIGZyYXVk
IHByZXZlbnRpb24gaXMgdXBkYXRlZCBsaWtlIHRoaXM6CisKKyAgICAgICAgLy53ZWxsLWtub3du
L3ByaXZhdGUtY2xpY2stbWVhc3VyZW1lbnQvc2lnbi1zZWNyZXQtdG9rZW4vIGNoYW5nZWQgdG8K
KyAgICAgICAgLy53ZWxsLWtub3duL3ByaXZhdGUtY2xpY2stbWVhc3VyZW1lbnQvc2lnbi11bmxp
bmthYmxlLXRva2VuLworCisgICAgICAgIC8ud2VsbC1rbm93bi9wcml2YXRlLWNsaWNrLW1lYXN1
cmVtZW50L2dldC11bmxpbmthYmxlLXRva2VuLXB1YmxpYy1rZXkvIGNoYW5nZWQgdG8KKyAgICAg
ICAgLy53ZWxsLWtub3duL3ByaXZhdGUtY2xpY2stbWVhc3VyZW1lbnQvZ2V0LXRva2VuLXB1Ymxp
Yy1rZXkvCisKKyAgICAgICAgc291cmNlX3NlY3JldF90b2tlbiBpbiByZXF1ZXN0cyBmb3IgdG9r
ZW4gc2lnbmF0dXJlIGNoYW5nZWQgdG8gc291cmNlX3VubGlua2FibGVfdG9rZW4KKworICAgICAg
ICBzb3VyY2VfdW5saW5rYWJsZV90b2tlbiBpbiBhdHRyaWJ1dGlvbiByZXBvcnRzIGNoYW5nZWQg
dG8gc291cmNlX3NlY3JldF90b2tlbgorCisgICAgICAgIFZhcmlhYmxlLCBtZW1iZXIsIGFuZCBm
dW5jdGlvbiBuYW1lcyBhcmUgYmVpbmcgcmVuYW1lZCBzaW1pbGFybHkuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OmJ1aWxkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tRGF0YWJhc2UpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6OnNldFBDTUZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmcpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0RnJhdWRQcmV2ZW50aW9uVmFsdWVz
Rm9yVGVzdGluZyk6IERlbGV0ZWQuCisgICAgICAgICAgICBSZW5hbWVkIHNldFBDTUZyYXVkUHJl
dmVudGlvblZhbHVlc0ZvclRlc3RpbmcoKSB0byBtYWtlIGl0IG1vcmUgY2xlYXIuCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpz
ZXRQQ01GcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Nlc3Npb246OnNldEZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmcpOiBEZWxl
dGVkLgorICAgICAgICAgICAgUmVuYW1lZCBzZXRQQ01GcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JU
ZXN0aW5nKCkgdG8gbWFrZSBpdCBtb3JlIGNsZWFyLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtTZXNzaW9uLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRNYW5hZ2VyOjpzdG9yZVVuYXR0cmlidXRlZCk6CisgICAgICAgIChXZWJLaXQ6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Z2V0VG9rZW5QdWJsaWNLZXkpOgorICAgICAg
ICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmdldFNpZ25lZFVubGlu
a2FibGVUb2tlbik6CisgICAgICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFu
YWdlcjo6c2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZyk6CisgICAgICAgIChX
ZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Z2V0U2lnbmVkU2VjcmV0VG9r
ZW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1h
bmFnZXI6OnNldEZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmcpOiBEZWxldGVkLgorICAg
ICAgICAgICAgUmVuYW1lZCBzZXRQQ01GcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nKCkg
dG8gbWFrZSBpdCBtb3JlIGNsZWFyLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2UuY3BwOgorICAgICAgICAoV0tQYWdlU2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVz
dGluZyk6CisgICAgICAgIChXS1BhZ2VTZXRGcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5n
KTogRGVsZXRlZC4KKyAgICAgICAgICAgIFJlbmFtZWQgV0tQYWdlU2V0UENNRnJhdWRQcmV2ZW50
aW9uVmFsdWVzRm9yVGVzdGluZygpIHRvIG1ha2UgaXQgbW9yZSBjbGVhci4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0MvV0tQYWdlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFBDTUZyYXVk
UHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnNldEZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAg
ICAgICAgUmVuYW1lZCBzZXRQQ01GcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nKCkgdG8g
bWFrZSBpdCBtb3JlIGNsZWFyLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoK
KwogMjAyMS0wMy0wNSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGdub21lLm9yZz4K
IAogICAgICAgICBbR1RLXSBDbGVhbiB1cCBHVEstc3BlY2lmaWMgdGV4dCBjaGVja2VyIHN0dWZm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNw
cAppbmRleCBlNTY1ZGZiZWU5ZmZkMTM3ZjVjNjc1ZDFhMmU1YTgwODk1OWU2MGQ5Li41ODQ3Yjk5
MzJiY2Q4NzRhYzAyZDI5ZmRjMGU4NGY0ZmE2ZjU3NmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5jcHAKQEAgLTM3LDggKzM3LDggQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IGNoYXIgcHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRUcmlnZ2VyQXR0cmlidXRpb25QYXRoW10gPSAiLy53ZWxsLWtub3duL3ByaXZhdGUt
Y2xpY2stbWVhc3VyZW1lbnQvdHJpZ2dlci1hdHRyaWJ1dGlvbi8iOwotc3RhdGljIGNvbnN0IGNo
YXIgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblNpZ25hdHVyZVBhdGhbXSA9ICIvLndlbGwt
a25vd24vcHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudC9zaWduLXNlY3JldC10b2tlbi8iOwotc3Rh
dGljIGNvbnN0IGNoYXIgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVBhdGhb
XSA9ICIvLndlbGwta25vd24vcHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudC9nZXQtdW5saW5rYWJs
ZS10b2tlbi1wdWJsaWMta2V5LyI7CitzdGF0aWMgY29uc3QgY2hhciBwcml2YXRlQ2xpY2tNZWFz
dXJlbWVudFRva2VuU2lnbmF0dXJlUGF0aFtdID0gIi8ud2VsbC1rbm93bi9wcml2YXRlLWNsaWNr
LW1lYXN1cmVtZW50L3NpZ24tdW5saW5rYWJsZS10b2tlbi8iOworc3RhdGljIGNvbnN0IGNoYXIg
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVBhdGhbXSA9ICIvLndlbGwta25v
d24vcHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudC9nZXQtdG9rZW4tcHVibGljLWtleS8iOwogc3Rh
dGljIGNvbnN0IGNoYXIgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRSZXBvcnRBdHRyaWJ1dGlvblBh
dGhbXSA9ICIvLndlbGwta25vd24vcHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudC9yZXBvcnQtYXR0
cmlidXRpb24vIjsKIGNvbnN0IHNpemVfdCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0
aW9uVHJpZ2dlckRhdGFQYXRoU2VnbWVudFNpemUgPSAyOwogY29uc3Qgc2l6ZV90IHByaXZhdGVD
bGlja01lYXN1cmVtZW50UHJpb3JpdHlQYXRoU2VnbWVudFNpemUgPSAyOwpAQCAtMTQ2LDkgKzE0
NiwxMCBAQCBSZWY8SlNPTjo6T2JqZWN0PiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6YXR0cmli
dXRpb25SZXBvcnRKU09OKCkgY29uc3QKICAgICByZXBvcnREZXRhaWxzLT5zZXRJbnRlZ2VyKCJ0
cmlnZ2VyX2RhdGEiX3MsIG1fYXR0cmlidXRpb25UcmlnZ2VyRGF0YS0+ZGF0YSk7CiAgICAgcmVw
b3J0RGV0YWlscy0+c2V0SW50ZWdlcigidmVyc2lvbiJfcywgMik7CiAKLSAgICBpZiAobV9zb3Vy
Y2VVbmxpbmthYmxlVG9rZW4pIHsKLSAgICAgICAgcmVwb3J0RGV0YWlscy0+c2V0U3RyaW5nKCJz
b3VyY2VfdW5saW5rYWJsZV90b2tlbiJfcywgbV9zb3VyY2VVbmxpbmthYmxlVG9rZW4tPnRva2Vu
QmFzZTY0VVJMKTsKLSAgICAgICAgcmVwb3J0RGV0YWlscy0+c2V0U3RyaW5nKCJzb3VyY2VfdW5s
aW5rYWJsZV90b2tlbl9zaWduYXR1cmUiX3MsIG1fc291cmNlVW5saW5rYWJsZVRva2VuLT5zaWdu
YXR1cmVCYXNlNjRVUkwpOworICAgIC8vIFRoaXMgdG9rZW4gaGFzIGJlZW4ga2VwdCBzZWNyZXQg
dGhpcyBmYXIgYW5kIGNhbm5vdCBiZSBsaW5rZWQgdG8gdGhlIHVubGlua2FibGUgdG9rZW4uCisg
ICAgaWYgKG1fc291cmNlU2VjcmV0VG9rZW4pIHsKKyAgICAgICAgcmVwb3J0RGV0YWlscy0+c2V0
U3RyaW5nKCJzb3VyY2Vfc2VjcmV0X3Rva2VuIl9zLCBtX3NvdXJjZVNlY3JldFRva2VuLT50b2tl
bkJhc2U2NFVSTCk7CisgICAgICAgIHJlcG9ydERldGFpbHMtPnNldFN0cmluZygic291cmNlX3Nl
Y3JldF90b2tlbl9zaWduYXR1cmUiX3MsIG1fc291cmNlU2VjcmV0VG9rZW4tPnNpZ25hdHVyZUJh
c2U2NFVSTCk7CiAgICAgfQogCiAgICAgcmV0dXJuIHJlcG9ydERldGFpbHM7CkBAIC0yMTIsMjQg
KzIxMywyNSBAQCBSZWY8SlNPTjo6T2JqZWN0PiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6dG9r
ZW5TaWduYXR1cmVKU09OKCkgY29uc3QKICAgICBpZiAoIW1fZXBoZW1lcmFsU291cmNlTm9uY2Ug
fHwgIW1fZXBoZW1lcmFsU291cmNlTm9uY2UtPmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIHJl
cG9ydERldGFpbHM7CiAKLSAgICBpZiAobV9zb3VyY2VTZWNyZXRUb2tlbi52YWx1ZUJhc2U2NFVS
TC5pc0VtcHR5KCkpCisgICAgaWYgKG1fc291cmNlVW5saW5rYWJsZVRva2VuLnZhbHVlQmFzZTY0
VVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHJlcG9ydERldGFpbHM7CiAKICAgICByZXBv
cnREZXRhaWxzLT5zZXRTdHJpbmcoInNvdXJjZV9lbmdhZ2VtZW50X3R5cGUiX3MsICJjbGljayJf
cyk7CiAgICAgcmVwb3J0RGV0YWlscy0+c2V0U3RyaW5nKCJzb3VyY2Vfbm9uY2UiX3MsIG1fZXBo
ZW1lcmFsU291cmNlTm9uY2UtPm5vbmNlKTsKLSAgICByZXBvcnREZXRhaWxzLT5zZXRTdHJpbmco
InNvdXJjZV9zZWNyZXRfdG9rZW4iX3MsIG1fc291cmNlU2VjcmV0VG9rZW4udmFsdWVCYXNlNjRV
UkwpOworICAgIC8vIFRoaXMgdG9rZW4gY2FuIG5vdCBiZSBsaW5rZWQgdG8gdGhlIHNlY3JldCB0
b2tlbi4KKyAgICByZXBvcnREZXRhaWxzLT5zZXRTdHJpbmcoInNvdXJjZV91bmxpbmthYmxlX3Rv
a2VuIl9zLCBtX3NvdXJjZVVubGlua2FibGVUb2tlbi52YWx1ZUJhc2U2NFVSTCk7CiAgICAgcmVw
b3J0RGV0YWlscy0+c2V0SW50ZWdlcigidmVyc2lvbiJfcywgMik7CiAgICAgcmV0dXJuIHJlcG9y
dERldGFpbHM7CiB9CiAKLXZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnNldFNvdXJjZVVu
bGlua2FibGVUb2tlbihTb3VyY2VVbmxpbmthYmxlVG9rZW4mJiB0b2tlbikKK3ZvaWQgUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OnNldFNvdXJjZVNlY3JldFRva2VuKFNvdXJjZVNlY3JldFRva2Vu
JiYgdG9rZW4pCiB7CiAgICAgaWYgKCF0b2tlbi5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsK
LSAgICBtX3NvdXJjZVVubGlua2FibGVUb2tlbiA9IFdURk1vdmUodG9rZW4pOworICAgIG1fc291
cmNlU2VjcmV0VG9rZW4gPSBXVEZNb3ZlKHRva2VuKTsKIH0KIAotYm9vbCBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6U291cmNlVW5saW5rYWJsZVRva2VuOjppc1ZhbGlkKCkgY29uc3QKK2Jvb2wg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNlY3JldFRva2VuOjppc1ZhbGlkKCkgY29u
c3QKIHsKICAgICByZXR1cm4gISh0b2tlbkJhc2U2NFVSTC5pc0VtcHR5KCkgfHwgc2lnbmF0dXJl
QmFzZTY0VVJMLmlzRW1wdHkoKSB8fCBrZXlJREJhc2U2NFVSTC5pc0VtcHR5KCkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaAppbmRleCAz
MjhjNWQyMzVmNDVmOWMwN2I5MDAwZmQzN2Y0M2U4ZDQxNDdkMzIwLi5mN2M0MWU2NmMzN2MyMDZk
MjI5MGM1NjNkYTFkZWYwZDk4NDEyNmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaApAQCAtMjk1LDcgKzI5NSw3IEBAIHB1YmxpYzoKICAg
ICBPcHRpb25hbDxFcGhlbWVyYWxTb3VyY2VOb25jZT4gZXBoZW1lcmFsU291cmNlTm9uY2UoKSBj
b25zdCB7IHJldHVybiBtX2VwaGVtZXJhbFNvdXJjZU5vbmNlOyB9OwogICAgIHZvaWQgY2xlYXJF
cGhlbWVyYWxTb3VyY2VOb25jZSgpIHsgbV9lcGhlbWVyYWxTb3VyY2VOb25jZS5yZXNldCgpOyB9
OwogCi0gICAgc3RydWN0IFNvdXJjZVVubGlua2FibGVUb2tlbiB7CisgICAgc3RydWN0IFNvdXJj
ZVNlY3JldFRva2VuIHsKICAgICAgICAgU3RyaW5nIHRva2VuQmFzZTY0VVJMOwogICAgICAgICBT
dHJpbmcgc2lnbmF0dXJlQmFzZTY0VVJMOwogICAgICAgICBTdHJpbmcga2V5SURCYXNlNjRVUkw7
CkBAIC0zMDQsMTMgKzMwNCwxMyBAQCBwdWJsaWM6CiAgICAgfTsKIAogI2lmIFBMQVRGT1JNKENP
Q09BKQotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY2FsY3VsYXRlQW5kVXBkYXRlU291cmNlU2Vj
cmV0VG9rZW4oY29uc3QgU3RyaW5nJiBzZXJ2ZXJQdWJsaWNLZXlCYXNlNjRVUkwpOwotICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgY2FsY3VsYXRlQW5kVXBkYXRlU291cmNlVW5saW5rYWJsZVRva2Vu
KGNvbnN0IFN0cmluZyYgc2VydmVyUmVzcG9uc2VCYXNlNjRVUkwpOworICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgY2FsY3VsYXRlQW5kVXBkYXRlU291cmNlVW5saW5rYWJsZVRva2VuKGNvbnN0IFN0
cmluZyYgc2VydmVyUHVibGljS2V5QmFzZTY0VVJMKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGNhbGN1bGF0ZUFuZFVwZGF0ZVNvdXJjZVNlY3JldFRva2VuKGNvbnN0IFN0cmluZyYgc2VydmVy
UmVzcG9uc2VCYXNlNjRVUkwpOwogI2VuZGlmCiAKLSAgICB2b2lkIHNldFNvdXJjZVNlY3JldFRv
a2VuVmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkgeyBtX3NvdXJjZVNlY3JldFRva2VuLnZhbHVl
QmFzZTY0VVJMID0gdmFsdWU7IH0KLSAgICBjb25zdCBPcHRpb25hbDxTb3VyY2VVbmxpbmthYmxl
VG9rZW4+JiBzb3VyY2VVbmxpbmthYmxlVG9rZW4oKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVVu
bGlua2FibGVUb2tlbjsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U291cmNlVW5saW5r
YWJsZVRva2VuKFNvdXJjZVVubGlua2FibGVUb2tlbiYmKTsKKyAgICB2b2lkIHNldFNvdXJjZVVu
bGlua2FibGVUb2tlblZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpIHsgbV9zb3VyY2VVbmxpbmth
YmxlVG9rZW4udmFsdWVCYXNlNjRVUkwgPSB2YWx1ZTsgfQorICAgIGNvbnN0IE9wdGlvbmFsPFNv
dXJjZVNlY3JldFRva2VuPiYgc291cmNlVW5saW5rYWJsZVRva2VuKCkgY29uc3QgeyByZXR1cm4g
bV9zb3VyY2VTZWNyZXRUb2tlbjsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U291cmNl
U2VjcmV0VG9rZW4oU291cmNlU2VjcmV0VG9rZW4mJik7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiBkZWNvZGUo
RGVjb2RlciYpOwpAQCAtMzI4LDcgKzMyOCw3IEBAIHByaXZhdGU6CiAgICAgT3B0aW9uYWw8QXR0
cmlidXRpb25UcmlnZ2VyRGF0YT4gbV9hdHRyaWJ1dGlvblRyaWdnZXJEYXRhOwogICAgIE9wdGlv
bmFsPFdhbGxUaW1lPiBtX2VhcmxpZXN0VGltZVRvU2VuZDsKIAotICAgIHN0cnVjdCBTb3VyY2VT
ZWNyZXRUb2tlbiB7CisgICAgc3RydWN0IFNvdXJjZVVubGlua2FibGVUb2tlbiB7CiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgICAgIFJldGFpblB0cjxSU0FCU1NBVG9rZW5CbGluZGVyPiBibGlu
ZGVyOwogICAgICAgICBSZXRhaW5QdHI8UlNBQlNTQVRva2VuV2FpdGluZ0FjdGl2YXRpb24+IHdh
aXRpbmdUb2tlbjsKQEAgLTMzOCw4ICszMzgsOCBAQCBwcml2YXRlOgogICAgIH07CiAKICAgICBP
cHRpb25hbDxFcGhlbWVyYWxTb3VyY2VOb25jZT4gbV9lcGhlbWVyYWxTb3VyY2VOb25jZTsKLSAg
ICBTb3VyY2VTZWNyZXRUb2tlbiBtX3NvdXJjZVNlY3JldFRva2VuOwotICAgIE9wdGlvbmFsPFNv
dXJjZVVubGlua2FibGVUb2tlbj4gbV9zb3VyY2VVbmxpbmthYmxlVG9rZW47CisgICAgU291cmNl
VW5saW5rYWJsZVRva2VuIG1fc291cmNlVW5saW5rYWJsZVRva2VuOworICAgIE9wdGlvbmFsPFNv
dXJjZVNlY3JldFRva2VuPiBtX3NvdXJjZVNlY3JldFRva2VuOwogfTsKIAogdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29h
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29jb2EubW0KaW5kZXggNWQyM2QwMjI1ZGYyYTljYWE3
ZmQ5ZTBlYWFhYjYxNzc4YWQ3Zjc1MC4uZDE0MzhmZGNkMWU0ODdjMjlhYTY4MDY5MTFhODE0Njk1
MGQ5YTNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29h
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29jb2EubW0KQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpjYWxjdWxh
dGVBbmRVcGRhdGVTb3VyY2VTZWNyZXRUb2tlbihjb25zdCBTdHJpbmcmIHNlcnZlclB1YmxpY0tl
eUJhc2U2NFVSTCkKK2Jvb2wgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OmNhbGN1bGF0ZUFuZFVw
ZGF0ZVNvdXJjZVVubGlua2FibGVUb2tlbihjb25zdCBTdHJpbmcmIHNlcnZlclB1YmxpY0tleUJh
c2U2NFVSTCkKIHsKICNpZiBIQVZFKFJTQV9CU1NBKQogICAgIHsKQEAgLTQwLDE3ICs0MCwxNyBA
QCBib29sIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpjYWxjdWxhdGVBbmRVcGRhdGVTb3VyY2VT
ZWNyZXRUb2tlbihjb25zdCBTdHJpbmcmCiAgICAgICAgIGF1dG8gc2VydmVyUHVibGljS2V5ID0g
YWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczpzZXJ2ZXJQdWJsaWNLZXlEYXRh
LmRhdGEoKSBsZW5ndGg6c2VydmVyUHVibGljS2V5RGF0YS5zaXplKCldKTsKIAogICAgICAgICAv
LyBGSVhNRSgyMjIwMTgpOiBDaGVjayBlcnJvci4KLSAgICAgICAgbV9zb3VyY2VTZWNyZXRUb2tl
bi5ibGluZGVyID0gYWRvcHROUyhbUEFMOjphbGxvY1JTQUJTU0FUb2tlbkJsaW5kZXJJbnN0YW5j
ZSgpIGluaXRXaXRoUHVibGljS2V5OnNlcnZlclB1YmxpY0tleS5nZXQoKSBlcnJvcjpudWxscHRy
XSk7Ci0gICAgICAgIGlmICghbV9zb3VyY2VTZWNyZXRUb2tlbi5ibGluZGVyKQorICAgICAgICBt
X3NvdXJjZVVubGlua2FibGVUb2tlbi5ibGluZGVyID0gYWRvcHROUyhbUEFMOjphbGxvY1JTQUJT
U0FUb2tlbkJsaW5kZXJJbnN0YW5jZSgpIGluaXRXaXRoUHVibGljS2V5OnNlcnZlclB1YmxpY0tl
eS5nZXQoKSBlcnJvcjpudWxscHRyXSk7CisgICAgICAgIGlmICghbV9zb3VyY2VVbmxpbmthYmxl
VG9rZW4uYmxpbmRlcikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICAv
LyBGSVhNRSgyMjIwMTgpOiBDaGVjayBlcnJvci4KLSAgICBtX3NvdXJjZVNlY3JldFRva2VuLndh
aXRpbmdUb2tlbiA9IFttX3NvdXJjZVNlY3JldFRva2VuLmJsaW5kZXIgdG9rZW5XYWl0aW5nQWN0
aXZhdGlvbldpdGhDb250ZW50Om51bGxwdHIgZXJyb3I6bnVsbHB0cl07Ci0gICAgaWYgKCFtX3Nv
dXJjZVNlY3JldFRva2VuLndhaXRpbmdUb2tlbikKKyAgICBtX3NvdXJjZVVubGlua2FibGVUb2tl
bi53YWl0aW5nVG9rZW4gPSBbbV9zb3VyY2VVbmxpbmthYmxlVG9rZW4uYmxpbmRlciB0b2tlbldh
aXRpbmdBY3RpdmF0aW9uV2l0aENvbnRlbnQ6bnVsbHB0ciBlcnJvcjpudWxscHRyXTsKKyAgICBp
ZiAoIW1fc291cmNlVW5saW5rYWJsZVRva2VuLndhaXRpbmdUb2tlbikKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgbV9zb3VyY2VTZWNyZXRUb2tlbi52YWx1ZUJhc2U2NFVSTCA9IFdURjo6
YmFzZTY0VVJMRW5jb2RlKFttX3NvdXJjZVNlY3JldFRva2VuLndhaXRpbmdUb2tlbiBibGluZGVk
TWVzc2FnZV0uYnl0ZXMsIFttX3NvdXJjZVNlY3JldFRva2VuLndhaXRpbmdUb2tlbiBibGluZGVk
TWVzc2FnZV0ubGVuZ3RoKTsKKyAgICBtX3NvdXJjZVVubGlua2FibGVUb2tlbi52YWx1ZUJhc2U2
NFVSTCA9IFdURjo6YmFzZTY0VVJMRW5jb2RlKFttX3NvdXJjZVVubGlua2FibGVUb2tlbi53YWl0
aW5nVG9rZW4gYmxpbmRlZE1lc3NhZ2VdLmJ5dGVzLCBbbV9zb3VyY2VVbmxpbmthYmxlVG9rZW4u
d2FpdGluZ1Rva2VuIGJsaW5kZWRNZXNzYWdlXS5sZW5ndGgpOwogICAgIHJldHVybiB0cnVlOwog
I2Vsc2UKICAgICBVTlVTRURfUEFSQU0oc2VydmVyUHVibGljS2V5QmFzZTY0VVJMKTsKQEAgLTU4
LDEwICs1OCwxMCBAQCBib29sIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpjYWxjdWxhdGVBbmRV
cGRhdGVTb3VyY2VTZWNyZXRUb2tlbihjb25zdCBTdHJpbmcmCiAjZW5kaWYgLy8gSEFWRShSU0Ff
QlNTQSkKIH0KIAotYm9vbCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6Y2FsY3VsYXRlQW5kVXBk
YXRlU291cmNlVW5saW5rYWJsZVRva2VuKGNvbnN0IFN0cmluZyYgc2VydmVyUmVzcG9uc2VCYXNl
NjRVUkwpCitib29sIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpjYWxjdWxhdGVBbmRVcGRhdGVT
b3VyY2VTZWNyZXRUb2tlbihjb25zdCBTdHJpbmcmIHNlcnZlclJlc3BvbnNlQmFzZTY0VVJMKQog
ewogI2lmIEhBVkUoUlNBX0JTU0EpCi0gICAgaWYgKCFtX3NvdXJjZVNlY3JldFRva2VuLndhaXRp
bmdUb2tlbikKKyAgICBpZiAoIW1fc291cmNlVW5saW5rYWJsZVRva2VuLndhaXRpbmdUb2tlbikK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgewpAQCAtNzEsMTcgKzcxLDE3IEBAIGJvb2wg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OmNhbGN1bGF0ZUFuZFVwZGF0ZVNvdXJjZVVubGlua2Fi
bGVUb2tlbihjb25zdCBTdHJpCiAgICAgICAgIGF1dG8gc2VydmVyUmVzcG9uc2UgPSBhZG9wdE5T
KFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOnNlcnZlclJlc3BvbnNlRGF0YS5kYXRhKCkg
bGVuZ3RoOnNlcnZlclJlc3BvbnNlRGF0YS5zaXplKCldKTsKIAogICAgICAgICAvLyBGSVhNRSgy
MjIwMTgpOiBDaGVjayBlcnJvci4KLSAgICAgICAgbV9zb3VyY2VTZWNyZXRUb2tlbi5yZWFkeVRv
a2VuID0gW21fc291cmNlU2VjcmV0VG9rZW4ud2FpdGluZ1Rva2VuIGFjdGl2YXRlVG9rZW5XaXRo
U2VydmVyUmVzcG9uc2U6c2VydmVyUmVzcG9uc2UuZ2V0KCkgZXJyb3I6bnVsbHB0cl07Ci0gICAg
ICAgIGlmICghbV9zb3VyY2VTZWNyZXRUb2tlbi5yZWFkeVRva2VuKQorICAgICAgICBtX3NvdXJj
ZVVubGlua2FibGVUb2tlbi5yZWFkeVRva2VuID0gW21fc291cmNlVW5saW5rYWJsZVRva2VuLndh
aXRpbmdUb2tlbiBhY3RpdmF0ZVRva2VuV2l0aFNlcnZlclJlc3BvbnNlOnNlcnZlclJlc3BvbnNl
LmdldCgpIGVycm9yOm51bGxwdHJdOworICAgICAgICBpZiAoIW1fc291cmNlVW5saW5rYWJsZVRv
a2VuLnJlYWR5VG9rZW4pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAg
U291cmNlVW5saW5rYWJsZVRva2VuIHRva2VuOwotICAgIHRva2VuLnRva2VuQmFzZTY0VVJMID0g
V1RGOjpiYXNlNjRVUkxFbmNvZGUoW21fc291cmNlU2VjcmV0VG9rZW4ucmVhZHlUb2tlbiB0b2tl
bkNvbnRlbnRdLmJ5dGVzLCBbbV9zb3VyY2VTZWNyZXRUb2tlbi5yZWFkeVRva2VuIHRva2VuQ29u
dGVudF0ubGVuZ3RoKTsKLSAgICB0b2tlbi5rZXlJREJhc2U2NFVSTCA9IFdURjo6YmFzZTY0VVJM
RW5jb2RlKFttX3NvdXJjZVNlY3JldFRva2VuLnJlYWR5VG9rZW4ga2V5SWRdLmJ5dGVzLCBbbV9z
b3VyY2VTZWNyZXRUb2tlbi5yZWFkeVRva2VuIGtleUlkXS5sZW5ndGgpOwotICAgIHRva2VuLnNp
Z25hdHVyZUJhc2U2NFVSTCA9IFdURjo6YmFzZTY0VVJMRW5jb2RlKFttX3NvdXJjZVNlY3JldFRv
a2VuLnJlYWR5VG9rZW4gc2lnbmF0dXJlXS5ieXRlcywgW21fc291cmNlU2VjcmV0VG9rZW4ucmVh
ZHlUb2tlbiBzaWduYXR1cmVdLmxlbmd0aCk7CisgICAgU291cmNlU2VjcmV0VG9rZW4gdG9rZW47
CisgICAgdG9rZW4udG9rZW5CYXNlNjRVUkwgPSBXVEY6OmJhc2U2NFVSTEVuY29kZShbbV9zb3Vy
Y2VVbmxpbmthYmxlVG9rZW4ucmVhZHlUb2tlbiB0b2tlbkNvbnRlbnRdLmJ5dGVzLCBbbV9zb3Vy
Y2VVbmxpbmthYmxlVG9rZW4ucmVhZHlUb2tlbiB0b2tlbkNvbnRlbnRdLmxlbmd0aCk7CisgICAg
dG9rZW4ua2V5SURCYXNlNjRVUkwgPSBXVEY6OmJhc2U2NFVSTEVuY29kZShbbV9zb3VyY2VVbmxp
bmthYmxlVG9rZW4ucmVhZHlUb2tlbiBrZXlJZF0uYnl0ZXMsIFttX3NvdXJjZVVubGlua2FibGVU
b2tlbi5yZWFkeVRva2VuIGtleUlkXS5sZW5ndGgpOworICAgIHRva2VuLnNpZ25hdHVyZUJhc2U2
NFVSTCA9IFdURjo6YmFzZTY0VVJMRW5jb2RlKFttX3NvdXJjZVVubGlua2FibGVUb2tlbi5yZWFk
eVRva2VuIHNpZ25hdHVyZV0uYnl0ZXMsIFttX3NvdXJjZVVubGlua2FibGVUb2tlbi5yZWFkeVRv
a2VuIHNpZ25hdHVyZV0ubGVuZ3RoKTsKIAotICAgIG1fc291cmNlVW5saW5rYWJsZVRva2VuID0g
V1RGTW92ZSh0b2tlbik7CisgICAgbV9zb3VyY2VTZWNyZXRUb2tlbiA9IFdURk1vdmUodG9rZW4p
OwogICAgIHJldHVybiB0cnVlOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oc2VydmVyUmVzcG9u
c2VCYXNlNjRVUkwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZS5jcHAKaW5kZXggYzRhZDEzMWMxZWU4Y2NkM2ZhZDA5MTMxZjA1Zjc4YTI0
YjQ0OGRiZS4uOWE5MTk0Nzc0MzcxMTYxNzcyNWFjYjY5YjVmNjc5OGExOTc4YjYyYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3Bw
CkBAIC0yOTg1LDcgKzI5ODUsNyBAQCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6YnVpbGRQcml2YXRlQ2xpY2tNZQogICAgICAgICBh
dHRyaWJ1dGlvbi5zZXRFYXJsaWVzdFRpbWVUb1NlbmQoV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRz
KGVhcmxpZXN0VGltZVRvU2VuZCkpOwogICAgIH0KIAotICAgIGF0dHJpYnV0aW9uLnNldFNvdXJj
ZVVubGlua2FibGVUb2tlbih7IHRva2VuLCBzaWduYXR1cmUsIGtleUlEIH0pOworICAgIGF0dHJp
YnV0aW9uLnNldFNvdXJjZVNlY3JldFRva2VuKHsgdG9rZW4sIHNpZ25hdHVyZSwga2V5SUQgfSk7
CiAKICAgICByZXR1cm4gYXR0cmlidXRpb247CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDBlYTVmYWZhNjdlOWE0ZDFiMWU0ZTU2
MmRlMTc2MjFlMWE3MDIzYWMuLmZhOGMyNDQxNjJiODFiYWU2OGJlZmRlMDg3Mjk3OWNjODhiMjBh
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCkBAIC0yNjQwLDEwICsyNjQwLDEwIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6Om1hcmtQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvCiAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0RnJhdWRQ
cmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmlu
ZyYmIHNlY3JldFRva2VuLCBTdHJpbmcmJiB1bmxpbmthYmxlVG9rZW4sIFN0cmluZyYmIHNpZ25h
dHVyZSwgU3RyaW5nJiYga2V5SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFBDTUZyYXVkUHJldmVudGlvblZh
bHVlc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcmJiB1bmxpbmth
YmxlVG9rZW4sIFN0cmluZyYmIHNlY3JldFRva2VuLCBTdHJpbmcmJiBzaWduYXR1cmUsIFN0cmlu
ZyYmIGtleUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQot
ICAgICAgICBzZXNzaW9uLT5zZXRGcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nKFdURk1v
dmUoc2VjcmV0VG9rZW4pLCBXVEZNb3ZlKHVubGlua2FibGVUb2tlbiksIFdURk1vdmUoc2lnbmF0
dXJlKSwgV1RGTW92ZShrZXlJRCkpOworICAgICAgICBzZXNzaW9uLT5zZXRQQ01GcmF1ZFByZXZl
bnRpb25WYWx1ZXNGb3JUZXN0aW5nKFdURk1vdmUodW5saW5rYWJsZVRva2VuKSwgV1RGTW92ZShz
ZWNyZXRUb2tlbiksIFdURk1vdmUoc2lnbmF0dXJlKSwgV1RGTW92ZShrZXlJRCkpOwogCiAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaAppbmRleCAxYjQzNzY3YTdiMzhhOTVjMzU3NjI0MjJjYjc4NWYyYWE3
M2Y0NTI1Li4zZjExMjAyY2MwZjZmMzUxMzg2NWFmMGY5MzJlNzU5YTEwNjUzOTFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0zNDEsNyAr
MzQxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tl
blNpZ25hdHVyZVVSTEZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIFVSTCYmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRB
dHRyaWJ1dGlvblJlcG9ydFVSTEZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIFVSTCYmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgbWFya1ByaXZhdGVDbGlja01lYXN1
cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzZXRGcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0
aW5nKFBBTDo6U2Vzc2lvbklELCBTdHJpbmcmJiBzZWNyZXRUb2tlbiwgU3RyaW5nJiYgdW5saW5r
YWJsZVRva2VuLCBTdHJpbmcmJiBzaWduYXR1cmUsIFN0cmluZyYmIGtleUlELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVz
Rm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgU3RyaW5nJiYgdW5saW5rYWJsZVRva2VuLCBTdHJp
bmcmJiBzZWNyZXRUb2tlbiwgU3RyaW5nJiYgc2lnbmF0dXJlLCBTdHJpbmcmJiBrZXlJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdl
UXVvdGFNYW5hZ2VyPiBzdG9yYWdlUXVvdGFNYW5hZ2VyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggYzM0MGJlZmMwZjBm
ZmM2NWVlZDhlMTgxY2M2OTZlNzg4Y2EzMGU5Mi4uNjE0MzIyYjY2ZTNhMmM0MWFjZGM5MzFhZDBi
NDZiNDZjNWIwODIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xNzEsNyArMTcxLDcgQEAgbWVzc2Fn
ZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldFByaXZhdGVDbGlj
a01lYXN1cmVtZW50VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgVVJMIHVybCkgLT4gKCkgQXN5bmMKICAgICBTZXRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEF0dHJpYnV0aW9uUmVwb3J0VVJMRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFVSTCB1cmwpIC0+ICgpIEFzeW5jCiAgICAgTWFya1ByaXZhdGVDbGlja01lYXN1cmVtZW50
c0FzRXhwaXJlZEZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3lu
YwotICAgIFNldEZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBTdHJpbmcgc2VjcmV0VG9rZW4sIFN0cmluZyB1bmxpbmthYmxlVG9rZW4sIFN0
cmluZyBzaWduYXR1cmUsIFN0cmluZyBrZXlJRCkgLT4gKCkgQXN5bmMKKyAgICBTZXRQQ01GcmF1
ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3Ry
aW5nIHNlY3JldFRva2VuLCBTdHJpbmcgdW5saW5rYWJsZVRva2VuLCBTdHJpbmcgc2lnbmF0dXJl
LCBTdHJpbmcga2V5SUQpIC0+ICgpIEFzeW5jCiAgICAgR2V0TG9jYWxTdG9yYWdlT3JpZ2luRGV0
YWlscyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChWZWN0b3I8V2ViS2l0OjpMb2NhbFN0
b3JhZ2VEYXRhYmFzZVRyYWNrZXI6Ok9yaWdpbkRldGFpbHM+IGRldGFpbHMpIEFzeW5jCiAKICAg
ICBTZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0Rm9yVGVzdGluZyhTZWNvbmRzIHNlY29uZHMp
IC0+ICgpIFN5bmNocm9ub3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb24uY3BwCmluZGV4IDI1YWUzOTM0Y2YwNzdmODYzYzdmZjNmMmU4ODcyODIyZjIx
MzQwMmQuLjRmNmM0MzliMmI4NzAyYWQwNmE0ODJmOTFiZjAzYmU0MmZjYmU2OGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC0zNTks
OSArMzU5LDkgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbjo6bWFya1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoKQogfQogCiAvLyBGSVhNRTogU3dpdGNoIHRvIG5vbi1t
b2NrZWQgdGVzdCBkYXRhIG9uY2UgdGhlIHJpZ2h0IGNyeXB0b2dyYXBoeSBsaWJyYXJ5IGlzIGF2
YWlsYWJsZSBpbiBvcGVuIHNvdXJjZS4KLXZvaWQgTmV0d29ya1Nlc3Npb246OnNldEZyYXVkUHJl
dmVudGlvblZhbHVlc0ZvclRlc3RpbmcoU3RyaW5nJiYgc2VjcmV0VG9rZW4sIFN0cmluZyYmIHVu
bGlua2FibGVUb2tlbiwgU3RyaW5nJiYgc2lnbmF0dXJlLCBTdHJpbmcmJiBrZXlJRCkKK3ZvaWQg
TmV0d29ya1Nlc3Npb246OnNldFBDTUZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmcoU3Ry
aW5nJiYgdW5saW5rYWJsZVRva2VuLCBTdHJpbmcmJiBzZWNyZXRUb2tlbiwgU3RyaW5nJiYgc2ln
bmF0dXJlLCBTdHJpbmcmJiBrZXlJRCkKIHsKLSAgICBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgp
LnNldEZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmcoV1RGTW92ZShzZWNyZXRUb2tlbiks
IFdURk1vdmUodW5saW5rYWJsZVRva2VuKSwgV1RGTW92ZShzaWduYXR1cmUpLCBXVEZNb3ZlKGtl
eUlEKSk7CisgICAgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKS5zZXRQQ01GcmF1ZFByZXZlbnRp
b25WYWx1ZXNGb3JUZXN0aW5nKFdURk1vdmUodW5saW5rYWJsZVRva2VuKSwgV1RGTW92ZShzZWNy
ZXRUb2tlbiksIFdURk1vdmUoc2lnbmF0dXJlKSwgV1RGTW92ZShrZXlJRCkpOwogfQogCiB2b2lk
IE5ldHdvcmtTZXNzaW9uOjpmaXJlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUaW1lckltbWVkaWF0
ZWx5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nl
c3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApp
bmRleCBjODE0N2VjODIyZjkyZWNkNDVkZjBiMzlhYTI3OTY3NDE0ZDhmODY2Li5iNDUwMzg1MTdi
OTYwOGY4YTQ5YWQ1NWE1MTFiM2I2YTFkMjM4YmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCkBAIC0xMjgsNyArMTI4LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblNpZ25hdHVyZVVSTEZvclRl
c3RpbmcoVVJMJiYpOwogICAgIHZvaWQgc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1
dGlvblJlcG9ydFVSTEZvclRlc3RpbmcoVVJMJiYpOwogICAgIHZvaWQgbWFya1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoKTsKLSAgICB2b2lkIHNldEZyYXVkUHJl
dmVudGlvblZhbHVlc0ZvclRlc3RpbmcoU3RyaW5nJiYgc2VjcmV0VG9rZW4sIFN0cmluZyYmIHVu
bGlua2FibGVUb2tlbiwgU3RyaW5nJiYgc2lnbmF0dXJlLCBTdHJpbmcmJiBrZXlJRCk7CisgICAg
dm9pZCBzZXRQQ01GcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nKFN0cmluZyYmIHVubGlu
a2FibGVUb2tlbiwgU3RyaW5nJiYgc2VjcmV0VG9rZW4sIFN0cmluZyYmIHNpZ25hdHVyZSwgU3Ry
aW5nJiYga2V5SUQpOwogICAgIHZvaWQgZmlyZVByaXZhdGVDbGlja01lYXN1cmVtZW50VGltZXJJ
bW1lZGlhdGVseSgpOwogCiAgICAgdm9pZCBhZGRLZXB0QWxpdmVMb2FkKFJlZjxOZXR3b3JrUmVz
b3VyY2VMb2FkZXI+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwCmluZGV4IDQ3ZTRj
OTU2MmNhM2YxYmViMTZiNDdiOTg2MDVlYWE2ZTIxMDYxNTQuLjc0YmI1Y2JlNTg3MzQ0Y2QxZTE4
MmQwZDdhOGM0ZTIxYWFkNTNiNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAKQEAg
LTg1LDE1ICs4NSwxNSBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6c3Rv
cmVVbmF0dHJpYnV0ZWQoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJgogICAgICAgICAgICAgICAg
IHJldHVybjsKIAogICAgICAgICAgICAgaWYgKG1fZnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVz
dGluZykKLSAgICAgICAgICAgICAgICBhdHRyaWJ1dGlvbi5zZXRTb3VyY2VTZWNyZXRUb2tlblZh
bHVlKG1fZnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZy0+c2VjcmV0VG9rZW4pOworICAg
ICAgICAgICAgICAgIGF0dHJpYnV0aW9uLnNldFNvdXJjZVVubGlua2FibGVUb2tlblZhbHVlKG1f
ZnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZy0+dW5saW5rYWJsZVRva2VuKTsKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGlmICgh
YXR0cmlidXRpb24uY2FsY3VsYXRlQW5kVXBkYXRlU291cmNlU2VjcmV0VG9rZW4ocHVibGljS2V5
QmFzZTY0VVJMKSkKKyAgICAgICAgICAgICAgICBpZiAoIWF0dHJpYnV0aW9uLmNhbGN1bGF0ZUFu
ZFVwZGF0ZVNvdXJjZVVubGlua2FibGVUb2tlbihwdWJsaWNLZXlCYXNlNjRVUkwpKQogICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAjZW5kaWYKIAotICAgICAgICAg
ICAgZ2V0U2lnbmVkU2VjcmV0VG9rZW4oV1RGTW92ZShhdHRyaWJ1dGlvbikpOworICAgICAgICAg
ICAgZ2V0U2lnbmVkVW5saW5rYWJsZVRva2VuKFdURk1vdmUoYXR0cmlidXRpb24pKTsKICAgICAg
ICAgfSk7CiAgICAgfQogCkBAIC0xNTAsOCArMTUwLDggQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudE1hbmFnZXI6OmdldFRva2VuUHVibGljS2V5KFByaXZhdGVDbGlja01lYXN1cmVtZW50
JiYKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhpcyBpcyBndWFyYW50ZWVkIHRvIGJlIGNs
b3NlIGluIHRpbWUgdG8gdGhlIG5hdmlnYXRpb25hbCBjbGljayB3aGljaCBtYWtlcyBpdCBsaWtl
bHkgdG8gYmUgcGVyc29uYWxseSBpZGVudGlmaWFibGUuCi0gICAgYXV0byB0b2tlblB1YmxpY0tl
eVVSTCA9IGF0dHJpYnV0aW9uLnRva2VuUHVibGljS2V5VVJMKCk7CiAgICAgYXV0byBwY21EYXRh
Q2FycmllZCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQY21EYXRhQ2FycmllZDo6UGVyc29u
YWxseUlkZW50aWZpYWJsZTsKKyAgICBhdXRvIHRva2VuUHVibGljS2V5VVJMID0gYXR0cmlidXRp
b24udG9rZW5QdWJsaWNLZXlVUkwoKTsKICAgICBpZiAobV90b2tlblB1YmxpY0tleVVSTEZvclRl
c3RpbmcpIHsKICAgICAgICAgdG9rZW5QdWJsaWNLZXlVUkwgPSAqbV90b2tlblB1YmxpY0tleVVS
TEZvclRlc3Rpbmc7CiAgICAgICAgIHBjbURhdGFDYXJyaWVkID0gUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OlBjbURhdGFDYXJyaWVkOjpOb25QZXJzb25hbGx5SWRlbnRpZmlhYmxlOwpAQCAtMTYy
LDMyICsxNjIsMzMgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmdldFRv
a2VuUHVibGljS2V5KFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYKIAogICAgIGF1dG8gbG9hZFBh
cmFtZXRlcnMgPSBnZW5lcmF0ZU5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzRm9ySHR0cEdl
dChXVEZNb3ZlKHRva2VuUHVibGljS2V5VVJMKSwgcGNtRGF0YUNhcnJpZWQpOwogCi0gICAgUkVM
RUFTRV9MT0dfSU5GTyhQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIkFib3V0IHRvIGZpcmUgYSB1
bmxpbmthYmxlIHRva2VuIHB1YmxpYyBrZXkgcmVxdWVzdC4iKTsKLSAgICBtX25ldHdvcmtQcm9j
ZXNzLT5icm9hZGNhc3RDb25zb2xlTWVzc2FnZShtX3Nlc3Npb25JRCwgTWVzc2FnZVNvdXJjZTo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIE1lc3NhZ2VMZXZlbDo6TG9nLCAiW1ByaXZhdGUgQ2xp
Y2sgTWVhc3VyZW1lbnRdIEFib3V0IHRvIGZpcmUgYSB1bmxpbmthYmxlIHRva2VuIHB1YmxpYyBr
ZXkgcmVxdWVzdC4iX3MpOworICAgIFJFTEVBU0VfTE9HX0lORk8oUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQsICJBYm91dCB0byBmaXJlIGEgdG9rZW4gcHVibGljIGtleSByZXF1ZXN0LiIpOworICAg
IG1fbmV0d29ya1Byb2Nlc3MtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKG1fc2Vzc2lvbklELCBN
ZXNzYWdlU291cmNlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgTWVzc2FnZUxldmVsOjpMb2cs
ICJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gQWJvdXQgdG8gZmlyZSBhIHRva2VuIHB1Ymxp
YyBrZXkgcmVxdWVzdC4iX3MpOwogCiAgICAgbV9waW5nTG9hZEZ1bmN0aW9uKFdURk1vdmUobG9h
ZFBhcmFtZXRlcnMpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHRoaXMsIGF0dHJp
YnV0aW9uID0gV1RGTW92ZShhdHRyaWJ1dGlvbiksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayldIChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtU
aGlzKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkp
IHsKLSAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdl
KHdlYWtUaGlzLT5tX3Nlc3Npb25JRCwgTWVzc2FnZVNvdXJjZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1ha2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1l
YXN1cmVtZW50XSBSZWNlaXZlZCBlcnJvcjogJyJfcywgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRp
b24oKSwgIicgZm9yIHVubGlua2FibGUgdG9rZW4gcHVibGljIGtleSByZXF1ZXN0LiJfcykpOwor
ICAgICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2Uod2Vh
a1RoaXMtPm1fc2Vzc2lvbklELCBNZXNzYWdlU291cmNlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCwgTWVzc2FnZUxldmVsOjpFcnJvciwgbWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3Vy
ZW1lbnRdIFJlY2VpdmVkIGVycm9yOiAnIl9zLCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigp
LCAiJyBmb3IgdG9rZW4gcHVibGljIGtleSByZXF1ZXN0LiJfcykpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKICAgICAgICAgLy8gRklYTUUoMjIyMjE3KTogUmV0cmlldmUgdGhl
IHB1YmxpYyBrZXkgZnJvbSB0aGUgY29udGVudCBpbnN0ZWFkIG9mIHRoZSBoZWFkZXIuCisgICAg
ICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSByZW5hbWVkIHRvIHRva2VuIHB1YmxpYyBrZXkg
d2l0aG91dCAidW5saW5rYmxlIiBvciAic2VjcmV0IiB3aGVuIDIyMjIxNyBpcyBmaXhlZC4KICAg
ICAgICAgY2FsbGJhY2soV1RGTW92ZShhdHRyaWJ1dGlvbiksIHJlc3BvbnNlLmh0dHBIZWFkZXJG
aWVsZHMoKS5nZXQoInVubGlua2FibGVfdG9rZW5fcHVibGljX2tleSJfcykpOwogICAgIH0pOwog
CiB9CiAKLXZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpnZXRTaWduZWRTZWNy
ZXRUb2tlbihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmIGF0dHJpYnV0aW9uKQordm9pZCBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmdldFNpZ25lZFVubGlua2FibGVUb2tlbihQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCYmIGF0dHJpYnV0aW9uKQogewogICAgIGlmICghZmVhdHVyZUVu
YWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhpcyBpcyBndWFyYW50ZWVkIHRv
IGJlIGNsb3NlIGluIHRpbWUgdG8gdGhlIG5hdmlnYXRpb25hbCBjbGljayB3aGljaCBtYWtlcyBp
dCBsaWtlbHkgdG8gYmUgcGVyc29uYWxseSBpZGVudGlmaWFibGUuCi0gICAgYXV0byB0b2tlblNp
Z25hdHVyZVVSTCA9IGF0dHJpYnV0aW9uLnRva2VuU2lnbmF0dXJlVVJMKCk7CiAgICAgYXV0byBw
Y21EYXRhQ2FycmllZCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQY21EYXRhQ2FycmllZDo6
UGVyc29uYWxseUlkZW50aWZpYWJsZTsKKyAgICBhdXRvIHRva2VuU2lnbmF0dXJlVVJMID0gYXR0
cmlidXRpb24udG9rZW5TaWduYXR1cmVVUkwoKTsKICAgICBpZiAobV90b2tlblNpZ25hdHVyZVVS
TEZvclRlc3RpbmcpIHsKICAgICAgICAgdG9rZW5TaWduYXR1cmVVUkwgPSAqbV90b2tlblNpZ25h
dHVyZVVSTEZvclRlc3Rpbmc7CiAgICAgICAgIHBjbURhdGFDYXJyaWVkID0gUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkOjpOb25QZXJzb25hbGx5SWRlbnRpZmlhYmxlOwpA
QCAtMTk4LDggKzE5OSw4IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpn
ZXRTaWduZWRTZWNyZXRUb2tlbihQcml2YXRlQ2xpY2tNZWFzdXJlbWVuCiAKICAgICBhdXRvIGxv
YWRQYXJhbWV0ZXJzID0gZ2VuZXJhdGVOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyc0Zvckh0
dHBQb3N0KFdURk1vdmUodG9rZW5TaWduYXR1cmVVUkwpLCBhdHRyaWJ1dGlvbi50b2tlblNpZ25h
dHVyZUpTT04oKSwgcGNtRGF0YUNhcnJpZWQpOwogCi0gICAgUkVMRUFTRV9MT0dfSU5GTyhQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCwgIkFib3V0IHRvIGZpcmUgYSBzZWNyZXQgdG9rZW4gc2lnbmlu
ZyByZXF1ZXN0LiIpOwotICAgIG1fbmV0d29ya1Byb2Nlc3MtPmJyb2FkY2FzdENvbnNvbGVNZXNz
YWdlKG1fc2Vzc2lvbklELCBNZXNzYWdlU291cmNlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwg
TWVzc2FnZUxldmVsOjpMb2csICJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gQWJvdXQgdG8g
ZmlyZSBhIHNlY3JldCB0b2tlbiBzaWduaW5nIHJlcXVlc3QuIl9zKTsKKyAgICBSRUxFQVNFX0xP
R19JTkZPKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiQWJvdXQgdG8gZmlyZSBhIHVubGlua2Fi
bGUgdG9rZW4gc2lnbmluZyByZXF1ZXN0LiIpOworICAgIG1fbmV0d29ya1Byb2Nlc3MtPmJyb2Fk
Y2FzdENvbnNvbGVNZXNzYWdlKG1fc2Vzc2lvbklELCBNZXNzYWdlU291cmNlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCwgTWVzc2FnZUxldmVsOjpMb2csICJbUHJpdmF0ZSBDbGljayBNZWFzdXJl
bWVudF0gQWJvdXQgdG8gZmlyZSBhIHVubGlua2FibGUgdG9rZW4gc2lnbmluZyByZXF1ZXN0LiJf
cyk7CiAKICAgICBtX3BpbmdMb2FkRnVuY3Rpb24oV1RGTW92ZShsb2FkUGFyYW1ldGVycyksIFt3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgdGhpcywgYXR0cmlidXRpb24gPSBXVEZNb3Zl
KGF0dHJpYnV0aW9uKV0gKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkgbXV0YWJsZSB7CiAgICAgICAg
IGlmICghd2Vha1RoaXMpCkBAIC0yMTEsMjAgKzIxMiwyMiBAQCB2b2lkIFByaXZhdGVDbGlja01l
YXN1cmVtZW50TWFuYWdlcjo6Z2V0U2lnbmVkU2VjcmV0VG9rZW4oUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbgogICAgICAgICB9CiAKICAgICAgICAgLy8gRklYTUUoMjIyMjE3KTogUmV0cmlldmUgdGhl
IHNpZ25hdHVyZSBmcm9tIHRoZSBjb250ZW50IGluc3RlYWQgb2YgdGhlIGhlYWRlci4KKyAgICAg
ICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHJlbmFtZWQgdG8gdW5saW5rYWJsZSB0b2tlbiB3
aGVuIDIyMjIxNyBpcyBmaXhlZC4KICAgICAgICAgYXV0byBzaWduYXR1cmVCYXNlNjRVUkwgPSBy
ZXNwb25zZS5odHRwSGVhZGVyRmllbGRzKCkuZ2V0KCJzZWNyZXRfdG9rZW5fc2lnbmF0dXJlIl9z
KTsKICAgICAgICAgaWYgKHNpZ25hdHVyZUJhc2U2NFVSTC5pc0VtcHR5KCkpCiAgICAgICAgICAg
ICByZXR1cm47CiAKKyAgICAgICAgLy8gRklYIE5PVyEKICAgICAgICAgaWYgKG1fZnJhdWRQcmV2
ZW50aW9uVmFsdWVzRm9yVGVzdGluZykKLSAgICAgICAgICAgIGF0dHJpYnV0aW9uLnNldFNvdXJj
ZVVubGlua2FibGVUb2tlbih7IG1fZnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZy0+dW5s
aW5rYWJsZVRva2VuLCBtX2ZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmctPnNpZ25hdHVy
ZSwgbV9mcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nLT5rZXlJRCB9KTsKKyAgICAgICAg
ICAgIGF0dHJpYnV0aW9uLnNldFNvdXJjZVNlY3JldFRva2VuKHsgbV9mcmF1ZFByZXZlbnRpb25W
YWx1ZXNGb3JUZXN0aW5nLT5zZWNyZXRUb2tlbiwgbV9mcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JU
ZXN0aW5nLT5zaWduYXR1cmUsIG1fZnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZy0+a2V5
SUQgfSk7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
aWYgKCFhdHRyaWJ1dGlvbi5jYWxjdWxhdGVBbmRVcGRhdGVTb3VyY2VVbmxpbmthYmxlVG9rZW4o
c2lnbmF0dXJlQmFzZTY0VVJMKSkKKyAgICAgICAgICAgIGlmICghYXR0cmlidXRpb24uY2FsY3Vs
YXRlQW5kVXBkYXRlU291cmNlU2VjcmV0VG9rZW4oc2lnbmF0dXJlQmFzZTY0VVJMKSkKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICNlbmRpZgogCi0gICAgICAgIG1fbmV0d29y
a1Byb2Nlc3MtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKG1fc2Vzc2lvbklELCBNZXNzYWdlU291
cmNlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgTWVzc2FnZUxldmVsOjpMb2csICJbUHJpdmF0
ZSBDbGljayBNZWFzdXJlbWVudF0gU3RvcmluZyBhbiB1bmxpbmthYmxlIHRva2VuLiJfcyk7Cisg
ICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKG1fc2Vzc2lv
bklELCBNZXNzYWdlU291cmNlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgTWVzc2FnZUxldmVs
OjpMb2csICJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gU3RvcmluZyBhIHNlY3JldCB0b2tl
bi4iX3MpOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICAgICAg
aWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBtX25ldHdvcmtTZXNzaW9uLT5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzKCkpCkBAIC00OTAsMTEgKzQ5MywxMSBAQCB2b2lkIFByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlcjo6bWFya0FsbFVuYXR0cmlidXRlZEFzRXhwaXJlZEZvclRl
c3RpbmcoKQogI2VuZGlmCiB9CiAKLXZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
OjpzZXRGcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nKFN0cmluZyYmIHNlY3JldFRva2Vu
LCBTdHJpbmcmJiB1bmxpbmthYmxlVG9rZW4sIFN0cmluZyYmIHNpZ25hdHVyZSwgU3RyaW5nJiYg
a2V5SUQpCit2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6c2V0UENNRnJhdWRQ
cmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZyhTdHJpbmcmJiB1bmxpbmthYmxlVG9rZW4sIFN0cmlu
ZyYmIHNlY3JldFRva2VuLCBTdHJpbmcmJiBzaWduYXR1cmUsIFN0cmluZyYmIGtleUlEKQogewot
ICAgIGlmIChzZWNyZXRUb2tlbi5pc0VtcHR5KCkgfHwgdW5saW5rYWJsZVRva2VuLmlzRW1wdHko
KSB8fCBzaWduYXR1cmUuaXNFbXB0eSgpIHx8IGtleUlELmlzRW1wdHkoKSkKKyAgICBpZiAodW5s
aW5rYWJsZVRva2VuLmlzRW1wdHkoKSB8fCBzZWNyZXRUb2tlbi5pc0VtcHR5KCkgfHwgc2lnbmF0
dXJlLmlzRW1wdHkoKSB8fCBrZXlJRC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBt
X2ZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmcgPSBUZXN0aW5nRnJhdWRQcmV2ZW50aW9u
VmFsdWVzIHsgV1RGTW92ZShzZWNyZXRUb2tlbiksIFdURk1vdmUodW5saW5rYWJsZVRva2VuKSwg
V1RGTW92ZShzaWduYXR1cmUpLCBXVEZNb3ZlKGtleUlEKSB9OworICAgIG1fZnJhdWRQcmV2ZW50
aW9uVmFsdWVzRm9yVGVzdGluZyA9IFRlc3RpbmdGcmF1ZFByZXZlbnRpb25WYWx1ZXMgeyBXVEZN
b3ZlKHVubGlua2FibGVUb2tlbiksIFdURk1vdmUoc2VjcmV0VG9rZW4pLCBXVEZNb3ZlKHNpZ25h
dHVyZSksIFdURk1vdmUoa2V5SUQpIH07CiB9CiAKIGJvb2wgUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRNYW5hZ2VyOjpmZWF0dXJlRW5hYmxlZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIu
aAppbmRleCBhNTU2NDgxOTU1NWIyMjM0ZWZkNjdjMDkyZTUxMDdlOTdhYzc4NTYwLi42MjZmNGJj
NWNiODBhMjc5ODBkZDYxNGM1ZjhhZjliMWY1N2ZkNmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5h
Z2VyLmgKQEAgLTY2LDEyICs2NiwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBdHRyaWJ1dGlv
blJlcG9ydFVSTEZvclRlc3RpbmcoVVJMJiYpOwogICAgIHZvaWQgbWFya0FsbFVuYXR0cmlidXRl
ZEFzRXhwaXJlZEZvclRlc3RpbmcoKTsKICAgICB2b2lkIG1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwotICAgIHZvaWQgc2V0RnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZyhTdHJp
bmcmJiBzZWNyZXRUb2tlbiwgU3RyaW5nJiYgdW5saW5rYWJsZVRva2VuLCBTdHJpbmcmJiBzaWdu
YXR1cmUsIFN0cmluZyYmIGtleUlEKTsKKyAgICB2b2lkIHNldFBDTUZyYXVkUHJldmVudGlvblZh
bHVlc0ZvclRlc3RpbmcoU3RyaW5nJiYgdW5saW5rYWJsZVRva2VuLCBTdHJpbmcmJiBzZWNyZXRU
b2tlbiwgU3RyaW5nJiYgc2lnbmF0dXJlLCBTdHJpbmcmJiBrZXlJRCk7CiAgICAgdm9pZCBzdGFy
dFRpbWVyKFNlY29uZHMpOwogCiBwcml2YXRlOgogICAgIHZvaWQgZ2V0VG9rZW5QdWJsaWNLZXko
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgRnVuY3Rpb248dm9pZChQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCYmIGF0dHJpYnV0aW9uLCBjb25zdCBTdHJpbmcmIHB1YmxpY0tleUJhc2U2NFVSTCk+
JiYpOwotICAgIHZvaWQgZ2V0U2lnbmVkU2VjcmV0VG9rZW4oUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQmJik7CisgICAgdm9pZCBnZXRTaWduZWRVbmxpbmthYmxlVG9rZW4oUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQmJik7CiAgICAgdm9pZCBjbGVhclNlbnRBdHRyaWJ1dGlvbihQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCYmKTsKICAgICB2b2lkIGF0dHJpYnV0ZShjb25zdCBTb3VyY2VTaXRlJiwgY29u
c3QgQXR0cmlidXRlT25TaXRlJiwgQXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmKTsKICAgICB2b2lk
IGZpcmVDb252ZXJzaW9uUmVxdWVzdChjb25zdCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYpOwpA
QCAtOTIsOCArOTIsOCBAQCBwcml2YXRlOgogICAgIEZ1bmN0aW9uPHZvaWQoTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpPiYmKT4g
bV9waW5nTG9hZEZ1bmN0aW9uOwogCiAgICAgc3RydWN0IFRlc3RpbmdGcmF1ZFByZXZlbnRpb25W
YWx1ZXMgewotICAgICAgICBTdHJpbmcgc2VjcmV0VG9rZW47CiAgICAgICAgIFN0cmluZyB1bmxp
bmthYmxlVG9rZW47CisgICAgICAgIFN0cmluZyBzZWNyZXRUb2tlbjsKICAgICAgICAgU3RyaW5n
IHNpZ25hdHVyZTsKICAgICAgICAgU3RyaW5nIGtleUlEOwogICAgIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCA5NDU3MmY4Yzk4NWVlNzQ5NThmZTQ3ZjI0
ODk4M2UyOGNmOWE1MzE3Li4zMzYwMDc2OTE1MTQ3ZGNmYjlkMGE5ZGVjN2MyODAzODQ0N2U3ODU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTI5NzMsOSAr
Mjk3Myw5IEBAIHZvaWQgV0tQYWdlTWFya1ByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJl
ZEZvclRlc3RpbmcoV0tQYWdlUmVmIHBhZ2UsIFdLUGFnCiAgICAgfSk7CiB9CiAKLXZvaWQgV0tQ
YWdlU2V0RnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZyhXS1BhZ2VSZWYgcGFnZSwgV0tT
dHJpbmdSZWYgc2VjcmV0VG9rZW4sIFdLU3RyaW5nUmVmIHVubGlua2FibGVUb2tlbiwgV0tTdHJp
bmdSZWYgc2lnbmF0dXJlLCBXS1N0cmluZ1JlZiBrZXlJRCwgV0tQYWdlU2V0RnJhdWRQcmV2ZW50
aW9uVmFsdWVzRm9yVGVzdGluZ0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRl
eHQpCit2b2lkIFdLUGFnZVNldFBDTUZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmcoV0tQ
YWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIHVubGlua2FibGVUb2tlbiwgV0tTdHJpbmdSZWYgc2Vj
cmV0VG9rZW4sIFdLU3RyaW5nUmVmIHNpZ25hdHVyZSwgV0tTdHJpbmdSZWYga2V5SUQsIFdLUGFn
ZVNldFBDTUZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmdGdW5jdGlvbiBjYWxsYmFjaywg
dm9pZCogY2FsbGJhY2tDb250ZXh0KQogewotICAgIHRvSW1wbChwYWdlKS0+c2V0RnJhdWRQcmV2
ZW50aW9uVmFsdWVzRm9yVGVzdGluZyh0b1dURlN0cmluZyhzZWNyZXRUb2tlbiksIHRvV1RGU3Ry
aW5nKHVubGlua2FibGVUb2tlbiksIHRvV1RGU3RyaW5nKHNpZ25hdHVyZSksIHRvV1RGU3RyaW5n
KGtleUlEKSwgW2NhbGxiYWNrQ29udGV4dCwgY2FsbGJhY2tdICgpIHsKKyAgICB0b0ltcGwocGFn
ZSktPnNldFBDTUZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmcodG9XVEZTdHJpbmcodW5s
aW5rYWJsZVRva2VuKSwgdG9XVEZTdHJpbmcoc2VjcmV0VG9rZW4pLCB0b1dURlN0cmluZyhzaWdu
YXR1cmUpLCB0b1dURlN0cmluZyhrZXlJRCksIFtjYWxsYmFja0NvbnRleHQsIGNhbGxiYWNrXSAo
KSB7CiAgICAgICAgIGNhbGxiYWNrKGNhbGxiYWNrQ29udGV4dCk7CiAgICAgfSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRlLmgKaW5kZXggZTIyNWM4
YjdkY2Q5Mjk3MjAyODNiZThjMGJkNGYyMjYzNzdiNDAzNC4uYTI1NjZmMzAzNWY1MmU5Mzk1YWRi
YzU3M2NiYWVjYjA4NDAxZTc2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZVByaXZhdGUuaApAQCAtMTg3LDggKzE4Nyw4IEBAIHR5cGVkZWYgdm9pZCAoKldLUGFn
ZVNldFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25SZXBvcnRVUkxGb3JUZXN0aW5n
RnVuCiBXS19FWFBPUlQgdm9pZCBXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJp
YnV0aW9uUmVwb3J0VVJMRm9yVGVzdGluZyhXS1BhZ2VSZWYgcGFnZSwgV0tVUkxSZWYgdXJsU3Ry
aW5nLCBXS1BhZ2VTZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uUmVwb3J0VVJM
Rm9yVGVzdGluZ0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpOwogdHlw
ZWRlZiB2b2lkICgqV0tQYWdlTWFya1ByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZv
clRlc3RpbmdGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsKIFdLX0VYUE9SVCB2b2lk
IFdLUGFnZU1hcmtQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKFdL
UGFnZVJlZiBwYWdlLCBXS1BhZ2VNYXJrUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVk
Rm9yVGVzdGluZ0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpOwotdHlw
ZWRlZiB2b2lkICgqV0tQYWdlU2V0RnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZ0Z1bmN0
aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOwotV0tfRVhQT1JUIHZvaWQgV0tQYWdlU2V0RnJh
dWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZyhXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYg
c2VjcmV0VG9rZW4sIFdLU3RyaW5nUmVmIHVubGlua2FibGVUb2tlbiwgV0tTdHJpbmdSZWYgc2ln
bmF0dXJlLCBXS1N0cmluZ1JlZiBrZXlJRCwgV0tQYWdlU2V0RnJhdWRQcmV2ZW50aW9uVmFsdWVz
Rm9yVGVzdGluZ0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpOwordHlw
ZWRlZiB2b2lkICgqV0tQYWdlU2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZ0Z1
bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOworV0tfRVhQT1JUIHZvaWQgV0tQYWdlU2V0
UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZyhXS1BhZ2VSZWYgcGFnZSwgV0tTdHJp
bmdSZWYgc2VjcmV0VG9rZW4sIFdLU3RyaW5nUmVmIHVubGlua2FibGVUb2tlbiwgV0tTdHJpbmdS
ZWYgc2lnbmF0dXJlLCBXS1N0cmluZ1JlZiBrZXlJRCwgV0tQYWdlU2V0UENNRnJhdWRQcmV2ZW50
aW9uVmFsdWVzRm9yVGVzdGluZ0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRl
eHQpOwogCiBXS19FWFBPUlQgdm9pZCBXS1BhZ2VTZXRNb2NrQ2FtZXJhT3JpZW50YXRpb24oV0tQ
YWdlUmVmIHBhZ2UsIHVpbnQ2NF90IG9yaWVudGF0aW9uKTsKIFdLX0VYUE9SVCBib29sIFdLUGFn
ZUlzTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJFbmFibGVkKFdLUGFnZVJlZiBwYWdlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGZiMmJmZjg0N2Qz
MmFiMDc5MTU0MzhjZjA5ZDAxN2NlMDJiN2NkZTQuLjZkNGI3YWFjZTA0N2M4ZDU4OGY3MWJjZmNi
YTYyYjMwODYxMTZkOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cApAQCAtMTAwNjgsOSArMTAwNjgsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bWFya1ByaXZhdGVD
bGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoQ29tcGxldGlvbkhhbgogICAgIHdl
YnNpdGVEYXRhU3RvcmUoKS5uZXR3b3JrUHJvY2VzcygpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3M6Ok1hcmtQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGly
ZWRGb3JUZXN0aW5nKG1fd2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCkpLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzZXRGcmF1ZFByZXZl
bnRpb25WYWx1ZXNGb3JUZXN0aW5nKGNvbnN0IFN0cmluZyYgc2VjcmV0VG9rZW4sIGNvbnN0IFN0
cmluZyYgdW5saW5rYWJsZVRva2VuLCBjb25zdCBTdHJpbmcmIHNpZ25hdHVyZSwgY29uc3QgU3Ry
aW5nJiBrZXlJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBXZWJQYWdlUHJveHk6OnNldFBDTUZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3Rp
bmcoY29uc3QgU3RyaW5nJiB1bmxpbmthYmxlVG9rZW4sIGNvbnN0IFN0cmluZyYgc2VjcmV0VG9r
ZW4sIGNvbnN0IFN0cmluZyYgc2lnbmF0dXJlLCBjb25zdCBTdHJpbmcmIGtleUlELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgd2Vic2l0ZURh
dGFTdG9yZSgpLm5ldHdvcmtQcm9jZXNzKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzczo6U2V0RnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZyhtX3dlYnNp
dGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpLCBzZWNyZXRUb2tlbiwgdW5saW5rYWJsZVRva2VuLCBz
aWduYXR1cmUsIGtleUlEKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIHdlYnNp
dGVEYXRhU3RvcmUoKS5uZXR3b3JrUHJvY2VzcygpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3M6OlNldFBDTUZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3Rpbmco
bV93ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSwgdW5saW5rYWJsZVRva2VuLCBzZWNyZXRU
b2tlbiwgc2lnbmF0dXJlLCBrZXlJRCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0K
IAogI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAppbmRleCA3OWUyODk3ZjAzNjIxZTZkYTgwN2FhYTEzNGUxNDFkNDUyNDViZjlk
Li4xMTVkOTdlZmYyOTEzMzliN2U1NjBmZGI3MDRlZDNmNzQ2MjQwNTQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTcwNyw3ICsxNzA3LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblNpZ25hdHVyZVVSTEZvclRl
c3RpbmcoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lk
IHNldFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25SZXBvcnRVUkxGb3JUZXN0aW5n
KGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBtYXJr
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0RnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVz
dGluZyhjb25zdCBTdHJpbmcmIHNlY3JldFRva2VuLCBjb25zdCBTdHJpbmcmIHVubGlua2FibGVU
b2tlbiwgY29uc3QgU3RyaW5nJiBzaWduYXR1cmUsIGNvbnN0IFN0cmluZyYga2V5SUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRQQ01GcmF1ZFByZXZlbnRpb25W
YWx1ZXNGb3JUZXN0aW5nKGNvbnN0IFN0cmluZyYgdW5saW5rYWJsZVRva2VuLCBjb25zdCBTdHJp
bmcmIHNlY3JldFRva2VuLCBjb25zdCBTdHJpbmcmIHNpZ25hdHVyZSwgY29uc3QgU3RyaW5nJiBr
ZXlJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogI2lmIEVOQUJMRShTUEVFQ0hf
U1lOVEhFU0lTKQogICAgIHZvaWQgc3BlZWNoU3ludGhlc2lzVm9pY2VMaXN0KENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoVmVjdG9yPFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlPiYmKT4mJik7CmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzRkMTZlMjZi
ODI4NDRmZjQzMWM3MDVhN2VkYWI2NDFlMWM4N2U1Ny4uNDNmOTZjODU4NGVmYjhkZWY2OTdlMTlh
YTVmMmRlNDY2NmI3YWNmZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIxLTAzLTA1ICBKb2huIFdpbGFuZGVyICA8
d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFBDTTogQWxpZ24gZnJhdWQgcHJldmVudGlv
biB0b2tlbiBuYW1pbmcgd2l0aCBpc3N1ZSA3MyBpbiB0aGUgUHJpdmFjeSBDRyByZXBvCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI4MzgKKyAgICAg
ICAgPHJkYXI6Ly83NTExNTQyNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBhdGNoIGRvZXNuJ3QgY2hhbmdlIGZ1bmN0aW9uYWxpdHkgYW5k
IG9ubHkgYWxpZ25zIG5hbWluZyB0byB0aGlzIFczQyBQcml2YWN5IENHIGlzc3VlOgorICAgICAg
ICBodHRwczovL2dpdGh1Yi5jb20vcHJpdmFjeWNnL3ByaXZhdGUtY2xpY2stbWVhc3VyZW1lbnQv
aXNzdWVzLzczCisKKyAgICAgICAgTmFtaW5nIGZvciBQQ00gZnJhdWQgcHJldmVudGlvbiBpcyB1
cGRhdGVkIGxpa2UgdGhpczoKKworICAgICAgICAvLndlbGwta25vd24vcHJpdmF0ZS1jbGljay1t
ZWFzdXJlbWVudC9zaWduLXNlY3JldC10b2tlbi8gY2hhbmdlZCB0bworICAgICAgICAvLndlbGwt
a25vd24vcHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudC9zaWduLXVubGlua2FibGUtdG9rZW4vCisK
KyAgICAgICAgLy53ZWxsLWtub3duL3ByaXZhdGUtY2xpY2stbWVhc3VyZW1lbnQvZ2V0LXVubGlu
a2FibGUtdG9rZW4tcHVibGljLWtleS8gY2hhbmdlZCB0bworICAgICAgICAvLndlbGwta25vd24v
cHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudC9nZXQtdG9rZW4tcHVibGljLWtleS8KKworICAgICAg
ICBzb3VyY2Vfc2VjcmV0X3Rva2VuIGluIHJlcXVlc3RzIGZvciB0b2tlbiBzaWduYXR1cmUgY2hh
bmdlZCB0byBzb3VyY2VfdW5saW5rYWJsZV90b2tlbgorCisgICAgICAgIHNvdXJjZV91bmxpbmth
YmxlX3Rva2VuIGluIGF0dHJpYnV0aW9uIHJlcG9ydHMgY2hhbmdlZCB0byBzb3VyY2Vfc2VjcmV0
X3Rva2VuCisKKyAgICAgICAgVmFyaWFibGUsIG1lbWJlciwgYW5kIGZ1bmN0aW9uIG5hbWVzIGFy
ZSBiZWluZyByZW5hbWVkIHNpbWlsYXJseS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5jcHA6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29j
b2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb2NvYS5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1QpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRGcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nKToKKyAg
ICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0RnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGlu
Zyk6IERlbGV0ZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpzZXRQQ01GcmF1ZFByZXZlbnRpb25W
YWx1ZXNGb3JUZXN0aW5nKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldEZyYXVk
UHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2Vp
dmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorCiAyMDIxLTAzLTA1ICBN
aWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AZ25vbWUub3JnPgogCiAgICAgICAgIFtHVEtd
IENsZWFuIHVwIEdUSy1zcGVjaWZpYyB0ZXh0IGNoZWNrZXIgc3R1ZmYKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQuY3BwCmluZGV4IDQ5NjYxMmRmNmFjOGNjMmE0MzEzMzBmZTMzMjRhMDliNmI3NzE2M2Uu
LjRmNjdhNjFjNmViYzQ0NzBiZDkwOTRmOGJiMmUzMDEzZDcxNTFlM2QgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50LmNwcApAQCAtMzA3LDE4ICszMDcsMTggQEAgVEVTVChQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCwgSW52YWxpZEJsaW5kZWRTZWNyZXQpCiAgICAgY29uc3QgY2hhciBzZXJ2ZXJQdWJs
aWNLZXlCYXNlNjRVUkxbXSA9ICJNSUlDSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQWc4QU1JSUND
Z0tDQWdFQXpiMWRUaHJ0WXdWaDQ2U2pJbmVnS2hBcXBiSndtMVhuVEJDdnliU0s4ems1M1IwQW0x
aEczM0FWRjVKMWxxWWYzNndwNjYzR2FzY2xIdHF6dnhGWkl2REExRFVTSDRhWnpfZkRIQ1RUeEVl
SlZQT1JTM3pOTjJVald3YnRud3NoNEJtRFRpLXpfY0RuMExBejJKdVp5S2x5RnQ1R2dWTEFRdkw5
SDNWTEhVOV9YSE5LLXVib3lYZmNIUlR0ckRucHUzYzZ3dlg1ZGQtQUpvTG1JUVRaQkVKZlZreEJH
em5rMXFLSGpjNm5BU0FpcktGX3dKQ251d0FLOEM2QkFjak5jd1VXQ2VLcDBZRUN6Q1hVLS1KWGQy
T0VVLVFoeFBDNjdmYWlET2gzVjB2bGZxWkx0cmxibmFuVUNLcnZodzdHYUdPR1lvdElyblp0dU5m
eEMxNGRfWE5WZDFGUzhuSGpSVEhuRWd3X2pubFNzc2ZnU3R6MHVKdGNta2Znb0pCdk9FNG1JUnBp
N2lTbFJmWE5rS3NXWDFKLWd3Y25DVm81dTB1SkVXNlg2Tnl2RUdZSjh3NUJQZndzUXVLOXktNFo3
aWt0OUlPdWNFSFk3VGhEbWk5VE5OaEhCVmowR3U0d0dvU2pxM2E2dkw1TjEwWlNIWG9xMVhnZkdQ
cm1IaGhMOTBjanZXb25veU9Yc1VxbFhFelRqRDJXOTg5N1EtTXg5QlVOckdRUHFtSXg4RjVNd3hX
Y09yeWU4V1JwNFE4OG4yWVNVblY3QzhheWxkM3YxRmg3TjVqZVNxZVZtdERWUllUbjJzVmZOcWdY
cnpnZGlnSmNRUjh2RkVOdTZuekZQd3NyWFBNYUNpTFVuWk5VbVExWlNMUWVReWhZWHhIcVJKcm51
Q0RXWExrQ0F3RUFBUSI7CiAKICAgICBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBwY207Ci0gICAg
YXV0byBzb3VyY2VTZWNyZXRUb2tlbiA9IHBjbS50b2tlblNpZ25hdHVyZUpTT04oKTsKLSAgICBF
WFBFQ1RfRVEoc291cmNlU2VjcmV0VG9rZW4tPmFzT2JqZWN0KCktPnNpemUoKSwgMHVsKTsKKyAg
ICBhdXRvIHNvdXJjZVVubGlua2FibGVUb2tlbiA9IHBjbS50b2tlblNpZ25hdHVyZUpTT04oKTsK
KyAgICBFWFBFQ1RfRVEoc291cmNlVW5saW5rYWJsZVRva2VuLT5hc09iamVjdCgpLT5zaXplKCks
IDB1bCk7CiAKICAgICBhdXRvIGVwaGVtZXJhbE5vbmNlID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OkVwaGVtZXJhbFNvdXJjZU5vbmNlIHsgIkFCQ0RFRmFiY2RlZjAxMjM0NTY3ODkiX3MgfTsK
ICAgICBFWFBFQ1RfVFJVRShlcGhlbWVyYWxOb25jZS5pc1ZhbGlkKCkpOwogICAgIHBjbS5zZXRF
cGhlbWVyYWxTb3VyY2VOb25jZShXVEZNb3ZlKGVwaGVtZXJhbE5vbmNlKSk7CiAKLSAgICBFWFBF
Q1RfVFJVRShwY20uY2FsY3VsYXRlQW5kVXBkYXRlU291cmNlU2VjcmV0VG9rZW4oc2VydmVyUHVi
bGljS2V5QmFzZTY0VVJMKSk7Ci0gICAgc291cmNlU2VjcmV0VG9rZW4gPSBwY20udG9rZW5TaWdu
YXR1cmVKU09OKCk7Ci0gICAgRVhQRUNUX0VRKHNvdXJjZVNlY3JldFRva2VuLT5hc09iamVjdCgp
LT5zaXplKCksIDR1bCk7CisgICAgRVhQRUNUX1RSVUUocGNtLmNhbGN1bGF0ZUFuZFVwZGF0ZVNv
dXJjZVVubGlua2FibGVUb2tlbihzZXJ2ZXJQdWJsaWNLZXlCYXNlNjRVUkwpKTsKKyAgICBzb3Vy
Y2VVbmxpbmthYmxlVG9rZW4gPSBwY20udG9rZW5TaWduYXR1cmVKU09OKCk7CisgICAgRVhQRUNU
X0VRKHNvdXJjZVVubGlua2FibGVUb2tlbi0+YXNPYmplY3QoKS0+c2l6ZSgpLCA0dWwpOwogCi0g
ICAgRVhQRUNUX0ZBTFNFKHBjbS5jYWxjdWxhdGVBbmRVcGRhdGVTb3VyY2VVbmxpbmthYmxlVG9r
ZW4oZW1wdHlTdHJpbmcoKSkpOworICAgIEVYUEVDVF9GQUxTRShwY20uY2FsY3VsYXRlQW5kVXBk
YXRlU291cmNlU2VjcmV0VG9rZW4oZW1wdHlTdHJpbmcoKSkpOwogfQogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudENvY29hLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29jb2EubW0KaW5kZXggYjBlMjIyNjEzM2Ux
OTM1MWE2MGQ2ZTNlNjZiMDA3OGEwOWVlZWI2NS4uZjU0NjZhOWQwZjZjZjg3N2E1NmIwZWJiMGUy
MzI2MWQ0NGNlNjkyOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29jb2EubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29j
b2EubW0KQEAgLTgxLDcgKzgxLDcgQEAgVEVTVChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgVmFs
aWRCbGluZGVkU2VjcmV0KQogICAgIGF1dG8gKm5zU3BraURhdGEgPSAoX19icmlkZ2UgTlNEYXRh
ICopc3BraURhdGEuZ2V0KCk7CiAKICAgICAvLyBDb250aW51ZSB0aGUgdGVzdC4KLSAgICBFWFBF
Q1RfVFJVRShwY20uY2FsY3VsYXRlQW5kVXBkYXRlU291cmNlU2VjcmV0VG9rZW4oV1RGOjpiYXNl
NjRVUkxFbmNvZGUobnNTcGtpRGF0YS5ieXRlcywgbnNTcGtpRGF0YS5sZW5ndGgpKSk7CisgICAg
RVhQRUNUX1RSVUUocGNtLmNhbGN1bGF0ZUFuZFVwZGF0ZVNvdXJjZVVubGlua2FibGVUb2tlbihX
VEY6OmJhc2U2NFVSTEVuY29kZShuc1Nwa2lEYXRhLmJ5dGVzLCBuc1Nwa2lEYXRhLmxlbmd0aCkp
KTsKICAgICBhdXRvIHNvdXJjZVNlY3JldFRva2VuID0gcGNtLnRva2VuU2lnbmF0dXJlSlNPTigp
OwogICAgIEVYUEVDVF9FUShzb3VyY2VTZWNyZXRUb2tlbi0+YXNPYmplY3QoKS0+c2l6ZSgpLCA0
dWwpOwogICAgIEVYUEVDVF9TVFJFUShzb3VyY2VTZWNyZXRUb2tlbi0+Z2V0U3RyaW5nKCJzb3Vy
Y2VfZW5nYWdlbWVudF90eXBlIl9zKS51dGY4KCkuZGF0YSgpLCAiY2xpY2siKTsKQEAgLTk3LDcg
Kzk3LDcgQEAgVEVTVChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgVmFsaWRCbGluZGVkU2VjcmV0
KQogICAgIGNjcnNhYnNzYV9zaWduX2JsaW5kZWRfbWVzc2FnZShjaXBoZXJzdWl0ZSwgcnNhUHJp
dmF0ZUtleSwgYmxpbmRlZE1lc3NhZ2UuZGF0YSgpLCBibGluZGVkTWVzc2FnZS5zaXplKCksIHN0
YXRpY19jYXN0PHVpbnQ4X3QgKj4oW2JsaW5kZWRTaWduYXR1cmUgbXV0YWJsZUJ5dGVzXSksIFti
bGluZGVkU2lnbmF0dXJlIGxlbmd0aF0sIHJuZyk7CiAKICAgICAvLyBDb250aW51ZSB0aGUgdGVz
dC4KLSAgICBFWFBFQ1RfVFJVRShwY20uY2FsY3VsYXRlQW5kVXBkYXRlU291cmNlVW5saW5rYWJs
ZVRva2VuKFdURjo6YmFzZTY0VVJMRW5jb2RlKFtibGluZGVkU2lnbmF0dXJlIGJ5dGVzXSwgW2Js
aW5kZWRTaWduYXR1cmUgbGVuZ3RoXSkpKTsKKyAgICBFWFBFQ1RfVFJVRShwY20uY2FsY3VsYXRl
QW5kVXBkYXRlU291cmNlU2VjcmV0VG9rZW4oV1RGOjpiYXNlNjRVUkxFbmNvZGUoW2JsaW5kZWRT
aWduYXR1cmUgYnl0ZXNdLCBbYmxpbmRlZFNpZ25hdHVyZSBsZW5ndGhdKSkpOwogICAgIGF1dG8m
IHBlcnNpc3RlbnRUb2tlbiA9IHBjbS5zb3VyY2VVbmxpbmthYmxlVG9rZW4oKTsKICAgICBFWFBF
Q1RfVFJVRShwZXJzaXN0ZW50VG9rZW4pOwogICAgIEVYUEVDVF9GQUxTRShwZXJzaXN0ZW50VG9r
ZW4tPnRva2VuQmFzZTY0VVJMLmlzRW1wdHkoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApp
bmRleCBlNzIyMThiOWQ0MGVjYjYyMTgyMTkyZmZiNzQ0YzFjYWYxMDcxOGM4Li40N2FiMTE1NjA1
ZGJjNTM1M2Q2NmNjM2FkM2QwYWU1NWMxMjBmYjlkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5p
ZGwKQEAgLTQwNyw3ICs0MDcsNyBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdW5kZWZp
bmVkIHNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5n
KERPTVN0cmluZyB1cmwpOwogICAgIHVuZGVmaW5lZCBzZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEF0dHJpYnV0aW9uUmVwb3J0VVJMRm9yVGVzdGluZyhET01TdHJpbmcgdXJsKTsKICAgICB1bmRl
ZmluZWQgbWFya1ByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoKTsK
LSAgICB1bmRlZmluZWQgc2V0RnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZyhET01TdHJp
bmcgc2VjcmV0VG9rZW4sIERPTVN0cmluZyB1bmxpbmthYmxlVG9rZW4sIERPTVN0cmluZyBzaWdu
YXR1cmUsIERPTVN0cmluZyBrZXlJRCk7CisgICAgdW5kZWZpbmVkIHNldFByaXZhdGVDbGlja01l
YXN1cmVtZW50RnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZyhET01TdHJpbmcgdW5saW5r
YWJsZVRva2VuLCBET01TdHJpbmcgc2VjcmV0VG9rZW4sIERPTVN0cmluZyBzaWduYXR1cmUsIERP
TVN0cmluZyBrZXlJRCk7CiAKICAgICAvLyBTcGVlY2hSZWNvZ25pdGlvbgogICAgIHVuZGVmaW5l
ZCBzZXRJc1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQoYm9vbGVhbiB2YWx1ZSk7
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVu
bmVyLmNwcAppbmRleCAwOTI2ZGNhMzU3OGUyMzE4ZTZhNmEwM2M1ZDdlMGJlNzFmYzczZTE5Li5l
ZjgzNmQ1MDFkN2QxYWQzYmY4ZWNmNjUwZjM4NGMwYzliYzdmOTJlIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTIw
NDksMTEgKzIwNDksMTEgQEAgdm9pZCBUZXN0UnVubmVyOjptYXJrUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZygpCiAgICAgcG9zdFN5bmNocm9ub3VzUGFnZU1lc3Nh
Z2UoIk1hcmtQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nIik7CiB9
CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c2V0RnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZyhK
U1N0cmluZ1JlZiBzZWNyZXRUb2tlbiwgSlNTdHJpbmdSZWYgdW5saW5rYWJsZVRva2VuLCBKU1N0
cmluZ1JlZiBzaWduYXR1cmUsIEpTU3RyaW5nUmVmIGtleUlEKQordm9pZCBUZXN0UnVubmVyOjpz
ZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3Rpbmco
SlNTdHJpbmdSZWYgdW5saW5rYWJsZVRva2VuLCBKU1N0cmluZ1JlZiBzZWNyZXRUb2tlbiwgSlNT
dHJpbmdSZWYgc2lnbmF0dXJlLCBKU1N0cmluZ1JlZiBrZXlJRCkKIHsKLSAgICBwb3N0U3luY2hy
b25vdXNNZXNzYWdlKCJTZXRGcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nIiwgY3JlYXRl
V0tEaWN0aW9uYXJ5KHsKLSAgICAgICAgeyAiU2VjcmV0VG9rZW4iLCB0b1dLKHNlY3JldFRva2Vu
KSB9LAorICAgIHBvc3RTeW5jaHJvbm91c01lc3NhZ2UoIlNldFBDTUZyYXVkUHJldmVudGlvblZh
bHVlc0ZvclRlc3RpbmciLCBjcmVhdGVXS0RpY3Rpb25hcnkoewogICAgICAgICB7ICJVbmxpbmth
YmxlVG9rZW4iLCB0b1dLKHVubGlua2FibGVUb2tlbikgfSwKKyAgICAgICAgeyAiU2VjcmV0VG9r
ZW4iLCB0b1dLKHNlY3JldFRva2VuKSB9LAogICAgICAgICB7ICJTaWduYXR1cmUiLCB0b1dLKHNp
Z25hdHVyZSkgfSwKICAgICAgICAgeyAiS2V5SUQiLCB0b1dLKGtleUlEKSB9LAogICAgIH0pKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmgKaW5kZXggY2FmN2Q3ZmFjZjJiYjViNmEzMDcwMzA3NzE5NTc1NTJmMGEwZTFlMi4uMDUyOTM3
YWU5Y2ZhYjVhZjc4NDc5NGY0YTE2MzczMDA3YTc1NzYwMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAgLTUxNyw3ICs1MTcs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0
aW9uUmVwb3J0VVJMRm9yVGVzdGluZyhKU1N0cmluZ1JlZik7CiAgICAgdm9pZCBtYXJrUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZygpOwogICAgIHZvaWQgbWFya0F0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKCk7Ci0g
ICAgdm9pZCBzZXRGcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nKEpTU3RyaW5nUmVmIHNl
Y3JldFRva2VuLCBKU1N0cmluZ1JlZiB1bmxpbmthYmxlVG9rZW4sIEpTU3RyaW5nUmVmIHNpZ25h
dHVyZSwgSlNTdHJpbmdSZWYga2V5SUQpOworICAgIHZvaWQgc2V0UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRGcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nKEpTU3RyaW5nUmVmIHVubGlua2Fi
bGVUb2tlbiwgSlNTdHJpbmdSZWYgc2VjcmV0VG9rZW4sIEpTU3RyaW5nUmVmIHNpZ25hdHVyZSwg
SlNTdHJpbmdSZWYga2V5SUQpOwogICAgIHZvaWQgc2ltdWxhdGVSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU2Vzc2lvblJlc3RhcnQoKTsKIAogICAgIHZvaWQgc2V0SXNTcGVlY2hSZWNvZ25pdGlvblBl
cm1pc3Npb25HcmFudGVkKGJvb2wpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcAppbmRleCA2ZDczYWJjM2I2ZGEzMzFjZjcxMmI3MGIzODRkMGQxOGNjMzkyZGQ2Li4z
OWZlZTg5MDEwMmQ2MmI5OTIxYzJlZTA4NjIwODA4ZDJmZmQyMjJlIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtMzY1OCwxMCArMzY1OCwxMCBAQCB2b2lk
IFRlc3RDb250cm9sbGVyOjptYXJrUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9y
VGVzdGluZygpCiAgICAgcnVuVW50aWwoY2FsbGJhY2tDb250ZXh0LmRvbmUsIG5vVGltZW91dCk7
CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OnNldEZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRl
c3RpbmcoV0tTdHJpbmdSZWYgc2VjcmV0VG9rZW4sIFdLU3RyaW5nUmVmIHVubGlua2FibGVUb2tl
biwgV0tTdHJpbmdSZWYgc2lnbmF0dXJlLCBXS1N0cmluZ1JlZiBrZXlJRCkKK3ZvaWQgVGVzdENv
bnRyb2xsZXI6OnNldFBDTUZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmcoV0tTdHJpbmdS
ZWYgdW5saW5rYWJsZVRva2VuLCBXS1N0cmluZ1JlZiBzZWNyZXRUb2tlbiwgV0tTdHJpbmdSZWYg
c2lnbmF0dXJlLCBXS1N0cmluZ1JlZiBrZXlJRCkKIHsKICAgICBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudFZvaWRDYWxsYmFja0NvbnRleHQgY2FsbGJhY2tDb250ZXh0KCp0aGlzKTsKLSAgICBXS1Bh
Z2VTZXRGcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nKG1fbWFpbldlYlZpZXctPnBhZ2Uo
KSwgc2VjcmV0VG9rZW4sIHVubGlua2FibGVUb2tlbiwgc2lnbmF0dXJlLCBrZXlJRCwgcHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRWb2lkQ2FsbGJhY2ssICZjYWxsYmFja0NvbnRleHQpOworICAgIFdL
UGFnZVNldFBDTUZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmcobV9tYWluV2ViVmlldy0+
cGFnZSgpLCB1bmxpbmthYmxlVG9rZW4sIHNlY3JldFRva2VuLCBzaWduYXR1cmUsIGtleUlELCBw
cml2YXRlQ2xpY2tNZWFzdXJlbWVudFZvaWRDYWxsYmFjaywgJmNhbGxiYWNrQ29udGV4dCk7CiAg
ICAgcnVuVW50aWwoY2FsbGJhY2tDb250ZXh0LmRvbmUsIG5vVGltZW91dCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCA0MzY0ZDNiZDQxNTM1MzEzM2M0
OTRmZjdhYTVmMTU5NDE0ZDBiNjJjLi5hMDczYjMwMTIxNmIwOGFiZjc0NDg3NTM0YThlNWIxOTIz
NmVhYTJhIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC0zNTAs
NyArMzUwLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRU
b2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmcoV0tVUkxSZWYpOwogICAgIHZvaWQgc2V0UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblJlcG9ydFVSTEZvclRlc3RpbmcoV0tVUkxSZWYp
OwogICAgIHZvaWQgbWFya1ByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3Rp
bmcoKTsKLSAgICB2b2lkIHNldEZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmcoV0tTdHJp
bmdSZWYgc2VjcmV0VG9rZW4sIFdLU3RyaW5nUmVmIHVubGlua2FibGVUb2tlbiwgV0tTdHJpbmdS
ZWYgc2lnbmF0dXJlLCBXS1N0cmluZ1JlZiBrZXlJRCk7CisgICAgdm9pZCBzZXRQQ01GcmF1ZFBy
ZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nKFdLU3RyaW5nUmVmIHVubGlua2FibGVUb2tlbiwgV0tT
dHJpbmdSZWYgc2VjcmV0VG9rZW4sIFdLU3RyaW5nUmVmIHNpZ25hdHVyZSwgV0tTdHJpbmdSZWYg
a2V5SUQpOwogCiAgICAgdm9pZCBkaWRTZXRBcHBCb3VuZERvbWFpbnMoKSBjb25zdDsKIApkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCAzNWYxZmU1Y2M1Nzdl
YTc4NGVlZWM0ZjcyNzc1ZGE4MmExNGI0MDQ5Li5jYzZjNTY1NWI3MGU5YjliNzlmMGVmZDg0NDc5
YmFkZTYzMDBiYjExIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cApAQCAtMTM2MywxNCArMTM2MywxNCBAQCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RJbnZv
Y2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQgogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4
Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldEZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3Rpbmci
KSkgeworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAi
U2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZyIpKSB7CiAgICAgICAgIGF1dG8g
dGVzdERpY3Rpb25hcnkgPSBkaWN0aW9uYXJ5VmFsdWUobWVzc2FnZUJvZHkpOwotICAgICAgICBh
dXRvIHNlY3JldFRva2VuID0gc3RyaW5nVmFsdWUodGVzdERpY3Rpb25hcnksICJTZWNyZXRUb2tl
biIpOwogICAgICAgICBhdXRvIHVubGlua2FibGVUb2tlbiA9IHN0cmluZ1ZhbHVlKHRlc3REaWN0
aW9uYXJ5LCAiVW5saW5rYWJsZVRva2VuIik7CisgICAgICAgIGF1dG8gc2VjcmV0VG9rZW4gPSBz
dHJpbmdWYWx1ZSh0ZXN0RGljdGlvbmFyeSwgIlNlY3JldFRva2VuIik7CiAgICAgICAgIGF1dG8g
c2lnbmF0dXJlID0gc3RyaW5nVmFsdWUodGVzdERpY3Rpb25hcnksICJTaWduYXR1cmUiKTsKICAg
ICAgICAgYXV0byBrZXlJRCA9IHN0cmluZ1ZhbHVlKHRlc3REaWN0aW9uYXJ5LCAiS2V5SUQiKTsK
IAotICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0RnJhdWRQcmV2ZW50aW9u
VmFsdWVzRm9yVGVzdGluZyhzZWNyZXRUb2tlbiwgdW5saW5rYWJsZVRva2VuLCBzaWduYXR1cmUs
IGtleUlEKTsKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNldFBDTUZyYXVk
UHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmcodW5saW5rYWJsZVRva2VuLCBzZWNyZXRUb2tlbiwg
c2lnbmF0dXJlLCBrZXlJRCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDA3OWZjNTZjMmZmZTZmNDg2ZWIzOWRiZDZjMmNjNjY1ODIyNmUwN2IuLjFlNmIzZjZlOTAz
YjcxNDQyNjI5ZTI2NmNlZWQ1ZmIzMmFmMWU0OTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAy
MS0wMy0wNSAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBQ
Q006IEFsaWduIGZyYXVkIHByZXZlbnRpb24gdG9rZW4gbmFtaW5nIHdpdGggaXNzdWUgNzMgaW4g
dGhlIFByaXZhY3kgQ0cgcmVwbworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjIyODM4CisgICAgICAgIDxyZGFyOi8vNzUxMTU0Mjc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBkb2Vzbid0
IGNoYW5nZSBmdW5jdGlvbmFsaXR5IGFuZCBvbmx5IGFsaWducyBuYW1pbmcgdG8gdGhpcyBXM0Mg
UHJpdmFjeSBDRyBpc3N1ZToKKyAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL3ByaXZhY3ljZy9w
cml2YXRlLWNsaWNrLW1lYXN1cmVtZW50L2lzc3Vlcy83MworCisgICAgICAgICogaHR0cC90ZXN0
cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9yZXNvdXJjZXMvZnJhdWRQcmV2ZW50aW9uVGVzdFVS
TC5waHA6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01l
YXN1cmVtZW50L3Jlc291cmNlcy9zaWduVG9rZW4ucGhwLgorICAgICAgICAgICAgVGhlIHdheSB0
aGlzIFBIUCBmaWxlIGlzIHVzZWQgZ29lcyBiZXlvbmQgc2lnbmluZyB0b2tlbnMgc28gaXQgbm93
IGhhcyBhIGdlbmVyaWMgbmFtZS4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3ByaXZhdGVDbGlja01l
YXN1cmVtZW50L3N0b3JlLXByaXZhdGUtY2xpY2stbWVhc3VyZW1lbnQtd2l0aC1zb3VyY2Utbm9u
Y2UtZXhwZWN0ZWQudHh0OgorICAgICAgICAgICAgUmUtYmFzZWxpbmVkIHRvIHJlZmxlY3QgdGhl
IG5ldyBuYW1pbmcuCisgICAgICAgICogaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dC9zdG9yZS1wcml2YXRlLWNsaWNrLW1lYXN1cmVtZW50LXdpdGgtc291cmNlLW5vbmNlLmh0bWw6
CisKIDIwMjEtMDMtMDUgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAg
ICAgIFtQYXltZW50IFJlcXVlc3RdIGlmIGByZXF1ZXN0U2hpcHBpbmc6IGZhbHNlYCB0aGVuIHdl
IHNob3VsZCBub3Qgc2hvdyBhbnkgYFBheW1lbnRTaGlwcGluZ09wdGlvbmAgaW4gdGhlIEFwcGxl
IFBheSBzaGVldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudC9yZXNvdXJjZXMvZnJhdWRQcmV2ZW50aW9uVGVzdFVSTC5waHAgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3Jlc291cmNlcy9mcmF1
ZFByZXZlbnRpb25UZXN0VVJMLnBocApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MTVhMTk4ZDFjOTg4OGY0ZmQyZjc5
MjQxOGFkNWFjNGQ1ODcyZWZhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9yZXNvdXJjZXMvZnJhdWRQcmV2ZW50aW9uVGVz
dFVSTC5waHAKQEAgLTAsMCArMSw1OSBAQAorPD9waHAKK3JlcXVpcmVfb25jZSAidG9rZW5TaWdu
aW5nRmlsZVBhdGgucGhwIjsKKworJHRva2VuU2lnbmluZ0ZpbGUgPSBmb3BlbigkdG9rZW5TaWdu
aW5nRmlsZVBhdGggLiAiLnRtcCIsICdhJyk7CiskaHR0cEhlYWRlcnMgPSAkX1NFUlZFUjsKKyRj
b29raWVzRm91bmQgPSBmYWxzZTsKKy8vIFRoaXMgcGhwIHdpbGwgcmVzcG9uZCB0byBmb3VyIGNv
bnNlY3V0aXZlIHNlcnZlciByZXF1ZXN0cy4KKy8vIEl0IHdpbGwgb25seSBjb21wbGV0ZSB0aGUg
dHJhbnNhY3Rpb24gd2hlbiB0aGUgbGFzdCByZXF1ZXN0IGZpbmlzaGVzLgorJGlzTGFzdFJlcXVl
c3QgPSBmYWxzZTsKKworaWYgKCR2YWx1ZSA9ICRodHRwSGVhZGVyc1siUkVRVUVTVF9NRVRIT0Qi
XSkgeworICAgIGZ3cml0ZSgkdG9rZW5TaWduaW5nRmlsZSwgIlJFUVVFU1RfTUVUSE9EOiAkdmFs
dWVcbiIpOworfQorCitpZiAoJHZhbHVlID0gJGh0dHBIZWFkZXJzWyJIVFRQX0hPU1QiXSkgewor
ICAgIGZ3cml0ZSgkdG9rZW5TaWduaW5nRmlsZSwgIkhUVFBfSE9TVDogJHZhbHVlXG4iKTsKK30K
KworaWYgKCR2YWx1ZSA9ICRodHRwSGVhZGVyc1siSFRUUF9DT09LSUUiXSkgeworICAgIGZ3cml0
ZSgkdG9rZW5TaWduaW5nRmlsZSwgIkNvb2tpZXMgaW4gdG9rZW4gc2lnbmluZyByZXF1ZXN0OiAk
dmFsdWVcbiIpOworICAgICRjb29raWVzRm91bmQgPSB0cnVlOworfQorCitpZiAoJHZhbHVlID0g
JGh0dHBIZWFkZXJzWyJDT05URU5UX1RZUEUiXSkgeworICAgIGZ3cml0ZSgkdG9rZW5TaWduaW5n
RmlsZSwgIkNvbnRlbnQgdHlwZTogJHZhbHVlXG4iKTsKK30KKworaWYgKCR2YWx1ZSA9ICRodHRw
SGVhZGVyc1siUkVRVUVTVF9VUkkiXSkgeworICAgICR2YWx1ZSA9ICRodHRwSGVhZGVyc1siUkVR
VUVTVF9VUkkiXTsKKyAgICAkcG9zaXRpb25PZkR1bW15ID0gc3RycG9zKCR2YWx1ZSwgIj9kdW1t
eT0iKTsKKyAgICBpZiAoJHBvc2l0aW9uT2ZEdW1teSA9PT0gZmFsc2UpCisgICAgICAgICRvdXRw
dXRVUkwgPSAkdmFsdWU7CisgICAgZWxzZQorICAgICAgICAkb3V0cHV0VVJMID0gc3Vic3RyKCR2
YWx1ZSwgMCwgJHBvc2l0aW9uT2ZEdW1teSk7CisgICAgZndyaXRlKCR0b2tlblNpZ25pbmdGaWxl
LCAiUkVRVUVTVF9VUkk6ICRvdXRwdXRVUkxcbiIpOworCisgICAgJHBvc2l0aW9uT2ZEdW1teSA9
IHN0cnBvcygkdmFsdWUsICImbGFzdD0iKTsKKyAgICBpZiAoJHBvc2l0aW9uT2ZEdW1teSAhPSBm
YWxzZSkKKyAgICAgICAgJGlzTGFzdFJlcXVlc3QgPSB0cnVlOworfQorCitpZiAoISRjb29raWVz
Rm91bmQpIHsKKyAgICBmd3JpdGUoJHRva2VuU2lnbmluZ0ZpbGUsICJObyBjb29raWVzIGluIHRv
a2VuIHNpZ25pbmcgcmVxdWVzdC5cbiIpOworfQorCiskcmVxdWVzdEJvZHkgPSBmaWxlX2dldF9j
b250ZW50cygicGhwOi8vaW5wdXQiKTsKK2Z3cml0ZSgkdG9rZW5TaWduaW5nRmlsZSwgIlJlcXVl
c3QgYm9keTpcbiRyZXF1ZXN0Qm9keVxuIik7CisKK2ZjbG9zZSgkdG9rZW5TaWduaW5nRmlsZSk7
CisvLyBDb21wbGV0ZSB0aGUgdHJhbnNhY3Rpb24uCitpZiAoJGlzTGFzdFJlcXVlc3QpCisgICAg
cmVuYW1lKCR0b2tlblNpZ25pbmdGaWxlUGF0aCAuICIudG1wIiwgJHRva2VuU2lnbmluZ0ZpbGVQ
YXRoKTsKKworaGVhZGVyKCJIVFRQLzEuMSAyMDEgQ3JlYXRlZCIpOworaGVhZGVyKCJ1bmxpbmth
YmxlX3Rva2VuX3B1YmxpY19rZXk6IEFCQ0QiKTsKK2hlYWRlcigic2VjcmV0X3Rva2VuX3NpZ25h
dHVyZTogQUJDRCIpOworc2V0Y29va2llKCJjb29raWVTZXRJblRva2VuU2lnbmluZ1Jlc3BvbnNl
IiwgIjEiLCAwLCAiLyIpOworCis/PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9yZXNvdXJjZXMvc2lnblRva2VuLnBocCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvcmVzb3VyY2VzL3NpZ25U
b2tlbi5waHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxNWExOThkMWM5ODg4ZjRm
ZDJmNzkyNDE4YWQ1YWM0ZDU4NzJlZmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9yZXNvdXJjZXMvc2lnblRva2VuLnBocAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAg
QEAKLTw/cGhwCi1yZXF1aXJlX29uY2UgInRva2VuU2lnbmluZ0ZpbGVQYXRoLnBocCI7Ci0KLSR0
b2tlblNpZ25pbmdGaWxlID0gZm9wZW4oJHRva2VuU2lnbmluZ0ZpbGVQYXRoIC4gIi50bXAiLCAn
YScpOwotJGh0dHBIZWFkZXJzID0gJF9TRVJWRVI7Ci0kY29va2llc0ZvdW5kID0gZmFsc2U7Ci0v
LyBUaGlzIHBocCB3aWxsIHJlc3BvbmQgdG8gZm91ciBjb25zZWN1dGl2ZSBzZXJ2ZXIgcmVxdWVz
dHMuCi0vLyBJdCB3aWxsIG9ubHkgY29tcGxldGUgdGhlIHRyYW5zYWN0aW9uIHdoZW4gdGhlIGxh
c3QgcmVxdWVzdCBmaW5pc2hlcy4KLSRpc0xhc3RSZXF1ZXN0ID0gZmFsc2U7Ci0KLWlmICgkdmFs
dWUgPSAkaHR0cEhlYWRlcnNbIlJFUVVFU1RfTUVUSE9EIl0pIHsKLSAgICBmd3JpdGUoJHRva2Vu
U2lnbmluZ0ZpbGUsICJSRVFVRVNUX01FVEhPRDogJHZhbHVlXG4iKTsKLX0KLQotaWYgKCR2YWx1
ZSA9ICRodHRwSGVhZGVyc1siSFRUUF9IT1NUIl0pIHsKLSAgICBmd3JpdGUoJHRva2VuU2lnbmlu
Z0ZpbGUsICJIVFRQX0hPU1Q6ICR2YWx1ZVxuIik7Ci19Ci0KLWlmICgkdmFsdWUgPSAkaHR0cEhl
YWRlcnNbIkhUVFBfQ09PS0lFIl0pIHsKLSAgICBmd3JpdGUoJHRva2VuU2lnbmluZ0ZpbGUsICJD
b29raWVzIGluIHRva2VuIHNpZ25pbmcgcmVxdWVzdDogJHZhbHVlXG4iKTsKLSAgICAkY29va2ll
c0ZvdW5kID0gdHJ1ZTsKLX0KLQotaWYgKCR2YWx1ZSA9ICRodHRwSGVhZGVyc1siQ09OVEVOVF9U
WVBFIl0pIHsKLSAgICBmd3JpdGUoJHRva2VuU2lnbmluZ0ZpbGUsICJDb250ZW50IHR5cGU6ICR2
YWx1ZVxuIik7Ci19Ci0KLWlmICgkdmFsdWUgPSAkaHR0cEhlYWRlcnNbIlJFUVVFU1RfVVJJIl0p
IHsKLSAgICAkdmFsdWUgPSAkaHR0cEhlYWRlcnNbIlJFUVVFU1RfVVJJIl07Ci0gICAgJHBvc2l0
aW9uT2ZEdW1teSA9IHN0cnBvcygkdmFsdWUsICI/ZHVtbXk9Iik7Ci0gICAgaWYgKCRwb3NpdGlv
bk9mRHVtbXkgPT09IGZhbHNlKQotICAgICAgICAkb3V0cHV0VVJMID0gJHZhbHVlOwotICAgIGVs
c2UKLSAgICAgICAgJG91dHB1dFVSTCA9IHN1YnN0cigkdmFsdWUsIDAsICRwb3NpdGlvbk9mRHVt
bXkpOwotICAgIGZ3cml0ZSgkdG9rZW5TaWduaW5nRmlsZSwgIlJFUVVFU1RfVVJJOiAkb3V0cHV0
VVJMXG4iKTsKLQotICAgICRwb3NpdGlvbk9mRHVtbXkgPSBzdHJwb3MoJHZhbHVlLCAiJmxhc3Q9
Iik7Ci0gICAgaWYgKCRwb3NpdGlvbk9mRHVtbXkgIT0gZmFsc2UpCi0gICAgICAgICRpc0xhc3RS
ZXF1ZXN0ID0gdHJ1ZTsKLX0KLQotaWYgKCEkY29va2llc0ZvdW5kKSB7Ci0gICAgZndyaXRlKCR0
b2tlblNpZ25pbmdGaWxlLCAiTm8gY29va2llcyBpbiB0b2tlbiBzaWduaW5nIHJlcXVlc3QuXG4i
KTsKLX0KLQotJHJlcXVlc3RCb2R5ID0gZmlsZV9nZXRfY29udGVudHMoInBocDovL2lucHV0Iik7
Ci1md3JpdGUoJHRva2VuU2lnbmluZ0ZpbGUsICJSZXF1ZXN0IGJvZHk6XG4kcmVxdWVzdEJvZHlc
biIpOwotCi1mY2xvc2UoJHRva2VuU2lnbmluZ0ZpbGUpOwotLy8gQ29tcGxldGUgdGhlIHRyYW5z
YWN0aW9uLgotaWYgKCRpc0xhc3RSZXF1ZXN0KQotICAgIHJlbmFtZSgkdG9rZW5TaWduaW5nRmls
ZVBhdGggLiAiLnRtcCIsICR0b2tlblNpZ25pbmdGaWxlUGF0aCk7Ci0KLWhlYWRlcigiSFRUUC8x
LjEgMjAxIENyZWF0ZWQiKTsKLWhlYWRlcigidW5saW5rYWJsZV90b2tlbl9wdWJsaWNfa2V5OiBB
QkNEIik7Ci1oZWFkZXIoInNlY3JldF90b2tlbl9zaWduYXR1cmU6IEFCQ0QiKTsKLXNldGNvb2tp
ZSgiY29va2llU2V0SW5Ub2tlblNpZ25pbmdSZXNwb25zZSIsICIxIiwgMCwgIi8iKTsKLQotPz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQvc3RvcmUtcHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudC13aXRoLXNvdXJjZS1ub25jZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50
L3N0b3JlLXByaXZhdGUtY2xpY2stbWVhc3VyZW1lbnQtd2l0aC1zb3VyY2Utbm9uY2UtZXhwZWN0
ZWQudHh0CmluZGV4IDZmODMwNGUzYWFlNzU0ZmQ4MzUyZDBhODBlMjE4NTlmNWRhNmM4YmYuLjQ4
NmM1ZTJjY2I3MmVmYWZlMjBhNjU3YjUzM2Y5ODBmODJkMjNkYTQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvc3RvcmUtcHJpdmF0ZS1j
bGljay1tZWFzdXJlbWVudC13aXRoLXNvdXJjZS1ub25jZS1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9zdG9yZS1wcml2YXRl
LWNsaWNrLW1lYXN1cmVtZW50LXdpdGgtc291cmNlLW5vbmNlLWV4cGVjdGVkLnR4dApAQCAtOCwz
MCArOCwzMCBAQCBGcmFtZTogJzwhLS1mcmFtZTEtLT4nCiBUb2tlbiBzaWduaW5nIHJlcXVlc3Qg
cmVjZWl2ZWQuCiBSRVFVRVNUX01FVEhPRDogR0VUCiBIVFRQX0hPU1Q6IDEyNy4wLjAuMTo4MDAw
Ci1SRVFVRVNUX1VSSTogL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3Jlc291cmNlcy9zaWduVG9r
ZW4ucGhwCitSRVFVRVNUX1VSSTogL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3Jlc291cmNlcy9m
cmF1ZFByZXZlbnRpb25UZXN0VVJMLnBocAogTm8gY29va2llcyBpbiB0b2tlbiBzaWduaW5nIHJl
cXVlc3QuCiBSZXF1ZXN0IGJvZHk6CiAKIFJFUVVFU1RfTUVUSE9EOiBQT1NUCiBIVFRQX0hPU1Q6
IDEyNy4wLjAuMTo4MDAwCiBDb250ZW50IHR5cGU6IGFwcGxpY2F0aW9uL2pzb24KLVJFUVVFU1Rf
VVJJOiAvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvcmVzb3VyY2VzL3NpZ25Ub2tlbi5waHAKK1JF
UVVFU1RfVVJJOiAvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvcmVzb3VyY2VzL2ZyYXVkUHJldmVu
dGlvblRlc3RVUkwucGhwCiBObyBjb29raWVzIGluIHRva2VuIHNpZ25pbmcgcmVxdWVzdC4KIFJl
cXVlc3QgYm9keToKLXsic291cmNlX2VuZ2FnZW1lbnRfdHlwZSI6ImNsaWNrIiwic291cmNlX25v
bmNlIjoiQUJDREVGYWJjZGVmMDEyMzQ1Njc4OSIsInNvdXJjZV9zZWNyZXRfdG9rZW4iOiJzZWNy
ZXRUb2tlbiIsInZlcnNpb24iOjJ9Cit7InNvdXJjZV9lbmdhZ2VtZW50X3R5cGUiOiJjbGljayIs
InNvdXJjZV9ub25jZSI6IkFCQ0RFRmFiY2RlZjAxMjM0NTY3ODkiLCJzb3VyY2VfdW5saW5rYWJs
ZV90b2tlbiI6InVubGlua2FibGVUb2tlbiIsInZlcnNpb24iOjJ9CiBSRVFVRVNUX01FVEhPRDog
R0VUCiBIVFRQX0hPU1Q6IDEyNy4wLjAuMTo4MDAwCi1SRVFVRVNUX1VSSTogL3ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L3Jlc291cmNlcy9zaWduVG9rZW4ucGhwCitSRVFVRVNUX1VSSTogL3ByaXZh
dGVDbGlja01lYXN1cmVtZW50L3Jlc291cmNlcy9mcmF1ZFByZXZlbnRpb25UZXN0VVJMLnBocAog
Tm8gY29va2llcyBpbiB0b2tlbiBzaWduaW5nIHJlcXVlc3QuCiBSZXF1ZXN0IGJvZHk6CiAKIFJF
UVVFU1RfTUVUSE9EOiBQT1NUCiBIVFRQX0hPU1Q6IDEyNy4wLjAuMTo4MDAwCiBDb250ZW50IHR5
cGU6IGFwcGxpY2F0aW9uL2pzb24KLVJFUVVFU1RfVVJJOiAvcHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQvcmVzb3VyY2VzL3NpZ25Ub2tlbi5waHAKK1JFUVVFU1RfVVJJOiAvcHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvcmVzb3VyY2VzL2ZyYXVkUHJldmVudGlvblRlc3RVUkwucGhwCiBObyBjb29raWVz
IGluIHRva2VuIHNpZ25pbmcgcmVxdWVzdC4KIFJlcXVlc3QgYm9keToKLXsic291cmNlX2VuZ2Fn
ZW1lbnRfdHlwZSI6ImNsaWNrIiwic291cmNlX3NpdGUiOiIxMjcuMC4wLjEiLCJzb3VyY2VfaWQi
OjMsImF0dHJpYnV0ZWRfb25fc2l0ZSI6ImxvY2FsaG9zdCIsInRyaWdnZXJfZGF0YSI6MTIsInZl
cnNpb24iOjIsInNvdXJjZV91bmxpbmthYmxlX3Rva2VuIjoidW5saW5rYWJsZVRva2VuIiwic291
cmNlX3VubGlua2FibGVfdG9rZW5fc2lnbmF0dXJlIjoic2lnbmF0dXJlIn0KK3sic291cmNlX2Vu
Z2FnZW1lbnRfdHlwZSI6ImNsaWNrIiwic291cmNlX3NpdGUiOiIxMjcuMC4wLjEiLCJzb3VyY2Vf
aWQiOjMsImF0dHJpYnV0ZWRfb25fc2l0ZSI6ImxvY2FsaG9zdCIsInRyaWdnZXJfZGF0YSI6MTIs
InZlcnNpb24iOjIsInNvdXJjZV9zZWNyZXRfdG9rZW4iOiJzZWNyZXRUb2tlbiIsInNvdXJjZV9z
ZWNyZXRfdG9rZW5fc2lnbmF0dXJlIjoic2lnbmF0dXJlIn0KIAogCiBObyBzdG9yZWQgUHJpdmF0
ZSBDbGljayBNZWFzdXJlbWVudCBkYXRhLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9zdG9yZS1wcml2YXRlLWNsaWNrLW1lYXN1cmVt
ZW50LXdpdGgtc291cmNlLW5vbmNlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZh
dGVDbGlja01lYXN1cmVtZW50L3N0b3JlLXByaXZhdGUtY2xpY2stbWVhc3VyZW1lbnQtd2l0aC1z
b3VyY2Utbm9uY2UuaHRtbAppbmRleCBhNTQ0YTlhZWQwZTcyNDk5YzYxNTRkY2RmN2Q1MzJiZjNl
Njc4ZmNlLi5jMzYyNGE3MmQ2NTRkYTk2NzQyYjUxODAzNzFiMzBiZDRjMDg4MGYyIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3N0b3Jl
LXByaXZhdGUtY2xpY2stbWVhc3VyZW1lbnQtd2l0aC1zb3VyY2Utbm9uY2UuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3N0b3JlLXByaXZh
dGUtY2xpY2stbWVhc3VyZW1lbnQtd2l0aC1zb3VyY2Utbm9uY2UuaHRtbApAQCAtNTEsMTEgKzUx
LDExIEBACiAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKICAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CiAgICAgICAgICAgICBpZiAoIXdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpIHsKLSAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5Q
dWJsaWNLZXlVUkxGb3JUZXN0aW5nKCJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQvcmVzb3VyY2VzL3NpZ25Ub2tlbi5waHA/ZHVtbXk9IiArIGR1bW15KTsKLSAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5T
aWduYXR1cmVVUkxGb3JUZXN0aW5nKCJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQvcmVzb3VyY2VzL3NpZ25Ub2tlbi5waHA/ZHVtbXk9IiArIGR1bW15KTsKLSAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmli
dXRpb25SZXBvcnRVUkxGb3JUZXN0aW5nKCJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQvcmVzb3VyY2VzL3NpZ25Ub2tlbi5waHA/ZHVtbXk9IiArIGR1bW15ICsg
IiZsYXN0PXRydWUiKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFByaXZhdGVDbGlj
a01lYXN1cmVtZW50VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nKCJodHRwOi8vMTI3LjAuMC4x
OjgwMDAvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvcmVzb3VyY2VzL2ZyYXVkUHJldmVudGlvblRl
c3RVUkwucGhwP2R1bW15PSIgKyBkdW1teSk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5z
ZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZygiaHR0
cDovLzEyNy4wLjAuMTo4MDAwL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3Jlc291cmNlcy9mcmF1
ZFByZXZlbnRpb25UZXN0VVJMLnBocD9kdW1teT0iICsgZHVtbXkpOworICAgICAgICAgICAgICAg
IHRlc3RSdW5uZXIuc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblJlcG9ydFVS
TEZvclRlc3RpbmcoImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9wcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dC9yZXNvdXJjZXMvZnJhdWRQcmV2ZW50aW9uVGVzdFVSTC5waHA/ZHVtbXk9IiArIGR1bW15ICsg
IiZsYXN0PXRydWUiKTsKICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFByaXZhdGVDbGlj
a01lYXN1cmVtZW50T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcodHJ1ZSk7Ci0gICAgICAgICAgICAg
ICAgdGVzdFJ1bm5lci5zZXRGcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nKCJzZWNyZXRU
b2tlbiIsICJ1bmxpbmthYmxlVG9rZW4iLCAic2lnbmF0dXJlIiwgIldGM1VnZyIpOworICAgICAg
ICAgICAgICAgIHRlc3RSdW5uZXIuc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcmF1ZFByZXZl
bnRpb25WYWx1ZXNGb3JUZXN0aW5nKCJ1bmxpbmthYmxlVG9rZW4iLCAic2VjcmV0VG9rZW4iLCAi
c2lnbmF0dXJlIiwgIldGM1VnZyIpOwogCiAgICAgICAgICAgICAgICAgdGFyZ2V0TGluay5ocmVm
ID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9zdG9yZS1w
cml2YXRlLWNsaWNrLW1lYXN1cmVtZW50LXdpdGgtc291cmNlLW5vbmNlLmh0bWw/ZHVtbXk9IiAr
IGR1bW15OwogICAgICAgICAgICAgICAgIGFjdGl2YXRlRWxlbWVudCgidGFyZ2V0TGluayIpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>