<?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>206108</bug_id>
          
          <creation_ts>2020-01-10 16:26:55 -0800</creation_ts>
          <short_desc>document.cookie should not do a sync IPC to the network process for iframes that do not have storage access</short_desc>
          <delta_ts>2020-01-17 13:45:10 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>206442</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>berto</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>galpeter</cc>
    
    <cc>ggaren</cc>
    
    <cc>gustavo</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1605381</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-01-10 16:26:55 -0800</bug_when>
    <thetext>document.cookie should not do a sync IPC to the network process for iframes that do not have storage access.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605403</commentid>
    <comment_count>1</comment_count>
      <attachid>387397</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-01-10 16:55:01 -0800</bug_when>
    <thetext>Created attachment 387397
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1605871</commentid>
    <comment_count>2</comment_count>
      <attachid>387535</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-01-13 08:56:13 -0800</bug_when>
    <thetext>Created attachment 387535
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606055</commentid>
    <comment_count>3</comment_count>
      <attachid>387567</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-01-13 14:34:01 -0800</bug_when>
    <thetext>Created attachment 387567
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606143</commentid>
    <comment_count>4</comment_count>
      <attachid>387593</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-01-13 16:57:23 -0800</bug_when>
    <thetext>Created attachment 387593
WIP Patch

Almost ready.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606501</commentid>
    <comment_count>5</comment_count>
      <attachid>387681</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-01-14 11:50:59 -0800</bug_when>
    <thetext>Created attachment 387681
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606509</commentid>
    <comment_count>6</comment_count>
      <attachid>387684</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-01-14 12:03:19 -0800</bug_when>
    <thetext>Created attachment 387684
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606573</commentid>
    <comment_count>7</comment_count>
      <attachid>387684</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-01-14 13:55:48 -0800</bug_when>
    <thetext>Comment on attachment 387684
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606633</commentid>
    <comment_count>8</comment_count>
      <attachid>387684</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-01-14 15:34:56 -0800</bug_when>
    <thetext>Comment on attachment 387684
Patch

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

Thanks for fixing the preferences read and the improvements to when blocking is done and to test async behavior. See inline comments.

&gt; Source/WebKit/ChangeLog:6
&gt; +        Reviewed by NOBODY (OOPS!).

I thought we always described the change in both the WebCore and the WebKit change logs, at least when there are significant changes in both.

&gt; Source/WebKit/WebProcess/WebPage/WebCookieJar.cpp:65
&gt; +        return false;

Does this match some existing behavior?

&gt; Source/WebKit/WebProcess/WebPage/WebCookieJar.cpp:69
&gt; +        return false;

What does this imply? Can there be cookies for empty resource domains?

&gt; Source/WebKit/WebProcess/WebPage/WebCookieJar.cpp:108
&gt; +    if (!WebProcess::singleton().ensureNetworkProcessConnection().connection().sendSync(Messages::NetworkConnectionToWebProcess::CookiesForDOM(document.firstPartyForCookies(), sameSiteInfo(document), url, frameID, pageID, shouldIncludeSecureCookies(document, url), delegatesCookieBlockingToNetworkProcess ? ShouldApplyITPCookieBlockingPolicy::Yes : ShouldApplyITPCookieBlockingPolicy::No), Messages::NetworkConnectionToWebProcess::CookiesForDOM::Reply(cookieString, secureCookiesAccessed), 0))

Now that I see the use of ShouldApplyITPCookieBlockingPolicy, I think a more detailed enum is called for, such as { IsFirstParty, IsThirdPartyWithStorageAccess, IsThirdPartyWithoutStorageAccess, IsMissingPartyContext }, the last value being my attempt to encode the two cases with empty domains as commented on above. Then ITP in the network process can make an informed decision instead of being served a decision Apply policy Yes or No.

Such an enum would also make sense in both places instead of this delegatesCookieBlockingToNetworkProcess boolean plus the Yes/No enum.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606639</commentid>
    <comment_count>9</comment_count>
      <attachid>387684</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-01-14 15:38:46 -0800</bug_when>
    <thetext>Comment on attachment 387684
Patch

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

&gt;&gt; Source/WebKit/ChangeLog:6
&gt;&gt; +        Reviewed by NOBODY (OOPS!).
&gt; 
&gt; I thought we always described the change in both the WebCore and the WebKit change logs, at least when there are significant changes in both.

Not sure what the policy is. I can add the changelog to both WebKit and WebCore.

&gt;&gt; Source/WebKit/WebProcess/WebPage/WebCookieJar.cpp:65
&gt;&gt; +        return false;
&gt; 
&gt; Does this match some existing behavior?

This logic is identical to what is used in NetworkStorageSession::shouldBlockCookies() on network process side.

&gt;&gt; Source/WebKit/WebProcess/WebPage/WebCookieJar.cpp:69
&gt;&gt; +        return false;
&gt; 
&gt; What does this imply? Can there be cookies for empty resource domains?

This logic is identical to what is used in NetworkStorageSession::shouldBlockCookies() on network process side.

&gt;&gt; Source/WebKit/WebProcess/WebPage/WebCookieJar.cpp:108
&gt;&gt; +    if (!WebProcess::singleton().ensureNetworkProcessConnection().connection().sendSync(Messages::NetworkConnectionToWebProcess::CookiesForDOM(document.firstPartyForCookies(), sameSiteInfo(document), url, frameID, pageID, shouldIncludeSecureCookies(document, url), delegatesCookieBlockingToNetworkProcess ? ShouldApplyITPCookieBlockingPolicy::Yes : ShouldApplyITPCookieBlockingPolicy::No), Messages::NetworkConnectionToWebProcess::CookiesForDOM::Reply(cookieString, secureCookiesAccessed), 0))
&gt; 
&gt; Now that I see the use of ShouldApplyITPCookieBlockingPolicy, I think a more detailed enum is called for, such as { IsFirstParty, IsThirdPartyWithStorageAccess, IsThirdPartyWithoutStorageAccess, IsMissingPartyContext }, the last value being my attempt to encode the two cases with empty domains as commented on above. Then ITP in the network process can make an informed decision instead of being served a decision Apply policy Yes or No.
&gt; 
&gt; Such an enum would also make sense in both places instead of this delegatesCookieBlockingToNetworkProcess boolean plus the Yes/No enum.

The logic for checking is the same on the network process and WebProcess side. A yes/no bit is thus enough to communicate to the network process that we already did the check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606688</commentid>
    <comment_count>10</comment_count>
      <attachid>387730</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-01-14 16:42:47 -0800</bug_when>
    <thetext>Created attachment 387730
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606728</commentid>
    <comment_count>11</comment_count>
      <attachid>387730</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-01-14 17:22:15 -0800</bug_when>
    <thetext>Comment on attachment 387730
Patch

The shouldAskITPInNetworkProcess boolean and the ShouldAskITP enum are both good improvements. I assume you are waiting for EWS before you add cq+. Regardless, I&apos;m OK for it to go on the queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606763</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-14 19:10:21 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 387730:

editing/spelling/spellcheck-async-remove-frame.html bug 158401 (authors: morrita@google.com, rniwa@webkit.org, and tony@chromium.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606764</commentid>
    <comment_count>13</comment_count>
      <attachid>387730</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-14 19:11:01 -0800</bug_when>
    <thetext>Comment on attachment 387730
Patch

Clearing flags on attachment: 387730

Committed r254556: &lt;https://trac.webkit.org/changeset/254556&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606765</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-14 19:11:03 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606766</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-14 19:12:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/58592851&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387397</attachid>
            <date>2020-01-10 16:55:01 -0800</date>
            <delta_ts>2020-01-13 08:56:13 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>206108_avoid_sync_IPC_ads_wip.patch</filename>
            <type>text/plain</type>
            <size>34563</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCmluZGV4IGRkY2EyYzYzY2NlLi5m
MjQyODVlMjY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCkBAIC0z
OTgsNiArMzk4LDE0IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJv
bURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTCiAKICAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7CiAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQorICAgIGlmIChzaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFtZUlELCBw
YWdlSUQpKQorICAgICAgICByZXR1cm47CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShmcmFtZUlE
KTsKKyAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKKyNlbmRpZgorCiAgICAgLy8gPHJkYXI6Ly9w
cm9ibGVtLzU2MzI4ODM+IE9uIDEwLjUsIE5TSFRUUENvb2tpZVN0b3JhZ2Ugd291bGQgc3RvcmUg
YW4gZW1wdHkgY29va2llLAogICAgIC8vIHdoaWNoIHdvdWxkIGJlIHNlbnQgYXMgIkNvb2tpZTog
PSIuCiAgICAgaWYgKGNvb2tpZVN0ci5pc0VtcHR5KCkpCkBAIC00MjMsMTQgKzQzMSw2IEBAIHZv
aWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTCiAjZW5kaWYKICAgICBBU1NFUlQoW2ZpbHRlcmVkQ29va2ll
cy5nZXQoKSBjb3VudF0gPD0gMSk7CiAKLSNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQotICAgIGlmIChzaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFtZUlE
LCBwYWdlSUQpKQotICAgICAgICByZXR1cm47Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShmcmFt
ZUlEKTsKLSAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKLSNlbmRpZgotCiAgICAgc2V0SFRUUENv
b2tpZXNGb3JVUkwoY29va2llU3RvcmFnZSgpLmdldCgpLCBmaWx0ZXJlZENvb2tpZXMuZ2V0KCks
IGNvb2tpZVVSTCwgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvKTsKIAogICAgIEVORF9CTE9DS19P
QkpDX0VYQ0VQVElPTlM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDJiNjA3ODk2
YzlmLi4zNzM1YWY4YTYzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTU2NCw3
ICs1NjQsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlclVS
TFNjaGVtZXNBc0NPUlNFbmFibGVkKFZlY3RvcjxTdHJpbgogICAgICAgICBtX3NjaGVtZVJlZ2lz
dHJ5LT5yZWdpc3RlclVSTFNjaGVtZUFzQ09SU0VuYWJsZWQoV1RGTW92ZShzY2hlbWUpKTsKIH0K
IAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTShjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25z
dCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJl
Q29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29s
IHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBJbmNsdWRlU2Vj
dXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dHJpbmcgY29va2llU3RyaW5nLCBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFn
ZVNlc3Npb24oKTsKICAgICBpZiAoIW5ldHdvcmtTdG9yYWdlU2Vzc2lvbikKQEAgLTU3OSw3ICs1
NzksNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9N
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgUwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUocmVzdWx0LmZpcnN0KSwgcmVzdWx0LnNlY29uZCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBP
cHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiBwYWdlSUQsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdl
SUQsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewogICAgIGF1dG8qIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKCk7CiAgICAgaWYgKCFuZXR3b3JrU3RvcmFnZVNl
c3Npb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggMGU2ZTgyMzJiNzIuLjQ3MGY5ZWU3
MTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0xOTcsOCArMTk3LDggQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVzQXNDT1JTRW5hYmxlZChWZWN0b3I8U3Ry
aW5nPiYmIHNjaGVtZXMpOwogCi0gICAgdm9pZCBjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9u
YWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50
aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYp
OwotICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIGNvbnN0
IFN0cmluZyYpOworICAgIHZvaWQgY29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OkluY2x1ZGVTZWN1
cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJv
b2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkKT4mJik7CisgICAgdm9pZCBzZXRDb29raWVzRnJvbURP
TShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNv
bnN0IFVSTCYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgY29va2llc0VuYWJsZWQoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYs
IGNvbnN0IFVSTCYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFs
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBzZWN1cmVD
b29raWVzQWNjZXNzZWQpPiYmKTsKICAgICB2b2lkIGdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRp
b25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4m
Jik+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXgg
YjBkYWEzYzNmMDguLjBmZTRiZDAxN2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4KQEAgLTM0LDggKzM0LDggQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFN0YXJ0RG93bmxvYWQoV2Vi
S2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1
ZXN0LCBTdHJpbmcgc3VnZ2VzdGVkTmFtZSkKICAgICBDb252ZXJ0TWFpblJlc291cmNlTG9hZFRv
RG93bmxvYWQodWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIFdlYktpdDo6RG93
bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKIAotICAgIENvb2tpZXNGb3JET00oVVJM
IGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBV
UkwgdXJsLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlv
bmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJ
bmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmluZyBjb29r
aWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykgU3luY2hyb25vdXMKLSAgICBT
ZXRDb29raWVzRnJvbURPTShVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRl
SW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRp
Zmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwg
U3RyaW5nIGNvb2tpZVN0cmluZykKKyAgICBDb29raWVzRm9yRE9NKFVSTCBmaXJzdFBhcnR5LCBz
dHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgZW51bTpib29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVD
b29raWVzKSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29r
aWVzKSBTeW5jaHJvbm91cworICAgIFNldENvb2tpZXNGcm9tRE9NKFVSTCBmaXJzdFBhcnR5LCBz
dHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgU3RyaW5nIGNvb2tpZVN0cmluZykKICAgICBDb29raWVzRW5hYmxlZCgpIC0+IChib29sIGVu
YWJsZWQpIFN5bmNocm9ub3VzCiAgICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoVVJM
IGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBV
UkwgdXJsLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlv
bmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJ
bmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmluZyBjb29r
aWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykgU3luY2hyb25vdXMKICAgICBH
ZXRSYXdDb29raWVzKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZv
IHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAo
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgU3luY2hyb25vdXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oCmluZGV4
IGUwOTQwMGE3YWFhLi40OGYxNWU0NWI3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oCkBAIC0yNiw2ICsyNiw3IEBACiAj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQu
aD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCkBAIC00NSw2ICs0Niw3IEBAIHN0cnVjdCBX
ZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycyB7CiAgICAgU3RyaW5nIGphdmFTY3JpcHRDb25m
aWd1cmF0aW9uRGlyZWN0b3J5OwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBqYXZhU2Ny
aXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBIYXNoTWFwPHVu
c2lnbmVkLCBXYWxsVGltZT4gcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzOworICAgIFdlYkNv
cmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZSB7IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbCB9OwogICAg
IGJvb2wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgeyBmYWxzZSB9OwogCiAgICAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwpAQCAtNjcs
NiArNjksNyBAQCB2b2lkIFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzOjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IGphdmFTY3JpcHRDb25maWd1cmF0
aW9uRGlyZWN0b3J5OwogICAgIGVuY29kZXIgPDwgamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgZW5jb2RlciA8PCBwbHVnSW5BdXRvU3RhcnRPcmln
aW5IYXNoZXM7CisgICAgZW5jb2RlciA8PCB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOwog
ICAgIGVuY29kZXIgPDwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ7CiB9CiAKQEAgLTEz
Miw2ICsxMzUsMTEgQEAgT3B0aW9uYWw8V2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnM+IFdl
YlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzOjpkZWNvZGUoRGUKICAgICBpZiAoIXBsdWdJbkF1
dG9TdGFydE9yaWdpbkhhc2hlcykKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAorICAg
IE9wdGlvbmFsPFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU+IHRoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGU7CisgICAgZGVjb2RlciA+PiB0aGlyZFBhcnR5Q29va2llQmxv
Y2tpbmdNb2RlOworICAgIGlmICghdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwogICAgIGJvb2wgcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0VuYWJsZWQgPSBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc291cmNlTG9hZFN0
YXRpc3RpY3NFbmFibGVkKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTE1MCw2
ICsxNTgsNyBAQCBPcHRpb25hbDxXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycz4gV2ViUHJv
Y2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnM6OmRlY29kZShEZQogICAgICAgICBXVEZNb3ZlKGphdmFT
Y3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KSwKICAgICAgICAgV1RGTW92ZSgqamF2YVNjcmlw
dENvbmZpZ3VyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpLAogICAgICAgICBXVEZNb3Zl
KCpwbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMpLAorICAgICAgICAqdGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nTW9kZSwKICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQKICAg
ICB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggZjM2Yjc5Y2U1NDUuLjVmYmQzNjEzMDM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5jcHAKQEAgLTEwNzgsMTEgKzEwNzgsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OnNldFNob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhib29sIGVuYWJsZWQsIENv
bQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNv
b2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nTW9kZSBibG9ja2luZ01vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsKLSAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKICAg
ICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRTaG91bGRC
bG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhzZXNzaW9uSUQsIGJsb2NraW5nTW9kZSks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDMwNjQ0YmJkOTdlLi40ZGJkODA3NTdiNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtOTQxLDYgKzk0
MSw3IEBAIFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYlByb2Nlc3NQb29sOjp3ZWJQ
cm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycyhXZWJQCiAgICAgICAgIFdURk1vdmUoamF2YVNjcmlw
dENvbmZpZ3VyYXRpb25EaXJlY3RvcnkpLAogICAgICAgICBXVEZNb3ZlKGphdmFTY3JpcHRDb25m
aWd1cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKSwKICAgICAgICAgV1RGTW92ZShwbHVn
SW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMpLAorICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlLnRoaXJk
UGFydHlDb29raWVCbG9ja2luZ01vZGUoKSwKICAgICAgICAgd2Vic2l0ZURhdGFTdG9yZS5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpCiAgICAgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGM0NGJmN2MzMmU5Li44NDFlNjQ1YmRk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC00
MzMsNiArNDMzLDExIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpub3RpZnlQYWdlU3RhdGlzdGlj
c1RlbGVtZXRyeUZpbmlzaGVkKEFQSTo6T2JqZWN0KiBtZXNzYWdlCiAgICAgZm9yIChhdXRvJiBw
YWdlIDogZ2xvYmFsUGFnZU1hcCgpKQogICAgICAgICBwYWdlLnZhbHVlLT5wb3N0TWVzc2FnZVRv
SW5qZWN0ZWRCdW5kbGUoIlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZCIs
IG1lc3NhZ2VCb2R5KTsKIH0KKwordm9pZCBXZWJQcm9jZXNzUHJveHk6OnNldFNob3VsZEJsb2Nr
VGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUg
dGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
V2ViUHJvY2Vzczo6U2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcodGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
K30KICNlbmRpZgogCiBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVdl
YlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+
JiYgcGFnZUNvbmZpZ3VyYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5oCmluZGV4IDk2NWZiMWNlMDE3Li41NmY4OTkxYTYzYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTY2LDYgKzY2LDcgQEAgY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0Owogc3RydWN0IFBsdWdpbkluZm87CiBzdHJ1Y3QgUHJld2FybUluZm9ybWF0aW9u
Owogc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKK2VudW0gY2xhc3MgVGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nTW9kZSA6IHVpbnQ4X3Q7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMjA2
LDYgKzIwNyw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIG5vdGlmeVdlYnNpdGVEYXRh
RGVsZXRpb25Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCgpOwogICAgIHN0YXRpYyB2b2lk
IG5vdGlmeVdlYnNpdGVEYXRhU2NhbkZvclJlZ2lzdHJhYmxlRG9tYWluc0ZpbmlzaGVkKCk7CisK
KyAgICB2b2lkIHNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKFdlYkNv
cmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAjZW5kaWYKIAogICAgIHZvaWQgZW5hYmxlU3VkZGVuVGVybWluYXRpb24oKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNp
dGVEYXRhU3RvcmVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQppbmRleCBhM2NjNzJkOTk2ZC4uNzE2YTcy
NTllNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0Nv
Y29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KQEAgLTYxLDYgKzYx
LDIwIEBAIHN0YXRpYyBIYXNoU2V0PFdlYnNpdGVEYXRhU3RvcmUqPiYgZGF0YVN0b3JlcygpCiAK
IHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFdlYktpdE5ldHdvcmtMb2FkVGhyb3R0bGVMYXRlbmN5
TWlsbGlzZWNvbmRzRGVmYXVsdHNLZXkgPSBAIldlYktpdE5ldHdvcmtMb2FkVGhyb3R0bGVMYXRl
bmN5TWlsbGlzZWNvbmRzIjsKIAorV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9k
ZSBXZWJzaXRlRGF0YVN0b3JlOjp0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKCkgY29uc3QK
K3sKKyAgICBpZiAoIW1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSkgeworI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgICAgIE5TVXNlckRlZmF1bHRzICpkZWZh
dWx0cyA9IFtOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c107CisgICAgICAgIGlm
IChbZGVmYXVsdHMgYm9vbEZvcktleTpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkV4cGVy
aW1lbnRhbCVAIiwgV2ViUHJlZmVyZW5jZXNLZXk6OmlzVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
RGlzYWJsZWRLZXkoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpXV0pCisgICAgICAgICAgICBtX3Ro
aXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgPSBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmdNb2RlOjpBbGxPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbjsKKyAgICAgICAgZWxz
ZQorI2VuZGlmCisgICAgICAgICAgICBtX3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgPSBX
ZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGw7CisgICAgfQorICAgIHJl
dHVybiAqbV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOworfQorCiBXZWJzaXRlRGF0YVN0
b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkKIHsKICAgICBBU1NF
UlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29r
aWVzKSk7CkBAIC03MCw3ICs4NCw2IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNp
dGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogICAgIE5TVXNlckRlZmF1bHRzICpkZWZhdWx0cyA9
IFtOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c107CiAgICAgYm9vbCBzaG91bGRM
b2dDb29raWVJbmZvcm1hdGlvbiA9IGZhbHNlOwogICAgIGJvb2wgZW5hYmxlUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RlYnVnTW9kZSA9IGZhbHNlOwotICAgIGF1dG8gdGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZSA9IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbDsK
ICAgICBhdXRvIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlID0gV2ViQ29yZTo6Rmly
c3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU6OkFsbEJ1dENvb2tpZXM7CiAgICAgYm9vbCBl
bmFibGVMZWdhY3lUTFMgPSBmYWxzZTsKICAgICBpZiAoaWQgdmFsdWUgPSBbZGVmYXVsdHMgb2Jq
ZWN0Rm9yS2V5OkAiV2ViS2l0RW5hYmxlTGVnYWN5VExTIl0pCkBAIC04NSwxMCArOTgsNiBAQCBX
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkK
ICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFu
dWFsUHJldmFsZW50UmVzb3VyY2UgeyB9OwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCiAgICAgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSA9IFtkZWZh
dWx0cyBib29sRm9yS2V5OkAiSVRQRGVidWdNb2RlIl07Ci0gICAgaWYgKFtkZWZhdWx0cyBib29s
Rm9yS2V5OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiRXhwZXJpbWVudGFsJUAiLCBXZWJQ
cmVmZXJlbmNlc0tleTo6aXNUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdEaXNhYmxlZEtleSgpLmNy
ZWF0ZUNGU3RyaW5nKCkuZ2V0KCldXSkKLSAgICAgICAgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZSA9IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbE9uU2l0ZXNX
aXRob3V0VXNlckludGVyYWN0aW9uOwotICAgIGVsc2UKLSAgICAgICAgdGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nTW9kZSA9IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFs
bDsKICAgICBpZiAoW2RlZmF1bHRzIGJvb2xGb3JLZXk6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCJFeHBlcmltZW50YWwlQCIsIFdlYlByZWZlcmVuY2VzS2V5Ojppc0ZpcnN0UGFydHlXZWJz
aXRlRGF0YVJlbW92YWxEaXNhYmxlZEtleSgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCldXSkKICAg
ICAgICAgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgPSBXZWJDb3JlOjpGaXJzdFBh
cnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTo6Tm9uZTsKICAgICBlbHNlIHsKQEAgLTE2Miw3ICsx
NzEsNyBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJh
bWV0ZXJzKCkKICAgICAgICAgaGFzU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjaygpLAogICAgICAg
ICBzaG91bGRJbmNsdWRlTG9jYWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLAogICAgICAg
ICBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlLAotICAgICAgICB0aGlyZFBh
cnR5Q29va2llQmxvY2tpbmdNb2RlLAorICAgICAgICB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlKCksCiAgICAgICAgIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlLAogICAgICAg
ICBtX2NvbmZpZ3VyYXRpb24tPmRldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNFbmFibGVkKCks
CiAgICAgICAgIG1fY29uZmlndXJhdGlvbi0+YWxsTG9hZHNCbG9ja2VkQnlEZXZpY2VNYW5hZ2Vt
ZW50UmVzdHJpY3Rpb25zRm9yVGVzdGluZygpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCAxOTk1MTBl
NDJlZC4uZTdhYzRkY2IyZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0xODA1LDYgKzE4MDUsMTIg
QEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxk
QmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclQKICAgICBpZiAoZW5hYmxlZCkKICAgICAgICAgYmxv
Y2tpbmdNb2RlID0gb25seU9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uID8gV2ViQ29yZTo6
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsT25TaXRlc1dpdGhvdXRVc2VySW50ZXJh
Y3Rpb24gOiBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGw7CiAKKyAg
ICBpZiAobV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlICE9IGJsb2NraW5nTW9kZSkgewor
ICAgICAgICBtX3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgPSBibG9ja2luZ01vZGU7Cisg
ICAgICAgIGZvciAoYXV0byYgd2ViUHJvY2VzcyA6IHByb2Nlc3NlcygpKQorICAgICAgICAgICAg
d2ViUHJvY2Vzcy5zZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhibG9j
a2luZ01vZGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJl
ZigpXSB7IH0pOworICAgIH0KKwogICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNz
UG9vbHMoKSkgewogICAgICAgICBpZiAoYXV0byogbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9v
bC0+bmV0d29ya1Byb2Nlc3MoKSkgewogICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnNldFNo
b3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKG1fc2Vzc2lvbklELCBibG9ja2lu
Z01vZGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigp
XSB7IH0pOwpAQCAtMjEzOCw2ICsyMTQ0LDEzIEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
IFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogCiAgICAgcmV0dXJuIHBhcmFtZXRlcnM7
CiB9CisKK1dlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgV2Vic2l0ZURhdGFT
dG9yZTo6dGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSgpIGNvbnN0Cit7CisgICAgaWYgKCFt
X3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUpCisgICAgICAgIG1fdGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nTW9kZSA9IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFs
bDsKKyAgICByZXR1cm4gKm1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsKK30KICNlbmRp
ZgogCiAjaWYgSEFWRShTRUNfS0VZX1BST1hZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IGM2NWEwNjdiYjNm
Li5iNjBkYzhiMWQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtMjE4LDYgKzIxOCw3IEBAIHB1YmxpYzoK
ICAgICBib29sIGlzQXNzb2NpYXRlZFByb2Nlc3NQb29sKFdlYlByb2Nlc3NQb29sJikgY29uc3Q7
CiAKICAgICBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBwYXJhbWV0ZXJzKCk7CisgICAgV2Vi
Q29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSB0aGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlKCkgY29uc3Q7CiAKICAgICBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBwZW5kaW5nQ29v
a2llcygpIGNvbnN0OwogICAgIHZvaWQgYWRkUGVuZGluZ0Nvb2tpZShjb25zdCBXZWJDb3JlOjpD
b29raWUmKTsKQEAgLTM3NCw2ICszNzUsNyBAQCBwcml2YXRlOgogI2lmIEhBVkUoQVBQX1NTTykK
ICAgICBVbmlxdWVSZWY8U09BdXRob3JpemF0aW9uQ29vcmRpbmF0b3I+IG1fc29BdXRob3JpemF0
aW9uQ29vcmRpbmF0b3I7CiAjZW5kaWYKKyAgICBtdXRhYmxlIE9wdGlvbmFsPFdlYkNvcmU6OlRo
aXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU+IG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9k
ZTsgLy8gTGF6aWx5IGNvbXB1dGVkLgogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRP
YnNlcnZlci5jcHAKaW5kZXggNDI2M2QxOTViMGIuLjg0MjMwZmMwNDgwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKQEAgLTcxLDE1ICs3MSwxNyBAQCBXZWJSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6fldlYlJlc291cmNlTG9hZE9ic2VydmVyKCkKICAgICAgICAgdXBkYXRl
Q2VudHJhbFN0YXRpc3RpY3NTdG9yZSgpOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZE9ic2Vy
dmVyOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFBhZ2VJZGVudGlmaWVyIG9wZW5lclBh
Z2VJRCwgRG9jdW1lbnQmIG9wZW5lckRvY3VtZW50KQordm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNl
cnZlcjo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBXZWJQYWdlJiBvcGVuZXJQYWdlLCBE
b2N1bWVudCYgb3BlbmVyRG9jdW1lbnQpCiB7CiAgICAgYXV0byBvcGVuZXJVcmwgPSBvcGVuZXJE
b2N1bWVudC51cmwoKTsKICAgICBSZWdpc3RyYWJsZURvbWFpbiBvcGVuZXJEb21haW4geyBvcGVu
ZXJVcmwgfTsKICAgICBpZiAoZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzICE9IG9wZW5lckRv
bWFpbgogICAgICAgICAmJiAhb3BlbmVyRG9jdW1lbnQuaGFzUmVxdWVzdGVkUGFnZVNwZWNpZmlj
U3RvcmFnZUFjY2Vzc1dpdGhVc2VySW50ZXJhY3Rpb24oZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNj
ZXNzKQogICAgICAgICAmJiAhZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShvcGVuZXJVcmwuc3RyaW5n
KCksIFdURjo6YmxhbmtVUkwoKSkpIHsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZXF1ZXN0U3RvcmFnZUFjY2Vzc1Vu
ZGVyT3BlbmVyKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vzcywgb3BlbmVyUGFnZUlELCBvcGVu
ZXJEb21haW4pLCAwKTsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVy
KGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vzcywgb3BlbmVyUGFnZS5pZGVudGlmaWVyKCksIG9w
ZW5lckRvbWFpbiksIDApOwogICAgICAgICAKKyAgICAgICAgb3BlbmVyUGFnZS5hZGREb21haW5X
aXRoUGFnZUxldmVsU3RvcmFnZUFjY2VzcyhvcGVuZXJEb21haW4sIGRvbWFpbkluTmVlZE9mU3Rv
cmFnZUFjY2Vzcyk7CisKICAgICAgICAgLy8gUmVtZW1iZXIgdXNlciBpbnRlcmFjdGlvbi1iYXNl
ZCByZXF1ZXN0cyBzaW5jZSB0aGV5IGRvbid0IG5lZWQgdG8gYmUgcmVwZWF0ZWQuCiAgICAgICAg
IG9wZW5lckRvY3VtZW50LnNldEhhc1JlcXVlc3RlZFBhZ2VTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NX
aXRoVXNlckludGVyYWN0aW9uKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vzcyk7CiAgICAgfQpA
QCAtMzM1LDEwICszMzcsOCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dVc2Vy
SW50ZXJhY3Rpb25XaXRoUmVkdWNlZFRpbWVSZXNvbHV0aW9uKGNvbnN0CiAgICAgaWYgKGF1dG8q
IGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBpZiAoYXV0byogb3BlbmVyID0g
ZnJhbWUtPmxvYWRlcigpLm9wZW5lcigpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byogb3BlbmVy
RG9jdW1lbnQgPSBvcGVuZXItPmRvY3VtZW50KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoYXV0
byogb3BlbmVyRnJhbWUgPSBvcGVuZXJEb2N1bWVudC0+ZnJhbWUoKSkgewotICAgICAgICAgICAg
ICAgICAgICBpZiAoYXV0byBvcGVuZXJQYWdlSUQgPSBvcGVuZXJGcmFtZS0+bG9hZGVyKCkuY2xp
ZW50KCkucGFnZUlEKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0U3RvcmFnZUFj
Y2Vzc1VuZGVyT3BlbmVyKHRvcEZyYW1lRG9tYWluLCBvcGVuZXJQYWdlSUQudmFsdWUoKSwgKm9w
ZW5lckRvY3VtZW50KTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGF1
dG8qIG9wZW5lclBhZ2UgPSBvcGVuZXJEb2N1bWVudC0+cGFnZSgpKQorICAgICAgICAgICAgICAg
ICAgICByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKHRvcEZyYW1lRG9tYWluLCBXZWJQ
YWdlOjpmcm9tQ29yZVBhZ2UoKm9wZW5lclBhZ2UpLCAqb3BlbmVyRG9jdW1lbnQpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIu
aAppbmRleCBmYWU0OGM2NmQzZS4uYzgwOTJmNGEwYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxv
YWRPYnNlcnZlci5oCkBAIC0zNCw2ICszNCw4IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitj
bGFzcyBXZWJQYWdlOworCiBjbGFzcyBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlciBmaW5hbCA6IHB1
YmxpYyBXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgV2ViUmVz
b3VyY2VMb2FkT2JzZXJ2ZXIoKTsKQEAgLTY0LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHNjaGVkdWxlTm90aWZpY2F0aW9uSWZOZWVkZWQoKTsKIAogICAgIFZlY3RvcjxXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiB0YWtlU3RhdGlzdGljcygpOwotICAgIHZvaWQgcmVxdWVz
dFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBv
cGVuZXJQYWdlSUQsIFdlYkNvcmU6OkRvY3VtZW50JiBvcGVuZXJEb2N1bWVudCk7CisgICAgdm9p
ZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYlBhZ2UmIG9wZW5lclBh
Z2UsIFdlYkNvcmU6OkRvY3VtZW50JiBvcGVuZXJEb2N1bWVudCk7CiAKICAgICBIYXNoTWFwPFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
PiBtX3Jlc291cmNlU3RhdGlzdGljc01hcDsKICAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluLCBXVEY6OldhbGxUaW1lPiBtX2xhc3RSZXBvcnRlZFVzZXJJbnRlcmFjdGlvbk1h
cDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tp
ZUphci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIu
Y3BwCmluZGV4IDczODJmZDlhNjEzLi5kNTJmZTE3ZWU1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCkBAIC0yOCw4ICsyOCwxMSBA
QAogCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYkZyYW1l
LmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0Nvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5Lmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9EZXByZWNhdGVkR2xvYmFsU2V0dGluZ3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rv
Y3VtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RnJhbWVMb2FkZXIuaD4KQEAgLTQ4LDE0ICs1MSw1NCBAQCBjbGFzcyBXZWJTdG9yYWdlU2Vzc2lv
blByb3ZpZGVyIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIgewogV2Vi
Q29va2llSmFyOjpXZWJDb29raWVKYXIoKQogICAgIDogV2ViQ29yZTo6Q29va2llSmFyKGFkb3B0
UmVmKCpuZXcgV2ViU3RvcmFnZVNlc3Npb25Qcm92aWRlcikpIHsgfQogCisjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKK3N0YXRpYyBib29sIHNob3VsZEJsb2NrQ29va2llcyhX
ZWJGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IFVS
TCYgcmVzb3VyY2VVUkwpCit7CisgICAgaWYgKCFXZWJDb3JlOjpEZXByZWNhdGVkR2xvYmFsU2V0
dGluZ3M6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+aXNNYWluRnJhbWUoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgLy8gVGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBkb2VzIG5vdCBo
YXZlIGVub3VnaCBpbmZvcm1hdGlvbiB0byBkZWFsIHdpdGggb3RoZXIgcG9saWNpZXMgdGhhbiBU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGwgc28gd2UgaGF2ZSB0byBnbyB0byB0aGUg
TmV0d29ya1Byb2Nlc3MgZm9yIGFsbAorICAgIC8vIG90aGVyIHBvbGljaWVzIGFuZCB0aGUgcmVx
dWVzdCBtYXkgZW5kIHVwIGdldHRpbmcgYmxvY2tlZCBvbiBOZXR3b3JrUHJvY2VzcyBzaWRlLgor
ICAgIGlmIChXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50aGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlKCkgIT0gVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBSZWdpc3RyYWJsZURvbWFpbiBmaXJzdFBhcnR5RG9tYWluIHsgZmly
c3RQYXJ0eUZvckNvb2tpZXMgfTsKKyAgICBpZiAoZmlyc3RQYXJ0eURvbWFpbi5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFJlZ2lzdHJhYmxlRG9tYWluIHJlc291cmNl
RG9tYWluIHsgcmVzb3VyY2VVUkwgfTsKKyAgICBpZiAocmVzb3VyY2VEb21haW4uaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoZmlyc3RQYXJ0eURvbWFpbiA9PSBy
ZXNvdXJjZURvbWFpbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGZyYW1lICYm
IGZyYW1lLT5mcmFtZUxvYWRlckNsaWVudCgpLT5oYXNGcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vz
cygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPnBh
Z2UoKSAmJiBmcmFtZS0+cGFnZSgpLT5oYXNQYWdlTGV2ZWxTdG9yYWdlQWNjZXNzKGZpcnN0UGFy
dHlEb21haW4sIHJlc291cmNlRG9tYWluKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
cmV0dXJuIHRydWU7Cit9CisjZW5kaWYKKwogU3RyaW5nIFdlYkNvb2tpZUphcjo6Y29va2llcyhX
ZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewotICAg
IE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlEOwotICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkp
IHsKLSAgICAgICAgZnJhbWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCk7
Ci0gICAgICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKLSAg
ICB9CisgICAgYXV0byogd2ViRnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpID8gV2ViRnJhbWU6OmZy
b21Db3JlRnJhbWUoKmRvY3VtZW50LmZyYW1lKCkpIDogbnVsbHB0cjsKKyAgICBpZiAoIXdlYkZy
YW1lIHx8ICF3ZWJGcmFtZS0+cGFnZSgpKQorICAgICAgICByZXR1cm4geyB9OworCisjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBpZiAoc2hvdWxkQmxvY2tDb29raWVz
KHdlYkZyYW1lLCBkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwpKQorICAgICAg
ICByZXR1cm4geyB9OworI2VuZGlmCisKKyAgICBhdXRvIGZyYW1lSUQgPSB3ZWJGcmFtZS0+ZnJh
bWVJRCgpOworICAgIGF1dG8gcGFnZUlEID0gd2ViRnJhbWUtPnBhZ2UoKS0+aWRlbnRpZmllcigp
OwogCiAgICAgU3RyaW5nIGNvb2tpZVN0cmluZzsKICAgICBib29sIHNlY3VyZUNvb2tpZXNBY2Nl
c3NlZCA9IGZhbHNlOwpAQCAtNjcsMTIgKzExMCwxNyBAQCBTdHJpbmcgV2ViQ29va2llSmFyOjpj
b29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwpIGNvbnN0
CiAKIHZvaWQgV2ViQ29va2llSmFyOjpzZXRDb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewotICAg
IE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlEOwotICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkp
IHsKLSAgICAgICAgZnJhbWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCk7
Ci0gICAgICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKLSAg
ICB9CisgICAgYXV0byogd2ViRnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpID8gV2ViRnJhbWU6OmZy
b21Db3JlRnJhbWUoKmRvY3VtZW50LmZyYW1lKCkpIDogbnVsbHB0cjsKKyAgICBpZiAoIXdlYkZy
YW1lIHx8ICF3ZWJGcmFtZS0+cGFnZSgpKQorICAgICAgICByZXR1cm47CisKKyNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIGlmIChzaG91bGRCbG9ja0Nvb2tpZXMod2Vi
RnJhbWUsIGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHVybCkpCisgICAgICAgIHJl
dHVybjsKKyNlbmRpZgorCisgICAgYXV0byBmcmFtZUlEID0gd2ViRnJhbWUtPmZyYW1lSUQoKTsK
KyAgICBhdXRvIHBhZ2VJRCA9IHdlYkZyYW1lLT5wYWdlKCktPmlkZW50aWZpZXIoKTsKIAogICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6U2V0Q29va2llc0Zyb21ET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2Ft
ZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGNvb2tpZVN0cmluZyks
IDApOwogfQpAQCAtODcsNiArMTM1LDEyIEBAIGJvb2wgV2ViQ29va2llSmFyOjpjb29raWVzRW5h
YmxlZChjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CiAKIHN0ZDo6cGFp
cjxTdHJpbmcsIFdlYkNvcmU6OlNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4gV2ViQ29va2llSmFyOjpj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0
aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
cGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2ll
cykgY29uc3QKIHsKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIGF1
dG8qIHdlYkZyYW1lID0gZnJhbWVJRCA/IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1l
KCpmcmFtZUlEKSA6IG51bGxwdHI7CisgICAgaWYgKHNob3VsZEJsb2NrQ29va2llcyh3ZWJGcmFt
ZSwgZmlyc3RQYXJ0eSwgdXJsKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyNlbmRpZgorCiAgICAg
U3RyaW5nIGNvb2tpZVN0cmluZzsKICAgICBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCA9IGZh
bHNlOwogICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoZmlyc3RQ
YXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNv
b2tpZXMpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlOjpSZXBseShjb29raWVTdHJpbmcsIHNlY3VyZUNvb2tpZXNB
Y2Nlc3NlZCksIDApKQpAQCAtOTYsMTMgKzE1MCwxNCBAQCBzdGQ6OnBhaXI8U3RyaW5nLCBXZWJD
b3JlOjpTZWN1cmVDb29raWVzQWNjZXNzZWQ+IFdlYkNvb2tpZUphcjo6Y29va2llUmVxdWVzdEhl
YQogCiBib29sIFdlYkNvb2tpZUphcjo6Z2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpEb2N1
bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYg
cmF3Q29va2llcykgY29uc3QKIHsKLSAgICBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1l
SUQ7Ci0gICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKLSAgICBpZiAoYXV0byog
ZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7Ci0gICAgICAgIGZyYW1lSUQgPSBmcmFtZS0+bG9h
ZGVyKCkuY2xpZW50KCkuZnJhbWVJRCgpOwotICAgICAgICBwYWdlSUQgPSBmcmFtZS0+bG9hZGVy
KCkuY2xpZW50KCkucGFnZUlEKCk7Ci0gICAgfQorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCisgICAgYXV0byogd2ViRnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpID8gV2ViRnJh
bWU6OmZyb21Db3JlRnJhbWUoKmRvY3VtZW50LmZyYW1lKCkpIDogbnVsbHB0cjsKKyAgICBpZiAo
c2hvdWxkQmxvY2tDb29raWVzKHdlYkZyYW1lLCBkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2ll
cygpLCB1cmwpKQorICAgICAgICByZXR1cm4geyB9OworI2VuZGlmCiAKKyAgICBPcHRpb25hbDxG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQgPSB3ZWJGcmFtZSA/IG1ha2VPcHRpb25hbCh3ZWJGcmFt
ZS0+ZnJhbWVJRCgpKSA6IFdURjo6bnVsbG9wdDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gcGFnZUlEID0gd2ViRnJhbWUgJiYgd2ViRnJhbWUtPnBhZ2UoKSA/IG1ha2VPcHRpb25hbCh3
ZWJGcmFtZS0+cGFnZSgpLT5pZGVudGlmaWVyKCkpIDogV1RGOjpudWxsb3B0OwogICAgIGlmICgh
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6R2V0UmF3Q29va2llcyhkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1l
U2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCksIE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llczo6UmVwbHkocmF3Q29va2ll
cyksIDApKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDdlYmUxZGYwZjI5
Li5hYmM2Y2RlY2MwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKQEAgLTY2MDAsNiArNjYwMCwxNyBAQCB2b2lkIFdlYlBhZ2U6OnJlcXVlc3RTdG9y
YWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFJlZ2lzdHJhYgog
ICAgIH0pOwogfQogCit2b2lkIFdlYlBhZ2U6OmFkZERvbWFpbldpdGhQYWdlTGV2ZWxTdG9yYWdl
QWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BMZXZlbERvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluKQoreworICAgIG1fZG9tYWluc1dpdGhQYWdl
TGV2ZWxTdG9yYWdlQWNjZXNzLmFkZCh0b3BMZXZlbERvbWFpbiwgcmVzb3VyY2VEb21haW4pOwor
fQorCitib29sIFdlYlBhZ2U6Omhhc1BhZ2VMZXZlbFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHRvcExldmVsRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVz
b3VyY2VEb21haW4pIGNvbnN0Cit7CisgICAgYXV0byBpdCA9IG1fZG9tYWluc1dpdGhQYWdlTGV2
ZWxTdG9yYWdlQWNjZXNzLmZpbmQodG9wTGV2ZWxEb21haW4pOworICAgIHJldHVybiBpdCAhPSBt
X2RvbWFpbnNXaXRoUGFnZUxldmVsU3RvcmFnZUFjY2Vzcy5lbmQoKSAmJiBpdC0+dmFsdWUgPT0g
cmVzb3VyY2VEb21haW47Cit9CisKIHZvaWQgV2ViUGFnZTo6d2FzTG9hZGVkV2l0aERhdGFUcmFu
c2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZSgpCiB7CiAgICAgYXV0byogZnJhbWUgPSBtYWluRnJh
bWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBl
MzUyZDQ0NmEzNC4uMTQ5YWQ5MTQyM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKQEAgLTExNjAsNiArMTE2MCw4IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBXZWJGcmFtZSYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mJiB0b3BGcmFtZURvbWFpbiwgV2ViRnJhbWUmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNz
UHJvbXB0V2FzU2hvd24pPiYmKTsKKyAgICBib29sIGhhc1BhZ2VMZXZlbFN0b3JhZ2VBY2Nlc3Mo
Y29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHRvcExldmVsRG9tYWluLCBjb25zdCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4pIGNvbnN0OworICAgIHZv
aWQgYWRkRG9tYWluV2l0aFBhZ2VMZXZlbFN0b3JhZ2VBY2Nlc3MoY29uc3QgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mIHRvcExldmVsRG9tYWluLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYgcmVzb3VyY2VEb21haW4pOwogICAgIHZvaWQgd2FzTG9hZGVkV2l0aERhdGFUcmFu
c2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZSgpOwogI2VuZGlmCiAKQEAgLTIwMjUsNiArMjAyNywx
MCBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlRpbWVyIG1fdGV4dEF1dG9TaXppbmdBZGp1c3Rt
ZW50VGltZXI7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
CisgICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4+IG1fZG9tYWluc1dpdGhQYWdlTGV2ZWxTdG9yYWdlQWNjZXNzOworI2VuZGlm
CisKICAgICBTdHJpbmcgbV9vdmVycmlkZGVuTWVkaWFUeXBlOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDE1NjFmZmFlZTI2Li4wZjVkZDljOTU5OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtNDY1LDYgKzQ2NSw4
IEBAIHZvaWQgV2ViUHJvY2Vzczo6c2V0V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMoV2ViUHJv
Y2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMmJiBwCiAKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQg
YmUgY29uc3RydWN0ZWQgcGVyIGRhdGEgc3RvcmUsIG5vdCBwZXIgcHJvY2Vzcy4KICAgICBtX2Fw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlID0gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNyZWF0ZShw
YXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnksIHBhcmFtZXRlcnMuYXBwbGljYXRp
b25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7CisgICAgbV90aGlyZFBhcnR5Q29va2ll
QmxvY2tpbmdNb2RlID0gcGFyYW1ldGVycy50aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOwor
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBtX2FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
LT5zZXREZWZhdWx0T3JpZ2luUXVvdGEoMjVVTEwgKiAxMDI0ICogMTAyNCk7CiAjZW5kaWYKQEAg
LTE5NzMsNiArMTk3NSwxNCBAQCBib29sIFdlYlByb2Nlc3M6OmFyZUFsbFBhZ2VzVGhyb3R0bGVh
YmxlKCkgY29uc3QKICAgICB9KTsKIH0KIAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCit2b2lkIFdlYlByb2Nlc3M6OnNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNG
b3JUZXN0aW5nKFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgdGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IHRoaXJkUGFydHlDb29r
aWVCbG9ja2luZ01vZGU7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KKyNlbmRpZgorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIFJFTEVBU0VfTE9HX1NFU1NJT05fSUQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDRkODE4ZGFhMWMwLi5lNmE3MmY3
YWUxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC00NCw2ICs0NCw3
IEBACiAjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbE1hbmFnZXIuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0FjdGl2aXR5U3RhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lSWRlbnRpZmllci5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVE
b21haW4uaD4KICNpZiBQTEFURk9STShNQUMpCkBAIC0xNjQsNiArMTY1LDcgQEAgcHVibGljOgog
ICAgIEluamVjdGVkQnVuZGxlKiBpbmplY3RlZEJ1bmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5q
ZWN0ZWRCdW5kbGUuZ2V0KCk7IH0KICAgICAKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQo
KSBjb25zdCB7IEFTU0VSVChtX3Nlc3Npb25JRCk7IHJldHVybiAqbV9zZXNzaW9uSUQ7IH0KKyAg
ICBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIHRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01v
ZGU7IH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGNvbnN0IFdURjo6TWFjaFNlbmRSaWdo
dCYgY29tcG9zaXRpbmdSZW5kZXJTZXJ2ZXJQb3J0KCkgY29uc3QgeyByZXR1cm4gbV9jb21wb3Np
dGluZ1JlbmRlclNlcnZlclBvcnQ7IH0KQEAgLTQzNSw2ICs0MzcsMTAgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHJldm9rZVVzZXJNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+Jik7CiAjZW5kaWYKIAorI2VuZGlmCisKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQorICAgIHZvaWQgc2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0Zv
clRlc3RpbmcoV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgogCiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxp
emVQcm9jZXNzKGNvbnN0IEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMm
KTsKQEAgLTYwMiw2ICs2MDgsNyBAQCBwcml2YXRlOgogICAgIC8vIFByZXdhcm1lZCBXZWJQcm9j
ZXNzZXMgZG8gbm90IGhhdmUgYW4gYXNzb2NpYXRlZCBzZXNzaW9uSUQgeWV0LCB3aGljaCBpcyB3
aHkgdGhpcyBpcyBhbiBvcHRpb25hbC4KICAgICAvLyBCeSB0aGUgdGltZSB0aGUgV2ViUHJvY2Vz
cyBnZXRzIGEgV2ViUGFnZSwgaXQgaXMgZ3VhcmFudGVlZCB0byBoYXZlIGEgc2Vzc2lvbklELgog
ICAgIE9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBtX3Nlc3Npb25JRDsKKyAgICBXZWJDb3JlOjpU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9k
ZSB7IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbCB9OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGYwMGQ3OWM2ZDQwLi45OTBiMDRkNTg3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTE2
Miw1ICsxNjIsNiBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIE5vdFJl
ZkNvdW50ZWQgewogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBT
ZWVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvclRlc3RpbmcoV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gZmlyc3RQYXJ0eURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdGhpcmRQ
YXJ0eURvbWFpbiwgYm9vbCBzaG91bGRTY2hlZHVsZU5vdGlmaWNhdGlvbikgLT4gKCkgQXN5bmMK
KyAgICBTZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhlbnVtOnVpbnQ4
X3QgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSBibG9ja2luZ01vZGUpIC0+
ICgpIEFzeW5jCiAjZW5kaWYKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387535</attachid>
            <date>2020-01-13 08:56:13 -0800</date>
            <delta_ts>2020-01-13 14:34:01 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>206108_avoid_sync_IPC_ads_wip.patch</filename>
            <type>text/plain</type>
            <size>41465</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCmluZGV4IGRkY2EyYzYzY2NlLi5m
MjQyODVlMjY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCkBAIC0z
OTgsNiArMzk4LDE0IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJv
bURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTCiAKICAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7CiAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQorICAgIGlmIChzaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFtZUlELCBw
YWdlSUQpKQorICAgICAgICByZXR1cm47CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShmcmFtZUlE
KTsKKyAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKKyNlbmRpZgorCiAgICAgLy8gPHJkYXI6Ly9w
cm9ibGVtLzU2MzI4ODM+IE9uIDEwLjUsIE5TSFRUUENvb2tpZVN0b3JhZ2Ugd291bGQgc3RvcmUg
YW4gZW1wdHkgY29va2llLAogICAgIC8vIHdoaWNoIHdvdWxkIGJlIHNlbnQgYXMgIkNvb2tpZTog
PSIuCiAgICAgaWYgKGNvb2tpZVN0ci5pc0VtcHR5KCkpCkBAIC00MjMsMTQgKzQzMSw2IEBAIHZv
aWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTCiAjZW5kaWYKICAgICBBU1NFUlQoW2ZpbHRlcmVkQ29va2ll
cy5nZXQoKSBjb3VudF0gPD0gMSk7CiAKLSNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQotICAgIGlmIChzaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFtZUlE
LCBwYWdlSUQpKQotICAgICAgICByZXR1cm47Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShmcmFt
ZUlEKTsKLSAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKLSNlbmRpZgotCiAgICAgc2V0SFRUUENv
b2tpZXNGb3JVUkwoY29va2llU3RvcmFnZSgpLmdldCgpLCBmaWx0ZXJlZENvb2tpZXMuZ2V0KCks
IGNvb2tpZVVSTCwgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvKTsKIAogICAgIEVORF9CTE9DS19P
QkpDX0VYQ0VQVElPTlM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDJiNjA3ODk2
YzlmLi4zNzM1YWY4YTYzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTU2NCw3
ICs1NjQsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlclVS
TFNjaGVtZXNBc0NPUlNFbmFibGVkKFZlY3RvcjxTdHJpbgogICAgICAgICBtX3NjaGVtZVJlZ2lz
dHJ5LT5yZWdpc3RlclVSTFNjaGVtZUFzQ09SU0VuYWJsZWQoV1RGTW92ZShzY2hlbWUpKTsKIH0K
IAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTShjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25z
dCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJl
Q29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29s
IHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBJbmNsdWRlU2Vj
dXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dHJpbmcgY29va2llU3RyaW5nLCBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFn
ZVNlc3Npb24oKTsKICAgICBpZiAoIW5ldHdvcmtTdG9yYWdlU2Vzc2lvbikKQEAgLTU3OSw3ICs1
NzksNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9N
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgUwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUocmVzdWx0LmZpcnN0KSwgcmVzdWx0LnNlY29uZCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBP
cHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiBwYWdlSUQsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdl
SUQsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewogICAgIGF1dG8qIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKCk7CiAgICAgaWYgKCFuZXR3b3JrU3RvcmFnZVNl
c3Npb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggMGU2ZTgyMzJiNzIuLjQ3MGY5ZWU3
MTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0xOTcsOCArMTk3LDggQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVzQXNDT1JTRW5hYmxlZChWZWN0b3I8U3Ry
aW5nPiYmIHNjaGVtZXMpOwogCi0gICAgdm9pZCBjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9u
YWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50
aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYp
OwotICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIGNvbnN0
IFN0cmluZyYpOworICAgIHZvaWQgY29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OkluY2x1ZGVTZWN1
cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJv
b2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkKT4mJik7CisgICAgdm9pZCBzZXRDb29raWVzRnJvbURP
TShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNv
bnN0IFVSTCYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgY29va2llc0VuYWJsZWQoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYs
IGNvbnN0IFVSTCYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFs
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBzZWN1cmVD
b29raWVzQWNjZXNzZWQpPiYmKTsKICAgICB2b2lkIGdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRp
b25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4m
Jik+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXgg
YjBkYWEzYzNmMDguLjBmZTRiZDAxN2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4KQEAgLTM0LDggKzM0LDggQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFN0YXJ0RG93bmxvYWQoV2Vi
S2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1
ZXN0LCBTdHJpbmcgc3VnZ2VzdGVkTmFtZSkKICAgICBDb252ZXJ0TWFpblJlc291cmNlTG9hZFRv
RG93bmxvYWQodWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIFdlYktpdDo6RG93
bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKIAotICAgIENvb2tpZXNGb3JET00oVVJM
IGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBV
UkwgdXJsLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlv
bmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJ
bmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmluZyBjb29r
aWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykgU3luY2hyb25vdXMKLSAgICBT
ZXRDb29raWVzRnJvbURPTShVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRl
SW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRp
Zmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwg
U3RyaW5nIGNvb2tpZVN0cmluZykKKyAgICBDb29raWVzRm9yRE9NKFVSTCBmaXJzdFBhcnR5LCBz
dHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgZW51bTpib29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVD
b29raWVzKSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29r
aWVzKSBTeW5jaHJvbm91cworICAgIFNldENvb2tpZXNGcm9tRE9NKFVSTCBmaXJzdFBhcnR5LCBz
dHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgU3RyaW5nIGNvb2tpZVN0cmluZykKICAgICBDb29raWVzRW5hYmxlZCgpIC0+IChib29sIGVu
YWJsZWQpIFN5bmNocm9ub3VzCiAgICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoVVJM
IGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBV
UkwgdXJsLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlv
bmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJ
bmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmluZyBjb29r
aWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykgU3luY2hyb25vdXMKICAgICBH
ZXRSYXdDb29raWVzKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZv
IHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAo
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgU3luY2hyb25vdXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFt
ZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNy
ZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggZDdkYTQ5ZmY1NDUuLmY5MTdmNTE3YjRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtNjgsNyArNjgsOSBAQCB2b2lkIE5l
dHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljczsKICAgICBlbmNvZGVyIDw8IGVuYWJsZVJlc291cmNlTG9hZFN0YXRp
c3RpY3NEZWJ1Z01vZGU7CiAgICAgZW5jb2RlciA8PCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFu
dWFsUHJldmFsZW50UmVzb3VyY2U7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKICAgICBlbmNvZGVyIDw8IHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU7CisjZW5kaWYK
ICAgICBlbmNvZGVyIDw8IGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOwogCiAgICAg
ZW5jb2RlciA8PCBuZXR3b3JrQ2FjaGVEaXJlY3RvcnkgPDwgbmV0d29ya0NhY2hlRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlOwpAQCAtMjAyLDEwICsyMDQsMTIgQEAgT3B0aW9uYWw8TmV0d29ya1Nl
c3Npb25DcmVhdGlvblBhcmFtZXRlcnM+IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJz
OjpkZWMKICAgICBpZiAoIXJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNv
dXJjZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAorI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nTW9kZT4gdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsKICAgICBkZWNvZGVy
ID4+IHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU7CiAgICAgaWYgKCF0aGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdNb2RlKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworI2VuZGlmCiAK
ICAgICBPcHRpb25hbDxXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZT4g
Zmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU7CiAgICAgZGVjb2RlciA+PiBmaXJzdFBh
cnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTsKQEAgLTMwMCw3ICszMDQsOSBAQCBPcHRpb25hbDxO
ZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycz4gTmV0d29ya1Nlc3Npb25DcmVhdGlvblBh
cmFtZXRlcnM6OmRlYwogICAgICAgICAsIFdURk1vdmUoKmVuYWJsZVJlc291cmNlTG9hZFN0YXRp
c3RpY3NMb2dUZXN0aW5nRXZlbnQpCiAgICAgICAgICwgV1RGTW92ZSgqc2hvdWxkSW5jbHVkZUxv
Y2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljcykKICAgICAgICAgLCBXVEZNb3ZlKCplbmFi
bGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKQorI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpCiAgICAgICAgICwgV1RGTW92ZSgqdGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nTW9kZSkKKyNlbmRpZgogICAgICAgICAsIFdURk1vdmUoKmZpcnN0UGFydHlXZWJzaXRlRGF0
YVJlbW92YWxNb2RlKQogICAgICAgICAsIFdURk1vdmUoKmRldmljZU1hbmFnZW1lbnRSZXN0cmlj
dGlvbnNFbmFibGVkKQogICAgICAgICAsIFdURk1vdmUoKmFsbExvYWRzQmxvY2tlZEJ5RGV2aWNl
TWFuYWdlbWVudFJlc3RyaWN0aW9uc0ZvclRlc3RpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzLmgKaW5kZXggMGQ1N2FiNzEyMjUuLjgyZTk1ZjE5ODU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9u
UGFyYW1ldGVycy5oCkBAIC04Niw3ICs4Niw5IEBAIHN0cnVjdCBOZXR3b3JrU2Vzc2lvbkNyZWF0
aW9uUGFyYW1ldGVycyB7CiAgICAgYm9vbCBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9n
VGVzdGluZ0V2ZW50IHsgZmFsc2UgfTsKICAgICBib29sIHNob3VsZEluY2x1ZGVMb2NhbGhvc3RJ
blJlc291cmNlTG9hZFN0YXRpc3RpY3MgeyB0cnVlIH07CiAgICAgYm9vbCBlbmFibGVSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlIHsgZmFsc2UgfTsKKyNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKQogICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01v
ZGUgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSB7IFdlYkNvcmU6OlRoaXJkUGFydHlDb29r
aWVCbG9ja2luZ01vZGU6OkFsbCB9OworI2VuZGlmCiAgICAgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdl
YnNpdGVEYXRhUmVtb3ZhbE1vZGUgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgeyBX
ZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTo6QWxsQnV0Q29va2llcyB9
OwogICAgIGJvb2wgZGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0VuYWJsZWQgeyBmYWxzZSB9
OwogICAgIGJvb2wgYWxsTG9hZHNCbG9ja2VkQnlEZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25z
Rm9yVGVzdGluZyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMuaAppbmRleCBlMDk0MDBhN2FhYS4uMzBkYjRjOWI1
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NEYXRhU3RvcmVQ
YXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0RhdGFTdG9y
ZVBhcmFtZXRlcnMuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJTYW5kYm94RXh0ZW5zaW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KIApAQCAtNDUsNiArNDYsOSBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFt
ZXRlcnMgewogICAgIFN0cmluZyBqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeTsKICAg
ICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rv
cnlFeHRlbnNpb25IYW5kbGU7CiAgICAgSGFzaE1hcDx1bnNpZ25lZCwgV2FsbFRpbWU+IHBsdWdJ
bkF1dG9TdGFydE9yaWdpbkhhc2hlczsKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQorICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgdGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nTW9kZSB7IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01v
ZGU6OkFsbCB9OworI2VuZGlmCiAgICAgYm9vbCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZCB7IGZhbHNlIH07CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShF
bmNvZGVyJikgY29uc3Q7CkBAIC02Nyw2ICs3MSw5IEBAIHZvaWQgV2ViUHJvY2Vzc0RhdGFTdG9y
ZVBhcmFtZXRlcnM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIg
PDwgamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rvcnk7CiAgICAgZW5jb2RlciA8PCBqYXZh
U2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBlbmNvZGVy
IDw8IHBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlczsKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQorICAgIGVuY29kZXIgPDwgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9k
ZTsKKyNlbmRpZgogICAgIGVuY29kZXIgPDwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ7
CiB9CiAKQEAgLTEzMiw2ICsxMzksMTMgQEAgT3B0aW9uYWw8V2ViUHJvY2Vzc0RhdGFTdG9yZVBh
cmFtZXRlcnM+IFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzOjpkZWNvZGUoRGUKICAgICBp
ZiAoIXBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcykKICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKIAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgT3B0aW9u
YWw8V2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZT4gdGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nTW9kZTsKKyAgICBkZWNvZGVyID4+IHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01v
ZGU7CisgICAgaWYgKCF0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworI2VuZGlmCisKICAgICBib29sIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NFbmFibGVkID0gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRW5hYmxlZCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC0xNTAs
NiArMTY0LDkgQEAgT3B0aW9uYWw8V2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnM+IFdlYlBy
b2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzOjpkZWNvZGUoRGUKICAgICAgICAgV1RGTW92ZShqYXZh
U2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSksCiAgICAgICAgIFdURk1vdmUoKmphdmFTY3Jp
cHRDb25maWd1cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKSwKICAgICAgICAgV1RGTW92
ZSgqcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKSwKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQorICAgICAgICAqdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwKKyNl
bmRpZgogICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZAogICAgIH07CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcAppbmRleCBmMzZiNzljZTU0NS4uNWZiZDM2MTMwMzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cApAQCAtMTA3OCwxMSArMTA3OCw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0U2hv
dWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCwgQ29tCiAKIHZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRl
c3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlIGJsb2NraW5nTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewotICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgewotICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAogICAgIHNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldFNob3VsZEJsb2NrVGhpcmRQ
YXJ0eUNvb2tpZXNGb3JUZXN0aW5nKHNlc3Npb25JRCwgYmxvY2tpbmdNb2RlKSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAKaW5kZXggMzA2NDRiYmQ5N2UuLjgxY2Q1ZDZjNmJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC01NzYsNyArNTc2LDkgQEAgTmV0
d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKFdl
YnNpdGVEYXRhU3RvcmUqIHdpdGgKICAgICBib29sIGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NMb2dUZXN0aW5nRXZlbnQgPSBmYWxzZTsKICAgICBib29sIHNob3VsZEluY2x1ZGVMb2NhbGhv
c3QgPSB0cnVlOwogICAgIGJvb2wgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9k
ZSA9IGZhbHNlOworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgV2Vi
Q29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSB0aGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlID0gV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsOworI2Vu
ZGlmCiAgICAgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgZmlyc3RQ
YXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgPSBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURh
dGFSZW1vdmFsTW9kZTo6QWxsQnV0Q29va2llczsKICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZSB7IH07CiAgICAgaWYgKHdpdGhXZWJzaXRlRGF0
YVN0b3JlKSB7CkBAIC01ODgsNyArNTkwLDkgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJv
Y2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdpdGgKICAg
ICAgICAgICAgIGF1dG8gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzID0gd2l0aFdlYnNpdGVEYXRh
U3RvcmUtPnBhcmFtZXRlcnMoKS5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnM7CiAgICAgICAgICAg
ICBzaG91bGRJbmNsdWRlTG9jYWxob3N0ID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNob3Vs
ZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3M7CiAgICAgICAgICAgICBl
bmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlID0gbmV0d29ya1Nlc3Npb25QYXJh
bWV0ZXJzLmVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU7CisjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICAgICAgICAgIHRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGUgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMudGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZTsKKyNlbmRpZgogICAgICAgICAgICAgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVt
b3ZhbE1vZGUgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuZmlyc3RQYXJ0eVdlYnNpdGVEYXRh
UmVtb3ZhbE1vZGU7CiAgICAgICAgICAgICBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZSA9IG5ldHdv
cmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50
UmVzb3VyY2U7CiAgICAgICAgIH0KQEAgLTYxMCw3ICs2MTQsOSBAQCBOZXR3b3JrUHJvY2Vzc1By
b3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9y
ZSogd2l0aAogICAgICAgICAgICAgYXV0byBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMgPSBtX3dl
YnNpdGVEYXRhU3RvcmUtPnBhcmFtZXRlcnMoKS5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnM7CiAg
ICAgICAgICAgICBzaG91bGRJbmNsdWRlTG9jYWxob3N0ID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0
ZXJzLnNob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3M7CiAgICAg
ICAgICAgICBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlID0gbmV0d29ya1Nl
c3Npb25QYXJhbWV0ZXJzLmVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU7Cisj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICAgICAgICAgIHRoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGUgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMudGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nTW9kZTsKKyNlbmRpZgogICAgICAgICAgICAgZmlyc3RQYXJ0eVdlYnNp
dGVEYXRhUmVtb3ZhbE1vZGUgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuZmlyc3RQYXJ0eVdl
YnNpdGVEYXRhUmVtb3ZhbE1vZGU7CiAgICAgICAgICAgICBtYW51YWxQcmV2YWxlbnRSZXNvdXJj
ZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFs
UHJldmFsZW50UmVzb3VyY2U7CiAgICAgICAgIH0KQEAgLTYzNSw3ICs2NDEsOSBAQCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0
ZURhdGFTdG9yZSogd2l0aAogICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRl
cnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NM
b2dUZXN0aW5nRXZlbnQgPSBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2
ZW50OwogICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nl
c3Npb25QYXJhbWV0ZXJzLnNob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRp
c3RpY3MgPSBzaG91bGRJbmNsdWRlTG9jYWxob3N0OwogICAgIHBhcmFtZXRlcnMuZGVmYXVsdERh
dGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmVuYWJsZVJlc291cmNl
TG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUgPSBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVi
dWdNb2RlOworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgcGFyYW1l
dGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMu
dGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01v
ZGU7CisjZW5kaWYKICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5l
dHdvcmtTZXNzaW9uUGFyYW1ldGVycy5maXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA9
IGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOwogCiAgICAgcGFyYW1ldGVycy5kZWZh
dWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlID0gbWFudWFsUHJldmFsZW50UmVz
b3VyY2U7CkBAIC05NDEsNiArOTQ5LDkgQEAgV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMg
V2ViUHJvY2Vzc1Bvb2w6OndlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzKFdlYlAKICAgICAg
ICAgV1RGTW92ZShqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSksCiAgICAgICAgIFdU
Rk1vdmUoamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpLAog
ICAgICAgICBXVEZNb3ZlKHBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcyksCisjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICAgICAgd2Vic2l0ZURhdGFTdG9yZS50aGly
ZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKCksCisjZW5kaWYKICAgICAgICAgd2Vic2l0ZURhdGFT
dG9yZS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpCiAgICAgfTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGM0NGJmN2MzMmU5Li44
NDFlNjQ1YmRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwCkBAIC00MzMsNiArNDMzLDExIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpub3RpZnlQYWdl
U3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKEFQSTo6T2JqZWN0KiBtZXNzYWdlCiAgICAgZm9y
IChhdXRvJiBwYWdlIDogZ2xvYmFsUGFnZU1hcCgpKQogICAgICAgICBwYWdlLnZhbHVlLT5wb3N0
TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoIlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnlG
aW5pc2hlZCIsIG1lc3NhZ2VCb2R5KTsKIH0KKwordm9pZCBXZWJQcm9jZXNzUHJveHk6OnNldFNo
b3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKFRoaXJkUGFydHlDb29raWVCbG9j
a2luZ01vZGUgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRl
c3RpbmcodGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSksIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKK30KICNlbmRpZgogCiBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUHJveHk6
OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgUmVmPEFQSTo6UGFnZUNvbmZp
Z3VyYXRpb24+JiYgcGFnZUNvbmZpZ3VyYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5oCmluZGV4IDk2NWZiMWNlMDE3Li41NmY4OTkxYTYzYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTY2LDYgKzY2LDcgQEAgY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0Owogc3RydWN0IFBsdWdpbkluZm87CiBzdHJ1Y3QgUHJld2FybUlu
Zm9ybWF0aW9uOwogc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKK2VudW0gY2xhc3MgVGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA6IHVpbnQ4X3Q7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtMjA2LDYgKzIwNyw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIG5vdGlmeVdl
YnNpdGVEYXRhRGVsZXRpb25Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCgpOwogICAgIHN0
YXRpYyB2b2lkIG5vdGlmeVdlYnNpdGVEYXRhU2NhbkZvclJlZ2lzdHJhYmxlRG9tYWluc0Zpbmlz
aGVkKCk7CisKKyAgICB2b2lkIHNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0
aW5nKFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAjZW5kaWYKIAogICAgIHZvaWQgZW5hYmxlU3VkZGVuVGVybWluYXRp
b24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0Nv
Y29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQppbmRleCBhM2NjNzJkOTk2
ZC4uMDAyMmEwYmRiOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KQEAg
LTYxLDYgKzYxLDIwIEBAIHN0YXRpYyBIYXNoU2V0PFdlYnNpdGVEYXRhU3RvcmUqPiYgZGF0YVN0
b3JlcygpCiAKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFdlYktpdE5ldHdvcmtMb2FkVGhyb3R0
bGVMYXRlbmN5TWlsbGlzZWNvbmRzRGVmYXVsdHNLZXkgPSBAIldlYktpdE5ldHdvcmtMb2FkVGhy
b3R0bGVMYXRlbmN5TWlsbGlzZWNvbmRzIjsKIAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCitXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIFdlYnNpdGVE
YXRhU3RvcmU6OnRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoKSBjb25zdAoreworICAgIGlm
ICghbV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKSB7CisgICAgICAgIE5TVXNlckRlZmF1
bHRzICpkZWZhdWx0cyA9IFtOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c107Cisg
ICAgICAgIGlmIChbZGVmYXVsdHMgYm9vbEZvcktleTpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAIkV4cGVyaW1lbnRhbCVAIiwgV2ViUHJlZmVyZW5jZXNLZXk6OmlzVGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nRGlzYWJsZWRLZXkoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpXV0pCisgICAgICAg
ICAgICBtX3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgPSBXZWJDb3JlOjpUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmdNb2RlOjpBbGxPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbjsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgbV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlID0g
V2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsOworICAgIH0KKyAgICBy
ZXR1cm4gKm1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsKK30KKyNlbmRpZgorCiBXZWJz
aXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkKIHsK
ICAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nl
c3NSYXdDb29raWVzKSk7CkBAIC03MCw3ICs4NCw2IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0
ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogICAgIE5TVXNlckRlZmF1bHRzICpk
ZWZhdWx0cyA9IFtOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c107CiAgICAgYm9v
bCBzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbiA9IGZhbHNlOwogICAgIGJvb2wgZW5hYmxlUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSA9IGZhbHNlOwotICAgIGF1dG8gdGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nTW9kZSA9IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01v
ZGU6OkFsbDsKICAgICBhdXRvIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlID0gV2Vi
Q29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU6OkFsbEJ1dENvb2tpZXM7CiAg
ICAgYm9vbCBlbmFibGVMZWdhY3lUTFMgPSBmYWxzZTsKICAgICBpZiAoaWQgdmFsdWUgPSBbZGVm
YXVsdHMgb2JqZWN0Rm9yS2V5OkAiV2ViS2l0RW5hYmxlTGVnYWN5VExTIl0pCkBAIC04NSwxMCAr
OTgsNiBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJh
bWV0ZXJzKCkKICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2UgeyB9OwogI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpCiAgICAgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9k
ZSA9IFtkZWZhdWx0cyBib29sRm9yS2V5OkAiSVRQRGVidWdNb2RlIl07Ci0gICAgaWYgKFtkZWZh
dWx0cyBib29sRm9yS2V5OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiRXhwZXJpbWVudGFs
JUAiLCBXZWJQcmVmZXJlbmNlc0tleTo6aXNUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdEaXNhYmxl
ZEtleSgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCldXSkKLSAgICAgICAgdGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nTW9kZSA9IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFs
bE9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uOwotICAgIGVsc2UKLSAgICAgICAgdGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2lu
Z01vZGU6OkFsbDsKICAgICBpZiAoW2RlZmF1bHRzIGJvb2xGb3JLZXk6W05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6QCJFeHBlcmltZW50YWwlQCIsIFdlYlByZWZlcmVuY2VzS2V5Ojppc0ZpcnN0
UGFydHlXZWJzaXRlRGF0YVJlbW92YWxEaXNhYmxlZEtleSgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCldXSkKICAgICAgICAgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgPSBXZWJDb3Jl
OjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTo6Tm9uZTsKICAgICBlbHNlIHsKQEAg
LTE2Miw3ICsxNzEsNyBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0
b3JlOjpwYXJhbWV0ZXJzKCkKICAgICAgICAgaGFzU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjaygp
LAogICAgICAgICBzaG91bGRJbmNsdWRlTG9jYWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LAogICAgICAgICBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlLAotICAgICAg
ICB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlLAorICAgICAgICB0aGlyZFBhcnR5Q29va2ll
QmxvY2tpbmdNb2RlKCksCiAgICAgICAgIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2Rl
LAogICAgICAgICBtX2NvbmZpZ3VyYXRpb24tPmRldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNF
bmFibGVkKCksCiAgICAgICAgIG1fY29uZmlndXJhdGlvbi0+YWxsTG9hZHNCbG9ja2VkQnlEZXZp
Y2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRm9yVGVzdGluZygpLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRl
eCAxOTk1MTBlNDJlZC4uOTM1MzU2OGFlNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0xODA1LDYg
KzE4MDUsMTIgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclQKICAgICBpZiAoZW5hYmxlZCkKICAg
ICAgICAgYmxvY2tpbmdNb2RlID0gb25seU9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uID8g
V2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsT25TaXRlc1dpdGhvdXRV
c2VySW50ZXJhY3Rpb24gOiBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpB
bGw7CiAKKyAgICBpZiAobV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlICE9IGJsb2NraW5n
TW9kZSkgeworICAgICAgICBtX3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgPSBibG9ja2lu
Z01vZGU7CisgICAgICAgIGZvciAoYXV0byYgd2ViUHJvY2VzcyA6IHByb2Nlc3NlcygpKQorICAg
ICAgICAgICAgd2ViUHJvY2Vzcy5zZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVz
dGluZyhibG9ja2luZ01vZGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0
b3IuY29weVJlZigpXSB7IH0pOworICAgIH0KKwogICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wg
OiBwcm9jZXNzUG9vbHMoKSkgewogICAgICAgICBpZiAoYXV0byogbmV0d29ya1Byb2Nlc3MgPSBw
cm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkgewogICAgICAgICAgICAgbmV0d29ya1Byb2Nl
c3MtPnNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKG1fc2Vzc2lvbklE
LCBibG9ja2luZ01vZGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3Iu
Y29weVJlZigpXSB7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IGM2NWEwNjdiYjNmLi44MTMxNDRhMGZi
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuaApAQCAtMTk1LDYgKzE5NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3Rpbmco
Ym9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhib29s
IGVuYWJsZWQsIGJvb2wgb25seU9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlRm9yVGVzdGluZyhib29sIGVuYWJsZWQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgV2ViQ29yZTo6VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZSB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKCkgY29uc3Q7CiAj
ZW5kaWYKICAgICB2b2lkIHNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFNl
Y29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZXNldENhY2hl
TWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CkBAIC0zNzQsNiArMzc1LDcgQEAgcHJpdmF0ZToKICNpZiBIQVZFKEFQUF9TU08pCiAgICAg
VW5pcXVlUmVmPFNPQXV0aG9yaXphdGlvbkNvb3JkaW5hdG9yPiBtX3NvQXV0aG9yaXphdGlvbkNv
b3JkaW5hdG9yOwogI2VuZGlmCisgICAgbXV0YWJsZSBPcHRpb25hbDxXZWJDb3JlOjpUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmdNb2RlPiBtX3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU7IC8v
IExhemlseSBjb21wdXRlZC4KIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2
ZXIuY3BwCmluZGV4IDQyNjNkMTk1YjBiLi44NDIzMGZjMDQ4MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVz
b3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCkBAIC03MSwxNSArNzEsMTcgQEAgV2ViUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6On5XZWJSZXNvdXJjZUxvYWRPYnNlcnZlcigpCiAgICAgICAgIHVwZGF0ZUNlbnRy
YWxTdGF0aXN0aWNzU3RvcmUoKTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
ZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQs
IERvY3VtZW50JiBvcGVuZXJEb2N1bWVudCkKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6
OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgV2ViUGFnZSYgb3BlbmVyUGFnZSwgRG9jdW1l
bnQmIG9wZW5lckRvY3VtZW50KQogewogICAgIGF1dG8gb3BlbmVyVXJsID0gb3BlbmVyRG9jdW1l
bnQudXJsKCk7CiAgICAgUmVnaXN0cmFibGVEb21haW4gb3BlbmVyRG9tYWluIHsgb3BlbmVyVXJs
IH07CiAgICAgaWYgKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyAhPSBvcGVuZXJEb21haW4K
ICAgICAgICAgJiYgIW9wZW5lckRvY3VtZW50Lmhhc1JlcXVlc3RlZFBhZ2VTcGVjaWZpY1N0b3Jh
Z2VBY2Nlc3NXaXRoVXNlckludGVyYWN0aW9uKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcykK
ICAgICAgICAgJiYgIWVxdWFsSWdub3JpbmdBU0NJSUNhc2Uob3BlbmVyVXJsLnN0cmluZygpLCBX
VEY6OmJsYW5rVVJMKCkpKSB7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9w
ZW5lcihkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIG9wZW5lclBhZ2VJRCwgb3BlbmVyRG9t
YWluKSwgMCk7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6UmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihkb21h
aW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIG9wZW5lclBhZ2UuaWRlbnRpZmllcigpLCBvcGVuZXJE
b21haW4pLCAwKTsKICAgICAgICAgCisgICAgICAgIG9wZW5lclBhZ2UuYWRkRG9tYWluV2l0aFBh
Z2VMZXZlbFN0b3JhZ2VBY2Nlc3Mob3BlbmVyRG9tYWluLCBkb21haW5Jbk5lZWRPZlN0b3JhZ2VB
Y2Nlc3MpOworCiAgICAgICAgIC8vIFJlbWVtYmVyIHVzZXIgaW50ZXJhY3Rpb24tYmFzZWQgcmVx
dWVzdHMgc2luY2UgdGhleSBkb24ndCBuZWVkIHRvIGJlIHJlcGVhdGVkLgogICAgICAgICBvcGVu
ZXJEb2N1bWVudC5zZXRIYXNSZXF1ZXN0ZWRQYWdlU3BlY2lmaWNTdG9yYWdlQWNjZXNzV2l0aFVz
ZXJJbnRlcmFjdGlvbihkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpOwogICAgIH0KQEAgLTMz
NSwxMCArMzM3LDggQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nVXNlckludGVy
YWN0aW9uV2l0aFJlZHVjZWRUaW1lUmVzb2x1dGlvbihjb25zdAogICAgIGlmIChhdXRvKiBmcmFt
ZSA9IGRvY3VtZW50LmZyYW1lKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIG9wZW5lciA9IGZyYW1l
LT5sb2FkZXIoKS5vcGVuZXIoKSkgewogICAgICAgICAgICAgaWYgKGF1dG8qIG9wZW5lckRvY3Vt
ZW50ID0gb3BlbmVyLT5kb2N1bWVudCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8qIG9w
ZW5lckZyYW1lID0gb3BlbmVyRG9jdW1lbnQtPmZyYW1lKCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKGF1dG8gb3BlbmVyUGFnZUlEID0gb3BlbmVyRnJhbWUtPmxvYWRlcigpLmNsaWVudCgp
LnBhZ2VJRCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NV
bmRlck9wZW5lcih0b3BGcmFtZURvbWFpbiwgb3BlbmVyUGFnZUlELnZhbHVlKCksICpvcGVuZXJE
b2N1bWVudCk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChhdXRvKiBv
cGVuZXJQYWdlID0gb3BlbmVyRG9jdW1lbnQtPnBhZ2UoKSkKKyAgICAgICAgICAgICAgICAgICAg
cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcih0b3BGcmFtZURvbWFpbiwgV2ViUGFnZTo6
ZnJvbUNvcmVQYWdlKCpvcGVuZXJQYWdlKSwgKm9wZW5lckRvY3VtZW50KTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmgKaW5k
ZXggZmFlNDhjNjZkM2UuLmM4MDkyZjRhMGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXIuaApAQCAtMzQsNiArMzQsOCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3Mg
V2ViUGFnZTsKKwogY2xhc3MgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIgZmluYWwgOiBwdWJsaWMg
V2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXIgewogcHVibGljOgogICAgIFdlYlJlc291cmNl
TG9hZE9ic2VydmVyKCk7CkBAIC02NCw3ICs2Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzY2hl
ZHVsZU5vdGlmaWNhdGlvbklmTmVlZGVkKCk7CiAKICAgICBWZWN0b3I8V2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcz4gdGFrZVN0YXRpc3RpY3MoKTsKLSAgICB2b2lkIHJlcXVlc3RTdG9y
YWdlQWNjZXNzVW5kZXJPcGVuZXIoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGRv
bWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVy
UGFnZUlELCBXZWJDb3JlOjpEb2N1bWVudCYgb3BlbmVyRG9jdW1lbnQpOworICAgIHZvaWQgcmVx
dWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBXZWJQYWdlJiBvcGVuZXJQYWdlLCBX
ZWJDb3JlOjpEb2N1bWVudCYgb3BlbmVyRG9jdW1lbnQpOwogCiAgICAgSGFzaE1hcDxXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gbV9y
ZXNvdXJjZVN0YXRpc3RpY3NNYXA7CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiwgV1RGOjpXYWxsVGltZT4gbV9sYXN0UmVwb3J0ZWRVc2VySW50ZXJhY3Rpb25NYXA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcApp
bmRleCA3MzgyZmQ5YTYxMy4uNGIzY2Y0ZTRkYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcApAQCAtMjgsOCArMjgsMTEgQEAKIAog
I2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNs
dWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJGcmFtZS5oIgor
I2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVu
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1l
TG9hZGVyLmg+CkBAIC00OCwxNCArNTEsNTQgQEAgY2xhc3MgV2ViU3RvcmFnZVNlc3Npb25Qcm92
aWRlciA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlU2Vzc2lvblByb3ZpZGVyIHsKIFdlYkNvb2tp
ZUphcjo6V2ViQ29va2llSmFyKCkKICAgICA6IFdlYkNvcmU6OkNvb2tpZUphcihhZG9wdFJlZigq
bmV3IFdlYlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIpKSB7IH0KIAorI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCitzdGF0aWMgYm9vbCBzaG91bGRCbG9ja0Nvb2tpZXMoV2ViRnJh
bWUqIGZyYW1lLCBjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBVUkwmIHJl
c291cmNlVVJMKQoreworICAgIGlmICghV2ViQ29yZTo6RGVwcmVjYXRlZEdsb2JhbFNldHRpbmdz
OjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPmlzTWFpbkZyYW1lKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIC8vIFRoZSBXZWJDb250ZW50IHByb2Nlc3MgZG9lcyBub3QgaGF2ZSBl
bm91Z2ggaW5mb3JtYXRpb24gdG8gZGVhbCB3aXRoIG90aGVyIHBvbGljaWVzIHRoYW4gVGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsIHNvIHdlIGhhdmUgdG8gZ28gdG8gdGhlIE5ldHdv
cmtQcm9jZXNzIGZvciBhbGwKKyAgICAvLyBvdGhlciBwb2xpY2llcyBhbmQgdGhlIHJlcXVlc3Qg
bWF5IGVuZCB1cCBnZXR0aW5nIGJsb2NrZWQgb24gTmV0d29ya1Byb2Nlc3Mgc2lkZS4KKyAgICBp
ZiAoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSgp
ICE9IFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbCkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgUmVnaXN0cmFibGVEb21haW4gZmlyc3RQYXJ0eURvbWFpbiB7IGZpcnN0UGFy
dHlGb3JDb29raWVzIH07CisgICAgaWYgKGZpcnN0UGFydHlEb21haW4uaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBSZWdpc3RyYWJsZURvbWFpbiByZXNvdXJjZURvbWFp
biB7IHJlc291cmNlVVJMIH07CisgICAgaWYgKHJlc291cmNlRG9tYWluLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGZpcnN0UGFydHlEb21haW4gPT0gcmVzb3Vy
Y2VEb21haW4pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChmcmFtZSAmJiBmcmFt
ZS0+ZnJhbWVMb2FkZXJDbGllbnQoKS0+aGFzRnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3MoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGZyYW1lICYmIGZyYW1lLT5wYWdlKCkg
JiYgZnJhbWUtPnBhZ2UoKS0+aGFzUGFnZUxldmVsU3RvcmFnZUFjY2VzcyhmaXJzdFBhcnR5RG9t
YWluLCByZXNvdXJjZURvbWFpbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVy
biB0cnVlOworfQorI2VuZGlmCisKIFN0cmluZyBXZWJDb29raWVKYXI6OmNvb2tpZXMoV2ViQ29y
ZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKLSAgICBPcHRp
b25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQ7Ci0gICAgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRDsKLSAgICBpZiAoYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7Ci0g
ICAgICAgIGZyYW1lSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZnJhbWVJRCgpOwotICAg
ICAgICBwYWdlSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkucGFnZUlEKCk7Ci0gICAgfQor
ICAgIGF1dG8qIHdlYkZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSA/IFdlYkZyYW1lOjpmcm9tQ29y
ZUZyYW1lKCpkb2N1bWVudC5mcmFtZSgpKSA6IG51bGxwdHI7CisgICAgaWYgKCF3ZWJGcmFtZSB8
fCAhd2ViRnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgaWYgKHNob3VsZEJsb2NrQ29va2llcyh3ZWJG
cmFtZSwgZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsKSkKKyAgICAgICAgcmV0
dXJuIHsgfTsKKyNlbmRpZgorCisgICAgYXV0byBmcmFtZUlEID0gd2ViRnJhbWUtPmZyYW1lSUQo
KTsKKyAgICBhdXRvIHBhZ2VJRCA9IHdlYkZyYW1lLT5wYWdlKCktPmlkZW50aWZpZXIoKTsKIAog
ICAgIFN0cmluZyBjb29raWVTdHJpbmc7CiAgICAgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQg
PSBmYWxzZTsKQEAgLTY3LDEyICsxMTAsMTcgQEAgU3RyaW5nIFdlYkNvb2tpZUphcjo6Y29va2ll
cyhXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsKSBjb25zdAogCiB2
b2lkIFdlYkNvb2tpZUphcjo6c2V0Q29va2llcyhXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQs
IGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKLSAgICBPcHRp
b25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQ7Ci0gICAgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRDsKLSAgICBpZiAoYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7Ci0g
ICAgICAgIGZyYW1lSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZnJhbWVJRCgpOwotICAg
ICAgICBwYWdlSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkucGFnZUlEKCk7Ci0gICAgfQor
ICAgIGF1dG8qIHdlYkZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSA/IFdlYkZyYW1lOjpmcm9tQ29y
ZUZyYW1lKCpkb2N1bWVudC5mcmFtZSgpKSA6IG51bGxwdHI7CisgICAgaWYgKCF3ZWJGcmFtZSB8
fCAhd2ViRnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgcmV0dXJuOworCisjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKKyAgICBpZiAoc2hvdWxkQmxvY2tDb29raWVzKHdlYkZyYW1l
LCBkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwpKQorICAgICAgICByZXR1cm47
CisjZW5kaWYKKworICAgIGF1dG8gZnJhbWVJRCA9IHdlYkZyYW1lLT5mcmFtZUlEKCk7CisgICAg
YXV0byBwYWdlSUQgPSB3ZWJGcmFtZS0+cGFnZSgpLT5pZGVudGlmaWVyKCk7CiAKICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNl
dENvb2tpZXNGcm9tRE9NKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRl
SW5mbyhkb2N1bWVudCksIHVybCwgZnJhbWVJRCwgcGFnZUlELCBjb29raWVTdHJpbmcpLCAwKTsK
IH0KQEAgLTg3LDYgKzEzNSwxMiBAQCBib29sIFdlYkNvb2tpZUphcjo6Y29va2llc0VuYWJsZWQo
Y29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAogCiBzdGQ6OnBhaXI8U3Ry
aW5nLCBXZWJDb3JlOjpTZWN1cmVDb29raWVzQWNjZXNzZWQ+IFdlYkNvb2tpZUphcjo6Y29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFs
PEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNv
bnN0CiB7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBhdXRvKiB3
ZWJGcmFtZSA9IGZyYW1lSUQgPyBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZSgqZnJh
bWVJRCkgOiBudWxscHRyOworICAgIGlmIChzaG91bGRCbG9ja0Nvb2tpZXMod2ViRnJhbWUsIGZp
cnN0UGFydHksIHVybCkpCisgICAgICAgIHJldHVybiB7IH07CisjZW5kaWYKKwogICAgIFN0cmlu
ZyBjb29raWVTdHJpbmc7CiAgICAgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQgPSBmYWxzZTsK
ICAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGZpcnN0UGFydHks
IHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVz
KSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRWYWx1ZTo6UmVwbHkoY29va2llU3RyaW5nLCBzZWN1cmVDb29raWVzQWNjZXNz
ZWQpLCAwKSkKQEAgLTk2LDEzICsxNTAsMTQgQEAgc3RkOjpwYWlyPFN0cmluZywgV2ViQ29yZTo6
U2VjdXJlQ29va2llc0FjY2Vzc2VkPiBXZWJDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWEKIAog
Ym9vbCBXZWJDb29raWVKYXI6OmdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQm
IGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIHJhd0Nv
b2tpZXMpIGNvbnN0CiB7Ci0gICAgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEOwot
ICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7Ci0gICAgaWYgKGF1dG8qIGZyYW1l
ID0gZG9jdW1lbnQuZnJhbWUoKSkgewotICAgICAgICBmcmFtZUlEID0gZnJhbWUtPmxvYWRlcigp
LmNsaWVudCgpLmZyYW1lSUQoKTsKLSAgICAgICAgcGFnZUlEID0gZnJhbWUtPmxvYWRlcigpLmNs
aWVudCgpLnBhZ2VJRCgpOwotICAgIH0KKyAgICBhdXRvKiB3ZWJGcmFtZSA9IGRvY3VtZW50LmZy
YW1lKCkgPyBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqZG9jdW1lbnQuZnJhbWUoKSkgOiBudWxs
cHRyOworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgaWYgKHNob3Vs
ZEJsb2NrQ29va2llcyh3ZWJGcmFtZSwgZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwg
dXJsKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyNlbmRpZgogCisgICAgT3B0aW9uYWw8RnJhbWVJ
ZGVudGlmaWVyPiBmcmFtZUlEID0gd2ViRnJhbWUgPyBtYWtlT3B0aW9uYWwod2ViRnJhbWUtPmZy
YW1lSUQoKSkgOiBXVEY6Om51bGxvcHQ7CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCA9IHdlYkZyYW1lICYmIHdlYkZyYW1lLT5wYWdlKCkgPyBtYWtlT3B0aW9uYWwod2ViRnJh
bWUtPnBhZ2UoKS0+aWRlbnRpZmllcigpKSA6IFdURjo6bnVsbG9wdDsKICAgICBpZiAoIVdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OkdldFJhd0Nvb2tpZXMoZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJ
bmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQpLCBNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tpZXM6OlJlcGx5KHJhd0Nvb2tpZXMpLCAw
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA3ZWJlMWRmMGYyOS4uYWJj
NmNkZWNjMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCkBAIC02NjAwLDYgKzY2MDAsMTcgQEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0U3RvcmFnZUFj
Y2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBSZWdpc3RyYWIKICAgICB9
KTsKIH0KIAordm9pZCBXZWJQYWdlOjphZGREb21haW5XaXRoUGFnZUxldmVsU3RvcmFnZUFjY2Vz
cyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wTGV2ZWxEb21haW4sIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiByZXNvdXJjZURvbWFpbikKK3sKKyAgICBtX2RvbWFpbnNXaXRoUGFnZUxldmVs
U3RvcmFnZUFjY2Vzcy5hZGQodG9wTGV2ZWxEb21haW4sIHJlc291cmNlRG9tYWluKTsKK30KKwor
Ym9vbCBXZWJQYWdlOjpoYXNQYWdlTGV2ZWxTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiB0b3BMZXZlbERvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNl
RG9tYWluKSBjb25zdAoreworICAgIGF1dG8gaXQgPSBtX2RvbWFpbnNXaXRoUGFnZUxldmVsU3Rv
cmFnZUFjY2Vzcy5maW5kKHRvcExldmVsRG9tYWluKTsKKyAgICByZXR1cm4gaXQgIT0gbV9kb21h
aW5zV2l0aFBhZ2VMZXZlbFN0b3JhZ2VBY2Nlc3MuZW5kKCkgJiYgaXQtPnZhbHVlID09IHJlc291
cmNlRG9tYWluOworfQorCiB2b2lkIFdlYlBhZ2U6Ondhc0xvYWRlZFdpdGhEYXRhVHJhbnNmZXJG
cm9tUHJldmFsZW50UmVzb3VyY2UoKQogewogICAgIGF1dG8qIGZyYW1lID0gbWFpbkZyYW1lKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZTM1MmQ0
NDZhMzQuLjE0OWFkOTE0MjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCkBAIC0xMTYwLDYgKzExNjAsOCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKICAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mJiB0b3BGcmFtZURvbWFpbiwgV2ViRnJhbWUmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiYgdG9wRnJhbWVEb21haW4sIFdlYkZyYW1lJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJD
b3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duKT4mJik7CisgICAgYm9vbCBoYXNQYWdlTGV2ZWxTdG9yYWdlQWNjZXNzKGNvbnN0
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiB0b3BMZXZlbERvbWFpbiwgY29uc3QgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluKSBjb25zdDsKKyAgICB2b2lkIGFk
ZERvbWFpbldpdGhQYWdlTGV2ZWxTdG9yYWdlQWNjZXNzKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiB0b3BMZXZlbERvbWFpbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mIHJlc291cmNlRG9tYWluKTsKICAgICB2b2lkIHdhc0xvYWRlZFdpdGhEYXRhVHJhbnNmZXJG
cm9tUHJldmFsZW50UmVzb3VyY2UoKTsKICNlbmRpZgogCkBAIC0yMDI1LDYgKzIwMjcsMTAgQEAg
cHJpdmF0ZToKICAgICBXZWJDb3JlOjpUaW1lciBtX3RleHRBdXRvU2l6aW5nQWRqdXN0bWVudFRp
bWVyOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAg
IEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluPiBtX2RvbWFpbnNXaXRoUGFnZUxldmVsU3RvcmFnZUFjY2VzczsKKyNlbmRpZgorCiAg
ICAgU3RyaW5nIG1fb3ZlcnJpZGRlbk1lZGlhVHlwZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCAxNTYxZmZhZWUyNi4uY2ZiMDM0NmM5N2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTQ2NSw2ICs0NjUsNyBAQCB2
b2lkIFdlYlByb2Nlc3M6OnNldFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzKFdlYlByb2Nlc3NE
YXRhU3RvcmVQYXJhbWV0ZXJzJiYgcAogCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGNv
bnN0cnVjdGVkIHBlciBkYXRhIHN0b3JlLCBub3QgcGVyIHByb2Nlc3MuCiAgICAgbV9hcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZSA9IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjcmVhdGUocGFyYW1l
dGVycy5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2Fj
aGVGbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUpOworCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBtX2FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLT5zZXREZWZhdWx0T3JpZ2luUXVvdGEoMjVV
TEwgKiAxMDI0ICogMTAyNCk7CiAjZW5kaWYKQEAgLTQ3Nyw2ICs0NzgsNyBAQCB2b2lkIFdlYlBy
b2Nlc3M6OnNldFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzKFdlYlByb2Nlc3NEYXRhU3RvcmVQ
YXJhbWV0ZXJzJiYgcAogICAgIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKHBhcmFt
ZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQpOwogCiAjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKKyAgICAgICAgbV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlID0gcGFyYW1ldGVycy50aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOwogICAgIGlmIChw
YXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkICYmICFwYXJhbWV0ZXJzLnNl
c3Npb25JRC5pc0VwaGVtZXJhbCgpICYmICFSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkSWZF
eGlzdHMoKSkKICAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFNoYXJlZCgqbmV3IFdl
YlJlc291cmNlTG9hZE9ic2VydmVyKTsKICNlbmRpZgpAQCAtMTk3Myw2ICsxOTc1LDE0IEBAIGJv
b2wgV2ViUHJvY2Vzczo6YXJlQWxsUGFnZXNUaHJvdHRsZWFibGUoKSBjb25zdAogICAgIH0pOwog
fQogCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKK3ZvaWQgV2ViUHJvY2Vz
czo6c2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoVGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZSB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV90aGlyZFBhcnR5
Q29va2llQmxvY2tpbmdNb2RlID0gdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsKKyAgICBj
b21wbGV0aW9uSGFuZGxlcigpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
CiAjdW5kZWYgUkVMRUFTRV9MT0dfU0VTU0lPTl9JRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmgKaW5kZXggNGQ4MThkYWExYzAuLmIyNGM4Y2UzNzQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJXZWJTb2Nr
ZXRDaGFubmVsTWFuYWdlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQWN0aXZpdHlTdGF0ZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9O
ZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2lmIFBMQVRGT1JN
KE1BQykKQEAgLTE2NSw2ICsxNjYsMTAgQEAgcHVibGljOgogICAgIAogICAgIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCgpIGNvbnN0IHsgQVNTRVJUKG1fc2Vzc2lvbklEKTsgcmV0dXJuICptX3Nl
c3Npb25JRDsgfQogCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBX
ZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIHRoaXJkUGFydHlDb29raWVCbG9j
a2luZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU7
IH0KKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgY29uc3QgV1RGOjpNYWNoU2Vu
ZFJpZ2h0JiBjb21wb3NpdGluZ1JlbmRlclNlcnZlclBvcnQoKSBjb25zdCB7IHJldHVybiBtX2Nv
bXBvc2l0aW5nUmVuZGVyU2VydmVyUG9ydDsgfQogI2VuZGlmCkBAIC00MzUsNiArNDQwLDEwIEBA
IHByaXZhdGU6CiAgICAgdm9pZCByZXZva2VVc2VyTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9u
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwogI2VuZGlmCiAKKyNlbmRpZgorCisjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICB2b2lkIHNldFNob3VsZEJsb2NrVGhpcmRQ
YXJ0eUNvb2tpZXNGb3JUZXN0aW5nKFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01v
ZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAjZW5kaWYKIAogICAgIHZvaWQgcGxh
dGZvcm1Jbml0aWFsaXplUHJvY2Vzcyhjb25zdCBBdXhpbGlhcnlQcm9jZXNzSW5pdGlhbGl6YXRp
b25QYXJhbWV0ZXJzJik7CkBAIC02MDIsNiArNjExLDEwIEBAIHByaXZhdGU6CiAgICAgLy8gUHJl
d2FybWVkIFdlYlByb2Nlc3NlcyBkbyBub3QgaGF2ZSBhbiBhc3NvY2lhdGVkIHNlc3Npb25JRCB5
ZXQsIHdoaWNoIGlzIHdoeSB0aGlzIGlzIGFuIG9wdGlvbmFsLgogICAgIC8vIEJ5IHRoZSB0aW1l
IHRoZSBXZWJQcm9jZXNzIGdldHMgYSBXZWJQYWdlLCBpdCBpcyBndWFyYW50ZWVkIHRvIGhhdmUg
YSBzZXNzaW9uSUQuCiAgICAgT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IG1fc2Vzc2lvbklEOwor
CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBXZWJDb3JlOjpUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSB7
IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbCB9OworI2VuZGlmCiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggZjAwZDc5YzZkNDAuLjk5MGIwNGQ1ODcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpA
QCAtMTYyLDUgKzE2Miw2IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIg
Tm90UmVmQ291bnRlZCB7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQog
ICAgIFNlZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9yVGVzdGluZyhXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiBmaXJzdFBhcnR5RG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0
aGlyZFBhcnR5RG9tYWluLCBib29sIHNob3VsZFNjaGVkdWxlTm90aWZpY2F0aW9uKSAtPiAoKSBB
c3luYworICAgIFNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKGVudW06
dWludDhfdCBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIGJsb2NraW5nTW9k
ZSkgLT4gKCkgQXN5bmMKICNlbmRpZgogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387567</attachid>
            <date>2020-01-13 14:34:01 -0800</date>
            <delta_ts>2020-01-13 16:57:23 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>206108_avoid_sync_IPC_ads_wip.patch</filename>
            <type>text/plain</type>
            <size>45014</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCmluZGV4IGRkY2EyYzYzY2NlLi5m
MjQyODVlMjY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCkBAIC0z
OTgsNiArMzk4LDE0IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJv
bURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTCiAKICAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7CiAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQorICAgIGlmIChzaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFtZUlELCBw
YWdlSUQpKQorICAgICAgICByZXR1cm47CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShmcmFtZUlE
KTsKKyAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKKyNlbmRpZgorCiAgICAgLy8gPHJkYXI6Ly9w
cm9ibGVtLzU2MzI4ODM+IE9uIDEwLjUsIE5TSFRUUENvb2tpZVN0b3JhZ2Ugd291bGQgc3RvcmUg
YW4gZW1wdHkgY29va2llLAogICAgIC8vIHdoaWNoIHdvdWxkIGJlIHNlbnQgYXMgIkNvb2tpZTog
PSIuCiAgICAgaWYgKGNvb2tpZVN0ci5pc0VtcHR5KCkpCkBAIC00MjMsMTQgKzQzMSw2IEBAIHZv
aWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTCiAjZW5kaWYKICAgICBBU1NFUlQoW2ZpbHRlcmVkQ29va2ll
cy5nZXQoKSBjb3VudF0gPD0gMSk7CiAKLSNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQotICAgIGlmIChzaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFtZUlE
LCBwYWdlSUQpKQotICAgICAgICByZXR1cm47Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShmcmFt
ZUlEKTsKLSAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKLSNlbmRpZgotCiAgICAgc2V0SFRUUENv
b2tpZXNGb3JVUkwoY29va2llU3RvcmFnZSgpLmdldCgpLCBmaWx0ZXJlZENvb2tpZXMuZ2V0KCks
IGNvb2tpZVVSTCwgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvKTsKIAogICAgIEVORF9CTE9DS19P
QkpDX0VYQ0VQVElPTlM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDJiNjA3ODk2
YzlmLi4zNzM1YWY4YTYzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTU2NCw3
ICs1NjQsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlclVS
TFNjaGVtZXNBc0NPUlNFbmFibGVkKFZlY3RvcjxTdHJpbgogICAgICAgICBtX3NjaGVtZVJlZ2lz
dHJ5LT5yZWdpc3RlclVSTFNjaGVtZUFzQ09SU0VuYWJsZWQoV1RGTW92ZShzY2hlbWUpKTsKIH0K
IAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTShjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25z
dCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJl
Q29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29s
IHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBJbmNsdWRlU2Vj
dXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dHJpbmcgY29va2llU3RyaW5nLCBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFn
ZVNlc3Npb24oKTsKICAgICBpZiAoIW5ldHdvcmtTdG9yYWdlU2Vzc2lvbikKQEAgLTU3OSw3ICs1
NzksNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9N
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgUwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUocmVzdWx0LmZpcnN0KSwgcmVzdWx0LnNlY29uZCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBP
cHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiBwYWdlSUQsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdl
SUQsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewogICAgIGF1dG8qIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKCk7CiAgICAgaWYgKCFuZXR3b3JrU3RvcmFnZVNl
c3Npb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggMGU2ZTgyMzJiNzIuLjQ3MGY5ZWU3
MTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0xOTcsOCArMTk3LDggQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVzQXNDT1JTRW5hYmxlZChWZWN0b3I8U3Ry
aW5nPiYmIHNjaGVtZXMpOwogCi0gICAgdm9pZCBjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9u
YWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50
aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYp
OwotICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIGNvbnN0
IFN0cmluZyYpOworICAgIHZvaWQgY29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OkluY2x1ZGVTZWN1
cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJv
b2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkKT4mJik7CisgICAgdm9pZCBzZXRDb29raWVzRnJvbURP
TShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNv
bnN0IFVSTCYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgY29va2llc0VuYWJsZWQoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYs
IGNvbnN0IFVSTCYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFs
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBzZWN1cmVD
b29raWVzQWNjZXNzZWQpPiYmKTsKICAgICB2b2lkIGdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRp
b25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4m
Jik+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXgg
YjBkYWEzYzNmMDguLjBmZTRiZDAxN2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4KQEAgLTM0LDggKzM0LDggQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFN0YXJ0RG93bmxvYWQoV2Vi
S2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1
ZXN0LCBTdHJpbmcgc3VnZ2VzdGVkTmFtZSkKICAgICBDb252ZXJ0TWFpblJlc291cmNlTG9hZFRv
RG93bmxvYWQodWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIFdlYktpdDo6RG93
bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKIAotICAgIENvb2tpZXNGb3JET00oVVJM
IGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBV
UkwgdXJsLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlv
bmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJ
bmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmluZyBjb29r
aWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykgU3luY2hyb25vdXMKLSAgICBT
ZXRDb29raWVzRnJvbURPTShVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRl
SW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRp
Zmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwg
U3RyaW5nIGNvb2tpZVN0cmluZykKKyAgICBDb29raWVzRm9yRE9NKFVSTCBmaXJzdFBhcnR5LCBz
dHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgZW51bTpib29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVD
b29raWVzKSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29r
aWVzKSBTeW5jaHJvbm91cworICAgIFNldENvb2tpZXNGcm9tRE9NKFVSTCBmaXJzdFBhcnR5LCBz
dHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgU3RyaW5nIGNvb2tpZVN0cmluZykKICAgICBDb29raWVzRW5hYmxlZCgpIC0+IChib29sIGVu
YWJsZWQpIFN5bmNocm9ub3VzCiAgICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoVVJM
IGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBV
UkwgdXJsLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlv
bmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJ
bmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmluZyBjb29r
aWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykgU3luY2hyb25vdXMKICAgICBH
ZXRSYXdDb29raWVzKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZv
IHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAo
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgU3luY2hyb25vdXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFt
ZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNy
ZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggZDdkYTQ5ZmY1NDUuLmY5MTdmNTE3YjRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtNjgsNyArNjgsOSBAQCB2b2lkIE5l
dHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljczsKICAgICBlbmNvZGVyIDw8IGVuYWJsZVJlc291cmNlTG9hZFN0YXRp
c3RpY3NEZWJ1Z01vZGU7CiAgICAgZW5jb2RlciA8PCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFu
dWFsUHJldmFsZW50UmVzb3VyY2U7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKICAgICBlbmNvZGVyIDw8IHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU7CisjZW5kaWYK
ICAgICBlbmNvZGVyIDw8IGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOwogCiAgICAg
ZW5jb2RlciA8PCBuZXR3b3JrQ2FjaGVEaXJlY3RvcnkgPDwgbmV0d29ya0NhY2hlRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlOwpAQCAtMjAyLDEwICsyMDQsMTIgQEAgT3B0aW9uYWw8TmV0d29ya1Nl
c3Npb25DcmVhdGlvblBhcmFtZXRlcnM+IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJz
OjpkZWMKICAgICBpZiAoIXJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNv
dXJjZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAorI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nTW9kZT4gdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsKICAgICBkZWNvZGVy
ID4+IHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU7CiAgICAgaWYgKCF0aGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdNb2RlKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworI2VuZGlmCiAK
ICAgICBPcHRpb25hbDxXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZT4g
Zmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU7CiAgICAgZGVjb2RlciA+PiBmaXJzdFBh
cnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTsKQEAgLTMwMCw3ICszMDQsOSBAQCBPcHRpb25hbDxO
ZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycz4gTmV0d29ya1Nlc3Npb25DcmVhdGlvblBh
cmFtZXRlcnM6OmRlYwogICAgICAgICAsIFdURk1vdmUoKmVuYWJsZVJlc291cmNlTG9hZFN0YXRp
c3RpY3NMb2dUZXN0aW5nRXZlbnQpCiAgICAgICAgICwgV1RGTW92ZSgqc2hvdWxkSW5jbHVkZUxv
Y2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljcykKICAgICAgICAgLCBXVEZNb3ZlKCplbmFi
bGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKQorI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpCiAgICAgICAgICwgV1RGTW92ZSgqdGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nTW9kZSkKKyNlbmRpZgogICAgICAgICAsIFdURk1vdmUoKmZpcnN0UGFydHlXZWJzaXRlRGF0
YVJlbW92YWxNb2RlKQogICAgICAgICAsIFdURk1vdmUoKmRldmljZU1hbmFnZW1lbnRSZXN0cmlj
dGlvbnNFbmFibGVkKQogICAgICAgICAsIFdURk1vdmUoKmFsbExvYWRzQmxvY2tlZEJ5RGV2aWNl
TWFuYWdlbWVudFJlc3RyaWN0aW9uc0ZvclRlc3RpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzLmgKaW5kZXggMGQ1N2FiNzEyMjUuLjgyZTk1ZjE5ODU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9u
UGFyYW1ldGVycy5oCkBAIC04Niw3ICs4Niw5IEBAIHN0cnVjdCBOZXR3b3JrU2Vzc2lvbkNyZWF0
aW9uUGFyYW1ldGVycyB7CiAgICAgYm9vbCBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9n
VGVzdGluZ0V2ZW50IHsgZmFsc2UgfTsKICAgICBib29sIHNob3VsZEluY2x1ZGVMb2NhbGhvc3RJ
blJlc291cmNlTG9hZFN0YXRpc3RpY3MgeyB0cnVlIH07CiAgICAgYm9vbCBlbmFibGVSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlIHsgZmFsc2UgfTsKKyNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKQogICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01v
ZGUgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSB7IFdlYkNvcmU6OlRoaXJkUGFydHlDb29r
aWVCbG9ja2luZ01vZGU6OkFsbCB9OworI2VuZGlmCiAgICAgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdl
YnNpdGVEYXRhUmVtb3ZhbE1vZGUgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgeyBX
ZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTo6QWxsQnV0Q29va2llcyB9
OwogICAgIGJvb2wgZGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0VuYWJsZWQgeyBmYWxzZSB9
OwogICAgIGJvb2wgYWxsTG9hZHNCbG9ja2VkQnlEZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25z
Rm9yVGVzdGluZyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMuaAppbmRleCBlMDk0MDBhN2FhYS4uMzBkYjRjOWI1
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NEYXRhU3RvcmVQ
YXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0RhdGFTdG9y
ZVBhcmFtZXRlcnMuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJTYW5kYm94RXh0ZW5zaW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KIApAQCAtNDUsNiArNDYsOSBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFt
ZXRlcnMgewogICAgIFN0cmluZyBqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeTsKICAg
ICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rv
cnlFeHRlbnNpb25IYW5kbGU7CiAgICAgSGFzaE1hcDx1bnNpZ25lZCwgV2FsbFRpbWU+IHBsdWdJ
bkF1dG9TdGFydE9yaWdpbkhhc2hlczsKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQorICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgdGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nTW9kZSB7IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01v
ZGU6OkFsbCB9OworI2VuZGlmCiAgICAgYm9vbCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZCB7IGZhbHNlIH07CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShF
bmNvZGVyJikgY29uc3Q7CkBAIC02Nyw2ICs3MSw5IEBAIHZvaWQgV2ViUHJvY2Vzc0RhdGFTdG9y
ZVBhcmFtZXRlcnM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIg
PDwgamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rvcnk7CiAgICAgZW5jb2RlciA8PCBqYXZh
U2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBlbmNvZGVy
IDw8IHBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlczsKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQorICAgIGVuY29kZXIgPDwgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9k
ZTsKKyNlbmRpZgogICAgIGVuY29kZXIgPDwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ7
CiB9CiAKQEAgLTEzMiw2ICsxMzksMTMgQEAgT3B0aW9uYWw8V2ViUHJvY2Vzc0RhdGFTdG9yZVBh
cmFtZXRlcnM+IFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzOjpkZWNvZGUoRGUKICAgICBp
ZiAoIXBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcykKICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKIAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgT3B0aW9u
YWw8V2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZT4gdGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nTW9kZTsKKyAgICBkZWNvZGVyID4+IHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01v
ZGU7CisgICAgaWYgKCF0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworI2VuZGlmCisKICAgICBib29sIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NFbmFibGVkID0gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRW5hYmxlZCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC0xNTAs
NiArMTY0LDkgQEAgT3B0aW9uYWw8V2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnM+IFdlYlBy
b2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzOjpkZWNvZGUoRGUKICAgICAgICAgV1RGTW92ZShqYXZh
U2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSksCiAgICAgICAgIFdURk1vdmUoKmphdmFTY3Jp
cHRDb25maWd1cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKSwKICAgICAgICAgV1RGTW92
ZSgqcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKSwKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQorICAgICAgICAqdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwKKyNl
bmRpZgogICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZAogICAgIH07CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcAppbmRleCBmMzZiNzljZTU0NS4uNWZiZDM2MTMwMzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cApAQCAtMTA3OCwxMSArMTA3OCw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0U2hv
dWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCwgQ29tCiAKIHZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRl
c3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlIGJsb2NraW5nTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewotICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgewotICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAogICAgIHNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldFNob3VsZEJsb2NrVGhpcmRQ
YXJ0eUNvb2tpZXNGb3JUZXN0aW5nKHNlc3Npb25JRCwgYmxvY2tpbmdNb2RlKSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAKaW5kZXggMzA2NDRiYmQ5N2UuLjgxY2Q1ZDZjNmJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC01NzYsNyArNTc2LDkgQEAgTmV0
d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKFdl
YnNpdGVEYXRhU3RvcmUqIHdpdGgKICAgICBib29sIGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NMb2dUZXN0aW5nRXZlbnQgPSBmYWxzZTsKICAgICBib29sIHNob3VsZEluY2x1ZGVMb2NhbGhv
c3QgPSB0cnVlOwogICAgIGJvb2wgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9k
ZSA9IGZhbHNlOworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgV2Vi
Q29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSB0aGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlID0gV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsOworI2Vu
ZGlmCiAgICAgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgZmlyc3RQ
YXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgPSBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURh
dGFSZW1vdmFsTW9kZTo6QWxsQnV0Q29va2llczsKICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZSB7IH07CiAgICAgaWYgKHdpdGhXZWJzaXRlRGF0
YVN0b3JlKSB7CkBAIC01ODgsNyArNTkwLDkgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJv
Y2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdpdGgKICAg
ICAgICAgICAgIGF1dG8gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzID0gd2l0aFdlYnNpdGVEYXRh
U3RvcmUtPnBhcmFtZXRlcnMoKS5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnM7CiAgICAgICAgICAg
ICBzaG91bGRJbmNsdWRlTG9jYWxob3N0ID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNob3Vs
ZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3M7CiAgICAgICAgICAgICBl
bmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlID0gbmV0d29ya1Nlc3Npb25QYXJh
bWV0ZXJzLmVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU7CisjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICAgICAgICAgIHRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGUgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMudGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZTsKKyNlbmRpZgogICAgICAgICAgICAgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVt
b3ZhbE1vZGUgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuZmlyc3RQYXJ0eVdlYnNpdGVEYXRh
UmVtb3ZhbE1vZGU7CiAgICAgICAgICAgICBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZSA9IG5ldHdv
cmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50
UmVzb3VyY2U7CiAgICAgICAgIH0KQEAgLTYxMCw3ICs2MTQsOSBAQCBOZXR3b3JrUHJvY2Vzc1By
b3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9y
ZSogd2l0aAogICAgICAgICAgICAgYXV0byBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMgPSBtX3dl
YnNpdGVEYXRhU3RvcmUtPnBhcmFtZXRlcnMoKS5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnM7CiAg
ICAgICAgICAgICBzaG91bGRJbmNsdWRlTG9jYWxob3N0ID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0
ZXJzLnNob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3M7CiAgICAg
ICAgICAgICBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlID0gbmV0d29ya1Nl
c3Npb25QYXJhbWV0ZXJzLmVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU7Cisj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICAgICAgICAgIHRoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGUgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMudGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nTW9kZTsKKyNlbmRpZgogICAgICAgICAgICAgZmlyc3RQYXJ0eVdlYnNp
dGVEYXRhUmVtb3ZhbE1vZGUgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuZmlyc3RQYXJ0eVdl
YnNpdGVEYXRhUmVtb3ZhbE1vZGU7CiAgICAgICAgICAgICBtYW51YWxQcmV2YWxlbnRSZXNvdXJj
ZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFs
UHJldmFsZW50UmVzb3VyY2U7CiAgICAgICAgIH0KQEAgLTYzNSw3ICs2NDEsOSBAQCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0
ZURhdGFTdG9yZSogd2l0aAogICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRl
cnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NM
b2dUZXN0aW5nRXZlbnQgPSBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2
ZW50OwogICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nl
c3Npb25QYXJhbWV0ZXJzLnNob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRp
c3RpY3MgPSBzaG91bGRJbmNsdWRlTG9jYWxob3N0OwogICAgIHBhcmFtZXRlcnMuZGVmYXVsdERh
dGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmVuYWJsZVJlc291cmNl
TG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUgPSBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVi
dWdNb2RlOworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgcGFyYW1l
dGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMu
dGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01v
ZGU7CisjZW5kaWYKICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5l
dHdvcmtTZXNzaW9uUGFyYW1ldGVycy5maXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA9
IGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOwogCiAgICAgcGFyYW1ldGVycy5kZWZh
dWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3VyY2VM
b2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlID0gbWFudWFsUHJldmFsZW50UmVz
b3VyY2U7CkBAIC05NDEsNiArOTQ5LDkgQEAgV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMg
V2ViUHJvY2Vzc1Bvb2w6OndlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzKFdlYlAKICAgICAg
ICAgV1RGTW92ZShqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSksCiAgICAgICAgIFdU
Rk1vdmUoamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpLAog
ICAgICAgICBXVEZNb3ZlKHBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcyksCisjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICAgICAgd2Vic2l0ZURhdGFTdG9yZS50aGly
ZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKCksCisjZW5kaWYKICAgICAgICAgd2Vic2l0ZURhdGFT
dG9yZS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpCiAgICAgfTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGM0NGJmN2MzMmU5Li44
NDFlNjQ1YmRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwCkBAIC00MzMsNiArNDMzLDExIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpub3RpZnlQYWdl
U3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKEFQSTo6T2JqZWN0KiBtZXNzYWdlCiAgICAgZm9y
IChhdXRvJiBwYWdlIDogZ2xvYmFsUGFnZU1hcCgpKQogICAgICAgICBwYWdlLnZhbHVlLT5wb3N0
TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoIlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnlG
aW5pc2hlZCIsIG1lc3NhZ2VCb2R5KTsKIH0KKwordm9pZCBXZWJQcm9jZXNzUHJveHk6OnNldFNo
b3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKFRoaXJkUGFydHlDb29raWVCbG9j
a2luZ01vZGUgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRl
c3RpbmcodGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSksIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKK30KICNlbmRpZgogCiBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUHJveHk6
OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgUmVmPEFQSTo6UGFnZUNvbmZp
Z3VyYXRpb24+JiYgcGFnZUNvbmZpZ3VyYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5oCmluZGV4IDk2NWZiMWNlMDE3Li41NmY4OTkxYTYzYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTY2LDYgKzY2LDcgQEAgY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0Owogc3RydWN0IFBsdWdpbkluZm87CiBzdHJ1Y3QgUHJld2FybUlu
Zm9ybWF0aW9uOwogc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKK2VudW0gY2xhc3MgVGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA6IHVpbnQ4X3Q7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtMjA2LDYgKzIwNyw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIG5vdGlmeVdl
YnNpdGVEYXRhRGVsZXRpb25Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCgpOwogICAgIHN0
YXRpYyB2b2lkIG5vdGlmeVdlYnNpdGVEYXRhU2NhbkZvclJlZ2lzdHJhYmxlRG9tYWluc0Zpbmlz
aGVkKCk7CisKKyAgICB2b2lkIHNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0
aW5nKFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAjZW5kaWYKIAogICAgIHZvaWQgZW5hYmxlU3VkZGVuVGVybWluYXRp
b24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0Nv
Y29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQppbmRleCBhM2NjNzJkOTk2
ZC4uMDAyMmEwYmRiOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KQEAg
LTYxLDYgKzYxLDIwIEBAIHN0YXRpYyBIYXNoU2V0PFdlYnNpdGVEYXRhU3RvcmUqPiYgZGF0YVN0
b3JlcygpCiAKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFdlYktpdE5ldHdvcmtMb2FkVGhyb3R0
bGVMYXRlbmN5TWlsbGlzZWNvbmRzRGVmYXVsdHNLZXkgPSBAIldlYktpdE5ldHdvcmtMb2FkVGhy
b3R0bGVMYXRlbmN5TWlsbGlzZWNvbmRzIjsKIAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCitXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIFdlYnNpdGVE
YXRhU3RvcmU6OnRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoKSBjb25zdAoreworICAgIGlm
ICghbV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKSB7CisgICAgICAgIE5TVXNlckRlZmF1
bHRzICpkZWZhdWx0cyA9IFtOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c107Cisg
ICAgICAgIGlmIChbZGVmYXVsdHMgYm9vbEZvcktleTpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAIkV4cGVyaW1lbnRhbCVAIiwgV2ViUHJlZmVyZW5jZXNLZXk6OmlzVGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nRGlzYWJsZWRLZXkoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpXV0pCisgICAgICAg
ICAgICBtX3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgPSBXZWJDb3JlOjpUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmdNb2RlOjpBbGxPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbjsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgbV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlID0g
V2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsOworICAgIH0KKyAgICBy
ZXR1cm4gKm1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsKK30KKyNlbmRpZgorCiBXZWJz
aXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkKIHsK
ICAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nl
c3NSYXdDb29raWVzKSk7CkBAIC03MCw3ICs4NCw2IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0
ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogICAgIE5TVXNlckRlZmF1bHRzICpk
ZWZhdWx0cyA9IFtOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c107CiAgICAgYm9v
bCBzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbiA9IGZhbHNlOwogICAgIGJvb2wgZW5hYmxlUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSA9IGZhbHNlOwotICAgIGF1dG8gdGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nTW9kZSA9IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01v
ZGU6OkFsbDsKICAgICBhdXRvIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlID0gV2Vi
Q29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU6OkFsbEJ1dENvb2tpZXM7CiAg
ICAgYm9vbCBlbmFibGVMZWdhY3lUTFMgPSBmYWxzZTsKICAgICBpZiAoaWQgdmFsdWUgPSBbZGVm
YXVsdHMgb2JqZWN0Rm9yS2V5OkAiV2ViS2l0RW5hYmxlTGVnYWN5VExTIl0pCkBAIC04NSwxMCAr
OTgsNiBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJh
bWV0ZXJzKCkKICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2UgeyB9OwogI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpCiAgICAgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9k
ZSA9IFtkZWZhdWx0cyBib29sRm9yS2V5OkAiSVRQRGVidWdNb2RlIl07Ci0gICAgaWYgKFtkZWZh
dWx0cyBib29sRm9yS2V5OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiRXhwZXJpbWVudGFs
JUAiLCBXZWJQcmVmZXJlbmNlc0tleTo6aXNUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdEaXNhYmxl
ZEtleSgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCldXSkKLSAgICAgICAgdGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nTW9kZSA9IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFs
bE9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uOwotICAgIGVsc2UKLSAgICAgICAgdGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2lu
Z01vZGU6OkFsbDsKICAgICBpZiAoW2RlZmF1bHRzIGJvb2xGb3JLZXk6W05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6QCJFeHBlcmltZW50YWwlQCIsIFdlYlByZWZlcmVuY2VzS2V5Ojppc0ZpcnN0
UGFydHlXZWJzaXRlRGF0YVJlbW92YWxEaXNhYmxlZEtleSgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCldXSkKICAgICAgICAgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgPSBXZWJDb3Jl
OjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTo6Tm9uZTsKICAgICBlbHNlIHsKQEAg
LTE2Miw3ICsxNzEsNyBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0
b3JlOjpwYXJhbWV0ZXJzKCkKICAgICAgICAgaGFzU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjaygp
LAogICAgICAgICBzaG91bGRJbmNsdWRlTG9jYWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LAogICAgICAgICBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlLAotICAgICAg
ICB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlLAorICAgICAgICB0aGlyZFBhcnR5Q29va2ll
QmxvY2tpbmdNb2RlKCksCiAgICAgICAgIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2Rl
LAogICAgICAgICBtX2NvbmZpZ3VyYXRpb24tPmRldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNF
bmFibGVkKCksCiAgICAgICAgIG1fY29uZmlndXJhdGlvbi0+YWxsTG9hZHNCbG9ja2VkQnlEZXZp
Y2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRm9yVGVzdGluZygpLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRl
eCAxOTk1MTBlNDJlZC4uMGQ4YWM0NTM1OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0xODA1LDYg
KzE4MDUsMTIgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclQKICAgICBpZiAoZW5hYmxlZCkKICAg
ICAgICAgYmxvY2tpbmdNb2RlID0gb25seU9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uID8g
V2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsT25TaXRlc1dpdGhvdXRV
c2VySW50ZXJhY3Rpb24gOiBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpB
bGw7CiAKKyAgICBpZiAodGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSgpICE9IGJsb2NraW5n
TW9kZSkgeworICAgICAgICBtX3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgPSBibG9ja2lu
Z01vZGU7CisgICAgICAgIGZvciAoYXV0byYgd2ViUHJvY2VzcyA6IHByb2Nlc3NlcygpKQorICAg
ICAgICAgICAgd2ViUHJvY2Vzcy5zZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVz
dGluZyhibG9ja2luZ01vZGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0
b3IuY29weVJlZigpXSB7IH0pOworICAgIH0KKwogICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wg
OiBwcm9jZXNzUG9vbHMoKSkgewogICAgICAgICBpZiAoYXV0byogbmV0d29ya1Byb2Nlc3MgPSBw
cm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkgewogICAgICAgICAgICAgbmV0d29ya1Byb2Nl
c3MtPnNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKG1fc2Vzc2lvbklE
LCBibG9ja2luZ01vZGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3Iu
Y29weVJlZigpXSB7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IGM2NWEwNjdiYjNmLi5hOWYxNDc3MzBj
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuaApAQCAtMTk1LDYgKzE5NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3Rpbmco
Ym9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhib29s
IGVuYWJsZWQsIGJvb2wgb25seU9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlRm9yVGVzdGluZyhib29sIGVuYWJsZWQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgV2ViQ29yZTo6VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZSB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKCkgY29uc3Q7CiAj
ZW5kaWYKICAgICB2b2lkIHNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFNl
Y29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZXNldENhY2hl
TWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CkBAIC0zNzQsNiArMzc1LDkgQEAgcHJpdmF0ZToKICNpZiBIQVZFKEFQUF9TU08pCiAgICAg
VW5pcXVlUmVmPFNPQXV0aG9yaXphdGlvbkNvb3JkaW5hdG9yPiBtX3NvQXV0aG9yaXphdGlvbkNv
b3JkaW5hdG9yOwogI2VuZGlmCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
KyAgICBtdXRhYmxlIE9wdGlvbmFsPFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01v
ZGU+IG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsgLy8gTGF6aWx5IGNvbXB1dGVkLgor
I2VuZGlmCiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmNwcAppbmRl
eCA0MjYzZDE5NWIwYi4uODQyMzBmYzA0ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9i
c2VydmVyLmNwcApAQCAtNzEsMTUgKzcxLDE3IEBAIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjp+
V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIoKQogICAgICAgICB1cGRhdGVDZW50cmFsU3RhdGlzdGlj
c1N0b3JlKCk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlcXVlc3RTdG9y
YWdlQWNjZXNzVW5kZXJPcGVuZXIoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVl
ZE9mU3RvcmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBEb2N1bWVudCYg
b3BlbmVyRG9jdW1lbnQpCit2b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpyZXF1ZXN0U3Rv
cmFnZUFjY2Vzc1VuZGVyT3BlbmVyKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5l
ZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYlBhZ2UmIG9wZW5lclBhZ2UsIERvY3VtZW50JiBvcGVuZXJE
b2N1bWVudCkKIHsKICAgICBhdXRvIG9wZW5lclVybCA9IG9wZW5lckRvY3VtZW50LnVybCgpOwog
ICAgIFJlZ2lzdHJhYmxlRG9tYWluIG9wZW5lckRvbWFpbiB7IG9wZW5lclVybCB9OwogICAgIGlm
IChkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MgIT0gb3BlbmVyRG9tYWluCiAgICAgICAgICYm
ICFvcGVuZXJEb2N1bWVudC5oYXNSZXF1ZXN0ZWRQYWdlU3BlY2lmaWNTdG9yYWdlQWNjZXNzV2l0
aFVzZXJJbnRlcmFjdGlvbihkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpCiAgICAgICAgICYm
ICFlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG9wZW5lclVybC5zdHJpbmcoKSwgV1RGOjpibGFua1VS
TCgpKSkgewotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OlJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoZG9tYWlu
SW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBvcGVuZXJQYWdlSUQsIG9wZW5lckRvbWFpbiksIDApOwor
ICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OlJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoZG9tYWluSW5OZWVkT2ZT
dG9yYWdlQWNjZXNzLCBvcGVuZXJQYWdlLmlkZW50aWZpZXIoKSwgb3BlbmVyRG9tYWluKSwgMCk7
CiAgICAgICAgIAorICAgICAgICBvcGVuZXJQYWdlLmFkZERvbWFpbldpdGhQYWdlTGV2ZWxTdG9y
YWdlQWNjZXNzKG9wZW5lckRvbWFpbiwgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzKTsKKwog
ICAgICAgICAvLyBSZW1lbWJlciB1c2VyIGludGVyYWN0aW9uLWJhc2VkIHJlcXVlc3RzIHNpbmNl
IHRoZXkgZG9uJ3QgbmVlZCB0byBiZSByZXBlYXRlZC4KICAgICAgICAgb3BlbmVyRG9jdW1lbnQu
c2V0SGFzUmVxdWVzdGVkUGFnZVNwZWNpZmljU3RvcmFnZUFjY2Vzc1dpdGhVc2VySW50ZXJhY3Rp
b24oZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzKTsKICAgICB9CkBAIC0zMzUsMTAgKzMzNyw4
IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1VzZXJJbnRlcmFjdGlvbldpdGhS
ZWR1Y2VkVGltZVJlc29sdXRpb24oY29uc3QKICAgICBpZiAoYXV0byogZnJhbWUgPSBkb2N1bWVu
dC5mcmFtZSgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBvcGVuZXIgPSBmcmFtZS0+bG9hZGVyKCku
b3BlbmVyKCkpIHsKICAgICAgICAgICAgIGlmIChhdXRvKiBvcGVuZXJEb2N1bWVudCA9IG9wZW5l
ci0+ZG9jdW1lbnQoKSkgewotICAgICAgICAgICAgICAgIGlmIChhdXRvKiBvcGVuZXJGcmFtZSA9
IG9wZW5lckRvY3VtZW50LT5mcmFtZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhdXRv
IG9wZW5lclBhZ2VJRCA9IG9wZW5lckZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIo
dG9wRnJhbWVEb21haW4sIG9wZW5lclBhZ2VJRC52YWx1ZSgpLCAqb3BlbmVyRG9jdW1lbnQpOwot
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoYXV0byogb3BlbmVyUGFnZSA9
IG9wZW5lckRvY3VtZW50LT5wYWdlKCkpCisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RTdG9y
YWdlQWNjZXNzVW5kZXJPcGVuZXIodG9wRnJhbWVEb21haW4sIFdlYlBhZ2U6OmZyb21Db3JlUGFn
ZSgqb3BlbmVyUGFnZSksICpvcGVuZXJEb2N1bWVudCk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oCmluZGV4IGZhZTQ4YzY2
ZDNlLi5jODA5MmY0YTBiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmgKQEAg
LTM0LDYgKzM0LDggQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFdlYlBhZ2U7CisK
IGNsYXNzIFdlYlJlc291cmNlTG9hZE9ic2VydmVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlJl
c291cmNlTG9hZE9ic2VydmVyIHsKIHB1YmxpYzoKICAgICBXZWJSZXNvdXJjZUxvYWRPYnNlcnZl
cigpOwpAQCAtNjQsNyArNjYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2NoZWR1bGVOb3RpZmlj
YXRpb25JZk5lZWRlZCgpOwogCiAgICAgVmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3M+IHRha2VTdGF0aXN0aWNzKCk7Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1Vu
ZGVyT3BlbmVyKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRP
ZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgV2Vi
Q29yZTo6RG9jdW1lbnQmIG9wZW5lckRvY3VtZW50KTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdl
QWNjZXNzVW5kZXJPcGVuZXIoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGRvbWFp
bkluTmVlZE9mU3RvcmFnZUFjY2VzcywgV2ViUGFnZSYgb3BlbmVyUGFnZSwgV2ViQ29yZTo6RG9j
dW1lbnQmIG9wZW5lckRvY3VtZW50KTsKIAogICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4sIFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+IG1fcmVzb3VyY2VTdGF0
aXN0aWNzTWFwOwogICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFdURjo6
V2FsbFRpbWU+IG1fbGFzdFJlcG9ydGVkVXNlckludGVyYWN0aW9uTWFwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAKaW5kZXggNzM4MmZk
OWE2MTMuLjRiM2NmNGU0ZGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkNvb2tpZUphci5jcHAKQEAgLTI4LDggKzI4LDExIEBACiAKICNpbmNsdWRlICJO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViRnJhbWUuaCIKKyNpbmNsdWRlICJX
ZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29v
a2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RlcHJlY2F0
ZWRHbG9iYWxTZXR0aW5ncy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgpA
QCAtNDgsMTQgKzUxLDU0IEBAIGNsYXNzIFdlYlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIgOiBwdWJs
aWMgV2ViQ29yZTo6U3RvcmFnZVNlc3Npb25Qcm92aWRlciB7CiBXZWJDb29raWVKYXI6OldlYkNv
b2tpZUphcigpCiAgICAgOiBXZWJDb3JlOjpDb29raWVKYXIoYWRvcHRSZWYoKm5ldyBXZWJTdG9y
YWdlU2Vzc2lvblByb3ZpZGVyKSkgeyB9CiAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQorc3RhdGljIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzKFdlYkZyYW1lKiBmcmFtZSwg
Y29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgVVJMJiByZXNvdXJjZVVSTCkK
K3sKKyAgICBpZiAoIVdlYkNvcmU6OkRlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6cmVzb3VyY2VM
b2FkU3RhdGlzdGljc0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYg
KGZyYW1lICYmIGZyYW1lLT5pc01haW5GcmFtZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAvLyBUaGUgV2ViQ29udGVudCBwcm9jZXNzIGRvZXMgbm90IGhhdmUgZW5vdWdoIGluZm9y
bWF0aW9uIHRvIGRlYWwgd2l0aCBvdGhlciBwb2xpY2llcyB0aGFuIFRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGU6OkFsbCBzbyB3ZSBoYXZlIHRvIGdvIHRvIHRoZSBOZXR3b3JrUHJvY2VzcyBm
b3IgYWxsCisgICAgLy8gb3RoZXIgcG9saWNpZXMgYW5kIHRoZSByZXF1ZXN0IG1heSBlbmQgdXAg
Z2V0dGluZyBibG9ja2VkIG9uIE5ldHdvcmtQcm9jZXNzIHNpZGUuCisgICAgaWYgKFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoKSAhPSBUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IFJlZ2lzdHJhYmxlRG9tYWluIGZpcnN0UGFydHlEb21haW4geyBmaXJzdFBhcnR5Rm9yQ29va2ll
cyB9OworICAgIGlmIChmaXJzdFBhcnR5RG9tYWluLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgUmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VEb21haW4geyByZXNvdXJj
ZVVSTCB9OworICAgIGlmIChyZXNvdXJjZURvbWFpbi5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlmIChmaXJzdFBhcnR5RG9tYWluID09IHJlc291cmNlRG9tYWluKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPmZyYW1lTG9h
ZGVyQ2xpZW50KCktPmhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+cGFnZSgpICYmIGZyYW1lLT5w
YWdlKCktPmhhc1BhZ2VMZXZlbFN0b3JhZ2VBY2Nlc3MoZmlyc3RQYXJ0eURvbWFpbiwgcmVzb3Vy
Y2VEb21haW4pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KyNlbmRpZgorCiBTdHJpbmcgV2ViQ29va2llSmFyOjpjb29raWVzKFdlYkNvcmU6OkRvY3VtZW50
JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7Ci0gICAgT3B0aW9uYWw8RnJhbWVJ
ZGVudGlmaWVyPiBmcmFtZUlEOwotICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7
Ci0gICAgaWYgKGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkgewotICAgICAgICBmcmFt
ZUlEID0gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKTsKLSAgICAgICAgcGFnZUlE
ID0gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpOwotICAgIH0KKyAgICBhdXRvKiB3
ZWJGcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkgPyBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqZG9j
dW1lbnQuZnJhbWUoKSkgOiBudWxscHRyOworICAgIGlmICghd2ViRnJhbWUgfHwgIXdlYkZyYW1l
LT5wYWdlKCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQorICAgIGlmIChzaG91bGRCbG9ja0Nvb2tpZXMod2ViRnJhbWUsIGRvY3Vt
ZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHVybCkpCisgICAgICAgIHJldHVybiB7IH07Cisj
ZW5kaWYKKworICAgIGF1dG8gZnJhbWVJRCA9IHdlYkZyYW1lLT5mcmFtZUlEKCk7CisgICAgYXV0
byBwYWdlSUQgPSB3ZWJGcmFtZS0+cGFnZSgpLT5pZGVudGlmaWVyKCk7CiAKICAgICBTdHJpbmcg
Y29va2llU3RyaW5nOwogICAgIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkID0gZmFsc2U7CkBA
IC02NywxMiArMTEwLDE3IEBAIFN0cmluZyBXZWJDb29raWVKYXI6OmNvb2tpZXMoV2ViQ29yZTo6
RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCkgY29uc3QKIAogdm9pZCBXZWJDb29r
aWVKYXI6OnNldENvb2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCiB7Ci0gICAgT3B0aW9uYWw8RnJhbWVJ
ZGVudGlmaWVyPiBmcmFtZUlEOwotICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7
Ci0gICAgaWYgKGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkgewotICAgICAgICBmcmFt
ZUlEID0gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKTsKLSAgICAgICAgcGFnZUlE
ID0gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpOwotICAgIH0KKyAgICBhdXRvKiB3
ZWJGcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkgPyBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqZG9j
dW1lbnQuZnJhbWUoKSkgOiBudWxscHRyOworICAgIGlmICghd2ViRnJhbWUgfHwgIXdlYkZyYW1l
LT5wYWdlKCkpCisgICAgICAgIHJldHVybjsKKworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCisgICAgaWYgKHNob3VsZEJsb2NrQ29va2llcyh3ZWJGcmFtZSwgZG9jdW1lbnQu
Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsKSkKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisK
KyAgICBhdXRvIGZyYW1lSUQgPSB3ZWJGcmFtZS0+ZnJhbWVJRCgpOworICAgIGF1dG8gcGFnZUlE
ID0gd2ViRnJhbWUtPnBhZ2UoKS0+aWRlbnRpZmllcigpOwogCiAgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRDb29raWVzRnJv
bURPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1l
bnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgY29va2llU3RyaW5nKSwgMCk7CiB9CkBAIC04Nyw2
ICsxMzUsMTIgQEAgYm9vbCBXZWJDb29raWVKYXI6OmNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNv
cmU6OkRvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKIAogc3RkOjpwYWlyPFN0cmluZywgV2ViQ29y
ZTo6U2VjdXJlQ29va2llc0FjY2Vzc2VkPiBXZWJDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50
aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFdlYkNvcmU6
OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAogeworI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgYXV0byogd2ViRnJhbWUgPSBm
cmFtZUlEID8gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoKmZyYW1lSUQpIDogbnVs
bHB0cjsKKyAgICBpZiAoc2hvdWxkQmxvY2tDb29raWVzKHdlYkZyYW1lLCBmaXJzdFBhcnR5LCB1
cmwpKQorICAgICAgICByZXR1cm4geyB9OworI2VuZGlmCisKICAgICBTdHJpbmcgY29va2llU3Ry
aW5nOwogICAgIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkID0gZmFsc2U7CiAgICAgaWYgKCFX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5j
b25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShmaXJzdFBhcnR5LCBzYW1lU2l0ZUlu
Zm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcyksIE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWU6OlJlcGx5KGNvb2tpZVN0cmluZywgc2VjdXJlQ29va2llc0FjY2Vzc2VkKSwgMCkpCkBA
IC05NiwxMyArMTUwLDE0IEBAIHN0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvcmU6OlNlY3VyZUNvb2tp
ZXNBY2Nlc3NlZD4gV2ViQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhCiAKIGJvb2wgV2ViQ29v
a2llSmFyOjpnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCwg
Y29uc3QgVVJMJiB1cmwsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiByYXdDb29raWVzKSBjb25z
dAogewotICAgIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRDsKLSAgICBPcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEOwotICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50
LmZyYW1lKCkpIHsKLSAgICAgICAgZnJhbWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5m
cmFtZUlEKCk7Ci0gICAgICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdl
SUQoKTsKLSAgICB9CisgICAgYXV0byogd2ViRnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpID8gV2Vi
RnJhbWU6OmZyb21Db3JlRnJhbWUoKmRvY3VtZW50LmZyYW1lKCkpIDogbnVsbHB0cjsKKyNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIGlmIChzaG91bGRCbG9ja0Nvb2tp
ZXMod2ViRnJhbWUsIGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHVybCkpCisgICAg
ICAgIHJldHVybiB7IH07CisjZW5kaWYKIAorICAgIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4g
ZnJhbWVJRCA9IHdlYkZyYW1lID8gbWFrZU9wdGlvbmFsKHdlYkZyYW1lLT5mcmFtZUlEKCkpIDog
V1RGOjpudWxsb3B0OworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQgPSB3ZWJG
cmFtZSAmJiB3ZWJGcmFtZS0+cGFnZSgpID8gbWFrZU9wdGlvbmFsKHdlYkZyYW1lLT5wYWdlKCkt
PmlkZW50aWZpZXIoKSkgOiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRSYXdDb29r
aWVzKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbyhkb2N1bWVu
dCksIHVybCwgZnJhbWVJRCwgcGFnZUlEKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpHZXRSYXdDb29raWVzOjpSZXBseShyYXdDb29raWVzKSwgMCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggN2ViZTFkZjBmMjkuLmFiYzZjZGVjYzA3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNjYw
MCw2ICs2NjAwLDE3IEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUmVnaXN0
cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgUmVnaXN0cmFiCiAgICAgfSk7CiB9CiAKK3Zv
aWQgV2ViUGFnZTo6YWRkRG9tYWluV2l0aFBhZ2VMZXZlbFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHRvcExldmVsRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
cmVzb3VyY2VEb21haW4pCit7CisgICAgbV9kb21haW5zV2l0aFBhZ2VMZXZlbFN0b3JhZ2VBY2Nl
c3MuYWRkKHRvcExldmVsRG9tYWluLCByZXNvdXJjZURvbWFpbik7Cit9CisKK2Jvb2wgV2ViUGFn
ZTo6aGFzUGFnZUxldmVsU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9w
TGV2ZWxEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbikgY29u
c3QKK3sKKyAgICBhdXRvIGl0ID0gbV9kb21haW5zV2l0aFBhZ2VMZXZlbFN0b3JhZ2VBY2Nlc3Mu
ZmluZCh0b3BMZXZlbERvbWFpbik7CisgICAgcmV0dXJuIGl0ICE9IG1fZG9tYWluc1dpdGhQYWdl
TGV2ZWxTdG9yYWdlQWNjZXNzLmVuZCgpICYmIGl0LT52YWx1ZSA9PSByZXNvdXJjZURvbWFpbjsK
K30KKwogdm9pZCBXZWJQYWdlOjp3YXNMb2FkZWRXaXRoRGF0YVRyYW5zZmVyRnJvbVByZXZhbGVu
dFJlc291cmNlKCkKIHsKICAgICBhdXRvKiBmcmFtZSA9IG1haW5GcmFtZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGUzNTJkNDQ2YTM0Li4xNDlh
ZDkxNDIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApA
QCAtMTE2MCw2ICsxMTYwLDggQEAgcHVibGljOgogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCiAgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgdG9w
RnJhbWVEb21haW4sIFdlYkZyYW1lJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYmIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1l
RG9tYWluLCBXZWJGcmFtZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFn
ZUFjY2Vzc1dhc0dyYW50ZWQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+
JiYpOworICAgIGJvb2wgaGFzUGFnZUxldmVsU3RvcmFnZUFjY2Vzcyhjb25zdCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiYgdG9wTGV2ZWxEb21haW4sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiByZXNvdXJjZURvbWFpbikgY29uc3Q7CisgICAgdm9pZCBhZGREb21haW5XaXRo
UGFnZUxldmVsU3RvcmFnZUFjY2Vzcyhjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYg
dG9wTGV2ZWxEb21haW4sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJj
ZURvbWFpbik7CiAgICAgdm9pZCB3YXNMb2FkZWRXaXRoRGF0YVRyYW5zZmVyRnJvbVByZXZhbGVu
dFJlc291cmNlKCk7CiAjZW5kaWYKIApAQCAtMjAyNSw2ICsyMDI3LDEwIEBAIHByaXZhdGU6CiAg
ICAgV2ViQ29yZTo6VGltZXIgbV90ZXh0QXV0b1NpemluZ0FkanVzdG1lbnRUaW1lcjsKICNlbmRp
ZgogCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBIYXNoTWFwPFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV9k
b21haW5zV2l0aFBhZ2VMZXZlbFN0b3JhZ2VBY2Nlc3M7CisjZW5kaWYKKwogICAgIFN0cmluZyBt
X292ZXJyaWRkZW5NZWRpYVR5cGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKaW5kZXggMTU2MWZmYWVlMjYuLmU2MzcwNTdiMjEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC00NjUsNiArNDY1LDcgQEAgdm9pZCBXZWJQcm9j
ZXNzOjpzZXRXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyhXZWJQcm9jZXNzRGF0YVN0b3JlUGFy
YW1ldGVycyYmIHAKIAogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBjb25zdHJ1Y3RlZCBw
ZXIgZGF0YSBzdG9yZSwgbm90IHBlciBwcm9jZXNzLgogICAgIG1fYXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UgPSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y3JlYXRlKHBhcmFtZXRlcnMuYXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeSwgcGFyYW1ldGVycy5hcHBsaWNhdGlvbkNhY2hlRmxhdEZpbGVT
dWJkaXJlY3RvcnlOYW1lKTsKKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgbV9hcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZS0+c2V0RGVmYXVsdE9yaWdpblF1b3RhKDI1VUxMICogMTAyNCAq
IDEwMjQpOwogI2VuZGlmCkBAIC00NzcsNiArNDc4LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXRX
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyhXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycyYm
IHAKICAgICBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChwYXJhbWV0ZXJzLnJlc291
cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKTsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCisgICAgbV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlID0gcGFyYW1ldGVy
cy50aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOwogICAgIGlmIChwYXJhbWV0ZXJzLnJlc291
cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkICYmICFwYXJhbWV0ZXJzLnNlc3Npb25JRC5pc0VwaGVt
ZXJhbCgpICYmICFSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkSWZFeGlzdHMoKSkKICAgICAg
ICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFNoYXJlZCgqbmV3IFdlYlJlc291cmNlTG9hZE9i
c2VydmVyKTsKICNlbmRpZgpAQCAtMTk3Myw2ICsxOTc1LDE0IEBAIGJvb2wgV2ViUHJvY2Vzczo6
YXJlQWxsUGFnZXNUaHJvdHRsZWFibGUoKSBjb25zdAogICAgIH0pOwogfQogCisjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKK3ZvaWQgV2ViUHJvY2Vzczo6c2V0U2hvdWxkQmxv
Y2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9k
ZSB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlID0gdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsKKyAgICBjb21wbGV0aW9uSGFuZGxl
cigpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgUkVMRUFT
RV9MT0dfU0VTU0lPTl9JRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXgg
NGQ4MThkYWExYzAuLmIyNGM4Y2UzNzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsTWFuYWdl
ci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQWN0aXZpdHlTdGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRnJhbWVJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTE2NSw2
ICsxNjYsMTAgQEAgcHVibGljOgogICAgIAogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgp
IGNvbnN0IHsgQVNTRVJUKG1fc2Vzc2lvbklEKTsgcmV0dXJuICptX3Nlc3Npb25JRDsgfQogCisj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBXZWJDb3JlOjpUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmdNb2RlIHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoKSBjb25z
dCB7IHJldHVybiBtX3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU7IH0KKyNlbmRpZgorCiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0JiBjb21wb3Np
dGluZ1JlbmRlclNlcnZlclBvcnQoKSBjb25zdCB7IHJldHVybiBtX2NvbXBvc2l0aW5nUmVuZGVy
U2VydmVyUG9ydDsgfQogI2VuZGlmCkBAIC00MzUsNiArNDQwLDEwIEBAIHByaXZhdGU6CiAgICAg
dm9pZCByZXZva2VVc2VyTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYpOwogI2VuZGlmCiAKKyNlbmRpZgorCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKKyAgICB2b2lkIHNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JU
ZXN0aW5nKFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CiAjZW5kaWYKIAogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXpl
UHJvY2Vzcyhjb25zdCBBdXhpbGlhcnlQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJik7
CkBAIC02MDIsNiArNjExLDEwIEBAIHByaXZhdGU6CiAgICAgLy8gUHJld2FybWVkIFdlYlByb2Nl
c3NlcyBkbyBub3QgaGF2ZSBhbiBhc3NvY2lhdGVkIHNlc3Npb25JRCB5ZXQsIHdoaWNoIGlzIHdo
eSB0aGlzIGlzIGFuIG9wdGlvbmFsLgogICAgIC8vIEJ5IHRoZSB0aW1lIHRoZSBXZWJQcm9jZXNz
IGdldHMgYSBXZWJQYWdlLCBpdCBpcyBndWFyYW50ZWVkIHRvIGhhdmUgYSBzZXNzaW9uSUQuCiAg
ICAgT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IG1fc2Vzc2lvbklEOworCisjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmdNb2RlIG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSB7IFdlYkNvcmU6OlRoaXJk
UGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbCB9OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KaW5kZXggZjAwZDc5YzZkNDAuLjk5MGIwNGQ1ODcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTYyLDUgKzE2Miw2
IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgTm90UmVmQ291bnRlZCB7
CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIFNlZWRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRm9yVGVzdGluZyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBmaXJz
dFBhcnR5RG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0aGlyZFBhcnR5RG9tYWlu
LCBib29sIHNob3VsZFNjaGVkdWxlTm90aWZpY2F0aW9uKSAtPiAoKSBBc3luYworICAgIFNldFNo
b3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKGVudW06dWludDhfdCBXZWJDb3Jl
OjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIGJsb2NraW5nTW9kZSkgLT4gKCkgQXN5bmMK
ICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggZmU5ZTJmZWE0M2YuLjJlYTNjYmQ3MmI0IDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3Bw
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5j
cHAKQEAgLTIyMzUsNyArMjIzNSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGljc1No
b3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoYm9vbCB2YWx1ZSwgSlNWYWx1ZVJlCiAgICAgaWYg
KG9ubHlPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbikKICAgICAgICAgbWVzc2FnZU5hbWUg
PSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTZXRTdGF0aXN0aWNzU2hv
dWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc09uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uIikp
OwogICAgIFdLUmV0YWluUHRyPFdLQm9vbGVhblJlZj4gbWVzc2FnZUJvZHkgPSBhZG9wdFdLKFdL
Qm9vbGVhbkNyZWF0ZSh2YWx1ZSkpOwotICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2Fn
ZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgp
LCBtZXNzYWdlQm9keS5nZXQoKSwgbnVsbHB0cik7CisgICAgV0tCdW5kbGVQb3N0TWVzc2FnZShJ
bmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBt
ZXNzYWdlQm9keS5nZXQoKSk7CiAgICAgbV9oYXNTZXRCbG9ja1RoaXJkUGFydHlDb29raWVzQ2Fs
bGJhY2sgPSB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24u
Y3BwCmluZGV4IDA5OGY1YmE3OGM3Li5mZDVmMmU5ZWVmMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTc0Nyw2ICs3NDcsMjAgQEAgdm9pZCBUZXN0SW52
b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYg
bWVzc2FnZU5hbWUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmIChXS1N0cmluZ0lz
RXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0U3RhdGlzdGljc1Nob3VsZEJsb2Nr
VGhpcmRQYXJ0eUNvb2tpZXNPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiIpKSB7CisgICAg
ICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tCb29sZWFuR2V0VHlwZUlE
KCkpOworICAgICAgICBXS0Jvb2xlYW5SZWYgdmFsdWUgPSBzdGF0aWNfY2FzdDxXS0Jvb2xlYW5S
ZWY+KG1lc3NhZ2VCb2R5KTsKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNl
dFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKFdLQm9vbGVhbkdldFZhbHVl
KHZhbHVlKSwgdHJ1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoV0tTdHJp
bmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldFN0YXRpc3RpY3NTaG91bGRC
bG9ja1RoaXJkUGFydHlDb29raWVzIikpIHsKKyAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1l
c3NhZ2VCb2R5KSA9PSBXS0Jvb2xlYW5HZXRUeXBlSUQoKSk7CisgICAgICAgIFdLQm9vbGVhblJl
ZiB2YWx1ZSA9IHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4obWVzc2FnZUJvZHkpOworICAgICAg
ICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhp
cmRQYXJ0eUNvb2tpZXMoV0tCb29sZWFuR2V0VmFsdWUodmFsdWUpLCBmYWxzZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyht
ZXNzYWdlTmFtZSwgIlJ1blVJUHJvY2Vzc1NjcmlwdCIpKSB7CiAgICAgICAgIFdLRGljdGlvbmFy
eVJlZiBtZXNzYWdlQm9keURpY3Rpb25hcnkgPSBzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+
KG1lc3NhZ2VCb2R5KTsKICAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHNjcmlwdEtl
eSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlNjcmlwdCIpKTsKQEAg
LTE1NTksMjAgKzE1NzMsNiBAQCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RJbnZvY2F0aW9u
OjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQgogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAgICAgCi0gICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENT
dHJpbmcobWVzc2FnZU5hbWUsICJTZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29v
a2llc09uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uIikpIHsKLSAgICAgICAgQVNTRVJUKFdL
R2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS0Jvb2xlYW5HZXRUeXBlSUQoKSk7Ci0gICAgICAg
IFdLQm9vbGVhblJlZiB2YWx1ZSA9IHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4obWVzc2FnZUJv
ZHkpOwotICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0U3RhdGlzdGljc1No
b3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoV0tCb29sZWFuR2V0VmFsdWUodmFsdWUpLCB0cnVl
KTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotICAgIAotICAgIGlmIChXS1N0cmlu
Z0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0U3RhdGlzdGljc1Nob3VsZEJs
b2NrVGhpcmRQYXJ0eUNvb2tpZXMiKSkgewotICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVz
c2FnZUJvZHkpID09IFdLQm9vbGVhbkdldFR5cGVJRCgpKTsKLSAgICAgICAgV0tCb29sZWFuUmVm
IHZhbHVlID0gc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihtZXNzYWdlQm9keSk7Ci0gICAgICAg
IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGly
ZFBhcnR5Q29va2llcyhXS0Jvb2xlYW5HZXRWYWx1ZSh2YWx1ZSksIGZhbHNlKTsKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgfQotICAgIAogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VU
RjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0U3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0
YVJlbW92YWxNb2RlIikpIHsKICAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5
KSA9PSBXS0Jvb2xlYW5HZXRUeXBlSUQoKSk7CiAgICAgICAgIFdLQm9vbGVhblJlZiB2YWx1ZSA9
IHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4obWVzc2FnZUJvZHkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387593</attachid>
            <date>2020-01-13 16:57:23 -0800</date>
            <delta_ts>2020-01-14 11:50:57 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>206108_avoid_sync_IPC_ads.patch</filename>
            <type>text/plain</type>
            <size>78801</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAKaW5kZXggYTEwMDE1Y2IxOTcuLmM1NjQzYmJm
Y2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmNwcApAQCAtODAsNyArODAsNyBAQCBT
dHJpbmcgQ29va2llSmFyOjpjb29raWVzKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1
cmwpIGNvbnN0CiAKICAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiByZXN1bHQ7CiAgICAgaWYg
KGF1dG8qIHNlc3Npb24gPSBtX3N0b3JhZ2VTZXNzaW9uUHJvdmlkZXItPnN0b3JhZ2VTZXNzaW9u
KCkpCi0gICAgICAgIHJlc3VsdCA9IHNlc3Npb24tPmNvb2tpZXNGb3JET00oZG9jdW1lbnQuZmly
c3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlE
LCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKKyAgICAgICAgcmVzdWx0ID0gc2Vzc2lv
bi0+Y29va2llc0ZvckRPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0
ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tp
ZXMsIFNob3VsZEFwcGx5SVRQQ29va2llQmxvY2tpbmdQb2xpY3k6Olllcyk7CiAgICAgZWxzZQog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIApAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQg
Q29va2llSmFyOjpzZXRDb29raWVzKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgY29vCiAgICAgfQogCiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX3N0
b3JhZ2VTZXNzaW9uUHJvdmlkZXItPnN0b3JhZ2VTZXNzaW9uKCkpCi0gICAgICAgIHNlc3Npb24t
PnNldENvb2tpZXNGcm9tRE9NKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVT
aXRlSW5mbyhkb2N1bWVudCksIHVybCwgZnJhbWVJRCwgcGFnZUlELCBjb29raWVTdHJpbmcpOwor
ICAgICAgICBzZXNzaW9uLT5zZXRDb29raWVzRnJvbURPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9y
Q29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwg
U2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1BvbGljeTo6WWVzLCBjb29raWVTdHJpbmcpOwog
ICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CkBAIC0xMzEsNyArMTMx
LDcgQEAgYm9vbCBDb29raWVKYXI6OmNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50JikgY29u
c3QKIHN0ZDo6cGFpcjxTdHJpbmcsIFNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4gQ29va2llSmFyOjpj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJh
bWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJ
bmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBp
ZiAoYXV0byogc2Vzc2lvbiA9IG1fc3RvcmFnZVNlc3Npb25Qcm92aWRlci0+c3RvcmFnZVNlc3Np
b24oKSkgewotICAgICAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiByZXN1bHQgPSBzZXNzaW9u
LT5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8s
IHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcyk7CisgICAgICAgIHN0
ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IHJlc3VsdCA9IHNlc3Npb24tPmNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdl
SUQsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9s
aWN5OjpZZXMpOwogICAgICAgICByZXR1cm4geyByZXN1bHQuZmlyc3QsIHJlc3VsdC5zZWNvbmQg
PyBTZWN1cmVDb29raWVzQWNjZXNzZWQ6OlllcyA6IFNlY3VyZUNvb2tpZXNBY2Nlc3NlZDo6Tm8g
fTsKICAgICB9CiAKQEAgLTE2NCw3ICsxNjQsNyBAQCBib29sIENvb2tpZUphcjo6Z2V0UmF3Q29v
a2llcyhjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8Qwog
ICAgIH0KIAogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVy
LT5zdG9yYWdlU2Vzc2lvbigpKQotICAgICAgICByZXR1cm4gc2Vzc2lvbi0+Z2V0UmF3Q29va2ll
cyhkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQp
LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgY29va2llcyk7CisgICAgICAgIHJldHVybiBzZXNzaW9u
LT5nZXRSYXdDb29raWVzKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRl
SW5mbyhkb2N1bWVudCksIHVybCwgZnJhbWVJRCwgcGFnZUlELCBTaG91bGRBcHBseUlUUENvb2tp
ZUJsb2NraW5nUG9saWN5OjpZZXMsIGNvb2tpZXMpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCmluZGV4IDJkMzUwN2RmMjM3Li41NDZjYTczNDdm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlk
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxp
ZGF0aW9uLmNwcApAQCAtMzQwLDcgKzM0MCw3IEBAIENhY2hlQ29udHJvbERpcmVjdGl2ZXMgcGFy
c2VDYWNoZUNvbnRyb2xEaXJlY3RpdmVzKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMpCiAK
IHN0YXRpYyBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
CiB7Ci0gICAgcmV0dXJuIHNlc3Npb24uY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUocmVx
dWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBTYW1lU2l0ZUluZm86OmNyZWF0ZShyZXF1ZXN0
KSwgcmVxdWVzdC51cmwoKSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIHJlcXVlc3QudXJs
KCkucHJvdG9jb2xJcygiaHR0cHMiKSA/IEluY2x1ZGVTZWN1cmVDb29raWVzOjpZZXMgOiBJbmNs
dWRlU2VjdXJlQ29va2llczo6Tm8pLmZpcnN0OworICAgIHJldHVybiBzZXNzaW9uLmNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgU2Ft
ZVNpdGVJbmZvOjpjcmVhdGUocmVxdWVzdCksIHJlcXVlc3QudXJsKCksIFdURjo6bnVsbG9wdCwg
V1RGOjpudWxsb3B0LCByZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoImh0dHBzIikgPyBJbmNsdWRl
U2VjdXJlQ29va2llczo6WWVzIDogSW5jbHVkZVNlY3VyZUNvb2tpZXM6Ok5vLCBTaG91bGRBcHBs
eUlUUENvb2tpZUJsb2NraW5nUG9saWN5OjpZZXMpLmZpcnN0OwogfQogCiBzdGF0aWMgU3RyaW5n
IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IENvb2tpZUphciogY29va2llSmFy
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAppbmRleCBlZWZi
ODcwZTRjYS4uMTk5M2FjM2U1YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaApAQCAtNzYsNiArNzYsNyBAQCBl
bnVtIGNsYXNzIEluY2x1ZGVTZWN1cmVDb29raWVzIDogYm9vbDsKIGVudW0gY2xhc3MgSW5jbHVk
ZUh0dHBPbmx5Q29va2llcyA6IGJvb2w7CiBlbnVtIGNsYXNzIFRoaXJkUGFydHlDb29raWVCbG9j
a2luZ01vZGUgOiB1aW50OF90IHsgQWxsLCBBbGxPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlv
biwgT25seUFjY29yZGluZ1RvUGVyRG9tYWluUG9saWN5IH07CiBlbnVtIGNsYXNzIEZpcnN0UGFy
dHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIDogdWludDhfdCB7IEFsbEJ1dENvb2tpZXMsIE5vbmUs
IEFsbEJ1dENvb2tpZXNMaXZlT25UZXN0aW5nVGltZW91dCwgQWxsQnV0Q29va2llc1JlcHJvVGVz
dGluZ1RpbWVvdXQgfTsKK2VudW0gY2xhc3MgU2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1Bv
bGljeSA6IGJvb2wgeyBObywgWWVzIH07CiAKIGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uKTsgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0xMjcsNyArMTI4LDcgQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgY29va2llc0VuYWJsZWQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldENvb2tpZShjb25zdCBDb29raWUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mLCBjb25zdCBVUkwmLCBjb25zdCBVUkwm
IG1haW5Eb2N1bWVudFVSTCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb29raWVzRnJv
bURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVS
TCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwg
Y29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb29raWVz
RnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiwgU2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1BvbGljeSwgY29uc3QgU3RyaW5nJikgY29u
c3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkZWxldGVDb29raWUoY29uc3QgQ29va2llJik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkZWxldGVDb29raWUoY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkZWxldGVBbGxDb29raWVz
KCk7CkBAIC0xMzcsMTEgKzEzOCwxMSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVj
dG9yPENvb2tpZT4gZ2V0QWxsQ29va2llcygpOwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxD
b29raWU+IGdldENvb2tpZXMoY29uc3QgVVJMJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBo
YXNDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJikgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRSYXdDb29raWVz
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwg
T3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBWZWN0
b3I8Q29va2llPiYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0UmF3Q29va2ll
cyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYs
IE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hv
dWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1BvbGljeSwgVmVjdG9yPENvb2tpZT4mKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZsdXNoQ29va2llU3RvcmUoKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKEhhc2hTZXQ8U3RyaW5nPiYgaG9z
dG5hbWVzKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29r
aWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29u
c3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+LCBJbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3Rk
OjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25h
bDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1
cmVDb29raWVzKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBi
b29sPiBjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+LCBJbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXBwbHlJVFBDb29raWVC
bG9ja2luZ1BvbGljeSkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFN0cmlu
ZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxGcmFtZUlkZW50
aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzLCBT
aG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5KSBjb25zdDsKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShjb25zdCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYpIGNvbnN0OwogCiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXRXaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25D
Rk5ldFdpbi5jcHAKaW5kZXggZWI4MWMwNTJlYmQuLjQ0YzQyZTdjOTA2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNG
TmV0V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcApAQCAtMTg5LDcgKzE4OSw3IEBAIHN0YXRpYyBD
RkFycmF5UmVmIGNyZWF0ZUNvb2tpZXMoQ0ZEaWN0aW9uYXJ5UmVmIGhlYWRlckZpZWxkcywgQ0ZV
UkxSZWYgdXJsKQogICAgIHJldHVybiBwYXJzZWRDb29raWVzOwogfQogCi12b2lkIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlm
aWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBjb25zdCBTdHJp
bmcmIHZhbHVlKSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNG
cm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3Qg
VVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1BvbGljeSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7
CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC0yMjUsNyArMjI1LDcgQEAgc3RhdGljIGJv
b2wgY29udGFpbnNTZWN1cmVDb29raWVzKENGQXJyYXlSZWYgY29va2llcykKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1
ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4g
ZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFwcGx5SVRQQ29va2llQmxvY2tpbmdQ
b2xpY3kpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9Q
QVJBTShwYWdlSUQpOwpAQCAtMjQwLDcgKzI0MCw3IEBAIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFy
CiAgICAgcmV0dXJuIHsgY29va2llU3RyaW5nLCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzIH07CiB9
CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1l
U2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFt
ZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2ll
cyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0
aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
cGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxk
QXBwbHlJVFBDb29raWVCbG9ja2luZ1BvbGljeSkgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0o
ZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC0yNjQsNyArMjY0LDcgQEAg
Ym9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNFbmFibGVkKCkgY29uc3QKICAgICBy
ZXR1cm4gcG9saWN5ID09IENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lPbmx5RnJvbU1h
aW5Eb2N1bWVudERvbWFpbiB8fCBwb2xpY3kgPT0gQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBv
bGljeUV4Y2x1c2l2ZWx5RnJvbU1haW5Eb2N1bWVudERvbWFpbiB8fCBwb2xpY3kgPT0gQ0ZIVFRQ
Q29va2llU3RvcmFnZUFjY2VwdFBvbGljeUFsd2F5czsKIH0KIAotYm9vbCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1l
U2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFt
ZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYgcmF3
Q29va2llcykgY29uc3QKK2Jvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVz
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1BvbGljeSwgVmVjdG9y
PENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQp
OwogICAgIFVOVVNFRF9QQVJBTShwYWdlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Q29jb2EubW0KaW5kZXggZGRjYTJjNjNjY2UuLjg5ZGIyNTBiNDNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KQEAgLTMwOCwyNiArMzA4LDI3IEBAIHN0YXRpYyBSZXRh
aW5QdHI8TlNBcnJheT4gZmlsdGVyQ29va2llcyhOU0FycmF5ICp1bmZpbHRlcmVkQ29va2llcywg
T3B0aW9uYWw8U2VjCiAgICAgcmV0dXJuIGZpbHRlcmVkQ29va2llczsKIH0KIAotc3RhdGljIE5T
QXJyYXkgKmNvb2tpZXNGb3JVUkwoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
LCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKQorc3RhdGljIE5TQXJyYXkgKmNvb2tpZXNGb3JV
UkwoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwg
T3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gcGFnZUlELCBTaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5IHNob3VsZEFwcGx5
SVRQQ29va2llQmxvY2tpbmdQb2xpY3kpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKLSAgICBpZiAoc2Vzc2lvbi5zaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0eSwg
dXJsLCBmcmFtZUlELCBwYWdlSUQpKQorICAgIGlmIChzaG91bGRBcHBseUlUUENvb2tpZUJsb2Nr
aW5nUG9saWN5ID09IFNob3VsZEFwcGx5SVRQQ29va2llQmxvY2tpbmdQb2xpY3k6OlllcyAmJiBz
ZXNzaW9uLnNob3VsZEJsb2NrQ29va2llcyhmaXJzdFBhcnR5LCB1cmwsIGZyYW1lSUQsIHBhZ2VJ
RCkpCiAgICAgICAgIHJldHVybiBuaWw7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlE
KTsKICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKKyAgICBVTlVTRURfUEFSQU0oc2hvdWxkQXBw
bHlJVFBDb29raWVCbG9ja2luZ1BvbGljeSk7CiAjZW5kaWYKICAgICByZXR1cm4gaHR0cENvb2tp
ZXNGb3JVUkwoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCksIGZpcnN0UGFydHksIHNhbWVT
aXRlSW5mbywgdXJsKTsKIH0KIAogZW51bSBJbmNsdWRlSFRUUE9ubHlPck5vdCB7IERvTm90SW5j
bHVkZUhUVFBPbmx5LCBJbmNsdWRlSFRUUE9ubHkgfTsKLXN0YXRpYyBzdGQ6OnBhaXI8U3RyaW5n
LCBib29sPiBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0
ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQs
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVIVFRQT25seU9yTm90IGlu
Y2x1ZGVIVFRQT25seSwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMp
CitzdGF0aWMgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvclNlc3Npb24oY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8
RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBJbmNsdWRlSFRUUE9ubHlPck5vdCBpbmNsdWRlSFRUUE9ubHksIEluY2x1ZGVTZWN1cmVDb29r
aWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9s
aWN5IHNob3VsZEFwcGx5SVRQQ29va2llQmxvY2tpbmdQb2xpY3kgPSBTaG91bGRBcHBseUlUUENv
b2tpZUJsb2NraW5nUG9saWN5OjpZZXMpCiB7CiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxl
Z2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwogCiAgICAgQkVHSU5f
QkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCi0gICAgTlNBcnJheSAqY29va2llcyA9IGNvb2tpZXNG
b3JVUkwoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBh
Z2VJRCk7CisgICAgTlNBcnJheSAqY29va2llcyA9IGNvb2tpZXNGb3JVUkwoc2Vzc2lvbiwgZmly
c3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkQXBwbHlJ
VFBDb29raWVCbG9ja2luZ1BvbGljeSk7CiAgICAgaWYgKCFbY29va2llcyBjb3VudF0pCiAgICAg
ICAgIHJldHVybiB7IFN0cmluZygpLCBmYWxzZSB9OyAvLyBSZXR1cm4gYSBudWxsIHN0cmluZywg
bm90IGFuIGVtcHR5IG9uZSB0aGF0IFN0cmluZ0J1aWxkZXIgd291bGQgY3JlYXRlIGJlbG93Lgog
CkBAIC0zNzcsMTQgKzM3OCwxNCBAQCBzdGF0aWMgdm9pZCBkZWxldGVBbGxIVFRQQ29va2llcyhD
RkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tpZVN0b3JhZ2UpCiAgICAgQ0ZIVFRQQ29va2llU3Rv
cmFnZURlbGV0ZUFsbENvb2tpZXMoY29va2llU3RvcmFnZSk7CiB9CiAKLXN0ZDo6cGFpcjxTdHJp
bmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwm
IHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2ll
cykgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYg
c2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29v
a2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1Bv
bGljeSBzaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5KSBjb25zdAogewotICAgIHJl
dHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1
cmwsIGZyYW1lSUQsIHBhZ2VJRCwgRG9Ob3RJbmNsdWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVD
b29raWVzKTsKKyAgICByZXR1cm4gY29va2llc0ZvclNlc3Npb24oKnRoaXMsIGZpcnN0UGFydHks
IHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIERvTm90SW5jbHVkZUhUVFBPbmx5
LCBpbmNsdWRlU2VjdXJlQ29va2llcywgc2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1BvbGlj
eSk7CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZy
YW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwg
SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBh
aXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZy
YW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29r
aWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9s
aWN5IHNob3VsZEFwcGx5SVRQQ29va2llQmxvY2tpbmdQb2xpY3kpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVy
bCwgZnJhbWVJRCwgcGFnZUlELCBJbmNsdWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVz
KTsKKyAgICByZXR1cm4gY29va2llc0ZvclNlc3Npb24oKnRoaXMsIGZpcnN0UGFydHksIHNhbWVT
aXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIEluY2x1ZGVIVFRQT25seSwgaW5jbHVkZVNl
Y3VyZUNvb2tpZXMsIHNob3VsZEFwcGx5SVRQQ29va2llQmxvY2tpbmdQb2xpY3kpOwogfQogCiBz
dGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5JiBo
ZWFkZXJGaWVsZFByb3h5KSBjb25zdApAQCAtMzkyLDEyICszOTMsMjEgQEAgc3RkOjpwYWlyPFN0
cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShjb24KICAgICByZXR1cm4gY29va2llc0ZvclNlc3Npb24oKnRoaXMsIGhlYWRlckZp
ZWxkUHJveHkuZmlyc3RQYXJ0eSwgaGVhZGVyRmllbGRQcm94eS5zYW1lU2l0ZUluZm8sIGhlYWRl
ckZpZWxkUHJveHkudXJsLCBoZWFkZXJGaWVsZFByb3h5LmZyYW1lSUQsIGhlYWRlckZpZWxkUHJv
eHkucGFnZUlELCBJbmNsdWRlSFRUUE9ubHksIGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNlY3Vy
ZUNvb2tpZXMpOwogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zy
b21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRl
SW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHIp
IGNvbnN0Cit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29u
c3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1BvbGlj
eSBzaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5LCBjb25zdCBTdHJpbmcmIGNvb2tp
ZVN0cikgY29uc3QKIHsKICAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJp
dmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VY
Q0VQVElPTlM7CiAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIGlm
IChzaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5ID09IFNob3VsZEFwcGx5SVRQQ29v
a2llQmxvY2tpbmdQb2xpY3k6OlllcyAmJiBzaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0eSwg
dXJsLCBmcmFtZUlELCBwYWdlSUQpKQorICAgICAgICByZXR1cm47CisjZWxzZQorICAgIFVOVVNF
RF9QQVJBTShmcmFtZUlEKTsKKyAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKKyAgICBVTlVTRURf
UEFSQU0oc2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1BvbGljeSk7CisjZW5kaWYKKwogICAg
IC8vIDxyZGFyOi8vcHJvYmxlbS81NjMyODgzPiBPbiAxMC41LCBOU0hUVFBDb29raWVTdG9yYWdl
IHdvdWxkIHN0b3JlIGFuIGVtcHR5IGNvb2tpZSwKICAgICAvLyB3aGljaCB3b3VsZCBiZSBzZW50
IGFzICJDb29raWU6ID0iLgogICAgIGlmIChjb29raWVTdHIuaXNFbXB0eSgpKQpAQCAtNDIzLDE0
ICs0MzMsNiBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00o
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lUwogI2VuZGlmCiAgICAgQVNTRVJUKFtm
aWx0ZXJlZENvb2tpZXMuZ2V0KCkgY291bnRdIDw9IDEpOwogCi0jaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKLSAgICBpZiAoc2hvdWxkQmxvY2tDb29raWVzKGZpcnN0UGFydHks
IHVybCwgZnJhbWVJRCwgcGFnZUlEKSkKLSAgICAgICAgcmV0dXJuOwotI2Vsc2UKLSAgICBVTlVT
RURfUEFSQU0oZnJhbWVJRCk7Ci0gICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7Ci0jZW5kaWYKLQog
ICAgIHNldEhUVFBDb29raWVzRm9yVVJMKGNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgZmlsdGVyZWRD
b29raWVzLmdldCgpLCBjb29raWVVUkwsIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbyk7CiAKICAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwpAQCAtNDU3LDEyICs0NTksMTIgQEAgYm9vbCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNFbmFibGVkKCkgY29uc3QKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNv
bnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25z
dAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1BvbGljeSBzaG91bGRB
cHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5LCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykg
Y29uc3QKIHsKICAgICByYXdDb29raWVzLmNsZWFyKCk7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19F
WENFUFRJT05TOwogCi0gICAgTlNBcnJheSAqY29va2llcyA9IGNvb2tpZXNGb3JVUkwoKnRoaXMs
IGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQpOworICAgIE5T
QXJyYXkgKmNvb2tpZXMgPSBjb29raWVzRm9yVVJMKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0
ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5n
UG9saWN5KTsKICAgICBOU1VJbnRlZ2VyIGNvdW50ID0gW2Nvb2tpZXMgY291bnRdOwogICAgIHJh
d0Nvb2tpZXMucmVzZXJ2ZUNhcGFjaXR5KGNvdW50KTsKICAgICBmb3IgKE5TVUludGVnZXIgaSA9
IDA7IGkgPCBjb3VudDsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAK
aW5kZXggZjJhMTkwMzU2MWEuLjRjMWU5YWQ2NGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbkN1cmwuY3BwCkBAIC04MCw3ICs4MCw3IEBAIENvb2tpZUphckRCJiBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmNvb2tpZURhdGFiYXNlKCkgY29uc3QKICAgICByZXR1cm4gbV9jb29raWVEYXRh
YmFzZTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9N
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8s
IGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0Cit2
b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1BvbGljeSwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkgY29uc3QKIHsKICAgICBjb29raWVTdG9yYWdlKCkuc2V0Q29va2llc0Zy
b21ET00oKnRoaXMsIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdl
SUQsIHZhbHVlKTsKIH0KQEAgLTkwLDcgKzkwLDcgQEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmNvb2tpZXNFbmFibGVkKCkgY29uc3QKICAgICByZXR1cm4gY29va2llU3RvcmFnZSgpLmNv
b2tpZXNFbmFibGVkKCp0aGlzKTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQs
IEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3RkOjpw
YWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNv
bnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1
cmVDb29raWVzLCBTaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5KSBjb25zdAogewog
ICAgIHJldHVybiBjb29raWVTdG9yYWdlKCkuY29va2llc0ZvckRPTSgqdGhpcywgZmlyc3RQYXJ0
eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tp
ZXMpOwogfQpAQCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpo
YXNDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsCiAgICAg
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogfQogCi1ib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVy
PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBWZWN0b3I8Q29va2ll
PiYgcmF3Q29va2llcykgY29uc3QKK2Jvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdD
b29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0
ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQs
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNob3VsZEFwcGx5SVRQQ29va2llQmxv
Y2tpbmdQb2xpY3ksIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAogewogICAgIHJl
dHVybiBjb29raWVTdG9yYWdlKCkuZ2V0UmF3Q29va2llcygqdGhpcywgZmlyc3RQYXJ0eSwgc2Ft
ZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgcmF3Q29va2llcyk7CiB9CkBAIC0xNzAs
NyArMTcwLDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmZsdXNoQ29va2llU3RvcmUo
KQogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIFdlYktpdCB0byB1c2UuCiB9CiAKLXN0ZDo6
cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8m
IHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4g
ZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29s
PiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNv
bnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1
cmVDb29raWVzLCBTaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5KSBjb25zdAogewog
ICAgIHJldHVybiBjb29raWVTdG9yYWdlKCkuY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
KnRoaXMsIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGlu
Y2x1ZGVTZWN1cmVDb29raWVzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNw
cAppbmRleCAzZmI4ODkyYzc5Zi4uNjYyODVkZGEwMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uU291cC5jcHAKQEAgLTI2MSw3ICsyNjEsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaHR0
cE9ubHlDb29raWVFeGlzdHMoY29uc3QgR1NMaXN0KiBjb29raWVzLCBjb25zdCBnY2hhciogbmFt
ZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNl
dENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZv
JiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QK
K3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25h
bDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdl
SUQsIFNob3VsZEFwcGx5SVRQQ29va2llQmxvY2tpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYgdmFs
dWUpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJB
TShwYWdlSUQpOwpAQCAtNDMyLDcgKzQzMiw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpoYXNDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsCiAg
ICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogfQogCi1ib29sIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQs
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdDb29r
aWVzKSBjb25zdAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwg
T3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gcGFnZUlELCBTaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5LCBWZWN0b3I8Q29v
a2llPiYgcmF3Q29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZmlyc3RQYXJ0eSk7
CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwpAQCAtNTAyLDcgKzUwMiw3IEBAIHN0YXRpYyBz
dGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlCiAgICAgcmV0dXJuIHsgU3RyaW5nOjpmcm9tVVRGOChjb29raWVIZWFk
ZXIuZ2V0KCkpLCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzIH07CiB9CiAKLXN0ZDo6cGFpcjxTdHJp
bmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25h
bDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdl
SUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3Rk
OjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9N
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMs
IFNob3VsZEFwcGx5SVRQQ29va2llQmxvY2tpbmdQb2xpY3kpIGNvbnN0CiB7CiAgICAgVU5VU0VE
X1BBUkFNKGZpcnN0UGFydHkpOwogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKQEAgLTUxMCw3
ICs1MTAsNyBAQCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcgogICAgIHJldHVybiBjb29raWVzRm9y
U2Vzc2lvbigqdGhpcywgdXJsLCBmYWxzZSwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogfQogCi1z
dGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5j
bHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFs
PEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFwcGx5
SVRQQ29va2llQmxvY2tpbmdQb2xpY3kpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZpcnN0
UGFydHkpOwogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKaW5kZXggMmI2MDc4OTZjOWYuLjRjMDE5YTViM2NkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcApAQCAtNTY0LDEyICs1NjQsMTIgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVzQXNDT1JTRW5hYmxlZChWZWN0b3I8U3RyaW4K
ICAgICAgICAgbV9zY2hlbWVSZWdpc3RyeS0+cmVnaXN0ZXJVUkxTY2hlbWVBc0NPUlNFbmFibGVk
KFdURk1vdmUoc2NoZW1lKSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUlu
Zm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmll
cj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3Vy
ZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3Ry
aW5nIGNvb2tpZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0Zv
ckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJ
bmZvLCBjb25zdCBVUkwmIHVybCwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNo
b3VsZEFwcGx5SVRQQ29va2llQmxvY2tpbmdQb2xpY3kgc2hvdWxkQXBwbHlJVFBDb29raWVCbG9j
a2luZ1BvbGljeSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBi
b29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
YXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oKTsKICAgICBpZiAo
IW5ldHdvcmtTdG9yYWdlU2Vzc2lvbikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVy
KHsgfSwgZmFsc2UpOwotICAgIGF1dG8gcmVzdWx0ID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5j
b29raWVzRm9yRE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdl
SUQsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKKyAgICBhdXRvIHJlc3VsdCA9IG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbi0+Y29va2llc0ZvckRPTShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwg
ZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcywgc2hvdWxkQXBwbHlJVFBDb29r
aWVCbG9ja2luZ1BvbGljeSk7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykg
JiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3Jr
U2Vzc2lvbigpKSB7CiAgICAgICAgIGlmIChzZXNzaW9uLT5zaG91bGRMb2dDb29raWVJbmZvcm1h
dGlvbigpKQpAQCAtNTc5LDEyICs1NzksMTIgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFMKICAg
ICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdC5maXJzdCksIHJlc3VsdC5zZWNvbmQp
OwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJv
bURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJ
bmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBjb25zdCBTdHJpbmcmIGNv
b2tpZVN0cmluZykKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENvb2tp
ZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1l
U2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBTaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9s
aWN5IHNob3VsZEFwcGx5SVRQQ29va2llQmxvY2tpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYgY29v
a2llU3RyaW5nKQogewogICAgIGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VT
ZXNzaW9uKCk7CiAgICAgaWYgKCFuZXR3b3JrU3RvcmFnZVNlc3Npb24pCiAgICAgICAgIHJldHVy
bjsKLSAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPnNldENvb2tpZXNGcm9tRE9NKGZpcnN0UGFy
dHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGNvb2tpZVN0cmluZyk7Cisg
ICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5zZXRDb29raWVzRnJvbURPTShmaXJzdFBhcnR5LCBz
YW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRBcHBseUlUUENvb2tpZUJs
b2NraW5nUG9saWN5LCBjb29raWVTdHJpbmcpOwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpICYmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGlmIChhdXRvKiBzZXNzaW9u
ID0gbmV0d29ya1Nlc3Npb24oKSkgewogICAgICAgICBpZiAoc2Vzc2lvbi0+c2hvdWxkTG9nQ29v
a2llSW5mb3JtYXRpb24oKSkKQEAgLTYwMSwyMiArNjAxLDIyIEBAIHZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNFbmFibGVkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+CiAgICAgY29tcGxldGlvbkhhbmRsZXIobmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5jb29r
aWVzRW5hYmxlZCgpKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZy
YW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwg
SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU3RyaW5nLCBib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNv
bnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1
cmVDb29raWVzLCBTaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5IHNob3VsZEFwcGx5
SVRQQ29va2llQmxvY2tpbmdQb2xpY3ksIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nLCBi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvKiBuZXR3b3JrU3RvcmFnZVNl
c3Npb24gPSBzdG9yYWdlU2Vzc2lvbigpOwogICAgIGlmICghbmV0d29ya1N0b3JhZ2VTZXNzaW9u
KQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9LCBmYWxzZSk7Ci0gICAgYXV0
byByZXN1bHQgPSBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGlu
Y2x1ZGVTZWN1cmVDb29raWVzKTsKKyAgICBhdXRvIHJlc3VsdCA9IG5ldHdvcmtTdG9yYWdlU2Vz
c2lvbi0+Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJ
bmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIHNob3VsZEFw
cGx5SVRQQ29va2llQmxvY2tpbmdQb2xpY3kpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUocmVzdWx0LmZpcnN0KSwgcmVzdWx0LnNlY29uZCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFs
PEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omdl
dFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNh
bWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJh
bWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXBwbHlJVFBDb29r
aWVCbG9ja2luZ1BvbGljeSBzaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VT
ZXNzaW9uKCk7CiAgICAgaWYgKCFuZXR3b3JrU3RvcmFnZVNlc3Npb24pCiAgICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IHJl
c3VsdDsKLSAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmdldFJhd0Nvb2tpZXMoZmlyc3RQYXJ0
eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgcmVzdWx0KTsKKyAgICBuZXR3
b3JrU3RvcmFnZVNlc3Npb24tPmdldFJhd0Nvb2tpZXMoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZv
LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1BvbGlj
eSwgcmVzdWx0KTsKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdCkpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggMGU2ZTgyMzJiNzIuLjE2MDYzMGM4YjdmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC01OCw2ICs1OCw3IEBAIGNsYXNzIFJlc291cmNl
RXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NQ
cm9tcHRXYXNTaG93biA6IGJvb2w7CiBlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVk
IDogYm9vbDsKK2VudW0gY2xhc3MgU2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1BvbGljeSA6
IGJvb2w7CiBzdHJ1Y3QgU2FtZVNpdGVJbmZvOwogCiBlbnVtIGNsYXNzIEluY2x1ZGVTZWN1cmVD
b29raWVzIDogYm9vbDsKQEAgLTE5NywxMSArMTk4LDExIEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IHJlZ2lzdGVyVVJMU2NoZW1lc0FzQ09SU0VuYWJsZWQoVmVjdG9yPFN0cmluZz4mJiBzY2hlbWVz
KTsKIAotICAgIHZvaWQgY29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29y
ZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNv
b2tpZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmKTsKLSAgICB2b2lkIHNl
dENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2Ft
ZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
PiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBjb25zdCBTdHJpbmcmKTsKKyAg
ICB2b2lkIGNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3Jl
OjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcywgV2Vi
Q29yZTo6U2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1BvbGljeSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+
JiYpOworICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTaG91bGRBcHBseUlU
UENvb2tpZUJsb2NraW5nUG9saWN5LCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGNvb2tpZXNF
bmFibGVkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgY29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXI+LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIFdlYkNvcmU6Oklu
Y2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVT
dHJpbmcsIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkKT4mJik7Ci0gICAgdm9pZCBnZXRSYXdD
b29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZv
JiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9u
YWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+JiYpPiYmKTsKKyAgICB2b2lkIGNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJ
bmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgT3B0
aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29v
a2llcywgV2ViQ29yZTo6U2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1BvbGljeSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIHNlY3VyZUNvb2tpZXNB
Y2Nlc3NlZCk+JiYpOworICAgIHZvaWQgZ2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
PiwgV2ViQ29yZTo6U2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1BvbGljeSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYmKT4mJik7CiAgICAgdm9pZCBk
ZWxldGVDb29raWUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKTsKIAogICAg
IHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHBhdGgs
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGIwZGFhM2Mz
ZjA4Li43MTJiOTQyMGYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCkBAIC0zNCwxMSArMzQsMTEgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFN0YXJ0RG93bmxvYWQoV2ViS2l0OjpE
b3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBT
dHJpbmcgc3VnZ2VzdGVkTmFtZSkKICAgICBDb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxv
YWQodWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIFdlYktpdDo6RG93bmxvYWRJ
RCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKIAotICAgIENvb2tpZXNGb3JET00oVVJMIGZpcnN0
UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJs
LCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRl
U2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmluZyBjb29raWVTdHJp
bmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykgU3luY2hyb25vdXMKLSAgICBTZXRDb29r
aWVzRnJvbURPTShVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBz
YW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4g
ZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU3RyaW5n
IGNvb2tpZVN0cmluZykKKyAgICBDb29raWVzRm9yRE9NKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3Qg
V2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgZW51
bTpib29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVz
LCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1BvbGljeSBz
aG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5KSAtPiAoU3RyaW5nIGNvb2tpZVN0cmlu
ZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKSBTeW5jaHJvbm91cworICAgIFNldENvb2tp
ZXNGcm9tRE9NKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNh
bWVTaXRlSW5mbywgVVJMIHVybCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZEFw
cGx5SVRQQ29va2llQmxvY2tpbmdQb2xpY3kgc2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1Bv
bGljeSwgU3RyaW5nIGNvb2tpZVN0cmluZykKICAgICBDb29raWVzRW5hYmxlZCgpIC0+IChib29s
IGVuYWJsZWQpIFN5bmNocm9ub3VzCi0gICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
VVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZv
LCBVUkwgdXJsLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9w
dGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3Jl
OjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmluZyBj
b29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykgU3luY2hyb25vdXMKLSAg
ICBHZXRSYXdDb29raWVzKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJ
bmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyPiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAt
PiAoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgU3luY2hyb25vdXMKKyAgICBDb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6
OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
IHBhZ2VJRCwgZW51bTpib29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVT
ZWN1cmVDb29raWVzLCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkQXBwbHlJVFBDb29raWVCbG9j
a2luZ1BvbGljeSBzaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5KSAtPiAoU3RyaW5n
IGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKSBTeW5jaHJvbm91cwor
ICAgIEdldFJhd0Nvb2tpZXMoVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0
ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQs
IGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5IHNo
b3VsZEFwcGx5SVRQQ29va2llQmxvY2tpbmdQb2xpY3kpIC0+IChWZWN0b3I8V2ViQ29yZTo6Q29v
a2llPiBjb29raWVzKSBTeW5jaHJvbm91cwogICAgIERlbGV0ZUNvb2tpZShVUkwgdXJsLCBTdHJp
bmcgY29va2llTmFtZSkKIAogICAgIFJlZ2lzdGVyRmlsZUJsb2JVUkwoVVJMIHVybCwgU3RyaW5n
IHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGV4dGVuc2lvbkhhbmRsZSwg
U3RyaW5nIGNvbnRlbnRUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGRmMDlmNjRmNjZlLi43Y2Y3YWVl
NWJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMTE5NCw3ICsxMTk0LDcgQEAgc3RhdGljIHZvaWQgbG9n
Q29va2llSW5mb3JtYXRpb25JbnRlcm5hbChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYg
Y29ubmVjdGkKICAgICBBU1NFUlQoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRMb2dDb29r
aWVJbmZvcm1hdGlvbihjb25uZWN0aW9uLCBuZXR3b3JrU3RvcmFnZVNlc3Npb24uc2Vzc2lvbklE
KCkpKTsKIAogICAgIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXM7Ci0gICAgaWYgKCFu
ZXR3b3JrU3RvcmFnZVNlc3Npb24uZ2V0UmF3Q29va2llcyhmaXJzdFBhcnR5LCBzYW1lU2l0ZUlu
Zm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBjb29raWVzKSkKKyAgICBpZiAoIW5ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5nZXRSYXdDb29raWVzKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBm
cmFtZUlELCBwYWdlSUQsIFNob3VsZEFwcGx5SVRQQ29va2llQmxvY2tpbmdQb2xpY3k6Olllcywg
Y29va2llcykpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gZXNjYXBlZFVSTCA9IGVzY2Fw
ZUZvckpTT04odXJsLnN0cmluZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAK
aW5kZXggZDdkYTQ5ZmY1NDUuLmY5MTdmNTE3YjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcApAQCAtNjgsNyArNjgsOSBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25Q
YXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29k
ZXIgPDwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljczsKICAg
ICBlbmNvZGVyIDw8IGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU7CiAgICAg
ZW5jb2RlciA8PCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2U7
CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBlbmNvZGVyIDw8IHRo
aXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU7CisjZW5kaWYKICAgICBlbmNvZGVyIDw8IGZpcnN0
UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOwogCiAgICAgZW5jb2RlciA8PCBuZXR3b3JrQ2Fj
aGVEaXJlY3RvcnkgPDwgbmV0d29ya0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwpAQCAt
MjAyLDEwICsyMDQsMTIgQEAgT3B0aW9uYWw8TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRl
cnM+IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWMKICAgICBpZiAoIXJlc291
cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNvdXJjZSkKICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKIAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAg
ICAgT3B0aW9uYWw8V2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZT4gdGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsKICAgICBkZWNvZGVyID4+IHRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGU7CiAgICAgaWYgKCF0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKQogICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworI2VuZGlmCiAKICAgICBPcHRpb25hbDxXZWJDb3Jl
OjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZT4gZmlyc3RQYXJ0eVdlYnNpdGVEYXRh
UmVtb3ZhbE1vZGU7CiAgICAgZGVjb2RlciA+PiBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFs
TW9kZTsKQEAgLTMwMCw3ICszMDQsOSBAQCBPcHRpb25hbDxOZXR3b3JrU2Vzc2lvbkNyZWF0aW9u
UGFyYW1ldGVycz4gTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OmRlYwogICAgICAg
ICAsIFdURk1vdmUoKmVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NMb2dUZXN0aW5nRXZlbnQp
CiAgICAgICAgICwgV1RGTW92ZSgqc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcykKICAgICAgICAgLCBXVEZNb3ZlKCplbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGVidWdNb2RlKQorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAg
ICAgICwgV1RGTW92ZSgqdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSkKKyNlbmRpZgogICAg
ICAgICAsIFdURk1vdmUoKmZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKQogICAgICAg
ICAsIFdURk1vdmUoKmRldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNFbmFibGVkKQogICAgICAg
ICAsIFdURk1vdmUoKmFsbExvYWRzQmxvY2tlZEJ5RGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9u
c0ZvclRlc3RpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggMGQ1N2FiNzEy
MjUuLjgyZTk1ZjE5ODU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC04Niw3
ICs4Niw5IEBAIHN0cnVjdCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAg
Ym9vbCBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50IHsgZmFsc2Ug
fTsKICAgICBib29sIHNob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MgeyB0cnVlIH07CiAgICAgYm9vbCBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdN
b2RlIHsgZmFsc2UgfTsKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAg
IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgdGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZSB7IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbCB9
OworI2VuZGlmCiAgICAgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUg
Zmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgeyBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vi
c2l0ZURhdGFSZW1vdmFsTW9kZTo6QWxsQnV0Q29va2llcyB9OwogICAgIGJvb2wgZGV2aWNlTWFu
YWdlbWVudFJlc3RyaWN0aW9uc0VuYWJsZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgYWxsTG9hZHNC
bG9ja2VkQnlEZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRm9yVGVzdGluZyB7IGZhbHNlIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCBmOGJjZTE0NTUw
Ny4uMGU1ODQ4MWUyOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eQpAQCAtNTg0LDYgKzU4NCw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAg
ICAnV2ViQ29yZTo6U2VydmljZVdvcmtlclN0YXRlJzogWyc8V2ViQ29yZS9TZXJ2aWNlV29ya2Vy
VHlwZXMuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlNoaXBwaW5nQ29udGFjdFVwZGF0ZSc6IFsn
PFdlYkNvcmUvQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QuaD4nXSwKICAgICAgICAgJ1dl
YkNvcmU6OlNoaXBwaW5nTWV0aG9kVXBkYXRlJzogWyc8V2ViQ29yZS9BcHBsZVBheVNlc3Npb25Q
YXltZW50UmVxdWVzdC5oPiddLAorICAgICAgICAnV2ViQ29yZTo6U2hvdWxkQXBwbHlJVFBDb29r
aWVCbG9ja2luZ1BvbGljeSc6IFsnPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+J10s
CiAgICAgICAgICdXZWJDb3JlOjpTaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQnOiBbJzxXZWJDb3Jl
L1NlcnZpY2VXb3JrZXJUeXBlcy5oPiddLAogICAgICAgICAnV2ViQ29yZTo6U2hvdWxkU2FtcGxl
JzogWyc8V2ViQ29yZS9EaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oPiddLAogICAgICAgICAnV2Vi
Q29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duJzogWyc8V2ViQ29yZS9Eb2N1bWVudFN0
b3JhZ2VBY2Nlc3MuaD4nXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBy
b2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9j
ZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oCmluZGV4IGUwOTQwMGE3YWFhLi4zMGRiNGM5YjUzOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFt
ZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzRGF0YVN0b3JlUGFy
YW1ldGVycy5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlNh
bmRib3hFeHRlbnNpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bi5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgogCkBAIC00NSw2ICs0Niw5IEBAIHN0cnVjdCBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVy
cyB7CiAgICAgU3RyaW5nIGphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5OwogICAgIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSBqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZTsKICAgICBIYXNoTWFwPHVuc2lnbmVkLCBXYWxsVGltZT4gcGx1Z0luQXV0
b1N0YXJ0T3JpZ2luSGFzaGVzOworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
CisgICAgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSB0aGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdNb2RlIHsgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6
QWxsIH07CisjZW5kaWYKICAgICBib29sIHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkIHsg
ZmFsc2UgfTsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKQEAgLTY3LDYgKzcxLDkgQEAgdm9pZCBXZWJQcm9jZXNzRGF0YVN0b3JlUGFy
YW1ldGVyczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBq
YXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeTsKICAgICBlbmNvZGVyIDw8IGphdmFTY3Jp
cHRDb25maWd1cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGVuY29kZXIgPDwg
cGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzOworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCisgICAgZW5jb2RlciA8PCB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOwor
I2VuZGlmCiAgICAgZW5jb2RlciA8PCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDsKIH0K
IApAQCAtMTMyLDYgKzEzOSwxMyBAQCBPcHRpb25hbDxXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1l
dGVycz4gV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnM6OmRlY29kZShEZQogICAgIGlmICgh
cGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwogCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBPcHRpb25hbDxX
ZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlPiB0aGlyZFBhcnR5Q29va2llQmxv
Y2tpbmdNb2RlOworICAgIGRlY29kZXIgPj4gdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsK
KyAgICBpZiAoIXRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisjZW5kaWYKKwogICAgIGJvb2wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Vu
YWJsZWQgPSBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTE1MCw2ICsx
NjQsOSBAQCBPcHRpb25hbDxXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycz4gV2ViUHJvY2Vz
c0RhdGFTdG9yZVBhcmFtZXRlcnM6OmRlY29kZShEZQogICAgICAgICBXVEZNb3ZlKGphdmFTY3Jp
cHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KSwKICAgICAgICAgV1RGTW92ZSgqamF2YVNjcmlwdENv
bmZpZ3VyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpLAogICAgICAgICBXVEZNb3ZlKCpw
bHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMpLAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCisgICAgICAgICp0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlLAorI2VuZGlm
CiAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkCiAgICAgfTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwCmluZGV4IGYzNmI3OWNlNTQ1Li41ZmJkMzYxMzAzOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBA
IC0xMDc4LDExICsxMDc4LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRTaG91bGRE
b3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmcoYm9vbCBlbmFibGVkLCBDb20KIAogdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpzZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGlu
ZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUg
YmxvY2tpbmdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7Ci0gICAgaWYgKCFjYW5TZW5kTWVzc2FnZSgpKSB7Ci0gICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCiAgICAgc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5
Q29va2llc0ZvclRlc3Rpbmcoc2Vzc2lvbklELCBibG9ja2luZ01vZGUpLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcAppbmRleCAzMDY0NGJiZDk3ZS4uODFjZDVkNmM2YmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTU3Niw3ICs1NzYsOSBAQCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0
ZURhdGFTdG9yZSogd2l0aAogICAgIGJvb2wgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0xv
Z1Rlc3RpbmdFdmVudCA9IGZhbHNlOwogICAgIGJvb2wgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCA9
IHRydWU7CiAgICAgYm9vbCBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlID0g
ZmFsc2U7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBXZWJDb3Jl
OjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01v
ZGUgPSBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGw7CisjZW5kaWYK
ICAgICBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSBmaXJzdFBhcnR5
V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA9IFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJl
bW92YWxNb2RlOjpBbGxCdXRDb29raWVzOwogICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IG1hbnVhbFByZXZhbGVudFJlc291cmNlIHsgfTsKICAgICBpZiAod2l0aFdlYnNpdGVEYXRhU3Rv
cmUpIHsKQEAgLTU4OCw3ICs1OTAsOSBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNz
UG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0aAogICAgICAg
ICAgICAgYXV0byBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMgPSB3aXRoV2Vic2l0ZURhdGFTdG9y
ZS0+cGFyYW1ldGVycygpLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVyczsKICAgICAgICAgICAgIHNo
b3VsZEluY2x1ZGVMb2NhbGhvc3QgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuc2hvdWxkSW5j
bHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljczsKICAgICAgICAgICAgIGVuYWJs
ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRl
cnMuZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZTsKKyNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgICAgICAgICAgdGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nTW9kZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy50aGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlOworI2VuZGlmCiAgICAgICAgICAgICBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFs
TW9kZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5maXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1v
dmFsTW9kZTsKICAgICAgICAgICAgIG1hbnVhbFByZXZhbGVudFJlc291cmNlID0gbmV0d29ya1Nl
c3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNv
dXJjZTsKICAgICAgICAgfQpAQCAtNjEwLDcgKzYxNCw5IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkm
IFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3
aXRoCiAgICAgICAgICAgICBhdXRvIG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycyA9IG1fd2Vic2l0
ZURhdGFTdG9yZS0+cGFyYW1ldGVycygpLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVyczsKICAgICAg
ICAgICAgIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMu
c2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljczsKICAgICAgICAg
ICAgIGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUgPSBuZXR3b3JrU2Vzc2lv
blBhcmFtZXRlcnMuZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZTsKKyNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgICAgICAgICAgdGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy50aGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdNb2RlOworI2VuZGlmCiAgICAgICAgICAgICBmaXJzdFBhcnR5V2Vic2l0ZURh
dGFSZW1vdmFsTW9kZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5maXJzdFBhcnR5V2Vic2l0
ZURhdGFSZW1vdmFsTW9kZTsKICAgICAgICAgICAgIG1hbnVhbFByZXZhbGVudFJlc291cmNlID0g
bmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2
YWxlbnRSZXNvdXJjZTsKICAgICAgICAgfQpAQCAtNjM1LDcgKzY0MSw5IEBAIE5ldHdvcmtQcm9j
ZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2VzcyhXZWJzaXRlRGF0
YVN0b3JlKiB3aXRoCiAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5u
ZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0xvZ1Rl
c3RpbmdFdmVudCA9IGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NMb2dUZXN0aW5nRXZlbnQ7
CiAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lv
blBhcmFtZXRlcnMuc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyA9IHNob3VsZEluY2x1ZGVMb2NhbGhvc3Q7CiAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0
b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuZW5hYmxlUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RlYnVnTW9kZSA9IGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01v
ZGU7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBwYXJhbWV0ZXJz
LmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy50aGly
ZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlID0gdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsK
KyNlbmRpZgogICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29y
a1Nlc3Npb25QYXJhbWV0ZXJzLmZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlID0gZmly
c3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU7CiAKICAgICBwYXJhbWV0ZXJzLmRlZmF1bHRE
YXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2UgPSBtYW51YWxQcmV2YWxlbnRSZXNvdXJj
ZTsKQEAgLTk0MSw2ICs5NDksOSBAQCBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJQ
cm9jZXNzUG9vbDo6d2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMoV2ViUAogICAgICAgICBX
VEZNb3ZlKGphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KSwKICAgICAgICAgV1RGTW92
ZShqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSksCiAgICAg
ICAgIFdURk1vdmUocGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKSwKKyNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlLnRoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGUoKSwKKyNlbmRpZgogICAgICAgICB3ZWJzaXRlRGF0YVN0b3Jl
LnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkKICAgICB9OwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggYzQ0YmY3YzMyZTkuLjg0MWU2
NDViZGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAK
QEAgLTQzMyw2ICs0MzMsMTEgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6Om5vdGlmeVBhZ2VTdGF0
aXN0aWNzVGVsZW1ldHJ5RmluaXNoZWQoQVBJOjpPYmplY3QqIG1lc3NhZ2UKICAgICBmb3IgKGF1
dG8mIHBhZ2UgOiBnbG9iYWxQYWdlTWFwKCkpCiAgICAgICAgIHBhZ2UudmFsdWUtPnBvc3RNZXNz
YWdlVG9JbmplY3RlZEJ1bmRsZSgiUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlz
aGVkIiwgbWVzc2FnZUJvZHkpOwogfQorCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0U2hvdWxk
QmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZSB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzOjpTZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGlu
Zyh0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOworfQogI2VuZGlmCiAKIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3Jl
YXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJOjpQYWdlQ29uZmlndXJh
dGlvbj4mJiBwYWdlQ29uZmlndXJhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmgKaW5kZXggOTY1ZmIxY2UwMTcuLjU2Zjg5OTFhNjNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtNjYsNiArNjYsNyBAQCBjbGFzcyBS
ZXNvdXJjZVJlcXVlc3Q7CiBzdHJ1Y3QgUGx1Z2luSW5mbzsKIHN0cnVjdCBQcmV3YXJtSW5mb3Jt
YXRpb247CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOworZW51bSBjbGFzcyBUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmdNb2RlIDogdWludDhfdDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC0yMDYsNiArMjA3LDggQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgbm90aWZ5V2Vic2l0
ZURhdGFEZWxldGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluc0ZpbmlzaGVkKCk7CiAgICAgc3RhdGlj
IHZvaWQgbm90aWZ5V2Vic2l0ZURhdGFTY2FuRm9yUmVnaXN0cmFibGVEb21haW5zRmluaXNoZWQo
KTsKKworICAgIHZvaWQgc2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3Rpbmco
V2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKICNlbmRpZgogCiAgICAgdm9pZCBlbmFibGVTdWRkZW5UZXJtaW5hdGlvbigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2Ev
V2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCmluZGV4IGEzY2M3MmQ5OTZkLi4w
MDIyYTBiZGI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQpAQCAtNjEs
NiArNjEsMjAgQEAgc3RhdGljIEhhc2hTZXQ8V2Vic2l0ZURhdGFTdG9yZSo+JiBkYXRhU3RvcmVz
KCkKIAogc3RhdGljIE5TU3RyaW5nICogY29uc3QgV2ViS2l0TmV0d29ya0xvYWRUaHJvdHRsZUxh
dGVuY3lNaWxsaXNlY29uZHNEZWZhdWx0c0tleSA9IEAiV2ViS2l0TmV0d29ya0xvYWRUaHJvdHRs
ZUxhdGVuY3lNaWxsaXNlY29uZHMiOwogCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKK1dlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgV2Vic2l0ZURhdGFT
dG9yZTo6dGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSgpIGNvbnN0Cit7CisgICAgaWYgKCFt
X3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUpIHsKKyAgICAgICAgTlNVc2VyRGVmYXVsdHMg
KmRlZmF1bHRzID0gW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXTsKKyAgICAg
ICAgaWYgKFtkZWZhdWx0cyBib29sRm9yS2V5OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAi
RXhwZXJpbWVudGFsJUAiLCBXZWJQcmVmZXJlbmNlc0tleTo6aXNUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmdEaXNhYmxlZEtleSgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCldXSkKKyAgICAgICAgICAg
IG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IFdlYkNvcmU6OlRoaXJkUGFydHlDb29r
aWVCbG9ja2luZ01vZGU6OkFsbE9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBtX3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgPSBXZWJD
b3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGw7CisgICAgfQorICAgIHJldHVy
biAqbV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOworfQorI2VuZGlmCisKIFdlYnNpdGVE
YXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogewogICAg
IEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jh
d0Nvb2tpZXMpKTsKQEAgLTcwLDcgKzg0LDYgQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMg
V2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycygpCiAgICAgTlNVc2VyRGVmYXVsdHMgKmRlZmF1
bHRzID0gW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXTsKICAgICBib29sIHNo
b3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uID0gZmFsc2U7CiAgICAgYm9vbCBlbmFibGVSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlID0gZmFsc2U7Ci0gICAgYXV0byB0aGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdNb2RlID0gV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6
QWxsOwogICAgIGF1dG8gZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgPSBXZWJDb3Jl
OjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTo6QWxsQnV0Q29va2llczsKICAgICBi
b29sIGVuYWJsZUxlZ2FjeVRMUyA9IGZhbHNlOwogICAgIGlmIChpZCB2YWx1ZSA9IFtkZWZhdWx0
cyBvYmplY3RGb3JLZXk6QCJXZWJLaXRFbmFibGVMZWdhY3lUTFMiXSkKQEAgLTg1LDEwICs5OCw2
IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRl
cnMoKQogICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNYW51YWxQcmV2YWxlbnRSZXNvdXJjZSB7IH07CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKICAgICBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlID0g
W2RlZmF1bHRzIGJvb2xGb3JLZXk6QCJJVFBEZWJ1Z01vZGUiXTsKLSAgICBpZiAoW2RlZmF1bHRz
IGJvb2xGb3JLZXk6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJFeHBlcmltZW50YWwlQCIs
IFdlYlByZWZlcmVuY2VzS2V5Ojppc1RoaXJkUGFydHlDb29raWVCbG9ja2luZ0Rpc2FibGVkS2V5
KCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKV1dKQotICAgICAgICB0aGlyZFBhcnR5Q29va2llQmxv
Y2tpbmdNb2RlID0gV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsT25T
aXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb247Ci0gICAgZWxzZQotICAgICAgICB0aGlyZFBhcnR5
Q29va2llQmxvY2tpbmdNb2RlID0gV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9k
ZTo6QWxsOwogICAgIGlmIChbZGVmYXVsdHMgYm9vbEZvcktleTpbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAIkV4cGVyaW1lbnRhbCVAIiwgV2ViUHJlZmVyZW5jZXNLZXk6OmlzRmlyc3RQYXJ0
eVdlYnNpdGVEYXRhUmVtb3ZhbERpc2FibGVkS2V5KCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKV1d
KQogICAgICAgICBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA9IFdlYkNvcmU6OkZp
cnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOjpOb25lOwogICAgIGVsc2UgewpAQCAtMTYy
LDcgKzE3MSw3IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6
OnBhcmFtZXRlcnMoKQogICAgICAgICBoYXNTdGF0aXN0aWNzVGVzdGluZ0NhbGxiYWNrKCksCiAg
ICAgICAgIHNob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3MsCiAg
ICAgICAgIGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUsCi0gICAgICAgIHRo
aXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUsCisgICAgICAgIHRoaXJkUGFydHlDb29raWVCbG9j
a2luZ01vZGUoKSwKICAgICAgICAgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUsCiAg
ICAgICAgIG1fY29uZmlndXJhdGlvbi0+ZGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0VuYWJs
ZWQoKSwKICAgICAgICAgbV9jb25maWd1cmF0aW9uLT5hbGxMb2Fkc0Jsb2NrZWRCeURldmljZU1h
bmFnZW1lbnRSZXN0cmljdGlvbnNGb3JUZXN0aW5nKCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDE5
OTUxMGU0MmVkLi4wZDhhYzQ1MzU5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTE4MDUsNiArMTgw
NSwxMiBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NT
aG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVAogICAgIGlmIChlbmFibGVkKQogICAgICAg
ICBibG9ja2luZ01vZGUgPSBvbmx5T25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24gPyBXZWJD
b3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGxPblNpdGVzV2l0aG91dFVzZXJJ
bnRlcmFjdGlvbiA6IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbDsK
IAorICAgIGlmICh0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKCkgIT0gYmxvY2tpbmdNb2Rl
KSB7CisgICAgICAgIG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IGJsb2NraW5nTW9k
ZTsKKyAgICAgICAgZm9yIChhdXRvJiB3ZWJQcm9jZXNzIDogcHJvY2Vzc2VzKCkpCisgICAgICAg
ICAgICB3ZWJQcm9jZXNzLnNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5n
KGJsb2NraW5nTW9kZSwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5j
b3B5UmVmKCldIHsgfSk7CisgICAgfQorCiAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHBy
b2Nlc3NQb29scygpKSB7CiAgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nl
c3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKSB7CiAgICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+
c2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcobV9zZXNzaW9uSUQsIGJs
b2NraW5nTW9kZSwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5
UmVmKCldIHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggYzY1YTA2N2JiM2YuLmE5ZjE0NzczMGNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5oCkBAIC0xOTUsNiArMTk1LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhib29s
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKGJvb2wgZW5h
YmxlZCwgYm9vbCBvbmx5T25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmly
c3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmdNb2RlIHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoKSBjb25zdDsKICNlbmRp
ZgogICAgIHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25k
cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlc2V0Q2FjaGVNYXhB
Z2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
QEAgLTM3NCw2ICszNzUsOSBAQCBwcml2YXRlOgogI2lmIEhBVkUoQVBQX1NTTykKICAgICBVbmlx
dWVSZWY8U09BdXRob3JpemF0aW9uQ29vcmRpbmF0b3I+IG1fc29BdXRob3JpemF0aW9uQ29vcmRp
bmF0b3I7CiAjZW5kaWYKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAg
IG11dGFibGUgT3B0aW9uYWw8V2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZT4g
bV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOyAvLyBMYXppbHkgY29tcHV0ZWQuCisjZW5k
aWYKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCmluZGV4IDQy
NjNkMTk1YjBiLi44NDIzMGZjMDQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2
ZXIuY3BwCkBAIC03MSwxNSArNzEsMTcgQEAgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6On5XZWJS
ZXNvdXJjZUxvYWRPYnNlcnZlcigpCiAgICAgICAgIHVwZGF0ZUNlbnRyYWxTdGF0aXN0aWNzU3Rv
cmUoKTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6cmVxdWVzdFN0b3JhZ2VB
Y2Nlc3NVbmRlck9wZW5lcihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluSW5OZWVkT2ZT
dG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIERvY3VtZW50JiBvcGVu
ZXJEb2N1bWVudCkKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlcXVlc3RTdG9yYWdl
QWNjZXNzVW5kZXJPcGVuZXIoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9m
U3RvcmFnZUFjY2VzcywgV2ViUGFnZSYgb3BlbmVyUGFnZSwgRG9jdW1lbnQmIG9wZW5lckRvY3Vt
ZW50KQogewogICAgIGF1dG8gb3BlbmVyVXJsID0gb3BlbmVyRG9jdW1lbnQudXJsKCk7CiAgICAg
UmVnaXN0cmFibGVEb21haW4gb3BlbmVyRG9tYWluIHsgb3BlbmVyVXJsIH07CiAgICAgaWYgKGRv
bWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyAhPSBvcGVuZXJEb21haW4KICAgICAgICAgJiYgIW9w
ZW5lckRvY3VtZW50Lmhhc1JlcXVlc3RlZFBhZ2VTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NXaXRoVXNl
ckludGVyYWN0aW9uKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcykKICAgICAgICAgJiYgIWVx
dWFsSWdub3JpbmdBU0NJSUNhc2Uob3BlbmVyVXJsLnN0cmluZygpLCBXVEY6OmJsYW5rVVJMKCkp
KSB7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6UmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihkb21haW5Jbk5l
ZWRPZlN0b3JhZ2VBY2Nlc3MsIG9wZW5lclBhZ2VJRCwgb3BlbmVyRG9tYWluKSwgMCk7CisgICAg
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6UmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihkb21haW5Jbk5lZWRPZlN0b3Jh
Z2VBY2Nlc3MsIG9wZW5lclBhZ2UuaWRlbnRpZmllcigpLCBvcGVuZXJEb21haW4pLCAwKTsKICAg
ICAgICAgCisgICAgICAgIG9wZW5lclBhZ2UuYWRkRG9tYWluV2l0aFBhZ2VMZXZlbFN0b3JhZ2VB
Y2Nlc3Mob3BlbmVyRG9tYWluLCBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpOworCiAgICAg
ICAgIC8vIFJlbWVtYmVyIHVzZXIgaW50ZXJhY3Rpb24tYmFzZWQgcmVxdWVzdHMgc2luY2UgdGhl
eSBkb24ndCBuZWVkIHRvIGJlIHJlcGVhdGVkLgogICAgICAgICBvcGVuZXJEb2N1bWVudC5zZXRI
YXNSZXF1ZXN0ZWRQYWdlU3BlY2lmaWNTdG9yYWdlQWNjZXNzV2l0aFVzZXJJbnRlcmFjdGlvbihk
b21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpOwogICAgIH0KQEAgLTMzNSwxMCArMzM3LDggQEAg
dm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nVXNlckludGVyYWN0aW9uV2l0aFJlZHVj
ZWRUaW1lUmVzb2x1dGlvbihjb25zdAogICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZy
YW1lKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIG9wZW5lciA9IGZyYW1lLT5sb2FkZXIoKS5vcGVu
ZXIoKSkgewogICAgICAgICAgICAgaWYgKGF1dG8qIG9wZW5lckRvY3VtZW50ID0gb3BlbmVyLT5k
b2N1bWVudCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8qIG9wZW5lckZyYW1lID0gb3Bl
bmVyRG9jdW1lbnQtPmZyYW1lKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8gb3Bl
bmVyUGFnZUlEID0gb3BlbmVyRnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpKQotICAg
ICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcih0b3BG
cmFtZURvbWFpbiwgb3BlbmVyUGFnZUlELnZhbHVlKCksICpvcGVuZXJEb2N1bWVudCk7Ci0gICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChhdXRvKiBvcGVuZXJQYWdlID0gb3Bl
bmVyRG9jdW1lbnQtPnBhZ2UoKSkKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdFN0b3JhZ2VB
Y2Nlc3NVbmRlck9wZW5lcih0b3BGcmFtZURvbWFpbiwgV2ViUGFnZTo6ZnJvbUNvcmVQYWdlKCpv
cGVuZXJQYWdlKSwgKm9wZW5lckRvY3VtZW50KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmgKaW5kZXggZmFlNDhjNjZkM2Uu
LmM4MDkyZjRhMGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaApAQCAtMzQs
NiArMzQsOCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViUGFnZTsKKwogY2xh
c3MgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXIgewogcHVibGljOgogICAgIFdlYlJlc291cmNlTG9hZE9ic2VydmVyKCk7
CkBAIC02NCw3ICs2Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzY2hlZHVsZU5vdGlmaWNhdGlv
bklmTmVlZGVkKCk7CiAKICAgICBWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
cz4gdGFrZVN0YXRpc3RpY3MoKTsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJP
cGVuZXIoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3Rv
cmFnZUFjY2VzcywgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBXZWJDb3Jl
OjpEb2N1bWVudCYgb3BlbmVyRG9jdW1lbnQpOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nl
c3NVbmRlck9wZW5lcihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluSW5O
ZWVkT2ZTdG9yYWdlQWNjZXNzLCBXZWJQYWdlJiBvcGVuZXJQYWdlLCBXZWJDb3JlOjpEb2N1bWVu
dCYgb3BlbmVyRG9jdW1lbnQpOwogCiAgICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gbV9yZXNvdXJjZVN0YXRpc3Rp
Y3NNYXA7CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgV1RGOjpXYWxs
VGltZT4gbV9sYXN0UmVwb3J0ZWRVc2VySW50ZXJhY3Rpb25NYXA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcAppbmRleCA3MzgyZmQ5YTYx
My4uYWRhOWZiNmVkNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkNvb2tpZUphci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViQ29va2llSmFyLmNwcApAQCAtMjgsOCArMjgsMTEgQEAKIAogI2luY2x1ZGUgIk5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJGcmFtZS5oIgorI2luY2x1ZGUgIldlYlBh
Z2UuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRGVwcmVjYXRlZEds
b2JhbFNldHRpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CkBAIC00
OCwxOCArNTEsNjEgQEAgY2xhc3MgV2ViU3RvcmFnZVNlc3Npb25Qcm92aWRlciA6IHB1YmxpYyBX
ZWJDb3JlOjpTdG9yYWdlU2Vzc2lvblByb3ZpZGVyIHsKIFdlYkNvb2tpZUphcjo6V2ViQ29va2ll
SmFyKCkKICAgICA6IFdlYkNvcmU6OkNvb2tpZUphcihhZG9wdFJlZigqbmV3IFdlYlN0b3JhZ2VT
ZXNzaW9uUHJvdmlkZXIpKSB7IH0KIAotU3RyaW5nIFdlYkNvb2tpZUphcjo6Y29va2llcyhXZWJD
b3JlOjpEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsKSBjb25zdAorI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCitzdGF0aWMgYm9vbCBzaG91bGRCbG9ja0Nvb2tp
ZXMoV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25z
dCBVUkwmIHJlc291cmNlVVJMLCBib29sJiBkZWxlZ2F0ZXNDb29raWVCbG9ja2luZ1RvTmV0d29y
a1Byb2Nlc3MpCiB7Ci0gICAgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEOwotICAg
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7Ci0gICAgaWYgKGF1dG8qIGZyYW1lID0g
ZG9jdW1lbnQuZnJhbWUoKSkgewotICAgICAgICBmcmFtZUlEID0gZnJhbWUtPmxvYWRlcigpLmNs
aWVudCgpLmZyYW1lSUQoKTsKLSAgICAgICAgcGFnZUlEID0gZnJhbWUtPmxvYWRlcigpLmNsaWVu
dCgpLnBhZ2VJRCgpOworICAgIGlmICghV2ViQ29yZTo6RGVwcmVjYXRlZEdsb2JhbFNldHRpbmdz
OjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPmlzTWFpbkZyYW1lKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIFJlZ2lzdHJhYmxlRG9tYWluIGZpcnN0UGFydHlEb21haW4geyBmaXJz
dFBhcnR5Rm9yQ29va2llcyB9OworICAgIGlmIChmaXJzdFBhcnR5RG9tYWluLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgUmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VE
b21haW4geyByZXNvdXJjZVVSTCB9OworICAgIGlmIChyZXNvdXJjZURvbWFpbi5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChmaXJzdFBhcnR5RG9tYWluID09IHJl
c291cmNlRG9tYWluKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoZnJhbWUgJiYg
ZnJhbWUtPmZyYW1lTG9hZGVyQ2xpZW50KCktPmhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNz
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+cGFn
ZSgpICYmIGZyYW1lLT5wYWdlKCktPmhhc1BhZ2VMZXZlbFN0b3JhZ2VBY2Nlc3MoZmlyc3RQYXJ0
eURvbWFpbiwgcmVzb3VyY2VEb21haW4pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAv
LyBUaGUgV2ViQ29udGVudCBwcm9jZXNzIGRvZXMgbm90IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9u
IHRvIGRlYWwgd2l0aCBvdGhlciBwb2xpY2llcyB0aGFuIFRoaXJkUGFydHlDb29raWVCbG9ja2lu
Z01vZGU6OkFsbCBzbyB3ZSBoYXZlIHRvIGdvIHRvIHRoZSBOZXR3b3JrUHJvY2VzcyBmb3IgYWxs
CisgICAgLy8gb3RoZXIgcG9saWNpZXMgYW5kIHRoZSByZXF1ZXN0IG1heSBlbmQgdXAgZ2V0dGlu
ZyBibG9ja2VkIG9uIE5ldHdvcmtQcm9jZXNzIHNpZGUuCisgICAgaWYgKFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoKSAhPSBUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdNb2RlOjpBbGwpIHsKKyAgICAgICAgZGVsZWdhdGVzQ29va2llQmxvY2tpbmdU
b05ldHdvcmtQcm9jZXNzID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAor
ICAgIHJldHVybiB0cnVlOworfQorI2VuZGlmCisKK1N0cmluZyBXZWJDb29raWVKYXI6OmNvb2tp
ZXMoV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCkgY29uc3QKK3sK
KyAgICBhdXRvKiB3ZWJGcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkgPyBXZWJGcmFtZTo6ZnJvbUNv
cmVGcmFtZSgqZG9jdW1lbnQuZnJhbWUoKSkgOiBudWxscHRyOworICAgIGlmICghd2ViRnJhbWUg
fHwgIXdlYkZyYW1lLT5wYWdlKCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBib29sIGRl
bGVnYXRlc0Nvb2tpZUJsb2NraW5nVG9OZXR3b3JrUHJvY2VzcyA9IGZhbHNlOworI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgaWYgKHNob3VsZEJsb2NrQ29va2llcyh3
ZWJGcmFtZSwgZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsLCBkZWxlZ2F0ZXND
b29raWVCbG9ja2luZ1RvTmV0d29ya1Byb2Nlc3MpKQorICAgICAgICByZXR1cm4geyB9OworI2Vu
ZGlmCisKKyAgICBhdXRvIGZyYW1lSUQgPSB3ZWJGcmFtZS0+ZnJhbWVJRCgpOworICAgIGF1dG8g
cGFnZUlEID0gd2ViRnJhbWUtPnBhZ2UoKS0+aWRlbnRpZmllcigpOworCiAgICAgU3RyaW5nIGNv
b2tpZVN0cmluZzsKICAgICBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCA9IGZhbHNlOwotICAg
IGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygp
LCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkSW5j
bHVkZVNlY3VyZUNvb2tpZXMoZG9jdW1lbnQsIHVybCkpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET006OlJlcGx5KGNvb2tpZVN0cmluZywgc2Vj
dXJlQ29va2llc0FjY2Vzc2VkKSwgMCkpCisgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMo
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NKGRv
Y3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbyhkb2N1bWVudCksIHVy
bCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRJbmNsdWRlU2VjdXJlQ29va2llcyhkb2N1bWVudCwg
dXJsKSwgZGVsZWdhdGVzQ29va2llQmxvY2tpbmdUb05ldHdvcmtQcm9jZXNzID8gU2hvdWxkQXBw
bHlJVFBDb29raWVCbG9ja2luZ1BvbGljeTo6WWVzIDogU2hvdWxkQXBwbHlJVFBDb29raWVCbG9j
a2luZ1BvbGljeTo6Tm8pLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OkNvb2tpZXNGb3JET006OlJlcGx5KGNvb2tpZVN0cmluZywgc2VjdXJlQ29va2llc0FjY2Vzc2Vk
KSwgMCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICByZXR1cm4gY29va2llU3RyaW5nOwpA
QCAtNjcsMTQgKzExMywyMCBAQCBTdHJpbmcgV2ViQ29va2llSmFyOjpjb29raWVzKFdlYkNvcmU6
OkRvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAKIHZvaWQgV2ViQ29v
a2llSmFyOjpzZXRDb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewotICAgIE9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
OwotICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkpIHsKLSAgICAgICAgZnJh
bWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCk7Ci0gICAgICAgIHBhZ2VJ
RCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKLSAgICB9CisgICAgYXV0byog
d2ViRnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpID8gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmRv
Y3VtZW50LmZyYW1lKCkpIDogbnVsbHB0cjsKKyAgICBpZiAoIXdlYkZyYW1lIHx8ICF3ZWJGcmFt
ZS0+cGFnZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBib29sIGRlbGVnYXRlc0Nvb2tpZUJs
b2NraW5nVG9OZXR3b3JrUHJvY2VzcyA9IGZhbHNlOworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCisgICAgaWYgKHNob3VsZEJsb2NrQ29va2llcyh3ZWJGcmFtZSwgZG9jdW1l
bnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsLCBkZWxlZ2F0ZXNDb29raWVCbG9ja2luZ1Rv
TmV0d29ya1Byb2Nlc3MpKQorICAgICAgICByZXR1cm47CisjZW5kaWYKKworICAgIGF1dG8gZnJh
bWVJRCA9IHdlYkZyYW1lLT5mcmFtZUlEKCk7CisgICAgYXV0byBwYWdlSUQgPSB3ZWJGcmFtZS0+
cGFnZSgpLT5pZGVudGlmaWVyKCk7CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1
cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNldENvb2tpZXNGcm9tRE9NKGRvY3VtZW50
LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbyhkb2N1bWVudCksIHVybCwgZnJh
bWVJRCwgcGFnZUlELCBjb29raWVTdHJpbmcpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNldENvb2tpZXNGcm9tRE9N
KGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbyhkb2N1bWVudCks
IHVybCwgZnJhbWVJRCwgcGFnZUlELCBkZWxlZ2F0ZXNDb29raWVCbG9ja2luZ1RvTmV0d29ya1By
b2Nlc3MgPyBTaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5OjpZZXMgOiBTaG91bGRB
cHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5OjpObywgY29va2llU3RyaW5nKSwgMCk7CiB9CiAK
IGJvb2wgV2ViQ29va2llSmFyOjpjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpEb2N1bWVu
dCYgZG9jdW1lbnQpIGNvbnN0CkBAIC04NywyMyArMTM5LDMyIEBAIGJvb2wgV2ViQ29va2llSmFy
Ojpjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0
CiAKIHN0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvcmU6OlNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4gV2Vi
Q29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBV
UkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRl
U2VjdXJlQ29va2llcykgY29uc3QKIHsKKyAgICBib29sIGRlbGVnYXRlc0Nvb2tpZUJsb2NraW5n
VG9OZXR3b3JrUHJvY2VzcyA9IGZhbHNlOworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCisgICAgYXV0byogd2ViRnJhbWUgPSBmcmFtZUlEID8gV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkud2ViRnJhbWUoKmZyYW1lSUQpIDogbnVsbHB0cjsKKyAgICBpZiAoc2hvdWxkQmxvY2tD
b29raWVzKHdlYkZyYW1lLCBmaXJzdFBhcnR5LCB1cmwsIGRlbGVnYXRlc0Nvb2tpZUJsb2NraW5n
VG9OZXR3b3JrUHJvY2VzcykpCisgICAgICAgIHJldHVybiB7IH07CisjZW5kaWYKKwogICAgIFN0
cmluZyBjb29raWVTdHJpbmc7CiAgICAgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQgPSBmYWxz
ZTsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGZpcnN0UGFy
dHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29r
aWVzKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZTo6UmVwbHkoY29va2llU3RyaW5nLCBzZWN1cmVDb29raWVzQWNj
ZXNzZWQpLCAwKSkKKyAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVT
ZWN1cmVDb29raWVzLCBkZWxlZ2F0ZXNDb29raWVCbG9ja2luZ1RvTmV0d29ya1Byb2Nlc3MgPyBT
aG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5OjpZZXMgOiBTaG91bGRBcHBseUlUUENv
b2tpZUJsb2NraW5nUG9saWN5OjpObyksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWU6OlJlcGx5KGNvb2tpZVN0cmlu
Zywgc2VjdXJlQ29va2llc0FjY2Vzc2VkKSwgMCkpCiAgICAgICAgIHJldHVybiB7IH07CiAgICAg
cmV0dXJuIHsgY29va2llU3RyaW5nLCBzZWN1cmVDb29raWVzQWNjZXNzZWQgPyBXZWJDb3JlOjpT
ZWN1cmVDb29raWVzQWNjZXNzZWQ6OlllcyA6IFdlYkNvcmU6OlNlY3VyZUNvb2tpZXNBY2Nlc3Nl
ZDo6Tm8gfTsKIH0KIAogYm9vbCBXZWJDb29raWVKYXI6OmdldFJhd0Nvb2tpZXMoY29uc3QgV2Vi
Q29yZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0CiB7Ci0gICAgT3B0aW9uYWw8RnJhbWVJZGVudGlm
aWVyPiBmcmFtZUlEOwotICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7Ci0gICAg
aWYgKGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkgewotICAgICAgICBmcmFtZUlEID0g
ZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKTsKLSAgICAgICAgcGFnZUlEID0gZnJh
bWUtPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpOwotICAgIH0KKyAgICBhdXRvKiB3ZWJGcmFt
ZSA9IGRvY3VtZW50LmZyYW1lKCkgPyBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqZG9jdW1lbnQu
ZnJhbWUoKSkgOiBudWxscHRyOworICAgIGJvb2wgZGVsZWdhdGVzQ29va2llQmxvY2tpbmdUb05l
dHdvcmtQcm9jZXNzID0gZmFsc2U7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKKyAgICBpZiAoc2hvdWxkQmxvY2tDb29raWVzKHdlYkZyYW1lLCBkb2N1bWVudC5maXJzdFBh
cnR5Rm9yQ29va2llcygpLCB1cmwsIGRlbGVnYXRlc0Nvb2tpZUJsb2NraW5nVG9OZXR3b3JrUHJv
Y2VzcykpCisgICAgICAgIHJldHVybiB7IH07CisjZW5kaWYKIAotICAgIGlmICghV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0
UmF3Q29va2llcyhkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8o
ZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llczo6UmVwbHkocmF3Q29va2llcyksIDApKQor
ICAgIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCA9IHdlYkZyYW1lID8gbWFrZU9w
dGlvbmFsKHdlYkZyYW1lLT5mcmFtZUlEKCkpIDogV1RGOjpudWxsb3B0OworICAgIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQgPSB3ZWJGcmFtZSAmJiB3ZWJGcmFtZS0+cGFnZSgpID8g
bWFrZU9wdGlvbmFsKHdlYkZyYW1lLT5wYWdlKCktPmlkZW50aWZpZXIoKSkgOiBXVEY6Om51bGxv
cHQ7CisgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRSYXdDb29raWVzKGRvY3VtZW50LmZpcnN0UGFydHlGb3JD
b29raWVzKCksIHNhbWVTaXRlSW5mbyhkb2N1bWVudCksIHVybCwgZnJhbWVJRCwgcGFnZUlELCBk
ZWxlZ2F0ZXNDb29raWVCbG9ja2luZ1RvTmV0d29ya1Byb2Nlc3MgPyBTaG91bGRBcHBseUlUUENv
b2tpZUJsb2NraW5nUG9saWN5OjpZZXMgOiBTaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9s
aWN5OjpObyksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3
Q29va2llczo6UmVwbHkocmF3Q29va2llcyksIDApKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCmluZGV4IDdlYmUxZGYwZjI5Li5hYmM2Y2RlY2MwNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTY2MDAsNiArNjYwMCwxNyBA
QCB2b2lkIFdlYlBhZ2U6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYg
c3ViRnJhbWVEb21haW4sIFJlZ2lzdHJhYgogICAgIH0pOwogfQogCit2b2lkIFdlYlBhZ2U6OmFk
ZERvbWFpbldpdGhQYWdlTGV2ZWxTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiB0b3BMZXZlbERvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWlu
KQoreworICAgIG1fZG9tYWluc1dpdGhQYWdlTGV2ZWxTdG9yYWdlQWNjZXNzLmFkZCh0b3BMZXZl
bERvbWFpbiwgcmVzb3VyY2VEb21haW4pOworfQorCitib29sIFdlYlBhZ2U6Omhhc1BhZ2VMZXZl
bFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcExldmVsRG9tYWluLCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4pIGNvbnN0Cit7CisgICAgYXV0
byBpdCA9IG1fZG9tYWluc1dpdGhQYWdlTGV2ZWxTdG9yYWdlQWNjZXNzLmZpbmQodG9wTGV2ZWxE
b21haW4pOworICAgIHJldHVybiBpdCAhPSBtX2RvbWFpbnNXaXRoUGFnZUxldmVsU3RvcmFnZUFj
Y2Vzcy5lbmQoKSAmJiBpdC0+dmFsdWUgPT0gcmVzb3VyY2VEb21haW47Cit9CisKIHZvaWQgV2Vi
UGFnZTo6d2FzTG9hZGVkV2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZSgpCiB7
CiAgICAgYXV0byogZnJhbWUgPSBtYWluRnJhbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBlMzUyZDQ0NmEzNC4uMTQ5YWQ5MTQyM2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTExNjAsNiArMTE2
MCw4IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAg
IHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZy
YW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBX
ZWJGcmFtZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgcmVx
dWVzdFN0b3JhZ2VBY2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURv
bWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgV2ViRnJh
bWUmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFu
dGVkLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmKTsKKyAgICBib29s
IGhhc1BhZ2VMZXZlbFN0b3JhZ2VBY2Nlc3MoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mIHRvcExldmVsRG9tYWluLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVz
b3VyY2VEb21haW4pIGNvbnN0OworICAgIHZvaWQgYWRkRG9tYWluV2l0aFBhZ2VMZXZlbFN0b3Jh
Z2VBY2Nlc3MoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHRvcExldmVsRG9tYWlu
LCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4pOwogICAg
IHZvaWQgd2FzTG9hZGVkV2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZSgpOwog
I2VuZGlmCiAKQEAgLTIwMjUsNiArMjAyNywxMCBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlRp
bWVyIG1fdGV4dEF1dG9TaXppbmdBZGp1c3RtZW50VGltZXI7CiAjZW5kaWYKIAorI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IG1fZG9tYWluc1dpdGhQYWdl
TGV2ZWxTdG9yYWdlQWNjZXNzOworI2VuZGlmCisKICAgICBTdHJpbmcgbV9vdmVycmlkZGVuTWVk
aWFUeXBlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4
IDE1NjFmZmFlZTI2Li5lNjM3MDU3YjIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcApAQCAtNDY1LDYgKzQ2NSw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6c2V0V2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnMoV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMmJiBwCiAK
ICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgY29uc3RydWN0ZWQgcGVyIGRhdGEgc3RvcmUs
IG5vdCBwZXIgcHJvY2Vzcy4KICAgICBtX2FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlID0gQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OmNyZWF0ZShwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3RvcnksIHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZUZsYXRGaWxlU3ViZGlyZWN0b3J5TmFt
ZSk7CisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIG1fYXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UtPnNldERlZmF1bHRPcmlnaW5RdW90YSgyNVVMTCAqIDEwMjQgKiAxMDI0KTsKICNlbmRp
ZgpAQCAtNDc3LDYgKzQ3OCw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6c2V0V2Vic2l0ZURhdGFTdG9y
ZVBhcmFtZXRlcnMoV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMmJiBwCiAgICAgc2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRW5hYmxlZCk7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAg
IG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IHBhcmFtZXRlcnMudGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZTsKICAgICBpZiAocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRW5hYmxlZCAmJiAhcGFyYW1ldGVycy5zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSAmJiAhUmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZElmRXhpc3RzKCkpCiAgICAgICAgIFJlc291cmNlTG9h
ZE9ic2VydmVyOjpzZXRTaGFyZWQoKm5ldyBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcik7CiAjZW5k
aWYKQEAgLTE5NzMsNiArMTk3NSwxNCBAQCBib29sIFdlYlByb2Nlc3M6OmFyZUFsbFBhZ2VzVGhy
b3R0bGVhYmxlKCkgY29uc3QKICAgICB9KTsKIH0KIAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCit2b2lkIFdlYlByb2Nlc3M6OnNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNv
b2tpZXNGb3JUZXN0aW5nKFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgdGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IHRoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGU7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KKyNlbmRp
ZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIFJFTEVBU0VfTE9HX1NFU1NJT05f
SUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDRkODE4ZGFhMWMwLi5i
MjRjOGNlMzc0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC00NCw2
ICs0NCw3IEBACiAjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbE1hbmFnZXIuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0FjdGl2aXR5U3RhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lSWRlbnRp
Zmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0
cmFibGVEb21haW4uaD4KICNpZiBQTEFURk9STShNQUMpCkBAIC0xNjUsNiArMTY2LDEwIEBAIHB1
YmxpYzoKICAgICAKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IEFTU0VS
VChtX3Nlc3Npb25JRCk7IHJldHVybiAqbV9zZXNzaW9uSUQ7IH0KIAorI2lmIEVOQUJMRShSRVNP
VVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nTW9kZSB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV90
aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOyB9CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYgY29tcG9zaXRpbmdSZW5kZXJTZXJ2
ZXJQb3J0KCkgY29uc3QgeyByZXR1cm4gbV9jb21wb3NpdGluZ1JlbmRlclNlcnZlclBvcnQ7IH0K
ICNlbmRpZgpAQCAtNDM1LDYgKzQ0MCwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgcmV2b2tlVXNl
ck1lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKICNl
bmRpZgogCisjZW5kaWYKKworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisg
ICAgdm9pZCBzZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhXZWJDb3Jl
OjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogI2VuZGlmCiAKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZVByb2Nlc3MoY29uc3Qg
QXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYpOwpAQCAtNjAyLDYgKzYx
MSwxMCBAQCBwcml2YXRlOgogICAgIC8vIFByZXdhcm1lZCBXZWJQcm9jZXNzZXMgZG8gbm90IGhh
dmUgYW4gYXNzb2NpYXRlZCBzZXNzaW9uSUQgeWV0LCB3aGljaCBpcyB3aHkgdGhpcyBpcyBhbiBv
cHRpb25hbC4KICAgICAvLyBCeSB0aGUgdGltZSB0aGUgV2ViUHJvY2VzcyBnZXRzIGEgV2ViUGFn
ZSwgaXQgaXMgZ3VhcmFudGVlZCB0byBoYXZlIGEgc2Vzc2lvbklELgogICAgIE9wdGlvbmFsPFBB
TDo6U2Vzc2lvbklEPiBtX3Nlc3Npb25JRDsKKworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCisgICAgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSBtX3Ro
aXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgeyBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmdNb2RlOjpBbGwgfTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4
IGYwMGQ3OWM2ZDQwLi45OTBiMDRkNTg3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTE2Miw1ICsxNjIsNiBAQCBtZXNzYWdlcyAt
PiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIE5vdFJlZkNvdW50ZWQgewogCiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBTZWVkUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0ZvclRlc3RpbmcoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZmlyc3RQYXJ0eURvbWFpbiwg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdGhpcmRQYXJ0eURvbWFpbiwgYm9vbCBzaG91bGRT
Y2hlZHVsZU5vdGlmaWNhdGlvbikgLT4gKCkgQXN5bmMKKyAgICBTZXRTaG91bGRCbG9ja1RoaXJk
UGFydHlDb29raWVzRm9yVGVzdGluZyhlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZSBibG9ja2luZ01vZGUpIC0+ICgpIEFzeW5jCiAjZW5kaWYKIH0KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
Y3BwCmluZGV4IGZlOWUyZmVhNDNmLi4yZWEzY2JkNzJiNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC0yMjM1LDcg
KzIyMzUsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJk
UGFydHlDb29raWVzKGJvb2wgdmFsdWUsIEpTVmFsdWVSZQogICAgIGlmIChvbmx5T25TaXRlc1dp
dGhvdXRVc2VySW50ZXJhY3Rpb24pCiAgICAgICAgIG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQ
YXJ0eUNvb2tpZXNPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiIpKTsKICAgICBXS1JldGFp
blB0cjxXS0Jvb2xlYW5SZWY+IG1lc3NhZ2VCb2R5ID0gYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUo
dmFsdWUpKTsKLSAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5k
bGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHku
Z2V0KCksIG51bGxwdHIpOworICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6
OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0
KCkpOwogICAgIG1faGFzU2V0QmxvY2tUaGlyZFBhcnR5Q29va2llc0NhbGxiYWNrID0gdHJ1ZTsK
IH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5j
cHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCAwOThm
NWJhNzhjNy4uZmQ1ZjJlOWVlZjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9j
YXRpb24uY3BwCkBAIC03NDcsNiArNzQ3LDIwIEBAIHZvaWQgVGVzdEludm9jYXRpb246OmRpZFJl
Y2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0
cmluZyhtZXNzYWdlTmFtZSwgIlNldFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29r
aWVzT25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24iKSkgeworICAgICAgICBBU1NFUlQoV0tH
ZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLQm9vbGVhbkdldFR5cGVJRCgpKTsKKyAgICAgICAg
V0tCb29sZWFuUmVmIHZhbHVlID0gc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihtZXNzYWdlQm9k
eSk7CisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zZXRTdGF0aXN0aWNzU2hv
dWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhXS0Jvb2xlYW5HZXRWYWx1ZSh2YWx1ZSksIHRydWUp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRG
OENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5
Q29va2llcyIpKSB7CisgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0g
V0tCb29sZWFuR2V0VHlwZUlEKCkpOworICAgICAgICBXS0Jvb2xlYW5SZWYgdmFsdWUgPSBzdGF0
aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KG1lc3NhZ2VCb2R5KTsKKyAgICAgICAgVGVzdENvbnRyb2xs
ZXI6OnNpbmdsZXRvbigpLnNldFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVz
KFdLQm9vbGVhbkdldFZhbHVlKHZhbHVlKSwgZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAg
fQorCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJS
dW5VSVByb2Nlc3NTY3JpcHQiKSkgewogICAgICAgICBXS0RpY3Rpb25hcnlSZWYgbWVzc2FnZUJv
ZHlEaWN0aW9uYXJ5ID0gc3RhdGljX2Nhc3Q8V0tEaWN0aW9uYXJ5UmVmPihtZXNzYWdlQm9keSk7
CiAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzY3JpcHRLZXkgPSBhZG9wdFdLKFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTY3JpcHQiKSk7CkBAIC0xNTU5LDIwICsxNTcz
LDYgQEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5
bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogICAgIAotICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VO
YW1lLCAiU2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNPblNpdGVzV2l0
aG91dFVzZXJJbnRlcmFjdGlvbiIpKSB7Ci0gICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNz
YWdlQm9keSkgPT0gV0tCb29sZWFuR2V0VHlwZUlEKCkpOwotICAgICAgICBXS0Jvb2xlYW5SZWYg
dmFsdWUgPSBzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KG1lc3NhZ2VCb2R5KTsKLSAgICAgICAg
VGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNldFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJk
UGFydHlDb29raWVzKFdLQm9vbGVhbkdldFZhbHVlKHZhbHVlKSwgdHJ1ZSk7Ci0gICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIH0KLSAgICAKLSAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4
Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlD
b29raWVzIikpIHsKLSAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBX
S0Jvb2xlYW5HZXRUeXBlSUQoKSk7Ci0gICAgICAgIFdLQm9vbGVhblJlZiB2YWx1ZSA9IHN0YXRp
Y19jYXN0PFdLQm9vbGVhblJlZj4obWVzc2FnZUJvZHkpOwotICAgICAgICBUZXN0Q29udHJvbGxl
cjo6c2luZ2xldG9uKCkuc2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMo
V0tCb29sZWFuR2V0VmFsdWUodmFsdWUpLCBmYWxzZSk7Ci0gICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIH0KLSAgICAKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNz
YWdlTmFtZSwgIlNldFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSIp
KSB7CiAgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tCb29sZWFu
R2V0VHlwZUlEKCkpOwogICAgICAgICBXS0Jvb2xlYW5SZWYgdmFsdWUgPSBzdGF0aWNfY2FzdDxX
S0Jvb2xlYW5SZWY+KG1lc3NhZ2VCb2R5KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387681</attachid>
            <date>2020-01-14 11:50:59 -0800</date>
            <delta_ts>2020-01-14 12:03:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206108-20200114115058.patch</filename>
            <type>text/plain</type>
            <size>89699</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0MzQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjc5MDM1YjdkZTc4YjNj
ZGM0YTA4ZmI3MzM0N2VkMjhiNzkxMzU0OS4uOGJlYTBiZGI5OWExODIzMDQyODRhYmQzMmMwNGMw
ZTc5ZWI1N2M4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIwLTAxLTE0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgZG9jdW1lbnQuY29va2llIHNo
b3VsZCBub3QgZG8gYSBzeW5jIElQQyB0byB0aGUgbmV0d29yayBwcm9jZXNzIGZvciBpZnJhbWVz
IHRoYXQgZG8gbm90IGhhdmUgc3RvcmFnZSBhY2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjEwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gSVRQIGlzIGVuYWJsZWQgYW5kIFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGU6OkFsbCBtb2RlIGlzIHVzZWQgKGRlZmF1bHQgaW4gU2FmYXJp
KSwgd2UgY2FuIG5vdyBkZXRlY3QKKyAgICAgICAgdGhhdCBhIHRoaXJkLXBhcnR5IGlmcmFtZSBk
b2VzIG5vdCBoYXZlIGNvb2tpZSBhY2Nlc3MgY29tcGxldGVseSBvbiB0aGUgV2ViQ29udGVudCBw
cm9jZXNzIHNpZGUsIGluc3RlYWQgb2YKKyAgICAgICAgZG9pbmcgdGhlIGNoZWNrIG9uIHRoZSBO
ZXR3b3JrIHByb2Nlc3Mgc2lkZS4gVGhlIGJlbmVmaXQgaXMgdGhhdCB0aGlzIGF2b2lkcyBkb2lu
ZyBhIHN5bmNocm9ub3VzIElQQyBldmVyeQorICAgICAgICB0aW1lIGEgdGhpcmQtcGFydHkgaWZy
YW1lIHdoaWNoIGRvZXMgbm90IGhhdmUgc3RvcmFnZSBhY2Nlc3MgdHJpZXMgdG8gYWNjZXNzIGRv
Y3VtZW50LmNvb2tpZSBpbiBKYXZhU2NyaXB0LgorICAgICAgICBHaXZlbiB0aGF0IHRoaXMgc2hv
dWxkIGFwcGx5IHRvIGEgbG90IG9mIGlmcmFtZXMsIHRoaXMgY2hhbmdlIGlzIHZlcnkgYmVuZWZp
Y2lhbCB0byBwZXJmb3JtYW5jZS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQgYnkg
ZXhpc3RpbmcgdGVzdHMgdGhhdCBhcmUgc3RpbGwgcGFzc2luZy4KKworICAgICAgICAqIGxvYWRl
ci9Db29raWVKYXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llSmFyOjpjb29raWVzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphcjo6c2V0Q29va2llcyk6CisgICAgICAg
IChXZWJDb3JlOjpDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphcjo6Z2V0UmF3Q29va2llcyBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OmNvb2tpZXNGb3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6Y29va2llc0ZvclNlc3Np
b24pOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9y
RE9NIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zy
b21ET00gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpj
b29raWVzRm9yRE9NIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6Z2V0UmF3Q29va2llcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9t
RE9NIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0
UmF3Q29va2llcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmNvb2tpZXNGb3JET00gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSBjb25zdCk6CisKIDIwMjAt
MDEtMTAgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNd
W0ludGVncmF0aW9uXSBGaXggYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLWlm
cmFtZS1vZmZzY3JlZW4uaHRtbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlYjk0MTRkZjkwZWE2NjFjMDk4M2M0YTBh
ZTZlYzliMzM2N2UxYjY1Li44YWYzZjI4YzI2ZWY5ZGI2MzcwM2ZlNWE4ZWQ2NjRlOWQ5MGMyZjU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDIwLTAxLTE0ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgZG9jdW1lbnQuY29va2llIHNob3VsZCBub3QgZG8g
YSBzeW5jIElQQyB0byB0aGUgbmV0d29yayBwcm9jZXNzIGZvciBpZnJhbWVzIHRoYXQgZG8gbm90
IGhhdmUgc3RvcmFnZSBhY2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwNjEwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Y29va2llc0ZvckRPTSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpzZXRDb29raWVzRnJvbURPTSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpnZXRSYXdDb29raWVz
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uSW50ZXJu
YWwpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFt
ZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ3Jl
YXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0
ZXJzLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzOjpl
bmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1l
dGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0U2hv
dWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpl
bnN1cmVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp3
ZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6c2V0U2hv
dWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29j
b2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlOjp0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjp0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1No
b3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9w
ZW5lcik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dVc2Vy
SW50ZXJhY3Rpb25XaXRoUmVkdWNlZFRpbWVSZXNvbHV0aW9uKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNo
b3VsZEJsb2NrQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZUphcjo6Y29va2ll
cyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZUphcjo6c2V0Q29va2llcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVKYXI6OmdldFJhd0Nvb2tpZXMg
Y29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6YWRkRG9tYWluV2l0aFBhZ2VMZXZlbFN0b3JhZ2VBY2Nlc3Mp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpoYXNQYWdlTGV2ZWxTdG9yYWdlQWNjZXNzIGNv
bnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6
OnNldFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6c2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
Ojp0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisKIDIwMjAtMDEtMTAgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFVwZGF0
ZSBPcHRpb25zR1RLLmNtYWtlIGFuZCBORVdTIGZvciAyLjI3LjQgcmVsZWFzZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ29va2llSmFyLmNwcAppbmRleCBhMTAwMTVjYjE5NzhmNmM1NmY4ZjJmZTA5OGI2MTg4
NzA2NzAxZDRjLi5jNTY0M2JiZmNhNzZlMDAwYzEwYTdhOTBkN2ExYWYzOTk3ZTlkYWUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmNwcApAQCAtODAsNyArODAsNyBAQCBTdHJpbmcgQ29v
a2llSmFyOjpjb29raWVzKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwpIGNvbnN0
CiAKICAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiByZXN1bHQ7CiAgICAgaWYgKGF1dG8qIHNl
c3Npb24gPSBtX3N0b3JhZ2VTZXNzaW9uUHJvdmlkZXItPnN0b3JhZ2VTZXNzaW9uKCkpCi0gICAg
ICAgIHJlc3VsdCA9IHNlc3Npb24tPmNvb2tpZXNGb3JET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZv
ckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQs
IGluY2x1ZGVTZWN1cmVDb29raWVzKTsKKyAgICAgICAgcmVzdWx0ID0gc2Vzc2lvbi0+Y29va2ll
c0ZvckRPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9j
dW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3Vs
ZEFwcGx5SVRQQ29va2llQmxvY2tpbmdQb2xpY3k6Olllcyk7CiAgICAgZWxzZQogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKIApAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQgQ29va2llSmFy
OjpzZXRDb29raWVzKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgY29vCiAgICAgfQogCiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX3N0b3JhZ2VTZXNz
aW9uUHJvdmlkZXItPnN0b3JhZ2VTZXNzaW9uKCkpCi0gICAgICAgIHNlc3Npb24tPnNldENvb2tp
ZXNGcm9tRE9NKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbyhk
b2N1bWVudCksIHVybCwgZnJhbWVJRCwgcGFnZUlELCBjb29raWVTdHJpbmcpOworICAgICAgICBz
ZXNzaW9uLT5zZXRDb29raWVzRnJvbURPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygp
LCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgU2hvdWxkQXBw
bHlJVFBDb29raWVCbG9ja2luZ1BvbGljeTo6WWVzLCBjb29raWVTdHJpbmcpOwogICAgIGVsc2UK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CkBAIC0xMzEsNyArMTMxLDcgQEAgYm9v
bCBDb29raWVKYXI6OmNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50JikgY29uc3QKIHN0ZDo6
cGFpcjxTdHJpbmcsIFNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4gQ29va2llSmFyOjpjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlm
aWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2Vj
dXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBpZiAoYXV0byog
c2Vzc2lvbiA9IG1fc3RvcmFnZVNlc3Npb25Qcm92aWRlci0+c3RvcmFnZVNlc3Npb24oKSkgewot
ICAgICAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiByZXN1bHQgPSBzZXNzaW9uLT5jb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJh
bWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcyk7CisgICAgICAgIHN0ZDo6cGFpcjxT
dHJpbmcsIGJvb2w+IHJlc3VsdCA9IHNlc3Npb24tPmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1
ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5OjpZZXMp
OwogICAgICAgICByZXR1cm4geyByZXN1bHQuZmlyc3QsIHJlc3VsdC5zZWNvbmQgPyBTZWN1cmVD
b29raWVzQWNjZXNzZWQ6OlllcyA6IFNlY3VyZUNvb2tpZXNBY2Nlc3NlZDo6Tm8gfTsKICAgICB9
CiAKQEAgLTE2NCw3ICsxNjQsNyBAQCBib29sIENvb2tpZUphcjo6Z2V0UmF3Q29va2llcyhjb25z
dCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8QwogICAgIH0KIAog
ICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVyLT5zdG9yYWdl
U2Vzc2lvbigpKQotICAgICAgICByZXR1cm4gc2Vzc2lvbi0+Z2V0UmF3Q29va2llcyhkb2N1bWVu
dC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZy
YW1lSUQsIHBhZ2VJRCwgY29va2llcyk7CisgICAgICAgIHJldHVybiBzZXNzaW9uLT5nZXRSYXdD
b29raWVzKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbyhkb2N1
bWVudCksIHVybCwgZnJhbWVJRCwgcGFnZUlELCBTaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5n
UG9saWN5OjpZZXMsIGNvb2tpZXMpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
cmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9DYWNoZVZhbGlkYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9D
YWNoZVZhbGlkYXRpb24uY3BwCmluZGV4IDJkMzUwN2RmMjM3ZGIyOTVkNTkzMWE0YzBkZjc2MDI3
NzdkZTdiOGIuLjU0NmNhNzM0N2YyMTRlZTkzOGE5YzRlZDFkYWRlNDJmMjg3MGYyM2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5j
cHAKQEAgLTM0MCw3ICszNDAsNyBAQCBDYWNoZUNvbnRyb2xEaXJlY3RpdmVzIHBhcnNlQ2FjaGVD
b250cm9sRGlyZWN0aXZlcyhjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzKQogCiBzdGF0aWMg
U3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAg
IHJldHVybiBzZXNzaW9uLmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHJlcXVlc3QuZmly
c3RQYXJ0eUZvckNvb2tpZXMoKSwgU2FtZVNpdGVJbmZvOjpjcmVhdGUocmVxdWVzdCksIHJlcXVl
c3QudXJsKCksIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCByZXF1ZXN0LnVybCgpLnByb3Rv
Y29sSXMoImh0dHBzIikgPyBJbmNsdWRlU2VjdXJlQ29va2llczo6WWVzIDogSW5jbHVkZVNlY3Vy
ZUNvb2tpZXM6Ok5vKS5maXJzdDsKKyAgICByZXR1cm4gc2Vzc2lvbi5jb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShyZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCksIFNhbWVTaXRlSW5m
bzo6Y3JlYXRlKHJlcXVlc3QpLCByZXF1ZXN0LnVybCgpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVs
bG9wdCwgcmVxdWVzdC51cmwoKS5wcm90b2NvbElzKCJodHRwcyIpID8gSW5jbHVkZVNlY3VyZUNv
b2tpZXM6OlllcyA6IEluY2x1ZGVTZWN1cmVDb29raWVzOjpObywgU2hvdWxkQXBwbHlJVFBDb29r
aWVCbG9ja2luZ1BvbGljeTo6WWVzKS5maXJzdDsKIH0KIAogc3RhdGljIFN0cmluZyBjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBDb29raWVKYXIqIGNvb2tpZUphciwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKaW5kZXggZWVmYjg3MGU0Y2Fj
NWEwZWZhNzIyYzE2YWRlMjcyMDMwODQzODczMS4uMTk5M2FjM2U1YTUwZDM3NGRiMDEyNjNjN2E0
Mzc3MGQxZGY4Y2UzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCkBAIC03Niw2ICs3Niw3IEBAIGVudW0gY2xh
c3MgSW5jbHVkZVNlY3VyZUNvb2tpZXMgOiBib29sOwogZW51bSBjbGFzcyBJbmNsdWRlSHR0cE9u
bHlDb29raWVzIDogYm9vbDsKIGVudW0gY2xhc3MgVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9k
ZSA6IHVpbnQ4X3QgeyBBbGwsIEFsbE9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCBPbmx5
QWNjb3JkaW5nVG9QZXJEb21haW5Qb2xpY3kgfTsKIGVudW0gY2xhc3MgRmlyc3RQYXJ0eVdlYnNp
dGVEYXRhUmVtb3ZhbE1vZGUgOiB1aW50OF90IHsgQWxsQnV0Q29va2llcywgTm9uZSwgQWxsQnV0
Q29va2llc0xpdmVPblRlc3RpbmdUaW1lb3V0LCBBbGxCdXRDb29raWVzUmVwcm9UZXN0aW5nVGlt
ZW91dCB9OworZW51bSBjbGFzcyBTaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5IDog
Ym9vbCB7IE5vLCBZZXMgfTsKIAogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uIHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShOZXR3b3JrU3RvcmFnZVNlc3Npb24pOyBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKQEAgLTEyNyw3ICsxMjgsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBjb29raWVzRW5hYmxlZCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0Q29va2llKGNvbnN0IENvb2tpZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29v
a2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgbWFpbkRv
Y3VtZW50VVJMKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0
aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBjb25zdCBT
dHJpbmcmKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZXNGcm9tRE9N
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwg
T3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBTaG91
bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5LCBjb25zdCBTdHJpbmcmKSBjb25zdDsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBDb29raWUmKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoKTsKQEAg
LTEzNywxMSArMTM4LDExIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8Q29v
a2llPiBnZXRBbGxDb29raWVzKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPENvb2tpZT4g
Z2V0Q29va2llcyhjb25zdCBVUkwmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhc0Nvb2tp
ZXMoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25h
bDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIFZlY3RvcjxDb29r
aWU+JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9u
YWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBTaG91bGRBcHBs
eUlUUENvb2tpZUJsb2NraW5nUG9saWN5LCBWZWN0b3I8Q29va2llPiYpIGNvbnN0OwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZmx1c2hDb29raWVTdG9yZSgpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZXNGb3JE
T00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwm
LCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIElu
Y2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8
U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNvb2tp
ZXMpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNv
b2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBj
b25zdCBVUkwmLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5n
UG9saWN5KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29s
PiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4s
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFw
cGx5SVRQQ29va2llQmxvY2tpbmdQb2xpY3kpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0
ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0
IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5JikgY29uc3Q7CiAKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2lu
LmNwcAppbmRleCBlYjgxYzA1MmViZGE3MmRhMDZkYmU3Y2QyNDk0ZjRkMzJhZWUwZmQ0Li40NGM0
MmU3YzkwNjZhNTE1MzU4MmRiNjllN2RiN2EyNWEwMWU1YmZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbkNGTmV0V2luLmNwcApAQCAtMTg5LDcgKzE4OSw3IEBAIHN0YXRpYyBDRkFycmF5
UmVmIGNyZWF0ZUNvb2tpZXMoQ0ZEaWN0aW9uYXJ5UmVmIGhlYWRlckZpZWxkcywgQ0ZVUkxSZWYg
dXJsKQogICAgIHJldHVybiBwYXJzZWRDb29raWVzOwogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBjb25zdCBTdHJpbmcmIHZh
bHVlKSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9N
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1BvbGljeSwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAg
VU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC0yMjUsNyArMjI1LDcgQEAgc3RhdGljIGJvb2wgY29u
dGFpbnNTZWN1cmVDb29raWVzKENGQXJyYXlSZWYgY29va2llcykKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29v
a2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNv
bnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1
cmVDb29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJ
RCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMg
aW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFwcGx5SVRQQ29va2llQmxvY2tpbmdQb2xpY3kp
IGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJBTShw
YWdlSUQpOwpAQCAtMjQwLDcgKzI0MCw3IEBAIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFyCiAgICAg
cmV0dXJuIHsgY29va2llU3RyaW5nLCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzIH07CiB9CiAKLXN0
ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUlu
Zm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNs
dWRlU2VjdXJlQ29va2llcykgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8
RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXBwbHlJ
VFBDb29raWVCbG9ja2luZ1BvbGljeSkgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJ
RCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC0yNjQsNyArMjY0LDcgQEAgYm9vbCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNFbmFibGVkKCkgY29uc3QKICAgICByZXR1cm4g
cG9saWN5ID09IENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1
bWVudERvbWFpbiB8fCBwb2xpY3kgPT0gQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeUV4
Y2x1c2l2ZWx5RnJvbU1haW5Eb2N1bWVudERvbWFpbiB8fCBwb2xpY3kgPT0gQ0ZIVFRQQ29va2ll
U3RvcmFnZUFjY2VwdFBvbGljeUFsd2F5czsKIH0KIAotYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUlu
Zm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2ll
cykgY29uc3QKK2Jvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9w
dGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
IHBhZ2VJRCwgU2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1BvbGljeSwgVmVjdG9yPENvb2tp
ZT4mIHJhd0Nvb2tpZXMpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwogICAg
IFVOVVNFRF9QQVJBTShwYWdlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2Eu
bW0KaW5kZXggZGRjYTJjNjNjY2UzMGE2YzJjZTAwM2RiNzc5ODRjMjE5ODg3YjQ3ZC4uODlkYjI1
MGI0M2RkZjVkMzg4MDA3MWU3MTQyOTk0ZjVjYmZiYmY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbkNvY29hLm1tCkBAIC0zMDgsMjYgKzMwOCwyNyBAQCBzdGF0aWMgUmV0YWluUHRy
PE5TQXJyYXk+IGZpbHRlckNvb2tpZXMoTlNBcnJheSAqdW5maWx0ZXJlZENvb2tpZXMsIE9wdGlv
bmFsPFNlYwogICAgIHJldHVybiBmaWx0ZXJlZENvb2tpZXM7CiB9CiAKLXN0YXRpYyBOU0FycmF5
ICpjb29raWVzRm9yVVJMKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29u
c3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkKK3N0YXRpYyBOU0FycmF5ICpjb29raWVzRm9yVVJMKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlv
bmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCwgU2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1BvbGljeSBzaG91bGRBcHBseUlUUENv
b2tpZUJsb2NraW5nUG9saWN5KQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCi0gICAgaWYgKHNlc3Npb24uc2hvdWxkQmxvY2tDb29raWVzKGZpcnN0UGFydHksIHVybCwg
ZnJhbWVJRCwgcGFnZUlEKSkKKyAgICBpZiAoc2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1Bv
bGljeSA9PSBTaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5OjpZZXMgJiYgc2Vzc2lv
bi5zaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFtZUlELCBwYWdlSUQpKQog
ICAgICAgICByZXR1cm4gbmlsOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAg
ICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CisgICAgVU5VU0VEX1BBUkFNKHNob3VsZEFwcGx5SVRQ
Q29va2llQmxvY2tpbmdQb2xpY3kpOwogI2VuZGlmCiAgICAgcmV0dXJuIGh0dHBDb29raWVzRm9y
VVJMKHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUlu
Zm8sIHVybCk7CiB9CiAKIGVudW0gSW5jbHVkZUhUVFBPbmx5T3JOb3QgeyBEb05vdEluY2x1ZGVI
VFRQT25seSwgSW5jbHVkZUhUVFBPbmx5IH07Ci1zdGF0aWMgc3RkOjpwYWlyPFN0cmluZywgYm9v
bD4gY29va2llc0ZvclNlc3Npb24oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
LCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlSFRUUE9ubHlPck5vdCBpbmNsdWRl
SFRUUE9ubHksIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKQorc3Rh
dGljIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5j
bHVkZUhUVFBPbmx5T3JOb3QgaW5jbHVkZUhUVFBPbmx5LCBJbmNsdWRlU2VjdXJlQ29va2llcyBp
bmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1BvbGljeSBz
aG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5ID0gU2hvdWxkQXBwbHlJVFBDb29raWVC
bG9ja2luZ1BvbGljeTo6WWVzKQogewogICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFBy
b2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKIAogICAgIEJFR0lOX0JMT0NL
X09CSkNfRVhDRVBUSU9OUzsKIAotICAgIE5TQXJyYXkgKmNvb2tpZXMgPSBjb29raWVzRm9yVVJM
KHNlc3Npb24sIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQp
OworICAgIE5TQXJyYXkgKmNvb2tpZXMgPSBjb29raWVzRm9yVVJMKHNlc3Npb24sIGZpcnN0UGFy
dHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFwcGx5SVRQQ29v
a2llQmxvY2tpbmdQb2xpY3kpOwogICAgIGlmICghW2Nvb2tpZXMgY291bnRdKQogICAgICAgICBy
ZXR1cm4geyBTdHJpbmcoKSwgZmFsc2UgfTsgLy8gUmV0dXJuIGEgbnVsbCBzdHJpbmcsIG5vdCBh
biBlbXB0eSBvbmUgdGhhdCBTdHJpbmdCdWlsZGVyIHdvdWxkIGNyZWF0ZSBiZWxvdy4KIApAQCAt
Mzc3LDE0ICszNzgsMTQgQEAgc3RhdGljIHZvaWQgZGVsZXRlQWxsSFRUUENvb2tpZXMoQ0ZIVFRQ
Q29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlKQogICAgIENGSFRUUENvb2tpZVN0b3JhZ2VE
ZWxldGVBbGxDb29raWVzKGNvb2tpZVN0b3JhZ2UpOwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBi
b29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmws
IE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNv
bnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tp
ZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVT
aXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJ
RCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMg
aW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFwcGx5SVRQQ29va2llQmxvY2tpbmdQb2xpY3kg
c2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1BvbGljeSkgY29uc3QKIHsKLSAgICByZXR1cm4g
Y29va2llc0ZvclNlc3Npb24oKnRoaXMsIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBm
cmFtZUlELCBwYWdlSUQsIERvTm90SW5jbHVkZUhUVFBPbmx5LCBpbmNsdWRlU2VjdXJlQ29va2ll
cyk7CisgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1l
U2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBEb05vdEluY2x1ZGVIVFRQT25seSwgaW5j
bHVkZVNlY3VyZUNvb2tpZXMsIHNob3VsZEFwcGx5SVRQQ29va2llQmxvY2tpbmdQb2xpY3kpOwog
fQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlk
ZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1
ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0
cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNp
dGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlE
LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBp
bmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1BvbGljeSBz
aG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5KSBjb25zdAogewotICAgIHJldHVybiBj
b29raWVzRm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZy
YW1lSUQsIHBhZ2VJRCwgSW5jbHVkZUhUVFBPbmx5LCBpbmNsdWRlU2VjdXJlQ29va2llcyk7Cisg
ICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUlu
Zm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBJbmNsdWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVD
b29raWVzLCBzaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5KTsKIH0KIAogc3RkOjpw
YWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShjb25zdCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYgaGVhZGVy
RmllbGRQcm94eSkgY29uc3QKQEAgLTM5MiwxMiArMzkzLDIxIEBAIHN0ZDo6cGFpcjxTdHJpbmcs
IGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoY29uCiAgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlzLCBoZWFkZXJGaWVsZFBy
b3h5LmZpcnN0UGFydHksIGhlYWRlckZpZWxkUHJveHkuc2FtZVNpdGVJbmZvLCBoZWFkZXJGaWVs
ZFByb3h5LnVybCwgaGVhZGVyRmllbGRQcm94eS5mcmFtZUlELCBoZWFkZXJGaWVsZFByb3h5LnBh
Z2VJRCwgSW5jbHVkZUhUVFBPbmx5LCBoZWFkZXJGaWVsZFByb3h5LmluY2x1ZGVTZWN1cmVDb29r
aWVzKTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9N
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8s
IGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGNvbnN0IFN0cmluZyYgY29va2llU3RyKSBjb25z
dAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVS
TCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiBwYWdlSUQsIFNob3VsZEFwcGx5SVRQQ29va2llQmxvY2tpbmdQb2xpY3kgc2hv
dWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1BvbGljeSwgY29uc3QgU3RyaW5nJiBjb29raWVTdHIp
IGNvbnN0CiB7CiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVn
ZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TOwogCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBpZiAoc2hv
dWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1BvbGljeSA9PSBTaG91bGRBcHBseUlUUENvb2tpZUJs
b2NraW5nUG9saWN5OjpZZXMgJiYgc2hvdWxkQmxvY2tDb29raWVzKGZpcnN0UGFydHksIHVybCwg
ZnJhbWVJRCwgcGFnZUlEKSkKKyAgICAgICAgcmV0dXJuOworI2Vsc2UKKyAgICBVTlVTRURfUEFS
QU0oZnJhbWVJRCk7CisgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CisgICAgVU5VU0VEX1BBUkFN
KHNob3VsZEFwcGx5SVRQQ29va2llQmxvY2tpbmdQb2xpY3kpOworI2VuZGlmCisKICAgICAvLyA8
cmRhcjovL3Byb2JsZW0vNTYzMjg4Mz4gT24gMTAuNSwgTlNIVFRQQ29va2llU3RvcmFnZSB3b3Vs
ZCBzdG9yZSBhbiBlbXB0eSBjb29raWUsCiAgICAgLy8gd2hpY2ggd291bGQgYmUgc2VudCBhcyAi
Q29va2llOiA9Ii4KICAgICBpZiAoY29va2llU3RyLmlzRW1wdHkoKSkKQEAgLTQyMywxNCArNDMz
LDYgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVMKICNlbmRpZgogICAgIEFTU0VSVChbZmlsdGVy
ZWRDb29raWVzLmdldCgpIGNvdW50XSA8PSAxKTsKIAotI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCi0gICAgaWYgKHNob3VsZEJsb2NrQ29va2llcyhmaXJzdFBhcnR5LCB1cmws
IGZyYW1lSUQsIHBhZ2VJRCkpCi0gICAgICAgIHJldHVybjsKLSNlbHNlCi0gICAgVU5VU0VEX1BB
UkFNKGZyYW1lSUQpOwotICAgIFVOVVNFRF9QQVJBTShwYWdlSUQpOwotI2VuZGlmCi0KICAgICBz
ZXRIVFRQQ29va2llc0ZvclVSTChjb29raWVTdG9yYWdlKCkuZ2V0KCksIGZpbHRlcmVkQ29va2ll
cy5nZXQoKSwgY29va2llVVJMLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8pOwogCiAgICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKQEAgLTQ1NywxMiArNDU5LDEyIEBAIGJvb2wgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRW5hYmxlZCgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1ib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBV
UkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKK2Jv
b2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBP
cHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiBwYWdlSUQsIFNob3VsZEFwcGx5SVRQQ29va2llQmxvY2tpbmdQb2xpY3kgc2hvdWxkQXBwbHlJ
VFBDb29raWVCbG9ja2luZ1BvbGljeSwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0
CiB7CiAgICAgcmF3Q29va2llcy5jbGVhcigpOwogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUzsKIAotICAgIE5TQXJyYXkgKmNvb2tpZXMgPSBjb29raWVzRm9yVVJMKCp0aGlzLCBmaXJz
dFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlEKTsKKyAgICBOU0FycmF5
ICpjb29raWVzID0gY29va2llc0ZvclVSTCgqdGhpcywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZv
LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1BvbGlj
eSk7CiAgICAgTlNVSW50ZWdlciBjb3VudCA9IFtjb29raWVzIGNvdW50XTsKICAgICByYXdDb29r
aWVzLnJlc2VydmVDYXBhY2l0eShjb3VudCk7CiAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBp
IDwgY291bnQ7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCmluZGV4
IGYyYTE5MDM1NjFhYzFhNTBiMGJiZDhmNzU3YTBlNTY1NDYzYmI1MmEuLjRjMWU5YWQ2NGE0NWU2
ZWI3ODk3YWU3M2JjOWJlMWQ4NTVjM2JjMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Q3VybC5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgQ29va2llSmFyREImIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6Y29va2llRGF0YWJhc2UoKSBjb25zdAogICAgIHJldHVybiBtX2Nvb2tpZURhdGFiYXNl
OwogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29u
c3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKK3ZvaWQg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwg
T3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gcGFnZUlELCBTaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5LCBjb25zdCBTdHJp
bmcmIHZhbHVlKSBjb25zdAogewogICAgIGNvb2tpZVN0b3JhZ2UoKS5zZXRDb29raWVzRnJvbURP
TSgqdGhpcywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwg
dmFsdWUpOwogfQpAQCAtOTAsNyArOTAsNyBAQCBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
Y29va2llc0VuYWJsZWQoKSBjb25zdAogICAgIHJldHVybiBjb29raWVTdG9yYWdlKCkuY29va2ll
c0VuYWJsZWQoKnRoaXMpOwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5j
bHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8
U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3Qg
VVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNv
b2tpZXMsIFNob3VsZEFwcGx5SVRQQ29va2llQmxvY2tpbmdQb2xpY3kpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIGNvb2tpZVN0b3JhZ2UoKS5jb29raWVzRm9yRE9NKCp0aGlzLCBmaXJzdFBhcnR5LCBz
YW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcyk7
CiB9CkBAIC0xNjAsNyArMTYwLDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246Omhhc0Nv
b2tpZXMoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGwKICAgICBjb21w
bGV0aW9uSGFuZGxlcihmYWxzZSk7CiB9CiAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpn
ZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZy
YW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiBy
YXdDb29raWVzKSBjb25zdAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tp
ZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5m
bywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2lu
Z1BvbGljeSwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IGNvb2tpZVN0b3JhZ2UoKS5nZXRSYXdDb29raWVzKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0
ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCByYXdDb29raWVzKTsKIH0KQEAgLTE3MCw3ICsx
NzAsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Zmx1c2hDb29raWVTdG9yZSgpCiAg
ICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgV2ViS2l0IHRvIHVzZS4KIH0KIAotc3RkOjpwYWly
PFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2Ft
ZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFt
ZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2ll
cyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3Qg
VVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNv
b2tpZXMsIFNob3VsZEFwcGx5SVRQQ29va2llQmxvY2tpbmdQb2xpY3kpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIGNvb2tpZVN0b3JhZ2UoKS5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSgqdGhp
cywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCmlu
ZGV4IDNmYjg4OTJjNzlmZDVlNGY2NzBjYWM0ODg0ZjllZjBiNTM3MWIyYTUuLmI0M2I1MjFlNjcw
Njc3ZDc0OTlhMmYyNDFiNTY4YTkxNWZjMjUyZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uU291cC5jcHAKQEAgLTI2MSw3ICsyNjEsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaHR0cE9u
bHlDb29raWVFeGlzdHMoY29uc3QgR1NMaXN0KiBjb29raWVzLCBjb25zdCBnY2hhciogbmFtZQog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENv
b2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKK3Zv
aWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQs
IFNob3VsZEFwcGx5SVRQQ29va2llQmxvY2tpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYgdmFsdWUp
IGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJBTShw
YWdlSUQpOwpAQCAtNDMyLDcgKzQzMiw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpo
YXNDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsCiAgICAg
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogfQogCi1ib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVz
KSBjb25zdAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0
aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
cGFnZUlELCBTaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5LCBWZWN0b3I8Q29va2ll
PiYgcmF3Q29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZmlyc3RQYXJ0eSk7CiAg
ICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwpAQCAtNTAyLDcgKzUwMiw3IEBAIHN0YXRpYyBzdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlCiAgICAgcmV0dXJuIHsgU3RyaW5nOjpmcm9tVVRGOChjb29raWVIZWFkZXIu
Z2V0KCkpLCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzIH07CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcs
IGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQs
IEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3RkOjpw
YWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmws
IE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNo
b3VsZEFwcGx5SVRQQ29va2llQmxvY2tpbmdQb2xpY3kpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BB
UkFNKGZpcnN0UGFydHkpOwogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKQEAgLTUxMCw3ICs1
MTAsNyBAQCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNv
b2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcgogICAgIHJldHVybiBjb29raWVzRm9yU2Vz
c2lvbigqdGhpcywgdXJsLCBmYWxzZSwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogfQogCi1zdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZv
JiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZy
YW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwg
SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFwcGx5SVRQ
Q29va2llQmxvY2tpbmdQb2xpY3kpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZpcnN0UGFy
dHkpOwogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKQEAgLTUyMSw3ICs1MjEsNyBAQCBzdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGNvbgogCiBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IENvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFByb3h5JiBoZWFkZXJGaWVsZFByb3h5KSBjb25zdAogewotICAgIHJl
dHVybiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShoZWFkZXJGaWVsZFByb3h5LmZpcnN0
UGFydHksIGhlYWRlckZpZWxkUHJveHkuc2FtZVNpdGVJbmZvLCBoZWFkZXJGaWVsZFByb3h5LnVy
bCwgaGVhZGVyRmllbGRQcm94eS5mcmFtZUlELCBoZWFkZXJGaWVsZFByb3h5LnBhZ2VJRCwgaGVh
ZGVyRmllbGRQcm94eS5pbmNsdWRlU2VjdXJlQ29va2llcyk7CisgICAgcmV0dXJuIGNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGhlYWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0eSwgaGVhZGVy
RmllbGRQcm94eS5zYW1lU2l0ZUluZm8sIGhlYWRlckZpZWxkUHJveHkudXJsLCBoZWFkZXJGaWVs
ZFByb3h5LmZyYW1lSUQsIGhlYWRlckZpZWxkUHJveHkucGFnZUlELCBoZWFkZXJGaWVsZFByb3h5
LmluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5
OjpZZXMpOwogfQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Zmx1c2hDb29raWVTdG9y
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDJiNjA3ODk2YzlmNWEyNTZkMjY4
ZTA4NWMwODA5YmE4NjJlM2RlYTQuLjRjMDE5YTViM2NkMzA3MDMxYzU1ZjAzN2E2ZjA5NmVkMjJk
NDA1MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC01NjQsMTIgKzU2NCwxMiBA
QCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlclVSTFNjaGVtZXNB
c0NPUlNFbmFibGVkKFZlY3RvcjxTdHJpbgogICAgICAgICBtX3NjaGVtZVJlZ2lzdHJ5LT5yZWdp
c3RlclVSTFNjaGVtZUFzQ09SU0VuYWJsZWQoV1RGTW92ZShzY2hlbWUpKTsKIH0KIAotdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVy
bCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIHNlY3VyZUNv
b2tpZXNBY2Nlc3NlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2ll
cyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1BvbGlj
eSBzaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBz
dG9yYWdlU2Vzc2lvbigpOwogICAgIGlmICghbmV0d29ya1N0b3JhZ2VTZXNzaW9uKQogICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9LCBmYWxzZSk7Ci0gICAgYXV0byByZXN1bHQg
PSBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmNvb2tpZXNGb3JET00oZmlyc3RQYXJ0eSwgc2FtZVNp
dGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOworICAg
IGF1dG8gcmVzdWx0ID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5jb29raWVzRm9yRE9NKGZpcnN0
UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVD
b29raWVzLCBzaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5KTsKICNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKSAmJiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBp
ZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCkpIHsKICAgICAgICAgaWYgKHNlc3Np
b24tPnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkpCkBAIC01NzksMTIgKzU3OSwxMiBAQCB2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKGNvbnN0IFVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgUwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVz
dWx0LmZpcnN0KSwgcmVzdWx0LnNlY29uZCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiBwYWdlSUQsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFNob3Vs
ZEFwcGx5SVRQQ29va2llQmxvY2tpbmdQb2xpY3kgc2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2lu
Z1BvbGljeSwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCiB7CiAgICAgYXV0byogbmV0d29y
a1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oKTsKICAgICBpZiAoIW5ldHdvcmtTdG9y
YWdlU2Vzc2lvbikKICAgICAgICAgcmV0dXJuOwotICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+
c2V0Q29va2llc0Zyb21ET00oZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQs
IHBhZ2VJRCwgY29va2llU3RyaW5nKTsKKyAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPnNldENv
b2tpZXNGcm9tRE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdl
SUQsIHNob3VsZEFwcGx5SVRQQ29va2llQmxvY2tpbmdQb2xpY3ksIGNvb2tpZVN0cmluZyk7CiAj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykgJiYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpKSB7CiAgICAgICAg
IGlmIChzZXNzaW9uLT5zaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpKQpAQCAtNjAxLDIyICs2
MDEsMjIgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0VuYWJs
ZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4KICAgICBjb21wbGV0aW9uSGFuZGxlcihu
ZXR3b3JrU3RvcmFnZVNlc3Npb24tPmNvb2tpZXNFbmFibGVkKCkpOwogfQogCi12b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBj
b25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2Vj
dXJlQ29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcsIGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1l
U2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRl
bnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVk
ZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFwcGx5SVRQQ29va2ll
QmxvY2tpbmdQb2xpY3kgc2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1BvbGljeSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdHJpbmcsIGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKCk7CiAgICAg
aWYgKCFuZXR3b3JrU3RvcmFnZVNlc3Npb24pCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcih7IH0sIGZhbHNlKTsKLSAgICBhdXRvIHJlc3VsdCA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lv
bi0+Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZv
LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOworICAgIGF1dG8g
cmVzdWx0ID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNs
dWRlU2VjdXJlQ29va2llcywgc2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1BvbGljeSk7CiAg
ICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQuZmlyc3QpLCByZXN1bHQuc2Vjb25k
KTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Z2V0UmF3Q29va2ll
cyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
LCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0
aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
cGFnZUlELCBTaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5IHNob3VsZEFwcGx5SVRQ
Q29va2llQmxvY2tpbmdQb2xpY3ksIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNv
cmU6OkNvb2tpZT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byogbmV0d29y
a1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oKTsKICAgICBpZiAoIW5ldHdvcmtTdG9y
YWdlU2Vzc2lvbikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAg
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gcmVzdWx0OwotICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lv
bi0+Z2V0UmF3Q29va2llcyhmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwg
cGFnZUlELCByZXN1bHQpOworICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+Z2V0UmF3Q29va2ll
cyhmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRB
cHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5LCByZXN1bHQpOwogICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUocmVzdWx0KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCAw
ZTZlODIzMmI3MmFhODc5MjJkYTg4MGQyZmMyZmRlODg0MTJmNzRiLi4xNjA2MzBjOGI3ZjQ3Mjhi
N2Y3MWE5YzRhOWU1MjA0MjYwZTBlMWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC01
OCw2ICs1OCw3IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7
CiBlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biA6IGJvb2w7CiBlbnVtIGNs
YXNzIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIDogYm9vbDsKK2VudW0gY2xhc3MgU2hvdWxkQXBw
bHlJVFBDb29raWVCbG9ja2luZ1BvbGljeSA6IGJvb2w7CiBzdHJ1Y3QgU2FtZVNpdGVJbmZvOwog
CiBlbnVtIGNsYXNzIEluY2x1ZGVTZWN1cmVDb29raWVzIDogYm9vbDsKQEAgLTE5NywxMSArMTk4
LDExIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lc0FzQ09SU0VuYWJs
ZWQoVmVjdG9yPFN0cmluZz4mJiBzY2hlbWVzKTsKIAotICAgIHZvaWQgY29va2llc0ZvckRPTShj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVz
QWNjZXNzZWQpPiYmKTsKLSAgICB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9u
YWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50
aWZpZXI+LCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGNvb2tpZXNGb3JET00oY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3Jl
OjpJbmNsdWRlU2VjdXJlQ29va2llcywgV2ViQ29yZTo6U2hvdWxkQXBwbHlJVFBDb29raWVCbG9j
a2luZ1BvbGljeSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBi
b29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOworICAgIHZvaWQgc2V0Q29va2llc0Zyb21E
T00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBj
b25zdCBVUkwmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBXZWJDb3JlOjpTaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5LCBjb25zdCBT
dHJpbmcmKTsKICAgICB2b2lkIGNvb2tpZXNFbmFibGVkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOwotICAgIHZvaWQgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwm
LCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcj4sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vz
c2VkKT4mJik7Ci0gICAgdm9pZCBnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8V2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmKTsKKyAg
ICB2b2lkIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8V2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
LCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcywgV2ViQ29yZTo6U2hvdWxkQXBwbHlJVFBD
b29raWVCbG9ja2luZ1BvbGljeSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2ll
U3RyaW5nLCBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOworICAgIHZvaWQgZ2V0UmF3
Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5m
byYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIE9wdGlv
bmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6U2hvdWxkQXBwbHlJVFBDb29r
aWVCbG9ja2luZ1BvbGljeSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6
Q29va2llPiYmKT4mJik7CiAgICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJiBjb29raWVOYW1lKTsKIAogICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCmluZGV4IGIwZGFhM2MzZjA4NTMxYzk5MTk1NWM5MTljMmMzZDM0NjNhMmQy
NjQuLjcxMmI5NDIwZjE1NjcwOTg3MzA2NjE0OTkzMjgzZjY3NzViYTk4NTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMzQsMTEgKzM0LDExIEBAIG1l
c3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsK
ICAgICBTdGFydERvd25sb2FkKFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIHN1Z2dlc3RlZE5hbWUpCiAgICAgQ29u
dmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyLCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0IHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UpCiAK
LSAgICBDb29raWVzRm9yRE9NKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNp
dGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNv
b2tpZXMpIC0+IChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tp
ZXMpIFN5bmNocm9ub3VzCi0gICAgU2V0Q29va2llc0Zyb21ET00oVVJMIGZpcnN0UGFydHksIHN0
cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25h
bDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyPiBwYWdlSUQsIFN0cmluZyBjb29raWVTdHJpbmcpCisgICAgQ29va2llc0Zv
ckRPTShVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0
ZUluZm8sIFVSTCB1cmwsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJl
Q29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZEFw
cGx5SVRQQ29va2llQmxvY2tpbmdQb2xpY3kgc2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1Bv
bGljeSkgLT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2ll
cykgU3luY2hyb25vdXMKKyAgICBTZXRDb29raWVzRnJvbURPTShVUkwgZmlyc3RQYXJ0eSwgc3Ry
dWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQs
IGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5IHNo
b3VsZEFwcGx5SVRQQ29va2llQmxvY2tpbmdQb2xpY3ksIFN0cmluZyBjb29raWVTdHJpbmcpCiAg
ICAgQ29va2llc0VuYWJsZWQoKSAtPiAoYm9vbCBlbmFibGVkKSBTeW5jaHJvbm91cwotICAgIENv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29y
ZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8V2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cj4gcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMpIC0+IChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIGRpZEFjY2Vzc1Nl
Y3VyZUNvb2tpZXMpIFN5bmNocm9ub3VzCi0gICAgR2V0UmF3Q29va2llcyhVUkwgZmlyc3RQYXJ0
eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9w
dGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNv
b2tpZXMpIFN5bmNocm9ub3VzCisgICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoVVJM
IGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBV
UkwgdXJsLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlv
bmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJ
bmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgZW51bTpib29sIFdlYkNv
cmU6OlNob3VsZEFwcGx5SVRQQ29va2llQmxvY2tpbmdQb2xpY3kgc2hvdWxkQXBwbHlJVFBDb29r
aWVCbG9ja2luZ1BvbGljeSkgLT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNz
U2VjdXJlQ29va2llcykgU3luY2hyb25vdXMKKyAgICBHZXRSYXdDb29raWVzKFVSTCBmaXJzdFBh
cnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwg
T3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkQXBw
bHlJVFBDb29raWVCbG9ja2luZ1BvbGljeSBzaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9s
aWN5KSAtPiAoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgU3luY2hyb25vdXMKICAg
ICBEZWxldGVDb29raWUoVVJMIHVybCwgU3RyaW5nIGNvb2tpZU5hbWUpCiAKICAgICBSZWdpc3Rl
ckZpbGVCbG9iVVJMKFVSTCB1cmwsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSBleHRlbnNpb25IYW5kbGUsIFN0cmluZyBjb250ZW50VHlwZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cAppbmRleCBkZjA5ZjY0ZjY2ZWYyZDQ3Yzc3OTkxYWI0ZTk4ZDY4NDM0ODI5MGM3Li43Y2Y3YWVl
NWJiZDNjOGY1MmRlMzkxZmFkNDk0MTE0MjczNGM4NTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMTk0
LDcgKzExOTQsNyBAQCBzdGF0aWMgdm9pZCBsb2dDb29raWVJbmZvcm1hdGlvbkludGVybmFsKE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aQogICAgIEFTU0VSVChOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKGNvbm5lY3Rpb24sIG5l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQoKSkpOwogCiAgICAgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4gY29va2llczsKLSAgICBpZiAoIW5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5nZXRSYXdD
b29raWVzKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGNv
b2tpZXMpKQorICAgIGlmICghbmV0d29ya1N0b3JhZ2VTZXNzaW9uLmdldFJhd0Nvb2tpZXMoZmly
c3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgU2hvdWxkQXBwbHlJ
VFBDb29raWVCbG9ja2luZ1BvbGljeTo6WWVzLCBjb29raWVzKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgYXV0byBlc2NhcGVkVVJMID0gZXNjYXBlRm9ySlNPTih1cmwuc3RyaW5nKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0
aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCBkN2RhNDlmZjU0NTVjN2NmYWU2OWMw
NWVjMzExMTMyOTM3MmEwYTdkLi5mOTE3ZjUxN2I0Y2EwZjMxN2YyYzgwYmFmZmI3Y2FlNzE4ZjRi
Y2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtNjgsNyArNjgsOSBA
QCB2b2lkIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgc2hvdWxkSW5jbHVkZUxvY2FsaG9z
dEluUmVzb3VyY2VMb2FkU3RhdGlzdGljczsKICAgICBlbmNvZGVyIDw8IGVuYWJsZVJlc291cmNl
TG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU7CiAgICAgZW5jb2RlciA8PCByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2U7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKICAgICBlbmNvZGVyIDw8IHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU7
CisjZW5kaWYKICAgICBlbmNvZGVyIDw8IGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2Rl
OwogCiAgICAgZW5jb2RlciA8PCBuZXR3b3JrQ2FjaGVEaXJlY3RvcnkgPDwgbmV0d29ya0NhY2hl
RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwpAQCAtMjAyLDEwICsyMDQsMTIgQEAgT3B0aW9uYWw8
TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM+IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25Q
YXJhbWV0ZXJzOjpkZWMKICAgICBpZiAoIXJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2
YWxlbnRSZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAorI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZT4gdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsKICAg
ICBkZWNvZGVyID4+IHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU7CiAgICAgaWYgKCF0aGly
ZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
I2VuZGlmCiAKICAgICBPcHRpb25hbDxXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1v
dmFsTW9kZT4gZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU7CiAgICAgZGVjb2RlciA+
PiBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTsKQEAgLTMwMCw3ICszMDQsOSBAQCBP
cHRpb25hbDxOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycz4gTmV0d29ya1Nlc3Npb25D
cmVhdGlvblBhcmFtZXRlcnM6OmRlYwogICAgICAgICAsIFdURk1vdmUoKmVuYWJsZVJlc291cmNl
TG9hZFN0YXRpc3RpY3NMb2dUZXN0aW5nRXZlbnQpCiAgICAgICAgICwgV1RGTW92ZSgqc2hvdWxk
SW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljcykKICAgICAgICAgLCBXVEZN
b3ZlKCplbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKQorI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgICAgICwgV1RGTW92ZSgqdGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZSkKKyNlbmRpZgogICAgICAgICAsIFdURk1vdmUoKmZpcnN0UGFydHlX
ZWJzaXRlRGF0YVJlbW92YWxNb2RlKQogICAgICAgICAsIFdURk1vdmUoKmRldmljZU1hbmFnZW1l
bnRSZXN0cmljdGlvbnNFbmFibGVkKQogICAgICAgICAsIFdURk1vdmUoKmFsbExvYWRzQmxvY2tl
ZEJ5RGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0ZvclRlc3RpbmcpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRp
b25QYXJhbWV0ZXJzLmgKaW5kZXggMGQ1N2FiNzEyMjVmY2MyNTgwNjg0Zjg5MmE3NTgzMDRkN2Q3
ZjA2MC4uODJlOTVmMTk4NTYzMzYxYzA5YmI4MTUwMGYzMTAwMDI5NTUzYTQ3MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFy
YW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b25DcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtODYsNyArODYsOSBAQCBzdHJ1Y3QgTmV0d29ya1Nl
c3Npb25DcmVhdGlvblBhcmFtZXRlcnMgewogICAgIGJvb2wgZW5hYmxlUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0xvZ1Rlc3RpbmdFdmVudCB7IGZhbHNlIH07CiAgICAgYm9vbCBzaG91bGRJbmNsdWRl
TG9jYWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzIHsgdHJ1ZSB9OwogICAgIGJvb2wgZW5h
YmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSB7IGZhbHNlIH07CisjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmdNb2RlIHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgeyBXZWJDb3JlOjpUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGwgfTsKKyNlbmRpZgogICAgIFdlYkNvcmU6OkZp
cnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92
YWxNb2RlIHsgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU6OkFsbEJ1
dENvb2tpZXMgfTsKICAgICBib29sIGRldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNFbmFibGVk
IHsgZmFsc2UgfTsKICAgICBib29sIGFsbExvYWRzQmxvY2tlZEJ5RGV2aWNlTWFuYWdlbWVudFJl
c3RyaWN0aW9uc0ZvclRlc3RpbmcgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHkKaW5kZXggZjhiY2UxNDU1MDdkZjQ5ZTg5ZWQ0ZjcxOTg3NmUxMGJmNzA5
NmJkZS4uMGU1ODQ4MWUyOTYyZTAwMjRlMDVhYjBiZGVjY2I3NDM0MDZmODVmYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC01ODQsNiArNTg0LDcgQEAgZGVm
IGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
U3RhdGUnOiBbJzxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPiddLAogICAgICAgICAnV2Vi
Q29yZTo6U2hpcHBpbmdDb250YWN0VXBkYXRlJzogWyc8V2ViQ29yZS9BcHBsZVBheVNlc3Npb25Q
YXltZW50UmVxdWVzdC5oPiddLAogICAgICAgICAnV2ViQ29yZTo6U2hpcHBpbmdNZXRob2RVcGRh
dGUnOiBbJzxXZWJDb3JlL0FwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Lmg+J10sCisgICAg
ICAgICdXZWJDb3JlOjpTaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5JzogWyc8V2Vi
Q29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlNob3Vs
ZE5vdGlmeVdoZW5SZXNvbHZlZCc6IFsnPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+J10s
CiAgICAgICAgICdXZWJDb3JlOjpTaG91bGRTYW1wbGUnOiBbJzxXZWJDb3JlL0RpYWdub3N0aWNM
b2dnaW5nQ2xpZW50Lmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0
V2FzU2hvd24nOiBbJzxXZWJDb3JlL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5oPiddLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmgK
aW5kZXggZTA5NDAwYTdhYWE2NDYxMWZkNTgyNjU3MTYwODI0MjIzMjI0ODIzMS4uMzBkYjRjOWI1
Mzg4NmEwOGIzMTdhNTI5NGRjNzI1MDEzYTAzZjU5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oCkBAIC0yNiw2ICsyNiw3
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUgPHBhbC9TZXNz
aW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCkBAIC00NSw2ICs0Niw5IEBAIHN0
cnVjdCBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycyB7CiAgICAgU3RyaW5nIGphdmFTY3Jp
cHRDb25maWd1cmF0aW9uRGlyZWN0b3J5OwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBq
YXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBIYXNo
TWFwPHVuc2lnbmVkLCBXYWxsVGltZT4gcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzOworI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgV2ViQ29yZTo6VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nTW9kZSB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIHsgV2ViQ29y
ZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsIH07CisjZW5kaWYKICAgICBib29s
IHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkIHsgZmFsc2UgfTsKIAogICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKQEAgLTY3LDYgKzcx
LDkgQEAgdm9pZCBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVyczo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRp
cmVjdG9yeTsKICAgICBlbmNvZGVyIDw8IGphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlOwogICAgIGVuY29kZXIgPDwgcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFz
aGVzOworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgZW5jb2RlciA8
PCB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOworI2VuZGlmCiAgICAgZW5jb2RlciA8PCBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDsKIH0KIApAQCAtMTMyLDYgKzEzOSwxMyBAQCBP
cHRpb25hbDxXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycz4gV2ViUHJvY2Vzc0RhdGFTdG9y
ZVBhcmFtZXRlcnM6OmRlY29kZShEZQogICAgIGlmICghcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFz
aGVzKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCisjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmdNb2RlPiB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOworICAgIGRlY29kZXIg
Pj4gdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsKKyAgICBpZiAoIXRoaXJkUGFydHlDb29r
aWVCbG9ja2luZ01vZGUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisjZW5kaWYKKwog
ICAgIGJvb2wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgPSBmYWxzZTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKSkKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTE1MCw2ICsxNjQsOSBAQCBPcHRpb25hbDxXZWJQcm9j
ZXNzRGF0YVN0b3JlUGFyYW1ldGVycz4gV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnM6OmRl
Y29kZShEZQogICAgICAgICBXVEZNb3ZlKGphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5
KSwKICAgICAgICAgV1RGTW92ZSgqamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnlFeHRl
bnNpb25IYW5kbGUpLAogICAgICAgICBXVEZNb3ZlKCpwbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNo
ZXMpLAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgICAgICp0aGly
ZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlLAorI2VuZGlmCiAgICAgICAgIHJlc291cmNlTG9hZFN0
YXRpc3RpY3NFbmFibGVkCiAgICAgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGYzNmI3OWNlNTQ1
YTk4N2YyODE3NjFhYmFlNTY3ZWRmMDY4MzcwMGEuLjVmYmQzNjEzMDM4NTQ3ZDAyMzMyNGMwNWY5
MzY0OTgyNjM3YzI0YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTA3OCwxMSArMTA3OCw2IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0
aW5nKGJvb2wgZW5hYmxlZCwgQ29tCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0U2hv
dWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIGJsb2NraW5nTW9kZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmICghY2FuU2Vu
ZE1lc3NhZ2UoKSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIAogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3M6OlNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKHNlc3Np
b25JRCwgYmxvY2tpbmdNb2RlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggMzA2NDRiYmQ5
N2ViNzcyOGZiNGNiMDJkYTdkNjc0NTY2OWExNWEwNS4uODFjZDVkNmM2YmRmMTRmNTFiMzNlZTAz
MmZmMTRhMzllOTNiOGQyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcApAQCAtNTc2LDcgKzU3Niw5IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nl
c3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoCiAgICAg
Ym9vbCBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50ID0gZmFsc2U7
CiAgICAgYm9vbCBzaG91bGRJbmNsdWRlTG9jYWxob3N0ID0gdHJ1ZTsKICAgICBib29sIGVuYWJs
ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUgPSBmYWxzZTsKKyNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9j
a2luZ01vZGUgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IFdlYkNvcmU6OlRoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGU6OkFsbDsKKyNlbmRpZgogICAgIFdlYkNvcmU6OkZpcnN0UGFy
dHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2Rl
ID0gV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU6OkFsbEJ1dENvb2tp
ZXM7CiAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gbWFudWFsUHJldmFsZW50UmVzb3Vy
Y2UgeyB9OwogICAgIGlmICh3aXRoV2Vic2l0ZURhdGFTdG9yZSkgewpAQCAtNTg4LDcgKzU5MCw5
IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJv
Y2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoCiAgICAgICAgICAgICBhdXRvIG5ldHdvcmtTZXNz
aW9uUGFyYW1ldGVycyA9IHdpdGhXZWJzaXRlRGF0YVN0b3JlLT5wYXJhbWV0ZXJzKCkubmV0d29y
a1Nlc3Npb25QYXJhbWV0ZXJzOwogICAgICAgICAgICAgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCA9
IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zaG91bGRJbmNsdWRlTG9jYWxob3N0SW5SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzOwogICAgICAgICAgICAgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RlYnVnTW9kZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5lbmFibGVSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGVidWdNb2RlOworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
CiAgICAgICAgICAgICB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlID0gbmV0d29ya1Nlc3Np
b25QYXJhbWV0ZXJzLnRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU7CisjZW5kaWYKICAgICAg
ICAgICAgIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlID0gbmV0d29ya1Nlc3Npb25Q
YXJhbWV0ZXJzLmZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOwogICAgICAgICAgICAg
bWFudWFsUHJldmFsZW50UmVzb3VyY2UgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlOwogICAgICAgICB9CkBAIC02
MTAsNyArNjE0LDkgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdpdGgKICAgICAgICAgICAgIGF1dG8g
bmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzID0gbV93ZWJzaXRlRGF0YVN0b3JlLT5wYXJhbWV0ZXJz
KCkubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzOwogICAgICAgICAgICAgc2hvdWxkSW5jbHVkZUxv
Y2FsaG9zdCA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zaG91bGRJbmNsdWRlTG9jYWxob3N0
SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogICAgICAgICAgICAgZW5hYmxlUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RlYnVnTW9kZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5lbmFibGVSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlOworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCiAgICAgICAgICAgICB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlID0gbmV0
d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU7CisjZW5k
aWYKICAgICAgICAgICAgIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlID0gbmV0d29y
a1Nlc3Npb25QYXJhbWV0ZXJzLmZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOwogICAg
ICAgICAgICAgbWFudWFsUHJldmFsZW50UmVzb3VyY2UgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRl
cnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlOwogICAgICAg
ICB9CkBAIC02MzUsNyArNjQxLDkgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bv
b2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdpdGgKICAgICBwYXJh
bWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVy
cy5lbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50ID0gZW5hYmxlUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0xvZ1Rlc3RpbmdFdmVudDsKICAgICBwYXJhbWV0ZXJzLmRlZmF1
bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5zaG91bGRJbmNs
dWRlTG9jYWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gc2hvdWxkSW5jbHVkZUxvY2Fs
aG9zdDsKICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtT
ZXNzaW9uUGFyYW1ldGVycy5lbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlID0g
ZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZTsKKyNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFt
ZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnRoaXJkUGFydHlDb29raWVCbG9ja2luZ01v
ZGUgPSB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOworI2VuZGlmCiAgICAgcGFyYW1ldGVy
cy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuZmly
c3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgPSBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1v
dmFsTW9kZTsKIAogICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0
d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxl
bnRSZXNvdXJjZSA9IG1hbnVhbFByZXZhbGVudFJlc291cmNlOwpAQCAtOTQxLDYgKzk0OSw5IEBA
IFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYlByb2Nlc3NQb29sOjp3ZWJQcm9jZXNz
RGF0YVN0b3JlUGFyYW1ldGVycyhXZWJQCiAgICAgICAgIFdURk1vdmUoamF2YVNjcmlwdENvbmZp
Z3VyYXRpb25EaXJlY3RvcnkpLAogICAgICAgICBXVEZNb3ZlKGphdmFTY3JpcHRDb25maWd1cmF0
aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKSwKICAgICAgICAgV1RGTW92ZShwbHVnSW5BdXRv
U3RhcnRPcmlnaW5IYXNoZXMpLAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
CisgICAgICAgIHdlYnNpdGVEYXRhU3RvcmUudGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSgp
LAorI2VuZGlmCiAgICAgICAgIHdlYnNpdGVEYXRhU3RvcmUucmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0VuYWJsZWQoKQogICAgIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcAppbmRleCBjNDRiZjdjMzJlOTkzMTM5YzEwM2M0N2U1MTY0MjRkOGVkYzg2NTZm
Li44NDFlNjQ1YmRkNWI4MDU4ZThhOTk5NDMyNjAyNWYwM2NiZDcwZmEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTQzMyw2ICs0MzMsMTEgQEAg
dm9pZCBXZWJQcm9jZXNzUHJveHk6Om5vdGlmeVBhZ2VTdGF0aXN0aWNzVGVsZW1ldHJ5RmluaXNo
ZWQoQVBJOjpPYmplY3QqIG1lc3NhZ2UKICAgICBmb3IgKGF1dG8mIHBhZ2UgOiBnbG9iYWxQYWdl
TWFwKCkpCiAgICAgICAgIHBhZ2UudmFsdWUtPnBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZSgi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkIiwgbWVzc2FnZUJvZHkpOwog
fQorCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2ll
c0ZvclRlc3RpbmcoVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSB0aGlyZFBhcnR5Q29va2ll
QmxvY2tpbmdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRT
aG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyh0aGlyZFBhcnR5Q29va2llQmxv
Y2tpbmdNb2RlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQogI2VuZGlmCiAKIFJl
ZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50
JiBwYWdlQ2xpZW50LCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiBwYWdlQ29uZmlndXJh
dGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggOTY1
ZmIxY2UwMTdiMTllYzQ4ZWU4ZjRkYjQwMTZkNmI5MTliNDIzZC4uNTZmODk5MWE2M2JjN2MxMDg2
ZjQ0NWRlYjU2NWJiMzhjZjdmMmFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmgKQEAgLTY2LDYgKzY2LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0Owogc3Ry
dWN0IFBsdWdpbkluZm87CiBzdHJ1Y3QgUHJld2FybUluZm9ybWF0aW9uOwogc3RydWN0IFNlY3Vy
aXR5T3JpZ2luRGF0YTsKK2VudW0gY2xhc3MgVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA6
IHVpbnQ4X3Q7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMjA2LDYgKzIwNyw4IEBAIHB1
YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIG5vdGlmeVdlYnNpdGVEYXRhRGVsZXRpb25Gb3JSZWdp
c3RyYWJsZURvbWFpbnNGaW5pc2hlZCgpOwogICAgIHN0YXRpYyB2b2lkIG5vdGlmeVdlYnNpdGVE
YXRhU2NhbkZvclJlZ2lzdHJhYmxlRG9tYWluc0ZpbmlzaGVkKCk7CisKKyAgICB2b2lkIHNldFNo
b3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKFdlYkNvcmU6OlRoaXJkUGFydHlD
b29raWVCbG9ja2luZ01vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAjZW5kaWYK
IAogICAgIHZvaWQgZW5hYmxlU3VkZGVuVGVybWluYXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVE
YXRhU3RvcmVDb2NvYS5tbQppbmRleCBhM2NjNzJkOTk2ZGM5NTdjOWVmNjU2OTZlOTk4NGE4NWFm
N2I2MmU3Li4wMDIyYTBiZGI4YmEzYzFkZTRkMWM5OWRjODYwOWZlZDE3MTg3NWRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0
YVN0b3JlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCkBAIC02MSw2ICs2MSwyMCBAQCBzdGF0aWMg
SGFzaFNldDxXZWJzaXRlRGF0YVN0b3JlKj4mIGRhdGFTdG9yZXMoKQogCiBzdGF0aWMgTlNTdHJp
bmcgKiBjb25zdCBXZWJLaXROZXR3b3JrTG9hZFRocm90dGxlTGF0ZW5jeU1pbGxpc2Vjb25kc0Rl
ZmF1bHRzS2V5ID0gQCJXZWJLaXROZXR3b3JrTG9hZFRocm90dGxlTGF0ZW5jeU1pbGxpc2Vjb25k
cyI7CiAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorV2ViQ29yZTo6VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSBXZWJzaXRlRGF0YVN0b3JlOjp0aGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdNb2RlKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fdGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZSkgeworICAgICAgICBOU1VzZXJEZWZhdWx0cyAqZGVmYXVsdHMgPSBbTlNVc2Vy
RGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdOworICAgICAgICBpZiAoW2RlZmF1bHRzIGJv
b2xGb3JLZXk6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJFeHBlcmltZW50YWwlQCIsIFdl
YlByZWZlcmVuY2VzS2V5Ojppc1RoaXJkUGFydHlDb29raWVCbG9ja2luZ0Rpc2FibGVkS2V5KCku
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKV1dKQorICAgICAgICAgICAgbV90aGlyZFBhcnR5Q29va2ll
QmxvY2tpbmdNb2RlID0gV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxs
T25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb247CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IFdlYkNvcmU6OlRoaXJkUGFydHlDb29r
aWVCbG9ja2luZ01vZGU6OkFsbDsKKyAgICB9CisgICAgcmV0dXJuICptX3RoaXJkUGFydHlDb29r
aWVCbG9ja2luZ01vZGU7Cit9CisjZW5kaWYKKwogV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMg
V2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycygpCiB7CiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQ
cml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwpAQCAtNzAs
NyArODQsNiBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpw
YXJhbWV0ZXJzKCkKICAgICBOU1VzZXJEZWZhdWx0cyAqZGVmYXVsdHMgPSBbTlNVc2VyRGVmYXVs
dHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdOwogICAgIGJvb2wgc2hvdWxkTG9nQ29va2llSW5mb3Jt
YXRpb24gPSBmYWxzZTsKICAgICBib29sIGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1
Z01vZGUgPSBmYWxzZTsKLSAgICBhdXRvIHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgPSBX
ZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGw7CiAgICAgYXV0byBmaXJz
dFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA9IFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRl
RGF0YVJlbW92YWxNb2RlOjpBbGxCdXRDb29raWVzOwogICAgIGJvb2wgZW5hYmxlTGVnYWN5VExT
ID0gZmFsc2U7CiAgICAgaWYgKGlkIHZhbHVlID0gW2RlZmF1bHRzIG9iamVjdEZvcktleTpAIldl
YktpdEVuYWJsZUxlZ2FjeVRMUyJdKQpAQCAtODUsMTAgKzk4LDYgQEAgV2Vic2l0ZURhdGFTdG9y
ZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycygpCiAgICAgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJl
c291cmNlIHsgfTsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGVu
YWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUgPSBbZGVmYXVsdHMgYm9vbEZvcktl
eTpAIklUUERlYnVnTW9kZSJdOwotICAgIGlmIChbZGVmYXVsdHMgYm9vbEZvcktleTpbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAIkV4cGVyaW1lbnRhbCVAIiwgV2ViUHJlZmVyZW5jZXNLZXk6
OmlzVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nRGlzYWJsZWRLZXkoKS5jcmVhdGVDRlN0cmluZygp
LmdldCgpXV0pCi0gICAgICAgIHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgPSBXZWJDb3Jl
OjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGxPblNpdGVzV2l0aG91dFVzZXJJbnRl
cmFjdGlvbjsKLSAgICBlbHNlCi0gICAgICAgIHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUg
PSBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGw7CiAgICAgaWYgKFtk
ZWZhdWx0cyBib29sRm9yS2V5OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiRXhwZXJpbWVu
dGFsJUAiLCBXZWJQcmVmZXJlbmNlc0tleTo6aXNGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFs
RGlzYWJsZWRLZXkoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpXV0pCiAgICAgICAgIGZpcnN0UGFy
dHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlID0gV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRh
UmVtb3ZhbE1vZGU6Ok5vbmU7CiAgICAgZWxzZSB7CkBAIC0xNjIsNyArMTcxLDcgQEAgV2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycygpCiAgICAg
ICAgIGhhc1N0YXRpc3RpY3NUZXN0aW5nQ2FsbGJhY2soKSwKICAgICAgICAgc2hvdWxkSW5jbHVk
ZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljcywKICAgICAgICAgZW5hYmxlUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSwKLSAgICAgICAgdGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nTW9kZSwKKyAgICAgICAgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSgpLAogICAgICAg
ICBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSwKICAgICAgICAgbV9jb25maWd1cmF0
aW9uLT5kZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRW5hYmxlZCgpLAogICAgICAgICBtX2Nv
bmZpZ3VyYXRpb24tPmFsbExvYWRzQmxvY2tlZEJ5RGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9u
c0ZvclRlc3RpbmcoKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggMTk5NTEwZTQyZWQxZTQ4NDEwMTAw
MDRkNDI0YTYwODU0ODE0MmZmZC4uYzFjMWY3MmM4MDViYzgzOWEzNDQ4Mjc1ODA2YWE4NWQzYWUy
MTE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTE3OTgsNiArMTc5OCwxNSBAQCB2b2lkIFdlYnNp
dGVEYXRhU3RvcmU6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGREb3duZ3JhZGVSZWZl
cnJlckZvclRlc3RpbgogICAgIEFTU0VSVCghY29tcGxldGlvbkhhbmRsZXIpOwogfQogCisjaWYg
IVBMQVRGT1JNKENPQ09BKQorV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSBX
ZWJzaXRlRGF0YVN0b3JlOjp0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKCkgY29uc3QKK3sK
KyAgICBpZiAoIW1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSkKKyAgICAgICAgbV90aGly
ZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlID0gV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nTW9kZTo6QWxsOworICAgIHJldHVybiAqbV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2Rl
OworfQorI2VuZGlmCisKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKGJvb2wgZW5hYmxl
ZCwgYm9vbCBvbmx5T25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIGNhbGxiYWNrQWdn
cmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKQEAgLTE4MDUsNiArMTgxNCwxMiBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVAog
ICAgIGlmIChlbmFibGVkKQogICAgICAgICBibG9ja2luZ01vZGUgPSBvbmx5T25TaXRlc1dpdGhv
dXRVc2VySW50ZXJhY3Rpb24gPyBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2Rl
OjpBbGxPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiA6IFdlYkNvcmU6OlRoaXJkUGFydHlD
b29raWVCbG9ja2luZ01vZGU6OkFsbDsKIAorICAgIGlmICh0aGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlKCkgIT0gYmxvY2tpbmdNb2RlKSB7CisgICAgICAgIG1fdGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZSA9IGJsb2NraW5nTW9kZTsKKyAgICAgICAgZm9yIChhdXRvJiB3ZWJQcm9jZXNz
IDogcHJvY2Vzc2VzKCkpCisgICAgICAgICAgICB3ZWJQcm9jZXNzLnNldFNob3VsZEJsb2NrVGhp
cmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKGJsb2NraW5nTW9kZSwgW2NhbGxiYWNrQWdncmVnYXRv
ciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgfQorCiAgICAgZm9y
IChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CiAgICAgICAgIGlmIChhdXRv
KiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKSB7CiAgICAg
ICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+c2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0Zv
clRlc3RpbmcobV9zZXNzaW9uSUQsIGJsb2NraW5nTW9kZSwgW2NhbGxiYWNrQWdncmVnYXRvciA9
IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggYzY1
YTA2N2JiM2Y2ZTVlZDczMGQwZjYxYjJkOTA0NTFlZWY3ZDA4Ni4uYTlmMTQ3NzMwY2E2MTlkM2I2
Y2U5YmQ0ZWFkZTk3MGJkNjIxNjlhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtMTk1LDYgKzE5NSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGREb3duZ3Jh
ZGVSZWZlcnJlckZvclRlc3RpbmcoYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlD
b29raWVzRm9yVGVzdGluZyhib29sIGVuYWJsZWQsIGJvb2wgb25seU9uU2l0ZXNXaXRob3V0VXNl
ckludGVyYWN0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlRm9y
VGVzdGluZyhib29sIGVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAg
V2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSB0aGlyZFBhcnR5Q29va2llQmxv
Y2tpbmdNb2RlKCkgY29uc3Q7CiAjZW5kaWYKICAgICB2b2lkIHNldENhY2hlTWF4QWdlQ2FwRm9y
UHJldmFsZW50UmVzb3VyY2VzKFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CiAgICAgdm9pZCByZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0zNzQsNiArMzc1LDkgQEAgcHJpdmF0ZToKICNp
ZiBIQVZFKEFQUF9TU08pCiAgICAgVW5pcXVlUmVmPFNPQXV0aG9yaXphdGlvbkNvb3JkaW5hdG9y
PiBtX3NvQXV0aG9yaXphdGlvbkNvb3JkaW5hdG9yOwogI2VuZGlmCisjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKKyAgICBtdXRhYmxlIE9wdGlvbmFsPFdlYkNvcmU6OlRoaXJk
UGFydHlDb29raWVCbG9ja2luZ01vZGU+IG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsg
Ly8gTGF6aWx5IGNvbXB1dGVkLgorI2VuZGlmCiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNl
TG9hZE9ic2VydmVyLmNwcAppbmRleCA0MjYzZDE5NWIwYjdkYWUwNDgzZjkyYThmZTFlYWIzZjFh
YzFjM2IxLi44NDIzMGZjMDQ4MDMzZmQ0NGM5MjNiNDJlMWNlNzZjN2Y2NzJhNGRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VM
b2FkT2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKQEAgLTcxLDE1ICs3MSwxNyBAQCBXZWJS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6fldlYlJlc291cmNlTG9hZE9ic2VydmVyKCkKICAgICAgICAg
dXBkYXRlQ2VudHJhbFN0YXRpc3RpY3NTdG9yZSgpOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9h
ZE9ic2VydmVyOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFBhZ2VJZGVudGlmaWVyIG9w
ZW5lclBhZ2VJRCwgRG9jdW1lbnQmIG9wZW5lckRvY3VtZW50KQordm9pZCBXZWJSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBXZWJQYWdlJiBvcGVuZXJQ
YWdlLCBEb2N1bWVudCYgb3BlbmVyRG9jdW1lbnQpCiB7CiAgICAgYXV0byBvcGVuZXJVcmwgPSBv
cGVuZXJEb2N1bWVudC51cmwoKTsKICAgICBSZWdpc3RyYWJsZURvbWFpbiBvcGVuZXJEb21haW4g
eyBvcGVuZXJVcmwgfTsKICAgICBpZiAoZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzICE9IG9w
ZW5lckRvbWFpbgogICAgICAgICAmJiAhb3BlbmVyRG9jdW1lbnQuaGFzUmVxdWVzdGVkUGFnZVNw
ZWNpZmljU3RvcmFnZUFjY2Vzc1dpdGhVc2VySW50ZXJhY3Rpb24oZG9tYWluSW5OZWVkT2ZTdG9y
YWdlQWNjZXNzKQogICAgICAgICAmJiAhZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShvcGVuZXJVcmwu
c3RyaW5nKCksIFdURjo6YmxhbmtVUkwoKSkpIHsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZXF1ZXN0U3RvcmFnZUFj
Y2Vzc1VuZGVyT3BlbmVyKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vzcywgb3BlbmVyUGFnZUlE
LCBvcGVuZXJEb21haW4pLCAwKTsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVy
T3BlbmVyKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vzcywgb3BlbmVyUGFnZS5pZGVudGlmaWVy
KCksIG9wZW5lckRvbWFpbiksIDApOwogICAgICAgICAKKyAgICAgICAgb3BlbmVyUGFnZS5hZGRE
b21haW5XaXRoUGFnZUxldmVsU3RvcmFnZUFjY2VzcyhvcGVuZXJEb21haW4sIGRvbWFpbkluTmVl
ZE9mU3RvcmFnZUFjY2Vzcyk7CisKICAgICAgICAgLy8gUmVtZW1iZXIgdXNlciBpbnRlcmFjdGlv
bi1iYXNlZCByZXF1ZXN0cyBzaW5jZSB0aGV5IGRvbid0IG5lZWQgdG8gYmUgcmVwZWF0ZWQuCiAg
ICAgICAgIG9wZW5lckRvY3VtZW50LnNldEhhc1JlcXVlc3RlZFBhZ2VTcGVjaWZpY1N0b3JhZ2VB
Y2Nlc3NXaXRoVXNlckludGVyYWN0aW9uKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vzcyk7CiAg
ICAgfQpAQCAtMzM1LDEwICszMzcsOCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjps
b2dVc2VySW50ZXJhY3Rpb25XaXRoUmVkdWNlZFRpbWVSZXNvbHV0aW9uKGNvbnN0CiAgICAgaWYg
KGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBpZiAoYXV0byogb3Bl
bmVyID0gZnJhbWUtPmxvYWRlcigpLm9wZW5lcigpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byog
b3BlbmVyRG9jdW1lbnQgPSBvcGVuZXItPmRvY3VtZW50KCkpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoYXV0byogb3BlbmVyRnJhbWUgPSBvcGVuZXJEb2N1bWVudC0+ZnJhbWUoKSkgewotICAgICAg
ICAgICAgICAgICAgICBpZiAoYXV0byBvcGVuZXJQYWdlSUQgPSBvcGVuZXJGcmFtZS0+bG9hZGVy
KCkuY2xpZW50KCkucGFnZUlEKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0U3Rv
cmFnZUFjY2Vzc1VuZGVyT3BlbmVyKHRvcEZyYW1lRG9tYWluLCBvcGVuZXJQYWdlSUQudmFsdWUo
KSwgKm9wZW5lckRvY3VtZW50KTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
aWYgKGF1dG8qIG9wZW5lclBhZ2UgPSBvcGVuZXJEb2N1bWVudC0+cGFnZSgpKQorICAgICAgICAg
ICAgICAgICAgICByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKHRvcEZyYW1lRG9tYWlu
LCBXZWJQYWdlOjpmcm9tQ29yZVBhZ2UoKm9wZW5lclBhZ2UpLCAqb3BlbmVyRG9jdW1lbnQpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXIuaAppbmRleCBmYWU0OGM2NmQzZTBmN2UyNDZiMTZiYTc2OTc1NWEwMTZkMGM3OWJmLi5j
ODA5MmY0YTBiN2MxYzE1ZTE2YTlmNzYwNzMzNjZlODU3NjFkM2JiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVz
b3VyY2VMb2FkT2JzZXJ2ZXIuaApAQCAtMzQsNiArMzQsOCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAorY2xhc3MgV2ViUGFnZTsKKwogY2xhc3MgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIgZmlu
YWwgOiBwdWJsaWMgV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXIgewogcHVibGljOgogICAg
IFdlYlJlc291cmNlTG9hZE9ic2VydmVyKCk7CkBAIC02NCw3ICs2Niw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBzY2hlZHVsZU5vdGlmaWNhdGlvbklmTmVlZGVkKCk7CiAKICAgICBWZWN0b3I8V2Vi
Q29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gdGFrZVN0YXRpc3RpY3MoKTsKLSAgICB2b2lk
IHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgb3BlbmVyUGFnZUlELCBXZWJDb3JlOjpEb2N1bWVudCYgb3BlbmVyRG9jdW1lbnQpOwor
ICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihjb25zdCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBXZWJQYWdlJiBv
cGVuZXJQYWdlLCBXZWJDb3JlOjpEb2N1bWVudCYgb3BlbmVyRG9jdW1lbnQpOwogCiAgICAgSGFz
aE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljcz4gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXA7CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiwgV1RGOjpXYWxsVGltZT4gbV9sYXN0UmVwb3J0ZWRVc2VySW50ZXJh
Y3Rpb25NYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJDb29raWVKYXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29v
a2llSmFyLmNwcAppbmRleCA3MzgyZmQ5YTYxMzgwZjU3M2EzZDhiNDIwMzc0NTdjMTMzNDUxNTdk
Li5hZGE5ZmI2ZWQ2ZWVhYTBhMjhiNjlkMjJmYjA4ZjdkN2Q0MWNiYTcyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAKQEAgLTI4LDgg
KzI4LDExIEBACiAKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAi
V2ViRnJhbWUuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0RlcHJlY2F0ZWRHbG9iYWxTZXR0aW5ncy5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRG9jdW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9GcmFtZUxvYWRlci5oPgpAQCAtNDgsMTggKzUxLDYxIEBAIGNsYXNzIFdlYlN0b3Jh
Z2VTZXNzaW9uUHJvdmlkZXIgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZVNlc3Npb25Qcm92aWRl
ciB7CiBXZWJDb29raWVKYXI6OldlYkNvb2tpZUphcigpCiAgICAgOiBXZWJDb3JlOjpDb29raWVK
YXIoYWRvcHRSZWYoKm5ldyBXZWJTdG9yYWdlU2Vzc2lvblByb3ZpZGVyKSkgeyB9CiAKLVN0cmlu
ZyBXZWJDb29raWVKYXI6OmNvb2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBjb25z
dCBVUkwmIHVybCkgY29uc3QKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQor
c3RhdGljIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzKFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgVVJM
JiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgVVJMJiByZXNvdXJjZVVSTCwgYm9vbCYgZGVs
ZWdhdGVzQ29va2llQmxvY2tpbmdUb05ldHdvcmtQcm9jZXNzKQogewotICAgIE9wdGlvbmFsPEZy
YW1lSWRlbnRpZmllcj4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlEOwotICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkpIHsKLSAgICAgICAg
ZnJhbWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCk7Ci0gICAgICAgIHBh
Z2VJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKKyAgICBpZiAoIVdlYkNv
cmU6OkRlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJs
ZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGZyYW1lICYmIGZyYW1lLT5p
c01haW5GcmFtZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBSZWdpc3RyYWJsZURv
bWFpbiBmaXJzdFBhcnR5RG9tYWluIHsgZmlyc3RQYXJ0eUZvckNvb2tpZXMgfTsKKyAgICBpZiAo
Zmlyc3RQYXJ0eURvbWFpbi5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IFJlZ2lzdHJhYmxlRG9tYWluIHJlc291cmNlRG9tYWluIHsgcmVzb3VyY2VVUkwgfTsKKyAgICBp
ZiAocmVzb3VyY2VEb21haW4uaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAoZmlyc3RQYXJ0eURvbWFpbiA9PSByZXNvdXJjZURvbWFpbikKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgaWYgKGZyYW1lICYmIGZyYW1lLT5mcmFtZUxvYWRlckNsaWVudCgpLT5o
YXNGcmFtZVNwZWNpZmljU3RvcmFnZUFjY2VzcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPnBhZ2UoKSAmJiBmcmFtZS0+cGFnZSgpLT5oYXNQYWdl
TGV2ZWxTdG9yYWdlQWNjZXNzKGZpcnN0UGFydHlEb21haW4sIHJlc291cmNlRG9tYWluKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gVGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBkb2Vz
IG5vdCBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiB0byBkZWFsIHdpdGggb3RoZXIgcG9saWNpZXMg
dGhhbiBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGwgc28gd2UgaGF2ZSB0byBnbyB0
byB0aGUgTmV0d29ya1Byb2Nlc3MgZm9yIGFsbAorICAgIC8vIG90aGVyIHBvbGljaWVzIGFuZCB0
aGUgcmVxdWVzdCBtYXkgZW5kIHVwIGdldHRpbmcgYmxvY2tlZCBvbiBOZXR3b3JrUHJvY2VzcyBz
aWRlLgorICAgIGlmIChXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50aGlyZFBhcnR5Q29va2llQmxv
Y2tpbmdNb2RlKCkgIT0gVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsKSB7CisgICAg
ICAgIGRlbGVnYXRlc0Nvb2tpZUJsb2NraW5nVG9OZXR3b3JrUHJvY2VzcyA9IHRydWU7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgor
CitTdHJpbmcgV2ViQ29va2llSmFyOjpjb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVu
dCwgY29uc3QgVVJMJiB1cmwpIGNvbnN0Cit7CisgICAgYXV0byogd2ViRnJhbWUgPSBkb2N1bWVu
dC5mcmFtZSgpID8gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmRvY3VtZW50LmZyYW1lKCkpIDog
bnVsbHB0cjsKKyAgICBpZiAoIXdlYkZyYW1lIHx8ICF3ZWJGcmFtZS0+cGFnZSgpKQorICAgICAg
ICByZXR1cm4geyB9OworCisgICAgYm9vbCBkZWxlZ2F0ZXNDb29raWVCbG9ja2luZ1RvTmV0d29y
a1Byb2Nlc3MgPSBmYWxzZTsKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQor
ICAgIGlmIChzaG91bGRCbG9ja0Nvb2tpZXMod2ViRnJhbWUsIGRvY3VtZW50LmZpcnN0UGFydHlG
b3JDb29raWVzKCksIHVybCwgZGVsZWdhdGVzQ29va2llQmxvY2tpbmdUb05ldHdvcmtQcm9jZXNz
KSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyNlbmRpZgorCisgICAgYXV0byBmcmFtZUlEID0gd2Vi
RnJhbWUtPmZyYW1lSUQoKTsKKyAgICBhdXRvIHBhZ2VJRCA9IHdlYkZyYW1lLT5wYWdlKCktPmlk
ZW50aWZpZXIoKTsKKwogICAgIFN0cmluZyBjb29raWVTdHJpbmc7CiAgICAgYm9vbCBzZWN1cmVD
b29raWVzQWNjZXNzZWQgPSBmYWxzZTsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET00oZG9j
dW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJs
LCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEluY2x1ZGVTZWN1cmVDb29raWVzKGRvY3VtZW50LCB1
cmwpKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9y
RE9NOjpSZXBseShjb29raWVTdHJpbmcsIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCksIDApKQorICAg
IGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygp
LCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkSW5j
bHVkZVNlY3VyZUNvb2tpZXMoZG9jdW1lbnQsIHVybCksIGRlbGVnYXRlc0Nvb2tpZUJsb2NraW5n
VG9OZXR3b3JrUHJvY2VzcyA/IFNob3VsZEFwcGx5SVRQQ29va2llQmxvY2tpbmdQb2xpY3k6Olll
cyA6IFNob3VsZEFwcGx5SVRQQ29va2llQmxvY2tpbmdQb2xpY3k6Ok5vKSwgTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NOjpSZXBseShjb29raWVT
dHJpbmcsIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCksIDApKQogICAgICAgICByZXR1cm4geyB9Owog
CiAgICAgcmV0dXJuIGNvb2tpZVN0cmluZzsKQEAgLTY3LDE0ICsxMTMsMjAgQEAgU3RyaW5nIFdl
YkNvb2tpZUphcjo6Y29va2llcyhXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVS
TCYgdXJsKSBjb25zdAogCiB2b2lkIFdlYkNvb2tpZUphcjo6c2V0Q29va2llcyhXZWJDb3JlOjpE
b2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0
cmluZykKIHsKLSAgICBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQ7Ci0gICAgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKLSAgICBpZiAoYXV0byogZnJhbWUgPSBkb2N1
bWVudC5mcmFtZSgpKSB7Ci0gICAgICAgIGZyYW1lSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50
KCkuZnJhbWVJRCgpOwotICAgICAgICBwYWdlSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCku
cGFnZUlEKCk7Ci0gICAgfQorICAgIGF1dG8qIHdlYkZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSA/
IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKCpkb2N1bWVudC5mcmFtZSgpKSA6IG51bGxwdHI7Cisg
ICAgaWYgKCF3ZWJGcmFtZSB8fCAhd2ViRnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYm9vbCBkZWxlZ2F0ZXNDb29raWVCbG9ja2luZ1RvTmV0d29ya1Byb2Nlc3MgPSBmYWxz
ZTsKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIGlmIChzaG91bGRC
bG9ja0Nvb2tpZXMod2ViRnJhbWUsIGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHVy
bCwgZGVsZWdhdGVzQ29va2llQmxvY2tpbmdUb05ldHdvcmtQcm9jZXNzKSkKKyAgICAgICAgcmV0
dXJuOworI2VuZGlmCisKKyAgICBhdXRvIGZyYW1lSUQgPSB3ZWJGcmFtZS0+ZnJhbWVJRCgpOwor
ICAgIGF1dG8gcGFnZUlEID0gd2ViRnJhbWUtPnBhZ2UoKS0+aWRlbnRpZmllcigpOwogCi0gICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpTZXRDb29raWVzRnJvbURPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1l
U2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgY29va2llU3RyaW5nKSwg
MCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpTZXRDb29raWVzRnJvbURPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2ll
cygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgZGVsZWdh
dGVzQ29va2llQmxvY2tpbmdUb05ldHdvcmtQcm9jZXNzID8gU2hvdWxkQXBwbHlJVFBDb29raWVC
bG9ja2luZ1BvbGljeTo6WWVzIDogU2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1BvbGljeTo6
Tm8sIGNvb2tpZVN0cmluZyksIDApOwogfQogCiBib29sIFdlYkNvb2tpZUphcjo6Y29va2llc0Vu
YWJsZWQoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdApAQCAtODcsMjMg
KzEzOSwzMiBAQCBib29sIFdlYkNvb2tpZUphcjo6Y29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29y
ZTo6RG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAogCiBzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb3Jl
OjpTZWN1cmVDb29raWVzQWNjZXNzZWQ+IFdlYkNvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0
ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRp
Zmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgV2ViQ29yZTo6
SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CiB7CisgICAg
Ym9vbCBkZWxlZ2F0ZXNDb29raWVCbG9ja2luZ1RvTmV0d29ya1Byb2Nlc3MgPSBmYWxzZTsKKyNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIGF1dG8qIHdlYkZyYW1lID0g
ZnJhbWVJRCA/IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKCpmcmFtZUlEKSA6IG51
bGxwdHI7CisgICAgaWYgKHNob3VsZEJsb2NrQ29va2llcyh3ZWJGcmFtZSwgZmlyc3RQYXJ0eSwg
dXJsLCBkZWxlZ2F0ZXNDb29raWVCbG9ja2luZ1RvTmV0d29ya1Byb2Nlc3MpKQorICAgICAgICBy
ZXR1cm4geyB9OworI2VuZGlmCisKICAgICBTdHJpbmcgY29va2llU3RyaW5nOwogICAgIGJvb2wg
c2VjdXJlQ29va2llc0FjY2Vzc2VkID0gZmFsc2U7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJ
RCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcyksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWU6OlJlcGx5KGNv
b2tpZVN0cmluZywgc2VjdXJlQ29va2llc0FjY2Vzc2VkKSwgMCkpCisgICAgaWYgKCFXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpD
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVy
bCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcywgZGVsZWdhdGVzQ29va2ll
QmxvY2tpbmdUb05ldHdvcmtQcm9jZXNzID8gU2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1Bv
bGljeTo6WWVzIDogU2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1BvbGljeTo6Tm8pLCBNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlOjpSZXBseShjb29raWVTdHJpbmcsIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCksIDAp
KQogICAgICAgICByZXR1cm4geyB9OwogICAgIHJldHVybiB7IGNvb2tpZVN0cmluZywgc2VjdXJl
Q29va2llc0FjY2Vzc2VkID8gV2ViQ29yZTo6U2VjdXJlQ29va2llc0FjY2Vzc2VkOjpZZXMgOiBX
ZWJDb3JlOjpTZWN1cmVDb29raWVzQWNjZXNzZWQ6Ok5vIH07CiB9CiAKIGJvb2wgV2ViQ29va2ll
SmFyOjpnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgVVJMJiB1cmwsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiByYXdDb29raWVzKSBjb25zdAog
ewotICAgIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlEOwotICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZy
YW1lKCkpIHsKLSAgICAgICAgZnJhbWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFt
ZUlEKCk7Ci0gICAgICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQo
KTsKLSAgICB9CisgICAgYXV0byogd2ViRnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpID8gV2ViRnJh
bWU6OmZyb21Db3JlRnJhbWUoKmRvY3VtZW50LmZyYW1lKCkpIDogbnVsbHB0cjsKKyAgICBib29s
IGRlbGVnYXRlc0Nvb2tpZUJsb2NraW5nVG9OZXR3b3JrUHJvY2VzcyA9IGZhbHNlOworI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgaWYgKHNob3VsZEJsb2NrQ29va2ll
cyh3ZWJGcmFtZSwgZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsLCBkZWxlZ2F0
ZXNDb29raWVCbG9ja2luZ1RvTmV0d29ya1Byb2Nlc3MpKQorICAgICAgICByZXR1cm4geyB9Owor
I2VuZGlmCiAKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tpZXMoZG9jdW1lbnQuZmlyc3RQYXJ0
eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdl
SUQpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tp
ZXM6OlJlcGx5KHJhd0Nvb2tpZXMpLCAwKSkKKyAgICBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+
IGZyYW1lSUQgPSB3ZWJGcmFtZSA/IG1ha2VPcHRpb25hbCh3ZWJGcmFtZS0+ZnJhbWVJRCgpKSA6
IFdURjo6bnVsbG9wdDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEID0gd2Vi
RnJhbWUgJiYgd2ViRnJhbWUtPnBhZ2UoKSA/IG1ha2VPcHRpb25hbCh3ZWJGcmFtZS0+cGFnZSgp
LT5pZGVudGlmaWVyKCkpIDogV1RGOjpudWxsb3B0OworICAgIGlmICghV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29v
a2llcyhkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1l
bnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgZGVsZWdhdGVzQ29va2llQmxvY2tpbmdUb05ldHdv
cmtQcm9jZXNzID8gU2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1BvbGljeTo6WWVzIDogU2hv
dWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1BvbGljeTo6Tm8pLCBNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tpZXM6OlJlcGx5KHJhd0Nvb2tpZXMpLCAw
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA3ZWJlMWRmMGYyOWQ0
OTIzMmM4YmExMmFhZTBiMzAzMTkxNDE4ZGE1Li5hYmM2Y2RlY2MwNzhmNGQ5MmExNmYyODEwZTNl
MjZmMGExMzljNjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcApAQCAtNjYwMCw2ICs2NjAwLDE3IEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVzdFN0b3Jh
Z2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgUmVnaXN0cmFiCiAg
ICAgfSk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6YWRkRG9tYWluV2l0aFBhZ2VMZXZlbFN0b3JhZ2VB
Y2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcExldmVsRG9tYWluLCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4pCit7CisgICAgbV9kb21haW5zV2l0aFBhZ2VM
ZXZlbFN0b3JhZ2VBY2Nlc3MuYWRkKHRvcExldmVsRG9tYWluLCByZXNvdXJjZURvbWFpbik7Cit9
CisKK2Jvb2wgV2ViUGFnZTo6aGFzUGFnZUxldmVsU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgdG9wTGV2ZWxEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNv
dXJjZURvbWFpbikgY29uc3QKK3sKKyAgICBhdXRvIGl0ID0gbV9kb21haW5zV2l0aFBhZ2VMZXZl
bFN0b3JhZ2VBY2Nlc3MuZmluZCh0b3BMZXZlbERvbWFpbik7CisgICAgcmV0dXJuIGl0ICE9IG1f
ZG9tYWluc1dpdGhQYWdlTGV2ZWxTdG9yYWdlQWNjZXNzLmVuZCgpICYmIGl0LT52YWx1ZSA9PSBy
ZXNvdXJjZURvbWFpbjsKK30KKwogdm9pZCBXZWJQYWdlOjp3YXNMb2FkZWRXaXRoRGF0YVRyYW5z
ZmVyRnJvbVByZXZhbGVudFJlc291cmNlKCkKIHsKICAgICBhdXRvKiBmcmFtZSA9IG1haW5GcmFt
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGUz
NTJkNDQ2YTM0OWFjMmY1YmRlODdhMmNhZTEyNjA2ZjlhMTc2MzIuLjE0OWFkOTE0MjNhMGFkYjQ3
OTU1MWQ4MmQ4YWM4MzVlYzk1ODM3MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKQEAgLTExNjAsNiArMTE2MCw4IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBXZWJGcmFtZSYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mJiB0b3BGcmFtZURvbWFpbiwgV2ViRnJhbWUmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNz
UHJvbXB0V2FzU2hvd24pPiYmKTsKKyAgICBib29sIGhhc1BhZ2VMZXZlbFN0b3JhZ2VBY2Nlc3Mo
Y29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHRvcExldmVsRG9tYWluLCBjb25zdCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4pIGNvbnN0OworICAgIHZv
aWQgYWRkRG9tYWluV2l0aFBhZ2VMZXZlbFN0b3JhZ2VBY2Nlc3MoY29uc3QgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mIHRvcExldmVsRG9tYWluLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYgcmVzb3VyY2VEb21haW4pOwogICAgIHZvaWQgd2FzTG9hZGVkV2l0aERhdGFUcmFu
c2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZSgpOwogI2VuZGlmCiAKQEAgLTIwMjUsNiArMjAyNywx
MCBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlRpbWVyIG1fdGV4dEF1dG9TaXppbmdBZGp1c3Rt
ZW50VGltZXI7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
CisgICAgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4+IG1fZG9tYWluc1dpdGhQYWdlTGV2ZWxTdG9yYWdlQWNjZXNzOworI2VuZGlm
CisKICAgICBTdHJpbmcgbV9vdmVycmlkZGVuTWVkaWFUeXBlOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDE1NjFmZmFlZTI2OTdlOGRlYjlhNzcxZjI2
OGQ3ZTdlZWQxNzVlZDYuLjNiNDRlOGU0ZDBhOWQwYzQxMzFjNzYwZGI3NzM1NWY0MTZiMzA0Yzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTQ3Nyw2ICs0Nzcs
NyBAQCB2b2lkIFdlYlByb2Nlc3M6OnNldFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzKFdlYlBy
b2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzJiYgcAogICAgIHNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NFbmFibGVkKHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQpOwogCiAj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBtX3RoaXJkUGFydHlDb29r
aWVCbG9ja2luZ01vZGUgPSBwYXJhbWV0ZXJzLnRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU7
CiAgICAgaWYgKHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgJiYgIXBh
cmFtZXRlcnMuc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgJiYgIVJlc291cmNlTG9hZE9ic2VydmVy
OjpzaGFyZWRJZkV4aXN0cygpKQogICAgICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0U2hh
cmVkKCpuZXcgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIpOwogI2VuZGlmCkBAIC0xOTczLDYgKzE5
NzQsMTQgQEAgYm9vbCBXZWJQcm9jZXNzOjphcmVBbGxQYWdlc1Rocm90dGxlYWJsZSgpIGNvbnN0
CiAgICAgfSk7CiB9CiAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQordm9p
ZCBXZWJQcm9jZXNzOjpzZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBt
X3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgPSB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CiAKICN1bmRlZiBSRUxFQVNFX0xPR19TRVNTSU9OX0lECmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCA0ZDgxOGRhYTFjMDY1NjQwMDkwN2Q5ZWE4MGI1Y2Q3
NTQ3Zjk1YmE3Li5iMjRjOGNlMzc0NDQxZGQzOTgxOGFmMTdiMzg1YTA3NmM4ZmMzODE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNs
dWRlICJXZWJTb2NrZXRDaGFubmVsTWFuYWdlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQWN0aXZp
dHlTdGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVJZGVudGlmaWVyLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Bh
Z2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgog
I2lmIFBMQVRGT1JNKE1BQykKQEAgLTE2NSw2ICsxNjYsMTAgQEAgcHVibGljOgogICAgIAogICAg
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgQVNTRVJUKG1fc2Vzc2lvbklEKTsg
cmV0dXJuICptX3Nlc3Npb25JRDsgfQogCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKKyAgICBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIHRoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX3RoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGU7IH0KKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgY29uc3Qg
V1RGOjpNYWNoU2VuZFJpZ2h0JiBjb21wb3NpdGluZ1JlbmRlclNlcnZlclBvcnQoKSBjb25zdCB7
IHJldHVybiBtX2NvbXBvc2l0aW5nUmVuZGVyU2VydmVyUG9ydDsgfQogI2VuZGlmCkBAIC00MzUs
NiArNDQwLDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXZva2VVc2VyTWVkaWFEZXZpY2VTYW5k
Ym94RXh0ZW5zaW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwogI2VuZGlmCiAKKyNlbmRpZgor
CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICB2b2lkIHNldFNob3Vs
ZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKFdlYkNvcmU6OlRoaXJkUGFydHlDb29r
aWVCbG9ja2luZ01vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAjZW5kaWYKIAog
ICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplUHJvY2Vzcyhjb25zdCBBdXhpbGlhcnlQcm9jZXNz
SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJik7CkBAIC02MDIsNiArNjExLDEwIEBAIHByaXZhdGU6
CiAgICAgLy8gUHJld2FybWVkIFdlYlByb2Nlc3NlcyBkbyBub3QgaGF2ZSBhbiBhc3NvY2lhdGVk
IHNlc3Npb25JRCB5ZXQsIHdoaWNoIGlzIHdoeSB0aGlzIGlzIGFuIG9wdGlvbmFsLgogICAgIC8v
IEJ5IHRoZSB0aW1lIHRoZSBXZWJQcm9jZXNzIGdldHMgYSBXZWJQYWdlLCBpdCBpcyBndWFyYW50
ZWVkIHRvIGhhdmUgYSBzZXNzaW9uSUQuCiAgICAgT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IG1f
c2Vzc2lvbklEOworCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBX
ZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIG1fdGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZSB7IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbCB9
OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggZjAwZDc5YzZkNDA3Y2Zi
YzZlMWJjY2JiMjcyNDVkYTQ3YWJhOGI2NC4uOTkwYjA0ZDU4NzFlYWMyNTI3ZTNlZDNhMzQwNDc1
OGRlYTk5NDFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KQEAgLTE2Miw1ICsxNjIsNiBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExl
Z2FjeVJlY2VpdmVyIE5vdFJlZkNvdW50ZWQgewogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKICAgICBTZWVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvclRlc3RpbmcoV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4gZmlyc3RQYXJ0eURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4gdGhpcmRQYXJ0eURvbWFpbiwgYm9vbCBzaG91bGRTY2hlZHVsZU5vdGlmaWNh
dGlvbikgLT4gKCkgQXN5bmMKKyAgICBTZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9y
VGVzdGluZyhlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9k
ZSBibG9ja2luZ01vZGUpIC0+ICgpIEFzeW5jCiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlNDcwZDVjZjIzYWMzZjU3ZTMyMzI2
MjQ3NDU0MGQzN2VmMmE5NjE1Li4zY2MxNTIyNjgwNTBlNzkzODZjMmEwMWE2NzRjYWFiODdhN2Ey
NDNjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMjAtMDEtMTQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKworICAgICAgICBkb2N1bWVudC5jb29raWUgc2hvdWxkIG5vdCBkbyBhIHN5bmMgSVBDIHRv
IHRoZSBuZXR3b3JrIHByb2Nlc3MgZm9yIGlmcmFtZXMgdGhhdCBkbyBub3QgaGF2ZSBzdG9yYWdl
IGFjY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA2MTA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TWFrZSBzZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyBJUEMgZnJvbSB0
aGUgV2ViUHJvY2VzcyB0byB0aGUgVUlQcm9jZXNzIGFzeW5jaHJvbm91cworICAgICAgICBzaW5j
ZSB0aGlzIGVuZHMgdXAgc2VuZGluZyBhbiBJUEMgYmFjayB0byB0aGUgV2ViUHJvY2VzcyBub3cg
KHdoaWNoIHdvdWxkIGRlYWRsb2NrKS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNl
dFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9j
YXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFdU
Ujo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGUpOgorCiAyMDIwLTAxLTEwICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KIAogICAgICAgICBbV1RSXSBVc2Ugc2hvcnQgaGVhcnQgYmVhdCB0aW1lciBhcyBhIFRlc3RP
cHRpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuY3BwCmluZGV4IGZlOWUyZmVhNDNmNGRlM2E3OGY5OTU1MDIzOTA4OWQyM2NjOTM2
NDUuLjJlYTNjYmQ3MmI0MmIyYTMwY2EyYTc2Yzg2NWMxZGFiMDIyOWVjNWEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApA
QCAtMjIzNSw3ICsyMjM1LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRTdGF0aXN0aWNzU2hvdWxk
QmxvY2tUaGlyZFBhcnR5Q29va2llcyhib29sIHZhbHVlLCBKU1ZhbHVlUmUKICAgICBpZiAob25s
eU9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uKQogICAgICAgICBtZXNzYWdlTmFtZSA9IGFk
b3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlNldFN0YXRpc3RpY3NTaG91bGRC
bG9ja1RoaXJkUGFydHlDb29raWVzT25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24iKSk7CiAg
ICAgV0tSZXRhaW5QdHI8V0tCb29sZWFuUmVmPiBtZXNzYWdlQm9keSA9IGFkb3B0V0soV0tCb29s
ZWFuQ3JlYXRlKHZhbHVlKSk7Ci0gICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKElu
amVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1l
c3NhZ2VCb2R5LmdldCgpLCBudWxscHRyKTsKKyAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKEluamVj
dGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3Nh
Z2VCb2R5LmdldCgpKTsKICAgICBtX2hhc1NldEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNDYWxsYmFj
ayA9IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdElu
dm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAK
aW5kZXggMDk4ZjViYTc4YzdlZjI4MmE2MzdiMjNhZjJjMDM5MDE2ZGEwYTczNC4uZmQ1ZjJlOWVl
ZjM4Y2U1YzI1NTQzYjJkZDY2MjlmOWUyNmU3ZGEwZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTc0Nyw2ICs3NDcsMjAgQEAgdm9pZCBUZXN0SW52b2Nh
dGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVz
c2FnZU5hbWUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmIChXS1N0cmluZ0lzRXF1
YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhp
cmRQYXJ0eUNvb2tpZXNPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiIpKSB7CisgICAgICAg
IEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tCb29sZWFuR2V0VHlwZUlEKCkp
OworICAgICAgICBXS0Jvb2xlYW5SZWYgdmFsdWUgPSBzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+
KG1lc3NhZ2VCb2R5KTsKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNldFN0
YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKFdLQm9vbGVhbkdldFZhbHVlKHZh
bHVlKSwgdHJ1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoV0tTdHJpbmdJ
c0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldFN0YXRpc3RpY3NTaG91bGRCbG9j
a1RoaXJkUGFydHlDb29raWVzIikpIHsKKyAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3Nh
Z2VCb2R5KSA9PSBXS0Jvb2xlYW5HZXRUeXBlSUQoKSk7CisgICAgICAgIFdLQm9vbGVhblJlZiB2
YWx1ZSA9IHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4obWVzc2FnZUJvZHkpOworICAgICAgICBU
ZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQ
YXJ0eUNvb2tpZXMoV0tCb29sZWFuR2V0VmFsdWUodmFsdWUpLCBmYWxzZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNz
YWdlTmFtZSwgIlJ1blVJUHJvY2Vzc1NjcmlwdCIpKSB7CiAgICAgICAgIFdLRGljdGlvbmFyeVJl
ZiBtZXNzYWdlQm9keURpY3Rpb25hcnkgPSBzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+KG1l
c3NhZ2VCb2R5KTsKICAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHNjcmlwdEtleSA9
IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlNjcmlwdCIpKTsKQEAgLTE1
NTksMjAgKzE1NzMsNiBAQCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RJbnZvY2F0aW9uOjpk
aWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQgogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAgICAgCi0gICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJp
bmcobWVzc2FnZU5hbWUsICJTZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2ll
c09uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uIikpIHsKLSAgICAgICAgQVNTRVJUKFdLR2V0
VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS0Jvb2xlYW5HZXRUeXBlSUQoKSk7Ci0gICAgICAgIFdL
Qm9vbGVhblJlZiB2YWx1ZSA9IHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4obWVzc2FnZUJvZHkp
OwotICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0U3RhdGlzdGljc1Nob3Vs
ZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoV0tCb29sZWFuR2V0VmFsdWUodmFsdWUpLCB0cnVlKTsK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotICAgIAotICAgIGlmIChXS1N0cmluZ0lz
RXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0U3RhdGlzdGljc1Nob3VsZEJsb2Nr
VGhpcmRQYXJ0eUNvb2tpZXMiKSkgewotICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2Fn
ZUJvZHkpID09IFdLQm9vbGVhbkdldFR5cGVJRCgpKTsKLSAgICAgICAgV0tCb29sZWFuUmVmIHZh
bHVlID0gc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihtZXNzYWdlQm9keSk7Ci0gICAgICAgIFRl
c3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBh
cnR5Q29va2llcyhXS0Jvb2xlYW5HZXRWYWx1ZSh2YWx1ZSksIGZhbHNlKTsKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgfQotICAgIAogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhD
U3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0U3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJl
bW92YWxNb2RlIikpIHsKICAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9
PSBXS0Jvb2xlYW5HZXRUeXBlSUQoKSk7CiAgICAgICAgIFdLQm9vbGVhblJlZiB2YWx1ZSA9IHN0
YXRpY19jYXN0PFdLQm9vbGVhblJlZj4obWVzc2FnZUJvZHkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387684</attachid>
            <date>2020-01-14 12:03:19 -0800</date>
            <delta_ts>2020-01-14 16:42:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206108-20200114120318.patch</filename>
            <type>text/plain</type>
            <size>90472</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0MzQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjc5MDM1YjdkZTc4YjNj
ZGM0YTA4ZmI3MzM0N2VkMjhiNzkxMzU0OS4uOGJlYTBiZGI5OWExODIzMDQyODRhYmQzMmMwNGMw
ZTc5ZWI1N2M4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIwLTAxLTE0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgZG9jdW1lbnQuY29va2llIHNo
b3VsZCBub3QgZG8gYSBzeW5jIElQQyB0byB0aGUgbmV0d29yayBwcm9jZXNzIGZvciBpZnJhbWVz
IHRoYXQgZG8gbm90IGhhdmUgc3RvcmFnZSBhY2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjEwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gSVRQIGlzIGVuYWJsZWQgYW5kIFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGU6OkFsbCBtb2RlIGlzIHVzZWQgKGRlZmF1bHQgaW4gU2FmYXJp
KSwgd2UgY2FuIG5vdyBkZXRlY3QKKyAgICAgICAgdGhhdCBhIHRoaXJkLXBhcnR5IGlmcmFtZSBk
b2VzIG5vdCBoYXZlIGNvb2tpZSBhY2Nlc3MgY29tcGxldGVseSBvbiB0aGUgV2ViQ29udGVudCBw
cm9jZXNzIHNpZGUsIGluc3RlYWQgb2YKKyAgICAgICAgZG9pbmcgdGhlIGNoZWNrIG9uIHRoZSBO
ZXR3b3JrIHByb2Nlc3Mgc2lkZS4gVGhlIGJlbmVmaXQgaXMgdGhhdCB0aGlzIGF2b2lkcyBkb2lu
ZyBhIHN5bmNocm9ub3VzIElQQyBldmVyeQorICAgICAgICB0aW1lIGEgdGhpcmQtcGFydHkgaWZy
YW1lIHdoaWNoIGRvZXMgbm90IGhhdmUgc3RvcmFnZSBhY2Nlc3MgdHJpZXMgdG8gYWNjZXNzIGRv
Y3VtZW50LmNvb2tpZSBpbiBKYXZhU2NyaXB0LgorICAgICAgICBHaXZlbiB0aGF0IHRoaXMgc2hv
dWxkIGFwcGx5IHRvIGEgbG90IG9mIGlmcmFtZXMsIHRoaXMgY2hhbmdlIGlzIHZlcnkgYmVuZWZp
Y2lhbCB0byBwZXJmb3JtYW5jZS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQgYnkg
ZXhpc3RpbmcgdGVzdHMgdGhhdCBhcmUgc3RpbGwgcGFzc2luZy4KKworICAgICAgICAqIGxvYWRl
ci9Db29raWVKYXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llSmFyOjpjb29raWVzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphcjo6c2V0Q29va2llcyk6CisgICAgICAg
IChXZWJDb3JlOjpDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphcjo6Z2V0UmF3Q29va2llcyBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OmNvb2tpZXNGb3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6Y29va2llc0ZvclNlc3Np
b24pOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9y
RE9NIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMgY29uc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zy
b21ET00gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpj
b29raWVzRm9yRE9NIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6Z2V0UmF3Q29va2llcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9t
RE9NIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0
UmF3Q29va2llcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmNvb2tpZXNGb3JET00gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSBjb25zdCk6CisKIDIwMjAt
MDEtMTAgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNd
W0ludGVncmF0aW9uXSBGaXggYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLWlm
cmFtZS1vZmZzY3JlZW4uaHRtbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlYjk0MTRkZjkwZWE2NjFjMDk4M2M0YTBh
ZTZlYzliMzM2N2UxYjY1Li44YWYzZjI4YzI2ZWY5ZGI2MzcwM2ZlNWE4ZWQ2NjRlOWQ5MGMyZjU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDIwLTAxLTE0ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgZG9jdW1lbnQuY29va2llIHNob3VsZCBub3QgZG8g
YSBzeW5jIElQQyB0byB0aGUgbmV0d29yayBwcm9jZXNzIGZvciBpZnJhbWVzIHRoYXQgZG8gbm90
IGhhdmUgc3RvcmFnZSBhY2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwNjEwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Y29va2llc0ZvckRPTSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpzZXRDb29raWVzRnJvbURPTSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpnZXRSYXdDb29raWVz
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uSW50ZXJu
YWwpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFt
ZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ3Jl
YXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0
ZXJzLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzOjpl
bmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1l
dGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0U2hv
dWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpl
bnN1cmVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp3
ZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6c2V0U2hv
dWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29j
b2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlOjp0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjp0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1No
b3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9w
ZW5lcik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dVc2Vy
SW50ZXJhY3Rpb25XaXRoUmVkdWNlZFRpbWVSZXNvbHV0aW9uKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNo
b3VsZEJsb2NrQ29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZUphcjo6Y29va2ll
cyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZUphcjo6c2V0Q29va2llcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVKYXI6OmdldFJhd0Nvb2tpZXMg
Y29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6YWRkRG9tYWluV2l0aFBhZ2VMZXZlbFN0b3JhZ2VBY2Nlc3Mp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpoYXNQYWdlTGV2ZWxTdG9yYWdlQWNjZXNzIGNv
bnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6
OnNldFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6c2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
Ojp0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisKIDIwMjAtMDEtMTAgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFVwZGF0
ZSBPcHRpb25zR1RLLmNtYWtlIGFuZCBORVdTIGZvciAyLjI3LjQgcmVsZWFzZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ29va2llSmFyLmNwcAppbmRleCBhMTAwMTVjYjE5NzhmNmM1NmY4ZjJmZTA5OGI2MTg4
NzA2NzAxZDRjLi5jNTY0M2JiZmNhNzZlMDAwYzEwYTdhOTBkN2ExYWYzOTk3ZTlkYWUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmNwcApAQCAtODAsNyArODAsNyBAQCBTdHJpbmcgQ29v
a2llSmFyOjpjb29raWVzKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwpIGNvbnN0
CiAKICAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiByZXN1bHQ7CiAgICAgaWYgKGF1dG8qIHNl
c3Npb24gPSBtX3N0b3JhZ2VTZXNzaW9uUHJvdmlkZXItPnN0b3JhZ2VTZXNzaW9uKCkpCi0gICAg
ICAgIHJlc3VsdCA9IHNlc3Npb24tPmNvb2tpZXNGb3JET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZv
ckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQs
IGluY2x1ZGVTZWN1cmVDb29raWVzKTsKKyAgICAgICAgcmVzdWx0ID0gc2Vzc2lvbi0+Y29va2ll
c0ZvckRPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9j
dW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3Vs
ZEFwcGx5SVRQQ29va2llQmxvY2tpbmdQb2xpY3k6Olllcyk7CiAgICAgZWxzZQogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKIApAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQgQ29va2llSmFy
OjpzZXRDb29raWVzKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgY29vCiAgICAgfQogCiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX3N0b3JhZ2VTZXNz
aW9uUHJvdmlkZXItPnN0b3JhZ2VTZXNzaW9uKCkpCi0gICAgICAgIHNlc3Npb24tPnNldENvb2tp
ZXNGcm9tRE9NKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbyhk
b2N1bWVudCksIHVybCwgZnJhbWVJRCwgcGFnZUlELCBjb29raWVTdHJpbmcpOworICAgICAgICBz
ZXNzaW9uLT5zZXRDb29raWVzRnJvbURPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygp
LCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgU2hvdWxkQXBw
bHlJVFBDb29raWVCbG9ja2luZ1BvbGljeTo6WWVzLCBjb29raWVTdHJpbmcpOwogICAgIGVsc2UK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CkBAIC0xMzEsNyArMTMxLDcgQEAgYm9v
bCBDb29raWVKYXI6OmNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50JikgY29uc3QKIHN0ZDo6
cGFpcjxTdHJpbmcsIFNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4gQ29va2llSmFyOjpjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlm
aWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2Vj
dXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBpZiAoYXV0byog
c2Vzc2lvbiA9IG1fc3RvcmFnZVNlc3Npb25Qcm92aWRlci0+c3RvcmFnZVNlc3Npb24oKSkgewot
ICAgICAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiByZXN1bHQgPSBzZXNzaW9uLT5jb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJh
bWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcyk7CisgICAgICAgIHN0ZDo6cGFpcjxT
dHJpbmcsIGJvb2w+IHJlc3VsdCA9IHNlc3Npb24tPmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1
ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5OjpZZXMp
OwogICAgICAgICByZXR1cm4geyByZXN1bHQuZmlyc3QsIHJlc3VsdC5zZWNvbmQgPyBTZWN1cmVD
b29raWVzQWNjZXNzZWQ6OlllcyA6IFNlY3VyZUNvb2tpZXNBY2Nlc3NlZDo6Tm8gfTsKICAgICB9
CiAKQEAgLTE2NCw3ICsxNjQsNyBAQCBib29sIENvb2tpZUphcjo6Z2V0UmF3Q29va2llcyhjb25z
dCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8QwogICAgIH0KIAog
ICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVyLT5zdG9yYWdl
U2Vzc2lvbigpKQotICAgICAgICByZXR1cm4gc2Vzc2lvbi0+Z2V0UmF3Q29va2llcyhkb2N1bWVu
dC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZy
YW1lSUQsIHBhZ2VJRCwgY29va2llcyk7CisgICAgICAgIHJldHVybiBzZXNzaW9uLT5nZXRSYXdD
b29raWVzKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbyhkb2N1
bWVudCksIHVybCwgZnJhbWVJRCwgcGFnZUlELCBTaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5n
UG9saWN5OjpZZXMsIGNvb2tpZXMpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
cmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9DYWNoZVZhbGlkYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9D
YWNoZVZhbGlkYXRpb24uY3BwCmluZGV4IDJkMzUwN2RmMjM3ZGIyOTVkNTkzMWE0YzBkZjc2MDI3
NzdkZTdiOGIuLjU0NmNhNzM0N2YyMTRlZTkzOGE5YzRlZDFkYWRlNDJmMjg3MGYyM2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5j
cHAKQEAgLTM0MCw3ICszNDAsNyBAQCBDYWNoZUNvbnRyb2xEaXJlY3RpdmVzIHBhcnNlQ2FjaGVD
b250cm9sRGlyZWN0aXZlcyhjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzKQogCiBzdGF0aWMg
U3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAg
IHJldHVybiBzZXNzaW9uLmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHJlcXVlc3QuZmly
c3RQYXJ0eUZvckNvb2tpZXMoKSwgU2FtZVNpdGVJbmZvOjpjcmVhdGUocmVxdWVzdCksIHJlcXVl
c3QudXJsKCksIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCByZXF1ZXN0LnVybCgpLnByb3Rv
Y29sSXMoImh0dHBzIikgPyBJbmNsdWRlU2VjdXJlQ29va2llczo6WWVzIDogSW5jbHVkZVNlY3Vy
ZUNvb2tpZXM6Ok5vKS5maXJzdDsKKyAgICByZXR1cm4gc2Vzc2lvbi5jb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShyZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCksIFNhbWVTaXRlSW5m
bzo6Y3JlYXRlKHJlcXVlc3QpLCByZXF1ZXN0LnVybCgpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVs
bG9wdCwgcmVxdWVzdC51cmwoKS5wcm90b2NvbElzKCJodHRwcyIpID8gSW5jbHVkZVNlY3VyZUNv
b2tpZXM6OlllcyA6IEluY2x1ZGVTZWN1cmVDb29raWVzOjpObywgU2hvdWxkQXBwbHlJVFBDb29r
aWVCbG9ja2luZ1BvbGljeTo6WWVzKS5maXJzdDsKIH0KIAogc3RhdGljIFN0cmluZyBjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBDb29raWVKYXIqIGNvb2tpZUphciwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKaW5kZXggZWVmYjg3MGU0Y2Fj
NWEwZWZhNzIyYzE2YWRlMjcyMDMwODQzODczMS4uMTk5M2FjM2U1YTUwZDM3NGRiMDEyNjNjN2E0
Mzc3MGQxZGY4Y2UzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCkBAIC03Niw2ICs3Niw3IEBAIGVudW0gY2xh
c3MgSW5jbHVkZVNlY3VyZUNvb2tpZXMgOiBib29sOwogZW51bSBjbGFzcyBJbmNsdWRlSHR0cE9u
bHlDb29raWVzIDogYm9vbDsKIGVudW0gY2xhc3MgVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9k
ZSA6IHVpbnQ4X3QgeyBBbGwsIEFsbE9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCBPbmx5
QWNjb3JkaW5nVG9QZXJEb21haW5Qb2xpY3kgfTsKIGVudW0gY2xhc3MgRmlyc3RQYXJ0eVdlYnNp
dGVEYXRhUmVtb3ZhbE1vZGUgOiB1aW50OF90IHsgQWxsQnV0Q29va2llcywgTm9uZSwgQWxsQnV0
Q29va2llc0xpdmVPblRlc3RpbmdUaW1lb3V0LCBBbGxCdXRDb29raWVzUmVwcm9UZXN0aW5nVGlt
ZW91dCB9OworZW51bSBjbGFzcyBTaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5IDog
Ym9vbCB7IE5vLCBZZXMgfTsKIAogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uIHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShOZXR3b3JrU3RvcmFnZVNlc3Npb24pOyBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKQEAgLTEyNyw3ICsxMjgsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBjb29raWVzRW5hYmxlZCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0Q29va2llKGNvbnN0IENvb2tpZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29v
a2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgbWFpbkRv
Y3VtZW50VVJMKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0
aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBjb25zdCBT
dHJpbmcmKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZXNGcm9tRE9N
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwg
T3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBTaG91
bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5LCBjb25zdCBTdHJpbmcmKSBjb25zdDsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBDb29raWUmKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoKTsKQEAg
LTEzNywxMSArMTM4LDExIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8Q29v
a2llPiBnZXRBbGxDb29raWVzKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPENvb2tpZT4g
Z2V0Q29va2llcyhjb25zdCBVUkwmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhc0Nvb2tp
ZXMoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25h
bDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIFZlY3RvcjxDb29r
aWU+JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9u
YWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBTaG91bGRBcHBs
eUlUUENvb2tpZUJsb2NraW5nUG9saWN5LCBWZWN0b3I8Q29va2llPiYpIGNvbnN0OwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZmx1c2hDb29raWVTdG9yZSgpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZXNGb3JE
T00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwm
LCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIElu
Y2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8
U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNvb2tp
ZXMpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNv
b2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBj
b25zdCBVUkwmLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5n
UG9saWN5KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29s
PiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4s
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFw
cGx5SVRQQ29va2llQmxvY2tpbmdQb2xpY3kpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0
ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0
IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5JikgY29uc3Q7CiAKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2lu
LmNwcAppbmRleCBlYjgxYzA1MmViZGE3MmRhMDZkYmU3Y2QyNDk0ZjRkMzJhZWUwZmQ0Li4zNGQ3
ZTkzMWYyMTkwM2RjZTY3OTc1NzVmNjM1ZGY2ZjBjYjhmZGEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbkNGTmV0V2luLmNwcApAQCAtMTg5LDcgKzE4OSw3IEBAIHN0YXRpYyBDRkFycmF5
UmVmIGNyZWF0ZUNvb2tpZXMoQ0ZEaWN0aW9uYXJ5UmVmIGhlYWRlckZpZWxkcywgQ0ZVUkxSZWYg
dXJsKQogICAgIHJldHVybiBwYXJzZWRDb29raWVzOwogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBjb25zdCBTdHJpbmcmIHZh
bHVlKSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9N
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1BvbGljeSwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAg
VU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC0yMjUsNyArMjI1LDcgQEAgc3RhdGljIGJvb2wgY29u
dGFpbnNTZWN1cmVDb29raWVzKENGQXJyYXlSZWYgY29va2llcykKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29v
a2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNv
bnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1
cmVDb29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJ
RCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMg
aW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFwcGx5SVRQQ29va2llQmxvY2tpbmdQb2xpY3kp
IGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJBTShw
YWdlSUQpOwpAQCAtMjQwLDcgKzI0MCw3IEBAIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFyCiAgICAg
cmV0dXJuIHsgY29va2llU3RyaW5nLCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzIH07CiB9CiAKLXN0
ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUlu
Zm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNs
dWRlU2VjdXJlQ29va2llcykgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8
RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXBwbHlJ
VFBDb29raWVCbG9ja2luZ1BvbGljeSkgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJ
RCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC0yNTUsNyArMjU1LDcgQEAgc3RkOjpw
YWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShjb24KIAogc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBDb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRQcm94eSYgaGVhZGVyRmllbGRQcm94eSkgY29uc3QKIHsKLSAgICByZXR1
cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoaGVhZGVyRmllbGRQcm94eS5maXJzdFBh
cnR5LCBoZWFkZXJGaWVsZFByb3h5LnNhbWVTaXRlSW5mbywgaGVhZGVyRmllbGRQcm94eS51cmws
IGhlYWRlckZpZWxkUHJveHkuZnJhbWVJRCwgaGVhZGVyRmllbGRQcm94eS5wYWdlSUQsIGhlYWRl
ckZpZWxkUHJveHkuaW5jbHVkZVNlY3VyZUNvb2tpZXMpOworICAgIHJldHVybiBjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShoZWFkZXJGaWVsZFByb3h5LmZpcnN0UGFydHksIGhlYWRlckZp
ZWxkUHJveHkuc2FtZVNpdGVJbmZvLCBoZWFkZXJGaWVsZFByb3h5LnVybCwgaGVhZGVyRmllbGRQ
cm94eS5mcmFtZUlELCBoZWFkZXJGaWVsZFByb3h5LnBhZ2VJRCwgaGVhZGVyRmllbGRQcm94eS5p
bmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1BvbGljeTo6
WWVzKTsKIH0KIAogYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNFbmFibGVkKCkg
Y29uc3QKQEAgLTI2NCw3ICsyNjQsNyBAQCBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29v
a2llc0VuYWJsZWQoKSBjb25zdAogICAgIHJldHVybiBwb2xpY3kgPT0gQ0ZIVFRQQ29va2llU3Rv
cmFnZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluIHx8IHBvbGljeSA9PSBD
RkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5RXhjbHVzaXZlbHlGcm9tTWFpbkRvY3VtZW50
RG9tYWluIHx8IHBvbGljeSA9PSBDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5QWx3YXlz
OwogfQogCi1ib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRp
b25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBw
YWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAorYm9vbCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBTaG91bGRBcHBseUlUUENv
b2tpZUJsb2NraW5nUG9saWN5LCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKIHsK
ICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQppbmRleCBkZGNhMmM2M2NjZTMwYTZj
MmNlMDAzZGI3Nzk4NGMyMTk4ODdiNDdkLi44OWRiMjUwYjQzZGRmNWQzODgwMDcxZTcxNDI5OTRm
NWNiZmJiZjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KQEAgLTMw
OCwyNiArMzA4LDI3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNBcnJheT4gZmlsdGVyQ29va2llcyhO
U0FycmF5ICp1bmZpbHRlcmVkQ29va2llcywgT3B0aW9uYWw8U2VjCiAgICAgcmV0dXJuIGZpbHRl
cmVkQ29va2llczsKIH0KIAotc3RhdGljIE5TQXJyYXkgKmNvb2tpZXNGb3JVUkwoY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJh
bWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKQor
c3RhdGljIE5TQXJyYXkgKmNvb2tpZXNGb3JVUkwoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2Ft
ZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFt
ZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBTaG91bGRBcHBseUlUUENvb2tp
ZUJsb2NraW5nUG9saWN5IHNob3VsZEFwcGx5SVRQQ29va2llQmxvY2tpbmdQb2xpY3kpCiB7CiAj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBpZiAoc2Vzc2lvbi5zaG91
bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFtZUlELCBwYWdlSUQpKQorICAgIGlm
IChzaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5ID09IFNob3VsZEFwcGx5SVRQQ29v
a2llQmxvY2tpbmdQb2xpY3k6OlllcyAmJiBzZXNzaW9uLnNob3VsZEJsb2NrQ29va2llcyhmaXJz
dFBhcnR5LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCkpCiAgICAgICAgIHJldHVybiBuaWw7CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsK
KyAgICBVTlVTRURfUEFSQU0oc2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1BvbGljeSk7CiAj
ZW5kaWYKICAgICByZXR1cm4gaHR0cENvb2tpZXNGb3JVUkwoc2Vzc2lvbi5jb29raWVTdG9yYWdl
KCkuZ2V0KCksIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsKTsKIH0KIAogZW51bSBJbmNs
dWRlSFRUUE9ubHlPck5vdCB7IERvTm90SW5jbHVkZUhUVFBPbmx5LCBJbmNsdWRlSFRUUE9ubHkg
fTsKLXN0YXRpYyBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yU2Vzc2lvbihjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25h
bDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdl
SUQsIEluY2x1ZGVIVFRQT25seU9yTm90IGluY2x1ZGVIVFRQT25seSwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpCitzdGF0aWMgc3RkOjpwYWlyPFN0cmluZywgYm9v
bD4gY29va2llc0ZvclNlc3Npb24oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
LCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlSFRUUE9ubHlPck5vdCBpbmNsdWRl
SFRUUE9ubHksIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91
bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5IHNob3VsZEFwcGx5SVRQQ29va2llQmxvY2tp
bmdQb2xpY3kgPSBTaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5OjpZZXMpCiB7CiAg
ICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNz
UmF3Q29va2llcykpOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCi0gICAg
TlNBcnJheSAqY29va2llcyA9IGNvb2tpZXNGb3JVUkwoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgc2Ft
ZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCk7CisgICAgTlNBcnJheSAqY29va2llcyA9
IGNvb2tpZXNGb3JVUkwoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZy
YW1lSUQsIHBhZ2VJRCwgc2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1BvbGljeSk7CiAgICAg
aWYgKCFbY29va2llcyBjb3VudF0pCiAgICAgICAgIHJldHVybiB7IFN0cmluZygpLCBmYWxzZSB9
OyAvLyBSZXR1cm4gYSBudWxsIHN0cmluZywgbm90IGFuIGVtcHR5IG9uZSB0aGF0IFN0cmluZ0J1
aWxkZXIgd291bGQgY3JlYXRlIGJlbG93LgogCkBAIC0zNzcsMTQgKzM3OCwxNCBAQCBzdGF0aWMg
dm9pZCBkZWxldGVBbGxIVFRQQ29va2llcyhDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tpZVN0
b3JhZ2UpCiAgICAgQ0ZIVFRQQ29va2llU3RvcmFnZURlbGV0ZUFsbENvb2tpZXMoY29va2llU3Rv
cmFnZSk7CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVy
PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJl
Q29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJv
b2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwg
T3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hv
dWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1BvbGljeSBzaG91bGRBcHBseUlUUENvb2tpZUJsb2Nr
aW5nUG9saWN5KSBjb25zdAogewotICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywg
Zmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgRG9Ob3RJbmNs
dWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKKyAgICByZXR1cm4gY29va2llc0Zv
clNlc3Npb24oKnRoaXMsIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBw
YWdlSUQsIERvTm90SW5jbHVkZUhUVFBPbmx5LCBpbmNsdWRlU2VjdXJlQ29va2llcywgc2hvdWxk
QXBwbHlJVFBDb29raWVCbG9ja2luZ1BvbGljeSk7CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJv
b2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNl
Y3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBP
cHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91
bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5IHNob3VsZEFwcGx5SVRQQ29va2llQmxvY2tp
bmdQb2xpY3kpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlzLCBm
aXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBJbmNsdWRlSFRU
UE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKKyAgICByZXR1cm4gY29va2llc0ZvclNlc3Np
b24oKnRoaXMsIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQs
IEluY2x1ZGVIVFRQT25seSwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIHNob3VsZEFwcGx5SVRQQ29v
a2llQmxvY2tpbmdQb2xpY3kpOwogfQogCiBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IENvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5JiBoZWFkZXJGaWVsZFByb3h5KSBjb25zdApAQCAtMzky
LDEyICszOTMsMjEgQEAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb24KICAgICByZXR1cm4gY29va2ll
c0ZvclNlc3Npb24oKnRoaXMsIGhlYWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0eSwgaGVhZGVyRmll
bGRQcm94eS5zYW1lU2l0ZUluZm8sIGhlYWRlckZpZWxkUHJveHkudXJsLCBoZWFkZXJGaWVsZFBy
b3h5LmZyYW1lSUQsIGhlYWRlckZpZWxkUHJveHkucGFnZUlELCBJbmNsdWRlSFRUUE9ubHksIGhl
YWRlckZpZWxkUHJveHkuaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogfQogCi12b2lkIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFs
PEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHIpIGNvbnN0Cit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1l
U2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRl
bnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxk
QXBwbHlJVFBDb29raWVCbG9ja2luZ1BvbGljeSBzaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5n
UG9saWN5LCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cikgY29uc3QKIHsKICAgICBBU1NFUlQoaGFz
UHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7
CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKKyNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIGlmIChzaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5n
UG9saWN5ID09IFNob3VsZEFwcGx5SVRQQ29va2llQmxvY2tpbmdQb2xpY3k6OlllcyAmJiBzaG91
bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFtZUlELCBwYWdlSUQpKQorICAgICAg
ICByZXR1cm47CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKKyAgICBVTlVTRURf
UEFSQU0ocGFnZUlEKTsKKyAgICBVTlVTRURfUEFSQU0oc2hvdWxkQXBwbHlJVFBDb29raWVCbG9j
a2luZ1BvbGljeSk7CisjZW5kaWYKKwogICAgIC8vIDxyZGFyOi8vcHJvYmxlbS81NjMyODgzPiBP
biAxMC41LCBOU0hUVFBDb29raWVTdG9yYWdlIHdvdWxkIHN0b3JlIGFuIGVtcHR5IGNvb2tpZSwK
ICAgICAvLyB3aGljaCB3b3VsZCBiZSBzZW50IGFzICJDb29raWU6ID0iLgogICAgIGlmIChjb29r
aWVTdHIuaXNFbXB0eSgpKQpAQCAtNDIzLDE0ICs0MzMsNiBAQCB2b2lkIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lUwogI2VuZGlmCiAgICAgQVNTRVJUKFtmaWx0ZXJlZENvb2tpZXMuZ2V0KCkgY291bnRdIDw9
IDEpOwogCi0jaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBpZiAoc2hv
dWxkQmxvY2tDb29raWVzKGZpcnN0UGFydHksIHVybCwgZnJhbWVJRCwgcGFnZUlEKSkKLSAgICAg
ICAgcmV0dXJuOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7Ci0gICAgVU5VU0VE
X1BBUkFNKHBhZ2VJRCk7Ci0jZW5kaWYKLQogICAgIHNldEhUVFBDb29raWVzRm9yVVJMKGNvb2tp
ZVN0b3JhZ2UoKS5nZXQoKSwgZmlsdGVyZWRDb29raWVzLmdldCgpLCBjb29raWVVUkwsIGZpcnN0
UGFydHksIHNhbWVTaXRlSW5mbyk7CiAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwpA
QCAtNDU3LDEyICs0NTksMTIgQEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNF
bmFibGVkKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlk
ZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFZlY3Rv
cjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8m
IHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4g
ZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXBwbHlJVFBD
b29raWVCbG9ja2luZ1BvbGljeSBzaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5LCBW
ZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKIHsKICAgICByYXdDb29raWVzLmNsZWFy
KCk7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCi0gICAgTlNBcnJheSAqY29v
a2llcyA9IGNvb2tpZXNGb3JVUkwoKnRoaXMsIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJs
LCBmcmFtZUlELCBwYWdlSUQpOworICAgIE5TQXJyYXkgKmNvb2tpZXMgPSBjb29raWVzRm9yVVJM
KCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBz
aG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5KTsKICAgICBOU1VJbnRlZ2VyIGNvdW50
ID0gW2Nvb2tpZXMgY291bnRdOwogICAgIHJhd0Nvb2tpZXMucmVzZXJ2ZUNhcGFjaXR5KGNvdW50
KTsKICAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKaW5kZXggZjJhMTkwMzU2MWFjMWE1MGIwYmJkOGY3
NTdhMGU1NjU0NjNiYjUyYS4uNGMxZTlhZDY0YTQ1ZTZlYjc4OTdhZTczYmM5YmUxZDg1NWMzYmMx
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcApAQCAtODAsNyArODAsNyBA
QCBDb29raWVKYXJEQiYgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVEYXRhYmFzZSgpIGNv
bnN0CiAgICAgcmV0dXJuIG1fY29va2llRGF0YWJhc2U7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJh
bWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBj
b25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNl
dENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZv
JiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+
IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNob3VsZEFwcGx5SVRQ
Q29va2llQmxvY2tpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CiB7CiAgICAg
Y29va2llU3RvcmFnZSgpLnNldENvb2tpZXNGcm9tRE9NKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1l
U2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCB2YWx1ZSk7CiB9CkBAIC05MCw3ICs5MCw3
IEBAIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRW5hYmxlZCgpIGNvbnN0CiAg
ICAgcmV0dXJuIGNvb2tpZVN0b3JhZ2UoKS5jb29raWVzRW5hYmxlZCgqdGhpcyk7CiB9CiAKLXN0
ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRP
TShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
LCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRl
U2VjdXJlQ29va2llcykgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJ
ZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNs
dWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXBwbHlJVFBDb29r
aWVCbG9ja2luZ1BvbGljeSkgY29uc3QKIHsKICAgICByZXR1cm4gY29va2llU3RvcmFnZSgpLmNv
b2tpZXNGb3JET00oKnRoaXMsIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlE
LCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKIH0KQEAgLTE2MCw3ICsxNjAsNyBAQCB2
b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aGFzQ29va2llcyhjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYsIENvbXBsZXRpb25IYW5kbAogICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKIH0K
IAotYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0Citib29sIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9u
YWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlELCBTaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5LCBWZWN0b3I8Q29va2llPiYg
cmF3Q29va2llcykgY29uc3QKIHsKICAgICByZXR1cm4gY29va2llU3RvcmFnZSgpLmdldFJhd0Nv
b2tpZXMoKnRoaXMsIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdl
SUQsIHJhd0Nvb2tpZXMpOwogfQpAQCAtMTcwLDcgKzE3MCw3IEBAIHZvaWQgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpmbHVzaENvb2tpZVN0b3JlKCkKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZv
ciBXZWJLaXQgdG8gdXNlLgogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJs
LCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBj
b25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJ
ZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNs
dWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXBwbHlJVFBDb29r
aWVCbG9ja2luZ1BvbGljeSkgY29uc3QKIHsKICAgICByZXR1cm4gY29va2llU3RvcmFnZSgpLmNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUlu
Zm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcyk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKaW5kZXggM2ZiODg5MmM3OWZkNWU0ZjY3MGNh
YzQ4ODRmOWVmMGI1MzcxYjJhNS4uYjQzYjUyMWU2NzA2NzdkNzQ5OWEyZjI0MWI1NjhhOTE1ZmMy
NTJkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05l
dHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcApAQCAtMjYxLDcgKzI2
MSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBodHRwT25seUNvb2tpZUV4aXN0cyhjb25zdCBHU0xp
c3QqIGNvb2tpZXMsIGNvbnN0IGdjaGFyKiBuYW1lCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12
b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8
RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXBwbHlJVFBDb29raWVCbG9j
a2luZ1BvbGljeSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKIHsKICAgICBVTlVTRURfUEFS
QU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC00MzIsNyArNDMyLDcg
QEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246Omhhc0Nvb2tpZXMoY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGwKICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7
CiB9CiAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlv
bmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0Citib29sIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZy
YW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNob3VsZEFwcGx5SVRQQ29v
a2llQmxvY2tpbmdQb2xpY3ksIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAogewog
ICAgIFVOVVNFRF9QQVJBTShmaXJzdFBhcnR5KTsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7
CkBAIC01MDIsNyArNTAyLDcgQEAgc3RhdGljIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tp
ZXNGb3JTZXNzaW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2UKICAgICByZXR1cm4g
eyBTdHJpbmc6OmZyb21VVEY4KGNvb2tpZUhlYWRlci5nZXQoKSksIGRpZEFjY2Vzc1NlY3VyZUNv
b2tpZXMgfTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5j
bHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVy
PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJl
Q29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2lu
Z1BvbGljeSkgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZmlyc3RQYXJ0eSk7CiAgICAgVU5V
U0VEX1BBUkFNKGZyYW1lSUQpOwpAQCAtNTEwLDcgKzUxMCw3IEBAIHN0ZDo6cGFpcjxTdHJpbmcs
IGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZp
cnN0UGFyCiAgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlzLCB1cmwsIGZhbHNlLCBp
bmNsdWRlU2VjdXJlQ29va2llcyk7CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9u
YWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKK3N0
ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUlu
Zm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNs
dWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1BvbGljeSkgY29u
c3QKIHsKICAgICBVTlVTRURfUEFSQU0oZmlyc3RQYXJ0eSk7CiAgICAgVU5VU0VEX1BBUkFNKGZy
YW1lSUQpOwpAQCAtNTIxLDcgKzUyMSw3IEBAIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uCiAKIHN0
ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoY29uc3QgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkmIGhl
YWRlckZpZWxkUHJveHkpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKGhlYWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0eSwgaGVhZGVyRmllbGRQcm94eS5z
YW1lU2l0ZUluZm8sIGhlYWRlckZpZWxkUHJveHkudXJsLCBoZWFkZXJGaWVsZFByb3h5LmZyYW1l
SUQsIGhlYWRlckZpZWxkUHJveHkucGFnZUlELCBoZWFkZXJGaWVsZFByb3h5LmluY2x1ZGVTZWN1
cmVDb29raWVzKTsKKyAgICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoaGVh
ZGVyRmllbGRQcm94eS5maXJzdFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5LnNhbWVTaXRlSW5mbywg
aGVhZGVyRmllbGRQcm94eS51cmwsIGhlYWRlckZpZWxkUHJveHkuZnJhbWVJRCwgaGVhZGVyRmll
bGRQcm94eS5wYWdlSUQsIGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNo
b3VsZEFwcGx5SVRQQ29va2llQmxvY2tpbmdQb2xpY3k6Olllcyk7CiB9CiAKIHZvaWQgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpmbHVzaENvb2tpZVN0b3JlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKaW5kZXggMmI2MDc4OTZjOWY1YTI1NmQyNjhlMDg1YzA4MDliYTg2MmUzZGVhNC4uNGMw
MTlhNWIzY2QzMDcwMzFjNTVmMDM3YTZmMDk2ZWQyMmQ0MDUwYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKQEAgLTU2NCwxMiArNTY0LDEyIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lc0FzQ09SU0VuYWJsZWQoVmVjdG9yPFN0cmlu
CiAgICAgICAgIG1fc2NoZW1lUmVnaXN0cnktPnJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxl
ZChXVEZNb3ZlKHNjaGVtZSkpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZp
ZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1
cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0
cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNG
b3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRl
SW5mbywgY29uc3QgVVJMJiB1cmwsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBT
aG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5IHNob3VsZEFwcGx5SVRQQ29va2llQmxv
Y2tpbmdQb2xpY3ksIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0cmluZywg
Ym9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKCk7CiAgICAgaWYg
KCFuZXR3b3JrU3RvcmFnZVNlc3Npb24pCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cih7IH0sIGZhbHNlKTsKLSAgICBhdXRvIHJlc3VsdCA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+
Y29va2llc0ZvckRPTShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFn
ZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcyk7CisgICAgYXV0byByZXN1bHQgPSBuZXR3b3JrU3Rv
cmFnZVNlc3Npb24tPmNvb2tpZXNGb3JET00oZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmws
IGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIHNob3VsZEFwcGx5SVRQQ29v
a2llQmxvY2tpbmdQb2xpY3kpOwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
ICYmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29y
a1Nlc3Npb24oKSkgewogICAgICAgICBpZiAoc2Vzc2lvbi0+c2hvdWxkTG9nQ29va2llSW5mb3Jt
YXRpb24oKSkKQEAgLTU3OSwxMiArNTc5LDEyIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTCiAg
ICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQuZmlyc3QpLCByZXN1bHQuc2Vjb25k
KTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2llc0Zy
b21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRl
SW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4g
ZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBj
b29raWVTdHJpbmcpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29r
aWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2Ft
ZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1Bv
bGljeSBzaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5LCBjb25zdCBTdHJpbmcmIGNv
b2tpZVN0cmluZykKIHsKICAgICBhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdl
U2Vzc2lvbigpOwogICAgIGlmICghbmV0d29ya1N0b3JhZ2VTZXNzaW9uKQogICAgICAgICByZXR1
cm47Ci0gICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5zZXRDb29raWVzRnJvbURPTShmaXJzdFBh
cnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBjb29raWVTdHJpbmcpOwor
ICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+c2V0Q29va2llc0Zyb21ET00oZmlyc3RQYXJ0eSwg
c2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkQXBwbHlJVFBDb29raWVC
bG9ja2luZ1BvbGljeSwgY29va2llU3RyaW5nKTsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKSAmJiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBpZiAoYXV0byogc2Vzc2lv
biA9IG5ldHdvcmtTZXNzaW9uKCkpIHsKICAgICAgICAgaWYgKHNlc3Npb24tPnNob3VsZExvZ0Nv
b2tpZUluZm9ybWF0aW9uKCkpCkBAIC02MDEsMjIgKzYwMSwyMiBAQCB2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRW5hYmxlZChDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPgogICAgIGNvbXBsZXRpb25IYW5kbGVyKG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+Y29v
a2llc0VuYWJsZWQoKSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQs
IEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0cmluZywgYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBj
b25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2Vj
dXJlQ29va2llcywgU2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1BvbGljeSBzaG91bGRBcHBs
eUlUUENvb2tpZUJsb2NraW5nUG9saWN5LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZywg
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byogbmV0d29ya1N0b3JhZ2VT
ZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oKTsKICAgICBpZiAoIW5ldHdvcmtTdG9yYWdlU2Vzc2lv
bikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgZmFsc2UpOwotICAgIGF1
dG8gcmVzdWx0ID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5jb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBp
bmNsdWRlU2VjdXJlQ29va2llcyk7CisgICAgYXV0byByZXN1bHQgPSBuZXR3b3JrU3RvcmFnZVNl
c3Npb24tPmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGZpcnN0UGFydHksIHNhbWVTaXRl
SW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRB
cHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5KTsKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKHJlc3VsdC5maXJzdCksIHJlc3VsdC5zZWNvbmQpOwogfQogCi12b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25h
bDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdl
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpn
ZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZy
YW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNob3VsZEFwcGx5SVRQQ29v
a2llQmxvY2tpbmdQb2xpY3kgc2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1BvbGljeSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdl
U2Vzc2lvbigpOwogICAgIGlmICghbmV0d29ya1N0b3JhZ2VTZXNzaW9uKQogICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBy
ZXN1bHQ7Ci0gICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5nZXRSYXdDb29raWVzKGZpcnN0UGFy
dHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHJlc3VsdCk7CisgICAgbmV0
d29ya1N0b3JhZ2VTZXNzaW9uLT5nZXRSYXdDb29raWVzKGZpcnN0UGFydHksIHNhbWVTaXRlSW5m
bywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFwcGx5SVRQQ29va2llQmxvY2tpbmdQb2xp
Y3ksIHJlc3VsdCk7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDBlNmU4MjMyYjcyYWE4NzkyMmRhODgwZDJm
YzJmZGU4ODQxMmY3NGIuLjE2MDYzMGM4YjdmNDcyOGI3ZjcxYTljNGE5ZTUyMDQyNjBlMGUxZWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTU4LDYgKzU4LDcgQEAgY2xhc3MgUmVzb3Vy
Y2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGVudW0gY2xhc3MgU3RvcmFnZUFjY2Vz
c1Byb21wdFdhc1Nob3duIDogYm9vbDsKIGVudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1dhc0dyYW50
ZWQgOiBib29sOworZW51bSBjbGFzcyBTaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5
IDogYm9vbDsKIHN0cnVjdCBTYW1lU2l0ZUluZm87CiAKIGVudW0gY2xhc3MgSW5jbHVkZVNlY3Vy
ZUNvb2tpZXMgOiBib29sOwpAQCAtMTk3LDExICsxOTgsMTEgQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgcmVnaXN0ZXJVUkxTY2hlbWVzQXNDT1JTRW5hYmxlZChWZWN0b3I8U3RyaW5nPiYmIHNjaGVt
ZXMpOwogCi0gICAgdm9pZCBjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8V2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJD
b3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcg
Y29va2llU3RyaW5nLCBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOwotICAgIHZvaWQg
c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpT
YW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXI+LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIGNvbnN0IFN0cmluZyYpOwor
ICAgIHZvaWQgY29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBX
ZWJDb3JlOjpTaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2Vk
KT4mJik7CisgICAgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNob3VsZEFwcGx5
SVRQQ29va2llQmxvY2tpbmdQb2xpY3ksIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgY29va2ll
c0VuYWJsZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllcj4sIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6
SW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tp
ZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmKTsKLSAgICB2b2lkIGdldFJh
d0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUlu
Zm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBPcHRp
b25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYpOworICAgIHZvaWQgY29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0
ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBP
cHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVD
b29raWVzLCBXZWJDb3JlOjpTaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2ll
c0FjY2Vzc2VkKT4mJik7CisgICAgdm9pZCBnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXI+LCBXZWJDb3JlOjpTaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmKTsKICAgICB2b2lk
IGRlbGV0ZUNvb2tpZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpOwogCiAg
ICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcGF0
aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggYjBkYWEz
YzNmMDg1MzFjOTkxOTU1YzkxOWMyYzNkMzQ2M2EyZDI2NC4uNzEyYjk0MjBmMTU2NzA5ODczMDY2
MTQ5OTMyODNmNjc3NWJhOTg1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCkBAIC0zNCwxMSArMzQsMTEgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFN0YXJ0RG93bmxvYWQoV2ViS2l0
OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0
LCBTdHJpbmcgc3VnZ2VzdGVkTmFtZSkKICAgICBDb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93
bmxvYWQodWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIFdlYktpdDo6RG93bmxv
YWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKIAotICAgIENvb2tpZXNGb3JET00oVVJMIGZp
cnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwg
dXJsLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFs
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJbmNs
dWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmluZyBjb29raWVT
dHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykgU3luY2hyb25vdXMKLSAgICBTZXRD
b29raWVzRnJvbURPTShVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5m
byBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
cj4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU3Ry
aW5nIGNvb2tpZVN0cmluZykKKyAgICBDb29raWVzRm9yRE9NKFVSTCBmaXJzdFBhcnR5LCBzdHJ1
Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
ZW51bTpib29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29r
aWVzLCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2luZ1BvbGlj
eSBzaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5KSAtPiAoU3RyaW5nIGNvb2tpZVN0
cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKSBTeW5jaHJvbm91cworICAgIFNldENv
b2tpZXNGcm9tRE9NKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZv
IHNhbWVTaXRlSW5mbywgVVJMIHVybCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgZW51bTpib29sIFdlYkNvcmU6OlNob3Vs
ZEFwcGx5SVRQQ29va2llQmxvY2tpbmdQb2xpY3kgc2hvdWxkQXBwbHlJVFBDb29raWVCbG9ja2lu
Z1BvbGljeSwgU3RyaW5nIGNvb2tpZVN0cmluZykKICAgICBDb29raWVzRW5hYmxlZCgpIC0+IChi
b29sIGVuYWJsZWQpIFN5bmNocm9ub3VzCi0gICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJ
bmZvLCBVUkwgdXJsLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQs
IE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGVudW06Ym9vbCBXZWJD
b3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmlu
ZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykgU3luY2hyb25vdXMK
LSAgICBHZXRSYXdDb29raWVzKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNp
dGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlE
KSAtPiAoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgU3luY2hyb25vdXMKKyAgICBD
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNv
cmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCwgZW51bTpib29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1
ZGVTZWN1cmVDb29raWVzLCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkQXBwbHlJVFBDb29raWVC
bG9ja2luZ1BvbGljeSBzaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5KSAtPiAoU3Ry
aW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKSBTeW5jaHJvbm91
cworICAgIEdldFJhd0Nvb2tpZXMoVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdl
SUQsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5
IHNob3VsZEFwcGx5SVRQQ29va2llQmxvY2tpbmdQb2xpY3kpIC0+IChWZWN0b3I8V2ViQ29yZTo6
Q29va2llPiBjb29raWVzKSBTeW5jaHJvbm91cwogICAgIERlbGV0ZUNvb2tpZShVUkwgdXJsLCBT
dHJpbmcgY29va2llTmFtZSkKIAogICAgIFJlZ2lzdGVyRmlsZUJsb2JVUkwoVVJMIHVybCwgU3Ry
aW5nIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGV4dGVuc2lvbkhhbmRs
ZSwgU3RyaW5nIGNvbnRlbnRUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGRmMDlmNjRmNjZlZjJkNDdj
Nzc5OTFhYjRlOThkNjg0MzQ4MjkwYzcuLjdjZjdhZWU1YmJkM2M4ZjUyZGUzOTFmYWQ0OTQxMTQy
NzM0Yzg1NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTExOTQsNyArMTE5NCw3IEBAIHN0YXRpYyB2b2lk
IGxvZ0Nvb2tpZUluZm9ybWF0aW9uSW50ZXJuYWwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MmIGNvbm5lY3RpCiAgICAgQVNTRVJUKE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkTG9n
Q29va2llSW5mb3JtYXRpb24oY29ubmVjdGlvbiwgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLnNlc3Np
b25JRCgpKSk7CiAKICAgICBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzOwotICAgIGlm
ICghbmV0d29ya1N0b3JhZ2VTZXNzaW9uLmdldFJhd0Nvb2tpZXMoZmlyc3RQYXJ0eSwgc2FtZVNp
dGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgY29va2llcykpCisgICAgaWYgKCFuZXR3b3Jr
U3RvcmFnZVNlc3Npb24uZ2V0UmF3Q29va2llcyhmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVy
bCwgZnJhbWVJRCwgcGFnZUlELCBTaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5OjpZ
ZXMsIGNvb2tpZXMpKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIGVzY2FwZWRVUkwgPSBl
c2NhcGVGb3JKU09OKHVybC5zdHJpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMu
Y3BwCmluZGV4IGQ3ZGE0OWZmNTQ1NWM3Y2ZhZTY5YzA1ZWMzMTExMzI5MzcyYTBhN2QuLmY5MTdm
NTE3YjRjYTBmMzE3ZjJjODBiYWZmYjdjYWU3MThmNGJjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlv
blBhcmFtZXRlcnMuY3BwCkBAIC02OCw3ICs2OCw5IEBAIHZvaWQgTmV0d29ya1Nlc3Npb25DcmVh
dGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAg
ZW5jb2RlciA8PCBzaG91bGRJbmNsdWRlTG9jYWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
OwogICAgIGVuY29kZXIgPDwgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZTsK
ICAgICBlbmNvZGVyIDw8IHJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNv
dXJjZTsKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGVuY29kZXIg
PDwgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsKKyNlbmRpZgogICAgIGVuY29kZXIgPDwg
Zmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU7CiAKICAgICBlbmNvZGVyIDw8IG5ldHdv
cmtDYWNoZURpcmVjdG9yeSA8PCBuZXR3b3JrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7
CkBAIC0yMDIsMTAgKzIwNCwxMiBAQCBPcHRpb25hbDxOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFy
YW1ldGVycz4gTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OmRlYwogICAgIGlmICgh
cmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlKQogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKICAgICBPcHRpb25hbDxXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlPiB0
aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOwogICAgIGRlY29kZXIgPj4gdGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZTsKICAgICBpZiAoIXRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUp
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisjZW5kaWYKIAogICAgIE9wdGlvbmFsPFdl
YkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlPiBmaXJzdFBhcnR5V2Vic2l0
ZURhdGFSZW1vdmFsTW9kZTsKICAgICBkZWNvZGVyID4+IGZpcnN0UGFydHlXZWJzaXRlRGF0YVJl
bW92YWxNb2RlOwpAQCAtMzAwLDcgKzMwNCw5IEBAIE9wdGlvbmFsPE5ldHdvcmtTZXNzaW9uQ3Jl
YXRpb25QYXJhbWV0ZXJzPiBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjCiAg
ICAgICAgICwgV1RGTW92ZSgqZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0xvZ1Rlc3RpbmdF
dmVudCkKICAgICAgICAgLCBXVEZNb3ZlKCpzaG91bGRJbmNsdWRlTG9jYWxob3N0SW5SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKQogICAgICAgICAsIFdURk1vdmUoKmVuYWJsZVJlc291cmNlTG9hZFN0
YXRpc3RpY3NEZWJ1Z01vZGUpCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
ICAgICAgICAgLCBXVEZNb3ZlKCp0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKQorI2VuZGlm
CiAgICAgICAgICwgV1RGTW92ZSgqZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUpCiAg
ICAgICAgICwgV1RGTW92ZSgqZGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0VuYWJsZWQpCiAg
ICAgICAgICwgV1RGTW92ZSgqYWxsTG9hZHNCbG9ja2VkQnlEZXZpY2VNYW5hZ2VtZW50UmVzdHJp
Y3Rpb25zRm9yVGVzdGluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCAwZDU3
YWI3MTIyNWZjYzI1ODA2ODRmODkyYTc1ODMwNGQ3ZDdmMDYwLi44MmU5NWYxOTg1NjMzNjFjMDli
YjgxNTAwZjMxMDAwMjk1NTNhNDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oCkBA
IC04Niw3ICs4Niw5IEBAIHN0cnVjdCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyB7
CiAgICAgYm9vbCBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50IHsg
ZmFsc2UgfTsKICAgICBib29sIHNob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0
YXRpc3RpY3MgeyB0cnVlIH07CiAgICAgYm9vbCBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGVidWdNb2RlIHsgZmFsc2UgfTsKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQogICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgdGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZSB7IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6
OkFsbCB9OworI2VuZGlmCiAgICAgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3Zh
bE1vZGUgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgeyBXZWJDb3JlOjpGaXJzdFBh
cnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTo6QWxsQnV0Q29va2llcyB9OwogICAgIGJvb2wgZGV2
aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0VuYWJsZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgYWxs
TG9hZHNCbG9ja2VkQnlEZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRm9yVGVzdGluZyB7IGZh
bHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2Vz
LnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCBmOGJj
ZTE0NTUwN2RmNDllODllZDRmNzE5ODc2ZTEwYmY3MDk2YmRlLi4wZTU4NDgxZTI5NjJlMDAyNGUw
NWFiMGJkZWNjYjc0MzQwNmY4NWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkKQEAgLTU4NCw2ICs1ODQsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToK
ICAgICAgICAgJ1dlYkNvcmU6OlNlcnZpY2VXb3JrZXJTdGF0ZSc6IFsnPFdlYkNvcmUvU2Vydmlj
ZVdvcmtlclR5cGVzLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpTaGlwcGluZ0NvbnRhY3RVcGRh
dGUnOiBbJzxXZWJDb3JlL0FwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Lmg+J10sCiAgICAg
ICAgICdXZWJDb3JlOjpTaGlwcGluZ01ldGhvZFVwZGF0ZSc6IFsnPFdlYkNvcmUvQXBwbGVQYXlT
ZXNzaW9uUGF5bWVudFJlcXVlc3QuaD4nXSwKKyAgICAgICAgJ1dlYkNvcmU6OlNob3VsZEFwcGx5
SVRQQ29va2llQmxvY2tpbmdQb2xpY3knOiBbJzxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bi5oPiddLAogICAgICAgICAnV2ViQ29yZTo6U2hvdWxkTm90aWZ5V2hlblJlc29sdmVkJzogWyc8
V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlNob3Vs
ZFNhbXBsZSc6IFsnPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaD4nXSwKICAgICAg
ICAgJ1dlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bic6IFsnPFdlYkNvcmUvRG9j
dW1lbnRTdG9yYWdlQWNjZXNzLmg+J10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMuaAppbmRleCBlMDk0MDBhN2FhYTY0NjExZmQ1
ODI2NTcxNjA4MjQyMjMyMjQ4MjMxLi4zMGRiNGM5YjUzODg2YTA4YjMxN2E1Mjk0ZGM3MjUwMTNh
MDNmNTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzRGF0YVN0
b3JlUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NEYXRh
U3RvcmVQYXJhbWV0ZXJzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAKQEAgLTQ1LDYgKzQ2LDkgQEAgc3RydWN0IFdlYlByb2Nlc3NEYXRhU3RvcmVQ
YXJhbWV0ZXJzIHsKICAgICBTdHJpbmcgamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rvcnk7
CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGphdmFTY3JpcHRDb25maWd1cmF0aW9uRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIEhhc2hNYXA8dW5zaWduZWQsIFdhbGxUaW1lPiBw
bHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXM7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKKyAgICBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIHRoaXJk
UGFydHlDb29raWVCbG9ja2luZ01vZGUgeyBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlOjpBbGwgfTsKKyNlbmRpZgogICAgIGJvb2wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Vu
YWJsZWQgeyBmYWxzZSB9OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OwpAQCAtNjcsNiArNzEsOSBAQCB2b2lkIFdlYlByb2Nlc3NEYXRh
U3RvcmVQYXJhbWV0ZXJzOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNv
ZGVyIDw8IGphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5OwogICAgIGVuY29kZXIgPDwg
amF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgZW5j
b2RlciA8PCBwbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXM7CisjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKKyAgICBlbmNvZGVyIDw8IHRoaXJkUGFydHlDb29raWVCbG9ja2lu
Z01vZGU7CisjZW5kaWYKICAgICBlbmNvZGVyIDw8IHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFi
bGVkOwogfQogCkBAIC0xMzIsNiArMTM5LDEzIEBAIE9wdGlvbmFsPFdlYlByb2Nlc3NEYXRhU3Rv
cmVQYXJhbWV0ZXJzPiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2RlKERlCiAg
ICAgaWYgKCFwbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMpCiAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CiAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIE9w
dGlvbmFsPFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU+IHRoaXJkUGFydHlD
b29raWVCbG9ja2luZ01vZGU7CisgICAgZGVjb2RlciA+PiB0aGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlOworICAgIGlmICghdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSkKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyNlbmRpZgorCiAgICAgYm9vbCByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRW5hYmxlZCA9IGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzb3VyY2VM
b2FkU3RhdGlzdGljc0VuYWJsZWQpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAt
MTUwLDYgKzE2NCw5IEBAIE9wdGlvbmFsPFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzPiBX
ZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2RlKERlCiAgICAgICAgIFdURk1vdmUo
amF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkpLAogICAgICAgICBXVEZNb3ZlKCpqYXZh
U2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSksCiAgICAgICAgIFdU
Rk1vdmUoKnBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcyksCisjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKKyAgICAgICAgKnRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUs
CisjZW5kaWYKICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQKICAgICB9Owog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAKaW5kZXggZjM2Yjc5Y2U1NDVhOTg3ZjI4MTc2MWFiYWU1NjdlZGYwNjgz
NzAwYS4uNWZiZDM2MTMwMzg1NDdkMDIzMzI0YzA1ZjkzNjQ5ODI2MzdjMjRjMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwCkBAIC0xMDc4LDExICsxMDc4LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpz
ZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmcoYm9vbCBlbmFibGVkLCBDb20KIAog
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVz
Rm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFRoaXJkUGFydHlDb29raWVCbG9j
a2luZ01vZGUgYmxvY2tpbmdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKCFjYW5TZW5kTWVzc2FnZSgpKSB7Ci0gICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCiAgICAgc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0U2hvdWxkQmxvY2tU
aGlyZFBhcnR5Q29va2llc0ZvclRlc3Rpbmcoc2Vzc2lvbklELCBibG9ja2luZ01vZGUpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcAppbmRleCAzMDY0NGJiZDk3ZWI3NzI4ZmI0Y2IwMmRhN2Q2NzQ1NjY5
YTE1YTA1Li44MWNkNWQ2YzZiZGYxNGY1MWIzM2VlMDMyZmYxNGEzOWU5M2I4ZDJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC01NzYsNyArNTc2LDkg
QEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9j
ZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdpdGgKICAgICBib29sIGVuYWJsZVJlc291cmNlTG9hZFN0
YXRpc3RpY3NMb2dUZXN0aW5nRXZlbnQgPSBmYWxzZTsKICAgICBib29sIHNob3VsZEluY2x1ZGVM
b2NhbGhvc3QgPSB0cnVlOwogICAgIGJvb2wgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rl
YnVnTW9kZSA9IGZhbHNlOworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAg
ICAgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSB0aGlyZFBhcnR5Q29va2ll
QmxvY2tpbmdNb2RlID0gV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxs
OworI2VuZGlmCiAgICAgV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUg
Zmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgPSBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vi
c2l0ZURhdGFSZW1vdmFsTW9kZTo6QWxsQnV0Q29va2llczsKICAgICBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZSB7IH07CiAgICAgaWYgKHdpdGhXZWJz
aXRlRGF0YVN0b3JlKSB7CkBAIC01ODgsNyArNTkwLDkgQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYg
V2ViUHJvY2Vzc1Bvb2w6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUqIHdp
dGgKICAgICAgICAgICAgIGF1dG8gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzID0gd2l0aFdlYnNp
dGVEYXRhU3RvcmUtPnBhcmFtZXRlcnMoKS5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnM7CiAgICAg
ICAgICAgICBzaG91bGRJbmNsdWRlTG9jYWxob3N0ID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJz
LnNob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3M7CiAgICAgICAg
ICAgICBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlID0gbmV0d29ya1Nlc3Np
b25QYXJhbWV0ZXJzLmVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU7CisjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICAgICAgICAgIHRoaXJkUGFydHlD
b29raWVCbG9ja2luZ01vZGUgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMudGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZTsKKyNlbmRpZgogICAgICAgICAgICAgZmlyc3RQYXJ0eVdlYnNpdGVE
YXRhUmVtb3ZhbE1vZGUgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuZmlyc3RQYXJ0eVdlYnNp
dGVEYXRhUmVtb3ZhbE1vZGU7CiAgICAgICAgICAgICBtYW51YWxQcmV2YWxlbnRSZXNvdXJjZSA9
IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJl
dmFsZW50UmVzb3VyY2U7CiAgICAgICAgIH0KQEAgLTYxMCw3ICs2MTQsOSBAQCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURh
dGFTdG9yZSogd2l0aAogICAgICAgICAgICAgYXV0byBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMg
PSBtX3dlYnNpdGVEYXRhU3RvcmUtPnBhcmFtZXRlcnMoKS5uZXR3b3JrU2Vzc2lvblBhcmFtZXRl
cnM7CiAgICAgICAgICAgICBzaG91bGRJbmNsdWRlTG9jYWxob3N0ID0gbmV0d29ya1Nlc3Npb25Q
YXJhbWV0ZXJzLnNob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3M7
CiAgICAgICAgICAgICBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlID0gbmV0
d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01v
ZGU7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICAgICAgICAgIHRo
aXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMudGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsKKyNlbmRpZgogICAgICAgICAgICAgZmlyc3RQYXJ0
eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgPSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuZmlyc3RQ
YXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU7CiAgICAgICAgICAgICBtYW51YWxQcmV2YWxlbnRS
ZXNvdXJjZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWFudWFsUHJldmFsZW50UmVzb3VyY2U7CiAgICAgICAgIH0KQEAgLTYzNSw3ICs2NDEsOSBAQCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3Mo
V2Vic2l0ZURhdGFTdG9yZSogd2l0aAogICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBh
cmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmVuYWJsZVJlc291cmNlTG9hZFN0YXRp
c3RpY3NMb2dUZXN0aW5nRXZlbnQgPSBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVz
dGluZ0V2ZW50OwogICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0
d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9h
ZFN0YXRpc3RpY3MgPSBzaG91bGRJbmNsdWRlTG9jYWxob3N0OwogICAgIHBhcmFtZXRlcnMuZGVm
YXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmVuYWJsZVJl
c291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUgPSBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGVidWdNb2RlOworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAg
cGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFt
ZXRlcnMudGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IHRoaXJkUGFydHlDb29raWVCbG9j
a2luZ01vZGU7CisjZW5kaWYKICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0
ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5maXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFs
TW9kZSA9IGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOwogCiAgICAgcGFyYW1ldGVy
cy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlID0gbWFudWFsUHJldmFs
ZW50UmVzb3VyY2U7CkBAIC05NDEsNiArOTQ5LDkgQEAgV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFt
ZXRlcnMgV2ViUHJvY2Vzc1Bvb2w6OndlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzKFdlYlAK
ICAgICAgICAgV1RGTW92ZShqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSksCiAgICAg
ICAgIFdURk1vdmUoamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnlFeHRlbnNpb25IYW5k
bGUpLAogICAgICAgICBXVEZNb3ZlKHBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcyksCisjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICAgICAgd2Vic2l0ZURhdGFTdG9y
ZS50aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKCksCisjZW5kaWYKICAgICAgICAgd2Vic2l0
ZURhdGFTdG9yZS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpCiAgICAgfTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGM0NGJmN2Mz
MmU5OTMxMzljMTAzYzQ3ZTUxNjQyNGQ4ZWRjODY1NmYuLjg0MWU2NDViZGQ1YjgwNThlOGE5OTk0
MzI2MDI1ZjAzY2JkNzBmYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcApAQCAtNDMzLDYgKzQzMywxMSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6bm90
aWZ5UGFnZVN0YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZChBUEk6Ok9iamVjdCogbWVzc2FnZQog
ICAgIGZvciAoYXV0byYgcGFnZSA6IGdsb2JhbFBhZ2VNYXAoKSkKICAgICAgICAgcGFnZS52YWx1
ZS0+cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKCJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVs
ZW1ldHJ5RmluaXNoZWQiLCBtZXNzYWdlQm9keSk7CiB9CisKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjpzZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdNb2RlIHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBzZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tp
ZXNGb3JUZXN0aW5nKHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUpLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7Cit9CiAjZW5kaWYKIAogUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vz
c1Byb3h5OjpjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFJlZjxBUEk6OlBh
Z2VDb25maWd1cmF0aW9uPiYmIHBhZ2VDb25maWd1cmF0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCA5NjVmYjFjZTAxN2IxOWVjNDhlZThmNGRiNDAx
NmQ2YjkxOWI0MjNkLi41NmY4OTkxYTYzYmM3YzEwODZmNDQ1ZGViNTY1YmIzOGNmN2YyYWU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtNjYsNiArNjYs
NyBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBzdHJ1Y3QgUGx1Z2luSW5mbzsKIHN0cnVjdCBQ
cmV3YXJtSW5mb3JtYXRpb247CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOworZW51bSBjbGFz
cyBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIDogdWludDhfdDsKIH0KIAogbmFtZXNwYWNl
IFdlYktpdCB7CkBAIC0yMDYsNiArMjA3LDggQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQg
bm90aWZ5V2Vic2l0ZURhdGFEZWxldGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluc0ZpbmlzaGVkKCk7
CiAgICAgc3RhdGljIHZvaWQgbm90aWZ5V2Vic2l0ZURhdGFTY2FuRm9yUmVnaXN0cmFibGVEb21h
aW5zRmluaXNoZWQoKTsKKworICAgIHZvaWQgc2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2ll
c0ZvclRlc3RpbmcoV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgogCiAgICAgdm9pZCBlbmFibGVTdWRkZW5U
ZXJtaW5hdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCmluZGV4IGEz
Y2M3MmQ5OTZkYzk1N2M5ZWY2NTY5NmU5OTg0YTg1YWY3YjYyZTcuLjAwMjJhMGJkYjhiYTNjMWRl
NGQxYzk5ZGM4NjA5ZmVkMTcxODc1ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29j
b2EubW0KQEAgLTYxLDYgKzYxLDIwIEBAIHN0YXRpYyBIYXNoU2V0PFdlYnNpdGVEYXRhU3RvcmUq
PiYgZGF0YVN0b3JlcygpCiAKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFdlYktpdE5ldHdvcmtM
b2FkVGhyb3R0bGVMYXRlbmN5TWlsbGlzZWNvbmRzRGVmYXVsdHNLZXkgPSBAIldlYktpdE5ldHdv
cmtMb2FkVGhyb3R0bGVMYXRlbmN5TWlsbGlzZWNvbmRzIjsKIAorI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCitXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2Rl
IFdlYnNpdGVEYXRhU3RvcmU6OnRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoKSBjb25zdAor
eworICAgIGlmICghbV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKSB7CisgICAgICAgIE5T
VXNlckRlZmF1bHRzICpkZWZhdWx0cyA9IFtOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZh
dWx0c107CisgICAgICAgIGlmIChbZGVmYXVsdHMgYm9vbEZvcktleTpbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpAIkV4cGVyaW1lbnRhbCVAIiwgV2ViUHJlZmVyZW5jZXNLZXk6OmlzVGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nRGlzYWJsZWRLZXkoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpXV0p
CisgICAgICAgICAgICBtX3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgPSBXZWJDb3JlOjpU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGxPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFj
dGlvbjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV90aGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlID0gV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsOworICAg
IH0KKyAgICByZXR1cm4gKm1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsKK30KKyNlbmRp
ZgorCiBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0
ZXJzKCkKIHsKICAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdl
OjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CkBAIC03MCw3ICs4NCw2IEBAIFdlYnNpdGVEYXRhU3Rv
cmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogICAgIE5TVXNlckRl
ZmF1bHRzICpkZWZhdWx0cyA9IFtOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c107
CiAgICAgYm9vbCBzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbiA9IGZhbHNlOwogICAgIGJvb2wg
ZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSA9IGZhbHNlOwotICAgIGF1dG8g
dGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGU6OkFsbDsKICAgICBhdXRvIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxN
b2RlID0gV2ViQ29yZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU6OkFsbEJ1dENv
b2tpZXM7CiAgICAgYm9vbCBlbmFibGVMZWdhY3lUTFMgPSBmYWxzZTsKICAgICBpZiAoaWQgdmFs
dWUgPSBbZGVmYXVsdHMgb2JqZWN0Rm9yS2V5OkAiV2ViS2l0RW5hYmxlTGVnYWN5VExTIl0pCkBA
IC04NSwxMCArOTgsNiBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0
b3JlOjpwYXJhbWV0ZXJzKCkKICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2UgeyB9OwogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RlYnVnTW9kZSA9IFtkZWZhdWx0cyBib29sRm9yS2V5OkAiSVRQRGVidWdNb2RlIl07Ci0gICAg
aWYgKFtkZWZhdWx0cyBib29sRm9yS2V5OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiRXhw
ZXJpbWVudGFsJUAiLCBXZWJQcmVmZXJlbmNlc0tleTo6aXNUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmdEaXNhYmxlZEtleSgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCldXSkKLSAgICAgICAgdGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2lu
Z01vZGU6OkFsbE9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uOwotICAgIGVsc2UKLSAgICAg
ICAgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IFdlYkNvcmU6OlRoaXJkUGFydHlDb29r
aWVCbG9ja2luZ01vZGU6OkFsbDsKICAgICBpZiAoW2RlZmF1bHRzIGJvb2xGb3JLZXk6W05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJFeHBlcmltZW50YWwlQCIsIFdlYlByZWZlcmVuY2VzS2V5
Ojppc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxEaXNhYmxlZEtleSgpLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCldXSkKICAgICAgICAgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUg
PSBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTo6Tm9uZTsKICAgICBl
bHNlIHsKQEAgLTE2Miw3ICsxNzEsNyBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJz
aXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkKICAgICAgICAgaGFzU3RhdGlzdGljc1Rlc3RpbmdD
YWxsYmFjaygpLAogICAgICAgICBzaG91bGRJbmNsdWRlTG9jYWxob3N0SW5SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLAogICAgICAgICBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2Rl
LAotICAgICAgICB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlLAorICAgICAgICB0aGlyZFBh
cnR5Q29va2llQmxvY2tpbmdNb2RlKCksCiAgICAgICAgIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJl
bW92YWxNb2RlLAogICAgICAgICBtX2NvbmZpZ3VyYXRpb24tPmRldmljZU1hbmFnZW1lbnRSZXN0
cmljdGlvbnNFbmFibGVkKCksCiAgICAgICAgIG1fY29uZmlndXJhdGlvbi0+YWxsTG9hZHNCbG9j
a2VkQnlEZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRm9yVGVzdGluZygpLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmNwcAppbmRleCAxOTk1MTBlNDJlZDFlNDg0MTAxMDAwNGQ0MjRhNjA4NTQ4MTQyZmZkLi5jMWMx
ZjcyYzgwNWJjODM5YTM0NDgyNzU4MDZhYTg1ZDNhZTIxMTk5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApA
QCAtMTc5OCw2ICsxNzk4LDE1IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluCiAgICAgQVNTRVJU
KCFjb21wbGV0aW9uSGFuZGxlcik7CiB9CiAKKyNpZiAhUExBVEZPUk0oQ09DT0EpCitXZWJDb3Jl
OjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIFdlYnNpdGVEYXRhU3RvcmU6OnRoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGUoKSBjb25zdAoreworICAgIGlmICghbV90aGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdNb2RlKQorICAgICAgICBtX3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUg
PSBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGw7CisgICAgcmV0dXJu
ICptX3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU7Cit9CisjZW5kaWYKKwogdm9pZCBXZWJz
aXRlRGF0YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBh
cnR5Q29va2llc0ZvclRlc3RpbmcoYm9vbCBlbmFibGVkLCBib29sIG9ubHlPblNpdGVzV2l0aG91
dFVzZXJJbnRlcmFjdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdh
dG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpAQCAtMTgwNSw2ICsxODE0
LDEyIEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1No
b3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUCiAgICAgaWYgKGVuYWJsZWQpCiAgICAgICAg
IGJsb2NraW5nTW9kZSA9IG9ubHlPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiA/IFdlYkNv
cmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbE9uU2l0ZXNXaXRob3V0VXNlcklu
dGVyYWN0aW9uIDogV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsOwog
CisgICAgaWYgKHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoKSAhPSBibG9ja2luZ01vZGUp
IHsKKyAgICAgICAgbV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlID0gYmxvY2tpbmdNb2Rl
OworICAgICAgICBmb3IgKGF1dG8mIHdlYlByb2Nlc3MgOiBwcm9jZXNzZXMoKSkKKyAgICAgICAg
ICAgIHdlYlByb2Nlc3Muc2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3Rpbmco
YmxvY2tpbmdNb2RlLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNv
cHlSZWYoKV0geyB9KTsKKyAgICB9CisKICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJv
Y2Vzc1Bvb2xzKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vz
c1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpIHsKICAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzLT5z
ZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhtX3Nlc3Npb25JRCwgYmxv
Y2tpbmdNb2RlLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlS
ZWYoKV0geyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCBjNjVhMDY3YmIzZjZlNWVkNzMwZDBmNjFiMmQ5
MDQ1MWVlZjdkMDg2Li5hOWYxNDc3MzBjYTYxOWQzYjZjZTliZDRlYWRlOTcwYmQ2MjE2OWEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5oCkBAIC0xOTUsNiArMTk1LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhib29s
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKGJvb2wgZW5h
YmxlZCwgYm9vbCBvbmx5T25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmly
c3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmdNb2RlIHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoKSBjb25zdDsKICNlbmRp
ZgogICAgIHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25k
cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlc2V0Q2FjaGVNYXhB
Z2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
QEAgLTM3NCw2ICszNzUsOSBAQCBwcml2YXRlOgogI2lmIEhBVkUoQVBQX1NTTykKICAgICBVbmlx
dWVSZWY8U09BdXRob3JpemF0aW9uQ29vcmRpbmF0b3I+IG1fc29BdXRob3JpemF0aW9uQ29vcmRp
bmF0b3I7CiAjZW5kaWYKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAg
IG11dGFibGUgT3B0aW9uYWw8V2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZT4g
bV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOyAvLyBMYXppbHkgY29tcHV0ZWQuCisjZW5k
aWYKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCmluZGV4IDQy
NjNkMTk1YjBiN2RhZTA0ODNmOTJhOGZlMWVhYjNmMWFjMWMzYjEuLjg0MjMwZmMwNDgwMzNmZDQ0
YzkyM2I0MmUxY2U3NmM3ZjY3MmE0ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2Vy
dmVyLmNwcApAQCAtNzEsMTUgKzcxLDE3IEBAIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjp+V2Vi
UmVzb3VyY2VMb2FkT2JzZXJ2ZXIoKQogICAgICAgICB1cGRhdGVDZW50cmFsU3RhdGlzdGljc1N0
b3JlKCk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlcXVlc3RTdG9yYWdl
QWNjZXNzVW5kZXJPcGVuZXIoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9m
U3RvcmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBEb2N1bWVudCYgb3Bl
bmVyRG9jdW1lbnQpCit2b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpyZXF1ZXN0U3RvcmFn
ZUFjY2Vzc1VuZGVyT3BlbmVyKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRP
ZlN0b3JhZ2VBY2Nlc3MsIFdlYlBhZ2UmIG9wZW5lclBhZ2UsIERvY3VtZW50JiBvcGVuZXJEb2N1
bWVudCkKIHsKICAgICBhdXRvIG9wZW5lclVybCA9IG9wZW5lckRvY3VtZW50LnVybCgpOwogICAg
IFJlZ2lzdHJhYmxlRG9tYWluIG9wZW5lckRvbWFpbiB7IG9wZW5lclVybCB9OwogICAgIGlmIChk
b21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MgIT0gb3BlbmVyRG9tYWluCiAgICAgICAgICYmICFv
cGVuZXJEb2N1bWVudC5oYXNSZXF1ZXN0ZWRQYWdlU3BlY2lmaWNTdG9yYWdlQWNjZXNzV2l0aFVz
ZXJJbnRlcmFjdGlvbihkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpCiAgICAgICAgICYmICFl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKG9wZW5lclVybC5zdHJpbmcoKSwgV1RGOjpibGFua1VSTCgp
KSkgewotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OlJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoZG9tYWluSW5O
ZWVkT2ZTdG9yYWdlQWNjZXNzLCBvcGVuZXJQYWdlSUQsIG9wZW5lckRvbWFpbiksIDApOworICAg
ICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OlJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoZG9tYWluSW5OZWVkT2ZTdG9y
YWdlQWNjZXNzLCBvcGVuZXJQYWdlLmlkZW50aWZpZXIoKSwgb3BlbmVyRG9tYWluKSwgMCk7CiAg
ICAgICAgIAorICAgICAgICBvcGVuZXJQYWdlLmFkZERvbWFpbldpdGhQYWdlTGV2ZWxTdG9yYWdl
QWNjZXNzKG9wZW5lckRvbWFpbiwgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzKTsKKwogICAg
ICAgICAvLyBSZW1lbWJlciB1c2VyIGludGVyYWN0aW9uLWJhc2VkIHJlcXVlc3RzIHNpbmNlIHRo
ZXkgZG9uJ3QgbmVlZCB0byBiZSByZXBlYXRlZC4KICAgICAgICAgb3BlbmVyRG9jdW1lbnQuc2V0
SGFzUmVxdWVzdGVkUGFnZVNwZWNpZmljU3RvcmFnZUFjY2Vzc1dpdGhVc2VySW50ZXJhY3Rpb24o
ZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzKTsKICAgICB9CkBAIC0zMzUsMTAgKzMzNyw4IEBA
IHZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1VzZXJJbnRlcmFjdGlvbldpdGhSZWR1
Y2VkVGltZVJlc29sdXRpb24oY29uc3QKICAgICBpZiAoYXV0byogZnJhbWUgPSBkb2N1bWVudC5m
cmFtZSgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBvcGVuZXIgPSBmcmFtZS0+bG9hZGVyKCkub3Bl
bmVyKCkpIHsKICAgICAgICAgICAgIGlmIChhdXRvKiBvcGVuZXJEb2N1bWVudCA9IG9wZW5lci0+
ZG9jdW1lbnQoKSkgewotICAgICAgICAgICAgICAgIGlmIChhdXRvKiBvcGVuZXJGcmFtZSA9IG9w
ZW5lckRvY3VtZW50LT5mcmFtZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhdXRvIG9w
ZW5lclBhZ2VJRCA9IG9wZW5lckZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIodG9w
RnJhbWVEb21haW4sIG9wZW5lclBhZ2VJRC52YWx1ZSgpLCAqb3BlbmVyRG9jdW1lbnQpOwotICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoYXV0byogb3BlbmVyUGFnZSA9IG9w
ZW5lckRvY3VtZW50LT5wYWdlKCkpCisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RTdG9yYWdl
QWNjZXNzVW5kZXJPcGVuZXIodG9wRnJhbWVEb21haW4sIFdlYlBhZ2U6OmZyb21Db3JlUGFnZSgq
b3BlbmVyUGFnZSksICpvcGVuZXJEb2N1bWVudCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oCmluZGV4IGZhZTQ4YzY2ZDNl
MGY3ZTI0NmIxNmJhNzY5NzU1YTAxNmQwYzc5YmYuLmM4MDkyZjRhMGI3YzFjMTVlMTZhOWY3NjA3
MzM2NmU4NTc2MWQzYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oCkBAIC0z
NCw2ICszNCw4IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBXZWJQYWdlOworCiBj
bGFzcyBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpSZXNv
dXJjZUxvYWRPYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIo
KTsKQEAgLTY0LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNjaGVkdWxlTm90aWZpY2F0
aW9uSWZOZWVkZWQoKTsKIAogICAgIFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzPiB0YWtlU3RhdGlzdGljcygpOwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRl
ck9wZW5lcihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluSW5OZWVkT2ZT
dG9yYWdlQWNjZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIFdlYkNv
cmU6OkRvY3VtZW50JiBvcGVuZXJEb2N1bWVudCk7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFj
Y2Vzc1VuZGVyT3BlbmVyKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5J
bk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYlBhZ2UmIG9wZW5lclBhZ2UsIFdlYkNvcmU6OkRvY3Vt
ZW50JiBvcGVuZXJEb2N1bWVudCk7CiAKICAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBtX3Jlc291cmNlU3RhdGlz
dGljc01hcDsKICAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBXVEY6Oldh
bGxUaW1lPiBtX2xhc3RSZXBvcnRlZFVzZXJJbnRlcmFjdGlvbk1hcDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCmluZGV4IDczODJmZDlh
NjEzODBmNTczYTNkOGI0MjAzNzQ1N2MxMzM0NTE1N2QuLmFkYTlmYjZlZDZlZWFhMGEyOGI2OWQy
MmZiMDhmN2Q3ZDQxY2JhNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkNvb2tpZUphci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViQ29va2llSmFyLmNwcApAQCAtMjgsOCArMjgsMTEgQEAKIAogI2luY2x1ZGUgIk5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJGcmFtZS5oIgorI2luY2x1ZGUgIldl
YlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRGVwcmVjYXRl
ZEdsb2JhbFNldHRpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CkBA
IC00OCwxOCArNTEsNjEgQEAgY2xhc3MgV2ViU3RvcmFnZVNlc3Npb25Qcm92aWRlciA6IHB1Ymxp
YyBXZWJDb3JlOjpTdG9yYWdlU2Vzc2lvblByb3ZpZGVyIHsKIFdlYkNvb2tpZUphcjo6V2ViQ29v
a2llSmFyKCkKICAgICA6IFdlYkNvcmU6OkNvb2tpZUphcihhZG9wdFJlZigqbmV3IFdlYlN0b3Jh
Z2VTZXNzaW9uUHJvdmlkZXIpKSB7IH0KIAotU3RyaW5nIFdlYkNvb2tpZUphcjo6Y29va2llcyhX
ZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsKSBjb25zdAorI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCitzdGF0aWMgYm9vbCBzaG91bGRCbG9ja0Nv
b2tpZXMoV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBj
b25zdCBVUkwmIHJlc291cmNlVVJMLCBib29sJiBkZWxlZ2F0ZXNDb29raWVCbG9ja2luZ1RvTmV0
d29ya1Byb2Nlc3MpCiB7Ci0gICAgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlEOwot
ICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7Ci0gICAgaWYgKGF1dG8qIGZyYW1l
ID0gZG9jdW1lbnQuZnJhbWUoKSkgewotICAgICAgICBmcmFtZUlEID0gZnJhbWUtPmxvYWRlcigp
LmNsaWVudCgpLmZyYW1lSUQoKTsKLSAgICAgICAgcGFnZUlEID0gZnJhbWUtPmxvYWRlcigpLmNs
aWVudCgpLnBhZ2VJRCgpOworICAgIGlmICghV2ViQ29yZTo6RGVwcmVjYXRlZEdsb2JhbFNldHRp
bmdzOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPmlzTWFpbkZyYW1lKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIFJlZ2lzdHJhYmxlRG9tYWluIGZpcnN0UGFydHlEb21haW4geyBm
aXJzdFBhcnR5Rm9yQ29va2llcyB9OworICAgIGlmIChmaXJzdFBhcnR5RG9tYWluLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgUmVnaXN0cmFibGVEb21haW4gcmVzb3Vy
Y2VEb21haW4geyByZXNvdXJjZVVSTCB9OworICAgIGlmIChyZXNvdXJjZURvbWFpbi5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChmaXJzdFBhcnR5RG9tYWluID09
IHJlc291cmNlRG9tYWluKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoZnJhbWUg
JiYgZnJhbWUtPmZyYW1lTG9hZGVyQ2xpZW50KCktPmhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNj
ZXNzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+
cGFnZSgpICYmIGZyYW1lLT5wYWdlKCktPmhhc1BhZ2VMZXZlbFN0b3JhZ2VBY2Nlc3MoZmlyc3RQ
YXJ0eURvbWFpbiwgcmVzb3VyY2VEb21haW4pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAvLyBUaGUgV2ViQ29udGVudCBwcm9jZXNzIGRvZXMgbm90IGhhdmUgZW5vdWdoIGluZm9ybWF0
aW9uIHRvIGRlYWwgd2l0aCBvdGhlciBwb2xpY2llcyB0aGFuIFRoaXJkUGFydHlDb29raWVCbG9j
a2luZ01vZGU6OkFsbCBzbyB3ZSBoYXZlIHRvIGdvIHRvIHRoZSBOZXR3b3JrUHJvY2VzcyBmb3Ig
YWxsCisgICAgLy8gb3RoZXIgcG9saWNpZXMgYW5kIHRoZSByZXF1ZXN0IG1heSBlbmQgdXAgZ2V0
dGluZyBibG9ja2VkIG9uIE5ldHdvcmtQcm9jZXNzIHNpZGUuCisgICAgaWYgKFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoKSAhPSBUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmdNb2RlOjpBbGwpIHsKKyAgICAgICAgZGVsZWdhdGVzQ29va2llQmxvY2tp
bmdUb05ldHdvcmtQcm9jZXNzID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAorICAgIHJldHVybiB0cnVlOworfQorI2VuZGlmCisKK1N0cmluZyBXZWJDb29raWVKYXI6OmNv
b2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCkgY29uc3QK
K3sKKyAgICBhdXRvKiB3ZWJGcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkgPyBXZWJGcmFtZTo6ZnJv
bUNvcmVGcmFtZSgqZG9jdW1lbnQuZnJhbWUoKSkgOiBudWxscHRyOworICAgIGlmICghd2ViRnJh
bWUgfHwgIXdlYkZyYW1lLT5wYWdlKCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBib29s
IGRlbGVnYXRlc0Nvb2tpZUJsb2NraW5nVG9OZXR3b3JrUHJvY2VzcyA9IGZhbHNlOworI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgaWYgKHNob3VsZEJsb2NrQ29va2ll
cyh3ZWJGcmFtZSwgZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsLCBkZWxlZ2F0
ZXNDb29raWVCbG9ja2luZ1RvTmV0d29ya1Byb2Nlc3MpKQorICAgICAgICByZXR1cm4geyB9Owor
I2VuZGlmCisKKyAgICBhdXRvIGZyYW1lSUQgPSB3ZWJGcmFtZS0+ZnJhbWVJRCgpOworICAgIGF1
dG8gcGFnZUlEID0gd2ViRnJhbWUtPnBhZ2UoKS0+aWRlbnRpZmllcigpOworCiAgICAgU3RyaW5n
IGNvb2tpZVN0cmluZzsKICAgICBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCA9IGZhbHNlOwot
ICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2ll
cygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxk
SW5jbHVkZVNlY3VyZUNvb2tpZXMoZG9jdW1lbnQsIHVybCkpLCBNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET006OlJlcGx5KGNvb2tpZVN0cmluZywg
c2VjdXJlQ29va2llc0FjY2Vzc2VkKSwgMCkpCisgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5
bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9N
KGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbyhkb2N1bWVudCks
IHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRJbmNsdWRlU2VjdXJlQ29va2llcyhkb2N1bWVu
dCwgdXJsKSwgZGVsZWdhdGVzQ29va2llQmxvY2tpbmdUb05ldHdvcmtQcm9jZXNzID8gU2hvdWxk
QXBwbHlJVFBDb29raWVCbG9ja2luZ1BvbGljeTo6WWVzIDogU2hvdWxkQXBwbHlJVFBDb29raWVC
bG9ja2luZ1BvbGljeTo6Tm8pLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OkNvb2tpZXNGb3JET006OlJlcGx5KGNvb2tpZVN0cmluZywgc2VjdXJlQ29va2llc0FjY2Vz
c2VkKSwgMCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICByZXR1cm4gY29va2llU3RyaW5n
OwpAQCAtNjcsMTQgKzExMywyMCBAQCBTdHJpbmcgV2ViQ29va2llSmFyOjpjb29raWVzKFdlYkNv
cmU6OkRvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAKIHZvaWQgV2Vi
Q29va2llSmFyOjpzZXRDb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCwgY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewotICAgIE9wdGlvbmFsPEZy
YW1lSWRlbnRpZmllcj4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlEOwotICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkpIHsKLSAgICAgICAg
ZnJhbWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCk7Ci0gICAgICAgIHBh
Z2VJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKLSAgICB9CisgICAgYXV0
byogd2ViRnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpID8gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUo
KmRvY3VtZW50LmZyYW1lKCkpIDogbnVsbHB0cjsKKyAgICBpZiAoIXdlYkZyYW1lIHx8ICF3ZWJG
cmFtZS0+cGFnZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBib29sIGRlbGVnYXRlc0Nvb2tp
ZUJsb2NraW5nVG9OZXR3b3JrUHJvY2VzcyA9IGZhbHNlOworI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpCisgICAgaWYgKHNob3VsZEJsb2NrQ29va2llcyh3ZWJGcmFtZSwgZG9j
dW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsLCBkZWxlZ2F0ZXNDb29raWVCbG9ja2lu
Z1RvTmV0d29ya1Byb2Nlc3MpKQorICAgICAgICByZXR1cm47CisjZW5kaWYKKworICAgIGF1dG8g
ZnJhbWVJRCA9IHdlYkZyYW1lLT5mcmFtZUlEKCk7CisgICAgYXV0byBwYWdlSUQgPSB3ZWJGcmFt
ZS0+cGFnZSgpLT5pZGVudGlmaWVyKCk7CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNldENvb2tpZXNGcm9tRE9NKGRvY3Vt
ZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbyhkb2N1bWVudCksIHVybCwg
ZnJhbWVJRCwgcGFnZUlELCBjb29raWVTdHJpbmcpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNldENvb2tpZXNGcm9t
RE9NKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbyhkb2N1bWVu
dCksIHVybCwgZnJhbWVJRCwgcGFnZUlELCBkZWxlZ2F0ZXNDb29raWVCbG9ja2luZ1RvTmV0d29y
a1Byb2Nlc3MgPyBTaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5OjpZZXMgOiBTaG91
bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5OjpObywgY29va2llU3RyaW5nKSwgMCk7CiB9
CiAKIGJvb2wgV2ViQ29va2llSmFyOjpjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpEb2N1
bWVudCYgZG9jdW1lbnQpIGNvbnN0CkBAIC04NywyMyArMTM5LDMyIEBAIGJvb2wgV2ViQ29va2ll
SmFyOjpjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQpIGNv
bnN0CiAKIHN0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvcmU6OlNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4g
V2ViQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25z
dCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNs
dWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKKyAgICBib29sIGRlbGVnYXRlc0Nvb2tpZUJsb2Nr
aW5nVG9OZXR3b3JrUHJvY2VzcyA9IGZhbHNlOworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCisgICAgYXV0byogd2ViRnJhbWUgPSBmcmFtZUlEID8gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkud2ViRnJhbWUoKmZyYW1lSUQpIDogbnVsbHB0cjsKKyAgICBpZiAoc2hvdWxkQmxv
Y2tDb29raWVzKHdlYkZyYW1lLCBmaXJzdFBhcnR5LCB1cmwsIGRlbGVnYXRlc0Nvb2tpZUJsb2Nr
aW5nVG9OZXR3b3JrUHJvY2VzcykpCisgICAgICAgIHJldHVybiB7IH07CisjZW5kaWYKKwogICAg
IFN0cmluZyBjb29raWVTdHJpbmc7CiAgICAgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQgPSBm
YWxzZTsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGZpcnN0
UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVD
b29raWVzKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZTo6UmVwbHkoY29va2llU3RyaW5nLCBzZWN1cmVDb29raWVz
QWNjZXNzZWQpLCAwKSkKKyAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1
ZGVTZWN1cmVDb29raWVzLCBkZWxlZ2F0ZXNDb29raWVCbG9ja2luZ1RvTmV0d29ya1Byb2Nlc3Mg
PyBTaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5nUG9saWN5OjpZZXMgOiBTaG91bGRBcHBseUlU
UENvb2tpZUJsb2NraW5nUG9saWN5OjpObyksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWU6OlJlcGx5KGNvb2tpZVN0
cmluZywgc2VjdXJlQ29va2llc0FjY2Vzc2VkKSwgMCkpCiAgICAgICAgIHJldHVybiB7IH07CiAg
ICAgcmV0dXJuIHsgY29va2llU3RyaW5nLCBzZWN1cmVDb29raWVzQWNjZXNzZWQgPyBXZWJDb3Jl
OjpTZWN1cmVDb29raWVzQWNjZXNzZWQ6OlllcyA6IFdlYkNvcmU6OlNlY3VyZUNvb2tpZXNBY2Nl
c3NlZDo6Tm8gfTsKIH0KIAogYm9vbCBXZWJDb29raWVKYXI6OmdldFJhd0Nvb2tpZXMoY29uc3Qg
V2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPFdlYkNv
cmU6OkNvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0CiB7Ci0gICAgT3B0aW9uYWw8RnJhbWVJZGVu
dGlmaWVyPiBmcmFtZUlEOwotICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7Ci0g
ICAgaWYgKGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkgewotICAgICAgICBmcmFtZUlE
ID0gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKTsKLSAgICAgICAgcGFnZUlEID0g
ZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpOwotICAgIH0KKyAgICBhdXRvKiB3ZWJG
cmFtZSA9IGRvY3VtZW50LmZyYW1lKCkgPyBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqZG9jdW1l
bnQuZnJhbWUoKSkgOiBudWxscHRyOworICAgIGJvb2wgZGVsZWdhdGVzQ29va2llQmxvY2tpbmdU
b05ldHdvcmtQcm9jZXNzID0gZmFsc2U7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKKyAgICBpZiAoc2hvdWxkQmxvY2tDb29raWVzKHdlYkZyYW1lLCBkb2N1bWVudC5maXJz
dFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGRlbGVnYXRlc0Nvb2tpZUJsb2NraW5nVG9OZXR3b3Jr
UHJvY2VzcykpCisgICAgICAgIHJldHVybiB7IH07CisjZW5kaWYKIAotICAgIGlmICghV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
R2V0UmF3Q29va2llcyhkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUlu
Zm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llczo6UmVwbHkocmF3Q29va2llcyksIDAp
KQorICAgIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCA9IHdlYkZyYW1lID8gbWFr
ZU9wdGlvbmFsKHdlYkZyYW1lLT5mcmFtZUlEKCkpIDogV1RGOjpudWxsb3B0OworICAgIE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQgPSB3ZWJGcmFtZSAmJiB3ZWJGcmFtZS0+cGFnZSgp
ID8gbWFrZU9wdGlvbmFsKHdlYkZyYW1lLT5wYWdlKCktPmlkZW50aWZpZXIoKSkgOiBXVEY6Om51
bGxvcHQ7CisgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRSYXdDb29raWVzKGRvY3VtZW50LmZpcnN0UGFydHlG
b3JDb29raWVzKCksIHNhbWVTaXRlSW5mbyhkb2N1bWVudCksIHVybCwgZnJhbWVJRCwgcGFnZUlE
LCBkZWxlZ2F0ZXNDb29raWVCbG9ja2luZ1RvTmV0d29ya1Byb2Nlc3MgPyBTaG91bGRBcHBseUlU
UENvb2tpZUJsb2NraW5nUG9saWN5OjpZZXMgOiBTaG91bGRBcHBseUlUUENvb2tpZUJsb2NraW5n
UG9saWN5OjpObyksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0
UmF3Q29va2llczo6UmVwbHkocmF3Q29va2llcyksIDApKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCmluZGV4IDdlYmUxZGYwZjI5ZDQ5MjMyYzhiYTEyYWFlMGIzMDMxOTE0MThk
YTUuLmFiYzZjZGVjYzA3OGY0ZDkyYTE2ZjI4MTBlM2UyNmYwYTEzOWM2MmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC02NjAwLDYgKzY2MDAs
MTcgQEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFp
biYmIHN1YkZyYW1lRG9tYWluLCBSZWdpc3RyYWIKICAgICB9KTsKIH0KIAordm9pZCBXZWJQYWdl
OjphZGREb21haW5XaXRoUGFnZUxldmVsU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgdG9wTGV2ZWxEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURv
bWFpbikKK3sKKyAgICBtX2RvbWFpbnNXaXRoUGFnZUxldmVsU3RvcmFnZUFjY2Vzcy5hZGQodG9w
TGV2ZWxEb21haW4sIHJlc291cmNlRG9tYWluKTsKK30KKworYm9vbCBXZWJQYWdlOjpoYXNQYWdl
TGV2ZWxTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BMZXZlbERvbWFp
biwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluKSBjb25zdAoreworICAg
IGF1dG8gaXQgPSBtX2RvbWFpbnNXaXRoUGFnZUxldmVsU3RvcmFnZUFjY2Vzcy5maW5kKHRvcExl
dmVsRG9tYWluKTsKKyAgICByZXR1cm4gaXQgIT0gbV9kb21haW5zV2l0aFBhZ2VMZXZlbFN0b3Jh
Z2VBY2Nlc3MuZW5kKCkgJiYgaXQtPnZhbHVlID09IHJlc291cmNlRG9tYWluOworfQorCiB2b2lk
IFdlYlBhZ2U6Ondhc0xvYWRlZFdpdGhEYXRhVHJhbnNmZXJGcm9tUHJldmFsZW50UmVzb3VyY2Uo
KQogewogICAgIGF1dG8qIGZyYW1lID0gbWFpbkZyYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZTM1MmQ0NDZhMzQ5YWMyZjViZGU4N2EyY2Fl
MTI2MDZmOWExNzYzMi4uMTQ5YWQ5MTQyM2EwYWRiNDc5NTUxZDgyZDhhYzgzNWVjOTU4MzcyZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTE2MCw2
ICsxMTYwLDggQEAgcHVibGljOgogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
CiAgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYg
c3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21h
aW4sIFdlYkZyYW1lJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9p
ZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZy
YW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBX
ZWJGcmFtZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dh
c0dyYW50ZWQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYpOworICAg
IGJvb2wgaGFzUGFnZUxldmVsU3RvcmFnZUFjY2Vzcyhjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYgdG9wTGV2ZWxEb21haW4sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiByZXNvdXJjZURvbWFpbikgY29uc3Q7CisgICAgdm9pZCBhZGREb21haW5XaXRoUGFnZUxldmVs
U3RvcmFnZUFjY2Vzcyhjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgdG9wTGV2ZWxE
b21haW4sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbik7
CiAgICAgdm9pZCB3YXNMb2FkZWRXaXRoRGF0YVRyYW5zZmVyRnJvbVByZXZhbGVudFJlc291cmNl
KCk7CiAjZW5kaWYKIApAQCAtMjAyNSw2ICsyMDI3LDEwIEBAIHByaXZhdGU6CiAgICAgV2ViQ29y
ZTo6VGltZXIgbV90ZXh0QXV0b1NpemluZ0FkanVzdG1lbnRUaW1lcjsKICNlbmRpZgogCisjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV9kb21haW5zV2l0
aFBhZ2VMZXZlbFN0b3JhZ2VBY2Nlc3M7CisjZW5kaWYKKwogICAgIFN0cmluZyBtX292ZXJyaWRk
ZW5NZWRpYVR5cGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
aW5kZXggMTU2MWZmYWVlMjY5N2U4ZGViOWE3NzFmMjY4ZDdlN2VlZDE3NWVkNi4uM2I0NGU4ZTRk
MGE5ZDBjNDEzMWM3NjBkYjc3MzU1ZjQxNmIzMDRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcApAQCAtNDc3LDYgKzQ3Nyw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6c2V0
V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMoV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMm
JiBwCiAgICAgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQocGFyYW1ldGVycy5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCk7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQorICAgIG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IHBhcmFtZXRl
cnMudGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsKICAgICBpZiAocGFyYW1ldGVycy5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCAmJiAhcGFyYW1ldGVycy5zZXNzaW9uSUQuaXNFcGhl
bWVyYWwoKSAmJiAhUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZElmRXhpc3RzKCkpCiAgICAg
ICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRTaGFyZWQoKm5ldyBXZWJSZXNvdXJjZUxvYWRP
YnNlcnZlcik7CiAjZW5kaWYKQEAgLTE5NzMsNiArMTk3NCwxNCBAQCBib29sIFdlYlByb2Nlc3M6
OmFyZUFsbFBhZ2VzVGhyb3R0bGVhYmxlKCkgY29uc3QKICAgICB9KTsKIH0KIAorI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCit2b2lkIFdlYlByb2Nlc3M6OnNldFNob3VsZEJs
b2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01v
ZGUgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZSA9IHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU7CisgICAgY29tcGxldGlvbkhhbmRs
ZXIoKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIFJFTEVB
U0VfTE9HX1NFU1NJT05fSUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4
IDRkODE4ZGFhMWMwNjU2NDAwOTA3ZDllYTgwYjVjZDc1NDdmOTViYTcuLmIyNGM4Y2UzNzQ0NDFk
ZDM5ODE4YWYxN2IzODVhMDc2YzhmYzM4MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWxNYW5h
Z2VyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BY3Rpdml0eVN0YXRlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9GcmFtZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMTY1
LDYgKzE2NiwxMCBAQCBwdWJsaWM6CiAgICAgCiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KCkgY29uc3QgeyBBU1NFUlQobV9zZXNzaW9uSUQpOyByZXR1cm4gKm1fc2Vzc2lvbklEOyB9CiAK
KyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIFdlYkNvcmU6OlRoaXJk
UGFydHlDb29raWVCbG9ja2luZ01vZGUgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsgfQorI2VuZGlmCisK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICBjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmIGNvbXBv
c2l0aW5nUmVuZGVyU2VydmVyUG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fY29tcG9zaXRpbmdSZW5k
ZXJTZXJ2ZXJQb3J0OyB9CiAjZW5kaWYKQEAgLTQzNSw2ICs0NDAsMTAgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHJldm9rZVVzZXJNZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25zKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+Jik7CiAjZW5kaWYKIAorI2VuZGlmCisKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQorICAgIHZvaWQgc2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0Zv
clRlc3RpbmcoV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgogCiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxp
emVQcm9jZXNzKGNvbnN0IEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMm
KTsKQEAgLTYwMiw2ICs2MTEsMTAgQEAgcHJpdmF0ZToKICAgICAvLyBQcmV3YXJtZWQgV2ViUHJv
Y2Vzc2VzIGRvIG5vdCBoYXZlIGFuIGFzc29jaWF0ZWQgc2Vzc2lvbklEIHlldCwgd2hpY2ggaXMg
d2h5IHRoaXMgaXMgYW4gb3B0aW9uYWwuCiAgICAgLy8gQnkgdGhlIHRpbWUgdGhlIFdlYlByb2Nl
c3MgZ2V0cyBhIFdlYlBhZ2UsIGl0IGlzIGd1YXJhbnRlZWQgdG8gaGF2ZSBhIHNlc3Npb25JRC4K
ICAgICBPcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gbV9zZXNzaW9uSUQ7CisKKyNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGUgbV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIHsgV2ViQ29yZTo6VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsIH07CisjZW5kaWYKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbgppbmRleCBmMDBkNzljNmQ0MDdjZmJjNmUxYmNjYmIyNzI0NWRhNDdhYmE4YjY0
Li45OTBiMDRkNTg3MWVhYzI1MjdlM2VkM2EzNDA0NzU4ZGVhOTk0MWM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTYyLDUgKzE2
Miw2IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgTm90UmVmQ291bnRl
ZCB7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIFNlZWRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRm9yVGVzdGluZyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBm
aXJzdFBhcnR5RG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0aGlyZFBhcnR5RG9t
YWluLCBib29sIHNob3VsZFNjaGVkdWxlTm90aWZpY2F0aW9uKSAtPiAoKSBBc3luYworICAgIFNl
dFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKGVudW06dWludDhfdCBXZWJD
b3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIGJsb2NraW5nTW9kZSkgLT4gKCkgQXN5
bmMKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IGU0NzBkNWNmMjNhYzNmNTdlMzIzMjYyNDc0NTQwZDM3ZWYyYTk2MTUuLjNjYzE1
MjI2ODA1MGU3OTM4NmMyYTAxYTY3NGNhYWI4N2E3YTI0M2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0wMS0x
NCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIGRvY3VtZW50LmNv
b2tpZSBzaG91bGQgbm90IGRvIGEgc3luYyBJUEMgdG8gdGhlIG5ldHdvcmsgcHJvY2VzcyBmb3Ig
aWZyYW1lcyB0aGF0IGRvIG5vdCBoYXZlIHN0b3JhZ2UgYWNjZXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYxMDgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIHNldFN0YXRpc3RpY3NTaG91bGRC
bG9ja1RoaXJkUGFydHlDb29raWVzIElQQyBmcm9tIHRoZSBXZWJQcm9jZXNzIHRvIHRoZSBVSVBy
b2Nlc3MgYXN5bmNocm9ub3VzCisgICAgICAgIHNpbmNlIHRoaXMgZW5kcyB1cCBzZW5kaW5nIGFu
IElQQyBiYWNrIHRvIHRoZSBXZWJQcm9jZXNzIG5vdyAod2hpY2ggd291bGQgZGVhZGxvY2spLgor
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNw
cDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhp
cmRQYXJ0eUNvb2tpZXMpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRp
b24uY3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVj
ZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisKIDIwMjAtMDEtMTAg
IHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXVFJdIFVzZSBz
aG9ydCBoZWFydCBiZWF0IHRpbWVyIGFzIGEgVGVzdE9wdGlvbgpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggZmU5ZTJm
ZWE0M2Y0ZGUzYTc4Zjk5NTUwMjM5MDg5ZDIzY2M5MzY0NS4uMmVhM2NiZDcyYjQyYjJhMzBjYTJh
NzZjODY1YzFkYWIwMjI5ZWM1YSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC0yMjM1LDcgKzIyMzUsNyBAQCB2b2lk
IFRlc3RSdW5uZXI6OnNldFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGJv
b2wgdmFsdWUsIEpTVmFsdWVSZQogICAgIGlmIChvbmx5T25TaXRlc1dpdGhvdXRVc2VySW50ZXJh
Y3Rpb24pCiAgICAgICAgIG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiU2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNPblNp
dGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiIpKTsKICAgICBXS1JldGFpblB0cjxXS0Jvb2xlYW5S
ZWY+IG1lc3NhZ2VCb2R5ID0gYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUodmFsdWUpKTsKLSAgICBX
S0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigp
LmJ1bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCksIG51bGxwdHIp
OworICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1
bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOwogICAgIG1faGFz
U2V0QmxvY2tUaGlyZFBhcnR5Q29va2llc0NhbGxiYWNrID0gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCAwOThmNWJhNzhjN2VmMjgyYTYz
N2IyM2FmMmMwMzkwMTZkYTBhNzM0Li5mZDVmMmU5ZWVmMzhjZTVjMjU1NDNiMmRkNjYyOWY5ZTI2
ZTdkYTBkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9u
LmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAt
NzQ3LDYgKzc0NywyMCBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZy
b21JbmplY3RlZEJ1bmRsZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZQogICAgICAgICByZXR1cm47
CiAgICAgfQogCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5h
bWUsICJTZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc09uU2l0ZXNXaXRo
b3V0VXNlckludGVyYWN0aW9uIikpIHsKKyAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3Nh
Z2VCb2R5KSA9PSBXS0Jvb2xlYW5HZXRUeXBlSUQoKSk7CisgICAgICAgIFdLQm9vbGVhblJlZiB2
YWx1ZSA9IHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4obWVzc2FnZUJvZHkpOworICAgICAgICBU
ZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQ
YXJ0eUNvb2tpZXMoV0tCb29sZWFuR2V0VmFsdWUodmFsdWUpLCB0cnVlKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3Nh
Z2VOYW1lLCAiU2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMiKSkgewor
ICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLQm9vbGVhbkdldFR5
cGVJRCgpKTsKKyAgICAgICAgV0tCb29sZWFuUmVmIHZhbHVlID0gc3RhdGljX2Nhc3Q8V0tCb29s
ZWFuUmVmPihtZXNzYWdlQm9keSk7CisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24o
KS5zZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhXS0Jvb2xlYW5HZXRW
YWx1ZSh2YWx1ZSksIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmIChX
S1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiUnVuVUlQcm9jZXNzU2Ny
aXB0IikpIHsKICAgICAgICAgV0tEaWN0aW9uYXJ5UmVmIG1lc3NhZ2VCb2R5RGljdGlvbmFyeSA9
IHN0YXRpY19jYXN0PFdLRGljdGlvbmFyeVJlZj4obWVzc2FnZUJvZHkpOwogICAgICAgICBXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4gc2NyaXB0S2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiU2NyaXB0IikpOwpAQCAtMTU1OSwyMCArMTU3Myw2IEBAIFdLUmV0YWlu
UHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3Nh
Z2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICAKLSAg
ICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldFN0YXRp
c3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzT25TaXRlc1dpdGhvdXRVc2VySW50ZXJh
Y3Rpb24iKSkgewotICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdL
Qm9vbGVhbkdldFR5cGVJRCgpKTsKLSAgICAgICAgV0tCb29sZWFuUmVmIHZhbHVlID0gc3RhdGlj
X2Nhc3Q8V0tCb29sZWFuUmVmPihtZXNzYWdlQm9keSk7Ci0gICAgICAgIFRlc3RDb250cm9sbGVy
OjpzaW5nbGV0b24oKS5zZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhX
S0Jvb2xlYW5HZXRWYWx1ZSh2YWx1ZSksIHRydWUpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICB9Ci0gICAgCi0gICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2Fn
ZU5hbWUsICJTZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyIpKSB7Ci0g
ICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tCb29sZWFuR2V0VHlw
ZUlEKCkpOwotICAgICAgICBXS0Jvb2xlYW5SZWYgdmFsdWUgPSBzdGF0aWNfY2FzdDxXS0Jvb2xl
YW5SZWY+KG1lc3NhZ2VCb2R5KTsKLSAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigp
LnNldFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKFdLQm9vbGVhbkdldFZh
bHVlKHZhbHVlKSwgZmFsc2UpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAg
CiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRT
dGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUiKSkgewogICAgICAgICBB
U1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLQm9vbGVhbkdldFR5cGVJRCgpKTsK
ICAgICAgICAgV0tCb29sZWFuUmVmIHZhbHVlID0gc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPiht
ZXNzYWdlQm9keSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387730</attachid>
            <date>2020-01-14 16:42:47 -0800</date>
            <delta_ts>2020-01-14 19:11:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206108-20200114164246.patch</filename>
            <type>text/plain</type>
            <size>89077</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0MzQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjc5MDM1YjdkZTc4YjNj
ZGM0YTA4ZmI3MzM0N2VkMjhiNzkxMzU0OS4uMjViYjMzZmE5N2VjYThhMjRiZDYzYjE0M2U3NDk5
NTVlYjViNDQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIwLTAxLTE0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgZG9jdW1lbnQuY29va2llIHNo
b3VsZCBub3QgZG8gYSBzeW5jIElQQyB0byB0aGUgbmV0d29yayBwcm9jZXNzIGZvciBpZnJhbWVz
IHRoYXQgZG8gbm90IGhhdmUgc3RvcmFnZSBhY2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjEwOAorCisgICAgICAgIFJldmlld2VkIGJ5IEdl
b2ZmIEdhcmVuIGFuZCBKb2huIFdpbGFuZGVyLgorCisgICAgICAgIFdoZW4gSVRQIGlzIGVuYWJs
ZWQgYW5kIFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbCBtb2RlIGlzIHVzZWQgKGRl
ZmF1bHQgaW4gU2FmYXJpKSwgd2UgY2FuIG5vdyBkZXRlY3QKKyAgICAgICAgdGhhdCBhIHRoaXJk
LXBhcnR5IGlmcmFtZSBkb2VzIG5vdCBoYXZlIGNvb2tpZSBhY2Nlc3MgY29tcGxldGVseSBvbiB0
aGUgV2ViQ29udGVudCBwcm9jZXNzIHNpZGUsIGluc3RlYWQgb2YKKyAgICAgICAgZG9pbmcgdGhl
IGNoZWNrIG9uIHRoZSBOZXR3b3JrIHByb2Nlc3Mgc2lkZS4gVGhlIGJlbmVmaXQgaXMgdGhhdCB0
aGlzIGF2b2lkcyBkb2luZyBhIHN5bmNocm9ub3VzIElQQyBldmVyeQorICAgICAgICB0aW1lIGEg
dGhpcmQtcGFydHkgaWZyYW1lIHdoaWNoIGRvZXMgbm90IGhhdmUgc3RvcmFnZSBhY2Nlc3MgdHJp
ZXMgdG8gYWNjZXNzIGRvY3VtZW50LmNvb2tpZSBpbiBKYXZhU2NyaXB0LgorICAgICAgICBHaXZl
biB0aGF0IHRoaXMgc2hvdWxkIGFwcGx5IHRvIGEgbG90IG9mIGlmcmFtZXMsIHRoaXMgY2hhbmdl
IGlzIHZlcnkgYmVuZWZpY2lhbCB0byBwZXJmb3JtYW5jZS4KKworICAgICAgICBObyBuZXcgdGVz
dHMsIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMgdGhhdCBhcmUgc3RpbGwgcGFzc2luZy4KKwor
ICAgICAgICAqIGxvYWRlci9Db29raWVKYXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29va2ll
SmFyOjpjb29raWVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphcjo6c2V0Q29v
a2llcyk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphcjo6Z2V0UmF3Q29v
a2llcyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldFdpbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNG
cm9tRE9NIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
Y29va2llc0ZvckRPTSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5t
bToKKyAgICAgICAgKFdlYkNvcmU6OmNvb2tpZXNGb3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6
Y29va2llc0ZvclNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpjb29raWVzRm9yRE9NIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tp
ZXMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFn
ZVNlc3Npb25DdXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6c2V0Q29va2llc0Zyb21ET00gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246
OnNldENvb2tpZXNGcm9tRE9NIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSBj
b25zdCk6CisKIDIwMjAtMDEtMTAgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgog
CiAgICAgICAgIFtMRkNdW0ludGVncmF0aW9uXSBGaXggYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8t
bWFrZS12aXNpYmxlLWlmcmFtZS1vZmZzY3JlZW4uaHRtbApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlYjk0MTRkZjkw
ZWE2NjFjMDk4M2M0YTBhZTZlYzliMzM2N2UxYjY1Li5lNDliYjhkM2ZlZGU1Mjc3ODM5OTBkOTdm
NWZiMmFhMmQ5M2YzM2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDIwLTAxLTE0ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgZG9jdW1lbnQuY29va2ll
IHNob3VsZCBub3QgZG8gYSBzeW5jIElQQyB0byB0aGUgbmV0d29yayBwcm9jZXNzIGZvciBpZnJh
bWVzIHRoYXQgZG8gbm90IGhhdmUgc3RvcmFnZSBhY2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjEwOAorCisgICAgICAgIFJldmlld2VkIGJ5
IEdlb2ZmIEdhcmVuIGFuZCBKb2huIFdpbGFuZGVyLgorCisgICAgICAgIFdoZW4gSVRQIGlzIGVu
YWJsZWQgYW5kIFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbCBtb2RlIGlzIHVzZWQg
KGRlZmF1bHQgaW4gU2FmYXJpKSwgd2UgY2FuIG5vdyBkZXRlY3QKKyAgICAgICAgdGhhdCBhIHRo
aXJkLXBhcnR5IGlmcmFtZSBkb2VzIG5vdCBoYXZlIGNvb2tpZSBhY2Nlc3MgY29tcGxldGVseSBv
biB0aGUgV2ViQ29udGVudCBwcm9jZXNzIHNpZGUsIGluc3RlYWQgb2YKKyAgICAgICAgZG9pbmcg
dGhlIGNoZWNrIG9uIHRoZSBOZXR3b3JrIHByb2Nlc3Mgc2lkZS4gVGhlIGJlbmVmaXQgaXMgdGhh
dCB0aGlzIGF2b2lkcyBkb2luZyBhIHN5bmNocm9ub3VzIElQQyBldmVyeQorICAgICAgICB0aW1l
IGEgdGhpcmQtcGFydHkgaWZyYW1lIHdoaWNoIGRvZXMgbm90IGhhdmUgc3RvcmFnZSBhY2Nlc3Mg
dHJpZXMgdG8gYWNjZXNzIGRvY3VtZW50LmNvb2tpZSBpbiBKYXZhU2NyaXB0LgorICAgICAgICBH
aXZlbiB0aGF0IHRoaXMgc2hvdWxkIGFwcGx5IHRvIGEgbG90IG9mIGlmcmFtZXMsIHRoaXMgY2hh
bmdlIGlzIHZlcnkgYmVuZWZpY2lhbCB0byBwZXJmb3JtYW5jZS4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00pOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2llc0Zy
b21ET00pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Z2V0UmF3Q29va2llcyk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0Ojpsb2dDb29raWVJbmZvcm1hdGlvbkludGVybmFsKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6ZGVj
b2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFy
YW1ldGVycy5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAg
ICAqIFNoYXJlZC9XZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNv
b2tpZXNGb3JUZXN0aW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3Mp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6d2ViUHJvY2Vzc0RhdGFTdG9yZVBh
cmFtZXRlcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNv
b2tpZXNGb3JUZXN0aW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVD
b2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6dGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OnBhcmFtZXRlcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6dGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlD
b29raWVzRm9yVGVzdGluZyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJl
c291cmNlTG9hZE9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nVXNlckludGVyYWN0aW9uV2l0aFJlZHVj
ZWRUaW1lUmVzb2x1dGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJDb29raWVKYXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpzaG91bGRCbG9ja0Nvb2tpZXMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVKYXI6OmNvb2tpZXMgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb29raWVKYXI6OnNldENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29va2llSmFyOjpnZXRSYXdDb29raWVzIGNvbnN0KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmFkZERvbWFpbldpdGhQYWdlTGV2ZWxTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6aGFzUGFnZUxldmVsU3RvcmFnZUFjY2VzcyBjb25zdCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzZXRXZWJzaXRlRGF0YVN0b3Jl
UGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnNldFNob3VsZEJsb2Nr
VGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6dGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZSBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluOgorCiAyMDIwLTAxLTEwICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBVcGRhdGUgT3B0aW9uc0dUSy5jbWFrZSBh
bmQgTkVXUyBmb3IgMi4yNy40IHJlbGVhc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Db29raWVKYXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAK
aW5kZXggYTEwMDE1Y2IxOTc4ZjZjNTZmOGYyZmUwOThiNjE4ODcwNjcwMWQ0Yy4uMjM5MDY2OGRm
ODMxMTNmZGExNzMwMzgwYzI0OTEyMDZiZDM4OTA1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0Nvb2tpZUphci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tp
ZUphci5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgU3RyaW5nIENvb2tpZUphcjo6Y29va2llcyhEb2N1
bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsKSBjb25zdAogCiAgICAgc3RkOjpwYWlyPFN0
cmluZywgYm9vbD4gcmVzdWx0OwogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9zdG9yYWdlU2Vz
c2lvblByb3ZpZGVyLT5zdG9yYWdlU2Vzc2lvbigpKQotICAgICAgICByZXN1bHQgPSBzZXNzaW9u
LT5jb29raWVzRm9yRE9NKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRl
SW5mbyhkb2N1bWVudCksIHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2ll
cyk7CisgICAgICAgIHJlc3VsdCA9IHNlc3Npb24tPmNvb2tpZXNGb3JET00oZG9jdW1lbnQuZmly
c3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlE
LCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFA6Olllcyk7CiAgICAg
ZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIApAQCAtMTE0LDcgKzExNCw3IEBA
IHZvaWQgQ29va2llSmFyOjpzZXRDb29raWVzKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgY29vCiAgICAgfQogCiAgICAgaWYgKGF1dG8qIHNlc3Npb24g
PSBtX3N0b3JhZ2VTZXNzaW9uUHJvdmlkZXItPnN0b3JhZ2VTZXNzaW9uKCkpCi0gICAgICAgIHNl
c3Npb24tPnNldENvb2tpZXNGcm9tRE9NKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCks
IHNhbWVTaXRlSW5mbyhkb2N1bWVudCksIHVybCwgZnJhbWVJRCwgcGFnZUlELCBjb29raWVTdHJp
bmcpOworICAgICAgICBzZXNzaW9uLT5zZXRDb29raWVzRnJvbURPTShkb2N1bWVudC5maXJzdFBh
cnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBh
Z2VJRCwgU2hvdWxkQXNrSVRQOjpZZXMsIGNvb2tpZVN0cmluZyk7CiAgICAgZWxzZQogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KQEAgLTEzMSw3ICsxMzEsNyBAQCBib29sIENvb2tp
ZUphcjo6Y29va2llc0VuYWJsZWQoY29uc3QgRG9jdW1lbnQmKSBjb25zdAogc3RkOjpwYWlyPFN0
cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2VkPiBDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZy
YW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29r
aWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAogewogICAgIGlmIChhdXRvKiBzZXNzaW9u
ID0gbV9zdG9yYWdlU2Vzc2lvblByb3ZpZGVyLT5zdG9yYWdlU2Vzc2lvbigpKSB7Ci0gICAgICAg
IHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IHJlc3VsdCA9IHNlc3Npb24tPmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBw
YWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKKyAgICAgICAgc3RkOjpwYWlyPFN0cmluZywg
Ym9vbD4gcmVzdWx0ID0gc2Vzc2lvbi0+Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoZmly
c3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3Vy
ZUNvb2tpZXMsIFNob3VsZEFza0lUUDo6WWVzKTsKICAgICAgICAgcmV0dXJuIHsgcmVzdWx0LmZp
cnN0LCByZXN1bHQuc2Vjb25kID8gU2VjdXJlQ29va2llc0FjY2Vzc2VkOjpZZXMgOiBTZWN1cmVD
b29raWVzQWNjZXNzZWQ6Ok5vIH07CiAgICAgfQogCkBAIC0xNjQsNyArMTY0LDcgQEAgYm9vbCBD
b29raWVKYXI6OmdldFJhd0Nvb2tpZXMoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBV
UkwmIHVybCwgVmVjdG9yPEMKICAgICB9CiAKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fc3Rv
cmFnZVNlc3Npb25Qcm92aWRlci0+c3RvcmFnZVNlc3Npb24oKSkKLSAgICAgICAgcmV0dXJuIHNl
c3Npb24tPmdldFJhd0Nvb2tpZXMoZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2Ft
ZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGNvb2tpZXMpOworICAg
ICAgICByZXR1cm4gc2Vzc2lvbi0+Z2V0UmF3Q29va2llcyhkb2N1bWVudC5maXJzdFBhcnR5Rm9y
Q29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwg
U2hvdWxkQXNrSVRQOjpZZXMsIGNvb2tpZXMpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCmluZGV4IDJkMzUwN2RmMjM3ZGIyOTVkNTkzMWE0YzBk
Zjc2MDI3NzdkZTdiOGIuLjQyOTAyZGI5NDU1YjdiODEwZGZiZmI1ODYxMGUwMGY0YjgyMzYxOTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRh
dGlvbi5jcHAKQEAgLTM0MCw3ICszNDAsNyBAQCBDYWNoZUNvbnRyb2xEaXJlY3RpdmVzIHBhcnNl
Q2FjaGVDb250cm9sRGlyZWN0aXZlcyhjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzKQogCiBz
dGF0aWMgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQog
ewotICAgIHJldHVybiBzZXNzaW9uLmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHJlcXVl
c3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgU2FtZVNpdGVJbmZvOjpjcmVhdGUocmVxdWVzdCks
IHJlcXVlc3QudXJsKCksIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCByZXF1ZXN0LnVybCgp
LnByb3RvY29sSXMoImh0dHBzIikgPyBJbmNsdWRlU2VjdXJlQ29va2llczo6WWVzIDogSW5jbHVk
ZVNlY3VyZUNvb2tpZXM6Ok5vKS5maXJzdDsKKyAgICByZXR1cm4gc2Vzc2lvbi5jb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShyZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCksIFNhbWVT
aXRlSW5mbzo6Y3JlYXRlKHJlcXVlc3QpLCByZXF1ZXN0LnVybCgpLCBXVEY6Om51bGxvcHQsIFdU
Rjo6bnVsbG9wdCwgcmVxdWVzdC51cmwoKS5wcm90b2NvbElzKCJodHRwcyIpID8gSW5jbHVkZVNl
Y3VyZUNvb2tpZXM6OlllcyA6IEluY2x1ZGVTZWN1cmVDb29raWVzOjpObywgU2hvdWxkQXNrSVRQ
OjpZZXMpLmZpcnN0OwogfQogCiBzdGF0aWMgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGNvbnN0IENvb2tpZUphciogY29va2llSmFyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9O
ZXR3b3JrU3RvcmFnZVNlc3Npb24uaAppbmRleCBlZWZiODcwZTRjYWM1YTBlZmE3MjJjMTZhZGUy
NzIwMzA4NDM4NzMxLi5kNWI4ZWE5ZmM0ZmNiZGNhYjMzY2Y2YzdjZDk0YTI1YTYxMzMxYWEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmgKQEAgLTc2LDYgKzc2LDcgQEAgZW51bSBjbGFzcyBJbmNsdWRlU2VjdXJl
Q29va2llcyA6IGJvb2w7CiBlbnVtIGNsYXNzIEluY2x1ZGVIdHRwT25seUNvb2tpZXMgOiBib29s
OwogZW51bSBjbGFzcyBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIDogdWludDhfdCB7IEFs
bCwgQWxsT25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sIE9ubHlBY2NvcmRpbmdUb1BlckRv
bWFpblBvbGljeSB9OwogZW51bSBjbGFzcyBGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9k
ZSA6IHVpbnQ4X3QgeyBBbGxCdXRDb29raWVzLCBOb25lLCBBbGxCdXRDb29raWVzTGl2ZU9uVGVz
dGluZ1RpbWVvdXQsIEFsbEJ1dENvb2tpZXNSZXByb1Rlc3RpbmdUaW1lb3V0IH07CitlbnVtIGNs
YXNzIFNob3VsZEFza0lUUCA6IGJvb2wgeyBObywgWWVzIH07CiAKIGNsYXNzIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTmV0d29ya1N0b3JhZ2VTZXNz
aW9uKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0xMjcsNyArMTI4LDcgQEAgcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29va2llc0VuYWJsZWQoKSBjb25zdDsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZShjb25zdCBDb29raWUmKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mLCBjb25zdCBVUkwm
LCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiwgY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPiwgU2hvdWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBDb29raWUmKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoKTsKQEAgLTEz
NywxMSArMTM4LDExIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8Q29va2ll
PiBnZXRBbGxDb29raWVzKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPENvb2tpZT4gZ2V0
Q29va2llcyhjb25zdCBVUkwmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhc0Nvb2tpZXMo
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxG
cmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIFZlY3RvcjxDb29raWU+
JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8
RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBTaG91bGRBc2tJVFAs
IFZlY3RvcjxDb29raWU+JikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmbHVzaENv
b2tpZVN0b3JlKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29v
a2llcyhIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3Rk
OjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmll
cj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0
OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+LCBJbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvckRPTShjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNvb2tp
ZXMsIFNob3VsZEFza0lUUCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFN0
cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxGcmFtZUlk
ZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVz
LCBTaG91bGRBc2tJVFApIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxTdHJp
bmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IENvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFByb3h5JikgY29uc3Q7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcAppbmRleCBl
YjgxYzA1MmViZGE3MmRhMDZkYmU3Y2QyNDk0ZjRkMzJhZWUwZmQ0Li41MmRhY2M2ODZkODNiYTI5
ODEzMDc5MDU5YWM4NTUxZmE2MWU5M2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNG
TmV0V2luLmNwcApAQCAtMTg5LDcgKzE4OSw3IEBAIHN0YXRpYyBDRkFycmF5UmVmIGNyZWF0ZUNv
b2tpZXMoQ0ZEaWN0aW9uYXJ5UmVmIGhlYWRlckZpZWxkcywgQ0ZVUkxSZWYgdXJsKQogICAgIHJl
dHVybiBwYXJzZWRDb29raWVzOwogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0
Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8m
LCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAor
dm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFs
PEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCwgU2hvdWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAogewogICAgIFVOVVNF
RF9QQVJBTShmcmFtZUlEKTsKICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKQEAgLTIyNSw3ICsy
MjUsNyBAQCBzdGF0aWMgYm9vbCBjb250YWluc1NlY3VyZUNvb2tpZXMoQ0ZBcnJheVJlZiBjb29r
aWVzKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRp
Zmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNl
Y3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5n
LCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8
RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQ
KSBjb25zdAogewogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKICAgICBVTlVTRURfUEFSQU0o
cGFnZUlEKTsKQEAgLTI0MCw3ICsyNDAsNyBAQCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcgogICAg
IHJldHVybiB7IGNvb2tpZVN0cmluZywgZGlkQWNjZXNzU2VjdXJlQ29va2llcyB9OwogfQogCi1z
dGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5j
bHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFs
PEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lU
UCkgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFN
KHBhZ2VJRCk7CkBAIC0yNTUsNyArMjU1LDcgQEAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb24KIAog
c3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYg
aGVhZGVyRmllbGRQcm94eSkgY29uc3QKIHsKLSAgICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoaGVhZGVyRmllbGRQcm94eS5maXJzdFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5
LnNhbWVTaXRlSW5mbywgaGVhZGVyRmllbGRQcm94eS51cmwsIGhlYWRlckZpZWxkUHJveHkuZnJh
bWVJRCwgaGVhZGVyRmllbGRQcm94eS5wYWdlSUQsIGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNl
Y3VyZUNvb2tpZXMpOworICAgIHJldHVybiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSho
ZWFkZXJGaWVsZFByb3h5LmZpcnN0UGFydHksIGhlYWRlckZpZWxkUHJveHkuc2FtZVNpdGVJbmZv
LCBoZWFkZXJGaWVsZFByb3h5LnVybCwgaGVhZGVyRmllbGRQcm94eS5mcmFtZUlELCBoZWFkZXJG
aWVsZFByb3h5LnBhZ2VJRCwgaGVhZGVyRmllbGRQcm94eS5pbmNsdWRlU2VjdXJlQ29va2llcywg
U2hvdWxkQXNrSVRQOjpZZXMpOwogfQogCiBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29v
a2llc0VuYWJsZWQoKSBjb25zdApAQCAtMjY0LDcgKzI2NCw3IEBAIGJvb2wgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpjb29raWVzRW5hYmxlZCgpIGNvbnN0CiAgICAgcmV0dXJuIHBvbGljeSA9PSBD
RkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW4g
fHwgcG9saWN5ID09IENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lFeGNsdXNpdmVseUZy
b21NYWluRG9jdW1lbnREb21haW4gfHwgcG9saWN5ID09IENGSFRUUENvb2tpZVN0b3JhZ2VBY2Nl
cHRQb2xpY3lBbHdheXM7CiB9CiAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdD
b29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3Qg
VVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0Citi
b29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFt
ZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNo
b3VsZEFza0lUUCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0CiB7CiAgICAgVU5V
U0VEX1BBUkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJBTShwYWdlSUQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNl
c3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KaW5kZXggZGRjYTJjNjNjY2UzMGE2YzJjZTAwM2Ri
Nzc5ODRjMjE5ODg3YjQ3ZC4uOWY2NzY1ZWE2N2QxMGNlZjNiNjJlZDVjZTAwYjk4ODgxOTRmMmNk
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3
b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCkBAIC0zMDgsMjYgKzMw
OCwyNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IGZpbHRlckNvb2tpZXMoTlNBcnJheSAq
dW5maWx0ZXJlZENvb2tpZXMsIE9wdGlvbmFsPFNlYwogICAgIHJldHVybiBmaWx0ZXJlZENvb2tp
ZXM7CiB9CiAKLXN0YXRpYyBOU0FycmF5ICpjb29raWVzRm9yVVJMKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0
ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRp
Zmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkKK3N0YXRpYyBO
U0FycmF5ICpjb29raWVzRm9yVVJMKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lv
biwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5m
bywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCkK
IHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIGlmIChzZXNzaW9u
LnNob3VsZEJsb2NrQ29va2llcyhmaXJzdFBhcnR5LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCkpCisg
ICAgaWYgKHNob3VsZEFza0lUUCA9PSBTaG91bGRBc2tJVFA6OlllcyAmJiBzZXNzaW9uLnNob3Vs
ZEJsb2NrQ29va2llcyhmaXJzdFBhcnR5LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCkpCiAgICAgICAg
IHJldHVybiBuaWw7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKICAgICBVTlVT
RURfUEFSQU0ocGFnZUlEKTsKKyAgICBVTlVTRURfUEFSQU0oc2hvdWxkQXNrSVRQKTsKICNlbmRp
ZgogICAgIHJldHVybiBodHRwQ29va2llc0ZvclVSTChzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5n
ZXQoKSwgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwpOwogfQogCiBlbnVtIEluY2x1ZGVI
VFRQT25seU9yTm90IHsgRG9Ob3RJbmNsdWRlSFRUUE9ubHksIEluY2x1ZGVIVFRQT25seSB9Owot
c3RhdGljIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZy
YW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwg
SW5jbHVkZUhUVFBPbmx5T3JOb3QgaW5jbHVkZUhUVFBPbmx5LCBJbmNsdWRlU2VjdXJlQ29va2ll
cyBpbmNsdWRlU2VjdXJlQ29va2llcykKK3N0YXRpYyBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBj
b29raWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNv
bnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVIVFRQT25seU9yTm90IGluY2x1ZGVIVFRQ
T25seSwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFz
a0lUUCBzaG91bGRBc2tJVFAgPSBTaG91bGRBc2tJVFA6OlllcykKIHsKICAgICBBU1NFUlQoaGFz
UHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7
CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKLSAgICBOU0FycmF5ICpjb29r
aWVzID0gY29va2llc0ZvclVSTChzZXNzaW9uLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVy
bCwgZnJhbWVJRCwgcGFnZUlEKTsKKyAgICBOU0FycmF5ICpjb29raWVzID0gY29va2llc0ZvclVS
TChzZXNzaW9uLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlE
LCBzaG91bGRBc2tJVFApOwogICAgIGlmICghW2Nvb2tpZXMgY291bnRdKQogICAgICAgICByZXR1
cm4geyBTdHJpbmcoKSwgZmFsc2UgfTsgLy8gUmV0dXJuIGEgbnVsbCBzdHJpbmcsIG5vdCBhbiBl
bXB0eSBvbmUgdGhhdCBTdHJpbmdCdWlsZGVyIHdvdWxkIGNyZWF0ZSBiZWxvdy4KIApAQCAtMzc3
LDE0ICszNzgsMTQgQEAgc3RhdGljIHZvaWQgZGVsZXRlQWxsSFRUUENvb2tpZXMoQ0ZIVFRQQ29v
a2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlKQogICAgIENGSFRUUENvb2tpZVN0b3JhZ2VEZWxl
dGVBbGxDb29raWVzKGNvb2tpZVN0b3JhZ2UpOwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29s
PiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9w
dGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0
CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNG
b3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRl
SW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5j
bHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFApIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUlu
Zm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBEb05vdEluY2x1ZGVIVFRQT25seSwgaW5jbHVkZVNl
Y3VyZUNvb2tpZXMpOworICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQ
YXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgRG9Ob3RJbmNsdWRlSFRU
UE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFApOwogfQogCi1zdGQ6OnBh
aXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZy
YW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29r
aWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4g
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25z
dCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJl
Q29va2llcywgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCkgY29uc3QKIHsKLSAgICByZXR1cm4g
Y29va2llc0ZvclNlc3Npb24oKnRoaXMsIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBm
cmFtZUlELCBwYWdlSUQsIEluY2x1ZGVIVFRQT25seSwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwor
ICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJ
bmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgSW5jbHVkZUhUVFBPbmx5LCBpbmNsdWRlU2VjdXJl
Q29va2llcywgc2hvdWxkQXNrSVRQKTsKIH0KIAogc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBD
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYgaGVhZGVyRmllbGRQcm94eSkgY29uc3QKQEAg
LTM5MiwxMiArMzkzLDIxIEBAIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uCiAgICAgcmV0dXJuIGNv
b2tpZXNGb3JTZXNzaW9uKCp0aGlzLCBoZWFkZXJGaWVsZFByb3h5LmZpcnN0UGFydHksIGhlYWRl
ckZpZWxkUHJveHkuc2FtZVNpdGVJbmZvLCBoZWFkZXJGaWVsZFByb3h5LnVybCwgaGVhZGVyRmll
bGRQcm94eS5mcmFtZUlELCBoZWFkZXJGaWVsZFByb3h5LnBhZ2VJRCwgSW5jbHVkZUhUVFBPbmx5
LCBoZWFkZXJGaWVsZFByb3h5LmluY2x1ZGVTZWN1cmVDb29raWVzKTsKIH0KIAotdm9pZCBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRp
b25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBw
YWdlSUQsIGNvbnN0IFN0cmluZyYgY29va2llU3RyKSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFt
ZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNo
b3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIGNvbnN0IFN0cmluZyYgY29va2llU3RyKSBjb25zdAog
ewogICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFj
Y2Vzc1Jhd0Nvb2tpZXMpKTsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAor
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgaWYgKHNob3VsZEFza0lU
UCA9PSBTaG91bGRBc2tJVFA6OlllcyAmJiBzaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0eSwg
dXJsLCBmcmFtZUlELCBwYWdlSUQpKQorICAgICAgICByZXR1cm47CisjZWxzZQorICAgIFVOVVNF
RF9QQVJBTShmcmFtZUlEKTsKKyAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKKyAgICBVTlVTRURf
UEFSQU0oc2hvdWxkQXNrSVRQKTsKKyNlbmRpZgorCiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzU2
MzI4ODM+IE9uIDEwLjUsIE5TSFRUUENvb2tpZVN0b3JhZ2Ugd291bGQgc3RvcmUgYW4gZW1wdHkg
Y29va2llLAogICAgIC8vIHdoaWNoIHdvdWxkIGJlIHNlbnQgYXMgIkNvb2tpZTogPSIuCiAgICAg
aWYgKGNvb2tpZVN0ci5pc0VtcHR5KCkpCkBAIC00MjMsMTQgKzQzMyw2IEBAIHZvaWQgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFNhbWVTCiAjZW5kaWYKICAgICBBU1NFUlQoW2ZpbHRlcmVkQ29va2llcy5nZXQoKSBj
b3VudF0gPD0gMSk7CiAKLSNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAg
IGlmIChzaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFtZUlELCBwYWdlSUQp
KQotICAgICAgICByZXR1cm47Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKLSAg
ICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKLSNlbmRpZgotCiAgICAgc2V0SFRUUENvb2tpZXNGb3JV
UkwoY29va2llU3RvcmFnZSgpLmdldCgpLCBmaWx0ZXJlZENvb2tpZXMuZ2V0KCksIGNvb2tpZVVS
TCwgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvKTsKIAogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQ
VElPTlM7CkBAIC00NTcsMTIgKzQ1OSwxMiBAQCBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
Y29va2llc0VuYWJsZWQoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFs
PEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0Citib29sIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVu
dGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBTaG91bGRB
c2tJVFAgc2hvdWxkQXNrSVRQLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKIHsK
ICAgICByYXdDb29raWVzLmNsZWFyKCk7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
OwogCi0gICAgTlNBcnJheSAqY29va2llcyA9IGNvb2tpZXNGb3JVUkwoKnRoaXMsIGZpcnN0UGFy
dHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQpOworICAgIE5TQXJyYXkgKmNv
b2tpZXMgPSBjb29raWVzRm9yVVJMKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVy
bCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRBc2tJVFApOwogICAgIE5TVUludGVnZXIgY291bnQg
PSBbY29va2llcyBjb3VudF07CiAgICAgcmF3Q29va2llcy5yZXNlcnZlQ2FwYWNpdHkoY291bnQp
OwogICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNl
c3Npb25DdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3
b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAppbmRleCBmMmExOTAzNTYxYWMxYTUwYjBiYmQ4Zjc1
N2EwZTU2NTQ2M2JiNTJhLi5kNzA0NTA0ZTY0OTkxZDc0ZjMxNzBkODM3OGRjMmRlMjY0ODMwMmFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCkBAIC04MCw3ICs4MCw3IEBA
IENvb2tpZUphckRCJiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZURhdGFiYXNlKCkgY29u
c3QKICAgICByZXR1cm4gbV9jb29raWVEYXRhYmFzZTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFt
ZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGNv
bnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0Cit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0
Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8m
IHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4g
ZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQLCBj
b25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAogewogICAgIGNvb2tpZVN0b3JhZ2UoKS5zZXRDb29r
aWVzRnJvbURPTSgqdGhpcywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQs
IHBhZ2VJRCwgdmFsdWUpOwogfQpAQCAtOTAsNyArOTAsNyBAQCBib29sIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6Y29va2llc0VuYWJsZWQoKSBjb25zdAogICAgIHJldHVybiBjb29raWVTdG9yYWdl
KCkuY29va2llc0VuYWJsZWQoKnRoaXMpOwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlv
bmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0Citz
dGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JE
T00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5m
bywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCkgY29uc3QKIHsKICAgICByZXR1cm4gY29va2ll
U3RvcmFnZSgpLmNvb2tpZXNGb3JET00oKnRoaXMsIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywg
dXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKIH0KQEAgLTE2MCw3
ICsxNjAsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aGFzQ29va2llcyhjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbAogICAgIGNvbXBsZXRpb25IYW5kbGVy
KGZhbHNlKTsKIH0KIAotYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMo
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNv
bnN0Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwm
IHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlELCBTaG91bGRBc2tJVFAsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVz
KSBjb25zdAogewogICAgIHJldHVybiBjb29raWVTdG9yYWdlKCkuZ2V0UmF3Q29va2llcygqdGhp
cywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgcmF3Q29v
a2llcyk7CiB9CkBAIC0xNzAsNyArMTcwLDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmZsdXNoQ29va2llU3RvcmUoKQogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIFdlYktpdCB0
byB1c2UuCiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFs
PEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZv
JiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+
IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVD
b29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFApIGNvbnN0CiB7CiAgICAg
cmV0dXJuIGNvb2tpZVN0b3JhZ2UoKS5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSgqdGhp
cywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCmlu
ZGV4IDNmYjg4OTJjNzlmZDVlNGY2NzBjYWM0ODg0ZjllZjBiNTM3MWIyYTUuLmUwNTUwNzZjN2Ux
ZGJjMjQwZWYyMzliN2RlMjA1YzNhODU5NDVmOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uU291cC5jcHAKQEAgLTI2MSw3ICsyNjEsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaHR0cE9u
bHlDb29raWVFeGlzdHMoY29uc3QgR1NMaXN0KiBjb29raWVzLCBjb25zdCBnY2hhciogbmFtZQog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENv
b2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKK3Zv
aWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQs
IFNob3VsZEFza0lUUCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKIHsKICAgICBVTlVTRURf
UEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC00MzIsNyArNDMy
LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246Omhhc0Nvb2tpZXMoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGwKICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxz
ZSk7CiB9CiAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9w
dGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0Citib29sIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+
IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNob3VsZEFza0lUUCwg
VmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZp
cnN0UGFydHkpOwogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKQEAgLTUwMiw3ICs1MDIsNyBA
QCBzdGF0aWMgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvclNlc3Npb24oY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZQogICAgIHJldHVybiB7IFN0cmluZzo6ZnJvbVVURjgo
Y29va2llSGVhZGVyLmdldCgpKSwgZGlkQWNjZXNzU2VjdXJlQ29va2llcyB9OwogfQogCi1zdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00o
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVy
bCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykg
Y29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29v
a2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNv
bnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1
cmVDb29raWVzLCBTaG91bGRBc2tJVFApIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZpcnN0
UGFydHkpOwogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKQEAgLTUxMCw3ICs1MTAsNyBAQCBz
dGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JE
T00oY29uc3QgVVJMJiBmaXJzdFBhcgogICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhp
cywgdXJsLCBmYWxzZSwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogfQogCi1zdGQ6OnBhaXI8U3Ry
aW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3Qg
VVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNv
b2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRp
Zmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNl
Y3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCkgY29uc3QKIHsK
ICAgICBVTlVTRURfUEFSQU0oZmlyc3RQYXJ0eSk7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQp
OwpAQCAtNTIxLDcgKzUyMSw3IEBAIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uCiAKIHN0ZDo6cGFp
cjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoY29uc3QgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkmIGhlYWRlckZp
ZWxkUHJveHkpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGhlYWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0eSwgaGVhZGVyRmllbGRQcm94eS5zYW1lU2l0
ZUluZm8sIGhlYWRlckZpZWxkUHJveHkudXJsLCBoZWFkZXJGaWVsZFByb3h5LmZyYW1lSUQsIGhl
YWRlckZpZWxkUHJveHkucGFnZUlELCBoZWFkZXJGaWVsZFByb3h5LmluY2x1ZGVTZWN1cmVDb29r
aWVzKTsKKyAgICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoaGVhZGVyRmll
bGRQcm94eS5maXJzdFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5LnNhbWVTaXRlSW5mbywgaGVhZGVy
RmllbGRQcm94eS51cmwsIGhlYWRlckZpZWxkUHJveHkuZnJhbWVJRCwgaGVhZGVyRmllbGRQcm94
eS5wYWdlSUQsIGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFz
a0lUUDo6WWVzKTsKIH0KIAogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmZsdXNoQ29va2ll
U3RvcmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCAyYjYwNzg5NmM5ZjVhMjU2
ZDI2OGUwODVjMDgwOWJhODYyZTNkZWE0Li5iMmQ0YzZjMWY2MTk2MDcxNDJlYWM3NzI0YmNiYmEw
ODE4ZjNiMDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNTY0LDEyICs1NjQs
MTIgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hl
bWVzQXNDT1JTRW5hYmxlZChWZWN0b3I8U3RyaW4KICAgICAgICAgbV9zY2hlbWVSZWdpc3RyeS0+
cmVnaXN0ZXJVUkxTY2hlbWVBc0NPUlNFbmFibGVkKFdURk1vdmUoc2NoZW1lKSk7CiB9CiAKLXZv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00oY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJM
JiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlk
ZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tp
ZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBzZWN1
cmVDb29raWVzQWNjZXNzZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgRnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBzZWN1cmVDb29r
aWVzQWNjZXNzZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8qIG5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKCk7CiAgICAgaWYgKCFuZXR3b3JrU3RvcmFn
ZVNlc3Npb24pCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0sIGZhbHNlKTsK
LSAgICBhdXRvIHJlc3VsdCA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+Y29va2llc0ZvckRPTShm
aXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2Vj
dXJlQ29va2llcyk7CisgICAgYXV0byByZXN1bHQgPSBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmNv
b2tpZXNGb3JET00oZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJ
RCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIHNob3VsZEFza0lUUCk7CiAjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgaWYgKGF1
dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpKSB7CiAgICAgICAgIGlmIChzZXNzaW9uLT5z
aG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpKQpAQCAtNTc5LDEyICs1NzksMTIgQEAgdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFMKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdC5m
aXJzdCksIHJlc3VsdC5zZWNvbmQpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8V2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlELCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBTaG91bGRBc2tJ
VFAgc2hvdWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKICAgICBhdXRv
KiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbigpOwogICAgIGlmICghbmV0
d29ya1N0b3JhZ2VTZXNzaW9uKQogICAgICAgICByZXR1cm47Ci0gICAgbmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLT5zZXRDb29raWVzRnJvbURPTShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwg
ZnJhbWVJRCwgcGFnZUlELCBjb29raWVTdHJpbmcpOworICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lv
bi0+c2V0Q29va2llc0Zyb21ET00oZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1l
SUQsIHBhZ2VJRCwgc2hvdWxkQXNrSVRQLCBjb29raWVTdHJpbmcpOwogI2lmIEVOQUJMRShSRVNP
VVJDRV9MT0FEX1NUQVRJU1RJQ1MpICYmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGlmIChh
dXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKSkgewogICAgICAgICBpZiAoc2Vzc2lvbi0+
c2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oKSkKQEAgLTYwMSwyMiArNjAxLDIyIEBAIHZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNFbmFibGVkKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+CiAgICAgY29tcGxldGlvbkhhbmRsZXIobmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLT5jb29raWVzRW5hYmxlZCgpKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmws
IE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nLCBib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1l
U2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1l
SUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVz
IGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0cmluZywgYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oKTsKICAgICBp
ZiAoIW5ldHdvcmtTdG9yYWdlU2Vzc2lvbikKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5k
bGVyKHsgfSwgZmFsc2UpOwotICAgIGF1dG8gcmVzdWx0ID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9u
LT5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8s
IHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcyk7CisgICAgYXV0byBy
ZXN1bHQgPSBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1
ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFApOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUocmVzdWx0LmZpcnN0KSwgcmVzdWx0LnNlY29uZCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlv
bmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8m
IHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4g
ZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNo
b3VsZEFza0lUUCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6Q29va2ll
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvKiBuZXR3b3JrU3RvcmFnZVNl
c3Npb24gPSBzdG9yYWdlU2Vzc2lvbigpOwogICAgIGlmICghbmV0d29ya1N0b3JhZ2VTZXNzaW9u
KQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICBWZWN0b3I8V2Vi
Q29yZTo6Q29va2llPiByZXN1bHQ7Ci0gICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5nZXRSYXdD
b29raWVzKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHJl
c3VsdCk7CisgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5nZXRSYXdDb29raWVzKGZpcnN0UGFy
dHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUCwgcmVz
dWx0KTsKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdCkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggMGU2ZTgyMzJiNzJhYTg3OTIyZGE4ODBkMmZjMmZkZTg4
NDEyZjc0Yi4uODM5NzQzMWMwMzMxM2NjMmMwNTBkNTEyYzk1MmFlN2UzZmVlOWE2NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtNTgsNiArNTgsNyBAQCBjbGFzcyBSZXNvdXJjZUVycm9y
OwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzUHJvbXB0
V2FzU2hvd24gOiBib29sOwogZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCA6IGJv
b2w7CitlbnVtIGNsYXNzIFNob3VsZEFza0lUUCA6IGJvb2w7CiBzdHJ1Y3QgU2FtZVNpdGVJbmZv
OwogCiBlbnVtIGNsYXNzIEluY2x1ZGVTZWN1cmVDb29raWVzIDogYm9vbDsKQEAgLTE5NywxMSAr
MTk4LDExIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lc0FzQ09SU0Vu
YWJsZWQoVmVjdG9yPFN0cmluZz4mJiBzY2hlbWVzKTsKIAotICAgIHZvaWQgY29va2llc0ZvckRP
TShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNv
bnN0IFVSTCYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBzZWN1cmVDb29r
aWVzQWNjZXNzZWQpPiYmKTsKLSAgICB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0
aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXI+LCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGNvb2tpZXNGb3JET00oY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwm
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJD
b3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcywgV2ViQ29yZTo6U2hvdWxkQXNrSVRQLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2llc0Fj
Y2Vzc2VkKT4mJik7CisgICAgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNob3Vs
ZEFza0lUUCwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBjb29raWVzRW5hYmxlZChDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJ
bmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgT3B0
aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29v
a2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIHNl
Y3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOwotICAgIHZvaWQgZ2V0UmF3Q29va2llcyhjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYs
IE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6Q29v
a2llPiYmKT4mJik7CisgICAgdm9pZCBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVS
TCYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMsIFdlYkNvcmU6
OlNob3VsZEFza0lUUCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5n
LCBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOworICAgIHZvaWQgZ2V0UmF3Q29va2ll
cyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNv
bnN0IFVSTCYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6U2hvdWxkQXNrSVRQLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmKTsKICAgICB2b2lkIGRl
bGV0ZUNvb2tpZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpOwogCiAgICAg
dm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggYjBkYWEzYzNm
MDg1MzFjOTkxOTU1YzkxOWMyYzNkMzQ2M2EyZDI2NC4uODRjZmJkZjNmYjkzNGQ3OTE0MzcxNjIx
MWEyNTA2ZmNmNjEzNGQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCkBAIC0zNCwxMSArMzQsMTEgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFN0YXJ0RG93bmxvYWQoV2ViS2l0OjpE
b3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBT
dHJpbmcgc3VnZ2VzdGVkTmFtZSkKICAgICBDb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxv
YWQodWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIFdlYktpdDo6RG93bmxvYWRJ
RCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKIAotICAgIENvb2tpZXNGb3JET00oVVJMIGZpcnN0
UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJs
LCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRl
U2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmluZyBjb29raWVTdHJp
bmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykgU3luY2hyb25vdXMKLSAgICBTZXRDb29r
aWVzRnJvbURPTShVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBz
YW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4g
ZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU3RyaW5n
IGNvb2tpZVN0cmluZykKKyAgICBDb29raWVzRm9yRE9NKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3Qg
V2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgZW51
bTpib29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVz
LCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCkgLT4gKFN0cmlu
ZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykgU3luY2hyb25vdXMK
KyAgICBTZXRDb29raWVzRnJvbURPTShVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNh
bWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIGVudW06Ym9vbCBXZWJD
b3JlOjpTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBTdHJpbmcgY29va2llU3RyaW5nKQogICAg
IENvb2tpZXNFbmFibGVkKCkgLT4gKGJvb2wgZW5hYmxlZCkgU3luY2hyb25vdXMKLSAgICBDb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6
OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
IHBhZ2VJRCwgZW51bTpib29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVT
ZWN1cmVDb29raWVzKSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1
cmVDb29raWVzKSBTeW5jaHJvbm91cwotICAgIEdldFJhd0Nvb2tpZXMoVVJMIGZpcnN0UGFydHks
IHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRp
b25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29r
aWVzKSBTeW5jaHJvbm91cworICAgIENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFVSTCBm
aXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJM
IHVybCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5j
bHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIGVudW06Ym9vbCBXZWJDb3Jl
OjpTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQKSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9v
bCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKSBTeW5jaHJvbm91cworICAgIEdldFJhd0Nvb2tpZXMo
VVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZv
LCBVUkwgdXJsLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9w
dGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3Jl
OjpTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQKSAtPiAoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4g
Y29va2llcykgU3luY2hyb25vdXMKICAgICBEZWxldGVDb29raWUoVVJMIHVybCwgU3RyaW5nIGNv
b2tpZU5hbWUpCiAKICAgICBSZWdpc3RlckZpbGVCbG9iVVJMKFVSTCB1cmwsIFN0cmluZyBwYXRo
LCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBleHRlbnNpb25IYW5kbGUsIFN0cmlu
ZyBjb250ZW50VHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBkZjA5ZjY0ZjY2ZWYyZDQ3Yzc3OTkxYWI0
ZTk4ZDY4NDM0ODI5MGM3Li5jYzc3NDhkNzYwMWFiYmY2YjhmNzg1OTU3OWE2NGVkM2EzMjAwM2Q4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwCkBAIC0xMTk0LDcgKzExOTQsNyBAQCBzdGF0aWMgdm9pZCBsb2dDb29r
aWVJbmZvcm1hdGlvbkludGVybmFsKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25u
ZWN0aQogICAgIEFTU0VSVChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZExvZ0Nvb2tpZUlu
Zm9ybWF0aW9uKGNvbm5lY3Rpb24sIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQoKSkp
OwogCiAgICAgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llczsKLSAgICBpZiAoIW5ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5nZXRSYXdDb29raWVzKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywg
dXJsLCBmcmFtZUlELCBwYWdlSUQsIGNvb2tpZXMpKQorICAgIGlmICghbmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLmdldFJhd0Nvb2tpZXMoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1l
SUQsIHBhZ2VJRCwgU2hvdWxkQXNrSVRQOjpZZXMsIGNvb2tpZXMpKQogICAgICAgICByZXR1cm47
CiAKICAgICBhdXRvIGVzY2FwZWRVUkwgPSBlc2NhcGVGb3JKU09OKHVybC5zdHJpbmcoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IGQ3ZGE0OWZmNTQ1NWM3Y2ZhZTY5
YzA1ZWMzMTExMzI5MzcyYTBhN2QuLmY5MTdmNTE3YjRjYTBmMzE3ZjJjODBiYWZmYjdjYWU3MThm
NGJjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nl
c3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC02OCw3ICs2OCw5
IEBAIHZvaWQgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBzaG91bGRJbmNsdWRlTG9jYWxo
b3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogICAgIGVuY29kZXIgPDwgZW5hYmxlUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZTsKICAgICBlbmNvZGVyIDw8IHJlc291cmNlTG9hZFN0
YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNvdXJjZTsKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQogICAgIGVuY29kZXIgPDwgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9k
ZTsKKyNlbmRpZgogICAgIGVuY29kZXIgPDwgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1v
ZGU7CiAKICAgICBlbmNvZGVyIDw8IG5ldHdvcmtDYWNoZURpcmVjdG9yeSA8PCBuZXR3b3JrQ2Fj
aGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CkBAIC0yMDIsMTAgKzIwNCwxMiBAQCBPcHRpb25h
bDxOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycz4gTmV0d29ya1Nlc3Npb25DcmVhdGlv
blBhcmFtZXRlcnM6OmRlYwogICAgIGlmICghcmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFBy
ZXZhbGVudFJlc291cmNlKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCisjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBPcHRpb25hbDxXZWJDb3JlOjpUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlPiB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOwog
ICAgIGRlY29kZXIgPj4gdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsKICAgICBpZiAoIXRo
aXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisjZW5kaWYKIAogICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJl
bW92YWxNb2RlPiBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTsKICAgICBkZWNvZGVy
ID4+IGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOwpAQCAtMzAwLDcgKzMwNCw5IEBA
IE9wdGlvbmFsPE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzPiBOZXR3b3JrU2Vzc2lv
bkNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjCiAgICAgICAgICwgV1RGTW92ZSgqZW5hYmxlUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0xvZ1Rlc3RpbmdFdmVudCkKICAgICAgICAgLCBXVEZNb3ZlKCpzaG91
bGRJbmNsdWRlTG9jYWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzKQogICAgICAgICAsIFdU
Rk1vdmUoKmVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUpCisjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICAgICAgLCBXVEZNb3ZlKCp0aGlyZFBhcnR5
Q29va2llQmxvY2tpbmdNb2RlKQorI2VuZGlmCiAgICAgICAgICwgV1RGTW92ZSgqZmlyc3RQYXJ0
eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUpCiAgICAgICAgICwgV1RGTW92ZSgqZGV2aWNlTWFuYWdl
bWVudFJlc3RyaWN0aW9uc0VuYWJsZWQpCiAgICAgICAgICwgV1RGTW92ZSgqYWxsTG9hZHNCbG9j
a2VkQnlEZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRm9yVGVzdGluZykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFt
ZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVh
dGlvblBhcmFtZXRlcnMuaAppbmRleCAwZDU3YWI3MTIyNWZjYzI1ODA2ODRmODkyYTc1ODMwNGQ3
ZDdmMDYwLi44MmU5NWYxOTg1NjMzNjFjMDliYjgxNTAwZjMxMDAwMjk1NTNhNDcwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25Q
YXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC04Niw3ICs4Niw5IEBAIHN0cnVjdCBOZXR3b3Jr
U2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgYm9vbCBlbmFibGVSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50IHsgZmFsc2UgfTsKICAgICBib29sIHNob3VsZEluY2x1
ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3MgeyB0cnVlIH07CiAgICAgYm9vbCBl
bmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlIHsgZmFsc2UgfTsKKyNpZiBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29r
aWVCbG9ja2luZ01vZGUgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSB7IFdlYkNvcmU6OlRo
aXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbCB9OworI2VuZGlmCiAgICAgV2ViQ29yZTo6
Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVt
b3ZhbE1vZGUgeyBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTo6QWxs
QnV0Q29va2llcyB9OwogICAgIGJvb2wgZGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0VuYWJs
ZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgYWxsTG9hZHNCbG9ja2VkQnlEZXZpY2VNYW5hZ2VtZW50
UmVzdHJpY3Rpb25zRm9yVGVzdGluZyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQppbmRleCBmOGJjZTE0NTUwN2RmNDllODllZDRmNzE5ODc2ZTEwYmY3
MDk2YmRlLi44M2RiODk1OWJiNWJlNTYyZjdkOTI3NWQ4Njg4MTY4NmVmNjUxOTI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTU4NCw2ICs1ODQsNyBAQCBk
ZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJTdGF0ZSc6IFsnPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+J10sCiAgICAgICAgICdX
ZWJDb3JlOjpTaGlwcGluZ0NvbnRhY3RVcGRhdGUnOiBbJzxXZWJDb3JlL0FwcGxlUGF5U2Vzc2lv
blBheW1lbnRSZXF1ZXN0Lmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpTaGlwcGluZ01ldGhvZFVw
ZGF0ZSc6IFsnPFdlYkNvcmUvQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QuaD4nXSwKKyAg
ICAgICAgJ1dlYkNvcmU6OlNob3VsZEFza0lUUCc6IFsnPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpTaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQn
OiBbJzxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPiddLAogICAgICAgICAnV2ViQ29yZTo6
U2hvdWxkU2FtcGxlJzogWyc8V2ViQ29yZS9EaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oPiddLAog
ICAgICAgICAnV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duJzogWyc8V2ViQ29y
ZS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaD4nXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oCmluZGV4IGUwOTQwMGE3YWFhNjQ2
MTFmZDU4MjY1NzE2MDgyNDIyMzIyNDgyMzEuLjMwZGI0YzliNTM4ODZhMDhiMzE3YTUyOTRkYzcy
NTAxM2EwM2Y1OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NE
YXRhU3RvcmVQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vz
c0RhdGFTdG9yZVBhcmFtZXRlcnMuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3Jr
U3RvcmFnZVNlc3Npb24uaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KIApAQCAtNDUsNiArNDYsOSBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0RhdGFT
dG9yZVBhcmFtZXRlcnMgewogICAgIFN0cmluZyBqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVj
dG9yeTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgamF2YVNjcmlwdENvbmZpZ3VyYXRp
b25EaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgSGFzaE1hcDx1bnNpZ25lZCwgV2FsbFRp
bWU+IHBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlczsKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQorICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUg
dGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSB7IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGU6OkFsbCB9OworI2VuZGlmCiAgICAgYm9vbCByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRW5hYmxlZCB7IGZhbHNlIH07CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7CkBAIC02Nyw2ICs3MSw5IEBAIHZvaWQgV2ViUHJvY2Vz
c0RhdGFTdG9yZVBhcmFtZXRlcnM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAg
IGVuY29kZXIgPDwgamF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3Rvcnk7CiAgICAgZW5jb2Rl
ciA8PCBqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAg
ICBlbmNvZGVyIDw8IHBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlczsKKyNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIGVuY29kZXIgPDwgdGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZTsKKyNlbmRpZgogICAgIGVuY29kZXIgPDwgcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0VuYWJsZWQ7CiB9CiAKQEAgLTEzMiw2ICsxMzksMTMgQEAgT3B0aW9uYWw8V2ViUHJvY2Vzc0Rh
dGFTdG9yZVBhcmFtZXRlcnM+IFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzOjpkZWNvZGUo
RGUKICAgICBpZiAoIXBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcykKICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKIAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisg
ICAgT3B0aW9uYWw8V2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZT4gdGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsKKyAgICBkZWNvZGVyID4+IHRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGU7CisgICAgaWYgKCF0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworI2VuZGlmCisKICAgICBib29sIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3NFbmFibGVkID0gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CkBAIC0xNTAsNiArMTY0LDkgQEAgT3B0aW9uYWw8V2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRl
cnM+IFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzOjpkZWNvZGUoRGUKICAgICAgICAgV1RG
TW92ZShqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSksCiAgICAgICAgIFdURk1vdmUo
KmphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKSwKICAgICAg
ICAgV1RGTW92ZSgqcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKSwKKyNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgICAgICAqdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZSwKKyNlbmRpZgogICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZAogICAg
IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBmMzZiNzljZTU0NWE5ODdmMjgxNzYxYWJhZTU2N2Vk
ZjA2ODM3MDBhLi41ZmJkMzYxMzAzODU0N2QwMjMzMjRjMDVmOTM2NDk4MjYzN2MyNGMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5jcHAKQEAgLTEwNzgsMTEgKzEwNzgsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OnNldFNob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhib29sIGVuYWJsZWQsIENv
bQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNv
b2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nTW9kZSBibG9ja2luZ01vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsKLSAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKICAg
ICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRTaG91bGRC
bG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhzZXNzaW9uSUQsIGJsb2NraW5nTW9kZSks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDMwNjQ0YmJkOTdlYjc3MjhmYjRjYjAyZGE3ZDY3
NDU2NjlhMTVhMDUuLjgxY2Q1ZDZjNmJkZjE0ZjUxYjMzZWUwMzJmZjE0YTM5ZTkzYjhkMmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTU3Niw3ICs1
NzYsOSBAQCBOZXR3b3JrUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29y
a1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSogd2l0aAogICAgIGJvb2wgZW5hYmxlUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0xvZ1Rlc3RpbmdFdmVudCA9IGZhbHNlOwogICAgIGJvb2wgc2hvdWxkSW5j
bHVkZUxvY2FsaG9zdCA9IHRydWU7CiAgICAgYm9vbCBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGVidWdNb2RlID0gZmFsc2U7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKICAgICBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIHRoaXJkUGFydHlD
b29raWVCbG9ja2luZ01vZGUgPSBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2Rl
OjpBbGw7CisjZW5kaWYKICAgICBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFs
TW9kZSBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA9IFdlYkNvcmU6OkZpcnN0UGFy
dHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOjpBbGxCdXRDb29raWVzOwogICAgIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIG1hbnVhbFByZXZhbGVudFJlc291cmNlIHsgfTsKICAgICBpZiAod2l0
aFdlYnNpdGVEYXRhU3RvcmUpIHsKQEAgLTU4OCw3ICs1OTAsOSBAQCBOZXR3b3JrUHJvY2Vzc1By
b3h5JiBXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoV2Vic2l0ZURhdGFTdG9y
ZSogd2l0aAogICAgICAgICAgICAgYXV0byBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMgPSB3aXRo
V2Vic2l0ZURhdGFTdG9yZS0+cGFyYW1ldGVycygpLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVyczsK
ICAgICAgICAgICAgIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QgPSBuZXR3b3JrU2Vzc2lvblBhcmFt
ZXRlcnMuc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljczsKICAg
ICAgICAgICAgIGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUgPSBuZXR3b3Jr
U2Vzc2lvblBhcmFtZXRlcnMuZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZTsK
KyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgICAgICAgICAgdGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy50aGlyZFBh
cnR5Q29va2llQmxvY2tpbmdNb2RlOworI2VuZGlmCiAgICAgICAgICAgICBmaXJzdFBhcnR5V2Vi
c2l0ZURhdGFSZW1vdmFsTW9kZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5maXJzdFBhcnR5
V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTsKICAgICAgICAgICAgIG1hbnVhbFByZXZhbGVudFJlc291
cmNlID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51
YWxQcmV2YWxlbnRSZXNvdXJjZTsKICAgICAgICAgfQpAQCAtNjEwLDcgKzYxNCw5IEBAIE5ldHdv
cmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2VzcyhXZWJz
aXRlRGF0YVN0b3JlKiB3aXRoCiAgICAgICAgICAgICBhdXRvIG5ldHdvcmtTZXNzaW9uUGFyYW1l
dGVycyA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+cGFyYW1ldGVycygpLm5ldHdvcmtTZXNzaW9uUGFy
YW1ldGVyczsKICAgICAgICAgICAgIHNob3VsZEluY2x1ZGVMb2NhbGhvc3QgPSBuZXR3b3JrU2Vz
c2lvblBhcmFtZXRlcnMuc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlz
dGljczsKICAgICAgICAgICAgIGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUg
PSBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rl
YnVnTW9kZTsKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgICAgICAg
ICAgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVy
cy50aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOworI2VuZGlmCiAgICAgICAgICAgICBmaXJz
dFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA9IG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5m
aXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTsKICAgICAgICAgICAgIG1hbnVhbFByZXZh
bGVudFJlc291cmNlID0gbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW51YWxQcmV2YWxlbnRSZXNvdXJjZTsKICAgICAgICAgfQpAQCAtNjM1LDcgKzY0MSw5
IEBAIE5ldHdvcmtQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJv
Y2VzcyhXZWJzaXRlRGF0YVN0b3JlKiB3aXRoCiAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0
b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuZW5hYmxlUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0xvZ1Rlc3RpbmdFdmVudCA9IGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NM
b2dUZXN0aW5nRXZlbnQ7CiAgICAgcGFyYW1ldGVycy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVy
cy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyA9IHNob3VsZEluY2x1ZGVMb2NhbGhvc3Q7CiAgICAgcGFyYW1ldGVy
cy5kZWZhdWx0RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuZW5h
YmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSA9IGVuYWJsZVJlc291cmNlTG9hZFN0
YXRpc3RpY3NEZWJ1Z01vZGU7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
ICAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9u
UGFyYW1ldGVycy50aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlID0gdGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nTW9kZTsKKyNlbmRpZgogICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBh
cmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmZpcnN0UGFydHlXZWJzaXRlRGF0YVJl
bW92YWxNb2RlID0gZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU7CiAKICAgICBwYXJh
bWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVy
cy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2UgPSBtYW51YWxQ
cmV2YWxlbnRSZXNvdXJjZTsKQEAgLTk0MSw2ICs5NDksOSBAQCBXZWJQcm9jZXNzRGF0YVN0b3Jl
UGFyYW1ldGVycyBXZWJQcm9jZXNzUG9vbDo6d2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMo
V2ViUAogICAgICAgICBXVEZNb3ZlKGphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KSwK
ICAgICAgICAgV1RGTW92ZShqYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeUV4dGVuc2lv
bkhhbmRsZSksCiAgICAgICAgIFdURk1vdmUocGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKSwK
KyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgICAgICB3ZWJzaXRlRGF0
YVN0b3JlLnRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoKSwKKyNlbmRpZgogICAgICAgICB3
ZWJzaXRlRGF0YVN0b3JlLnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkKICAgICB9Owog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggYzQ0
YmY3YzMyZTk5MzEzOWMxMDNjNDdlNTE2NDI0ZDhlZGM4NjU2Zi4uODQxZTY0NWJkZDViODA1OGU4
YTk5OTQzMjYwMjVmMDNjYmQ3MGZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwCkBAIC00MzMsNiArNDMzLDExIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5
Ojpub3RpZnlQYWdlU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKEFQSTo6T2JqZWN0KiBtZXNz
YWdlCiAgICAgZm9yIChhdXRvJiBwYWdlIDogZ2xvYmFsUGFnZU1hcCgpKQogICAgICAgICBwYWdl
LnZhbHVlLT5wb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoIlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NUZWxlbWV0cnlGaW5pc2hlZCIsIG1lc3NhZ2VCb2R5KTsKIH0KKwordm9pZCBXZWJQcm9jZXNz
UHJveHk6OnNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGUgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5
Q29va2llc0ZvclRlc3RpbmcodGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKK30KICNlbmRpZgogCiBSZWY8V2ViUGFnZVByb3h5PiBXZWJQ
cm9jZXNzUHJveHk6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgUmVmPEFQ
STo6UGFnZUNvbmZpZ3VyYXRpb24+JiYgcGFnZUNvbmZpZ3VyYXRpb24pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDk2NWZiMWNlMDE3YjE5ZWM0OGVlOGY0
ZGI0MDE2ZDZiOTE5YjQyM2QuLjU2Zjg5OTFhNjNiYzdjMTA4NmY0NDVkZWI1NjViYjM4Y2Y3ZjJh
ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC02Niw2
ICs2Niw3IEBAIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIHN0cnVjdCBQbHVnaW5JbmZvOwogc3Ry
dWN0IFByZXdhcm1JbmZvcm1hdGlvbjsKIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CitlbnVt
IGNsYXNzIFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgOiB1aW50OF90OwogfQogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTIwNiw2ICsyMDcsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMg
dm9pZCBub3RpZnlXZWJzaXRlRGF0YURlbGV0aW9uRm9yUmVnaXN0cmFibGVEb21haW5zRmluaXNo
ZWQoKTsKICAgICBzdGF0aWMgdm9pZCBub3RpZnlXZWJzaXRlRGF0YVNjYW5Gb3JSZWdpc3RyYWJs
ZURvbWFpbnNGaW5pc2hlZCgpOworCisgICAgdm9pZCBzZXRTaG91bGRCbG9ja1RoaXJkUGFydHlD
b29raWVzRm9yVGVzdGluZyhXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCiAKICAgICB2b2lkIGVuYWJsZVN1
ZGRlblRlcm1pbmF0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KaW5k
ZXggYTNjYzcyZDk5NmRjOTU3YzllZjY1Njk2ZTk5ODRhODVhZjdiNjJlNy4uMDAyMmEwYmRiOGJh
M2MxZGU0ZDFjOTlkYzg2MDlmZWQxNzE4NzVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3Rv
cmVDb2NvYS5tbQpAQCAtNjEsNiArNjEsMjAgQEAgc3RhdGljIEhhc2hTZXQ8V2Vic2l0ZURhdGFT
dG9yZSo+JiBkYXRhU3RvcmVzKCkKIAogc3RhdGljIE5TU3RyaW5nICogY29uc3QgV2ViS2l0TmV0
d29ya0xvYWRUaHJvdHRsZUxhdGVuY3lNaWxsaXNlY29uZHNEZWZhdWx0c0tleSA9IEAiV2ViS2l0
TmV0d29ya0xvYWRUaHJvdHRsZUxhdGVuY3lNaWxsaXNlY29uZHMiOwogCisjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKK1dlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2lu
Z01vZGUgV2Vic2l0ZURhdGFTdG9yZTo6dGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSgpIGNv
bnN0Cit7CisgICAgaWYgKCFtX3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUpIHsKKyAgICAg
ICAgTlNVc2VyRGVmYXVsdHMgKmRlZmF1bHRzID0gW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNl
ckRlZmF1bHRzXTsKKyAgICAgICAgaWYgKFtkZWZhdWx0cyBib29sRm9yS2V5OltOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAiRXhwZXJpbWVudGFsJUAiLCBXZWJQcmVmZXJlbmNlc0tleTo6aXNU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmdEaXNhYmxlZEtleSgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCldXSkKKyAgICAgICAgICAgIG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IFdlYkNv
cmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbE9uU2l0ZXNXaXRob3V0VXNlcklu
dGVyYWN0aW9uOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX3RoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGUgPSBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGw7
CisgICAgfQorICAgIHJldHVybiAqbV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOworfQor
I2VuZGlmCisKIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBh
cmFtZXRlcnMoKQogewogICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2
aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKQEAgLTcwLDcgKzg0LDYgQEAgV2Vic2l0ZURh
dGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycygpCiAgICAgTlNV
c2VyRGVmYXVsdHMgKmRlZmF1bHRzID0gW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1
bHRzXTsKICAgICBib29sIHNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uID0gZmFsc2U7CiAgICAg
Ym9vbCBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlID0gZmFsc2U7Ci0gICAg
YXV0byB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlID0gV2ViQ29yZTo6VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZTo6QWxsOwogICAgIGF1dG8gZmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVt
b3ZhbE1vZGUgPSBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZTo6QWxs
QnV0Q29va2llczsKICAgICBib29sIGVuYWJsZUxlZ2FjeVRMUyA9IGZhbHNlOwogICAgIGlmIChp
ZCB2YWx1ZSA9IFtkZWZhdWx0cyBvYmplY3RGb3JLZXk6QCJXZWJLaXRFbmFibGVMZWdhY3lUTFMi
XSkKQEAgLTg1LDEwICs5OCw2IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVE
YXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJl
c291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNvdXJjZSB7IH07CiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBlbmFibGVSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGVidWdNb2RlID0gW2RlZmF1bHRzIGJvb2xGb3JLZXk6QCJJVFBEZWJ1Z01vZGUiXTsK
LSAgICBpZiAoW2RlZmF1bHRzIGJvb2xGb3JLZXk6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
QCJFeHBlcmltZW50YWwlQCIsIFdlYlByZWZlcmVuY2VzS2V5Ojppc1RoaXJkUGFydHlDb29raWVC
bG9ja2luZ0Rpc2FibGVkS2V5KCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKV1dKQotICAgICAgICB0
aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlID0gV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZTo6QWxsT25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb247Ci0gICAgZWxzZQot
ICAgICAgICB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlID0gV2ViQ29yZTo6VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsOwogICAgIGlmIChbZGVmYXVsdHMgYm9vbEZvcktleTpb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkV4cGVyaW1lbnRhbCVAIiwgV2ViUHJlZmVyZW5j
ZXNLZXk6OmlzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbERpc2FibGVkS2V5KCkuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKV1dKQogICAgICAgICBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFs
TW9kZSA9IFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOjpOb25lOwog
ICAgIGVsc2UgewpAQCAtMTYyLDcgKzE3MSw3IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
IFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogICAgICAgICBoYXNTdGF0aXN0aWNzVGVz
dGluZ0NhbGxiYWNrKCksCiAgICAgICAgIHNob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNl
TG9hZFN0YXRpc3RpY3MsCiAgICAgICAgIGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1
Z01vZGUsCi0gICAgICAgIHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUsCisgICAgICAgIHRo
aXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoKSwKICAgICAgICAgZmlyc3RQYXJ0eVdlYnNpdGVE
YXRhUmVtb3ZhbE1vZGUsCiAgICAgICAgIG1fY29uZmlndXJhdGlvbi0+ZGV2aWNlTWFuYWdlbWVu
dFJlc3RyaWN0aW9uc0VuYWJsZWQoKSwKICAgICAgICAgbV9jb25maWd1cmF0aW9uLT5hbGxMb2Fk
c0Jsb2NrZWRCeURldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNGb3JUZXN0aW5nKCksCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuY3BwCmluZGV4IDE5OTUxMGU0MmVkMWU0ODQxMDEwMDA0ZDQyNGE2MDg1NDgxNDJmZmQu
LmMxYzFmNzJjODA1YmM4MzlhMzQ0ODI3NTgwNmFhODVkM2FlMjExOTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwCkBAIC0xNzk4LDYgKzE3OTgsMTUgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW4KICAgICBB
U1NFUlQoIWNvbXBsZXRpb25IYW5kbGVyKTsKIH0KIAorI2lmICFQTEFURk9STShDT0NPQSkKK1dl
YkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgV2Vic2l0ZURhdGFTdG9yZTo6dGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX3RoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGUpCisgICAgICAgIG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZSA9IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbDsKKyAgICBy
ZXR1cm4gKm1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsKK30KKyNlbmRpZgorCiB2b2lk
IFdlYnNpdGVEYXRhU3RvcmU6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGRCbG9ja1Ro
aXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhib29sIGVuYWJsZWQsIGJvb2wgb25seU9uU2l0ZXNX
aXRob3V0VXNlckludGVyYWN0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0Fn
Z3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CkBAIC0xODA1LDYg
KzE4MTQsMTIgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclQKICAgICBpZiAoZW5hYmxlZCkKICAg
ICAgICAgYmxvY2tpbmdNb2RlID0gb25seU9uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uID8g
V2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsT25TaXRlc1dpdGhvdXRV
c2VySW50ZXJhY3Rpb24gOiBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpB
bGw7CiAKKyAgICBpZiAodGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSgpICE9IGJsb2NraW5n
TW9kZSkgeworICAgICAgICBtX3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgPSBibG9ja2lu
Z01vZGU7CisgICAgICAgIGZvciAoYXV0byYgd2ViUHJvY2VzcyA6IHByb2Nlc3NlcygpKQorICAg
ICAgICAgICAgd2ViUHJvY2Vzcy5zZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVz
dGluZyhibG9ja2luZ01vZGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0
b3IuY29weVJlZigpXSB7IH0pOworICAgIH0KKwogICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wg
OiBwcm9jZXNzUG9vbHMoKSkgewogICAgICAgICBpZiAoYXV0byogbmV0d29ya1Byb2Nlc3MgPSBw
cm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkgewogICAgICAgICAgICAgbmV0d29ya1Byb2Nl
c3MtPnNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKG1fc2Vzc2lvbklE
LCBibG9ja2luZ01vZGUsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3Iu
Y29weVJlZigpXSB7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IGM2NWEwNjdiYjNmNmU1ZWQ3MzBkMGY2
MWIyZDkwNDUxZWVmN2QwODYuLmE5ZjE0NzczMGNhNjE5ZDNiNmNlOWJkNGVhZGU5NzBiZDYyMTY5
YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTE5NSw2ICsxOTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5n
KGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoYm9v
bCBlbmFibGVkLCBib29sIG9ubHlPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUZvclRlc3RpbmcoYm9vbCBlbmFibGVk
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIFdlYkNvcmU6OlRoaXJkUGFydHlD
b29raWVCbG9ja2luZ01vZGUgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSgpIGNvbnN0Owog
I2VuZGlmCiAgICAgdm9pZCBzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhT
ZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVzZXRDYWNo
ZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwpAQCAtMzc0LDYgKzM3NSw5IEBAIHByaXZhdGU6CiAjaWYgSEFWRShBUFBfU1NPKQogICAg
IFVuaXF1ZVJlZjxTT0F1dGhvcml6YXRpb25Db29yZGluYXRvcj4gbV9zb0F1dGhvcml6YXRpb25D
b29yZGluYXRvcjsKICNlbmRpZgorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
CisgICAgbXV0YWJsZSBPcHRpb25hbDxXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlPiBtX3RoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU7IC8vIExhemlseSBjb21wdXRlZC4K
KyNlbmRpZgogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKaW5k
ZXggNDI2M2QxOTViMGI3ZGFlMDQ4M2Y5MmE4ZmUxZWFiM2YxYWMxYzNiMS4uODQyMzBmYzA0ODAz
M2ZkNDRjOTIzYjQyZTFjZTc2YzdmNjcyYTRkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXIuY3BwCkBAIC03MSwxNSArNzEsMTcgQEAgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6
On5XZWJSZXNvdXJjZUxvYWRPYnNlcnZlcigpCiAgICAgICAgIHVwZGF0ZUNlbnRyYWxTdGF0aXN0
aWNzU3RvcmUoKTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6cmVxdWVzdFN0
b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluSW5O
ZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIERvY3VtZW50
JiBvcGVuZXJEb2N1bWVudCkKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlcXVlc3RT
dG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbklu
TmVlZE9mU3RvcmFnZUFjY2VzcywgV2ViUGFnZSYgb3BlbmVyUGFnZSwgRG9jdW1lbnQmIG9wZW5l
ckRvY3VtZW50KQogewogICAgIGF1dG8gb3BlbmVyVXJsID0gb3BlbmVyRG9jdW1lbnQudXJsKCk7
CiAgICAgUmVnaXN0cmFibGVEb21haW4gb3BlbmVyRG9tYWluIHsgb3BlbmVyVXJsIH07CiAgICAg
aWYgKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyAhPSBvcGVuZXJEb21haW4KICAgICAgICAg
JiYgIW9wZW5lckRvY3VtZW50Lmhhc1JlcXVlc3RlZFBhZ2VTcGVjaWZpY1N0b3JhZ2VBY2Nlc3NX
aXRoVXNlckludGVyYWN0aW9uKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcykKICAgICAgICAg
JiYgIWVxdWFsSWdub3JpbmdBU0NJSUNhc2Uob3BlbmVyVXJsLnN0cmluZygpLCBXVEY6OmJsYW5r
VVJMKCkpKSB7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6UmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihkb21h
aW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIG9wZW5lclBhZ2VJRCwgb3BlbmVyRG9tYWluKSwgMCk7
CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6UmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihkb21haW5Jbk5lZWRP
ZlN0b3JhZ2VBY2Nlc3MsIG9wZW5lclBhZ2UuaWRlbnRpZmllcigpLCBvcGVuZXJEb21haW4pLCAw
KTsKICAgICAgICAgCisgICAgICAgIG9wZW5lclBhZ2UuYWRkRG9tYWluV2l0aFBhZ2VMZXZlbFN0
b3JhZ2VBY2Nlc3Mob3BlbmVyRG9tYWluLCBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpOwor
CiAgICAgICAgIC8vIFJlbWVtYmVyIHVzZXIgaW50ZXJhY3Rpb24tYmFzZWQgcmVxdWVzdHMgc2lu
Y2UgdGhleSBkb24ndCBuZWVkIHRvIGJlIHJlcGVhdGVkLgogICAgICAgICBvcGVuZXJEb2N1bWVu
dC5zZXRIYXNSZXF1ZXN0ZWRQYWdlU3BlY2lmaWNTdG9yYWdlQWNjZXNzV2l0aFVzZXJJbnRlcmFj
dGlvbihkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpOwogICAgIH0KQEAgLTMzNSwxMCArMzM3
LDggQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nVXNlckludGVyYWN0aW9uV2l0
aFJlZHVjZWRUaW1lUmVzb2x1dGlvbihjb25zdAogICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3Vt
ZW50LmZyYW1lKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIG9wZW5lciA9IGZyYW1lLT5sb2FkZXIo
KS5vcGVuZXIoKSkgewogICAgICAgICAgICAgaWYgKGF1dG8qIG9wZW5lckRvY3VtZW50ID0gb3Bl
bmVyLT5kb2N1bWVudCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8qIG9wZW5lckZyYW1l
ID0gb3BlbmVyRG9jdW1lbnQtPmZyYW1lKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGF1
dG8gb3BlbmVyUGFnZUlEID0gb3BlbmVyRnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgp
KQotICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5l
cih0b3BGcmFtZURvbWFpbiwgb3BlbmVyUGFnZUlELnZhbHVlKCksICpvcGVuZXJEb2N1bWVudCk7
Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChhdXRvKiBvcGVuZXJQYWdl
ID0gb3BlbmVyRG9jdW1lbnQtPnBhZ2UoKSkKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdFN0
b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcih0b3BGcmFtZURvbWFpbiwgV2ViUGFnZTo6ZnJvbUNvcmVQ
YWdlKCpvcGVuZXJQYWdlKSwgKm9wZW5lckRvY3VtZW50KTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmgKaW5kZXggZmFlNDhj
NjZkM2UwZjdlMjQ2YjE2YmE3Njk3NTVhMDE2ZDBjNzliZi4uYzgwOTJmNGEwYjdjMWMxNWUxNmE5
Zjc2MDczMzY2ZTg1NzYxZDNiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmgK
QEAgLTM0LDYgKzM0LDggQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFdlYlBhZ2U7
CisKIGNsYXNzIFdlYlJlc291cmNlTG9hZE9ic2VydmVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6
OlJlc291cmNlTG9hZE9ic2VydmVyIHsKIHB1YmxpYzoKICAgICBXZWJSZXNvdXJjZUxvYWRPYnNl
cnZlcigpOwpAQCAtNjQsNyArNjYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2NoZWR1bGVOb3Rp
ZmljYXRpb25JZk5lZWRlZCgpOwogCiAgICAgVmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3M+IHRha2VTdGF0aXN0aWNzKCk7Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vz
c1VuZGVyT3BlbmVyKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5l
ZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwg
V2ViQ29yZTo6RG9jdW1lbnQmIG9wZW5lckRvY3VtZW50KTsKKyAgICB2b2lkIHJlcXVlc3RTdG9y
YWdlQWNjZXNzVW5kZXJPcGVuZXIoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGRv
bWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgV2ViUGFnZSYgb3BlbmVyUGFnZSwgV2ViQ29yZTo6
RG9jdW1lbnQmIG9wZW5lckRvY3VtZW50KTsKIAogICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4sIFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+IG1fcmVzb3VyY2VT
dGF0aXN0aWNzTWFwOwogICAgIEhhc2hNYXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFdU
Rjo6V2FsbFRpbWU+IG1fbGFzdFJlcG9ydGVkVXNlckludGVyYWN0aW9uTWFwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAKaW5kZXggNzM4
MmZkOWE2MTM4MGY1NzNhM2Q4YjQyMDM3NDU3YzEzMzQ1MTU3ZC4uNTg4MGJiZmM0ZDk4NmMxZTUw
MTg2OWRlOTU0ZDZhNTc5MTg3M2NiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCkBAIC0yOCw4ICsyOCwxMSBAQAogCiAjaW5jbHVk
ZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYkZyYW1lLmgiCisjaW5jbHVk
ZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0Nvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EZXBy
ZWNhdGVkR2xvYmFsU2V0dGluZ3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXIu
aD4KQEAgLTQ4LDE4ICs1MSw2MSBAQCBjbGFzcyBXZWJTdG9yYWdlU2Vzc2lvblByb3ZpZGVyIDog
cHVibGljIFdlYkNvcmU6OlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIgewogV2ViQ29va2llSmFyOjpX
ZWJDb29raWVKYXIoKQogICAgIDogV2ViQ29yZTo6Q29va2llSmFyKGFkb3B0UmVmKCpuZXcgV2Vi
U3RvcmFnZVNlc3Npb25Qcm92aWRlcikpIHsgfQogCi1TdHJpbmcgV2ViQ29va2llSmFyOjpjb29r
aWVzKFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwpIGNvbnN0Cisj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKK3N0YXRpYyBib29sIHNob3VsZEJs
b2NrQ29va2llcyhXZWJGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tp
ZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwsIFNob3VsZEFza0lUUCYgc2hvdWxkQXNrSVRQSW5O
ZXR3b3JrUHJvY2VzcykKIHsKLSAgICBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQ7
Ci0gICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKLSAgICBpZiAoYXV0byogZnJh
bWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7Ci0gICAgICAgIGZyYW1lSUQgPSBmcmFtZS0+bG9hZGVy
KCkuY2xpZW50KCkuZnJhbWVJRCgpOwotICAgICAgICBwYWdlSUQgPSBmcmFtZS0+bG9hZGVyKCku
Y2xpZW50KCkucGFnZUlEKCk7CisgICAgaWYgKCFXZWJDb3JlOjpEZXByZWNhdGVkR2xvYmFsU2V0
dGluZ3M6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+aXNNYWluRnJhbWUoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgUmVnaXN0cmFibGVEb21haW4gZmlyc3RQYXJ0eURvbWFpbiB7
IGZpcnN0UGFydHlGb3JDb29raWVzIH07CisgICAgaWYgKGZpcnN0UGFydHlEb21haW4uaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBSZWdpc3RyYWJsZURvbWFpbiByZXNv
dXJjZURvbWFpbiB7IHJlc291cmNlVVJMIH07CisgICAgaWYgKHJlc291cmNlRG9tYWluLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGZpcnN0UGFydHlEb21haW4g
PT0gcmVzb3VyY2VEb21haW4pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChmcmFt
ZSAmJiBmcmFtZS0+ZnJhbWVMb2FkZXJDbGllbnQoKS0+aGFzRnJhbWVTcGVjaWZpY1N0b3JhZ2VB
Y2Nlc3MoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGZyYW1lICYmIGZyYW1l
LT5wYWdlKCkgJiYgZnJhbWUtPnBhZ2UoKS0+aGFzUGFnZUxldmVsU3RvcmFnZUFjY2VzcyhmaXJz
dFBhcnR5RG9tYWluLCByZXNvdXJjZURvbWFpbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIC8vIFRoZSBXZWJDb250ZW50IHByb2Nlc3MgZG9lcyBub3QgaGF2ZSBlbm91Z2ggaW5mb3Jt
YXRpb24gdG8gZGVhbCB3aXRoIG90aGVyIHBvbGljaWVzIHRoYW4gVGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZTo6QWxsIHNvIHdlIGhhdmUgdG8gZ28gdG8gdGhlIE5ldHdvcmtQcm9jZXNzIGZv
ciBhbGwKKyAgICAvLyBvdGhlciBwb2xpY2llcyBhbmQgdGhlIHJlcXVlc3QgbWF5IGVuZCB1cCBn
ZXR0aW5nIGJsb2NrZWQgb24gTmV0d29ya1Byb2Nlc3Mgc2lkZS4KKyAgICBpZiAoV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkudGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSgpICE9IFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGU6OkFsbCkgeworICAgICAgICBzaG91bGRBc2tJVFBJbk5ldHdv
cmtQcm9jZXNzID0gU2hvdWxkQXNrSVRQOjpZZXM7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgorCitTdHJpbmcgV2ViQ29va2llSmFy
Ojpjb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwpIGNv
bnN0Cit7CisgICAgYXV0byogd2ViRnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpID8gV2ViRnJhbWU6
OmZyb21Db3JlRnJhbWUoKmRvY3VtZW50LmZyYW1lKCkpIDogbnVsbHB0cjsKKyAgICBpZiAoIXdl
YkZyYW1lIHx8ICF3ZWJGcmFtZS0+cGFnZSgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAg
U2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUEluTmV0d29ya1Byb2Nlc3MgPSBTaG91bGRBc2tJVFA6
Ok5vOworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgaWYgKHNob3Vs
ZEJsb2NrQ29va2llcyh3ZWJGcmFtZSwgZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwg
dXJsLCBzaG91bGRBc2tJVFBJbk5ldHdvcmtQcm9jZXNzKSkKKyAgICAgICAgcmV0dXJuIHsgfTsK
KyNlbmRpZgorCisgICAgYXV0byBmcmFtZUlEID0gd2ViRnJhbWUtPmZyYW1lSUQoKTsKKyAgICBh
dXRvIHBhZ2VJRCA9IHdlYkZyYW1lLT5wYWdlKCktPmlkZW50aWZpZXIoKTsKKwogICAgIFN0cmlu
ZyBjb29raWVTdHJpbmc7CiAgICAgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQgPSBmYWxzZTsK
LSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tp
ZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3Vs
ZEluY2x1ZGVTZWN1cmVDb29raWVzKGRvY3VtZW50LCB1cmwpKSwgTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NOjpSZXBseShjb29raWVTdHJpbmcs
IHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCksIDApKQorICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRT
eW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRP
TShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQp
LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkSW5jbHVkZVNlY3VyZUNvb2tpZXMoZG9jdW1l
bnQsIHVybCksIHNob3VsZEFza0lUUEluTmV0d29ya1Byb2Nlc3MpLCBNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET006OlJlcGx5KGNvb2tpZVN0cmlu
Zywgc2VjdXJlQ29va2llc0FjY2Vzc2VkKSwgMCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAg
ICByZXR1cm4gY29va2llU3RyaW5nOwpAQCAtNjcsMTQgKzExMywyMCBAQCBTdHJpbmcgV2ViQ29v
a2llSmFyOjpjb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1
cmwpIGNvbnN0CiAKIHZvaWQgV2ViQ29va2llSmFyOjpzZXRDb29raWVzKFdlYkNvcmU6OkRvY3Vt
ZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5n
KQogewotICAgIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRDsKLSAgICBPcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEOwotICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50
LmZyYW1lKCkpIHsKLSAgICAgICAgZnJhbWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5m
cmFtZUlEKCk7Ci0gICAgICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdl
SUQoKTsKLSAgICB9CisgICAgYXV0byogd2ViRnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpID8gV2Vi
RnJhbWU6OmZyb21Db3JlRnJhbWUoKmRvY3VtZW50LmZyYW1lKCkpIDogbnVsbHB0cjsKKyAgICBp
ZiAoIXdlYkZyYW1lIHx8ICF3ZWJGcmFtZS0+cGFnZSgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQSW5OZXR3b3JrUHJvY2VzcyA9IFNob3VsZEFza0lU
UDo6Tm87CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBpZiAoc2hv
dWxkQmxvY2tDb29raWVzKHdlYkZyYW1lLCBkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygp
LCB1cmwsIHNob3VsZEFza0lUUEluTmV0d29ya1Byb2Nlc3MpKQorICAgICAgICByZXR1cm47Cisj
ZW5kaWYKKworICAgIGF1dG8gZnJhbWVJRCA9IHdlYkZyYW1lLT5mcmFtZUlEKCk7CisgICAgYXV0
byBwYWdlSUQgPSB3ZWJGcmFtZS0+cGFnZSgpLT5pZGVudGlmaWVyKCk7CiAKLSAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNldENv
b2tpZXNGcm9tRE9NKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5m
byhkb2N1bWVudCksIHVybCwgZnJhbWVJRCwgcGFnZUlELCBjb29raWVTdHJpbmcpLCAwKTsKKyAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OlNldENvb2tpZXNGcm9tRE9NKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNh
bWVTaXRlSW5mbyhkb2N1bWVudCksIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRBc2tJVFBJ
bk5ldHdvcmtQcm9jZXNzLCBjb29raWVTdHJpbmcpLCAwKTsKIH0KIAogYm9vbCBXZWJDb29raWVK
YXI6OmNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCkgY29u
c3QKQEAgLTg3LDIzICsxMzksMzIgQEAgYm9vbCBXZWJDb29raWVKYXI6OmNvb2tpZXNFbmFibGVk
KGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKIAogc3RkOjpwYWlyPFN0
cmluZywgV2ViQ29yZTo6U2VjdXJlQ29va2llc0FjY2Vzc2VkPiBXZWJDb29raWVKYXI6OmNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25h
bDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdl
SUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBj
b25zdAogeworICAgIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFBJbk5ldHdvcmtQcm9jZXNzID0g
U2hvdWxkQXNrSVRQOjpObzsKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQor
ICAgIGF1dG8qIHdlYkZyYW1lID0gZnJhbWVJRCA/IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndl
YkZyYW1lKCpmcmFtZUlEKSA6IG51bGxwdHI7CisgICAgaWYgKHNob3VsZEJsb2NrQ29va2llcyh3
ZWJGcmFtZSwgZmlyc3RQYXJ0eSwgdXJsLCBzaG91bGRBc2tJVFBJbk5ldHdvcmtQcm9jZXNzKSkK
KyAgICAgICAgcmV0dXJuIHsgfTsKKyNlbmRpZgorCiAgICAgU3RyaW5nIGNvb2tpZVN0cmluZzsK
ICAgICBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCA9IGZhbHNlOwotICAgIGlmICghV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Q29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1
cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpLCBNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
OjpSZXBseShjb29raWVTdHJpbmcsIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCksIDApKQorICAgIGlm
ICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoZmlyc3RQYXJ0eSwgc2FtZVNp
dGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIHNob3Vs
ZEFza0lUUEluTmV0d29ya1Byb2Nlc3MpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlOjpSZXBseShjb29raWVTdHJp
bmcsIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCksIDApKQogICAgICAgICByZXR1cm4geyB9OwogICAg
IHJldHVybiB7IGNvb2tpZVN0cmluZywgc2VjdXJlQ29va2llc0FjY2Vzc2VkID8gV2ViQ29yZTo6
U2VjdXJlQ29va2llc0FjY2Vzc2VkOjpZZXMgOiBXZWJDb3JlOjpTZWN1cmVDb29raWVzQWNjZXNz
ZWQ6Ok5vIH07CiB9CiAKIGJvb2wgV2ViQ29va2llSmFyOjpnZXRSYXdDb29raWVzKGNvbnN0IFdl
YkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxXZWJDb3Jl
OjpDb29raWU+JiByYXdDb29raWVzKSBjb25zdAogewotICAgIE9wdGlvbmFsPEZyYW1lSWRlbnRp
Zmllcj4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEOwotICAg
IGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkpIHsKLSAgICAgICAgZnJhbWVJRCA9
IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCk7Ci0gICAgICAgIHBhZ2VJRCA9IGZy
YW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKLSAgICB9CisgICAgYXV0byogd2ViRnJh
bWUgPSBkb2N1bWVudC5mcmFtZSgpID8gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmRvY3VtZW50
LmZyYW1lKCkpIDogbnVsbHB0cjsKKyAgICBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQSW5OZXR3
b3JrUHJvY2VzcyA9IFNob3VsZEFza0lUUDo6Tm87CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKKyAgICBpZiAoc2hvdWxkQmxvY2tDb29raWVzKHdlYkZyYW1lLCBkb2N1bWVu
dC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIHNob3VsZEFza0lUUEluTmV0d29ya1Byb2Nl
c3MpKQorICAgICAgICByZXR1cm4geyB9OworI2VuZGlmCiAKLSAgICBpZiAoIVdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJh
d0Nvb2tpZXMoZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRv
Y3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tpZXM6OlJlcGx5KHJhd0Nvb2tpZXMpLCAwKSkKKyAg
ICBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQgPSB3ZWJGcmFtZSA/IG1ha2VPcHRp
b25hbCh3ZWJGcmFtZS0+ZnJhbWVJRCgpKSA6IFdURjo6bnVsbG9wdDsKKyAgICBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlEID0gd2ViRnJhbWUgJiYgd2ViRnJhbWUtPnBhZ2UoKSA/IG1h
a2VPcHRpb25hbCh3ZWJGcmFtZS0+cGFnZSgpLT5pZGVudGlmaWVyKCkpIDogV1RGOjpudWxsb3B0
OworICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llcyhkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29v
a2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hv
dWxkQXNrSVRQSW5OZXR3b3JrUHJvY2VzcyksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6R2V0UmF3Q29va2llczo6UmVwbHkocmF3Q29va2llcyksIDApKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDdlYmUxZGYwZjI5ZDQ5MjMyYzhiYTEy
YWFlMGIzMDMxOTE0MThkYTUuLmFiYzZjZGVjYzA3OGY0ZDkyYTE2ZjI4MTBlM2UyNmYwYTEzOWM2
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBA
IC02NjAwLDYgKzY2MDAsMTcgQEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhS
ZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBSZWdpc3RyYWIKICAgICB9KTsKIH0K
IAordm9pZCBXZWJQYWdlOjphZGREb21haW5XaXRoUGFnZUxldmVsU3RvcmFnZUFjY2Vzcyhjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wTGV2ZWxEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiByZXNvdXJjZURvbWFpbikKK3sKKyAgICBtX2RvbWFpbnNXaXRoUGFnZUxldmVsU3RvcmFn
ZUFjY2Vzcy5hZGQodG9wTGV2ZWxEb21haW4sIHJlc291cmNlRG9tYWluKTsKK30KKworYm9vbCBX
ZWJQYWdlOjpoYXNQYWdlTGV2ZWxTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiB0b3BMZXZlbERvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWlu
KSBjb25zdAoreworICAgIGF1dG8gaXQgPSBtX2RvbWFpbnNXaXRoUGFnZUxldmVsU3RvcmFnZUFj
Y2Vzcy5maW5kKHRvcExldmVsRG9tYWluKTsKKyAgICByZXR1cm4gaXQgIT0gbV9kb21haW5zV2l0
aFBhZ2VMZXZlbFN0b3JhZ2VBY2Nlc3MuZW5kKCkgJiYgaXQtPnZhbHVlID09IHJlc291cmNlRG9t
YWluOworfQorCiB2b2lkIFdlYlBhZ2U6Ondhc0xvYWRlZFdpdGhEYXRhVHJhbnNmZXJGcm9tUHJl
dmFsZW50UmVzb3VyY2UoKQogewogICAgIGF1dG8qIGZyYW1lID0gbWFpbkZyYW1lKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZTM1MmQ0NDZhMzQ5
YWMyZjViZGU4N2EyY2FlMTI2MDZmOWExNzYzMi4uMTQ5YWQ5MTQyM2EwYWRiNDc5NTUxZDgyZDhh
YzgzNWVjOTU4MzcyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaApAQCAtMTE2MCw2ICsxMTYwLDggQEAgcHVibGljOgogI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpCiAgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiYgdG9wRnJhbWVEb21haW4sIFdlYkZyYW1lJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJik7CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHRv
cEZyYW1lRG9tYWluLCBXZWJGcmFtZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6
U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNT
aG93bik+JiYpOworICAgIGJvb2wgaGFzUGFnZUxldmVsU3RvcmFnZUFjY2Vzcyhjb25zdCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgdG9wTGV2ZWxEb21haW4sIGNvbnN0IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbikgY29uc3Q7CisgICAgdm9pZCBhZGREb21h
aW5XaXRoUGFnZUxldmVsU3RvcmFnZUFjY2Vzcyhjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYgdG9wTGV2ZWxEb21haW4sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBy
ZXNvdXJjZURvbWFpbik7CiAgICAgdm9pZCB3YXNMb2FkZWRXaXRoRGF0YVRyYW5zZmVyRnJvbVBy
ZXZhbGVudFJlc291cmNlKCk7CiAjZW5kaWYKIApAQCAtMjAyNSw2ICsyMDI3LDEwIEBAIHByaXZh
dGU6CiAgICAgV2ViQ29yZTo6VGltZXIgbV90ZXh0QXV0b1NpemluZ0FkanVzdG1lbnRUaW1lcjsK
ICNlbmRpZgogCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBIYXNo
TWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bj4gbV9kb21haW5zV2l0aFBhZ2VMZXZlbFN0b3JhZ2VBY2Nlc3M7CisjZW5kaWYKKwogICAgIFN0
cmluZyBtX292ZXJyaWRkZW5NZWRpYVR5cGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAKaW5kZXggMTU2MWZmYWVlMjY5N2U4ZGViOWE3NzFmMjY4ZDdlN2VlZDE3
NWVkNi4uM2I0NGU4ZTRkMGE5ZDBjNDEzMWM3NjBkYjc3MzU1ZjQxNmIzMDRjNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtNDc3LDYgKzQ3Nyw3IEBAIHZvaWQg
V2ViUHJvY2Vzczo6c2V0V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMoV2ViUHJvY2Vzc0RhdGFT
dG9yZVBhcmFtZXRlcnMmJiBwCiAgICAgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQo
cGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCk7CiAKICNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZSA9IHBhcmFtZXRlcnMudGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsKICAgICBpZiAo
cGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCAmJiAhcGFyYW1ldGVycy5z
ZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSAmJiAhUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZElm
RXhpc3RzKCkpCiAgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRTaGFyZWQoKm5ldyBX
ZWJSZXNvdXJjZUxvYWRPYnNlcnZlcik7CiAjZW5kaWYKQEAgLTE5NzMsNiArMTk3NCwxNCBAQCBi
b29sIFdlYlByb2Nlc3M6OmFyZUFsbFBhZ2VzVGhyb3R0bGVhYmxlKCkgY29uc3QKICAgICB9KTsK
IH0KIAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCit2b2lkIFdlYlByb2Nl
c3M6OnNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKFRoaXJkUGFydHlD
b29raWVCbG9ja2luZ01vZGUgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIG1fdGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nTW9kZSA9IHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU7CisgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAogI3VuZGVmIFJFTEVBU0VfTE9HX1NFU1NJT05fSUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oCmluZGV4IDRkODE4ZGFhMWMwNjU2NDAwOTA3ZDllYTgwYjVjZDc1NDdmOTViYTcu
LmIyNGM4Y2UzNzQ0NDFkZDM5ODE4YWYxN2IzODVhMDc2YzhmYzM4MTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIldlYlNv
Y2tldENoYW5uZWxNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BY3Rpdml0eVN0YXRlLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZp
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CiAjaWYgUExBVEZP
Uk0oTUFDKQpAQCAtMTY1LDYgKzE2NiwxMCBAQCBwdWJsaWM6CiAgICAgCiAgICAgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyBBU1NFUlQobV9zZXNzaW9uSUQpOyByZXR1cm4gKm1f
c2Vzc2lvbklEOyB9CiAKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAg
IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgdGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9k
ZTsgfQorI2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBjb25zdCBXVEY6Ok1hY2hT
ZW5kUmlnaHQmIGNvbXBvc2l0aW5nUmVuZGVyU2VydmVyUG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29tcG9zaXRpbmdSZW5kZXJTZXJ2ZXJQb3J0OyB9CiAjZW5kaWYKQEAgLTQzNSw2ICs0NDAsMTAg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHJldm9rZVVzZXJNZWRpYURldmljZVNhbmRib3hFeHRlbnNp
b25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CiAjZW5kaWYKIAorI2VuZGlmCisKKyNpZiBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIHZvaWQgc2V0U2hvdWxkQmxvY2tUaGly
ZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgogCiAgICAgdm9pZCBw
bGF0Zm9ybUluaXRpYWxpemVQcm9jZXNzKGNvbnN0IEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXph
dGlvblBhcmFtZXRlcnMmKTsKQEAgLTYwMiw2ICs2MTEsMTAgQEAgcHJpdmF0ZToKICAgICAvLyBQ
cmV3YXJtZWQgV2ViUHJvY2Vzc2VzIGRvIG5vdCBoYXZlIGFuIGFzc29jaWF0ZWQgc2Vzc2lvbklE
IHlldCwgd2hpY2ggaXMgd2h5IHRoaXMgaXMgYW4gb3B0aW9uYWwuCiAgICAgLy8gQnkgdGhlIHRp
bWUgdGhlIFdlYlByb2Nlc3MgZ2V0cyBhIFdlYlBhZ2UsIGl0IGlzIGd1YXJhbnRlZWQgdG8gaGF2
ZSBhIHNlc3Npb25JRC4KICAgICBPcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gbV9zZXNzaW9uSUQ7
CisKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIFdlYkNvcmU6OlRo
aXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgbV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2Rl
IHsgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTo6QWxsIH07CisjZW5kaWYK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBmMDBkNzljNmQ0MDdjZmJjNmUxYmNjYmIy
NzI0NWRhNDdhYmE4YjY0Li45OTBiMDRkNTg3MWVhYzI1MjdlM2VkM2EzNDA0NzU4ZGVhOTk0MWM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgpAQCAtMTYyLDUgKzE2Miw2IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2
ZXIgTm90UmVmQ291bnRlZCB7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQogICAgIFNlZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9yVGVzdGluZyhXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiBmaXJzdFBhcnR5RG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biB0aGlyZFBhcnR5RG9tYWluLCBib29sIHNob3VsZFNjaGVkdWxlTm90aWZpY2F0aW9uKSAtPiAo
KSBBc3luYworICAgIFNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKGVu
dW06dWludDhfdCBXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIGJsb2NraW5n
TW9kZSkgLT4gKCkgQXN5bmMKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGU0NzBkNWNmMjNhYzNmNTdlMzIzMjYyNDc0NTQwZDM3
ZWYyYTk2MTUuLjZiZDA2ZmI0NTdjOWEyY2YxY2QxZmNkN2Y0ZjEwYWFiODk2YjlhNzIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OSBAQAorMjAyMC0wMS0xNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIGRvY3VtZW50LmNvb2tpZSBzaG91bGQgbm90IGRvIGEgc3luYyBJUEMgdG8gdGhlIG5ldHdv
cmsgcHJvY2VzcyBmb3IgaWZyYW1lcyB0aGF0IGRvIG5vdCBoYXZlIHN0b3JhZ2UgYWNjZXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYxMDgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbiBhbmQgSm9obiBXaWxhbmRlci4KKworICAg
ICAgICBNYWtlIHNldFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzIElQQyBm
cm9tIHRoZSBXZWJQcm9jZXNzIHRvIHRoZSBVSVByb2Nlc3MgYXN5bmNocm9ub3VzCisgICAgICAg
IHNpbmNlIHRoaXMgZW5kcyB1cCBzZW5kaW5nIGFuIElQQyBiYWNrIHRvIHRoZSBXZWJQcm9jZXNz
IG5vdyAod2hpY2ggd291bGQgZGVhZGxvY2spLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5l
cjo6c2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMpOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RSOjpUZXN0
SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAg
ICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZSk6CisKIDIwMjAtMDEtMTAgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgogCiAgICAgICAgIFtXVFJdIFVzZSBzaG9ydCBoZWFydCBiZWF0IHRpbWVyIGFzIGEg
VGVzdE9wdGlvbgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggZmU5ZTJmZWE0M2Y0ZGUzYTc4Zjk5NTUwMjM5MDg5ZDIz
Y2M5MzY0NS4uMmVhM2NiZDcyYjQyYjJhMzBjYTJhNzZjODY1YzFkYWIwMjI5ZWM1YSAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNw
cAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
Y3BwCkBAIC0yMjM1LDcgKzIyMzUsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFN0YXRpc3RpY3NT
aG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGJvb2wgdmFsdWUsIEpTVmFsdWVSZQogICAgIGlm
IChvbmx5T25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24pCiAgICAgICAgIG1lc3NhZ2VOYW1l
ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2V0U3RhdGlzdGljc1No
b3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiIp
KTsKICAgICBXS1JldGFpblB0cjxXS0Jvb2xlYW5SZWY+IG1lc3NhZ2VCb2R5ID0gYWRvcHRXSyhX
S0Jvb2xlYW5DcmVhdGUodmFsdWUpKTsKLSAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3Nh
Z2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQo
KSwgbWVzc2FnZUJvZHkuZ2V0KCksIG51bGxwdHIpOworICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2Uo
SW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwg
bWVzc2FnZUJvZHkuZ2V0KCkpOwogICAgIG1faGFzU2V0QmxvY2tUaGlyZFBhcnR5Q29va2llc0Nh
bGxiYWNrID0gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9u
LmNwcAppbmRleCAwOThmNWJhNzhjN2VmMjgyYTYzN2IyM2FmMmMwMzkwMTZkYTBhNzM0Li5mZDVm
MmU5ZWVmMzhjZTVjMjU1NDNiMmRkNjYyOWY5ZTI2ZTdkYTBkIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtNzQ3LDYgKzc0NywyMCBAQCB2b2lkIFRlc3RJ
bnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1N0cmluZ1Jl
ZiBtZXNzYWdlTmFtZQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRTdGF0aXN0aWNzU2hvdWxkQmxv
Y2tUaGlyZFBhcnR5Q29va2llc09uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uIikpIHsKKyAg
ICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS0Jvb2xlYW5HZXRUeXBl
SUQoKSk7CisgICAgICAgIFdLQm9vbGVhblJlZiB2YWx1ZSA9IHN0YXRpY19jYXN0PFdLQm9vbGVh
blJlZj4obWVzc2FnZUJvZHkpOworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCku
c2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoV0tCb29sZWFuR2V0VmFs
dWUodmFsdWUpLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChXS1N0
cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0U3RhdGlzdGljc1Nob3Vs
ZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMiKSkgeworICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQo
bWVzc2FnZUJvZHkpID09IFdLQm9vbGVhbkdldFR5cGVJRCgpKTsKKyAgICAgICAgV0tCb29sZWFu
UmVmIHZhbHVlID0gc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihtZXNzYWdlQm9keSk7CisgICAg
ICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tU
aGlyZFBhcnR5Q29va2llcyhXS0Jvb2xlYW5HZXRWYWx1ZSh2YWx1ZSksIGZhbHNlKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5n
KG1lc3NhZ2VOYW1lLCAiUnVuVUlQcm9jZXNzU2NyaXB0IikpIHsKICAgICAgICAgV0tEaWN0aW9u
YXJ5UmVmIG1lc3NhZ2VCb2R5RGljdGlvbmFyeSA9IHN0YXRpY19jYXN0PFdLRGljdGlvbmFyeVJl
Zj4obWVzc2FnZUJvZHkpOwogICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc2NyaXB0
S2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2NyaXB0IikpOwpA
QCAtMTU1OSwyMCArMTU3Myw2IEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRp
b246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KICAgICAKLSAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4
Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlD
b29raWVzT25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24iKSkgewotICAgICAgICBBU1NFUlQo
V0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLQm9vbGVhbkdldFR5cGVJRCgpKTsKLSAgICAg
ICAgV0tCb29sZWFuUmVmIHZhbHVlID0gc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihtZXNzYWdl
Qm9keSk7Ci0gICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zZXRTdGF0aXN0aWNz
U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhXS0Jvb2xlYW5HZXRWYWx1ZSh2YWx1ZSksIHRy
dWUpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgCi0gICAgaWYgKFdLU3Ry
aW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRTdGF0aXN0aWNzU2hvdWxk
QmxvY2tUaGlyZFBhcnR5Q29va2llcyIpKSB7Ci0gICAgICAgIEFTU0VSVChXS0dldFR5cGVJRCht
ZXNzYWdlQm9keSkgPT0gV0tCb29sZWFuR2V0VHlwZUlEKCkpOwotICAgICAgICBXS0Jvb2xlYW5S
ZWYgdmFsdWUgPSBzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KG1lc3NhZ2VCb2R5KTsKLSAgICAg
ICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNldFN0YXRpc3RpY3NTaG91bGRCbG9ja1Ro
aXJkUGFydHlDb29raWVzKFdLQm9vbGVhbkdldFZhbHVlKHZhbHVlKSwgZmFsc2UpOwotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRv
VVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVE
YXRhUmVtb3ZhbE1vZGUiKSkgewogICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJv
ZHkpID09IFdLQm9vbGVhbkdldFR5cGVJRCgpKTsKICAgICAgICAgV0tCb29sZWFuUmVmIHZhbHVl
ID0gc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihtZXNzYWdlQm9keSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>