<?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>202309</bug_id>
          
          <creation_ts>2019-09-27 07:10:06 -0700</creation_ts>
          <short_desc>Handle service worker loads through NetworkResourceLoader</short_desc>
          <delta_ts>2019-12-13 15:22:45 -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>Service Workers</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=203036</see_also>
          <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>
          <dependson>202195</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>annulen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>clopez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>mkwst</cc>
    
    <cc>pnormand</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1574799</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-27 07:10:06 -0700</bug_when>
    <thetext>This is a first step towards simplifying service worker loads and optimise the ping pong we are doing for service worker matching.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1574801</commentid>
    <comment_count>1</comment_count>
      <attachid>379721</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-27 07:31:39 -0700</bug_when>
    <thetext>Created attachment 379721
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578667</commentid>
    <comment_count>2</comment_count>
      <attachid>380647</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-10 08:40:48 -0700</bug_when>
    <thetext>Created attachment 380647
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579030</commentid>
    <comment_count>3</comment_count>
      <attachid>380734</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-11 01:43:40 -0700</bug_when>
    <thetext>Created attachment 380734
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579061</commentid>
    <comment_count>4</comment_count>
      <attachid>380741</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-11 03:51:12 -0700</bug_when>
    <thetext>Created attachment 380741
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579080</commentid>
    <comment_count>5</comment_count>
      <attachid>380747</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-11 06:12:14 -0700</bug_when>
    <thetext>Created attachment 380747
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579084</commentid>
    <comment_count>6</comment_count>
      <attachid>380748</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-11 06:57:42 -0700</bug_when>
    <thetext>Created attachment 380748
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579086</commentid>
    <comment_count>7</comment_count>
      <attachid>380749</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-11 07:04:10 -0700</bug_when>
    <thetext>Created attachment 380749
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579089</commentid>
    <comment_count>8</comment_count>
      <attachid>380751</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-11 07:11:29 -0700</bug_when>
    <thetext>Created attachment 380751
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579215</commentid>
    <comment_count>9</comment_count>
      <attachid>380751</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-10-11 13:35:06 -0700</bug_when>
    <thetext>Comment on attachment 380751
Patch

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

&gt; Source/WebCore/workers/service/server/SWServer.cpp:977
&gt; +bool SWServer::canHandleScheme(const String&amp; scheme) const

I would make this take a StringView, then have a fast path if m_registeredSchemes.isEmpty() that doesn&apos;t make a String or hash it at all.  That will reduce a string construction and hash in the common non-testing case.

&gt; Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.cpp:265
&gt; +    Optional&lt;HashSet&lt;HTTPHeaderName, WTF::IntHash&lt;HTTPHeaderName&gt;, WTF::StrongEnumHashTraits&lt;HTTPHeaderName&gt;&gt;&gt; httpHeadersToKeep;

I think you should typedef this HashSet to avoid repeating so many template parameters.
Also, would it be worth just sending a Vector, or is hashing it worth it?

&gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:111
&gt; -void ServiceWorkerFetchTask::didReceiveResponse(const ResourceResponse&amp; response, bool needsContinueDidReceiveResponseMessage)
&gt; +void ServiceWorkerFetchTask::didReceiveResponse(ResourceResponse&amp;&amp; response, bool needsContinueDidReceiveResponseMessage)

I don&apos;t see why you&apos;re moving a response into this function, which only sends it over IPC.  It seems unnecessary.

&gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:130
&gt; -    if (m_connection)
&gt; -        m_connection-&gt;send(Messages::ServiceWorkerClientFetch::DidReceiveFormData { formData }, m_identifier.fetchIdentifier);
&gt; +    // FIXME: Allow WebResourceLoader to receive form data.

This seems like a regression as it stands now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579504</commentid>
    <comment_count>10</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-13 12:16:55 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #9)
&gt; Comment on attachment 380751 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=380751&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/workers/service/server/SWServer.cpp:977
&gt; &gt; +bool SWServer::canHandleScheme(const String&amp; scheme) const
&gt; 
&gt; I would make this take a StringView, then have a fast path if
&gt; m_registeredSchemes.isEmpty() that doesn&apos;t make a String or hash it at all. 
&gt; That will reduce a string construction and hash in the common non-testing
&gt; case.

I hesitated and went with const String&amp; since this was the way it was done before.
Will change to StringView.

&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.cpp:265
&gt; &gt; +    Optional&lt;HashSet&lt;HTTPHeaderName, WTF::IntHash&lt;HTTPHeaderName&gt;, WTF::StrongEnumHashTraits&lt;HTTPHeaderName&gt;&gt;&gt; httpHeadersToKeep;
&gt; 
&gt; I think you should typedef this HashSet to avoid repeating so many template
&gt; parameters.

Should use HTTPHeaderNameSet.

&gt; Also, would it be worth just sending a Vector, or is hashing it worth it?

Right, we could probably use a Vector, this should be done independently though since this should be changed in DocumntThreadableLoader et al.

&gt; &gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:111
&gt; &gt; -void ServiceWorkerFetchTask::didReceiveResponse(const ResourceResponse&amp; response, bool needsContinueDidReceiveResponseMessage)
&gt; &gt; +void ServiceWorkerFetchTask::didReceiveResponse(ResourceResponse&amp;&amp; response, bool needsContinueDidReceiveResponseMessage)
&gt; 
&gt; I don&apos;t see why you&apos;re moving a response into this function, which only
&gt; sends it over IPC.  It seems unnecessary.

We cannot use a const since we are modifying the response.
a ResourceResponse&amp; is sufficient though.

&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:130
&gt; &gt; -    if (m_connection)
&gt; &gt; -        m_connection-&gt;send(Messages::ServiceWorkerClientFetch::DidReceiveFormData { formData }, m_identifier.fetchIdentifier);
&gt; &gt; +    // FIXME: Allow WebResourceLoader to receive form data.
&gt; 
&gt; This seems like a regression as it stands now.

It is not since current code base has a FIXME for that in ServiceWorkerClientFetch::didReceiveFormData.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579567</commentid>
    <comment_count>11</comment_count>
      <attachid>380860</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-14 01:08:44 -0700</bug_when>
    <thetext>Created attachment 380860
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579576</commentid>
    <comment_count>12</comment_count>
      <attachid>380863</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-14 02:35:12 -0700</bug_when>
    <thetext>Created attachment 380863
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579861</commentid>
    <comment_count>13</comment_count>
      <attachid>380863</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-10-14 15:39:50 -0700</bug_when>
    <thetext>Comment on attachment 380863
Patch

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

&gt; Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:178
&gt; +    Vector&lt;ServiceWorkerFetchTask*&gt; fetches;

Since we&apos;re no longer mutating m_ongoingFetches while iterating, could we remove the use of the Vector?  If not, could we make this a safer pointer type?  If not, could we at least use reserveInitialCapacity/uncheckedAppend?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580005</commentid>
    <comment_count>14</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-14 23:11:53 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #13)
&gt; Comment on attachment 380863 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=380863&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:178
&gt; &gt; +    Vector&lt;ServiceWorkerFetchTask*&gt; fetches;
&gt; 
&gt; Since we&apos;re no longer mutating m_ongoingFetches while iterating, could we
&gt; remove the use of the Vector?  If not, could we make this a safer pointer
&gt; type?  If not, could we at least use reserveInitialCapacity/uncheckedAppend?

Creating a Vector is safer as calling fail/didNotHandle will mutate m_ongoingFetches.

We could use a Vector&lt;WeakPtr&lt;&gt;&gt; but we would need to increment the weak ptr ref or move it from the map to the vector. Let me know if you prefer that.

We could use reserveInitialCapacity but we might over-allocate since only the fetches of one worker only will be put in the vector. We usually do not do that.

We could also simply copyToVector the map and iterate over it.
Probably not a big deal for perf since the time out should happen rarely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580007</commentid>
    <comment_count>15</comment_count>
      <attachid>380863</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-14 23:15:57 -0700</bug_when>
    <thetext>Comment on attachment 380863
Patch

Cq+ing, I can update the patch for the fetch vector in a follow-up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580008</commentid>
    <comment_count>16</comment_count>
      <attachid>380863</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-14 23:59:53 -0700</bug_when>
    <thetext>Comment on attachment 380863
Patch

Clearing flags on attachment: 380863

Committed r251124: &lt;https://trac.webkit.org/changeset/251124&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580009</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-14 23:59:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580020</commentid>
    <comment_count>18</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-15 01:13:04 -0700</bug_when>
    <thetext>Seems to break again GTK bot, probably ENABLE(SERVICE_WORKER) issues.
Will look at it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580021</commentid>
    <comment_count>19</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-15 01:16:18 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580022</commentid>
    <comment_count>20</comment_count>
      <attachid>380968</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-15 01:16:21 -0700</bug_when>
    <thetext>Created attachment 380968
GTK build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580023</commentid>
    <comment_count>21</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-15 01:16:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/56283603&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580037</commentid>
    <comment_count>22</comment_count>
      <attachid>380968</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-15 01:59:18 -0700</bug_when>
    <thetext>Comment on attachment 380968
GTK build fix

Clearing flags on attachment: 380968

Committed r251126: &lt;https://trac.webkit.org/changeset/251126&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580038</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-15 01:59:20 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580534</commentid>
    <comment_count>24</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2019-10-16 08:57:56 -0700</bug_when>
    <thetext>(In reply to WebKit Commit Bot from comment #16)
&gt; Comment on attachment 380863 [details]
&gt; Patch
&gt; 
&gt; Clearing flags on attachment: 380863
&gt; 
&gt; Committed r251124: &lt;https://trac.webkit.org/changeset/251124&gt;

Seems this has caused lot of crashes in service-workers tests on GTK.

The bot is aborting early.

I will try to get a backtrack.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580539</commentid>
    <comment_count>25</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2019-10-16 09:15:11 -0700</bug_when>
    <thetext>(In reply to Carlos Alberto Lopez Perez from comment #24)
&gt; (In reply to WebKit Commit Bot from comment #16)
&gt; &gt; Comment on attachment 380863 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Clearing flags on attachment: 380863
&gt; &gt; 
&gt; &gt; Committed r251124: &lt;https://trac.webkit.org/changeset/251124&gt;
&gt; 
&gt; Seems this has caused lot of crashes in service-workers tests on GTK.
&gt; 
&gt; The bot is aborting early.
&gt; 
&gt; I will try to get a backtrack.

Reportad that on bug 203036</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580540</commentid>
    <comment_count>26</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-16 09:16:33 -0700</bug_when>
    <thetext>(In reply to Carlos Alberto Lopez Perez from comment #25)
&gt; (In reply to Carlos Alberto Lopez Perez from comment #24)
&gt; &gt; (In reply to WebKit Commit Bot from comment #16)
&gt; &gt; &gt; Comment on attachment 380863 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; Clearing flags on attachment: 380863
&gt; &gt; &gt; 
&gt; &gt; &gt; Committed r251124: &lt;https://trac.webkit.org/changeset/251124&gt;
&gt; &gt; 
&gt; &gt; Seems this has caused lot of crashes in service-workers tests on GTK.
&gt; &gt; 
&gt; &gt; The bot is aborting early.
&gt; &gt; 
&gt; &gt; I will try to get a backtrack.
&gt; 
&gt; Reportad that on bug 203036

I&apos;ll get a look tomorrow.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379721</attachid>
            <date>2019-09-27 07:31:39 -0700</date>
            <delta_ts>2019-10-10 08:40:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202309-20190927163137.patch</filename>
            <type>text/plain</type>
            <size>102435</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwMzgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWIzMzU4YmMyYWMwYTQ1
ZmExYzY1MmZhMTkzMDAyNjQ1YmU0MzNhNS4uMDBmNjU0OWU1MDViOWE4ZDIwN2E3Y2I1OGYyMTcz
Mzc2NTY3NjJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE5LTA5LTI3ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBIYW5kbGUgc2VydmljZSB3
b3JrZXIgbG9hZHMgdGhyb3VnaCBOZXR3b3JrUmVzb3VyY2VMb2FkZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjMwOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVz
dHMuCisKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jcmVhdGUtaHR0cC1oZWFkZXItbmFtZS10YWJsZToKKyAgICAg
ICAgQWRkIHRoZSBhYmlsaXR5IHRvIGVuY29kZS9kZWNvZGUgSFRUUEhlYWRlck5hbWUgd2l0aCBJ
UEMuCisKIDIwMTktMDktMjYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFJldXNlIGV4aXN0aW5nIHdlYiBwcm9jZXNzZXMgZm9yIHJ1bm5pbmcgc2VydmljZSB3
b3JrZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDY3Y2RhNzc3YWU4OGEyOTRhYjk3NDc4YzI3NzYxMzFhM2E4NDNm
ZGIuLmIwZmE5Yzk5NDY0ZjhlODU4YTc1ZTE0OWY2M2Q1ODhjMTM3MThhMDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTAwIEBACisyMDE5LTA5LTI3ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxl
LmNvbT4KKworICAgICAgICBIYW5kbGUgc2VydmljZSB3b3JrZXIgbG9hZHMgdGhyb3VnaCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwMjMwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJlbW92ZSBTZXJ2aWNlV29ya2VyRmV0Y2hDbGllbnQuCisgICAgICAgIEluc3Rl
YWQgd2UgdXNlIHRoZSBub3JtYWwgTmV0d29ya1Jlc291cmNlTG9hZGVyL1dlYlJlc291cmNlTG9h
ZGVyIGNvbW11bmljYXRpb24gY2hhbm5lbC4KKyAgICAgICAgV2UgcGFzcyBhZGRpdGlvbmFsIHBh
cmFtZXRlcnMsIGluIHBhcnRpY3VsYXIgc2VydmljZSB3b3JrZXIgbW9kZSBhbmQgcmVnaXN0cmF0
aW9uIGlkZW50aWZpZXIuCisKKyAgICAgICAgQmFzZWQgb24gdGhhdCBpbmZvcm1hdGlvbiwgbmV0
d29yayBwcm9jZXNzIHdpbGwgZGVjaWRlIHdoZXRoZXIgdG8gbG9hZCBmcm9tIHNlcnZpY2Ugd29y
a2VyIG9yIG5ldHdvcmsuCisgICAgICAgIFRoZSBmaXJzdCBhZHZhbnRhZ2UgaXMgdGhhdCBpbiBj
YXNlIG9mIHNlcnZpY2Ugd29ya2VyIG5vdCBoYW5kbGluZyB0aGUgbG9hZCwgZ29pbmcgdG8gdGhl
IG5ldHdvcmsgaXMgZmFzdGVyLgorICAgICAgICBUaGlzIHdpbGwgYWxzbyBhbGxvdyB1cyB0byBk
byB0aGUgcmVnaXN0cmF0aW9uIG1hdGNoaW5nIGluIG5ldHdvcmsgcHJvY2VzcyB3aGVuIHJlY2Vp
dmluZyBhIG5hdmlnYXRpb24gcmVxdWVzdC4KKworICAgICAgICBTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrIGlzIG5vdyBiZWVmZWQgdXAgdG8gZG8gdGhlIGxpbmsgYmV0d2VlbiBzZXJ2aWNlIHdvcmtl
ciBhbmQgTmV0d29ya1Jlc291cmNlTG9hZGVyL1dlYlJlc291cmNlTG9hZGVyLgorICAgICAgICBU
byBzdXBwb3J0IHRoZSBzYW1lIGNvbnNvbGUgbG9nZ2luZywgd2UgYWRkIGEgbmV3IG1lc3NhZ2Ug
Y2FsbGVkIERpZEZhaWxTZXJ2aWNlV29ya2VyTG9hZC4KKworICAgICAgICBUbyBzdXBwb3J0IEFQ
SSB0ZXN0cywgd2UgY29udGludWUgdG8gZ28gdG8gdGhlIHNlcnZpY2Ugd29ya2VyIGJlZm9yZSB0
cnlpbmcgdG8gZ28gdG8gVVJMIHNjaGVtZSBoYW5kbGVycy4KKyAgICAgICAgVGhpcyBhZGRzIHNv
bWUgYnVyZGVuIGFzIHdlIG5lZWQgdG8gZ28gdG8gbmV0d29yayBwcm9jZXNzL3NlcnZpY2Ugd29y
a2VyIHByb2Nlc3MgYW5kLCBpbiBjYXNlIGxvYWQgaXMgbm90IGhhbmRsZWQKKyAgICAgICAgYnkg
c2VydmljZSB3b3JrZXIsIHdlIGdvIGJhY2sgdG8gdGhlIHdlYiBwcm9jZXNzIHRvIGRvIHRoZSBs
b2FkIHRocm91Z2ggVVJMIHNjaGVtZSBoYW5kbGVycy4KKyAgICAgICAgRm9yIHRoYXQgcHVycG9z
ZSB3ZSB1c2UgU2VydmljZVdvcmtlcnNNb2RlOjpPbmx5LgorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAg
ICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVk
U291cmNlcy5tYWtlOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnNjaGVkdWxlUmVzb3VyY2VMb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjphYm9ydCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZURpZFJlY2VpdmVSZXNwb25z
ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VydmljZVdvcmtl
ckRpZE5vdEhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
c2V0U2VydmljZVdvcmtlckZldGNoVGFzayk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2Vydmlj
ZVdvcmtlckZldGNoVGFzazo6U2VydmljZVdvcmtlckZldGNoVGFzayk6CisgICAgICAgIChXZWJL
aXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6On5TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKToKKyAg
ICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6c3RhcnQpOgorICAgICAgICAo
V2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpzdGFydEZldGNoKToKKyAgICAgICAgKFdl
YktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2Up
OgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlUmVz
cG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJl
Y2VpdmVGb3JtRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6
OmRpZEZpbmlzaCk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRp
ZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWROb3RI
YW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpjYW5jZWxG
cm9tQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6Y29u
dGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2s6OmNvbnRpbnVlRmV0Y2hUYXNrV2l0aCk6CisgICAgICAgIChXZWJLaXQ6
OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmNsaWVudENvbm5lY3Rpb24pOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oOgorICAg
ICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpmZXRjaElkZW50aWZpZXIgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpzZXJ2aWNlV29y
a2VySWRlbnRpZmllciBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1Nl
cnZlckNvbm5lY3Rpb246OmNhbmNlbEZldGNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2
ZXJDb25uZWN0aW9uOjpjcmVhdGVGZXRjaFRhc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1Nl
cnZlckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2gpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW46Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb246On5XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnN0YXJ0RmV0Y2gpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbnRpbnVlRGlkUmVj
ZWl2ZUZldGNoUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246OmRpZFJlY2VpdmVGZXRjaFRhc2tNZXNzYWdlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjppcGNDb25uZWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpyZWdpc3RlckZldGNo
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp1bnJl
Z2lzdGVyRmV0Y2gpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtlcnNDYW5IYW5kbGUp
OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbFNlcnZpY2VXb3JrZXJMb2FkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OnNlcnZpY2VXb3JrZXJEaWROb3RIYW5kbGUp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbjoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNs
aWVudEZldGNoLmg6IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaC5tZXNzYWdlcy5pbjogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5jcHA6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oOgorCiAyMDE5LTA5LTI2
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIElzTlNV
UkxTZXNzaW9uV2ViU29ja2V0RW5hYmxlZCBhbiBleHBlcmltZW50YWwgZmxhZwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oCmluZGV4IDllMzA3NGRhMzIx
MWQwZWU5N2I4ZWIyZWRmNDkxNjllYzVkZjJhNGEuLmFlY2Y5NDQxZDMyMWVkOTk2YjhlNGQyMDIx
MDBiNjVmZmMwYWUxMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRlck9wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXJPcHRpb25zLmgKQEAgLTE3NSwzICsxNzUsMTYgQEAgc3RydWN0IFJlc291cmNlTG9hZGVyT3B0
aW9ucyA6IHB1YmxpYyBGZXRjaE9wdGlvbnMgewogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJD
b3JlOjpTZXJ2aWNlV29ya2Vyc01vZGU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVz
PAorICAgICAgICBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vyc01vZGUsCisgICAgICAgIFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJzTW9kZTo6QWxsLAorICAgICAgICBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
c01vZGU6Ok5vbmUsCisgICAgICAgIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJzTW9kZTo6T25seQor
ICAgID47Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3JlYXRlLWh0dHAtaGVhZGVyLW5hbWUtdGFibGUgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NyZWF0ZS1odHRwLWhlYWRlci1uYW1lLXRhYmxl
CmluZGV4IDY0N2NkZDgyNDJmYWY3ODVlMDIzMTQzNGQwMDkwZTZjMzk3NzNkYWQuLjQzOWRiNjhj
MzJjNDNlMDgzYjAwMDY3OGQ3MmNlMzU5ZGFkM2UyOWYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3JlYXRlLWh0dHAtaGVhZGVyLW5hbWUtdGFibGUKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jcmVhdGUtaHR0cC1oZWFkZXItbmFtZS10
YWJsZQpAQCAtMjMzLDYgKzIzMywyOCBAQCBXRUJDT1JFX0VYUE9SVCBTdHJpbmdWaWV3IGh0dHBI
ZWFkZXJOYW1lU3RyaW5nKEhUVFBIZWFkZXJOYW1lKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJD
b3JlOjpIVFRQSGVhZGVyTmFtZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8Cisg
ICAgICAgIFdlYkNvcmU6OkhUVFBIZWFkZXJOYW1lLAorJycnKQorCitpc19maXJzdCA9IFRydWUK
K2ZvciBodHRwX2hlYWRlcl9uYW1lIGluIGh0dHBfaGVhZGVyX25hbWVzOgorICAgIGlmIGlzX2Zp
cnN0OgorICAgICAgICBpc19maXJzdCA9IEZhbHNlCisgICAgZWxzZToKKyAgICAJaGVhZGVyX2Zp
bGUud3JpdGUoJyxcbicpCisKKyAgICBoZWFkZXJfZmlsZS53cml0ZSgnICAgICAgICBXZWJDb3Jl
OjpIVFRQSGVhZGVyTmFtZTo6JXMnICUgaHR0cF9oZWFkZXJfbmFtZV90b19pZFtodHRwX2hlYWRl
cl9uYW1lXSkKKworaGVhZGVyX2ZpbGUud3JpdGUoJycnCisgICAgPjsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdURgorCiAjZW5kaWYgLy8gSFRUUEhlYWRlck5hbWVzX2gKICcnJykKIGhlYWRlcl9m
aWxlLmNsb3NlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQgYi9T
b3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CmluZGV4IDllM2VjY2QyMmEwZWE4YWUxZWUwNjdh
Mjg1ODZiZjczMTA3MTRkMjQuLmI0MzM1MjY0MTU3NDJlYTQyNjYyMDA0NDFmZGE4YWUyNGRhOTQ1
M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L1dlYktpdC9DTWFrZUxpc3RzLnR4dApAQCAtMTkwLDcgKzE5MCw2IEBAIHNldChXZWJLaXRfTUVT
U0FHRVNfSU5fRklMRVMKICAgICBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCiAgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b3h5Lm1lc3NhZ2VzLmluCiAKLSAgICBXZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNs
aWVudEZldGNoLm1lc3NhZ2VzLmluCiAgICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgogICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggMmU0NzY2MDg1NDAzZDQyMDdmMmJmMTcy
ZTk5Yzc4NDY5MGE5Y2NlMS4uZjFhZGFkNjI2OWQwMTJjYWIxZGQ3MmI1OTA1MjU4ZWY5MDlmOTVh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVs
aXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApA
QCAtMTA1LDcgKzEwNSw2IEBAICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvTm90aWZpY2F0aW9u
cy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJP
SkVDVF9ESVIpL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFn
ZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm94eS5tZXNzYWdlcy5pbgotJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaC5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJ
UikvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250
ZW50Q29udHJvbGxlci5tZXNzYWdlcy5pbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggYmQ5ZGQ3ZjYzM2MxN2JjZjI5OTA4NzdmMWRlM2Fh
ZTRhOGZiNDdhYy4uMWM1ZDIxNGQwMDcxZDI2ODRmZGNjOGI4ZTRhYzljNjViZDk3ZGIwYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAor
KysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC04
MCw4ICs4MCw2IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQy
L1JlbW90ZVdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmgK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1NlY0l0ZW1TaGlt
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9TZWNJdGVtU2hpbVByb3h5TWVzc2FnZXMuaAotJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVz
c2FnZVJlY2VpdmVyLmNwcAotJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvU2VydmljZVdvcmtlckZldGNoVGFza01lc3Nh
Z2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2tNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVz
c2FnZVJlY2VpdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNl
cy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDlkZTcwNDI2
NmFmZWU1MTM2ZTY1ZTg0NzgxYjVhMDI1MjUxNTdhYzkuLmJhZTdjMzE5ZTQ3NjQ0NWE5Y2UzNmU2
MmQ3NmVmZWRkZjY2YWIxMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTEzMiw3
ICsxMzIsNiBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAgICBSZW1vdGVXZWJJbnNwZWN0b3JQ
cm94eSBcCiAgICAgUmVtb3RlV2ViSW5zcGVjdG9yVUkgXAogICAgIFNlY0l0ZW1TaGltUHJveHkg
XAotICAgIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaCBcCiAgICAgU2VydmljZVdvcmtlckZldGNo
VGFzayBcCiAgICAgU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlciBcCiAgICAgU3RvcmFnZUFy
ZWFNYXAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA1YzlkNWYyMmFhMWNkOGM1
ZTdhZWFhN2Q1YzJjNmI3NzM5ODg3YTQ3Li4zYWI4YjBiOWRlMTJlY2M5NThhZjYzNDU4ODVlNzRm
ZTk2MWE2Y2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNDAxLDkgKzQwMSwx
OCBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzY2hlZHVsZVJlc291cmNl
TG9hZChOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYQogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKICAgICBBU1NFUlQoIW1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5jb250YWlu
cyhpZGVudGlmaWVyKSk7CiAKLSAgICBhdXRvIGxvYWRlciA9IE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6Y3JlYXRlKFdURk1vdmUobG9hZFBhcmFtZXRlcnMpLCAqdGhpcyk7Ci0gICAgbV9uZXR3b3Jr
UmVzb3VyY2VMb2FkZXJzLmFkZChpZGVudGlmaWVyLCBsb2FkZXIuY29weVJlZigpKTsKKyAgICBh
dXRvJiBsb2FkZXIgPSBtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMuYWRkKGlkZW50aWZpZXIsIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKFdURk1vdmUobG9hZFBhcmFtZXRlcnMpLCAqdGhp
cykpLml0ZXJhdG9yLT52YWx1ZTsKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckZldGNoVGFzaz4gdGFzayA9IG1fc3dDb25uZWN0
aW9uID8gbV9zd0Nvbm5lY3Rpb24tPmNyZWF0ZUZldGNoVGFzayhsb2FkZXIpIDogbnVsbHB0cjsK
KyAgICBpZiAodGFzaykgeworICAgICAgICBsb2FkZXItPnNldFNlcnZpY2VXb3JrZXJGZXRjaFRh
c2soV1RGTW92ZSh0YXNrKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbG9hZGVyLT5z
dGFydCgpOworI2Vsc2UKICAgICBsb2FkZXItPnN0YXJ0KCk7CisjZW5kaWYKIH0KIAogdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGVyZm9ybVN5bmNocm9ub3VzTG9hZChOZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIGxvYWRQYXJhbWV0ZXJzLCBNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRlbGF5
ZWRSZXBseSYmIHJlcGx5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDExNmJhODc4NTk3
OTgxMDQ0ZWViNzQyOWIyMGQzNWZmYjJjOGUyNjEuLjBkNzdjYjc1ZmYwM2RhNzA2ZTg0MmI5ODRk
MTNjYjFmNDI1YjY5ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTIyMCw2ICsyMjAs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmKTsKICAgICB2b2lkIGNsb3NlU1dDb250ZXh0Q29ubmVj
dGlvbigpOwogICAgIHZvaWQgdW5yZWdpc3RlclNXQ29ubmVjdGlvbigpOworICAgIHZvaWQgaGFu
ZGxlRmV0Y2hUaHJvdWdoU2VydmljZVdvcmtlcihOZXR3b3JrUmVzb3VyY2VMb2FkZXImKTsKICNl
bmRpZgogCiAgICAgdm9pZCBjcmVhdGVOZXdNZXNzYWdlUG9ydENoYW5uZWwoY29uc3QgV2ViQ29y
ZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0MSwgY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBv
cnRJZGVudGlmaWVyJiBwb3J0Mik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4IDAx
Mzg1NjM4MTU3ZGQ0ZDA0YzY4ODdhMGY4NDZmOTc3NTdiMGFjZjguLmFhM2MzZTFlN2M1N2EwODA2
NzZjYjllMzgwY2I5NmMxMzg5MzczY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCkBA
IC0xMDAsNiArMTAwLDEyIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVu
Y29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBmcmFtZUFu
Y2VzdG9yT3JpZ2luczsKICAgICBlbmNvZGVyIDw8IGlzSFRUUFNVcGdyYWRlRW5hYmxlZDsKIAor
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBlbmNvZGVyIDw8IHNlcnZpY2VXb3JrZXJz
TW9kZTsKKyAgICBlbmNvZGVyIDw8IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
OworICAgIGVuY29kZXIgPDwgaHR0cEhlYWRlcnNUb0tlZXA7CisjZW5kaWYKKwogI2lmIEVOQUJM
RShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgZW5jb2RlciA8PCBtYWluRG9jdW1lbnRVUkw7CiAg
ICAgZW5jb2RlciA8PCB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwpAQCAtMjM1LDcg
KzI0MSwyNyBAQCBPcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycz4gTmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29kZShJUAogICAgIGlmICghaXNIVFRQU1VwZ3Jh
ZGVFbmFibGVkKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIHJlc3VsdC5pc0hU
VFBTVXBncmFkZUVuYWJsZWQgPSAqaXNIVFRQU1VwZ3JhZGVFbmFibGVkOwotICAgIAorCisjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJzTW9kZT4g
c2VydmljZVdvcmtlcnNNb2RlOworICAgIGRlY29kZXIgPj4gc2VydmljZVdvcmtlcnNNb2RlOwor
ICAgIGlmICghc2VydmljZVdvcmtlcnNNb2RlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIHJlc3VsdC5zZXJ2aWNlV29ya2Vyc01vZGUgPSAqc2VydmljZVdvcmtlcnNNb2RlOwor
CisgICAgT3B0aW9uYWw8T3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXI+PiBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+
IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOworICAgIGlmICghc2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgcmVzdWx0LnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyID0gKnNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOworCisgICAgT3B0aW9uYWw8SGFzaFNldDxI
VFRQSGVhZGVyTmFtZSwgV1RGOjpJbnRIYXNoPEhUVFBIZWFkZXJOYW1lPiwgV1RGOjpTdHJvbmdF
bnVtSGFzaFRyYWl0czxIVFRQSGVhZGVyTmFtZT4+PiBodHRwSGVhZGVyc1RvS2VlcDsKKyAgICBk
ZWNvZGVyID4+IGh0dHBIZWFkZXJzVG9LZWVwOworICAgIGlmICghaHR0cEhlYWRlcnNUb0tlZXAp
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmVzdWx0Lmh0dHBIZWFkZXJzVG9L
ZWVwID0gV1RGTW92ZSgqaHR0cEhlYWRlcnNUb0tlZXApOworI2VuZGlmCisKICNpZiBFTkFCTEUo
Q09OVEVOVF9FWFRFTlNJT05TKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1haW5E
b2N1bWVudFVSTCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzLmgKaW5kZXggMTIwMzQ3MDRkYTkyN2I1YTJmYzFiNWNlZmU5OWJiZjgyYmZkZjU3NC4u
OWNkNWI0NTVjNzI1NTczNDlhMDAzOWQ4ZmQxYzI3NDVhNGI1NzMyNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnMuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJv
bGxlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRTZWN1cml0eVBvbGlj
eVJlc3BvbnNlSGVhZGVycy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hPcHRpb25zLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9IVFRQSGVhZGVyTmFtZXMuaD4KICNpbmNsdWRlIDx3dGYvU2Vjb25k
cy5oPgogCiBuYW1lc3BhY2UgSVBDIHsKQEAgLTYwLDYgKzYxLDEyIEBAIHB1YmxpYzoKICAgICBW
ZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4gZnJhbWVBbmNlc3Rvck9yaWdp
bnM7CiAgICAgYm9vbCBpc0hUVFBTVXBncmFkZUVuYWJsZWQgeyBmYWxzZSB9OwogCisjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJzTW9kZSBzZXJ2
aWNlV29ya2Vyc01vZGUgeyBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vyc01vZGU6Ok5vbmUgfTsKKyAg
ICBPcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4g
c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI7CisgICAgSGFzaFNldDxXZWJDb3Jl
OjpIVFRQSGVhZGVyTmFtZSwgV1RGOjpJbnRIYXNoPFdlYkNvcmU6OkhUVFBIZWFkZXJOYW1lPiwg
V1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxXZWJDb3JlOjpIVFRQSGVhZGVyTmFtZT4+IGh0dHBI
ZWFkZXJzVG9LZWVwOworI2VuZGlmCisKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQog
ICAgIFVSTCBtYWluRG9jdW1lbnRVUkw7CiAgICAgT3B0aW9uYWw8VXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllcj4gdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cAppbmRleCAxMWNjNzZjZGIzNjNiYWVhNjNjNzhiNTIxNDQ5M2JhN2FlOGRlM2UzLi40ZGRjMzU2
NmI2MWRjMmY4NDdiMDEyY2U4ZWI5ZTkzYzU4ZTNjNjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0zNjYs
NiArMzY2LDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjphYm9ydCgpCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgaWYgKGF1
dG8gdGFzayA9IFdURk1vdmUobV9zZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKSkKKyAgICAgICAgdGFz
ay0+Y2FuY2VsRnJvbUNsaWVudCgpOworI2VuZGlmCisKICAgICBpZiAobV9uZXR3b3JrTG9hZCkg
ewogICAgICAgICBpZiAoY2FuVXNlQ2FjaGUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3Qo
KSkpIHsKICAgICAgICAgICAgIC8vIFdlIG1pZ2h0IGFscmVhZHkgaGF2ZSB1c2VkIGRhdGEgZnJv
bSB0aGlzIGluY29tcGxldGUgbG9hZC4gRW5zdXJlIG9sZGVyIHZlcnNpb25zIGRvbid0IHJlbWFp
biBpbiB0aGUgY2FjaGUgYWZ0ZXIgY2FuY2VsLgpAQCAtNTk5LDggKzYwNCwxNiBAQCB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbExvYWRpbmcoY29uc3QgUmVzb3VyY2VFcnJvciYg
ZXJyb3IpCiAgICAgaWYgKGlzU3luY2hyb25vdXMoKSkgewogICAgICAgICBtX3N5bmNocm9ub3Vz
TG9hZERhdGEtPmVycm9yID0gZXJyb3I7CiAgICAgICAgIHNlbmRSZXBseVRvU3luY2hyb25vdXNS
ZXF1ZXN0KCptX3N5bmNocm9ub3VzTG9hZERhdGEsIG51bGxwdHIpOwotICAgIH0gZWxzZSBpZiAo
YXV0byogY29ubmVjdGlvbiA9IG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkpCisgICAgfSBlbHNl
IGlmIChhdXRvKiBjb25uZWN0aW9uID0gbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSkgeworI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICAgICAgaWYgKG1fc2VydmljZVdvcmtlckZldGNo
VGFzaykKKyAgICAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNl
TG9hZGVyOjpEaWRGYWlsU2VydmljZVdvcmtlckxvYWQoZXJyb3IpLCBtZXNzYWdlU2VuZGVyRGVz
dGluYXRpb25JRCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29ubmVjdGlvbi0+c2Vu
ZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZhaWxSZXNvdXJjZUxvYWQoZXJyb3Ip
LCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpKTsKKyNlbHNlCiAgICAgICAgIGNvbm5lY3Rp
b24tPnNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGYWlsUmVzb3VyY2VMb2Fk
KGVycm9yKSwgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSk7CisjZW5kaWYKKyAgICB9CiAK
ICAgICBjbGVhbnVwKExvYWRSZXN1bHQ6OkZhaWx1cmUpOwogfQpAQCAtNzM0LDYgKzc0NywxMCBA
QCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmVzdGFydE5ldHdvcmtMb2FkKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmIG5ld1JlcQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
Y29udGludWVXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgYm9v
bCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscykKIHsKKyAgICBpZiAobV9zZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrKSB7CisgICAgICAgIG1fc2VydmljZVdvcmtlckZldGNoVGFzay0+Y29u
dGludWVGZXRjaFRhc2tXaXRoKFdURk1vdmUobmV3UmVxdWVzdCkpOworICAgICAgICByZXR1cm47
CisgICAgfQogICAgIGlmIChtX3Nob3VsZFJlc3RhcnRMb2FkKSB7CiAgICAgICAgIG1fc2hvdWxk
UmVzdGFydExvYWQgPSBmYWxzZTsKIApAQCAtNzc5LDYgKzc5NiwxMSBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYg
bmV3UmVxdWVzdAogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2UoKQogeworICAgIGlmIChtX3NlcnZpY2VXb3JrZXJGZXRjaFRhc2spIHsKKyAg
ICAgICAgbV9zZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLT5jb250aW51ZURpZFJlY2VpdmVGZXRjaFJl
c3BvbnNlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAobV9jYWNoZUVudHJ5
V2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKSB7CiAgICAgICAgIHNlbmRSZXN1
bHRGb3JDYWNoZUVudHJ5KFdURk1vdmUobV9jYWNoZUVudHJ5V2FpdGluZ0ZvckNvbnRpbnVlRGlk
UmVjZWl2ZVJlc3BvbnNlKSk7CiAgICAgICAgIGNsZWFudXAoTG9hZFJlc3VsdDo6U3VjY2Vzcyk7
CkBAIC0xMTgzLDYgKzEyMDUsMTkgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmlzQ3Jv
c3NPcmlnaW5QcmVmZXRjaCgpIGNvbnN0CiAgICAgcmV0dXJuIHJlcXVlc3QuaHR0cEhlYWRlckZp
ZWxkKEhUVFBIZWFkZXJOYW1lOjpQdXJwb3NlKSA9PSAicHJlZmV0Y2giICYmICFtX3BhcmFtZXRl
cnMuc291cmNlT3JpZ2luLT5jYW5SZXF1ZXN0KHJlcXVlc3QudXJsKCkpOwogfQogCisjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlcnZpY2VX
b3JrZXJEaWROb3RIYW5kbGUoKQoreworICAgIG1fc2VydmljZVdvcmtlckZldGNoVGFzayA9IG51
bGxwdHI7CisgICAgc3RhcnQoKTsKK30KKwordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNl
dFNlcnZpY2VXb3JrZXJGZXRjaFRhc2soc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJGZXRj
aFRhc2s+JiYgdGFzaykKK3sKKyAgICBtX3NlcnZpY2VXb3JrZXJGZXRjaFRhc2sgPSBXVEZNb3Zl
KHRhc2spOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKaW5kZXggZDY1MDcyYjcyYmQ0MTMxNDFhMDZiMjg3
YzQ1MjY5YmU0MmFmMDc3Ni4uMGU5NWFhNTRjOTBlMzU3NWRiZWM3ODdiZDVlYTY3OGI4ZmExMzli
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5oCkBAIC01MSw2ICs1MSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3Mg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiBjbGFzcyBOZXR3b3JrTG9hZDsKIGNsYXNz
IE5ldHdvcmtMb2FkQ2hlY2tlcjsKK2NsYXNzIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s7CiAKIG5h
bWVzcGFjZSBOZXR3b3JrQ2FjaGUgewogY2xhc3MgRW50cnk7CkBAIC04OCw3ICs4OSw4IEBAIHB1
YmxpYzoKICAgICBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX3BhcmFtZXRlcnMuaWRlbnRpZmllcjsgfQogICAgIFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciBmcmFtZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQ7IH0K
ICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3Bh
cmFtZXRlcnMud2ViUGFnZUlEOyB9Ci0gICAgCisgICAgY29uc3QgTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnM7IH0K
KwogICAgIE5ldHdvcmtDYWNoZTo6R2xvYmFsRnJhbWVJRCBnbG9iYWxGcmFtZUlEKCkgeyByZXR1
cm4geyBtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIHBhZ2VJRCgpLCBmcmFtZUlEKCkgfTsg
fQogCiAgICAgc3RydWN0IFN5bmNocm9ub3VzTG9hZERhdGE7CkBAIC0xMjIsNiArMTI0LDExIEBA
IHB1YmxpYzoKIAogICAgIGJvb2wgaXNLZXB0QWxpdmUoKSBjb25zdCB7IHJldHVybiBtX2lzS2Vw
dEFsaXZlOyB9CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgdm9pZCBzZXJ2aWNl
V29ya2VyRGlkTm90SGFuZGxlKCk7CisgICAgdm9pZCBzZXRTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
KHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiYmKTsKKyNlbmRpZgorCiBw
cml2YXRlOgogICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlcihOZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycyYmLCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6RGVsYXll
ZFJlcGx5JiYpOwogCkBAIC0yMjAsNiArMjI3LDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNL
ZXB0QWxpdmUgeyBmYWxzZSB9OwogCiAgICAgT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tl
cj4gbV9uZXR3b3JrQWN0aXZpdHlUcmFja2VyOworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckZldGNoVGFzaz4gbV9zZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAppbmRleCA1NTNjYmFkMTliYzVhMTk3
ZTA2MjUyNzUwZjI4MmNlM2IwNDE2ZmIwLi5mMjBjZmQwMGY0NmVlNjZiZWRkZjVhYmE2M2U5NzAx
N2Y3NDAyOWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCkBA
IC0zMiw4ICszMiwxMyBAQAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJG
b3JtRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJTZXJ2
aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJj
ZUxvYWRlci5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKICNpbmNs
dWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRl
ck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNz
YWdlcy5oIgorI2luY2x1ZGUgIldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmg+CiAKICNkZWZpbmUgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYobV9zZXNzaW9uSUQu
aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFNlcnZpY2VXb3JrZXIsICIlcCAtIFNlcnZpY2VX
b3JrZXJGZXRjaFRhc2s6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBSRUxF
QVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUl9JRiht
X3Nlc3Npb25JRC5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgU2VydmljZVdvcmtlciwgIiVw
IC0gU2VydmljZVdvcmtlckZldGNoVGFzazo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCkBA
IC00Miw0MyArNDcsMTE2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlUmVkaXJl
Y3RSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK1NlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2soUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBOZXR3b3JrUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgU1dTZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZp
ZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIpCisgICAgOiBtX3Nlc3Npb25JRChzZXNzaW9uSUQp
CisgICAgLCBtX2xvYWRlcihsb2FkZXIpCisgICAgLCBtX2ZldGNoSWRlbnRpZmllcihXZWJDb3Jl
OjpGZXRjaElkZW50aWZpZXI6OmdlbmVyYXRlKCkpCisgICAgLCBtX3NlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKQorICAgICwgbV9zZXJ2aWNlV29y
a2VySWRlbnRpZmllcihzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKIHsKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZTogJXMiLCBtX2lkZW50aWZp
ZXIuZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBt
X2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlk
UmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgeyByZXNwb25zZSB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJ
ZGVudGlmaWVyKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvb2wgbmVlZHNDb250
aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCitTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjp+
U2VydmljZVdvcmtlckZldGNoVGFzaygpCiB7Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJlc3Bv
bnNlLCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB9LCBtX2lkZW50aWZp
ZXIuZmV0Y2hJZGVudGlmaWVyKTsKKyAgICBpZiAobV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbikK
KyAgICAgICAgbV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbi0+dW5yZWdpc3RlckZldGNoKCp0aGlz
KTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpzdGFydChXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24mIHNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKQoreworICAgIG1fc2Vy
dmljZVdvcmtlckNvbm5lY3Rpb24gPSBtYWtlV2Vha1B0cihzZXJ2aWNlV29ya2VyQ29ubmVjdGlv
bik7CisgICAgc2VydmljZVdvcmtlckNvbm5lY3Rpb24ucmVnaXN0ZXJGZXRjaCgqdGhpcyk7Cisg
ICAgCisgICAgc3RhcnRGZXRjaChSZXNvdXJjZVJlcXVlc3QgeyBtX2xvYWRlci5vcmlnaW5hbFJl
cXVlc3QoKSB9LCBzZXJ2aWNlV29ya2VyQ29ubmVjdGlvbik7Cit9CisKK3ZvaWQgU2VydmljZVdv
cmtlckZldGNoVGFzazo6c3RhcnRGZXRjaChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIHNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKQorewor
ICAgIG1fY3VycmVudFJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpOworCisgICAgYXV0byYgb3B0
aW9ucyA9IG1fbG9hZGVyLnBhcmFtZXRlcnMoKS5vcHRpb25zOworICAgIGF1dG8gcmVmZXJyZXIg
PSBtX2N1cnJlbnRSZXF1ZXN0Lmh0dHBSZWZlcnJlcigpOworCisgICAgLy8gV2UgYXJlIGludGVy
Y2VwdGluZyBmZXRjaCBjYWxscyBhZnRlciBnb2luZyB0aHJvdWdoIHRoZSBIVFRQIGxheWVyLCB3
aGljaCBtYXkgYWRkIHNvbWUgc3BlY2lmaWMgaGVhZGVycy4KKyAgICBjbGVhbkhUVFBSZXF1ZXN0
SGVhZGVyc0ZvckFjY2Vzc0NvbnRyb2wobV9jdXJyZW50UmVxdWVzdCwgbV9sb2FkZXIucGFyYW1l
dGVycygpLmh0dHBIZWFkZXJzVG9LZWVwKTsKKworICAgIHNlcnZpY2VXb3JrZXJDb25uZWN0aW9u
LmlwY0Nvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6U3RhcnRGZXRjaCB7IG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIG1fc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIG1fZmV0Y2hJZGVudGlmaWVyLCBtX2N1cnJlbnRSZXF1ZXN0LCBv
cHRpb25zLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHsgbV9jdXJyZW50UmVxdWVzdC5odHRwQm9k
eSgpIH0sIHJlZmVycmVyIH0sIDApOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6
OmRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkK
K3sKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25z
ZTogJXMiLCBtX2ZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CisKKyAgICByZXNwb25zZS5zZXRTb3VyY2UoUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpTZXJ2
aWNlV29ya2VyKTsKKyAgICBhdXRvIG5ld1JlcXVlc3QgPSBtX2N1cnJlbnRSZXF1ZXN0LnJlZGly
ZWN0ZWRSZXF1ZXN0KHJlc3BvbnNlLCBtX2xvYWRlci5wYXJhbWV0ZXJzKCkuc2hvdWxkQ2xlYXJS
ZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCk7CisKKyAgICBjbGllbnRDb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OldpbGxTZW5kUmVxdWVzdCB7IG5ld1Jl
cXVlc3QsIHJlc3BvbnNlIH0sIG1fbG9hZGVyLmlkZW50aWZpZXIoKSk7Cit9CisKK3ZvaWQgU2Vy
dmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2Um
JiByZXNwb25zZSwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkK
K3sKKyAgICByZXNwb25zZS5zZXRTb3VyY2UoUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpTZXJ2
aWNlV29ya2VyKTsKKworICAgIGNsaWVudENvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJS
ZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG5lZWRzQ29udGlu
dWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0sIG1fbG9hZGVyLmlkZW50aWZpZXIoKSk7CiB9
CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQogewotICAg
IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpE
aWRSZWNlaXZlRGF0YSB7IGRhdGEsIGVuY29kZWREYXRhTGVuZ3RoIH0sIG1faWRlbnRpZmllci5m
ZXRjaElkZW50aWZpZXIpOworICAgIGNsaWVudENvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEgeyBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2UgeyBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkgfSwgZW5jb2RlZERhdGFMZW5ndGgg
fSwgbV9sb2FkZXIuaWRlbnRpZmllcigpKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrOjpkaWRSZWNlaXZlRm9ybURhdGEoY29uc3QgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYgZm9y
bURhdGEpCiB7Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2Vy
Q2xpZW50RmV0Y2g6OkRpZFJlY2VpdmVGb3JtRGF0YSB7IGZvcm1EYXRhIH0sIG1faWRlbnRpZmll
ci5mZXRjaElkZW50aWZpZXIpOworICAgIC8vIEZJWE1FOiBBbGxvdyBXZWJSZXNvdXJjZUxvYWRl
ciB0byByZWNlaXZlIGZvcm0gZGF0YS4KIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
OjpkaWRGaW5pc2goKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZpbmlzaEZl
dGNoOiBmZXRjaElkZW50aWZpZXI6ICVzIiwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci5s
b2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1l
c3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZEZpbmlzaCB7IH0sIG1faWRlbnRp
Zmllci5mZXRjaElkZW50aWZpZXIpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZp
bmlzaEZldGNoOiBmZXRjaElkZW50aWZpZXI6ICVzIiwgbV9mZXRjaElkZW50aWZpZXIubG9nZ2lu
Z1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIGNsaWVudENvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkRmluaXNoUmVzb3VyY2VMb2FkIHsgeyB9IH0s
IG1fbG9hZGVyLmlkZW50aWZpZXIoKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFz
azo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICBSRUxFQVNFX0xP
R19FUlJPUl9JRl9BTExPV0VEKCJkaWRGYWlsRmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMiLCBt
X2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRG
ZXRjaDo6RGlkRmFpbCB7IGVycm9yIH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOwor
ICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoImRpZEZhaWxGZXRjaDogZmV0Y2hJZGVu
dGlmaWVyOiAlcyIsIG1fZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKKyAgICBtX2xvYWRlci5kaWRGYWlsTG9hZGluZyhlcnJvcik7CiB9CiAKIHZvaWQgU2Vy
dmljZVdvcmtlckZldGNoVGFzazo6ZGlkTm90SGFuZGxlKCkKIHsKLSAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJkaWROb3RIYW5kbGVGZXRjaDogZmV0Y2hJZGVudGlmaWVyOiAlcyIsIG1faWRl
bnRpZmllci5mZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwot
ICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNo
OjpEaWROb3RIYW5kbGUgeyB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKKyAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWROb3RIYW5kbGVGZXRjaDogZmV0Y2hJZGVudGlmaWVy
OiAlcyIsIG1fZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
KyAgICBpZiAobV9sb2FkZXIucGFyYW1ldGVycygpLnNlcnZpY2VXb3JrZXJzTW9kZSA9PSBTZXJ2
aWNlV29ya2Vyc01vZGU6Ok9ubHkpIHsKKyAgICAgICAgY2xpZW50Q29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpTZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlIHsg
fSwgbV9sb2FkZXIuaWRlbnRpZmllcigpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBt
X2xvYWRlci5zZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlKCk7Cit9CisKK3ZvaWQgU2VydmljZVdv
cmtlckZldGNoVGFzazo6Y2FuY2VsRnJvbUNsaWVudCgpCit7CisgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgiY2FuY2VsRnJvbUNsaWVudDogZmV0Y2hJZGVudGlmaWVyOiAlcyIsIG1fZmV0Y2hJ
ZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAobV9zZXJ2
aWNlV29ya2VyQ29ubmVjdGlvbikKKyAgICAgICAgbV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbi0+
aXBjQ29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uOjpDYW5jZWxGZXRjaCB7IG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIG1fc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIG1fZmV0Y2hJZGVudGlmaWVyIH0sIDApOworfQorCit2b2lkIFNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s6OmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoKQor
eworICAgIGlmIChtX3NlcnZpY2VXb3JrZXJDb25uZWN0aW9uKQorICAgICAgICBtX3NlcnZpY2VX
b3JrZXJDb25uZWN0aW9uLT5pcGNDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb246OkNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UgeyBt
X3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBt
X2ZldGNoSWRlbnRpZmllciB9LCAwKTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Ojpjb250aW51ZUZldGNoVGFza1dpdGgoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKK3sKKyAg
ICBpZiAoIW1fc2VydmljZVdvcmtlckNvbm5lY3Rpb24pIHsKKyAgICAgICAgbV9sb2FkZXIuc2Vy
dmljZVdvcmtlckRpZE5vdEhhbmRsZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHN0
YXJ0RmV0Y2goV1RGTW92ZShyZXF1ZXN0KSwgKm1fc2VydmljZVdvcmtlckNvbm5lY3Rpb24pOwor
fQorCitJUEM6OkNvbm5lY3Rpb24mIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmNsaWVudENvbm5l
Y3Rpb24oKQoreworICAgIHJldHVybiBtX2xvYWRlci5jb25uZWN0aW9uVG9XZWJQcm9jZXNzKCku
Y29ubmVjdGlvbigpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlckZldGNoVGFzay5oCmluZGV4IGYxMTZjYzc0OWU2YzA1NzdhOTlkMDk1NDQxYWE4
MmQ5NmZlOGM0ODcuLjM0ODMyYWZiYjc5OGEyZDE1NGVjZTljMTFjOWYxMjBkMjdjNWIzMTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaApAQCAtMjgsMTIgKzI4LDE0IEBA
CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCiAjaW5jbHVkZSA8V2ViQ29yZS9GZXRjaElk
ZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25J
RC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKK2NsYXNzIFJl
c291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiB9CiAKQEAgLTQ2LDc2ICs0
OCw0OSBAQCBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
LWNsYXNzIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2sgOiBwdWJsaWMgUmVmQ291bnRlZDxTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrPiB7CitjbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2FkZXI7CitjbGFzcyBX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CisKK2NsYXNzIFNlcnZpY2VXb3JrZXJGZXRj
aFRhc2sgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U2VydmljZVdvcmtlckZldGNoVGFzaz4gewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U2Vy
dmljZVdvcmtlckZldGNoVGFzaz4gY3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUmVm
PElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZp
ZXIgZmV0Y2hJZGVudGlmaWVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2soc2Vzc2lvbklELCBXVEZNb3ZlKGNvbm5lY3Rpb24pLCBjb25uZWN0aW9uSWRlbnRp
ZmllciwgZmV0Y2hJZGVudGlmaWVyKSk7IH0KKyAgICBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKFBB
TDo6U2Vzc2lvbklELCBOZXR3b3JrUmVzb3VyY2VMb2FkZXImLCBXZWJDb3JlOjpTV1NlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Cisg
ICAgflNlcnZpY2VXb3JrZXJGZXRjaFRhc2soKTsKIAorICAgIHZvaWQgc3RhcnQoV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7CisgICAgdm9pZCBjYW5jZWxGcm9tQ2xpZW50KCk7CiAg
ICAgdm9pZCBmYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKSB7IGRpZEZh
aWwoZXJyb3IpOyB9CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImKTsKIAotICAgIHN0cnVjdCBJZGVudGlmaWVyIHsKLSAgICAgICAgV2Vi
Q29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcjsK
LSAgICAgICAgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllcjsKLSAgICAg
ICAgCi0gICAgICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAg
ICB1bnNpZ25lZCBoYXNoZXNbMl07Ci0gICAgICAgICAgICBoYXNoZXNbMF0gPSBXVEY6OmludEhh
c2goY29ubmVjdGlvbklkZW50aWZpZXIudG9VSW50NjQoKSk7Ci0gICAgICAgICAgICBoYXNoZXNb
MV0gPSBXVEY6OmludEhhc2goZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOwotICAgICAgICAg
ICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeShoYXNoZXMsIHNpemVvZihoYXNoZXMp
KTsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVy
KCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgdm9pZCBjb250aW51ZURpZFJl
Y2VpdmVGZXRjaFJlc3BvbnNlKCk7CisgICAgdm9pZCBjb250aW51ZUZldGNoVGFza1dpdGgoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOworCisgICAgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVy
IGZldGNoSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fZmV0Y2hJZGVudGlmaWVyOyB9Cisg
ICAgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyOyB9CisKKyAgICB2
b2lkIGRpZE5vdEhhbmRsZSgpOwogCiBwcml2YXRlOgotICAgIFNlcnZpY2VXb3JrZXJGZXRjaFRh
c2soUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5l
Y3Rpb24sIFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgY29ubmVjdGlvbklk
ZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIpCi0gICAg
ICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQotICAgICAgICAsIG1fY29ubmVjdGlvbihXVEZN
b3ZlKGNvbm5lY3Rpb24pKQotICAgICAgICAsIG1faWRlbnRpZmllciB7IGNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBmZXRjaElkZW50aWZpZXIgfQotICAgIHsgfQotCi0gICAgdm9pZCBkaWRSZWNlaXZl
UmVkaXJlY3RSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYs
IGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpOworICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKTsK
KyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYs
IGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgaW50NjRfdCBlbmNvZGVk
RGF0YUxlbmd0aCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlRm9ybURhdGEoY29uc3QgSVBDOjpGb3Jt
RGF0YVJlZmVyZW5jZSYpOwogICAgIHZvaWQgZGlkRmluaXNoKCk7CiAgICAgdm9pZCBkaWRGYWls
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKLSAgICB2b2lkIGRpZE5vdEhhbmRsZSgp
OwogCi0gICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7Ci0gICAgUmVmPElQQzo6Q29ubmVj
dGlvbj4gbV9jb25uZWN0aW9uOwotICAgIElkZW50aWZpZXIgbV9pZGVudGlmaWVyOwotfTsKKyAg
ICB2b2lkIHN0YXJ0RmV0Y2goV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbiYpOwogCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s6OklkZW50aWZpZXImIGEsIGNvbnN0IFNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2s6OklkZW50aWZpZXImIGIpCi17Ci0gICAgcmV0dXJuIGEuY29ubmVjdGlvbklkZW50
aWZpZXIgPT0gYi5jb25uZWN0aW9uSWRlbnRpZmllciAmJiAgYS5mZXRjaElkZW50aWZpZXIgPT0g
Yi5mZXRjaElkZW50aWZpZXI7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAorICAgIElQQzo6
Q29ubmVjdGlvbiYgY2xpZW50Q29ubmVjdGlvbigpOwogCi0KLW5hbWVzcGFjZSBXVEYgewotCi1z
dHJ1Y3QgU2VydmljZVdvcmtlckZldGNoVGFza0lkZW50aWZpZXJIYXNoIHsKLSAgICBzdGF0aWMg
dW5zaWduZWQgaGFzaChjb25zdCBXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OklkZW50
aWZpZXImIGtleSkgeyByZXR1cm4ga2V5Lmhhc2goKTsgfQotICAgIHN0YXRpYyBib29sIGVxdWFs
KGNvbnN0IFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6SWRlbnRpZmllciYgYSwgY29u
c3QgV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpJZGVudGlmaWVyJiBiKSB7IHJldHVy
biBhID09IGI7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9y
RGVsZXRlZCA9IHRydWU7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYktp
dDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6SWRlbnRpZmllcj4gOiBHZW5lcmljSGFzaFRyYWl0
czxXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OklkZW50aWZpZXI+IHsKLSAgICBzdGF0
aWMgV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpJZGVudGlmaWVyIGVtcHR5VmFsdWUo
KSB7IHJldHVybiB7IH07IH0KLSAgICAKLSAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVk
VmFsdWUoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpJZGVudGlmaWVyJiBzbG90KSB7
IHNsb3QuY29ubmVjdGlvbklkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxXZWJDb3Jl
OjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyVHlwZT4oc3RkOjpudW1lcmljX2xpbWl0czx1
aW50NjRfdD46Om1heCgpKTsgfQotICAgIAotICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVl
KGNvbnN0IFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6SWRlbnRpZmllciYgc2xvdCkg
eyByZXR1cm4gc2xvdC5jb25uZWN0aW9uSWRlbnRpZmllci50b1VJbnQ2NCgpID09IHN0ZDo6bnVt
ZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKTsgfQotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qg
RGVmYXVsdEhhc2g8V2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpJZGVudGlmaWVyPiB7
Ci0gICAgdXNpbmcgSGFzaCA9IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2tJZGVudGlmaWVySGFzaDsK
KyAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKKyAgICBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXImIG1fbG9hZGVyOworICAgIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciBtX2ZldGNoSWRlbnRp
ZmllcjsKKyAgICBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIG1fc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXI7CisgICAgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIgbV9zZXJ2aWNlV29ya2VySWRlbnRpZmllcjsKKyAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QgbV9jdXJyZW50UmVxdWVzdDsKKyAgICBXZWFrUHRyPFdlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbj4gbV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbjsKIH07CiAKLX0KK30gLy8gbmFtZXNw
YWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCA3Njc0MTQwZjE3NWM0NTcwOGI1MjUx
NWM3YzQ1ZTU4NjZmZjI4ZTI3Li5jMjUwNDM0Y2VkMzkyOGIyZWY4MWFiNGU3NzhmOTg5NTExZWE2
YzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMzMsMTAg
KzMzLDExIEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgot
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VzLmgiCisjaW5jbHVkZSAi
TmV0d29ya1Jlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdl
cy5oIgorI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZGVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJX
ZWJTV0NsaWVudENvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTV1NlcnZlckNvbm5lY3Rp
b25NZXNzYWdlcy5oIgpAQCAtNDUsNiArNDYsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0
aW9uRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NXU2VydmVyUmVnaXN0cmF0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TY2hl
bWVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oPgpAQCAtNTMsNiArNTUsNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlLmg+CiAjaW5jbHVkZSA8
d3RmL0FsZ29yaXRobXMuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUg
PHd0Zi9TY29wZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBQQUw7
CkBAIC0xMjYsMTggKzEyOSw4IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjp1cGRhdGVX
b3JrZXJTdGF0ZUluQ2xpZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHdvCiAgICAgc2VuZChN
ZXNzYWdlczo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpVcGRhdGVXb3JrZXJTdGF0ZSh3b3JrZXIs
IHN0YXRlKSk7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpjYW5jZWxGZXRjaChT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uSWRlbnRpZmllciwgRmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllcikKK3ZvaWQgV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uOjpjYW5jZWxGZXRjaChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllciwgRmV0Y2hJZGVudGlmaWVyKQogewotICAgIFNXU0VSVkVSQ09OTkVDVElPTl9S
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJjYW5jZWxGZXRjaDogJXMiLCBmZXRjaElkZW50aWZpZXIu
bG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIGF1dG8qIHdvcmtlciA9IHNlcnZl
cigpLmFjdGl2ZVdvcmtlckZyb21SZWdpc3RyYXRpb25JRChzZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uSWRlbnRpZmllcik7Ci0gICAgaWYgKCF3b3JrZXIgfHwgIXdvcmtlci0+aXNSdW5uaW5nKCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gc2VydmljZVdvcmtlcklkZW50aWZpZXIgPSB3
b3JrZXItPmlkZW50aWZpZXIoKTsKLSAgICBzZXJ2ZXIoKS5ydW5TZXJ2aWNlV29ya2VySWZOZWNl
c3Nhcnkoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRo
aXMpLCB0aGlzLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyXShhdXRv
KiBjb250ZXh0Q29ubmVjdGlvbikgbXV0YWJsZSB7Ci0gICAgICAgIGlmICh3ZWFrVGhpcyAmJiBj
b250ZXh0Q29ubmVjdGlvbikKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PFdlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbiY+KCpjb250ZXh0Q29ubmVjdGlvbikuY2FuY2VsRmV0Y2godGhpcy0+
aWRlbnRpZmllcigpLCBmZXRjaElkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsK
LSAgICB9KTsKIH0KIAogdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmNvbnRpbnVlRGlkUmVj
ZWl2ZUZldGNoUmVzcG9uc2UoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIEZldGNoSWRlbnRpZmllciBmZXRjaElk
ZW50aWZpZXIpCkBAIC0xNTMsNjIgKzE0Niw5NiBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlv
bjo6Y29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZShTZXJ2aWNlV29ya2VyUmVnaXN0cgog
ICAgIH0pOwogfQogCi12b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaChTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllciwgRmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllciwgUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgRmV0Y2hPcHRpb25zJiYgb3B0aW9ucywgSVBDOjpGb3JtRGF0YVJlZmVy
ZW5jZSYmIGZvcm1EYXRhLCBTdHJpbmcmJiByZWZlcnJlcikKK3N0ZDo6dW5pcXVlX3B0cjxTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrPiBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmNyZWF0ZUZldGNoVGFz
ayhOZXR3b3JrUmVzb3VyY2VMb2FkZXImIGxvYWRlcikKIHsKLSAgICBhdXRvKiB3b3JrZXIgPSBz
ZXJ2ZXIoKS5hY3RpdmVXb3JrZXJGcm9tUmVnaXN0cmF0aW9uSUQoc2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbklkZW50aWZpZXIpOworICAgIGF1dG8gc2NvcGUgPSBtYWtlU2NvcGVFeGl0KFsmbG9h
ZGVyXSB7CisgICAgICAgIGlmIChsb2FkZXIucGFyYW1ldGVycygpLnNlcnZpY2VXb3JrZXJzTW9k
ZSA9PSBTZXJ2aWNlV29ya2Vyc01vZGU6Ok9ubHkpCisgICAgICAgICAgICBsb2FkZXIuY29ubmVj
dGlvblRvV2ViUHJvY2VzcygpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJj
ZUxvYWRlcjo6U2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSB7IH0sIGxvYWRlci5pZGVudGlmaWVy
KCkpOworICAgIH0pOworCisgICAgaWYgKCFsb2FkZXIucGFyYW1ldGVycygpLnNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IGlmIChsb2FkZXIucGFyYW1ldGVycygpLnNlcnZpY2VXb3JrZXJzTW9kZSA9PSBTZXJ2aWNlV29y
a2Vyc01vZGU6Ok5vbmUpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKGlzUG90
ZW50aWFsTmF2aWdhdGlvbk9yU3VicmVzb3VyY2VSZXF1ZXN0KGxvYWRlci5wYXJhbWV0ZXJzKCku
b3B0aW9ucy5kZXN0aW5hdGlvbikpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYg
KCFTY2hlbWVSZWdpc3RyeTo6Y2FuU2VydmljZVdvcmtlcnNIYW5kbGVVUkxTY2hlbWUobG9hZGVy
Lm9yaWdpbmFsUmVxdWVzdCgpLnVybCgpLnByb3RvY29sKCkudG9TdHJpbmdXaXRob3V0Q29weWlu
ZygpKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvKiB3b3JrZXIgPSBzZXJ2
ZXIoKS5hY3RpdmVXb3JrZXJGcm9tUmVnaXN0cmF0aW9uSUQoKmxvYWRlci5wYXJhbWV0ZXJzKCku
c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpOwogICAgIGlmICghd29ya2VyKSB7
Ci0gICAgICAgIFNXU0VSVkVSQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VE
KCJzdGFydEZldGNoOiBmZXRjaElkZW50aWZpZXI6ICVzIC0+IERpZE5vdEhhbmRsZSBiZWNhdXNl
IG5vIGFjdGl2ZSB3b3JrZXIiLCBmZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwotICAgICAgICBtX2NvbnRlbnRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpT
ZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZE5vdEhhbmRsZSB7IH0sIGZldGNoSWRlbnRpZmll
cik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgU1dTRVJWRVJDT05ORUNUSU9OX1JFTEVBU0Vf
TE9HX0VSUk9SX0lGX0FMTE9XRUQoInN0YXJ0RmV0Y2g6IERpZE5vdEhhbmRsZSBiZWNhdXNlIG5v
IGFjdGl2ZSB3b3JrZXIgJXMiLCBsb2FkZXIucGFyYW1ldGVycygpLnNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JZGVudGlmaWVyLT5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBhdXRvIHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyID0gd29ya2VyLT5pZGVudGlmaWVyKCk7CiAKLSAgICBhdXRvIHJ1blNlcnZlcldvcmtlckFu
ZFN0YXJ0RmV0Y2ggPSBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgdGhpcywgZmV0Y2hJ
ZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcmVxdWVzdCA9IFdURk1vdmUocmVx
dWVzdCksIG9wdGlvbnMgPSBXVEZNb3ZlKG9wdGlvbnMpLCBmb3JtRGF0YSA9IFdURk1vdmUoZm9y
bURhdGEpLCByZWZlcnJlciA9IFdURk1vdmUocmVmZXJyZXIpXShib29sIHN1Y2Nlc3MpIG11dGFi
bGUgewotICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgIGlmICh3b3JrZXItPnNob3VsZFNraXBG
ZXRjaEV2ZW50KCkpIHsKKyAgICAgICAgYXV0byogcmVnaXN0cmF0aW9uID0gc2VydmVyKCkuZ2V0
UmVnaXN0cmF0aW9uKHdvcmtlci0+cmVnaXN0cmF0aW9uS2V5KCkpOworICAgICAgICBpZiAocmVn
aXN0cmF0aW9uICYmIHJlZ2lzdHJhdGlvbi0+c2hvdWxkU29mdFVwZGF0ZShsb2FkZXIucGFyYW1l
dGVycygpLm9wdGlvbnMpKQorICAgICAgICAgICAgcmVnaXN0cmF0aW9uLT5zb2Z0VXBkYXRlKCk7
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHNjb3BlLnJlbGVhc2UoKTsK
KworICAgIGF1dG8gdGFzayA9IG1ha2VVbmlxdWU8U2VydmljZVdvcmtlckZldGNoVGFzaz4oc2Vz
c2lvbklEKCksIGxvYWRlciwgaWRlbnRpZmllcigpLCB3b3JrZXItPmlkZW50aWZpZXIoKSk7Cisg
ICAgc3RhcnRGZXRjaCgqdGFzaywgKndvcmtlcik7CisgICAgcmV0dXJuIHRhc2s7Cit9CisKK3Zv
aWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzdGFydEZldGNoKFNlcnZpY2VXb3JrZXJGZXRjaFRh
c2smIHRhc2ssIFNXU2VydmVyV29ya2VyJiB3b3JrZXIpCit7CisgICAgYXV0byBydW5TZXJ2ZXJX
b3JrZXJBbmRTdGFydEZldGNoID0gW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHRoaXMs
IHRhc2sgPSBtYWtlV2Vha1B0cih0YXNrKV0oYm9vbCBzdWNjZXNzKSBtdXRhYmxlIHsKKyAgICAg
ICAgaWYgKCF0YXNrKQogICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAgIGlmICghd2Vha1Ro
aXMpIHsKKyAgICAgICAgICAgIHRhc2stPmRpZE5vdEhhbmRsZSgpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKICAgICAgICAgaWYgKCFzdWNjZXNzKSB7Ci0gICAgICAgICAgICBT
V1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgic3RhcnRGZXRj
aDogZmV0Y2hJZGVudGlmaWVyOiAlcyBEaWROb3RIYW5kbGUgYmVjYXVzZSB3b3JrZXIgZGlkIG5v
dCBiZWNvbWUgYWN0aXZhdGVkIiwgZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKLSAgICAgICAgICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVu
dGlmaWVyKTsKKyAgICAgICAgICAgIFNXU0VSVkVSQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJP
Ul9JRl9BTExPV0VEKCJzdGFydEZldGNoOiBmZXRjaElkZW50aWZpZXI6ICVzIERpZE5vdEhhbmRs
ZSBiZWNhdXNlIHdvcmtlciBkaWQgbm90IGJlY29tZSBhY3RpdmF0ZWQiLCB0YXNrLT5mZXRjaElk
ZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICB0
YXNrLT5kaWROb3RIYW5kbGUoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0g
ICAgICAgIGF1dG8qIHdvcmtlciA9IHNlcnZlcigpLndvcmtlckJ5SUQoc2VydmljZVdvcmtlcklk
ZW50aWZpZXIpOworICAgICAgICBhdXRvKiB3b3JrZXIgPSBzZXJ2ZXIoKS53b3JrZXJCeUlEKHRh
c2stPnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCkpOwogICAgICAgICBpZiAoIXdvcmtlcikgewot
ICAgICAgICAgICAgbV9jb250ZW50Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdv
cmtlckNsaWVudEZldGNoOjpEaWROb3RIYW5kbGUgeyB9LCBmZXRjaElkZW50aWZpZXIpOworICAg
ICAgICAgICAgdGFzay0+ZGlkTm90SGFuZGxlKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAoIXdvcmtlci0+Y29udGV4dENvbm5lY3Rpb24oKSkKICAgICAg
ICAgICAgIHNlcnZlcigpLmNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHdvcmtlci0+cmVnaXN0cmFi
bGVEb21haW4oKSk7CiAKLSAgICAgICAgc2VydmVyKCkucnVuU2VydmljZVdvcmtlcklmTmVjZXNz
YXJ5KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlz
KSwgdGhpcywgZmV0Y2hJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcmVxdWVz
dCA9IFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMgPSBXVEZNb3ZlKG9wdGlvbnMpLCBmb3JtRGF0
YSA9IFdURk1vdmUoZm9ybURhdGEpLCByZWZlcnJlciA9IFdURk1vdmUocmVmZXJyZXIpLCBzaG91
bGRTa2lwRmV0Y2hFdmVudCA9IHdvcmtlci0+c2hvdWxkU2tpcEZldGNoRXZlbnQoKV0oYXV0byog
Y29udGV4dENvbm5lY3Rpb24pIHsKLSAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAg
IHNlcnZlcigpLnJ1blNlcnZpY2VXb3JrZXJJZk5lY2Vzc2FyeSh0YXNrLT5zZXJ2aWNlV29ya2Vy
SWRlbnRpZmllcigpLCBbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgdGhpcywgdGFzayA9
IFdURk1vdmUodGFzayldKGF1dG8qIGNvbnRleHRDb25uZWN0aW9uKSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgIGlmICghdGFzaykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAg
IGlmIChjb250ZXh0Q29ubmVjdGlvbikgewotICAgICAgICAgICAgICAgIFNXU0VSVkVSQ09OTkVD
VElPTl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydEZldGNoOiBTdGFydGluZyBmZXRjaCAl
cyB2aWEgc2VydmljZSB3b3JrZXIgJXMiLCBmZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygp
LnV0ZjgoKS5kYXRhKCksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24mPigqY29udGV4dENvbm5lY3Rpb24pLnN0YXJ0RmV0Y2goc2Vzc2lv
bklEKCksIG1fY29udGVudENvbm5lY3Rpb24uZ2V0KCksIHRoaXMtPmlkZW50aWZpZXIoKSwgZmV0
Y2hJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9ucywg
Zm9ybURhdGEsIHJlZmVycmVyKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgU1dTRVJWRVJDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoInN0YXJ0
RmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMgRGlkTm90SGFuZGxlIGJlY2F1c2UgZmFpbGVkIHRv
IHJ1biBzZXJ2aWNlIHdvcmtlciIsIGZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICAgICAgbV9jb250ZW50Q29ubmVjdGlvbi0+c2VuZChN
ZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWROb3RIYW5kbGUgeyB9LCBmZXRj
aElkZW50aWZpZXIpOworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykgeworICAgICAgICAgICAg
ICAgIHRhc2stPmRpZE5vdEhhbmRsZSgpOworICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFjb250ZXh0Q29ubmVjdGlvbikgeworICAgICAg
ICAgICAgICAgIFNXU0VSVkVSQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VE
KCJzdGFydEZldGNoOiBmZXRjaElkZW50aWZpZXI6ICVzIERpZE5vdEhhbmRsZSBiZWNhdXNlIGZh
aWxlZCB0byBydW4gc2VydmljZSB3b3JrZXIiLCB0YXNrLT5mZXRjaElkZW50aWZpZXIoKS5sb2dn
aW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgdGFzay0+ZGlkTm90
SGFuZGxlKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgU1dTRVJWRVJDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0RmV0
Y2g6IFN0YXJ0aW5nIGZldGNoICVzIHZpYSBzZXJ2aWNlIHdvcmtlciAlcyIsIHRhc2stPmZldGNo
SWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB0YXNrLT5zZXJ2aWNl
V29ya2VySWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAg
ICAgICAgIHN0YXRpY19jYXN0PFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiY+KCpjb250
ZXh0Q29ubmVjdGlvbikuc3RhcnRGZXRjaCgqdGFzayk7CiAgICAgICAgIH0pOwogICAgIH07CiAK
LSAgICBpZiAod29ya2VyLT5zaG91bGRTa2lwRmV0Y2hFdmVudCgpKSB7Ci0gICAgICAgIG1fY29u
dGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6
RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyKTsKLSAgICAgICAgYXV0byogcmVnaXN0
cmF0aW9uID0gc2VydmVyKCkuZ2V0UmVnaXN0cmF0aW9uKHdvcmtlci0+cmVnaXN0cmF0aW9uS2V5
KCkpOwotICAgICAgICBpZiAocmVnaXN0cmF0aW9uICYmIHJlZ2lzdHJhdGlvbi0+c2hvdWxkU29m
dFVwZGF0ZShvcHRpb25zKSkKLSAgICAgICAgICAgIHJlZ2lzdHJhdGlvbi0+c29mdFVwZGF0ZSgp
OworICAgIGlmICh3b3JrZXIuc3RhdGUoKSA9PSBTZXJ2aWNlV29ya2VyU3RhdGU6OkFjdGl2YXRp
bmcpIHsKKyAgICAgICAgd29ya2VyLndoZW5BY3RpdmF0ZWQoV1RGTW92ZShydW5TZXJ2ZXJXb3Jr
ZXJBbmRTdGFydEZldGNoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAod29y
a2VyLT5zdGF0ZSgpID09IFNlcnZpY2VXb3JrZXJTdGF0ZTo6QWN0aXZhdGluZykgewotICAgICAg
ICB3b3JrZXItPndoZW5BY3RpdmF0ZWQoV1RGTW92ZShydW5TZXJ2ZXJXb3JrZXJBbmRTdGFydEZl
dGNoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgQVNTRVJUKHdvcmtlci0+c3RhdGUo
KSA9PSBTZXJ2aWNlV29ya2VyU3RhdGU6OkFjdGl2YXRlZCk7CisgICAgQVNTRVJUKHdvcmtlci5z
dGF0ZSgpID09IFNlcnZpY2VXb3JrZXJTdGF0ZTo6QWN0aXZhdGVkKTsKICAgICBydW5TZXJ2ZXJX
b3JrZXJBbmRTdGFydEZldGNoKHRydWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uLmgKaW5kZXggOGNkNDk1YzFjOTBjNzE3ZDgzZGRmN2IzZjEzZjY1MWRiZWE2ZmQyOC4u
NGI3Y2QwYTQwNWVjZTFlMDdkZWMzNGQwNGVmZjNlMGRiYThlZTNkZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlckNvbm5lY3Rpb24uaApAQCAtNTEsNiArNTEsOCBAQCBzdHJ1Y3QgU2VydmljZVdv
cmtlckNsaWVudERhdGE7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0d29ya1Byb2Nl
c3M7CitjbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2FkZXI7CitjbGFzcyBTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrOwogCiBjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb24gOiBwdWJsaWMgV2ViQ29yZTo6
U1dTZXJ2ZXI6OkNvbm5lY3Rpb24sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6CkBAIC02NSw2ICs2Nyw4IEBAIHB1YmxpYzoK
ICAgICAKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdDsKIAorICAgIHN0ZDo6
dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBjcmVhdGVGZXRjaFRhc2soTmV0d29y
a1Jlc291cmNlTG9hZGVyJik7CisKIHByaXZhdGU6CiAgICAgLy8gSW1wbGVtZW50IFNXU2VydmVy
OjpDb25uZWN0aW9uIChNZXNzYWdlcyB0byB0aGUgY2xpZW50IFdlYlByb2Nlc3MpCiAgICAgdm9p
ZCByZWplY3RKb2JJbkNsaWVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYpIGZpbmFsOwpAQCAtODEsNyArODUsOSBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCBzY2hlZHVsZUpvYkluU2VydmVyKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJKb2JEYXRhJiYpOwogCi0gICAgdm9pZCBzdGFydEZldGNoKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmJiwgSVBDOjpG
b3JtRGF0YVJlZmVyZW5jZSYmLCBTdHJpbmcmJiByZWZlcnJlcik7CisgICAgYm9vbCBoYW5kbGVG
ZXRjaChOZXR3b3JrUmVzb3VyY2VMb2FkZXImKTsKKworICAgIHZvaWQgc3RhcnRGZXRjaChTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrJiwgV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXImKTsKICAgICB2b2lk
IGNhbmNlbEZldGNoKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
LCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIpOwogICAgIHZvaWQgY29udGludWVEaWRSZWNlaXZl
RmV0Y2hSZXNwb25zZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
ciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggYWIyNDY4ZThjZTNjYjVjNmRkZmM4
MjhjZTc1YmZkOGMxZjYyN2VkNy4uM2RhNjRkOTg3NGVjMWQ3ZjdlYjI5ZDRjN2ZkZTU2N2EyZWM1
NDFhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluCkBAIC0yOSwxMCArMjksNiBAQCBtZXNzYWdlcyAtPiBXZWJTV1NlcnZlckNvbm5lY3Rp
b24gewogICAgIEFkZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcihXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIFJlbW92
ZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQogCi0gICAgU3RhcnRGZXRjaChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRp
ZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHN0cnVjdCBXZWJDb3JlOjpG
ZXRjaE9wdGlvbnMgb3B0aW9ucywgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSwg
U3RyaW5nIHJlZmVycmVyKQotICAgIENhbmNlbEZldGNoKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
LCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyKQotICAgIENvbnRpbnVl
RGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bklkZW50aWZpZXIgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6
OkZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIpCi0KICAgICBQb3N0TWVzc2FnZVRvU2Vy
dmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlvbiwg
c3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2UsIFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXIgc291cmNlKQogCiAgICAgRGlkUmVzb2x2
ZVJlZ2lzdHJhdGlvblByb21pc2UoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eSBrZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uY3BwCmluZGV4IGZlM2U2Yzc2M2Q5NTdmMjBkMmYwZWVkYTMxMzc2NmIzMDBhMmJkZTMuLjU3
ODc4NzU2NTM2NjE5MzZhZTE0ZDRlNGZiODI4MmUzZThjYTU4NGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC01MSw5ICs1MSw4
IEBAIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uKE5ldHdvcmtDb25uZWN0aW9uCiAKIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6fldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpCiB7Ci0gICAgYXV0byBmZXRj
aGVzID0gV1RGTW92ZShtX29uZ29pbmdGZXRjaGVzKTsKLSAgICBmb3IgKGF1dG8mIGZldGNoIDog
ZmV0Y2hlcy52YWx1ZXMoKSkKLSAgICAgICAgZmV0Y2gtPmZhaWwoUmVzb3VyY2VFcnJvciB7IGVy
cm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHsgfSwgIlNlcnZpY2UgV29ya2VyIGNvbnRleHQg
Y2xvc2VkIl9zIH0pOworICAgIHdoaWxlICghbV9vbmdvaW5nRmV0Y2hlcy5pc0VtcHR5KCkpCisg
ICAgICAgIG1fb25nb2luZ0ZldGNoZXMuYmVnaW4oKS0+dmFsdWUtPmZhaWwoUmVzb3VyY2VFcnJv
ciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHsgfSwgIlNlcnZpY2UgV29ya2VyIGNv
bnRleHQgY2xvc2VkIl9zIH0pOwogCiAgICAgaWYgKG1fc2VydmVyICYmIG1fc2VydmVyLT5jb250
ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKCkpID09
IHRoaXMpCiAgICAgICAgIG1fc2VydmVyLT5yZW1vdmVDb250ZXh0Q29ubmVjdGlvbigqdGhpcyk7
CkBAIC0xMzksMzcgKzEzOCwxNCBAQCB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bjo6c2V0VGhyb3R0bGVTdGF0ZShib29sIGlzVGhyb3R0bGVhYmxlKQogICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTZXRUaHJvdHRsZVN0YXRlIHsgaXNU
aHJvdHRsZWFibGUgfSk7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
OjpzdGFydEZldGNoKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUmVmPElQQzo6Q29ubmVjdGlv
bj4mJiBjb250ZW50Q29ubmVjdGlvbiwgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgRmV0Y2hJZGVudGlmaWVyIGNvbnRlbnRG
ZXRjaElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEZldGNoT3B0aW9u
cyYgb3B0aW9ucywgY29uc3QgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgU3Ry
aW5nJiByZWZlcnJlcikKK3ZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzdGFy
dEZldGNoKFNlcnZpY2VXb3JrZXJGZXRjaFRhc2smIHRhc2spCiB7Ci0gICAgYXV0byBmZXRjaElk
ZW50aWZpZXIgPSBGZXRjaElkZW50aWZpZXI6OmdlbmVyYXRlKCk7Ci0gICAgCi0gICAgbV9vbmdv
aW5nRmV0Y2hlcy5hZGQoZmV0Y2hJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpj
cmVhdGUoc2Vzc2lvbklELCBXVEZNb3ZlKGNvbnRlbnRDb25uZWN0aW9uKSwgc2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIsIGNvbnRlbnRGZXRjaElkZW50aWZpZXIpKTsKLQotICAgIEFTU0VSVCgh
bV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVycy5jb250YWlucyh7c2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIsIGNvbnRlbnRGZXRjaElkZW50aWZpZXJ9KSk7Ci0gICAgbV9vbmdvaW5nRmV0Y2hJZGVu
dGlmaWVycy5hZGQoe3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb250ZW50RmV0Y2hJZGVu
dGlmaWVyfSwgZmV0Y2hJZGVudGlmaWVyKTsKLQotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTdGFydEZldGNoIHsgc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIsIHJlcXVlc3Qs
IG9wdGlvbnMsIGRhdGEsIHJlZmVycmVyIH0pOworICAgIHRhc2suc3RhcnQoKnRoaXMpOwogfQog
Ci12b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y2FuY2VsRmV0Y2goV2ViQ29y
ZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciwgRmV0Y2hJZGVudGlmaWVyIGNvbnRlbnRGZXRjaElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQordm9pZCBXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246OmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoV2ViQ29yZTo6
U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgRmV0Y2hJZGVudGlmaWVyLCBTZXJ2aWNlV29y
a2VySWRlbnRpZmllcikKIHsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vbmdvaW5nRmV0Y2hJZGVu
dGlmaWVycy5maW5kKHsgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnRlbnRGZXRjaElk
ZW50aWZpZXIgfSk7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb25nb2luZ0ZldGNoSWRlbnRpZmll
cnMuZW5kKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjpDYW5jZWxGZXRjaCB7IHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgaXRlcmF0b3ItPnZhbHVlIH0pOwotCi0g
ICAgbV9vbmdvaW5nRmV0Y2hlcy5yZW1vdmUoaXRlcmF0b3ItPnZhbHVlKTsKLSAgICBtX29uZ29p
bmdGZXRjaElkZW50aWZpZXJzLnJlbW92ZShpdGVyYXRvcik7Ci19Ci0KLXZvaWQgV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKFdl
YkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIsIEZldGNoSWRlbnRpZmllciBjb250ZW50RmV0Y2hJZGVudGlmaWVyLCBTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKLXsKLSAgICBhdXRvIGl0ZXJh
dG9yID0gbV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVycy5maW5kKHsgc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIsIGNvbnRlbnRGZXRjaElkZW50aWZpZXIgfSk7Ci0gICAgaWYgKGl0ZXJhdG9yID09
IG1fb25nb2luZ0ZldGNoSWRlbnRpZmllcnMuZW5kKCkpCi0gICAgICAgIHJldHVybjsKLSAgICAK
LSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Q29udGlu
dWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSB7IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgaXRlcmF0b3ItPnZhbHVlIH0pOworICAgIC8vIEZJWE1F
OiBUbyBiZSBkb25lIHRocm91Z2ggTmV0d29ya1Jlc291cmNlTG9hZGVyCiB9CiAKIHZvaWQgV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpkaWRSZWNlaXZlRmV0Y2hUYXNrTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKQEAgLTE3
NywxOSArMTUzLDI1IEBAIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpkaWRS
ZWNlaXZlRmV0Y2hUYXNrTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mCiAgICAgYXV0byBpdGVyYXRv
ciA9IG1fb25nb2luZ0ZldGNoZXMuZmluZChtYWtlT2JqZWN0SWRlbnRpZmllcjxGZXRjaElkZW50
aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpOwogICAgIGlmIChpdGVyYXRvciA9
PSBtX29uZ29pbmdGZXRjaGVzLmVuZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgYm9v
bCBzaG91bGRSZW1vdmUgPSBkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OkRpZEZhaWw6Om5hbWUoKQotICAgICAgICB8fCBkZWNvZGVyLm1l
c3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZE5vdEhh
bmRsZTo6bmFtZSgpCi0gICAgICAgIHx8IGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdl
czo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkRmluaXNoOjpuYW1lKCkKLSAgICAgICAgfHwg
ZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
OjpEaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZTo6bmFtZSgpOwogCiAgICAgaXRlcmF0b3ItPnZh
bHVlLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKK30KKworSVBDOjpD
b25uZWN0aW9uJiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmlwY0Nvbm5lY3Rpb24o
KQoreworICAgIHJldHVybiBtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpOworfQogCi0gICAgaWYg
KHNob3VsZFJlbW92ZSkgewotICAgICAgICBBU1NFUlQobV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVy
cy5jb250YWlucyhpdGVyYXRvci0+dmFsdWUtPmlkZW50aWZpZXIoKSkpOwotICAgICAgICBtX29u
Z29pbmdGZXRjaElkZW50aWZpZXJzLnJlbW92ZShpdGVyYXRvci0+dmFsdWUtPmlkZW50aWZpZXIo
KSk7Ci0gICAgICAgIG1fb25nb2luZ0ZldGNoZXMucmVtb3ZlKGl0ZXJhdG9yKTsKLSAgICB9Cit2
b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6cmVnaXN0ZXJGZXRjaChTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrJiB0YXNrKQoreworICAgIEFTU0VSVCghbV9vbmdvaW5nRmV0Y2hlcy5j
b250YWlucyh0YXNrLmZldGNoSWRlbnRpZmllcigpKSk7CisgICAgbV9vbmdvaW5nRmV0Y2hlcy5h
ZGQodGFzay5mZXRjaElkZW50aWZpZXIoKSwgbWFrZVdlYWtQdHIodGFzaykpOworfQorCit2b2lk
IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6dW5yZWdpc3RlckZldGNoKFNlcnZpY2VX
b3JrZXJGZXRjaFRhc2smIHRhc2spCit7CisgICAgQVNTRVJUKG1fb25nb2luZ0ZldGNoZXMuY29u
dGFpbnModGFzay5mZXRjaElkZW50aWZpZXIoKSkpOworICAgIG1fb25nb2luZ0ZldGNoZXMucmVt
b3ZlKHRhc2suZmV0Y2hJZGVudGlmaWVyKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRl
eCBiYWQwYzYwNDE4M2E5ZjUyNGExYWQ4YTcwYTYwZjQ3N2JiMmYxNTc5Li5mZTczYjVlMDQxMzFm
ZDIxNmVjM2NhMzUyOGM4M2Q4OWFlOTBkNmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC01MSw3ICs1MSw3IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBjbGFzcyBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKIAotY2xhc3Mg
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIDogcHVibGljIFdlYkNvcmU6OlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbiwgcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyIHsKK2NsYXNzIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
biA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+
LCBwdWJsaWMgV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLCBwdWJsaWMgSVBD
OjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgog
ICAgIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFdlYkNvcmU6OlNXU2VydmVy
Jik7CiAgICAgfldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpOwpAQCAtNTksOCArNTks
NyBAQCBwdWJsaWM6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCi0g
ICAgdm9pZCBzdGFydEZldGNoKFBBTDo6U2Vzc2lvbklELCBSZWY8SVBDOjpDb25uZWN0aW9uPiYm
LCBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElk
ZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmLCBjb25zdCBJ
UEM6OkZvcm1EYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBjYW5jZWxG
ZXRjaChXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRj
aElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKyAgICB2b2lk
IHN0YXJ0RmV0Y2goU2VydmljZVdvcmtlckZldGNoVGFzayYpOwogICAgIHZvaWQgY29udGludWVE
aWRSZWNlaXZlRmV0Y2hSZXNwb25zZShXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZUZldGNoVGFza01lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CkBAIC02OCw2ICs2NywxMSBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRUaHJvdHRsZVN0YXRlKGJvb2wgaXNUaHJvdHRsZWFibGUpOwogICAgIGJvb2wgaXNU
aHJvdHRsZWFibGUoKSBjb25zdCB7IHJldHVybiBtX2lzVGhyb3R0bGVhYmxlOyB9CiAKKyAgICBJ
UEM6OkNvbm5lY3Rpb24mIGlwY0Nvbm5lY3Rpb24oKTsKKworICAgIHZvaWQgcmVnaXN0ZXJGZXRj
aChTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrJik7CisgICAgdm9pZCB1bnJlZ2lzdGVyRmV0Y2goU2Vy
dmljZVdvcmtlckZldGNoVGFzayYpOworCiBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVNl
bmRlcgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25z
dCBmaW5hbDsKQEAgLTk0LDggKzk4LDcgQEAgcHJpdmF0ZToKICAgICBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgbV9jb25uZWN0aW9uOwogICAgIFdlYWtQdHI8V2ViQ29yZTo6U1dTZXJ2
ZXI+IG1fc2VydmVyOwogCi0gICAgSGFzaE1hcDxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpJZGVu
dGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXI+IG1fb25nb2luZ0ZldGNoSWRlbnRpZmll
cnM7Ci0gICAgSGFzaE1hcDxXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIsIFJlZjxTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrPj4gbV9vbmdvaW5nRmV0Y2hlczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OkZl
dGNoSWRlbnRpZmllciwgV2Vha1B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPj4gbV9vbmdvaW5n
RmV0Y2hlczsKICAgICBib29sIG1faXNUaHJvdHRsZWFibGUgeyB0cnVlIH07CiB9OyAvLyBjbGFz
cyBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggZmE1MjYx
ZjU0YzU1MTA2NGE0YjcyMGRjYjM5OGYyYjUxNzIyOWI5ZC4uNzY3ZTQ4YTdkMDA2MWZiMmQ4M2I2
ZDlkMTdjMjAyNTIwMzIxZWFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4
dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC01MjQsNyArNTI0LDYgQEAgV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcCBAbm8tdW5p
ZnkKIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAgQG5vLXVu
aWZ5CiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3Bw
IEBuby11bmlmeQogCi1XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZldGNo
LmNwcAogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKIFdlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKIFdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV09yaWdpblRhYmxlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGY2N2Q0Y2VmOTNlNWFhNzJlMTM4NjFkYjMxZmVjZGI4
ZTliMGUwOTIuLjdmY2FmMmExOGUxMjc0ODQxY2E3ZGQyNjY4ZDlmZWVjY2M2YTk4M2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTE2MTUsOCArMTYx
NSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVyVVJMU2NoZW1lU2VydmljZVdvcmtl
cnNDYW5IYW5kbGUoY29uc3QgU3RyaW5nJiB1cmxTCiB7CiAgICAgbV9zY2hlbWVzU2VydmljZVdv
cmtlcnNDYW5IYW5kbGUuYWRkKHVybFNjaGVtZSk7CiAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1l
c3NhZ2VzOjpBdXhpbGlhcnlQcm9jZXNzOjpSZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJz
Q2FuSGFuZGxlKHVybFNjaGVtZSkpOwotICAgIGlmIChtX25ldHdvcmtQcm9jZXNzKQotICAgICAg
ICBtX25ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpBdXhpbGlhcnlQcm9jZXNzOjpSZWdp
c3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlKHVybFNjaGVtZSksIDApOworICAg
IHNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpBdXhpbGlhcnlQcm9jZXNzOjpSZWdp
c3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlKHVybFNjaGVtZSkpOwogfQogCiB2
b2lkIFdlYlByb2Nlc3NQb29sOjpyZWdpc3RlclVSTFNjaGVtZUFzQ2FuRGlzcGxheU9ubHlJZkNh
blJlcXVlc3QoY29uc3QgU3RyaW5nJiB1cmxTY2hlbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwNDJjYmIwODlkYmUyNjU5MzBlNTBk
YmM0NjMyNTEwY2UxOGQyZmZhLi5jYmI5YWI2NjBhOTZjMjg0NTlkODczMjllNjNmZWQxNzhiNThh
ZGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTExMzgsNyArMTEzOCw2IEBACiAJCTVDRTkxMjEyMjI5M0MyNzgwMDVCRUM3OCAvKiBB
dXhpbGlhcnlQcm9jZXNzTWFpbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1Q0U5MTIwRjIyOTNDMjVGMDA1QkVDNzggLyogQXV4aWxpYXJ5UHJvY2Vz
c01haW4uY3BwICovOyB9OwogCQk1Q0U5MTIxMzIyOTNDMjc5MDA1QkVDNzggLyogQXV4aWxpYXJ5
UHJvY2Vzc01haW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUNFOTEyMEYyMjkzQzI1RjAwNUJFQzc4IC8qIEF1eGlsaWFyeVByb2Nlc3NNYWluLmNw
cCAqLzsgfTsKIAkJNUNFOTEyMTQyMjkzQzI4MDAwNUJFQzc4IC8qIFdLTWFpbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNFOTEyMEIyMjkzQzFFMDAw
NUJFQzc4IC8qIFdLTWFpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCTYxN0E1MkQ4MUY0M0E5REEwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyQ2xp
ZW50RmV0Y2hNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNjE3QTUyRDcxRjQzQTlCNjAwRENEQzBBIC8qIFNlcnZpY2VXb3Jr
ZXJDbGllbnRGZXRjaE1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTYzMTA4Rjk2MUY5Njcx
OUMwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MzEwOEY5NDFGOTY3MTlDMDBBMERCODQgLyog
X1dLQXBwbGljYXRpb25NYW5pZmVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTYzMTA4Rjk5MUY5NjcxRjcwMEEwREI4NCAvKiBfV0tBcHBsaWNh
dGlvbk1hbmlmZXN0SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDYzMTA4Rjk4MUY5NjcxRjcwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1h
bmlmZXN0SW50ZXJuYWwuaCAqLzsgfTsKIAkJNjM0ODQyNTExRkIyNkU3MTAwOTQ2RTNDIC8qIEFQ
SUFwcGxpY2F0aW9uTWFuaWZlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDYzNDg0MjRGMUZCMjZFNzEwMDk0NkUzQyAvKiBBUElBcHBsaWNhdGlvbk1h
bmlmZXN0LmggKi87IH07CkBAIC0zMTI1LDkgKzMxMjQsNiBAQAogCQk0MTMwNzVBNjFERTg1RUU3
MDAzOUVDNjkgLyogTGliV2ViUlRDU29ja2V0RmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBMaWJXZWJSVENTb2NrZXRGYWN0b3J5Lmg7IHBhdGggPSBOZXR3b3JrL3dl
YnJ0Yy9MaWJXZWJSVENTb2NrZXRGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxMzA3NUE3MURFODVFRTcwMDM5RUM2OSAvKiBMaWJXZWJSVENQcm92aWRlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IGxpbmVFbmRpbmcgPSAwOyBuYW1lID0gTGliV2Vi
UlRDUHJvdmlkZXIuY3BwOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50
aWZpZXIgPSB4Y29kZS5sYW5nLmNwcDsgfTsKIAkJNDEzMDc1QTgxREU4NUVFNzAwMzlFQzY5IC8q
IExpYldlYlJUQ1Byb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbGluZUVuZGlu
ZyA9IDA7IG5hbWUgPSBMaWJXZWJSVENQcm92aWRlci5oOyBwYXRoID0gTmV0d29yay93ZWJydGMv
TGliV2ViUlRDUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNw
ZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFuZy5vYmpjcHA7IH07Ci0JCTQxMzFGM0NF
MUY5NkE0OTUwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZVdvcmtlckNsaWVudEZldGNoLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxMzFGM0NGMUY5NkE5MzYwMDU5OTk1QSAvKiBTZXJ2
aWNlV29ya2VyQ2xpZW50RmV0Y2gubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
U2VydmljZVdvcmtlckNsaWVudEZldGNoLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk0MTMxRjNEMDFGOTZCQ0M4MDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNsaWVu
dEZldGNoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcnZpY2VX
b3JrZXJDbGllbnRGZXRjaC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzFG
M0UwMUY5ODcxMkMwMDU5OTk1QSAvKiBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2tDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTM1RkJD
RjFGNEZCN0YyMDA3NEM0N0IgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzVGQkQwMUY0RkI3RjIwMDc0QzQ3
QiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0zNjk2LDcgKzM2OTIsNiBAQAogCQk1Q0VBQkEyQjIzMzMyNTE0MDA3OTc3OTcg
LyogTGVnYWN5R2xvYmFsU2V0dGluZ3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTGVnYWN5R2xvYmFsU2V0dGluZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1Q0ZFQ0IwMzFFMUVEMUM4MDBGODg1MDQgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExlZ2FjeUN1
c3RvbVByb3RvY29sTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVE
QUQ3M0YxMTE2RkY5MEMwMEVFNTM5NiAvKiBCYXNlVGFyZ2V0LnhjY29uZmlnICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC54Y2NvbmZpZzsgcGF0aCA9IEJhc2VUYXJnZXQueGNjb25maWc7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTYxN0E1MkQ3MUY0M0E5QjYwMERDREMwQSAvKiBTZXJ2aWNlV29ya2Vy
Q2xpZW50RmV0Y2hNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZVJlY2VpdmVyLmNwcDsg
cGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVz
c2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJ
NjMxMDhGOTQxRjk2NzE5QzAwQTBEQjg0IC8qIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gX1dLQXBwbGljYXRpb25NYW5pZmVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk2MzEwOEY5NTFGOTY3MTlDMDBBMERCODQgLyogX1dLQXBwbGljYXRpb25NYW5p
ZmVzdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTYzMTA4Rjk4MUY5NjcxRjcwMEEwREI4NCAv
KiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLQXBw
bGljYXRpb25NYW5pZmVzdEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC02ODIyLDkgKzY4MTcsNiBAQAogCQk1MTE4RTk5ODFGMjk1MjU5MDAzRUY5RjUgLyogU3RvcmFn
ZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJNDEzMUYz
RDAxRjk2QkNDODAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5jcHAgKi8sCi0J
CQkJNDEzMUYzQ0UxRjk2QTQ5NTAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5o
ICovLAotCQkJCTQxMzFGM0NGMUY5NkE5MzYwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50
RmV0Y2gubWVzc2FnZXMuaW4gKi8sCiAJCQkJNDEzMUYzRTAxRjk4NzEyQzAwNTk5OTVBIC8qIFdl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwICovLAogCQkJCTQxOUFDRjlCMUY5ODFE
MjYwMDlGMUE4MyAvKiBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmggKi8sCiAJCQkJ
NTFCRUI2MjkxRjNBNUFDRDAwNTAyOUI5IC8qIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAg
Ki8sCkBAIC04ODUyLDcgKzg4NDQsNiBAQAogCQkJCTFCQkJFNDlFMTlCNjZDNTMwMDZCN0Q4MSAv
KiBSZW1vdGVXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJRTE4RTY5
MTMxNjlCNjY3QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovLAogCQkJCUUxOEU2OTE0MTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5TWVz
c2FnZXMuaCAqLywKLQkJCQk2MTdBNTJENzFGNDNBOUI2MDBEQ0RDMEEgLyogU2VydmljZVdvcmtl
ckNsaWVudEZldGNoTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkyREU2OTQzQjE4QkQyQTY4
MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5j
cHAgKi8sCiAJCQkJMkRFNjk0M0MxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlv
bkNvbnRyb2xsZXJNZXNzYWdlcy5oICovLAogCQkJCTFBMzM0REVCMTZERThGODgwMDZBOEUzOCAv
KiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCkBAIC0xMTI4Niw3ICsxMTI3
Nyw2IEBACiAJCQkJQTU1QkE4MjYxQkEyNUNGRDAwN0NEMzNEIC8qIFJlbW90ZVdlYkluc3BlY3Rv
clByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFCQkJFNEEwMTlC
NjZDNTMwMDZCN0Q4MSAvKiBSZW1vdGVXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlFMThFNjkxNzE2OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRlbVNo
aW1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk2MTdBNTJEODFG
NDNBOURBMDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxREU3QzZDMjIyNzhGMUUwMDUzMkI2NSAvKiBTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzg3MjEyQjZB
QjEwMEY0OTNGRCAvKiBTaGFyZWFibGVCaXRtYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRF
Njk0M0QxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApp
bmRleCAyZjIxZjVlNTE5MTBlYjk4NTI4YzhkZDQ2NDRmZTUzMjlmYTQxZDAxLi5mYzE0ZjgwNWZh
OTRiOGRhMWQxMjBmOGEzMjdhNDg4MzRkN2UyZTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5j
cHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVk
ZSAiTGliV2ViUlRDTmV0d29yay5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhTWFwLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFy
ZWFNYXBNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgiCkBA
IC0xNDEsMTAgKzE0MCw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQCiAgICAgICAgICAgICBt
X3N3Q29ubmVjdGlvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFt
ZSgpID09IE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSkgewotICAgICAgICBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigp
LmRpZFJlY2VpdmVTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlKGNvbm5lY3Rpb24sIGRl
Y29kZXIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewogICAgICAgICBBU1NFUlQoU1dDb250ZXh0TWFuYWdl
cjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKTsKICAgICAgICAgaWYgKGF1dG8qIGNvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbiA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rp
b24oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxv
YWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxv
YWRlclN0cmF0ZWd5LmNwcAppbmRleCAwZTUyZWEyMTgyMWI0YjkyM2ZlYWE3MDhhOWVhYWY1YzRl
NmZkMGZmLi4yNmYyYmQyODE3YTJkMjQ3NmUyMGQ0NDBjODRjNmVhZjllOTQyN2YwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRl
Z3kuY3BwCkBAIC0yMTUsNDEgKzIxNSwyMCBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hl
ZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKCEhcmVzb3VyY2VMb2Fk
ZXIub3B0aW9ucygpLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKQotICAgICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIHNjaGVk
dWxlZCB0aHJvdWdoIFNlcnZpY2VXb3JrZXIgb3IgTmV0d29yayBQcm9jZXNzIChmcmFtZSA9ICVw
LCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0
ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRC50b1VJbnQ2
NCgpLCBpZGVudGlmaWVyKTsKKyAgICBhdXRvIHVybCA9IHJlc291cmNlTG9hZGVyLnJlcXVlc3Qo
KS51cmwoKTsKKyAgICBhdXRvKiBkYXRhID0gdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCk7Cisg
ICAgaWYgKGRhdGEpCisgICAgICAgIHVybC5zdHJpbmcoKTsKIAotICAgIFdlYlNlcnZpY2VXb3Jr
ZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuaGFuZGxlRmV0Y2gocmVzb3VyY2VMb2FkZXIsIHNob3Vs
ZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFt0aGlzLCB0cmFja2luZ1BhcmFt
ZXRlcnMsIGlkZW50aWZpZXIsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJl
Y3QsIG1heGltdW1CdWZmZXJpbmdUaW1lID0gbWF4aW11bUJ1ZmZlcmluZ1RpbWUocmVzb3VyY2Up
LCByZXNvdXJjZUxvYWRlciA9IG1ha2VSZWYocmVzb3VyY2VMb2FkZXIpXSAoU2VydmljZVdvcmtl
ckNsaWVudEZldGNoOjpSZXN1bHQgcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKHJlc3Vs
dCAhPSBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OlJlc3VsdDo6VW5oYW5kbGVkKSB7Ci0gICAg
ICAgICAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2ViTG9hZGVyU3Ry
YXRlZ3k6OnNjaGVkdWxlTG9hZCwgdXJsICclcycgd2lsbCBiZSBzY2hlZHVsZWQgdGhyb3VnaCBT
ZXJ2aWNlV29ya2VyIGhhbmRsZSBmZXRjaCBhbGdvcml0aG0iLCByZXNvdXJjZUxvYWRlci0+dXJs
KCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgc2NoZWR1bGVkIHRocm91Z2ggU2Vy
dmljZVdvcmtlciBoYW5kbGUgZmV0Y2ggYWxnb3JpdGhtIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0
ICIpIiwgcmVzb3VyY2VMb2FkZXItPmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQu
dG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQudG9VSW50NjQoKSwgaWRlbnRp
Zmllcik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHJlc291
cmNlTG9hZGVyLT5vcHRpb25zKCkuc2VydmljZVdvcmtlcnNNb2RlID09IFNlcnZpY2VXb3JrZXJz
TW9kZTo6T25seSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgi
c2NoZWR1bGVMb2FkOiB1bmFibGUgdG8gc2NoZWR1bGUgVVJMIHRocm91Z2ggU2VydmljZVdvcmtl
ciBoYW5kbGUgZmV0Y2ggYWxnb3JpdGhtIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVz
b3VyY2VMb2FkZXItPmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQo
KSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQudG9VSW50NjQoKSwgaWRlbnRpZmllcik7Ci0g
ICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtyZXNvdXJjZUxvYWRlciA9IFdURk1vdmUocmVz
b3VyY2VMb2FkZXIpXSB7Ci0gICAgICAgICAgICAgICAgYXV0byBlcnJvciA9IGludGVybmFsRXJy
b3IocmVzb3VyY2VMb2FkZXItPnJlcXVlc3QoKS51cmwoKSk7Ci0gICAgICAgICAgICAgICAgZXJy
b3Iuc2V0VHlwZShSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRpb24pOwotICAgICAgICAg
ICAgICAgIHJlc291cmNlTG9hZGVyLT5kaWRGYWlsKGVycm9yKTsKLSAgICAgICAgICAgIH0pOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS53ZWJMb2FkZXJTdHJhdGVneSgpLnRyeUxvYWRpbmdVc2luZ1VSTFNjaGVt
ZUhhbmRsZXIocmVzb3VyY2VMb2FkZXIpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIHNjaGVkdWxlZCB3aXRoIHRoZSBOZXR3
b3JrUHJvY2VzcyAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAl
IiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLT5m
cmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFy
YW1ldGVycy5mcmFtZUlELnRvVUludDY0KCksIGlkZW50aWZpZXIpOwotICAgICAgICAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkud2ViTG9hZGVyU3RyYXRlZ3koKS5zY2hlZHVsZUxvYWRGcm9t
TmV0d29ya1Byb2Nlc3MocmVzb3VyY2VMb2FkZXIuZ2V0KCksIHJlc291cmNlTG9hZGVyLT5yZXF1
ZXN0KCksIHRyYWNraW5nUGFyYW1ldGVycywgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hU
VFBSZWRpcmVjdCwgbWF4aW11bUJ1ZmZlcmluZ1RpbWUpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0KLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic2NoZWR1bGVMb2Fk
OiBVUkwgbm90IGhhbmRsZWQgYnkgYW55IGhhbmRsZXJzIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0
ICIpIiwgcmVzb3VyY2VMb2FkZXItPmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQu
dG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQudG9VSW50NjQoKSwgaWRlbnRp
Zmllcik7Ci0gICAgfSk7CisgICAgaWYgKChyZXNvdXJjZUxvYWRlci5vcHRpb25zKCkuc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgJiYgcmVzb3VyY2VMb2FkZXIub3B0aW9ucygp
LnNlcnZpY2VXb3JrZXJzTW9kZSAhPSBTZXJ2aWNlV29ya2Vyc01vZGU6Ok5vbmUpIHx8ICF0cnlM
b2FkaW5nVXNpbmdVUkxTY2hlbWVIYW5kbGVyKHJlc291cmNlTG9hZGVyKSkgewogI2Vsc2UKICAg
ICBpZiAoIXRyeUxvYWRpbmdVc2luZ1VSTFNjaGVtZUhhbmRsZXIocmVzb3VyY2VMb2FkZXIpKSB7
CisjZW5kaWYKICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic2NoZWR1bGVMb2FkOiBV
Ukwgd2lsbCBiZSBzY2hlZHVsZWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgKGZyYW1lID0gJXAs
IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRl
cnMucGFnZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELnRvVUludDY0
KCksIGlkZW50aWZpZXIpOwogICAgICAgICBzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3Mo
cmVzb3VyY2VMb2FkZXIsIHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKSwgdHJhY2tpbmdQYXJhbWV0
ZXJzLCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBtYXhpbXVtQnVm
ZmVyaW5nVGltZShyZXNvdXJjZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoInNjaGVkdWxlTG9hZDogVVJMIG5vdCBoYW5kbGVkIGJ5IGFueSBo
YW5kbGVycyAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1l
KCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0
ZXJzLmZyYW1lSUQudG9VSW50NjQoKSwgaWRlbnRpZmllcik7Ci0jZW5kaWYKIH0KIAogYm9vbCBX
ZWJMb2FkZXJTdHJhdGVneTo6dHJ5TG9hZGluZ1VzaW5nVVJMU2NoZW1lSGFuZGxlcihSZXNvdXJj
ZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIpCkBAIC0yNzEsNiArMjUwLDEwIEBAIGJvb2wgV2ViTG9h
ZGVyU3RyYXRlZ3k6OnRyeUxvYWRpbmdVc2luZ1VSTFNjaGVtZUhhbmRsZXIoUmVzb3VyY2VMb2Fk
ZXImIHJlc291cmNlCiAKIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZyb21O
ZXR3b3JrUHJvY2VzcyhSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViUmVzb3VyY2VMb2FkZXI6OlRyYWNraW5nUGFy
YW1ldGVycyYgdHJhY2tpbmdQYXJhbWV0ZXJzLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhU
VFBTVG9IVFRQUmVkaXJlY3QsIFNlY29uZHMgbWF4aW11bUJ1ZmZlcmluZ1RpbWUpCiB7CisgICAg
YXV0byogd2ViRnJhbWVMb2FkZXJDbGllbnQgPSB0b1dlYkZyYW1lTG9hZGVyQ2xpZW50KHJlc291
cmNlTG9hZGVyLmZyYW1lTG9hZGVyKCktPmNsaWVudCgpKTsKKyAgICBhdXRvKiB3ZWJGcmFtZSA9
IHdlYkZyYW1lTG9hZGVyQ2xpZW50ID8gd2ViRnJhbWVMb2FkZXJDbGllbnQtPndlYkZyYW1lKCkg
OiBudWxscHRyOworICAgIGF1dG8qIHdlYlBhZ2UgPSB3ZWJGcmFtZSA/IHdlYkZyYW1lLT5wYWdl
KCkgOiBudWxscHRyOworCiAgICAgUmVzb3VyY2VMb2FkSWRlbnRpZmllciBpZGVudGlmaWVyID0g
cmVzb3VyY2VMb2FkZXIuaWRlbnRpZmllcigpOwogICAgIEFTU0VSVChpZGVudGlmaWVyKTsKIApA
QCAtMjk5LDYgKzI4MiwxNyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRG
cm9tTmV0d29ya1Byb2Nlc3MoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTAogICAgIGxvYWRQYXJh
bWV0ZXJzLnByZWZsaWdodFBvbGljeSA9IHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5wcmVmbGln
aHRQb2xpY3k7CiAgICAgbG9hZFBhcmFtZXRlcnMuaXNIVFRQU1VwZ3JhZGVFbmFibGVkID0gcmVz
b3VyY2VMb2FkZXIuZnJhbWUoKSA/IHJlc291cmNlTG9hZGVyLmZyYW1lKCktPnNldHRpbmdzKCku
SFRUUFNVcGdyYWRlRW5hYmxlZCgpIDogZmFsc2U7CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCisgICAgLy8gSW4gY2FzZSBvZiBVUkwgc2NoZW1lIGhhbmRsZXIsIHdlIHdpbGwgdHJ5IHRv
IGxvYWQgb24gc2VydmljZSB3b3JrZXJzIGFuZCBpZiB1bmhhbmRsZWQsIGZhbGxiYWNrIHRvIFVS
TCBzY2hlbWUgaGFuZGxlci4KKyAgICBpZiAocmVzb3VyY2VMb2FkZXIub3B0aW9ucygpLnNlcnZp
Y2VXb3JrZXJzTW9kZSA9PSBTZXJ2aWNlV29ya2Vyc01vZGU6OkFsbCAmJiB3ZWJQYWdlICYmICB3
ZWJQYWdlLT51cmxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKHJlc291cmNlTG9hZGVyLnJlcXVlc3Qo
KS51cmwoKS5wcm90b2NvbCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkpCisgICAgICAgIGxv
YWRQYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJzTW9kZSA9IFNlcnZpY2VXb3JrZXJzTW9kZTo6T25s
eTsKKyAgICBlbHNlCisgICAgICAgIGxvYWRQYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJzTW9kZSA9
IHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5zZXJ2aWNlV29ya2Vyc01vZGU7CisKKyAgICBsb2Fk
UGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciA9IHJlc291cmNl
TG9hZGVyLm9wdGlvbnMoKS5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcjsKKyAg
ICBsb2FkUGFyYW1ldGVycy5odHRwSGVhZGVyc1RvS2VlcCA9IHJlc291cmNlTG9hZGVyLm9wdGlv
bnMoKS5odHRwSGVhZGVyc1RvS2VlcDsKKyNlbmRpZgorCiAgICAgYXV0byogZG9jdW1lbnQgPSBy
ZXNvdXJjZUxvYWRlci5mcmFtZSgpID8gcmVzb3VyY2VMb2FkZXIuZnJhbWUoKS0+ZG9jdW1lbnQo
KSA6IG51bGxwdHI7CiAgICAgaWYgKHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5jc3BSZXNwb25z
ZUhlYWRlcnMpCiAgICAgICAgIGxvYWRQYXJhbWV0ZXJzLmNzcFJlc3BvbnNlSGVhZGVycyA9IHJl
c291cmNlTG9hZGVyLm9wdGlvbnMoKS5jc3BSZXNwb25zZUhlYWRlcnM7CkBAIC00MzUsMTEgKzQy
OSw2IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnJlbW92ZShSZXNvdXJjZUxvYWRlciogcmVz
b3VyY2VMb2FkZXIpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCi0gICAgaWYgKFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCku
Y2FuY2VsRmV0Y2gobWFrZU9iamVjdElkZW50aWZpZXI8RmV0Y2hJZGVudGlmaWVyVHlwZT4oaWRl
bnRpZmllcikpKQotICAgICAgICByZXR1cm47Ci0jZW5kaWYKLQogICAgIFJlZlB0cjxXZWJSZXNv
dXJjZUxvYWRlcj4gbG9hZGVyID0gbV93ZWJSZXNvdXJjZUxvYWRlcnMudGFrZShpZGVudGlmaWVy
KTsKICAgICAvLyBMb2FkZXIgbWF5IG5vdCBiZSByZWdpc3RlcmVkIGlmIHdlIGNyZWF0ZWQgaXQs
IGJ1dCBoYXZlbid0IHNjaGVkdWxlZCB5ZXQgKGEgYnVuZGxlIGNsaWVudCBjYW4gZGVjaWRlIHRv
IGNhbmNlbCBzdWNoIHJlcXVlc3QgdmlhIHdpbGxTZW5kUmVxdWVzdCkuCiAgICAgaWYgKCFsb2Fk
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5jcHAKaW5kZXggYTM5MjQxYWNhMzBmZTc5NjgxMTAyNzQzMjAxN2NhNDQ5YmZi
MWYyZi4uODAxMWNjYjg5MmIzYWM3ZTg3ODZjN2FkZmY4ZjBkM2IxZWI4YzI1MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmNwcApAQCAtMjE4LDYgKzIxOCw0NyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRGaW5p
c2hSZXNvdXJjZUxvYWQoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTAogICAgIG1f
Y29yZUxvYWRlci0+ZGlkRmluaXNoTG9hZGluZyhuZXR3b3JrTG9hZE1ldHJpY3MpOwogfQogCit2
b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRGYWlsU2VydmljZVdvcmtlckxvYWQoY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IpCit7CisgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gbV9jb3JlTG9h
ZGVyLT5mcmFtZSgpID8gbV9jb3JlTG9hZGVyLT5mcmFtZSgpLT5kb2N1bWVudCgpIDogbnVsbHB0
cikgeworICAgICAgICBpZiAobV9jb3JlTG9hZGVyLT5vcHRpb25zKCkuZGVzdGluYXRpb24gIT0g
RmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6RW1wdHlTdHJpbmcgfHwgZXJyb3IuaXNHZW5lcmFs
KCkpCisgICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkp
OworICAgICAgICBpZiAobV9jb3JlTG9hZGVyLT5vcHRpb25zKCkuZGVzdGluYXRpb24gIT0gRmV0
Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6RW1wdHlTdHJpbmcpCisgICAgICAgICAgICBkb2N1bWVu
dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJy
b3IsIG1ha2VTdHJpbmcoIkNhbm5vdCBsb2FkICIsIGVycm9yLmZhaWxpbmdVUkwoKS5zdHJpbmco
KSwgIi4iKSk7CisgICAgfQorCisgICAgZGlkRmFpbFJlc291cmNlTG9hZChlcnJvcik7Cit9CisK
K3ZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OnNlcnZpY2VXb3JrZXJEaWROb3RIYW5kbGUoKQorewor
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJz
ZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELnRv
VUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOworCisgICAgaWYgKG1f
Y29yZUxvYWRlci0+b3B0aW9ucygpLnNlcnZpY2VXb3JrZXJzTW9kZSAhPSBTZXJ2aWNlV29ya2Vy
c01vZGU6Ok9ubHkpIHsKKyAgICAgICAgYXV0byogd2ViRnJhbWVMb2FkZXJDbGllbnQgPSB0b1dl
YkZyYW1lTG9hZGVyQ2xpZW50KG1fY29yZUxvYWRlci0+ZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkp
OworICAgICAgICBhdXRvKiB3ZWJGcmFtZSA9IHdlYkZyYW1lTG9hZGVyQ2xpZW50ID8gd2ViRnJh
bWVMb2FkZXJDbGllbnQtPndlYkZyYW1lKCkgOiBudWxscHRyOworICAgICAgICBhdXRvKiB3ZWJQ
YWdlID0gd2ViRnJhbWUgPyB3ZWJGcmFtZS0+cGFnZSgpIDogbnVsbHB0cjsKKworICAgICAgICBp
ZiAoYXV0byogaGFuZGxlciA9IHdlYlBhZ2UtPnVybFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUobV9j
b3JlTG9hZGVyLT5yZXF1ZXN0KCkudXJsKCkucHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRDb3B5
aW5nKCkpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXNvdXJjZSBs
b2FkZWQgYnkgVVJMIHNjaGVtZSBoYW5kbGVyOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQ
YXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlE
LnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOworCisgICAgICAg
ICAgICBhdXRvIGxvYWRlciA9IG1fY29yZUxvYWRlcjsKKyAgICAgICAgICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLndlYkxvYWRlclN0cmF0ZWd5KCkucmVtb3ZlKG1fY29yZUxvYWRlci5nZXQo
KSk7CisKKyAgICAgICAgICAgIGhhbmRsZXItPnN0YXJ0TmV3VGFzaygqbG9hZGVyKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGF1dG8gZXJyb3IgPSBpbnRl
cm5hbEVycm9yKG1fY29yZUxvYWRlci0+cmVxdWVzdCgpLnVybCgpKTsKKyAgICBlcnJvci5zZXRU
eXBlKFJlc291cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxhdGlvbik7CisgICAgbV9jb3JlTG9hZGVy
LT5kaWRGYWlsKGVycm9yKTsKKyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5k
aWYKK30KKwogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbFJlc291cmNlTG9hZChjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNz
KSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbFJlc291cmNlTG9hZCBmb3IgJyVzJyIsIG1fY29y
ZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCmluZGV4IDhl
YTFhZWRiZWI5ZjU5NjQ5N2FiNjc0YWY0MzYyMTY3YTFjZjI5YWEuLjdjMjExMWQ0OGIyOTUxN2I1
OTczMWUzNGJkZWQ2ZjkzYmM3ZDU2MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaApAQCAtODUsNiArODUsOCBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwg
aW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgdm9pZCBkaWRGaW5pc2hSZXNvdXJjZUxv
YWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdm9pZCBkaWRGYWls
UmVzb3VyY2VMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKKyAgICB2b2lkIGRp
ZEZhaWxTZXJ2aWNlV29ya2VyTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7Cisg
ICAgdm9pZCBzZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlKCk7CiAgICAgdm9pZCBkaWRCbG9ja0F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCk7CiAKICAgICB2b2lkIHN0b3BMb2FkaW5nQWZ0ZXJYRnJh
bWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lEZW5pZWQoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgppbmRleCA3YjkzMjU2
ZjAzNmRkMDQyZjQ0YmE4M2EzMThiYjdiNjYzNmQ0MWFhLi44YzBmMjFhODM2MjJjZjhhYjBkMzY3
ZTIxZjg2YzcxYTdlZDA1ZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgpAQCAtMjcs
NiArMjcsOCBAQCBtZXNzYWdlcyAtPiBXZWJSZXNvdXJjZUxvYWRlciBMZWdhY3lSZWNlaXZlciB7
CiAgICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEs
IGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiAgICAgRGlkRmluaXNoUmVzb3VyY2VMb2FkKFdl
YkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyBuZXR3b3JrTG9hZE1ldHJpY3MpCiAgICAgRGlkRmFp
bFJlc291cmNlTG9hZChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQorICAgIERpZEZhaWxT
ZXJ2aWNlV29ya2VyTG9hZChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQorICAgIFNlcnZp
Y2VXb3JrZXJEaWROb3RIYW5kbGUoKQogICAgIERpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoKQogCiAgICAgU3RvcExvYWRpbmdBZnRlclhGcmFtZU9wdGlvbnNPckNvbnRlbnRTZWN1cml0
eVBvbGljeURlbmllZChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNsaWVu
dEZldGNoLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3Jr
ZXJDbGllbnRGZXRjaC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyNDQ2NmE4
ZDRkODVjODMzMDk1OWE1MGY3N2Q1ODkxNDYxMDYxMjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
U2VydmljZVdvcmtlckNsaWVudEZldGNoLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIwMyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNlcnZpY2VX
b3JrZXJDbGllbnRGZXRjaC5oIgotCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotCi0jaW5j
bHVkZSAiRGF0YVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgIldlYlNXQ2xpZW50Q29ubmVjdGlvbi5o
IgotI2luY2x1ZGUgIldlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oIgotI2luY2x1ZGUgPFdlYkNv
cmUvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVu
dC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL05vdElt
cGxlbWVudGVkLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci11c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKLQotUmVmPFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaD4gU2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoOjpjcmVhdGUoV2ViU2VydmljZVdvcmtlclByb3ZpZGVyJiBzZXJ2
aWNlV29ya2VyUHJvdmlkZXIsIFJlZjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcj4mJiBsb2FkZXIs
IEZldGNoSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZWY8V2ViU1dDbGllbnRDb25uZWN0aW9uPiYm
IGNvbm5lY3Rpb24sIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVj
dCwgQ2FsbGJhY2smJiBjYWxsYmFjaykKLXsKLSAgICBhdXRvIGZldGNoID0gYWRvcHRSZWYoKm5l
dyBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2ggeyBzZXJ2aWNlV29ya2VyUHJvdmlkZXIsIFdURk1v
dmUobG9hZGVyKSwgaWRlbnRpZmllciwgV1RGTW92ZShjb25uZWN0aW9uKSwgc2hvdWxkQ2xlYXJS
ZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgV1RGTW92ZShjYWxsYmFjaykgfSk7Ci0gICAg
ZmV0Y2gtPnN0YXJ0KCk7Ci0gICAgcmV0dXJuIGZldGNoOwotfQotCi1TZXJ2aWNlV29ya2VyQ2xp
ZW50RmV0Y2g6On5TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2goKQotewotfQotCi1TZXJ2aWNlV29y
a2VyQ2xpZW50RmV0Y2g6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaChXZWJTZXJ2aWNlV29ya2Vy
UHJvdmlkZXImIHNlcnZpY2VXb3JrZXJQcm92aWRlciwgUmVmPFdlYkNvcmU6OlJlc291cmNlTG9h
ZGVyPiYmIGxvYWRlciwgRmV0Y2hJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlZjxXZWJTV0NsaWVu
dENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQ
U1RvSFRUUFJlZGlyZWN0LCBDYWxsYmFjayYmIGNhbGxiYWNrKQotICAgIDogbV9zZXJ2aWNlV29y
a2VyUHJvdmlkZXIoc2VydmljZVdvcmtlclByb3ZpZGVyKQotICAgICwgbV9sb2FkZXIoV1RGTW92
ZShsb2FkZXIpKQotICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCi0gICAgLCBtX2Nvbm5l
Y3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKLSAgICAsIG1fY2FsbGJhY2soV1RGTW92ZShjYWxs
YmFjaykpCi0gICAgLCBtX3Nob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3Qo
c2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCkKLXsKLX0KLQotdm9pZCBT
ZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OnN0YXJ0KCkKLXsKLSAgICBhdXRvIHJlcXVlc3QgPSBt
X2xvYWRlci0+cmVxdWVzdCgpOwotICAgIGF1dG8mIG9wdGlvbnMgPSBtX2xvYWRlci0+b3B0aW9u
cygpOwotCi0gICAgYXV0byByZWZlcnJlciA9IHJlcXVlc3QuaHR0cFJlZmVycmVyKCk7Ci0KLSAg
ICAvLyBXZSBhcmUgaW50ZXJjZXB0aW5nIGZldGNoIGNhbGxzIGFmdGVyIGdvaW5nIHRocm91Z2gg
dGhlIEhUVFAgbGF5ZXIsIHdoaWNoIG1heSBhZGQgc29tZSBzcGVjaWZpYyBoZWFkZXJzLgotICAg
IGNsZWFuSFRUUFJlcXVlc3RIZWFkZXJzRm9yQWNjZXNzQ29udHJvbChyZXF1ZXN0LCBvcHRpb25z
Lmh0dHBIZWFkZXJzVG9LZWVwKTsKLQotICAgIEFTU0VSVChvcHRpb25zLnNlcnZpY2VXb3JrZXJz
TW9kZSAhPSBTZXJ2aWNlV29ya2Vyc01vZGU6Ok5vbmUpOwotICAgIG1fc2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbklkZW50aWZpZXIgPSBvcHRpb25zLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyLnZhbHVlKCk7Ci0gICAgbV9jb25uZWN0aW9uLT5zdGFydEZldGNoKG1faWRlbnRp
ZmllciwgbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgcmVxdWVzdCwgb3B0
aW9ucywgcmVmZXJyZXIpOwotfQotCi12b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6ZGlk
UmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKQotewot
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYg
KCFtX2xvYWRlcikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICByZXNwb25zZS5zZXRT
b3VyY2UoUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpTZXJ2aWNlV29ya2VyKTsKLQotICAgICAg
ICBtX2xvYWRlci0+d2lsbFNlbmRSZXF1ZXN0KG1fbG9hZGVyLT5yZXF1ZXN0KCkucmVkaXJlY3Rl
ZFJlcXVlc3QocmVzcG9uc2UsIG1fc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRp
cmVjdCksIHJlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IHByb3RlY3RlZFRoaXMuY29w
eVJlZigpXShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KSB7Ci0gICAgICAgICAgICBpZiAoIW1f
bG9hZGVyIHx8IHJlcXVlc3QuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byBj
YWxsYmFjayA9IFdURk1vdmUobV9jYWxsYmFjaykpCi0gICAgICAgICAgICAgICAgICAgIGNhbGxi
YWNrKFJlc3VsdDo6U3VjY2VlZGVkKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBBU1NFUlQocmVxdWVzdCA9PSBtX2xvYWRlci0+cmVxdWVzdCgp
KTsKLSAgICAgICAgICAgIHN0YXJ0KCk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotfQotCi12b2lk
IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVz
cG9uc2UmJiByZXNwb25zZSwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVz
c2FnZSkKLXsKLSAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSksIG5lZWRzQ29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlXSgpIG11dGFibGUgewotICAgICAgICBpZiAoIW1fbG9h
ZGVyKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChhdXRvIGNhbGxiYWNrID0g
V1RGTW92ZShtX2NhbGxiYWNrKSkKLSAgICAgICAgICAgIGNhbGxiYWNrKFJlc3VsdDo6U3VjY2Vl
ZGVkKTsKLQotICAgICAgICBBU1NFUlQoIXJlc3BvbnNlLmlzUmVkaXJlY3Rpb24oKSB8fCAhcmVz
cG9uc2UuaHR0cEhlYWRlckZpZWxkcygpLmNvbnRhaW5zKEhUVFBIZWFkZXJOYW1lOjpMb2NhdGlv
bikpOwotCi0gICAgICAgIGlmICghbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3Nh
Z2UpIHsKLSAgICAgICAgICAgIG1fbG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2Us
IFtdIHsgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBtX2xv
YWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFdURk1vdmUocHJvdGVjdGVkVGhpcyldIHsKLSAgICAgICAgICAgIGlmICghbV9sb2FkZXIpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPmNvbnRp
bnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UobV9pZGVudGlmaWVyLCBtX3NlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQg
U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCi17Ci0g
ICAgYXV0byogZGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGFSZWZlcmVu
Y2UuZGF0YSgpKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGVuY29kZWREYXRhTGVuZ3RoLCBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLCBkYXRhUmVmZXJlbmNlLnNpemUoKSldKCkgbXV0YWJsZSB7Ci0gICAgICAg
IGlmICghbV9sb2FkZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbV9lbmNvZGVk
RGF0YUxlbmd0aCArPSBlbmNvZGVkRGF0YUxlbmd0aDsKLQotICAgICAgICBtX2xvYWRlci0+ZGlk
UmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlciksIG1fZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQ
YXlsb2FkQnl0ZXMpOwotICAgIH0pOwotfQotCi12b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRj
aDo6ZGlkUmVjZWl2ZUZvcm1EYXRhKGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmKQotewot
ICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9ybSBkYXRhIHJlYWRpbmcuCi19Ci0KLXZvaWQgU2Vy
dmljZVdvcmtlckNsaWVudEZldGNoOjpkaWRGaW5pc2goKQotewotICAgIGNhbGxPbk1haW5UaHJl
YWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gewotICAgICAgICBpZiAo
IW1fbG9hZGVyKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIEFTU0VSVCghbV9jYWxs
YmFjayk7Ci0KLSAgICAgICAgbV9sb2FkZXItPmRpZEZpbmlzaExvYWRpbmcoTmV0d29ya0xvYWRN
ZXRyaWNzIHsgfSk7Ci0gICAgICAgIG1fc2VydmljZVdvcmtlclByb3ZpZGVyLmZldGNoRmluaXNo
ZWQobV9pZGVudGlmaWVyKTsKLSAgICB9KTsKLX0KLQotdm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50
RmV0Y2g6OmRpZEZhaWwoUmVzb3VyY2VFcnJvciYmIGVycm9yKQotewotICAgIGNhbGxPbk1haW5U
aHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZXJyb3IgPSBXVEZN
b3ZlKGVycm9yKV0gewotICAgICAgICBpZiAoIW1fbG9hZGVyKQotICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgIGF1dG8qIGRvY3VtZW50ID0gbV9sb2FkZXItPmZyYW1lKCkgPyBtX2xvYWRl
ci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKSA6IG51bGxwdHI7Ci0gICAgICAgIGlmIChkb2N1bWVudCkg
ewotICAgICAgICAgICAgaWYgKG1fbG9hZGVyLT5vcHRpb25zKCkuZGVzdGluYXRpb24gIT0gRmV0
Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6RW1wdHlTdHJpbmcgfHwgZXJyb3IuaXNHZW5lcmFsKCkp
Ci0gICAgICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigp
KTsKLSAgICAgICAgICAgIGlmIChtX2xvYWRlci0+b3B0aW9ucygpLmRlc3RpbmF0aW9uICE9IEZl
dGNoT3B0aW9uczo6RGVzdGluYXRpb246OkVtcHR5U3RyaW5nKQotICAgICAgICAgICAgICAgIGRv
Y3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVs
OjpFcnJvciwgbWFrZVN0cmluZygiQ2Fubm90IGxvYWQgIiwgZXJyb3IuZmFpbGluZ1VSTCgpLnN0
cmluZygpLCAiLiIpKTsKLSAgICAgICAgfQotCi0gICAgICAgIG1fbG9hZGVyLT5kaWRGYWlsKGVy
cm9yKTsKLQotICAgICAgICBpZiAoYXV0byBjYWxsYmFjayA9IFdURk1vdmUobV9jYWxsYmFjaykp
Ci0gICAgICAgICAgICBjYWxsYmFjayhSZXN1bHQ6OlN1Y2NlZWRlZCk7Ci0KLSAgICAgICAgbV9z
ZXJ2aWNlV29ya2VyUHJvdmlkZXIuZmV0Y2hGaW5pc2hlZChtX2lkZW50aWZpZXIpOwotICAgIH0p
OwotfQotCi12b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6ZGlkTm90SGFuZGxlKCkKLXsK
LSAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyldIHsKLSAgICAgICAgaWYgKCFtX2xvYWRlcikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICBpZiAoYXV0byBjYWxsYmFjayA9IFdURk1vdmUobV9jYWxsYmFjaykpCi0gICAgICAgICAg
ICBjYWxsYmFjayhSZXN1bHQ6OlVuaGFuZGxlZCk7Ci0KLSAgICAgICAgbV9zZXJ2aWNlV29ya2Vy
UHJvdmlkZXIuZmV0Y2hGaW5pc2hlZChtX2lkZW50aWZpZXIpOwotICAgIH0pOwotfQotCi12b2lk
IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6Y2FuY2VsKCkKLXsKLSAgICBpZiAoYXV0byBjYWxs
YmFjayA9IFdURk1vdmUobV9jYWxsYmFjaykpCi0gICAgICAgIGNhbGxiYWNrKFJlc3VsdDo6Q2Fu
Y2VsbGVkKTsKLQotICAgIG1fY29ubmVjdGlvbi0+Y2FuY2VsRmV0Y2gobV9pZGVudGlmaWVyLCBt
X3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKLSAgICBtX2xvYWRlciA9IG51
bGxwdHI7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYzY2N2FjNzU3ZmRkNzEwODg4YjhiMmQ0ZWVlOTQ0OTkwZjBiMGQwMy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guaAorKysgL2Rldi9udWxs
CkBAIC0xLDg1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKLQotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKLSNpbmNsdWRl
ICJGb3JtRGF0YVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgotI2lu
Y2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoSWRlbnRpZmll
ci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VMb2FkZXIuaD4KLSNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4K
LQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjsKLWNs
YXNzIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjsKLQotY2xhc3MgU2VydmljZVdvcmtlckNsaWVu
dEZldGNoIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8U2VydmljZVdvcmtlckNsaWVudEZldGNo
PiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKLXB1YmxpYzoKLSAgICBlbnVtIGNsYXNz
IFJlc3VsdCB7IFN1Y2NlZWRlZCwgQ2FuY2VsbGVkLCBVbmhhbmRsZWQgfTsKLSAgICB1c2luZyBD
YWxsYmFjayA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXN1bHQpPjsKLQotICAgIHN0
YXRpYyBSZWY8U2VydmljZVdvcmtlckNsaWVudEZldGNoPiBjcmVhdGUoV2ViU2VydmljZVdvcmtl
clByb3ZpZGVyJiwgUmVmPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyPiYmLCBXZWJDb3JlOjpGZXRj
aElkZW50aWZpZXIsIFJlZjxXZWJTV0NsaWVudENvbm5lY3Rpb24+JiYsIGJvb2wgc2hvdWxkQ2xl
YXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgQ2FsbGJhY2smJik7Ci0gICAgflNlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaCgpOwotCi0gICAgdm9pZCBzdGFydCgpOwotCi0gICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsK
LSAgICB2b2lkIGNhbmNlbCgpOwotCi0gICAgYm9vbCBpc09uZ29pbmcoKSBjb25zdCB7IHJldHVy
biAhIW1fY2FsbGJhY2s7IH0KLQotcHJpdmF0ZToKLSAgICBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0
Y2goV2ViU2VydmljZVdvcmtlclByb3ZpZGVyJiwgUmVmPFdlYkNvcmU6OlJlc291cmNlTG9hZGVy
PiYmLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIsIFJlZjxXZWJTV0NsaWVudENvbm5lY3Rpb24+
JiYsIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgQ2FsbGJh
Y2smJik7Ci0KLSAgICBPcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZUVycm9yPiB2YWxpZGF0ZVJl
c3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLQotICAgIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgYm9vbCBuZWVkc0Nv
bnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmVk
aXJlY3RSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpOwotICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgaW50NjRfdCBlbmNvZGVkRGF0
YUxlbmd0aCk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRm9ybURhdGEoY29uc3QgSVBDOjpGb3JtRGF0
YVJlZmVyZW5jZSYpOwotICAgIHZvaWQgZGlkRmluaXNoKCk7Ci0gICAgdm9pZCBkaWRGYWlsKFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImJik7Ci0gICAgdm9pZCBkaWROb3RIYW5kbGUoKTsKLQotICAg
IFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlciYgbV9zZXJ2aWNlV29ya2VyUHJvdmlkZXI7Ci0gICAg
UmVmUHRyPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyPiBtX2xvYWRlcjsKLSAgICBXZWJDb3JlOjpG
ZXRjaElkZW50aWZpZXIgbV9pZGVudGlmaWVyOwotICAgIFJlZjxXZWJTV0NsaWVudENvbm5lY3Rp
b24+IG1fY29ubmVjdGlvbjsKLSAgICBDYWxsYmFjayBtX2NhbGxiYWNrOwotICAgIGJvb2wgbV9z
aG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0IHsgdHJ1ZSB9OwotICAgIGlu
dDY0X3QgbV9lbmNvZGVkRGF0YUxlbmd0aCB7IDAgfTsKLSAgICBib29sIG1fZGlkRmFpbCB7IGZh
bHNlIH07Ci0gICAgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIg
bV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcjsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZl
dGNoLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoLm1lc3NhZ2VzLmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAzZDNiYzc0MDRiZmI0N2Q2MWUwZDE1ODhlMWE1ZjJhOWMwNmExNjYxLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5tZXNzYWdlcy5pbgorKysgL2Rl
di9udWxsCkBAIC0xLDM1ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUg
bWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0j
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIK
LSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLQotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLQotbWVzc2FnZXMgLT4gU2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoIHsKLSAgICBEaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSByZXNwb25zZSwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlTWVzc2FnZSkKLSAgICBEaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZShXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlIHJlc3BvbnNlKQotICAgIERpZFJlY2VpdmVEYXRhKElQQzo6RGF0YVJlZmVy
ZW5jZSBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQotICAgIERpZFJlY2VpdmVGb3Jt
RGF0YShJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIGRhdGEpCi0gICAgRGlkRmluaXNoKCkKLSAgICBE
aWRGYWlsKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCi0gICAgRGlkTm90SGFuZGxlKCkK
LX0KLQotI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3Bw
CmluZGV4IDA2YTRjYzdkYjdhMThjMTE4N2JhZmM2NTg4NTU0MzJjNDVlYjJhZTIuLmQwMDg5YmY1
OGI2NTQ1NjVhOGUxZTkxMmQxYmRhNjIyYTdkOWVmYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcApA
QCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNs
dWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiU2VydmljZVdvcmtlckNs
aWVudEZldGNoLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sTWVzc2FnZXMuaCIKQEAg
LTIwMywyMSArMjAyLDYgQEAgdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmdldFJlZ2lzdHJh
dGlvbnMoU2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBjb24KICAgICB9KTsKIH0KIAot
dm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnN0YXJ0RmV0Y2goRmV0Y2hJZGVudGlmaWVyIGZl
dGNoSWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIHJlZmVycmVy
KQotewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6U3RhcnRGZXRj
aCB7IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIs
IHJlcXVlc3QsIG9wdGlvbnMsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgeyByZXF1ZXN0Lmh0dHBC
b2R5KCkgfSwgcmVmZXJyZXIgfSk7Ci19Ci0KLXZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpj
YW5jZWxGZXRjaChGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
cikKLXsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OkNhbmNlbEZl
dGNoIHsgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIGZldGNoSWRlbnRpZmll
ciB9KTsKLX0KLQotdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmNvbnRpbnVlRGlkUmVjZWl2
ZUZldGNoUmVzcG9uc2UoRmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllciwgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50
aWZpZXIpCi17Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpDb250
aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlIHsgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIsIGZldGNoSWRlbnRpZmllciB9KTsKLX0KLQogdm9pZCBXZWJTV0NsaWVudENvbm5l
Y3Rpb246OmNvbm5lY3Rpb25Ub1NlcnZlckxvc3QoKQogewogICAgIGNsZWFyKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rp
b24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVj
dGlvbi5oCmluZGV4IDI3ZmVhMmMxYjI0YjhjMmE5NjRjNGU5NjdkM2Y3ZWNhMzhkMDM3MmYuLjll
NDQ1ZjU1Yzk2ODA5Y2E5Y2Q2MzU2MzFmNTU1NDc5OTFlY2E1MzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5o
CkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKLSNpbmNsdWRlICJT
ZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guaCIKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TV0NsaWVudENvbm5lY3Rpb24uaD4KQEAgLTYwLDkgKzU5LDYgQEAgcHVibGljOgogICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikg
ZmluYWw7CiAKICAgICBib29sIG1heUhhdmVTZXJ2aWNlV29ya2VyUmVnaXN0ZXJlZEZvck9yaWdp
bihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKSBjb25zdCBmaW5hbDsKLSAgICB2
b2lkIHN0YXJ0RmV0Y2goV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiwgY29uc3QgU3RyaW5nJiByZWZlcnJl
cik7Ci0gICAgdm9pZCBjYW5jZWxGZXRjaChXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIsIFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKLSAgICB2b2lkIGNvbnRp
bnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyLCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CiAKICAgICB2b2lkIGNv
bm5lY3Rpb25Ub1NlcnZlckxvc3QoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAKaW5kZXgg
YzUwNDdmYTIxYThjMDQ5NTUzMWMwMmFkY2QzNmQ4ZDcyZWEwZDM4ZC4uNTE1OGE0ZTBmMWM5ODcx
YzY1YzAxY2QyYjYyZTIxYTExYzJjYjRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwCkBA
IC02Niw0OCArNjYsNiBAQCBXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb24qIFdlYlNlcnZpY2VX
b3JrZXJQcm92aWRlcjo6ZXhpc3RpbmdTZXJ2aWNlV29ya2VyQ29ubgogICAgIHJldHVybiBuZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24tPmV4aXN0aW5nU2VydmljZVdvcmtlckNvbm5lY3Rpb24oKTsK
IH0KIAotc3RhdGljIGlubGluZSBib29sIHNob3VsZEhhbmRsZUZldGNoKGNvbnN0IFJlc291cmNl
TG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKLXsKLSAgICBpZiAob3B0aW9ucy5zZXJ2aWNlV29ya2Vy
c01vZGUgPT0gU2VydmljZVdvcmtlcnNNb2RlOjpOb25lKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBpZiAoaXNQb3RlbnRpYWxOYXZpZ2F0aW9uT3JTdWJyZXNvdXJjZVJlcXVlc3Qob3B0
aW9ucy5kZXN0aW5hdGlvbikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiAh
IW9wdGlvbnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI7Ci19Ci0KLXZvaWQg
V2ViU2VydmljZVdvcmtlclByb3ZpZGVyOjpoYW5kbGVGZXRjaChSZXNvdXJjZUxvYWRlciYgbG9h
ZGVyLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFNlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaDo6Q2FsbGJhY2smJiBjYWxsYmFjaykKLXsKLSAgICBpZiAoIVNj
aGVtZVJlZ2lzdHJ5OjpjYW5TZXJ2aWNlV29ya2Vyc0hhbmRsZVVSTFNjaGVtZShsb2FkZXIucmVx
dWVzdCgpLnVybCgpLnByb3RvY29sKCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKSB8fCAhc2hv
dWxkSGFuZGxlRmV0Y2gobG9hZGVyLm9wdGlvbnMoKSkpIHsKLSAgICAgICAgY2FsbGJhY2soU2Vy
dmljZVdvcmtlckNsaWVudEZldGNoOjpSZXN1bHQ6OlVuaGFuZGxlZCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBhdXRvJiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuc2VydmljZVdvcmtlckNvbm5lY3Rp
b24oKTsKLSAgICBhdXRvIGZldGNoSWRlbnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPEZl
dGNoSWRlbnRpZmllclR5cGU+KGxvYWRlci5pZGVudGlmaWVyKCkpOwotICAgIG1fb25nb2luZ0Zl
dGNoVGFza3MuYWRkKGZldGNoSWRlbnRpZmllciwgU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpj
cmVhdGUoKnRoaXMsIGxvYWRlciwgZmV0Y2hJZGVudGlmaWVyLCBjb25uZWN0aW9uLCBzaG91bGRD
bGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBXVEZNb3ZlKGNhbGxiYWNrKSkpOwot
fQotCi1ib29sIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6Y2FuY2VsRmV0Y2goRmV0Y2hJZGVu
dGlmaWVyIGZldGNoSWRlbnRpZmllcikKLXsKLSAgICBhdXRvIGZldGNoID0gbV9vbmdvaW5nRmV0
Y2hUYXNrcy50YWtlKGZldGNoSWRlbnRpZmllcik7Ci0gICAgaWYgKGZldGNoKQotICAgICAgICAo
KmZldGNoKS0+Y2FuY2VsKCk7Ci0gICAgcmV0dXJuICEhZmV0Y2g7Ci19Ci0KLXZvaWQgV2ViU2Vy
dmljZVdvcmtlclByb3ZpZGVyOjpmZXRjaEZpbmlzaGVkKEZldGNoSWRlbnRpZmllciBmZXRjaElk
ZW50aWZpZXIpCi17Ci0gICAgbV9vbmdvaW5nRmV0Y2hUYXNrcy50YWtlKGZldGNoSWRlbnRpZmll
cik7Ci19Ci0KLXZvaWQgV2ViU2VydmljZVdvcmtlclByb3ZpZGVyOjpkaWRSZWNlaXZlU2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQ
Qzo6RGVjb2RlciYgZGVjb2RlcikKLXsKLSAgICBpZiAoYXV0byBmZXRjaCA9IG1fb25nb2luZ0Zl
dGNoVGFza3MuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVyPEZldGNoSWRlbnRpZmllclR5cGU+KGRl
Y29kZXIuZGVzdGluYXRpb25JRCgpKSkpCi0gICAgICAgIGZldGNoLT5kaWRSZWNlaXZlTWVzc2Fn
ZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNl
bmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oCmluZGV4
IDA4OGFlZDk1NGU5YTlkNGVlNTkyZjVkNzU1MjcyNzE0NGEwNTBhMjIuLmMwMGMwNDc5MzEyN2Ew
NjlmYWU5NTIzMDEyNWRiYjk1NTU0Y2Q3MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oCkBAIC0y
Nyw3ICsyNyw2IEBACiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKLSNpbmNsdWRlICJT
ZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3Jr
ZXJQcm92aWRlci5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCkBAIC00MSwx
MSArNDAsNiBAQCBjbGFzcyBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMg
V2ViQ29yZTo6U2VydmljZVdvcmtlclByb3ZpZGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2Vi
U2VydmljZVdvcmtlclByb3ZpZGVyJiBzaW5nbGV0b24oKTsKIAotICAgIHZvaWQgaGFuZGxlRmV0
Y2goV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXImLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhU
VFBTVG9IVFRQUmVkaXJlY3QsIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6Q2FsbGJhY2smJik7
Ci0gICAgYm9vbCBjYW5jZWxGZXRjaChXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIpOwotICAgIHZv
aWQgZmV0Y2hGaW5pc2hlZChXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIpOwotCi0gICAgdm9pZCBk
aWRSZWNlaXZlU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2aWNlV29ya2VyQ2xpZW50
UmVnaXN0cmF0aW9uTWF0Y2goSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAKIHBy
aXZhdGU6CkBAIC01NCw4ICs0OCw2IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpTV0NsaWVu
dENvbm5lY3Rpb24qIGV4aXN0aW5nU2VydmljZVdvcmtlckNvbm5lY3Rpb24oKSBmaW5hbDsKICAg
ICBXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb24mIHNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKCkg
ZmluYWw7Ci0KLSAgICBIYXNoTWFwPFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgUmVmPFNlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaD4+IG1fb25nb2luZ0ZldGNoVGFza3M7CiB9OyAvLyBjbGFzcyBX
ZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCBkOWRmMmFhZThlZDBkNTE2Yzg1NTA5YzQ5ZWZjM2I4
NDM2NjVkNGQ3Li41MDRlZjNkZTFkYWQ4NTczYjRjODU0MDU2ZTcwNTY5NTg1OGM5Zjk5IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxOS0wOS0yNyAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgSGFuZGxlIHNlcnZp
Y2Ugd29ya2VyIGxvYWRzIHRocm91Z2ggTmV0d29ya1Jlc291cmNlTG9hZGVyCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDIzMDkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0
cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0Y2gtcmVxdWVzdC14aHIuaHR0cHMt
ZXhwZWN0ZWQudHh0OgorCiAyMDE5LTA5LTI1ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KIAogICAgICAgICBSZS1zeW5jIHdlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVk
REIgZnJvbSB1cHN0cmVhbQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0Y2gtcmVx
dWVzdC14aHIuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0Y2gtcmVx
dWVzdC14aHIuaHR0cHMtZXhwZWN0ZWQudHh0CmluZGV4IDRmYjZiYjUzYjMxNjU1MmY0MWQwYTk3
ZmE5M2FkZDdmNjg2YTY1MjMuLjg1YWEwMGIwYWU4ZWRjYzE2ODE0NTY1ZDk5OWRhZDdlNDFhOTNj
OTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2ZldGNoLXJlcXVlc3QteGhyLmh0dHBz
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9mZXRjaC1yZXF1ZXN0LXhoci5o
dHRwcy1leHBlY3RlZC50eHQKQEAgLTgsNyArOCw3IEBAIFBBU1MgRmV0Y2hFdmVudCNyZXF1ZXN0
LmJvZHkgY29udGFpbnMgWEhSIHJlcXVlc3QgZGF0YSAoc3RyaW5nKQogUEFTUyBGZXRjaEV2ZW50
I3JlcXVlc3QuYm9keSBjb250YWlucyBYSFIgcmVxdWVzdCBkYXRhIChibG9iKSAKIFBBU1MgRmV0
Y2hFdmVudCNyZXF1ZXN0Lm1ldGhvZCBpcyBzZXQgdG8gWEhSIG1ldGhvZCAKIFBBU1MgWEhSIHVz
aW5nIE9QVElPTlMgbWV0aG9kIAotRkFJTCBYSFIgd2l0aCBmb3JtIGRhdGEgcHJvbWlzZV90ZXN0
OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiRXJyb3I6IGFzc2VydF9l
cXVhbHM6IGV4cGVjdGVkIChzdHJpbmcpICJQT1NUIiBidXQgZ290ICh1bmRlZmluZWQpIHVuZGVm
aW5lZCIKK1BBU1MgWEhSIHdpdGggZm9ybSBkYXRhIAogUEFTUyBYSFIgd2l0aCBtb2RlL2NyZWRl
bnRpYWxzIHNldCAKIFBBU1MgWEhSIHRvIGRhdGEgVVJMIAogUEFTUyByZXN0b3JlIGdsb2JhbCBz
dGF0ZSAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380647</attachid>
            <date>2019-10-10 08:40:48 -0700</date>
            <delta_ts>2019-10-11 01:43:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202309-20191010174045.patch</filename>
            <type>text/plain</type>
            <size>103182</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwOTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDc0ZmVmYjcxM2JmNmJj
ZjRjNzQxNTdkY2MyYmQ1MTg3NjljMDkzOS4uNzYyOTgwYjEzYzJhNzYzZmNhMTgxOGFhN2EyODE0
ZTQ1MzQzNGNlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE5LTEwLTEwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBIYW5kbGUgc2VydmljZSB3
b3JrZXIgbG9hZHMgdGhyb3VnaCBOZXR3b3JrUmVzb3VyY2VMb2FkZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjMwOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVz
dHMuCisKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jcmVhdGUtaHR0cC1oZWFkZXItbmFtZS10YWJsZToKKyAgICAg
ICAgQWRkIHRoZSBhYmlsaXR5IHRvIGVuY29kZS9kZWNvZGUgSFRUUEhlYWRlck5hbWUgd2l0aCBJ
UEMuCisKIDIwMTktMTAtMTAgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIEFkZCBhc3NlcnRzIHRvIE1lZGlhU3RyZWFtUHJpdmF0ZSBvYnNlcnZlciByb3V0aW5l
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCBlODU5MmNlOWVmY2U3ZmFjNjJhYTVlMGZmMGFjNjc5MDAxMzk2Y2ViLi4w
NDkzMzMyNGJmNmRkMzdiMjJmZDdlYmQwNjYyM2I4NjI0YzRjMzM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEwMCBAQAorMjAxOS0xMC0xMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+
CisKKyAgICAgICAgSGFuZGxlIHNlcnZpY2Ugd29ya2VyIGxvYWRzIHRocm91Z2ggTmV0d29ya1Jl
c291cmNlTG9hZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDIzMDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZW1vdmUgU2VydmljZVdvcmtlckZldGNoQ2xpZW50LgorICAgICAgICBJbnN0ZWFkIHdl
IHVzZSB0aGUgbm9ybWFsIE5ldHdvcmtSZXNvdXJjZUxvYWRlci9XZWJSZXNvdXJjZUxvYWRlciBj
b21tdW5pY2F0aW9uIGNoYW5uZWwuCisgICAgICAgIFdlIHBhc3MgYWRkaXRpb25hbCBwYXJhbWV0
ZXJzLCBpbiBwYXJ0aWN1bGFyIHNlcnZpY2Ugd29ya2VyIG1vZGUgYW5kIHJlZ2lzdHJhdGlvbiBp
ZGVudGlmaWVyLgorCisgICAgICAgIEJhc2VkIG9uIHRoYXQgaW5mb3JtYXRpb24sIG5ldHdvcmsg
cHJvY2VzcyB3aWxsIGRlY2lkZSB3aGV0aGVyIHRvIGxvYWQgZnJvbSBzZXJ2aWNlIHdvcmtlciBv
ciBuZXR3b3JrLgorICAgICAgICBUaGUgZmlyc3QgYWR2YW50YWdlIGlzIHRoYXQgaW4gY2FzZSBv
ZiBzZXJ2aWNlIHdvcmtlciBub3QgaGFuZGxpbmcgdGhlIGxvYWQsIGdvaW5nIHRvIHRoZSBuZXR3
b3JrIGlzIGZhc3Rlci4KKyAgICAgICAgVGhpcyB3aWxsIGFsc28gYWxsb3cgdXMgdG8gZG8gdGhl
IHJlZ2lzdHJhdGlvbiBtYXRjaGluZyBpbiBuZXR3b3JrIHByb2Nlc3Mgd2hlbiByZWNlaXZpbmcg
YSBuYXZpZ2F0aW9uIHJlcXVlc3QuCisKKyAgICAgICAgU2VydmljZVdvcmtlckZldGNoVGFzayBp
cyBub3cgYmVlZmVkIHVwIHRvIGRvIHRoZSBsaW5rIGJldHdlZW4gc2VydmljZSB3b3JrZXIgYW5k
IE5ldHdvcmtSZXNvdXJjZUxvYWRlci9XZWJSZXNvdXJjZUxvYWRlci4KKyAgICAgICAgVG8gc3Vw
cG9ydCB0aGUgc2FtZSBjb25zb2xlIGxvZ2dpbmcsIHdlIGFkZCBhIG5ldyBtZXNzYWdlIGNhbGxl
ZCBEaWRGYWlsU2VydmljZVdvcmtlckxvYWQuCisKKyAgICAgICAgVG8gc3VwcG9ydCBBUEkgdGVz
dHMsIHdlIGNvbnRpbnVlIHRvIGdvIHRvIHRoZSBzZXJ2aWNlIHdvcmtlciBiZWZvcmUgdHJ5aW5n
IHRvIGdvIHRvIFVSTCBzY2hlbWUgaGFuZGxlcnMuCisgICAgICAgIFRoaXMgYWRkcyBzb21lIGJ1
cmRlbiBhcyB3ZSBuZWVkIHRvIGdvIHRvIG5ldHdvcmsgcHJvY2Vzcy9zZXJ2aWNlIHdvcmtlciBw
cm9jZXNzIGFuZCwgaW4gY2FzZSBsb2FkIGlzIG5vdCBoYW5kbGVkCisgICAgICAgIGJ5IHNlcnZp
Y2Ugd29ya2VyLCB3ZSBnbyBiYWNrIHRvIHRoZSB3ZWIgcHJvY2VzcyB0byBkbyB0aGUgbG9hZCB0
aHJvdWdoIFVSTCBzY2hlbWUgaGFuZGxlcnMuCisgICAgICAgIEZvciB0aGF0IHB1cnBvc2Ugd2Ug
dXNlIFNlcnZpY2VXb3JrZXJzTW9kZTo6T25seS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICog
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMubWFrZToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpzY2hlZHVsZVJlc291cmNlTG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YWJvcnQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Jlc291cmNlTG9hZGVyOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlcnZpY2VXb3JrZXJEaWRO
b3RIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNldFNl
cnZpY2VXb3JrZXJGZXRjaFRhc2spOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlckZldGNoVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2spOgorICAgICAgICAoV2ViS2l0OjpT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjp+U2VydmljZVdvcmtlckZldGNoVGFzayk6CisgICAgICAg
IChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnN0YXJ0KToKKyAgICAgICAgKFdlYktp
dDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6c3RhcnRGZXRjaCk6CisgICAgICAgIChXZWJLaXQ6
OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKToKKyAg
ICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZURh
dGEpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZl
Rm9ybURhdGEpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRG
aW5pc2gpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRGYWls
KToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkTm90SGFuZGxl
KToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6Y2FuY2VsRnJvbUNs
aWVudCk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmNvbnRpbnVl
RGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOjpjb250aW51ZUZldGNoVGFza1dpdGgpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrOjpjbGllbnRDb25uZWN0aW9uKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaDoKKyAgICAgICAg
KFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6ZmV0Y2hJZGVudGlmaWVyIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6c2VydmljZVdvcmtlcklk
ZW50aWZpZXIgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpjYW5jZWxGZXRjaCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29u
bmVjdGlvbjo6Y3JlYXRlRmV0Y2hUYXNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpzdGFydEZldGNoKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjp+V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzdGFydEZldGNoKToKKyAgICAgICAgKFdl
YktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb250aW51ZURpZFJlY2VpdmVG
ZXRjaFJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOjpkaWRSZWNlaXZlRmV0Y2hUYXNrTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6aXBjQ29ubmVjdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6cmVnaXN0ZXJGZXRjaCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6dW5yZWdpc3Rl
ckZldGNoKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjpyZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlKToKKyAg
ICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxTZXJ2aWNlV29ya2VyTG9hZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpzZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW46CisgICAg
ICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRG
ZXRjaC5oOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29y
a2VyQ2xpZW50RmV0Y2gubWVzc2FnZXMuaW46IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaDoKKwogMjAxOS0xMC0xMCAgeW91
ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gQWxsb3cgU1lT
X19fcHRocmVhZF9tYXJrY2FuY2VsIGNhbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlck9wdGlvbnMuaAppbmRleCA5ZTMwNzRkYTMyMTFkMGVlOTdiOGViMmVkZjQ5MTY5
ZWM1ZGYyYTRhLi5hZWNmOTQ0MWQzMjFlZDk5NmI4ZTRkMjAyMTAwYjY1ZmZjMGFlMTM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oCkBAIC0xNzUs
MyArMTc1LDE2IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMgOiBwdWJsaWMgRmV0Y2hP
cHRpb25zIHsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7
CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6U2VydmljZVdvcmtlcnNN
b2RlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6
U2VydmljZVdvcmtlcnNNb2RlLAorICAgICAgICBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vyc01vZGU6
OkFsbCwKKyAgICAgICAgV2ViQ29yZTo6U2VydmljZVdvcmtlcnNNb2RlOjpOb25lLAorICAgICAg
ICBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vyc01vZGU6Ok9ubHkKKyAgICA+OworfTsKKworfSAvLyBu
YW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NyZWF0ZS1odHRwLWhlYWRlci1uYW1lLXRhYmxlIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jcmVhdGUtaHR0cC1oZWFkZXItbmFtZS10YWJsZQppbmRleCA2NDdjZGQ4MjQyZmFm
Nzg1ZTAyMzE0MzRkMDA5MGU2YzM5NzczZGFkLi40MzlkYjY4YzMyYzQzZTA4M2IwMDA2NzhkNzJj
ZTM1OWRhZDNlMjlmIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NyZWF0ZS1odHRwLWhlYWRlci1uYW1lLXRhYmxlCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3JlYXRlLWh0dHAtaGVhZGVyLW5hbWUtdGFibGUKQEAgLTIzMyw2ICsyMzMs
MjggQEAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nVmlldyBodHRwSGVhZGVyTmFtZVN0cmluZyhIVFRQ
SGVhZGVyTmFtZSk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorbmFtZXNwYWNlIFdURiB7
CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6SFRUUEhlYWRlck5hbWU+
IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpIVFRQ
SGVhZGVyTmFtZSwKKycnJykKKworaXNfZmlyc3QgPSBUcnVlCitmb3IgaHR0cF9oZWFkZXJfbmFt
ZSBpbiBodHRwX2hlYWRlcl9uYW1lczoKKyAgICBpZiBpc19maXJzdDoKKyAgICAgICAgaXNfZmly
c3QgPSBGYWxzZQorICAgIGVsc2U6CisgICAgCWhlYWRlcl9maWxlLndyaXRlKCcsXG4nKQorCisg
ICAgaGVhZGVyX2ZpbGUud3JpdGUoJyAgICAgICAgV2ViQ29yZTo6SFRUUEhlYWRlck5hbWU6OiVz
JyAlIGh0dHBfaGVhZGVyX25hbWVfdG9faWRbaHR0cF9oZWFkZXJfbmFtZV0pCisKK2hlYWRlcl9m
aWxlLndyaXRlKCcnJworICAgID47Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwogI2VuZGlm
IC8vIEhUVFBIZWFkZXJOYW1lc19oCiAnJycpCiBoZWFkZXJfZmlsZS5jbG9zZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdC9DTWFrZUxp
c3RzLnR4dAppbmRleCBmN2NkMThiZDI5MjMzYjg1OGZlN2M3ZGQzNzVhOWE5OTYzYTY5MjZlLi4x
ZTA2ZTYyNjBjZDJkOTRlMjQ4MDhlYjU3ZjA0MjcwZjEzNTNhNDE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50
eHQKQEAgLTE5MCw3ICsxOTAsNiBAQCBzZXQoV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAgICAg
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5tZXNzYWdl
cy5pbgogICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5tZXNzYWdlcy5pbgogCi0g
ICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5tZXNzYWdlcy5p
bgogICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24ubWVzc2FnZXMu
aW4KICAgICBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
bWVzc2FnZXMuaW4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1p
bnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2Zp
bGVsaXN0CmluZGV4IDJlNDc2NjA4NTQwM2Q0MjA3ZjJiZjE3MmU5OWM3ODQ2OTBhOWNjZTEuLmYx
YWRhZDYyNjlkMDEyY2FiMWRkNzJiNTkwNTI1OGVmOTA5Zjk1YTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTEwNSw3ICsxMDUsNiBAQCAk
KFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFu
YWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBS
T0pFQ1RfRElSKS9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkubWVzc2FnZXMuaW4KLSQo
UFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gu
bWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVu
dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJ
UikvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2Fn
ZXMuaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0Lnhj
ZmlsZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0
CmluZGV4IGJkOWRkN2Y2MzNjMTdiY2YyOTkwODc3ZjFkZTNhYWU0YThmYjQ3YWMuLjFjNWQyMTRk
MDA3MWQyNjg0ZmRjYzhiOGU0YWM5YzY1YmQ5N2RiMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtODAsOCArODAsNiBAQCAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVXZWJJbnNwZWN0b3JV
SU1lc3NhZ2VSZWNlaXZlcgogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvUmVtb3RlV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TZWNJdGVtU2hpbVByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvU2VjSXRl
bVNoaW1Qcm94eU1lc3NhZ2VzLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VSZWNlaXZlci5jcHAKLSQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1NlcnZpY2VXb3JrZXJD
bGllbnRGZXRjaE1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2tNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA5ZGU3MDQyNjZhZmVlNTEzNmU2NWU4NDc4MWI1
YTAyNTI1MTU3YWM5Li5iYWU3YzMxOWU0NzY0NDVhOWNlMzZlNjJkNzZlZmVkZGY2NmFiMTI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xMzIsNyArMTMyLDYgQEAgTUVTU0FHRV9S
RUNFSVZFUlMgPSBcCiAgICAgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkgXAogICAgIFJlbW90ZVdl
Ykluc3BlY3RvclVJIFwKICAgICBTZWNJdGVtU2hpbVByb3h5IFwKLSAgICBTZXJ2aWNlV29ya2Vy
Q2xpZW50RmV0Y2ggXAogICAgIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2sgXAogICAgIFNtYXJ0TWFn
bmlmaWNhdGlvbkNvbnRyb2xsZXIgXAogICAgIFN0b3JhZ2VBcmVhTWFwIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHAKaW5kZXggNjIxOGE2ZTkwZmFiZmY0NDE5MzVlZTAxYTc1ZmQ5ZjVkOWQw
YTQ2Ni4uMTZmODBlY2U4OWM4MjJlYWYzMDUwMDg0YjliYmZiNWE4M2ZkMTY2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTQwNiw5ICs0MDYsMTggQEAgdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6c2NoZWR1bGVSZXNvdXJjZUxvYWQoTmV0d29ya1Jlc291cmNl
TG9hZFBhcmEKICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgQVNT
RVJUKCFtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMuY29udGFpbnMoaWRlbnRpZmllcikpOwogCi0g
ICAgYXV0byBsb2FkZXIgPSBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShXVEZNb3ZlKGxv
YWRQYXJhbWV0ZXJzKSwgKnRoaXMpOwotICAgIG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5hZGQo
aWRlbnRpZmllciwgbG9hZGVyLmNvcHlSZWYoKSk7CisgICAgYXV0byYgbG9hZGVyID0gbV9uZXR3
b3JrUmVzb3VyY2VMb2FkZXJzLmFkZChpZGVudGlmaWVyLCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmNyZWF0ZShXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzKSwgKnRoaXMpKS5pdGVyYXRvci0+dmFsdWU7
CisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgc3RkOjp1bmlxdWVfcHRyPFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s+IHRhc2sgPSBtX3N3Q29ubmVjdGlvbiA/IG1fc3dDb25uZWN0aW9u
LT5jcmVhdGVGZXRjaFRhc2sobG9hZGVyKSA6IG51bGxwdHI7CisgICAgaWYgKHRhc2spIHsKKyAg
ICAgICAgbG9hZGVyLT5zZXRTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKFdURk1vdmUodGFzaykpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGxvYWRlci0+c3RhcnQoKTsKKyNlbHNlCiAgICAg
bG9hZGVyLT5zdGFydCgpOworI2VuZGlmCiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnBlcmZvcm1TeW5jaHJvbm91c0xvYWQoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMmJiBsb2FkUGFyYW1ldGVycywgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJiByZXBseSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCA3ZDhiYTMyZWJlNzMxZDA2ZjFiYmE3YTY4NThlMDYx
YWJjNTE3MmY4Li5iYWM1MzdiMzQ4MWM4ZWE5ZjYxNWEyYmNhMmMzZjMyOTFmYTZkMTY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0yMTUsNiArMjE1LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbigpOwogICAgIHZvaWQgZXN0YWJsaXNoU1dD
b250ZXh0Q29ubmVjdGlvbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmKTsKICAgICB2b2lk
IHVucmVnaXN0ZXJTV0Nvbm5lY3Rpb24oKTsKKyAgICB2b2lkIGhhbmRsZUZldGNoVGhyb3VnaFNl
cnZpY2VXb3JrZXIoTmV0d29ya1Jlc291cmNlTG9hZGVyJik7CiAjZW5kaWYKIAogICAgIHZvaWQg
Y3JlYXRlTmV3TWVzc2FnZVBvcnRDaGFubmVsKGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRl
bnRpZmllciYgcG9ydDEsIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcG9y
dDIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAppbmRleCBlMjhjN2QxNGJkMTBhNGM3NGE3
NGM1NGYxNDYyZGI1OTQyMzAxM2M1Li5jZmE1NDkyNDljMTgzM2VmNjQ0NTk3Y2Q0MGM2NTViODE1
MWQyMDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcApAQCAtMTA3LDYgKzEwNywxMiBA
QCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgZnJhbWVBbmNlc3Rvck9yaWdpbnM7CiAg
ICAgZW5jb2RlciA8PCBpc0hUVFBTVXBncmFkZUVuYWJsZWQ7CiAKKyNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCisgICAgZW5jb2RlciA8PCBzZXJ2aWNlV29ya2Vyc01vZGU7CisgICAgZW5jb2Rl
ciA8PCBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcjsKKyAgICBlbmNvZGVyIDw8
IGh0dHBIZWFkZXJzVG9LZWVwOworI2VuZGlmCisKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJ
T05TKQogICAgIGVuY29kZXIgPDwgbWFpbkRvY3VtZW50VVJMOwogICAgIGVuY29kZXIgPDwgdXNl
ckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKQEAgLTI0Miw3ICsyNDgsMjcgQEAgT3B0aW9u
YWw8TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM+IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzOjpkZWNvZGUoSVAKICAgICBpZiAoIWlzSFRUUFNVcGdyYWRlRW5hYmxlZCkKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICByZXN1bHQuaXNIVFRQU1VwZ3JhZGVFbmFibGVk
ID0gKmlzSFRUUFNVcGdyYWRlRW5hYmxlZDsKLSAgICAKKworI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKKyAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2Vyc01vZGU+IHNlcnZpY2VXb3JrZXJzTW9k
ZTsKKyAgICBkZWNvZGVyID4+IHNlcnZpY2VXb3JrZXJzTW9kZTsKKyAgICBpZiAoIXNlcnZpY2VX
b3JrZXJzTW9kZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXN1bHQuc2Vy
dmljZVdvcmtlcnNNb2RlID0gKnNlcnZpY2VXb3JrZXJzTW9kZTsKKworICAgIE9wdGlvbmFsPE9w
dGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPj4gc2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiBzZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uSWRlbnRpZmllcjsKKyAgICBpZiAoIXNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJlc3VsdC5zZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciA9ICpzZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uSWRlbnRpZmllcjsKKworICAgIE9wdGlvbmFsPEhhc2hTZXQ8SFRUUEhlYWRlck5hbWUsIFdU
Rjo6SW50SGFzaDxIVFRQSGVhZGVyTmFtZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8SFRU
UEhlYWRlck5hbWU+Pj4gaHR0cEhlYWRlcnNUb0tlZXA7CisgICAgZGVjb2RlciA+PiBodHRwSGVh
ZGVyc1RvS2VlcDsKKyAgICBpZiAoIWh0dHBIZWFkZXJzVG9LZWVwKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIHJlc3VsdC5odHRwSGVhZGVyc1RvS2VlcCA9IFdURk1vdmUoKmh0
dHBIZWFkZXJzVG9LZWVwKTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9O
UykKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tYWluRG9jdW1lbnRVUkwpKQogICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCmluZGV4IDEy
MDM0NzA0ZGE5MjdiNWEyZmMxYjVjZWZlOTliYmY4MmJmZGY1NzQuLjljZDViNDU1YzcyNTU3MzQ5
YTAwMzlkOGZkMWMyNzQ1YTRiNTczMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgKQEAgLTMw
LDYgKzMwLDcgQEAKICNpbmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoT3B0aW9ucy5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
SFRUUEhlYWRlck5hbWVzLmg+CiAjaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KIAogbmFtZXNwYWNl
IElQQyB7CkBAIC02MCw2ICs2MSwxMiBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPFJlZlB0cjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbj4+IGZyYW1lQW5jZXN0b3JPcmlnaW5zOwogICAgIGJvb2wgaXNI
VFRQU1VwZ3JhZGVFbmFibGVkIHsgZmFsc2UgfTsKIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKKyAgICBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vyc01vZGUgc2VydmljZVdvcmtlcnNNb2RlIHsg
V2ViQ29yZTo6U2VydmljZVdvcmtlcnNNb2RlOjpOb25lIH07CisgICAgT3B0aW9uYWw8V2ViQ29y
ZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JZGVudGlmaWVyOworICAgIEhhc2hTZXQ8V2ViQ29yZTo6SFRUUEhlYWRlck5hbWUs
IFdURjo6SW50SGFzaDxXZWJDb3JlOjpIVFRQSGVhZGVyTmFtZT4sIFdURjo6U3Ryb25nRW51bUhh
c2hUcmFpdHM8V2ViQ29yZTo6SFRUUEhlYWRlck5hbWU+PiBodHRwSGVhZGVyc1RvS2VlcDsKKyNl
bmRpZgorCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAgICBVUkwgbWFpbkRvY3Vt
ZW50VVJMOwogICAgIE9wdGlvbmFsPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI+IHVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZmIzNzJkNzlk
ZWNiOTZjZWE1MWI3Y2U0MzEzZmY0NjgxMWMxOWRiZC4uMDBlZDM1ZTc2MzU4Yjk1MGYxNjU4YjNj
ZWVjMDJiNmM1MDU1NTc0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMzc5LDYgKzM3OSwxMSBAQCB2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YWJvcnQoKQogICAgICAgICByZXR1cm47CiAgICAgfQog
CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIGlmIChhdXRvIHRhc2sgPSBXVEZNb3Zl
KG1fc2VydmljZVdvcmtlckZldGNoVGFzaykpCisgICAgICAgIHRhc2stPmNhbmNlbEZyb21DbGll
bnQoKTsKKyNlbmRpZgorCiAgICAgaWYgKG1fbmV0d29ya0xvYWQpIHsKICAgICAgICAgaWYgKGNh
blVzZUNhY2hlKG1fbmV0d29ya0xvYWQtPmN1cnJlbnRSZXF1ZXN0KCkpKSB7CiAgICAgICAgICAg
ICAvLyBXZSBtaWdodCBhbHJlYWR5IGhhdmUgdXNlZCBkYXRhIGZyb20gdGhpcyBpbmNvbXBsZXRl
IGxvYWQuIEVuc3VyZSBvbGRlciB2ZXJzaW9ucyBkb24ndCByZW1haW4gaW4gdGhlIGNhY2hlIGFm
dGVyIGNhbmNlbC4KQEAgLTYxMiw4ICs2MTcsMTYgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmRpZEZhaWxMb2FkaW5nKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAgIGlmIChp
c1N5bmNocm9ub3VzKCkpIHsKICAgICAgICAgbV9zeW5jaHJvbm91c0xvYWREYXRhLT5lcnJvciA9
IGVycm9yOwogICAgICAgICBzZW5kUmVwbHlUb1N5bmNocm9ub3VzUmVxdWVzdCgqbV9zeW5jaHJv
bm91c0xvYWREYXRhLCBudWxscHRyKTsKLSAgICB9IGVsc2UgaWYgKGF1dG8qIGNvbm5lY3Rpb24g
PSBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpKQorICAgIH0gZWxzZSBpZiAoYXV0byogY29ubmVj
dGlvbiA9IG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkpIHsKKyNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCisgICAgICAgIGlmIChtX3NlcnZpY2VXb3JrZXJGZXRjaFRhc2spCisgICAgICAgICAg
ICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkRmFpbFNl
cnZpY2VXb3JrZXJMb2FkKGVycm9yKSwgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYlJl
c291cmNlTG9hZGVyOjpEaWRGYWlsUmVzb3VyY2VMb2FkKGVycm9yKSwgbWVzc2FnZVNlbmRlckRl
c3RpbmF0aW9uSUQoKSk7CisjZWxzZQogICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkRmFpbFJlc291cmNlTG9hZChlcnJvciksIG1lc3NhZ2VT
ZW5kZXJEZXN0aW5hdGlvbklEKCkpOworI2VuZGlmCisgICAgfQogCiAgICAgY2xlYW51cChMb2Fk
UmVzdWx0OjpGYWlsdXJlKTsKIH0KQEAgLTc0Nyw2ICs3NjAsMTAgQEAgdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OnJlc3RhcnROZXR3b3JrTG9hZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiBuZXdSZXEKIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRS
ZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGJvb2wgaXNBbGxvd2VkVG9Bc2tV
c2VyRm9yQ3JlZGVudGlhbHMpCiB7CisgICAgaWYgKG1fc2VydmljZVdvcmtlckZldGNoVGFzaykg
eworICAgICAgICBtX3NlcnZpY2VXb3JrZXJGZXRjaFRhc2stPmNvbnRpbnVlRmV0Y2hUYXNrV2l0
aChXVEZNb3ZlKG5ld1JlcXVlc3QpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBpZiAo
bV9zaG91bGRSZXN0YXJ0TG9hZCkgewogICAgICAgICBtX3Nob3VsZFJlc3RhcnRMb2FkID0gZmFs
c2U7CiAKQEAgLTc5Miw2ICs4MDksMTEgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNv
bnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QKIAogdm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkKIHsK
KyAgICBpZiAobV9zZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKSB7CisgICAgICAgIG1fc2VydmljZVdv
cmtlckZldGNoVGFzay0+Y29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSgpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKG1fY2FjaGVFbnRyeVdhaXRpbmdGb3JDb250aW51
ZURpZFJlY2VpdmVSZXNwb25zZSkgewogICAgICAgICBzZW5kUmVzdWx0Rm9yQ2FjaGVFbnRyeShX
VEZNb3ZlKG1fY2FjaGVFbnRyeVdhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSkp
OwogICAgICAgICBjbGVhbnVwKExvYWRSZXN1bHQ6OlN1Y2Nlc3MpOwpAQCAtMTE5Niw2ICsxMjE4
LDE5IEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjppc0Nyb3NzT3JpZ2luUHJlZmV0Y2go
KSBjb25zdAogICAgIHJldHVybiByZXF1ZXN0Lmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFt
ZTo6UHVycG9zZSkgPT0gInByZWZldGNoIiAmJiAhbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbi0+
Y2FuUmVxdWVzdChyZXF1ZXN0LnVybCgpKTsKIH0KIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxl
KCkKK3sKKyAgICBtX3NlcnZpY2VXb3JrZXJGZXRjaFRhc2sgPSBudWxscHRyOworICAgIHN0YXJ0
KCk7Cit9CisKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZXRTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrKHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiYmIHRhc2spCit7
CisgICAgbV9zZXJ2aWNlV29ya2VyRmV0Y2hUYXNrID0gV1RGTW92ZSh0YXNrKTsKK30KKyNlbmRp
ZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5oCmluZGV4IGQ2NTA3MmI3MmJkNDEzMTQxYTA2YjI4N2M0NTI2OWJlNDJhZjA3NzYu
LjBlOTVhYTU0YzkwZTM1NzVkYmVjNzg3YmQ1ZWE2NzhiOGZhMTM5YjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAt
NTEsNiArNTEsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOwogY2xhc3MgTmV0d29ya0xvYWQ7CiBjbGFzcyBOZXR3b3JrTG9hZENoZWNr
ZXI7CitjbGFzcyBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOwogCiBuYW1lc3BhY2UgTmV0d29ya0Nh
Y2hlIHsKIGNsYXNzIEVudHJ5OwpAQCAtODgsNyArODksOCBAQCBwdWJsaWM6CiAgICAgUmVzb3Vy
Y2VMb2FkSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJz
LmlkZW50aWZpZXI7IH0KICAgICBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCgpIGNv
bnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlEOyB9CiAgICAgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLndlYlBhZ2VJ
RDsgfQotICAgIAorICAgIGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzOyB9CisKICAgICBOZXR3b3JrQ2Fj
aGU6Okdsb2JhbEZyYW1lSUQgZ2xvYmFsRnJhbWVJRCgpIHsgcmV0dXJuIHsgbV9wYXJhbWV0ZXJz
LndlYlBhZ2VQcm94eUlELCBwYWdlSUQoKSwgZnJhbWVJRCgpIH07IH0KIAogICAgIHN0cnVjdCBT
eW5jaHJvbm91c0xvYWREYXRhOwpAQCAtMTIyLDYgKzEyNCwxMSBAQCBwdWJsaWM6CiAKICAgICBi
b29sIGlzS2VwdEFsaXZlKCkgY29uc3QgeyByZXR1cm4gbV9pc0tlcHRBbGl2ZTsgfQogCisjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIHZvaWQgc2VydmljZVdvcmtlckRpZE5vdEhhbmRs
ZSgpOworICAgIHZvaWQgc2V0U2VydmljZVdvcmtlckZldGNoVGFzayhzdGQ6OnVuaXF1ZV9wdHI8
U2VydmljZVdvcmtlckZldGNoVGFzaz4mJik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBOZXR3
b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiwgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseSYmKTsKIApAQCAt
MjIwLDYgKzIyNyw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzS2VwdEFsaXZlIHsgZmFsc2Ug
fTsKIAogICAgIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IG1fbmV0d29ya0FjdGl2
aXR5VHJhY2tlcjsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgc3RkOjp1bmlxdWVf
cHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+IG1fc2VydmljZVdvcmtlckZldGNoVGFzazsKKyNl
bmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlckZldGNoVGFzay5jcHAKaW5kZXggMGRjYjNiM2ZjZjMwM2RlNGNhMzVjYjYzZTZlOWI0MjFj
MjVjMjY2NS4uYTEzODNmZDBmOWUwNTAzOTkxZTVmN2U4MDhiNzNjMTk2ODMwNzVhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJGZXRjaFRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcApAQCAtMzIsMTAgKzMyLDEzIEBA
CiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkZvcm1EYXRhUmVmZXJlbmNl
LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRG
ZXRjaE1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZGVyLmgiCisjaW5j
bHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1
bWVudENvZGVycy5oIgotI2luY2x1ZGUgIldlYlNXU2VydmVyQ29ubmVjdGlvbi5oIgorI2luY2x1
ZGUgIldlYlJlc291cmNlTG9hZGVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRy
b2wuaD4KIAogI2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNF
X0xPR19JRihtX3Nlc3Npb25JRC5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgU2VydmljZVdv
cmtlciwgIiVwIC0gU2VydmljZVdvcmtlckZldGNoVGFzazo6IiBmbXQsIHRoaXMsICMjX19WQV9B
UkdTX18pCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJF
TEVBU0VfTE9HX0VSUk9SX0lGKG1fc2Vzc2lvbklELmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgp
LCBTZXJ2aWNlV29ya2VyLCAiJXAgLSBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjoiIGZtdCwgdGhp
cywgIyNfX1ZBX0FSR1NfXykKQEAgLTQ0LDgyICs0NywxMTYgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24m
IGNvbnRleHRDb25uZWN0aW9uLCBGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyLCBTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2Vjb25kcyB0aW1l
b3V0KQorU2VydmljZVdvcmtlckZldGNoVGFzazo6U2VydmljZVdvcmtlckZldGNoVGFzayhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIE5ldHdvcmtSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBTV1Nl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKICAgICA6IG1fc2Vz
c2lvbklEKHNlc3Npb25JRCkKLSAgICAsIG1fY29ubmVjdGlvbihtYWtlV2Vha1B0cihjb25uZWN0
aW9uKSkKLSAgICAsIG1fY29udGV4dENvbm5lY3Rpb24oY29udGV4dENvbm5lY3Rpb24pCi0gICAg
LCBtX2lkZW50aWZpZXIgeyBjb25uZWN0aW9uLmlkZW50aWZpZXIoKSwgZmV0Y2hJZGVudGlmaWVy
IH0KKyAgICAsIG1fbG9hZGVyKGxvYWRlcikKKyAgICAsIG1fZmV0Y2hJZGVudGlmaWVyKFdlYkNv
cmU6OkZldGNoSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKKyAgICAsIG1fc2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpCiAgICAgLCBtX3NlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQotICAgICwgbV90aW1lb3V0
KHRpbWVvdXQpCi0gICAgLCBtX3RpbWVvdXRUaW1lcigqdGhpcywgJlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2s6OnRpbWVvdXRUaW1lckZpcmVkKQogewotICAgIG1fdGltZW91dFRpbWVyLnN0YXJ0T25l
U2hvdChtX3RpbWVvdXQpOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJl
Y2VpdmVSZWRpcmVjdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQor
U2VydmljZVdvcmtlckZldGNoVGFzazo6flNlcnZpY2VXb3JrZXJGZXRjaFRhc2soKQogewotICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlOiAlcyIs
IG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwotICAgIG1fd2FzSGFuZGxlZCA9IHRydWU7Ci0gICAgaWYgKG1fY29ubmVjdGlvbikKLSAg
ICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0
Y2g6OkRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlIHsgcmVzcG9uc2UgfSwgbV9pZGVudGlmaWVy
LmZldGNoSWRlbnRpZmllcik7CisgICAgaWYgKG1fc2VydmljZVdvcmtlckNvbm5lY3Rpb24pCisg
ICAgICAgIG1fc2VydmljZVdvcmtlckNvbm5lY3Rpb24tPnVucmVnaXN0ZXJGZXRjaCgqdGhpcyk7
CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2VNZXNzYWdlKQordm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpzdGFydChX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIHNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKQog
ewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogJXMiLCBt
X2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKLSAgICBtX3dhc0hhbmRsZWQgPSB0cnVlOwotICAgIGlmIChtX2Nvbm5lY3Rpb24pCi0gICAg
ICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNo
OjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSwgbmVlZHNDb250aW51ZURpZFJlY2VpdmVS
ZXNwb25zZU1lc3NhZ2UgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllcik7CisgICAgbV9z
ZXJ2aWNlV29ya2VyQ29ubmVjdGlvbiA9IG1ha2VXZWFrUHRyKHNlcnZpY2VXb3JrZXJDb25uZWN0
aW9uKTsKKyAgICBzZXJ2aWNlV29ya2VyQ29ubmVjdGlvbi5yZWdpc3RlckZldGNoKCp0aGlzKTsK
KworICAgIHN0YXJ0RmV0Y2goUmVzb3VyY2VSZXF1ZXN0IHsgbV9sb2FkZXIub3JpZ2luYWxSZXF1
ZXN0KCkgfSwgc2VydmljZVdvcmtlckNvbm5lY3Rpb24pOworfQorCit2b2lkIFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OnN0YXJ0RmV0Y2goUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBzZXJ2aWNlV29ya2VyQ29ubmVjdGlvbikKK3sKKyAg
ICBtX2N1cnJlbnRSZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KTsKKworICAgIGF1dG8mIG9wdGlv
bnMgPSBtX2xvYWRlci5wYXJhbWV0ZXJzKCkub3B0aW9uczsKKyAgICBhdXRvIHJlZmVycmVyID0g
bV9jdXJyZW50UmVxdWVzdC5odHRwUmVmZXJyZXIoKTsKKworICAgIC8vIFdlIGFyZSBpbnRlcmNl
cHRpbmcgZmV0Y2ggY2FsbHMgYWZ0ZXIgZ29pbmcgdGhyb3VnaCB0aGUgSFRUUCBsYXllciwgd2hp
Y2ggbWF5IGFkZCBzb21lIHNwZWNpZmljIGhlYWRlcnMuCisgICAgY2xlYW5IVFRQUmVxdWVzdEhl
YWRlcnNGb3JBY2Nlc3NDb250cm9sKG1fY3VycmVudFJlcXVlc3QsIG1fbG9hZGVyLnBhcmFtZXRl
cnMoKS5odHRwSGVhZGVyc1RvS2VlcCk7CisKKyAgICBzZXJ2aWNlV29ya2VyQ29ubmVjdGlvbi5p
cGNDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b246OlN0YXJ0RmV0Y2ggeyBtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBtX3NlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBtX2ZldGNoSWRlbnRpZmllciwgbV9jdXJyZW50UmVxdWVzdCwgb3B0
aW9ucywgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSB7IG1fY3VycmVudFJlcXVlc3QuaHR0cEJvZHko
KSB9LCByZWZlcnJlciB9LCAwKTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpk
aWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UpCit7
CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2U6
ICVzIiwgbV9mZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwor
CisgICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6U2Vydmlj
ZVdvcmtlcik7CisgICAgYXV0byBuZXdSZXF1ZXN0ID0gbV9jdXJyZW50UmVxdWVzdC5yZWRpcmVj
dGVkUmVxdWVzdChyZXNwb25zZSwgbV9sb2FkZXIucGFyYW1ldGVycygpLnNob3VsZENsZWFyUmVm
ZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QpOworCisgICAgY2xpZW50Q29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpXaWxsU2VuZFJlcXVlc3QgeyBuZXdSZXF1
ZXN0LCByZXNwb25zZSB9LCBtX2xvYWRlci5pZGVudGlmaWVyKCkpOworfQorCit2b2lkIFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYg
cmVzcG9uc2UsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCit7
CisgICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6U2Vydmlj
ZVdvcmtlcik7CisKKyAgICBjbGllbnRDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViUmVz
b3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJlc3BvbnNlLCBuZWVkc0NvbnRpbnVl
RGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB9LCBtX2xvYWRlci5pZGVudGlmaWVyKCkpOwogfQog
CiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKLSAgICBp
ZiAobV9jb25uZWN0aW9uKQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNl
cnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZURhdGEgeyBkYXRhLCBlbmNvZGVkRGF0
YUxlbmd0aCB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKKyAgICBjbGllbnRDb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRh
IHsgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHsgZGF0YS5kYXRhKCksIGRhdGEuc2l6
ZSgpIH0sIGVuY29kZWREYXRhTGVuZ3RoIH0sIG1fbG9hZGVyLmlkZW50aWZpZXIoKSk7CiB9CiAK
IHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZUZvcm1EYXRhKGNvbnN0IElQ
Qzo6Rm9ybURhdGFSZWZlcmVuY2UmIGZvcm1EYXRhKQogewotICAgIGlmIChtX2Nvbm5lY3Rpb24p
Ci0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVu
dEZldGNoOjpEaWRSZWNlaXZlRm9ybURhdGEgeyBmb3JtRGF0YSB9LCBtX2lkZW50aWZpZXIuZmV0
Y2hJZGVudGlmaWVyKTsKKyAgICAvLyBGSVhNRTogQWxsb3cgV2ViUmVzb3VyY2VMb2FkZXIgdG8g
cmVjZWl2ZSBmb3JtIGRhdGEuCiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlk
RmluaXNoKCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGaW5pc2hGZXRjaDog
ZmV0Y2hJZGVudGlmaWVyOiAlcyIsIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIubG9nZ2lu
Z1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIG1fdGltZW91dFRpbWVyLnN0b3AoKTsKLSAg
ICBpZiAoIW1fZGlkUmVhY2hUZXJtaW5hbFN0YXRlICYmIG1fY29ubmVjdGlvbikKLSAgICAgICAg
bV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRp
ZEZpbmlzaCB7IH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOwotICAgIG1fZGlkUmVh
Y2hUZXJtaW5hbFN0YXRlID0gdHJ1ZTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRG
aW5pc2hGZXRjaDogZmV0Y2hJZGVudGlmaWVyOiAlcyIsIG1fZmV0Y2hJZGVudGlmaWVyLmxvZ2dp
bmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBjbGllbnRDb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZpbmlzaFJlc291cmNlTG9hZCB7IHsgfSB9
LCBtX2xvYWRlci5pZGVudGlmaWVyKCkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgUkVMRUFTRV9M
T0dfRVJST1JfSUZfQUxMT1dFRCgiZGlkRmFpbEZldGNoOiBmZXRjaElkZW50aWZpZXI6ICVzIiwg
bV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7Ci0gICAgbV90aW1lb3V0VGltZXIuc3RvcCgpOwotICAgIGlmICghbV9kaWRSZWFjaFRlcm1p
bmFsU3RhdGUgJiYgbV9jb25uZWN0aW9uKQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkRmFpbCB7IGVycm9yIH0sIG1faWRl
bnRpZmllci5mZXRjaElkZW50aWZpZXIpOwotICAgIG1fZGlkUmVhY2hUZXJtaW5hbFN0YXRlID0g
dHJ1ZTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJkaWRGYWlsRmV0Y2g6IGZl
dGNoSWRlbnRpZmllcjogJXMiLCBtX2ZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CisgICAgbV9sb2FkZXIuZGlkRmFpbExvYWRpbmcoZXJyb3IpOwogfQogCiB2
b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZE5vdEhhbmRsZSgpCiB7Ci0gICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgiZGlkTm90SGFuZGxlRmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMi
LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKLSAgICBtX3RpbWVvdXRUaW1lci5zdG9wKCk7Ci0gICAgaWYgKCFtX2RpZFJlYWNoVGVy
bWluYWxTdGF0ZSAmJiBtX2Nvbm5lY3Rpb24pCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChN
ZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWROb3RIYW5kbGUgeyB9LCBtX2lk
ZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKLSAgICBtX2RpZFJlYWNoVGVybWluYWxTdGF0ZSA9
IHRydWU7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkTm90SGFuZGxlRmV0Y2g6IGZl
dGNoSWRlbnRpZmllcjogJXMiLCBtX2ZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CisgICAgaWYgKG1fbG9hZGVyLnBhcmFtZXRlcnMoKS5zZXJ2aWNlV29ya2Vy
c01vZGUgPT0gU2VydmljZVdvcmtlcnNNb2RlOjpPbmx5KSB7CisgICAgICAgIGNsaWVudENvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6U2VydmljZVdvcmtlckRp
ZE5vdEhhbmRsZSB7IH0sIG1fbG9hZGVyLmlkZW50aWZpZXIoKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgbV9sb2FkZXIuc2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSgpOworfQorCit2
b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmNhbmNlbEZyb21DbGllbnQoKQoreworICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoImNhbmNlbEZyb21DbGllbnQ6IGZldGNoSWRlbnRpZmllcjog
JXMiLCBtX2ZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Cisg
ICAgaWYgKG1fc2VydmljZVdvcmtlckNvbm5lY3Rpb24pCisgICAgICAgIG1fc2VydmljZVdvcmtl
ckNvbm5lY3Rpb24tPmlwY0Nvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbjo6Q2FuY2VsRmV0Y2ggeyBtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyLCBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBtX2ZldGNoSWRlbnRpZmllciB9LCAwKTsK
K30KKwordm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpjb250aW51ZURpZFJlY2VpdmVGZXRj
aFJlc3BvbnNlKCkKK3sKKyAgICBpZiAobV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbikKKyAgICAg
ICAgbV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbi0+aXBjQ29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpDb250aW51ZURpZFJlY2VpdmVGZXRj
aFJlc3BvbnNlIHsgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgbV9zZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgbV9mZXRjaElkZW50aWZpZXIgfSwgMCk7CiB9CiAKLXZvaWQgU2VydmljZVdv
cmtlckZldGNoVGFzazo6dGltZW91dFRpbWVyRmlyZWQoKQordm9pZCBTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrOjpjb250aW51ZUZldGNoVGFza1dpdGgoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkK
IHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ0aW1lb3V0VGltZXJGaXJlZDogZmV0Y2hJ
ZGVudGlmaWVyOiAlcyIsIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIGlmICghbV93YXNIYW5kbGVkKQotICAgICAgICBkaWRO
b3RIYW5kbGUoKTsKLSAgICBlbHNlCi0gICAgICAgIGRpZEZhaWwoeyBlcnJvckRvbWFpbldlYktp
dEludGVybmFsLCAwLCB7IH0sICJTZXJ2aWNlIFdvcmtlciBmZXRjaCB0aW1lZCBvdXQiX3MgfSk7
CisgICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJDb25uZWN0aW9uKSB7CisgICAgICAgIG1fbG9hZGVy
LnNlcnZpY2VXb3JrZXJEaWROb3RIYW5kbGUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBzdGFydEZldGNoKFdURk1vdmUocmVxdWVzdCksICptX3NlcnZpY2VXb3JrZXJDb25uZWN0aW9u
KTsKK30KIAotICAgIG1fY29udGV4dENvbm5lY3Rpb24uZmV0Y2hUYXNrVGltZWRPdXQoKnRoaXMp
OworSVBDOjpDb25uZWN0aW9uJiBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpjbGllbnRDb25uZWN0
aW9uKCkKK3sKKyAgICByZXR1cm4gbV9sb2FkZXIuY29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNv
bm5lY3Rpb24oKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNo
VGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJGZXRjaFRhc2suaAppbmRleCA2YWRkMGQwZTdmZDUzOTM2ZDFmOGNiMWUxZjgzOGFh
OWJhMjNiMjE0Li5lMTljMGE5N2UwNDA3NDA3ZmE0MGZhZTY4MTJhZTFkOWNkOWMwYWYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlckZldGNoVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKQEAgLTI4LDEzICsyOCwxNSBAQAog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hJZGVu
dGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIu
aD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBSZXNvdXJjZUVycm9yOworY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZTsKIH0KIApAQCAtNDcsODUgKzQ5LDUwIEBAIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNl
OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOwor
Y2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZGVyOwogY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOwogCi1jbGFzcyBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrIDogcHVibGljIFJlZkNv
dW50ZWQ8U2VydmljZVdvcmtlckZldGNoVGFzaz4geworY2xhc3MgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOworY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOworCitjbGFzcyBTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2s+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBzdGF0aWMgUmVmPFNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2soc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4u
KSk7Ci0gICAgfQorICAgIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2soUEFMOjpTZXNzaW9uSUQsIE5l
dHdvcmtSZXNvdXJjZUxvYWRlciYsIFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKyAgICB+U2VydmljZVdvcmtl
ckZldGNoVGFzaygpOwogCi0gICAgdm9pZCBkaWROb3RIYW5kbGUoKTsKKyAgICB2b2lkIHN0YXJ0
KFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpOworICAgIHZvaWQgY2FuY2VsRnJvbUNs
aWVudCgpOwogICAgIHZvaWQgZmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJv
cikgeyBkaWRGYWlsKGVycm9yKTsgfQogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAKLSAgICBzdHJ1Y3QgSWRlbnRpZmllciB7Ci0g
ICAgICAgIFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgY29ubmVjdGlvbklk
ZW50aWZpZXI7Ci0gICAgICAgIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZp
ZXI7Ci0gICAgICAgIAotICAgICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKLSAgICAgICAgewot
ICAgICAgICAgICAgdW5zaWduZWQgaGFzaGVzWzJdOwotICAgICAgICAgICAgaGFzaGVzWzBdID0g
V1RGOjppbnRIYXNoKGNvbm5lY3Rpb25JZGVudGlmaWVyLnRvVUludDY0KCkpOwotICAgICAgICAg
ICAgaGFzaGVzWzFdID0gV1RGOjppbnRIYXNoKGZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsK
LSAgICAgICAgICAgIHJldHVybiBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnkoaGFzaGVzLCBzaXpl
b2YoaGFzaGVzKSk7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgY29uc3QgSWRlbnRpZmllciYg
aWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQotICAgIGNvbnN0IFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyJiBzZXJ2aWNlV29ya2VySWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdvcmtlcklkZW50aWZpZXI7IH0KLSAgICBib29sIHdh
c0hhbmRsZWQoKSBjb25zdCB7IHJldHVybiBtX3dhc0hhbmRsZWQ7IH0KKyAgICB2b2lkIGNvbnRp
bnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoKTsKKyAgICB2b2lkIGNvbnRpbnVlRmV0Y2hUYXNr
V2l0aChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAKLXByaXZhdGU6Ci0gICAgU2Vydmlj
ZVdvcmtlckZldGNoVGFzayhQQUw6OlNlc3Npb25JRCwgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiwg
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVy
LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2Vjb25kcyB0aW1lb3V0KTsKKyAg
ICBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1
cm4gbV9mZXRjaElkZW50aWZpZXI7IH0KKyAgICBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdv
cmtlcklkZW50aWZpZXI7IH0KKworICAgIHZvaWQgZGlkTm90SGFuZGxlKCk7CiAKLSAgICB2b2lk
IGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSk7
Citwcml2YXRlOgorICAgIHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25z
ZU1lc3NhZ2UpOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlRm9y
bURhdGEoY29uc3QgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYpOwogICAgIHZvaWQgZGlkRmluaXNo
KCk7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKLSAg
ICB2b2lkIHRpbWVvdXRUaW1lckZpcmVkKCk7Ci0KLSAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Np
b25JRDsKLSAgICBXZWFrUHRyPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwot
ICAgIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgbV9jb250ZXh0Q29ubmVjdGlvbjsK
LSAgICBJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKLSAgICBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyOwotICAgIFNlY29uZHMgbV90aW1l
b3V0OwotICAgIFdlYkNvcmU6OlRpbWVyIG1fdGltZW91dFRpbWVyOwotICAgIGJvb2wgbV93YXNI
YW5kbGVkIHsgZmFsc2UgfTsKLSAgICBib29sIG1fZGlkUmVhY2hUZXJtaW5hbFN0YXRlIHsgZmFs
c2UgfTsKLX07Ci0KLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU2VydmljZVdvcmtlckZl
dGNoVGFzazo6SWRlbnRpZmllciYgYSwgY29uc3QgU2VydmljZVdvcmtlckZldGNoVGFzazo6SWRl
bnRpZmllciYgYikKLXsKLSAgICByZXR1cm4gYS5jb25uZWN0aW9uSWRlbnRpZmllciA9PSBiLmNv
bm5lY3Rpb25JZGVudGlmaWVyICYmICBhLmZldGNoSWRlbnRpZmllciA9PSBiLmZldGNoSWRlbnRp
ZmllcjsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KIAotbmFtZXNwYWNlIFdURiB7Cisg
ICAgdm9pZCBzdGFydEZldGNoKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24mKTsKIAotc3RydWN0IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2tJ
ZGVudGlmaWVySGFzaCB7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgV2ViS2l0OjpT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpJZGVudGlmaWVyJiBrZXkpIHsgcmV0dXJuIGtleS5oYXNo
KCk7IH0KLSAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBXZWJLaXQ6OlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2s6OklkZW50aWZpZXImIGEsIGNvbnN0IFdlYktpdDo6U2VydmljZVdvcmtlckZldGNo
VGFzazo6SWRlbnRpZmllciYgYikgeyByZXR1cm4gYSA9PSBiOyB9Ci0gICAgc3RhdGljIGNvbnN0
IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOwotfTsKLQotdGVtcGxh
dGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6Oklk
ZW50aWZpZXI+IDogR2VuZXJpY0hhc2hUcmFpdHM8V2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrOjpJZGVudGlmaWVyPiB7Ci0gICAgc3RhdGljIFdlYktpdDo6U2VydmljZVdvcmtlckZldGNo
VGFzazo6SWRlbnRpZmllciBlbXB0eVZhbHVlKCkgeyByZXR1cm4geyB9OyB9Ci0gICAgCi0gICAg
c3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFdlYktpdDo6U2VydmljZVdvcmtlckZl
dGNoVGFzazo6SWRlbnRpZmllciYgc2xvdCkgeyBzbG90LmNvbm5lY3Rpb25JZGVudGlmaWVyID0g
bWFrZU9iamVjdElkZW50aWZpZXI8V2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
clR5cGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSk7IH0KLSAgICAKLSAg
ICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBXZWJLaXQ6OlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2s6OklkZW50aWZpZXImIHNsb3QpIHsgcmV0dXJuIHNsb3QuY29ubmVjdGlvbklkZW50
aWZpZXIudG9VSW50NjQoKSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCk7
IH0KLX07CisgICAgSVBDOjpDb25uZWN0aW9uJiBjbGllbnRDb25uZWN0aW9uKCk7CiAKLXRlbXBs
YXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6
SWRlbnRpZmllcj4gewotICAgIHVzaW5nIEhhc2ggPSBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrSWRl
bnRpZmllckhhc2g7CisgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CisgICAgTmV0d29y
a1Jlc291cmNlTG9hZGVyJiBtX2xvYWRlcjsKKyAgICBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIg
bV9mZXRjaElkZW50aWZpZXI7CisgICAgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciBtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyOworICAgIFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIG1fc2VydmljZVdvcmtlcklkZW50aWZpZXI7CisgICAgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0IG1fY3VycmVudFJlcXVlc3Q7CisgICAgV2Vha1B0cjxXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24+IG1fc2VydmljZVdvcmtlckNvbm5lY3Rpb247CiB9OwogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IDc5ZTMyNjVjZWQx
ZWEyNGU4NzViZTUyMGI3OTMyZTg1YjY0MDMxM2YuLmYxNGFjYjgxNDU3ZmNiOTBhNTA0NjQ2OTRk
N2Y2OGNlNzA0MGMyMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3Bw
CkBAIC0zMywxNiArMzMsMTggQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzLmgiCi0jaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZXMuaCIK
KyNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIldlYlNXQ2xpZW50Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNXU2Vy
dmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudElkZW50aWZpZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0V4Y2VwdGlvbkRhdGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0xlZ2Fj
eVNjaGVtZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NlY3VyaXR5T3JpZ2luLmg+CkBAIC01Myw2ICs1NSw3IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9TZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUuaD4KICNpbmNsdWRlIDx3dGYvQWxnb3JpdGht
cy5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL1Njb3BlLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFBBTDsKQEAgLTEyNiwxOCAr
MTI5LDggQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnVwZGF0ZVdvcmtlclN0YXRlSW5D
bGllbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgd28KICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJT
V0NsaWVudENvbm5lY3Rpb246OlVwZGF0ZVdvcmtlclN0YXRlKHdvcmtlciwgc3RhdGUpKTsKIH0K
IAotdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmNhbmNlbEZldGNoKFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
LCBGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyKQordm9pZCBXZWJTV1NlcnZlckNvbm5l
Y3Rpb246OmNhbmNlbEZldGNoKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBG
ZXRjaElkZW50aWZpZXIpCiB7Ci0gICAgU1dTRVJWRVJDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoImNhbmNlbEZldGNoOiAlcyIsIGZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgYXV0byogd29ya2VyID0gc2VydmVyKCkuYWN0aXZlV29y
a2VyRnJvbVJlZ2lzdHJhdGlvbklEKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
KTsKLSAgICBpZiAoIXdvcmtlciB8fCAhd29ya2VyLT5pc1J1bm5pbmcoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgYXV0byBzZXJ2aWNlV29ya2VySWRlbnRpZmllciA9IHdvcmtlci0+aWRlbnRp
ZmllcigpOwotICAgIHNlcnZlcigpLnJ1blNlcnZpY2VXb3JrZXJJZk5lY2Vzc2FyeShzZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHRoaXMsIHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXJdKGF1dG8qIGNvbnRleHRDb25u
ZWN0aW9uKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKHdlYWtUaGlzICYmIGNvbnRleHRDb25uZWN0
aW9uKQotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uJj4oKmNvbnRleHRDb25uZWN0aW9uKS5jYW5jZWxGZXRjaCh0aGlzLT5pZGVudGlmaWVyKCks
IGZldGNoSWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwotICAgIH0pOwogfQog
CiB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNw
b25zZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uSWRlbnRpZmllciwgRmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllcikKQEAg
LTE1Myw1OSArMTQ2LDk2IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpjb250aW51ZURp
ZFJlY2VpdmVGZXRjaFJlc3BvbnNlKFNlcnZpY2VXb3JrZXJSZWdpc3RyCiAgICAgfSk7CiB9CiAK
LXZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzdGFydEZldGNoKFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBG
ZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgZm9ybURh
dGEsIFN0cmluZyYmIHJlZmVycmVyKQorc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJGZXRj
aFRhc2s+IFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y3JlYXRlRmV0Y2hUYXNrKE5ldHdvcmtSZXNv
dXJjZUxvYWRlciYgbG9hZGVyKQogewotICAgIGF1dG8qIHdvcmtlciA9IHNlcnZlcigpLmFjdGl2
ZVdvcmtlckZyb21SZWdpc3RyYXRpb25JRChzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRp
Zmllcik7CisgICAgYXV0byBzY29wZSA9IG1ha2VTY29wZUV4aXQoWyZsb2FkZXJdIHsKKyAgICAg
ICAgaWYgKGxvYWRlci5wYXJhbWV0ZXJzKCkuc2VydmljZVdvcmtlcnNNb2RlID09IFNlcnZpY2VX
b3JrZXJzTW9kZTo6T25seSkKKyAgICAgICAgICAgIGxvYWRlci5jb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpTZXJ2
aWNlV29ya2VyRGlkTm90SGFuZGxlIHsgfSwgbG9hZGVyLmlkZW50aWZpZXIoKSk7CisgICAgfSk7
CisgICAgCisgICAgaWYgKCFsb2FkZXIucGFyYW1ldGVycygpLnNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25JZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAKKyAgICBpZiAo
bG9hZGVyLnBhcmFtZXRlcnMoKS5zZXJ2aWNlV29ya2Vyc01vZGUgPT0gU2VydmljZVdvcmtlcnNN
b2RlOjpOb25lKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAKKyAgICBpZiAoaXNQb3Rl
bnRpYWxOYXZpZ2F0aW9uT3JTdWJyZXNvdXJjZVJlcXVlc3QobG9hZGVyLnBhcmFtZXRlcnMoKS5v
cHRpb25zLmRlc3RpbmF0aW9uKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgCisgICAg
aWYgKCFMZWdhY3lTY2hlbWVSZWdpc3RyeTo6Y2FuU2VydmljZVdvcmtlcnNIYW5kbGVVUkxTY2hl
bWUobG9hZGVyLm9yaWdpbmFsUmVxdWVzdCgpLnVybCgpLnByb3RvY29sKCkudG9TdHJpbmdXaXRo
b3V0Q29weWluZygpKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgCisgICAgYXV0byog
d29ya2VyID0gc2VydmVyKCkuYWN0aXZlV29ya2VyRnJvbVJlZ2lzdHJhdGlvbklEKCpsb2FkZXIu
cGFyYW1ldGVycygpLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKICAgICBp
ZiAoIXdvcmtlcikgewotICAgICAgICBTV1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJS
T1JfSUZfQUxMT1dFRCgic3RhcnRGZXRjaDogZmV0Y2hJZGVudGlmaWVyOiAlcyAtPiBEaWROb3RI
YW5kbGUgYmVjYXVzZSBubyBhY3RpdmUgd29ya2VyIiwgZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdT
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgbV9jb250ZW50Q29ubmVjdGlvbi0+c2Vu
ZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWROb3RIYW5kbGUgeyB9LCBm
ZXRjaElkZW50aWZpZXIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIFNXU0VSVkVSQ09OTkVD
VElPTl9SRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJzdGFydEZldGNoOiBEaWROb3RIYW5k
bGUgYmVjYXVzZSBubyBhY3RpdmUgd29ya2VyICVzIiwgbG9hZGVyLnBhcmFtZXRlcnMoKS5zZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllci0+bG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgYXV0byBzZXJ2aWNl
V29ya2VySWRlbnRpZmllciA9IHdvcmtlci0+aWRlbnRpZmllcigpOwogCi0gICAgYXV0byBydW5T
ZXJ2ZXJXb3JrZXJBbmRTdGFydEZldGNoID0gW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyks
IHRoaXMsIGZldGNoSWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHJlcXVlc3Qg
PSBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zID0gV1RGTW92ZShvcHRpb25zKSwgZm9ybURhdGEg
PSBXVEZNb3ZlKGZvcm1EYXRhKSwgcmVmZXJyZXIgPSBXVEZNb3ZlKHJlZmVycmVyKV0oYm9vbCBz
dWNjZXNzKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICBpZiAod29ya2Vy
LT5zaG91bGRTa2lwRmV0Y2hFdmVudCgpKSB7CisgICAgICAgIGF1dG8qIHJlZ2lzdHJhdGlvbiA9
IHNlcnZlcigpLmdldFJlZ2lzdHJhdGlvbih3b3JrZXItPnJlZ2lzdHJhdGlvbktleSgpKTsKKyAg
ICAgICAgaWYgKHJlZ2lzdHJhdGlvbiAmJiByZWdpc3RyYXRpb24tPnNob3VsZFNvZnRVcGRhdGUo
bG9hZGVyLnBhcmFtZXRlcnMoKS5vcHRpb25zKSkKKyAgICAgICAgICAgIHJlZ2lzdHJhdGlvbi0+
c29mdFVwZGF0ZSgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBzY29w
ZS5yZWxlYXNlKCk7CisKKyAgICBhdXRvIHRhc2sgPSBtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2s+KHNlc3Npb25JRCgpLCBsb2FkZXIsIGlkZW50aWZpZXIoKSwgd29ya2VyLT5pZGVu
dGlmaWVyKCkpOworICAgIHN0YXJ0RmV0Y2goKnRhc2ssICp3b3JrZXIpOworICAgIHJldHVybiB0
YXNrOworfQorCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaChTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrJiB0YXNrLCBTV1NlcnZlcldvcmtlciYgd29ya2VyKQoreworICAgIGF1
dG8gcnVuU2VydmVyV29ya2VyQW5kU3RhcnRGZXRjaCA9IFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KHRoaXMpLCB0aGlzLCB0YXNrID0gbWFrZVdlYWtQdHIodGFzayldKGJvb2wgc3VjY2VzcykgbXV0
YWJsZSB7CisgICAgICAgIGlmICghdGFzaykKICAgICAgICAgICAgIHJldHVybjsKIAorICAgICAg
ICBpZiAoIXdlYWtUaGlzKSB7CisgICAgICAgICAgICB0YXNrLT5kaWROb3RIYW5kbGUoKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIGlmICghc3VjY2Vzcykgewot
ICAgICAgICAgICAgU1dTRVJWRVJDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9X
RUQoInN0YXJ0RmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMgRGlkTm90SGFuZGxlIGJlY2F1c2Ug
d29ya2VyIGRpZCBub3QgYmVjb21lIGFjdGl2YXRlZCIsIGZldGNoSWRlbnRpZmllci5sb2dnaW5n
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICBtX2NvbnRlbnRDb25uZWN0aW9u
LT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZE5vdEhhbmRsZSB7
IH0sIGZldGNoSWRlbnRpZmllcik7CisgICAgICAgICAgICBTV1NFUlZFUkNPTk5FQ1RJT05fUkVM
RUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgic3RhcnRGZXRjaDogZmV0Y2hJZGVudGlmaWVyOiAl
cyBEaWROb3RIYW5kbGUgYmVjYXVzZSB3b3JrZXIgZGlkIG5vdCBiZWNvbWUgYWN0aXZhdGVkIiwg
dGFzay0+ZmV0Y2hJZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwor
ICAgICAgICAgICAgdGFzay0+ZGlkTm90SGFuZGxlKCk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAotICAgICAgICBhdXRvKiB3b3JrZXIgPSBzZXJ2ZXIoKS53b3JrZXJCeUlEKHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKLSAgICAgICAgaWYgKCF3b3JrZXIgfHwgd29ya2VyLT5o
YXNUaW1lZE91dEFueUZldGNoVGFza3MoKSkgewotICAgICAgICAgICAgbV9jb250ZW50Q29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWROb3RIYW5k
bGUgeyB9LCBmZXRjaElkZW50aWZpZXIpOworICAgICAgICBhdXRvKiB3b3JrZXIgPSBzZXJ2ZXIo
KS53b3JrZXJCeUlEKHRhc2stPnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCkpOworICAgICAgICBp
ZiAoIXdvcmtlcikgeworICAgICAgICAgICAgdGFzay0+ZGlkTm90SGFuZGxlKCk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBzZXJ2ZXIoKS5ydW5TZXJ2aWNlV29y
a2VySWZOZWNlc3Nhcnkoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFt3ZWFrVGhpcyA9IFdURk1v
dmUod2Vha1RoaXMpLCB0aGlzLCBmZXRjaElkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucyA9IFdURk1vdmUob3B0aW9u
cyksIGZvcm1EYXRhID0gV1RGTW92ZShmb3JtRGF0YSksIHJlZmVycmVyID0gV1RGTW92ZShyZWZl
cnJlciksIHNob3VsZFNraXBGZXRjaEV2ZW50ID0gd29ya2VyLT5zaG91bGRTa2lwRmV0Y2hFdmVu
dCgpXShhdXRvKiBjb250ZXh0Q29ubmVjdGlvbikgewotICAgICAgICAgICAgaWYgKCF3ZWFrVGhp
cykKKyAgICAgICAgaWYgKCF3b3JrZXItPmNvbnRleHRDb25uZWN0aW9uKCkpCisgICAgICAgICAg
ICBzZXJ2ZXIoKS5jcmVhdGVDb250ZXh0Q29ubmVjdGlvbih3b3JrZXItPnJlZ2lzdHJhYmxlRG9t
YWluKCkpOworCisgICAgICAgIHNlcnZlcigpLnJ1blNlcnZpY2VXb3JrZXJJZk5lY2Vzc2FyeSh0
YXNrLT5zZXJ2aWNlV29ya2VySWRlbnRpZmllcigpLCBbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtU
aGlzKSwgdGhpcywgdGFzayA9IFdURk1vdmUodGFzayldKGF1dG8qIGNvbnRleHRDb25uZWN0aW9u
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghdGFzaykKICAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpIHsKKyAgICAgICAg
ICAgICAgICB0YXNrLT5kaWROb3RIYW5kbGUoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChjb250ZXh0Q29ubmVjdGlvbikgewotICAg
ICAgICAgICAgICAgIFNXU0VSVkVSQ09OTkVDVElPTl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKCJz
dGFydEZldGNoOiBTdGFydGluZyBmZXRjaCAlcyB2aWEgc2VydmljZSB3b3JrZXIgJXMiLCBmZXRj
aElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mPigqY29udGV4dENv
bm5lY3Rpb24pLnN0YXJ0RmV0Y2goc2Vzc2lvbklEKCksICp0aGlzLCBmZXRjaElkZW50aWZpZXIs
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCByZXF1ZXN0LCBvcHRpb25zLCBmb3JtRGF0YSwgcmVm
ZXJyZXIpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBTV1NFUlZFUkNP
Tk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgic3RhcnRGZXRjaDogZmV0Y2hJ
ZGVudGlmaWVyOiAlcyBEaWROb3RIYW5kbGUgYmVjYXVzZSBmYWlsZWQgdG8gcnVuIHNlcnZpY2Ug
d29ya2VyLCBvciBzZXJ2aWNlIHdvcmtlciBoYXMgaGFkIHRpbWVkIG91dCBmZXRjaCB0YXNrcyIs
IGZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAg
ICAgICAgICAgbV9jb250ZW50Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtl
ckNsaWVudEZldGNoOjpEaWROb3RIYW5kbGUgeyB9LCBmZXRjaElkZW50aWZpZXIpOworICAgICAg
ICAgICAgaWYgKCFjb250ZXh0Q29ubmVjdGlvbikgeworICAgICAgICAgICAgICAgIFNXU0VSVkVS
Q09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJzdGFydEZldGNoOiBmZXRj
aElkZW50aWZpZXI6ICVzIERpZE5vdEhhbmRsZSBiZWNhdXNlIGZhaWxlZCB0byBydW4gc2Vydmlj
ZSB3b3JrZXIiLCB0YXNrLT5mZXRjaElkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CisgICAgICAgICAgICAgICAgdGFzay0+ZGlkTm90SGFuZGxlKCk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgU1dTRVJWRVJDT05O
RUNUSU9OX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0RmV0Y2g6IFN0YXJ0aW5nIGZldGNo
ICVzIHZpYSBzZXJ2aWNlIHdvcmtlciAlcyIsIHRhc2stPmZldGNoSWRlbnRpZmllcigpLmxvZ2dp
bmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB0YXNrLT5zZXJ2aWNlV29ya2VySWRlbnRpZmllcigp
LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHN0YXRpY19jYXN0
PFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiY+KCpjb250ZXh0Q29ubmVjdGlvbikuc3Rh
cnRGZXRjaCgqdGFzayk7CiAgICAgICAgIH0pOwogICAgIH07Ci0KLSAgICBpZiAod29ya2VyLT5z
aG91bGRTa2lwRmV0Y2hFdmVudCgpKSB7Ci0gICAgICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNl
bmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwg
ZmV0Y2hJZGVudGlmaWVyKTsKLSAgICAgICAgYXV0byogcmVnaXN0cmF0aW9uID0gc2VydmVyKCku
Z2V0UmVnaXN0cmF0aW9uKHdvcmtlci0+cmVnaXN0cmF0aW9uS2V5KCkpOwotICAgICAgICBpZiAo
cmVnaXN0cmF0aW9uICYmIHJlZ2lzdHJhdGlvbi0+c2hvdWxkU29mdFVwZGF0ZShvcHRpb25zKSkK
LSAgICAgICAgICAgIHJlZ2lzdHJhdGlvbi0+c29mdFVwZGF0ZSgpOworICAgIAorICAgIGlmICh3
b3JrZXIuc3RhdGUoKSA9PSBTZXJ2aWNlV29ya2VyU3RhdGU6OkFjdGl2YXRpbmcpIHsKKyAgICAg
ICAgd29ya2VyLndoZW5BY3RpdmF0ZWQoV1RGTW92ZShydW5TZXJ2ZXJXb3JrZXJBbmRTdGFydEZl
dGNoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAod29ya2VyLT5zdGF0ZSgp
ID09IFNlcnZpY2VXb3JrZXJTdGF0ZTo6QWN0aXZhdGluZykgewotICAgICAgICB3b3JrZXItPndo
ZW5BY3RpdmF0ZWQoV1RGTW92ZShydW5TZXJ2ZXJXb3JrZXJBbmRTdGFydEZldGNoKSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgQVNTRVJUKHdvcmtlci0+c3RhdGUoKSA9PSBTZXJ2aWNl
V29ya2VyU3RhdGU6OkFjdGl2YXRlZCk7CisgICAgQVNTRVJUKHdvcmtlci5zdGF0ZSgpID09IFNl
cnZpY2VXb3JrZXJTdGF0ZTo6QWN0aXZhdGVkKTsKICAgICBydW5TZXJ2ZXJXb3JrZXJBbmRTdGFy
dEZldGNoKHRydWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKaW5k
ZXggN2JkMmEzM2NiNThhMzA3NzBlMzk4YmQwNDllNTNlMjI0MjNhM2QyNi4uOTY3OTY4YzI2YmEz
M2U0NTYxNjQ5NjdhMDc5MWIwMjllZjQ4OTc0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNv
bm5lY3Rpb24uaApAQCAtNTIsNiArNTIsOCBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudERh
dGE7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0d29ya1Byb2Nlc3M7CitjbGFzcyBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI7CitjbGFzcyBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOwogCiBj
bGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb24gOiBwdWJsaWMgV2ViQ29yZTo6U1dTZXJ2ZXI6OkNv
bm5lY3Rpb24sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlciB7CiBwdWJsaWM6CkBAIC02Niw2ICs2OCw4IEBAIHB1YmxpYzoKICAgICAKICAgICBQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdDsKIAorICAgIHN0ZDo6dW5pcXVlX3B0cjxT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBjcmVhdGVGZXRjaFRhc2soTmV0d29ya1Jlc291cmNlTG9h
ZGVyJik7CisKIHByaXZhdGU6CiAgICAgLy8gSW1wbGVtZW50IFNXU2VydmVyOjpDb25uZWN0aW9u
IChNZXNzYWdlcyB0byB0aGUgY2xpZW50IFdlYlByb2Nlc3MpCiAgICAgdm9pZCByZWplY3RKb2JJ
bkNsaWVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6RXhjZXB0aW9uRGF0YSYpIGZpbmFsOwpAQCAtODIsNyArODYsOSBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBzY2hlZHVsZUpvYkluU2VydmVyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRh
JiYpOwogCi0gICAgdm9pZCBzdGFydEZldGNoKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmJiwgSVBDOjpGb3JtRGF0YVJlZmVy
ZW5jZSYmLCBTdHJpbmcmJiByZWZlcnJlcik7CisgICAgYm9vbCBoYW5kbGVGZXRjaChOZXR3b3Jr
UmVzb3VyY2VMb2FkZXImKTsKKworICAgIHZvaWQgc3RhcnRGZXRjaChTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrJiwgV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXImKTsKICAgICB2b2lkIGNhbmNlbEZldGNo
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpG
ZXRjaElkZW50aWZpZXIpOwogICAgIHZvaWQgY29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25z
ZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6
RmV0Y2hJZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggYWIyNDY4ZThjZTNjYjVjNmRkZmM4MjhjZTc1YmZkOGMx
ZjYyN2VkNy4uM2RhNjRkOTg3NGVjMWQ3ZjdlYjI5ZDRjN2ZkZTU2N2EyZWM1NDFhMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0y
OSwxMCArMjksNiBAQCBtZXNzYWdlcyAtPiBXZWJTV1NlcnZlckNvbm5lY3Rpb24gewogICAgIEFk
ZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIFJlbW92ZVNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JblNlcnZlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllciBpZGVudGlmaWVyKQogCi0gICAgU3RhcnRGZXRjaChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRl
bnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllciwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHN0cnVjdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMg
b3B0aW9ucywgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSwgU3RyaW5nIHJlZmVy
cmVyKQotICAgIENhbmNlbEZldGNoKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpG
ZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyKQotICAgIENvbnRpbnVlRGlkUmVjZWl2ZUZl
dGNoUmVzcG9uc2UoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIg
c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRp
ZmllciBmZXRjaElkZW50aWZpZXIpCi0KICAgICBQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlvbiwgc3RydWN0IFdlYkNv
cmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2UsIFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJPckNsaWVudElkZW50aWZpZXIgc291cmNlKQogCiAgICAgRGlkUmVzb2x2ZVJlZ2lzdHJhdGlv
blByb21pc2UoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSBrZXkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmluZGV4
IGUzNmJiMTIxZDU2MDgwMjNlMzdhNDc2OGVhNDliMTc1MmQwN2JjYmMuLjY0NTlhNGIzZjYyYmRk
YWYwYjgwYWUxZDAwNzA5ODk4OGE5Mzg1ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0xNTIsMzkgKzE1MiwxNCBAQCB2b2lk
IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6dGVybWluYXRlKCkKICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VGVybWluYXRlUHJvY2Vzcygp
KTsKIH0KIAotdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnN0YXJ0RmV0Y2go
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJTV1NlcnZlckNvbm5lY3Rpb24mIGNvbnRlbnRD
b25uZWN0aW9uLCBGZXRjaElkZW50aWZpZXIgY29udGVudEZldGNoSWRlbnRpZmllciwgU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBJUEM6
OkZvcm1EYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQordm9pZCBX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnN0YXJ0RmV0Y2goU2VydmljZVdvcmtlckZl
dGNoVGFzayYgdGFzaykKIHsKLSAgICBhdXRvIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyID0g
Y29udGVudENvbm5lY3Rpb24uaWRlbnRpZmllcigpOwotICAgIGF1dG8gZmV0Y2hJZGVudGlmaWVy
ID0gRmV0Y2hJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwotCi0gICAgYXV0byByZXN1bHQgPSBtX29u
Z29pbmdGZXRjaGVzLmFkZChmZXRjaElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6
OmNyZWF0ZShzZXNzaW9uSUQsIGNvbnRlbnRDb25uZWN0aW9uLCAqdGhpcywgY29udGVudEZldGNo
SWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIG1fbmV0d29ya1Byb2Nlc3MtPnNl
cnZpY2VXb3JrZXJGZXRjaFRpbWVvdXQoKSkpOwotCi0gICAgQVNTRVJUKCFtX29uZ29pbmdGZXRj
aElkZW50aWZpZXJzLmNvbnRhaW5zKHsgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnRl
bnRGZXRjaElkZW50aWZpZXIgfSkpOwotICAgIG1fb25nb2luZ0ZldGNoSWRlbnRpZmllcnMuYWRk
KHsgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnRlbnRGZXRjaElkZW50aWZpZXIgfSwg
ZmV0Y2hJZGVudGlmaWVyKTsKLQotICAgIGlmICghc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb246OlN0YXJ0RmV0Y2ggeyBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGZldGNoSWRlbnRpZmllciwgcmVxdWVzdCwgb3B0
aW9ucywgZGF0YSwgcmVmZXJyZXIgfSkpCi0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUt
PmRpZE5vdEhhbmRsZSgpOworICAgIHRhc2suc3RhcnQoKnRoaXMpOwogfQogCi12b2lkIFdlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y2FuY2VsRmV0Y2goV2ViQ29yZTo6U1dTZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgRmV0Y2hJZGVu
dGlmaWVyIGNvbnRlbnRGZXRjaElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKQordm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoV2ViQ29yZTo6U1dTZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciwgRmV0Y2hJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmll
cikKIHsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVycy5maW5k
KHsgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnRlbnRGZXRjaElkZW50aWZpZXIgfSk7
Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb25nb2luZ0ZldGNoSWRlbnRpZmllcnMuZW5kKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uOjpDYW5jZWxGZXRjaCB7IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBzZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgaXRlcmF0b3ItPnZhbHVlIH0pOwotCi0gICAgbV9vbmdvaW5n
RmV0Y2hlcy5yZW1vdmUoaXRlcmF0b3ItPnZhbHVlKTsKLSAgICBtX29uZ29pbmdGZXRjaElkZW50
aWZpZXJzLnJlbW92ZShpdGVyYXRvcik7Ci19Ci0KLXZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjpjb250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKFdlYkNvcmU6OlNXU2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIEZldGNo
SWRlbnRpZmllciBjb250ZW50RmV0Y2hJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKLXsKLSAgICBhdXRvIGl0ZXJhdG9yID0gbV9vbmdv
aW5nRmV0Y2hJZGVudGlmaWVycy5maW5kKHsgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNv
bnRlbnRGZXRjaElkZW50aWZpZXIgfSk7Ci0gICAgaWYgKGl0ZXJhdG9yID09IG1fb25nb2luZ0Zl
dGNoSWRlbnRpZmllcnMuZW5kKCkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Q29udGludWVEaWRSZWNlaXZl
RmV0Y2hSZXNwb25zZSB7IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgaXRlcmF0b3ItPnZhbHVlIH0pOworICAgIC8vIEZJWE1FOiBUbyBiZSBkb25l
IHRocm91Z2ggTmV0d29ya1Jlc291cmNlTG9hZGVyCiB9CiAKIHZvaWQgV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjpkaWRSZWNlaXZlRmV0Y2hUYXNrTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKQEAgLTE5MiwyMyArMTY3LDI1
IEBAIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpkaWRSZWNlaXZlRmV0Y2hU
YXNrTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mCiAgICAgYXV0byBpdGVyYXRvciA9IG1fb25nb2lu
Z0ZldGNoZXMuZmluZChtYWtlT2JqZWN0SWRlbnRpZmllcjxGZXRjaElkZW50aWZpZXJUeXBlPihk
ZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpOwogICAgIGlmIChpdGVyYXRvciA9PSBtX29uZ29pbmdG
ZXRjaGVzLmVuZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgYm9vbCBzaG91bGRSZW1v
dmUgPSBkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2s6OkRpZEZhaWw6Om5hbWUoKQotICAgICAgICB8fCBkZWNvZGVyLm1lc3NhZ2VOYW1lKCkg
PT0gTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZE5vdEhhbmRsZTo6bmFtZSgp
Ci0gICAgICAgIHx8IGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6U2VydmljZVdv
cmtlckZldGNoVGFzazo6RGlkRmluaXNoOjpuYW1lKCkKLSAgICAgICAgfHwgZGVjb2Rlci5tZXNz
YWdlTmFtZSgpID09IE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZl
UmVkaXJlY3RSZXNwb25zZTo6bmFtZSgpOwogCiAgICAgaXRlcmF0b3ItPnZhbHVlLT5kaWRSZWNl
aXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKK30KIAotICAgIGlmIChzaG91bGRSZW1v
dmUpIHsKLSAgICAgICAgQVNTRVJUKG1fb25nb2luZ0ZldGNoSWRlbnRpZmllcnMuY29udGFpbnMo
aXRlcmF0b3ItPnZhbHVlLT5pZGVudGlmaWVyKCkpKTsKLSAgICAgICAgbV9vbmdvaW5nRmV0Y2hJ
ZGVudGlmaWVycy5yZW1vdmUoaXRlcmF0b3ItPnZhbHVlLT5pZGVudGlmaWVyKCkpOwotICAgICAg
ICBtX29uZ29pbmdGZXRjaGVzLnJlbW92ZShpdGVyYXRvcik7Ci0gICAgfQordm9pZCBXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246OnJlZ2lzdGVyRmV0Y2goU2VydmljZVdvcmtlckZldGNo
VGFzayYgdGFzaykKK3sKKyAgICBBU1NFUlQoIW1fb25nb2luZ0ZldGNoZXMuY29udGFpbnModGFz
ay5mZXRjaElkZW50aWZpZXIoKSkpOworICAgIG1fb25nb2luZ0ZldGNoZXMuYWRkKHRhc2suZmV0
Y2hJZGVudGlmaWVyKCksIG1ha2VXZWFrUHRyKHRhc2spKTsKK30KKwordm9pZCBXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb246OnVucmVnaXN0ZXJGZXRjaChTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrJiB0YXNrKQoreworICAgIEFTU0VSVChtX29uZ29pbmdGZXRjaGVzLmNvbnRhaW5zKHRhc2su
ZmV0Y2hJZGVudGlmaWVyKCkpKTsKKyAgICBtX29uZ29pbmdGZXRjaGVzLnJlbW92ZSh0YXNrLmZl
dGNoSWRlbnRpZmllcigpKTsKIH0KIAogdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OmZldGNoVGFza1RpbWVkT3V0KFNlcnZpY2VXb3JrZXJGZXRjaFRhc2smIHRhc2spCiB7Cisv
KgogICAgIEFTU0VSVChtX29uZ29pbmdGZXRjaElkZW50aWZpZXJzLmNvbnRhaW5zKHRhc2suaWRl
bnRpZmllcigpKSk7CiAgICAgYXV0byB0YWtlbklkZW50aWZpZXIgPSBtX29uZ29pbmdGZXRjaElk
ZW50aWZpZXJzLnRha2UodGFzay5pZGVudGlmaWVyKCkpOwogCkBAIC0yNDIsNiArMjE5LDcgQEAg
dm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmZldGNoVGFza1RpbWVkT3V0KFNl
cnZpY2VXb3JrZXJGZXRjaFRhc2smIHQKICAgICAgICAgICAgICAgICBtX3NlcnZlci0+c3luY1Rl
cm1pbmF0ZVdvcmtlcigqd29ya2VyKTsKICAgICAgICAgfQogICAgIH0KKyovCiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5oCmluZGV4IDU3YmI0ZjMzNzYxMzIyODE0N2QxOTA0NjI0ZTQ0ZjAwNWZkOTM0
MWEuLmE3MjdkNmU0ZjBkM2YzMzQyYjNkZDk2NzkxMGUyMzY1NDljMDZhOGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTUyLDIwICs1
MiwxOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIE5ldHdvcmtQcm9jZXNzOwogY2xhc3Mg
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOwogCi1jbGFzcyBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24gOiBwdWJsaWMgV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLCBwdWJs
aWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworY2xh
c3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIDogcHVibGljIENhbk1ha2VXZWFrUHRy
PFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4sIHB1YmxpYyBXZWJDb3JlOjpTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6CiAgICAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwg
V2ViQ29yZTo6U1dTZXJ2ZXImLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmKTsKICAgICB+V2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCk7CiAKLSAgICBJUEM6OkNvbm5lY3Rpb24qIGlwY0Nv
bm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lwY0Nvbm5lY3Rpb24ucHRyKCk7IH0KKyAgICBJ
UEM6OkNvbm5lY3Rpb24mIGlwY0Nvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lwY0Nvbm5l
Y3Rpb24uZ2V0KCk7IH0KIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsK
IAogICAgIHZvaWQgdGVybWluYXRlKCk7CiAKLSAgICB2b2lkIHN0YXJ0RmV0Y2goUEFMOjpTZXNz
aW9uSUQsIFdlYlNXU2VydmVyQ29ubmVjdGlvbiYsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwg
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OkZldGNoT3B0aW9ucyYsIGNvbnN0IElQQzo6Rm9ybURh
dGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGNhbmNlbEZldGNoKFdlYkNv
cmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmll
ciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAgIHZvaWQgc3RhcnRGZXRj
aChTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrJik7CiAgICAgdm9pZCBjb250aW51ZURpZFJlY2VpdmVG
ZXRjaFJlc3BvbnNlKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNv
cmU6OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwog
CiAgICAgdm9pZCBkaWRSZWNlaXZlRmV0Y2hUYXNrTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImKTsKQEAgLTc1LDYgKzc0LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBmZXRj
aFRhc2tUaW1lZE91dChTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrJik7CiAKKyAgICB2b2lkIHJlZ2lz
dGVyRmV0Y2goU2VydmljZVdvcmtlckZldGNoVGFzayYpOworICAgIHZvaWQgdW5yZWdpc3RlckZl
dGNoKFNlcnZpY2VXb3JrZXJGZXRjaFRhc2smKTsKKwogcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1l
c3NhZ2VTZW5kZXIKICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9u
KCkgY29uc3QgZmluYWw7CkBAIC0xMDIsOCArMTA0LDcgQEAgcHJpdmF0ZToKICAgICBSZWY8TmV0
d29ya1Byb2Nlc3M+IG1fbmV0d29ya1Byb2Nlc3M7CiAgICAgV2Vha1B0cjxXZWJDb3JlOjpTV1Nl
cnZlcj4gbV9zZXJ2ZXI7CiAKLSAgICBIYXNoTWFwPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6Oklk
ZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllcj4gbV9vbmdvaW5nRmV0Y2hJZGVudGlm
aWVyczsKLSAgICBIYXNoTWFwPFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgUmVmPFNlcnZpY2VX
b3JrZXJGZXRjaFRhc2s+PiBtX29uZ29pbmdGZXRjaGVzOworICAgIEhhc2hNYXA8V2ViQ29yZTo6
RmV0Y2hJZGVudGlmaWVyLCBXZWFrUHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+PiBtX29uZ29p
bmdGZXRjaGVzOwogICAgIGJvb2wgbV9pc1Rocm90dGxlYWJsZSB7IHRydWUgfTsKIH07IC8vIGNs
YXNzIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA5MzZj
MGNmNTVhZDAzZmJiYjNhZGM4NDM5MjAxM2E5MGUzNDhiNWVkLi42MzI3OGIxYmJlZTA4YTcyNTg5
YjQzMzdkNTgzYmVmMzczZTIyMmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTUyNSw3ICs1MjUsNiBAQCBX
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwIEBuby11
bmlmeQogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcCBAbm8t
dW5pZnkKIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5j
cHAgQG5vLXVuaWZ5CiAKLVdlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0
Y2guY3BwCiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAogV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAogV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXT3JpZ2luVGFibGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2MzhlYmVkNTg1M2ZkN2FkNDc0OTkz
NTEzZTZhZmEwMWIwODcwYjdiLi45YTk1NzNiNjU3MjI0NDg4MmEzOTYxNzZlNmRmNjBiNWQ3ZTdh
YjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTExNDMsNyArMTE0Myw2IEBACiAJCTVDRTkxMjEyMjI5M0MyNzgwMDVCRUM3OCAvKiBB
dXhpbGlhcnlQcm9jZXNzTWFpbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1Q0U5MTIwRjIyOTNDMjVGMDA1QkVDNzggLyogQXV4aWxpYXJ5UHJvY2Vz
c01haW4uY3BwICovOyB9OwogCQk1Q0U5MTIxMzIyOTNDMjc5MDA1QkVDNzggLyogQXV4aWxpYXJ5
UHJvY2Vzc01haW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUNFOTEyMEYyMjkzQzI1RjAwNUJFQzc4IC8qIEF1eGlsaWFyeVByb2Nlc3NNYWluLmNw
cCAqLzsgfTsKIAkJNUNFOTEyMTQyMjkzQzI4MDAwNUJFQzc4IC8qIFdLTWFpbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNFOTEyMEIyMjkzQzFFMDAw
NUJFQzc4IC8qIFdLTWFpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCTYxN0E1MkQ4MUY0M0E5REEwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyQ2xp
ZW50RmV0Y2hNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNjE3QTUyRDcxRjQzQTlCNjAwRENEQzBBIC8qIFNlcnZpY2VXb3Jr
ZXJDbGllbnRGZXRjaE1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTYzMTA4Rjk2MUY5Njcx
OUMwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MzEwOEY5NDFGOTY3MTlDMDBBMERCODQgLyog
X1dLQXBwbGljYXRpb25NYW5pZmVzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTYzMTA4Rjk5MUY5NjcxRjcwMEEwREI4NCAvKiBfV0tBcHBsaWNh
dGlvbk1hbmlmZXN0SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDYzMTA4Rjk4MUY5NjcxRjcwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1h
bmlmZXN0SW50ZXJuYWwuaCAqLzsgfTsKIAkJNjM0ODQyNTExRkIyNkU3MTAwOTQ2RTNDIC8qIEFQ
SUFwcGxpY2F0aW9uTWFuaWZlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDYzNDg0MjRGMUZCMjZFNzEwMDk0NkUzQyAvKiBBUElBcHBsaWNhdGlvbk1h
bmlmZXN0LmggKi87IH07CkBAIC0zMTI5LDkgKzMxMjgsNiBAQAogCQk0MTMwNzVBNjFERTg1RUU3
MDAzOUVDNjkgLyogTGliV2ViUlRDU29ja2V0RmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBMaWJXZWJSVENTb2NrZXRGYWN0b3J5Lmg7IHBhdGggPSBOZXR3b3JrL3dl
YnJ0Yy9MaWJXZWJSVENTb2NrZXRGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxMzA3NUE3MURFODVFRTcwMDM5RUM2OSAvKiBMaWJXZWJSVENQcm92aWRlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IGxpbmVFbmRpbmcgPSAwOyBuYW1lID0gTGliV2Vi
UlRDUHJvdmlkZXIuY3BwOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50
aWZpZXIgPSB4Y29kZS5sYW5nLmNwcDsgfTsKIAkJNDEzMDc1QTgxREU4NUVFNzAwMzlFQzY5IC8q
IExpYldlYlJUQ1Byb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbGluZUVuZGlu
ZyA9IDA7IG5hbWUgPSBMaWJXZWJSVENQcm92aWRlci5oOyBwYXRoID0gTmV0d29yay93ZWJydGMv
TGliV2ViUlRDUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNw
ZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFuZy5vYmpjcHA7IH07Ci0JCTQxMzFGM0NF
MUY5NkE0OTUwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZVdvcmtlckNsaWVudEZldGNoLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxMzFGM0NGMUY5NkE5MzYwMDU5OTk1QSAvKiBTZXJ2
aWNlV29ya2VyQ2xpZW50RmV0Y2gubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
U2VydmljZVdvcmtlckNsaWVudEZldGNoLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk0MTMxRjNEMDFGOTZCQ0M4MDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNsaWVu
dEZldGNoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcnZpY2VX
b3JrZXJDbGllbnRGZXRjaC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzFG
M0UwMUY5ODcxMkMwMDU5OTk1QSAvKiBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2tDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTM1RkJD
RjFGNEZCN0YyMDA3NEM0N0IgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzVGQkQwMUY0RkI3RjIwMDc0QzQ3
QiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0zNzA4LDcgKzM3MDQsNiBAQAogCQk1Q0VBQkEyQjIzMzMyNTE0MDA3OTc3OTcg
LyogTGVnYWN5R2xvYmFsU2V0dGluZ3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTGVnYWN5R2xvYmFsU2V0dGluZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1Q0ZFQ0IwMzFFMUVEMUM4MDBGODg1MDQgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExlZ2FjeUN1
c3RvbVByb3RvY29sTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVE
QUQ3M0YxMTE2RkY5MEMwMEVFNTM5NiAvKiBCYXNlVGFyZ2V0LnhjY29uZmlnICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC54Y2NvbmZpZzsgcGF0aCA9IEJhc2VUYXJnZXQueGNjb25maWc7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTYxN0E1MkQ3MUY0M0E5QjYwMERDREMwQSAvKiBTZXJ2aWNlV29ya2Vy
Q2xpZW50RmV0Y2hNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZVJlY2VpdmVyLmNwcDsg
cGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVz
c2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJ
NjMxMDhGOTQxRjk2NzE5QzAwQTBEQjg0IC8qIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gX1dLQXBwbGljYXRpb25NYW5pZmVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk2MzEwOEY5NTFGOTY3MTlDMDBBMERCODQgLyogX1dLQXBwbGljYXRpb25NYW5p
ZmVzdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTYzMTA4Rjk4MUY5NjcxRjcwMEEwREI4NCAv
KiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLQXBw
bGljYXRpb25NYW5pZmVzdEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC02ODM5LDkgKzY4MzQsNiBAQAogCQk1MTE4RTk5ODFGMjk1MjU5MDAzRUY5RjUgLyogU3RvcmFn
ZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJNDEzMUYz
RDAxRjk2QkNDODAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5jcHAgKi8sCi0J
CQkJNDEzMUYzQ0UxRjk2QTQ5NTAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5o
ICovLAotCQkJCTQxMzFGM0NGMUY5NkE5MzYwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50
RmV0Y2gubWVzc2FnZXMuaW4gKi8sCiAJCQkJNDEzMUYzRTAxRjk4NzEyQzAwNTk5OTVBIC8qIFdl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwICovLAogCQkJCTQxOUFDRjlCMUY5ODFE
MjYwMDlGMUE4MyAvKiBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmggKi8sCiAJCQkJ
NTFCRUI2MjkxRjNBNUFDRDAwNTAyOUI5IC8qIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAg
Ki8sCkBAIC04ODc0LDcgKzg4NjYsNiBAQAogCQkJCTFCQkJFNDlFMTlCNjZDNTMwMDZCN0Q4MSAv
KiBSZW1vdGVXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJRTE4RTY5
MTMxNjlCNjY3QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovLAogCQkJCUUxOEU2OTE0MTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5TWVz
c2FnZXMuaCAqLywKLQkJCQk2MTdBNTJENzFGNDNBOUI2MDBEQ0RDMEEgLyogU2VydmljZVdvcmtl
ckNsaWVudEZldGNoTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkyREU2OTQzQjE4QkQyQTY4
MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5j
cHAgKi8sCiAJCQkJMkRFNjk0M0MxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlv
bkNvbnRyb2xsZXJNZXNzYWdlcy5oICovLAogCQkJCTFBMzM0REVCMTZERThGODgwMDZBOEUzOCAv
KiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCkBAIC0xMTMxMyw3ICsxMTMw
NCw2IEBACiAJCQkJQTU1QkE4MjYxQkEyNUNGRDAwN0NEMzNEIC8qIFJlbW90ZVdlYkluc3BlY3Rv
clByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFCQkJFNEEwMTlC
NjZDNTMwMDZCN0Q4MSAvKiBSZW1vdGVXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlFMThFNjkxNzE2OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRlbVNo
aW1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk2MTdBNTJEODFG
NDNBOURBMDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxREU3QzZDMjIyNzhGMUUwMDUzMkI2NSAvKiBTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzg3MjEyQjZB
QjEwMEY0OTNGRCAvKiBTaGFyZWFibGVCaXRtYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRF
Njk0M0QxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApp
bmRleCBmMGI0ZmRmYTZhMzExNzA0OTk2ZDc4NWExYzk2Mjc3MzYwMTE5ODAxLi4zMDgzMzU3NzMw
MWQwZjI2NDUzMmI0YTMyYmE4NmVmNmVmNWI5YjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5j
cHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVk
ZSAiTGliV2ViUlRDTmV0d29yay5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhTWFwLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFy
ZWFNYXBNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgiCkBA
IC0xNDEsMTAgKzE0MCw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQCiAgICAgICAgICAgICBt
X3N3Q29ubmVjdGlvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFt
ZSgpID09IE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSkgewotICAgICAgICBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigp
LmRpZFJlY2VpdmVTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlKGNvbm5lY3Rpb24sIGRl
Y29kZXIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewogICAgICAgICBBU1NFUlQoU1dDb250ZXh0TWFuYWdl
cjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKTsKICAgICAgICAgaWYgKGF1dG8qIGNvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbiA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rp
b24oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxv
YWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxv
YWRlclN0cmF0ZWd5LmNwcAppbmRleCBhZmEzYzcyNDE0OGRhMTI3NWEyNzcwZGZjN2U4M2Q3Mjk2
ZGE1MDQ0Li5hOWZjMDRkNTM4ZmViOWI3ZjRkOTRlNjQ4MjEzM2JmOTI1ZjNkNDdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRl
Z3kuY3BwCkBAIC0yMTUsNDEgKzIxNSwyMCBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hl
ZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKCEhcmVzb3VyY2VMb2Fk
ZXIub3B0aW9ucygpLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKQotICAgICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIHNjaGVk
dWxlZCB0aHJvdWdoIFNlcnZpY2VXb3JrZXIgb3IgTmV0d29yayBQcm9jZXNzIChmcmFtZSA9ICVw
LCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0
ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRC50b1VJbnQ2
NCgpLCBpZGVudGlmaWVyKTsKKyAgICBhdXRvIHVybCA9IHJlc291cmNlTG9hZGVyLnJlcXVlc3Qo
KS51cmwoKTsKKyAgICBhdXRvKiBkYXRhID0gdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCk7Cisg
ICAgaWYgKGRhdGEpCisgICAgICAgIHVybC5zdHJpbmcoKTsKIAotICAgIFdlYlNlcnZpY2VXb3Jr
ZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuaGFuZGxlRmV0Y2gocmVzb3VyY2VMb2FkZXIsIHNob3Vs
ZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFt0aGlzLCB0cmFja2luZ1BhcmFt
ZXRlcnMsIGlkZW50aWZpZXIsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJl
Y3QsIG1heGltdW1CdWZmZXJpbmdUaW1lID0gbWF4aW11bUJ1ZmZlcmluZ1RpbWUocmVzb3VyY2Up
LCByZXNvdXJjZUxvYWRlciA9IG1ha2VSZWYocmVzb3VyY2VMb2FkZXIpXSAoU2VydmljZVdvcmtl
ckNsaWVudEZldGNoOjpSZXN1bHQgcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKHJlc3Vs
dCAhPSBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OlJlc3VsdDo6VW5oYW5kbGVkKSB7Ci0gICAg
ICAgICAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2ViTG9hZGVyU3Ry
YXRlZ3k6OnNjaGVkdWxlTG9hZCwgdXJsICclcycgd2lsbCBiZSBzY2hlZHVsZWQgdGhyb3VnaCBT
ZXJ2aWNlV29ya2VyIGhhbmRsZSBmZXRjaCBhbGdvcml0aG0iLCByZXNvdXJjZUxvYWRlci0+dXJs
KCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgc2NoZWR1bGVkIHRocm91Z2ggU2Vy
dmljZVdvcmtlciBoYW5kbGUgZmV0Y2ggYWxnb3JpdGhtIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0
ICIpIiwgcmVzb3VyY2VMb2FkZXItPmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQu
dG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQudG9VSW50NjQoKSwgaWRlbnRp
Zmllcik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHJlc291
cmNlTG9hZGVyLT5vcHRpb25zKCkuc2VydmljZVdvcmtlcnNNb2RlID09IFNlcnZpY2VXb3JrZXJz
TW9kZTo6T25seSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgi
c2NoZWR1bGVMb2FkOiB1bmFibGUgdG8gc2NoZWR1bGUgVVJMIHRocm91Z2ggU2VydmljZVdvcmtl
ciBoYW5kbGUgZmV0Y2ggYWxnb3JpdGhtIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVz
b3VyY2VMb2FkZXItPmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQo
KSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQudG9VSW50NjQoKSwgaWRlbnRpZmllcik7Ci0g
ICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtyZXNvdXJjZUxvYWRlciA9IFdURk1vdmUocmVz
b3VyY2VMb2FkZXIpXSB7Ci0gICAgICAgICAgICAgICAgYXV0byBlcnJvciA9IGludGVybmFsRXJy
b3IocmVzb3VyY2VMb2FkZXItPnJlcXVlc3QoKS51cmwoKSk7Ci0gICAgICAgICAgICAgICAgZXJy
b3Iuc2V0VHlwZShSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRpb24pOwotICAgICAgICAg
ICAgICAgIHJlc291cmNlTG9hZGVyLT5kaWRGYWlsKGVycm9yKTsKLSAgICAgICAgICAgIH0pOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS53ZWJMb2FkZXJTdHJhdGVneSgpLnRyeUxvYWRpbmdVc2luZ1VSTFNjaGVt
ZUhhbmRsZXIocmVzb3VyY2VMb2FkZXIpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIHNjaGVkdWxlZCB3aXRoIHRoZSBOZXR3
b3JrUHJvY2VzcyAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAl
IiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLT5m
cmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFy
YW1ldGVycy5mcmFtZUlELnRvVUludDY0KCksIGlkZW50aWZpZXIpOwotICAgICAgICAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkud2ViTG9hZGVyU3RyYXRlZ3koKS5zY2hlZHVsZUxvYWRGcm9t
TmV0d29ya1Byb2Nlc3MocmVzb3VyY2VMb2FkZXIuZ2V0KCksIHJlc291cmNlTG9hZGVyLT5yZXF1
ZXN0KCksIHRyYWNraW5nUGFyYW1ldGVycywgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hU
VFBSZWRpcmVjdCwgbWF4aW11bUJ1ZmZlcmluZ1RpbWUpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0KLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic2NoZWR1bGVMb2Fk
OiBVUkwgbm90IGhhbmRsZWQgYnkgYW55IGhhbmRsZXJzIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0
ICIpIiwgcmVzb3VyY2VMb2FkZXItPmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQu
dG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQudG9VSW50NjQoKSwgaWRlbnRp
Zmllcik7Ci0gICAgfSk7CisgICAgaWYgKChyZXNvdXJjZUxvYWRlci5vcHRpb25zKCkuc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgJiYgcmVzb3VyY2VMb2FkZXIub3B0aW9ucygp
LnNlcnZpY2VXb3JrZXJzTW9kZSAhPSBTZXJ2aWNlV29ya2Vyc01vZGU6Ok5vbmUpIHx8ICF0cnlM
b2FkaW5nVXNpbmdVUkxTY2hlbWVIYW5kbGVyKHJlc291cmNlTG9hZGVyKSkgewogI2Vsc2UKICAg
ICBpZiAoIXRyeUxvYWRpbmdVc2luZ1VSTFNjaGVtZUhhbmRsZXIocmVzb3VyY2VMb2FkZXIpKSB7
CisjZW5kaWYKICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic2NoZWR1bGVMb2FkOiBV
Ukwgd2lsbCBiZSBzY2hlZHVsZWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgKGZyYW1lID0gJXAs
IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRl
cnMucGFnZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELnRvVUludDY0
KCksIGlkZW50aWZpZXIpOwogICAgICAgICBzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3Mo
cmVzb3VyY2VMb2FkZXIsIHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKSwgdHJhY2tpbmdQYXJhbWV0
ZXJzLCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBtYXhpbXVtQnVm
ZmVyaW5nVGltZShyZXNvdXJjZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoInNjaGVkdWxlTG9hZDogVVJMIG5vdCBoYW5kbGVkIGJ5IGFueSBo
YW5kbGVycyAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1l
KCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0
ZXJzLmZyYW1lSUQudG9VSW50NjQoKSwgaWRlbnRpZmllcik7Ci0jZW5kaWYKIH0KIAogYm9vbCBX
ZWJMb2FkZXJTdHJhdGVneTo6dHJ5TG9hZGluZ1VzaW5nVVJMU2NoZW1lSGFuZGxlcihSZXNvdXJj
ZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIpCkBAIC0yNzEsNiArMjUwLDEwIEBAIGJvb2wgV2ViTG9h
ZGVyU3RyYXRlZ3k6OnRyeUxvYWRpbmdVc2luZ1VSTFNjaGVtZUhhbmRsZXIoUmVzb3VyY2VMb2Fk
ZXImIHJlc291cmNlCiAKIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZyb21O
ZXR3b3JrUHJvY2VzcyhSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViUmVzb3VyY2VMb2FkZXI6OlRyYWNraW5nUGFy
YW1ldGVycyYgdHJhY2tpbmdQYXJhbWV0ZXJzLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhU
VFBTVG9IVFRQUmVkaXJlY3QsIFNlY29uZHMgbWF4aW11bUJ1ZmZlcmluZ1RpbWUpCiB7CisgICAg
YXV0byogd2ViRnJhbWVMb2FkZXJDbGllbnQgPSB0b1dlYkZyYW1lTG9hZGVyQ2xpZW50KHJlc291
cmNlTG9hZGVyLmZyYW1lTG9hZGVyKCktPmNsaWVudCgpKTsKKyAgICBhdXRvKiB3ZWJGcmFtZSA9
IHdlYkZyYW1lTG9hZGVyQ2xpZW50ID8gd2ViRnJhbWVMb2FkZXJDbGllbnQtPndlYkZyYW1lKCkg
OiBudWxscHRyOworICAgIGF1dG8qIHdlYlBhZ2UgPSB3ZWJGcmFtZSA/IHdlYkZyYW1lLT5wYWdl
KCkgOiBudWxscHRyOworCiAgICAgUmVzb3VyY2VMb2FkSWRlbnRpZmllciBpZGVudGlmaWVyID0g
cmVzb3VyY2VMb2FkZXIuaWRlbnRpZmllcigpOwogICAgIEFTU0VSVChpZGVudGlmaWVyKTsKIApA
QCAtMzAyLDYgKzI4NSwxNyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRG
cm9tTmV0d29ya1Byb2Nlc3MoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTAogICAgIGxvYWRQYXJh
bWV0ZXJzLnByZWZsaWdodFBvbGljeSA9IHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5wcmVmbGln
aHRQb2xpY3k7CiAgICAgbG9hZFBhcmFtZXRlcnMuaXNIVFRQU1VwZ3JhZGVFbmFibGVkID0gcmVz
b3VyY2VMb2FkZXIuZnJhbWUoKSA/IHJlc291cmNlTG9hZGVyLmZyYW1lKCktPnNldHRpbmdzKCku
SFRUUFNVcGdyYWRlRW5hYmxlZCgpIDogZmFsc2U7CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCisgICAgLy8gSW4gY2FzZSBvZiBVUkwgc2NoZW1lIGhhbmRsZXIsIHdlIHdpbGwgdHJ5IHRv
IGxvYWQgb24gc2VydmljZSB3b3JrZXJzIGFuZCBpZiB1bmhhbmRsZWQsIGZhbGxiYWNrIHRvIFVS
TCBzY2hlbWUgaGFuZGxlci4KKyAgICBpZiAocmVzb3VyY2VMb2FkZXIub3B0aW9ucygpLnNlcnZp
Y2VXb3JrZXJzTW9kZSA9PSBTZXJ2aWNlV29ya2Vyc01vZGU6OkFsbCAmJiB3ZWJQYWdlICYmICB3
ZWJQYWdlLT51cmxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKHJlc291cmNlTG9hZGVyLnJlcXVlc3Qo
KS51cmwoKS5wcm90b2NvbCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkpCisgICAgICAgIGxv
YWRQYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJzTW9kZSA9IFNlcnZpY2VXb3JrZXJzTW9kZTo6T25s
eTsKKyAgICBlbHNlCisgICAgICAgIGxvYWRQYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJzTW9kZSA9
IHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5zZXJ2aWNlV29ya2Vyc01vZGU7CisKKyAgICBsb2Fk
UGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciA9IHJlc291cmNl
TG9hZGVyLm9wdGlvbnMoKS5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcjsKKyAg
ICBsb2FkUGFyYW1ldGVycy5odHRwSGVhZGVyc1RvS2VlcCA9IHJlc291cmNlTG9hZGVyLm9wdGlv
bnMoKS5odHRwSGVhZGVyc1RvS2VlcDsKKyNlbmRpZgorCiAgICAgYXV0byogZG9jdW1lbnQgPSBy
ZXNvdXJjZUxvYWRlci5mcmFtZSgpID8gcmVzb3VyY2VMb2FkZXIuZnJhbWUoKS0+ZG9jdW1lbnQo
KSA6IG51bGxwdHI7CiAgICAgaWYgKHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5jc3BSZXNwb25z
ZUhlYWRlcnMpCiAgICAgICAgIGxvYWRQYXJhbWV0ZXJzLmNzcFJlc3BvbnNlSGVhZGVycyA9IHJl
c291cmNlTG9hZGVyLm9wdGlvbnMoKS5jc3BSZXNwb25zZUhlYWRlcnM7CkBAIC00MzgsMTEgKzQz
Miw2IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnJlbW92ZShSZXNvdXJjZUxvYWRlciogcmVz
b3VyY2VMb2FkZXIpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCi0gICAgaWYgKFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCku
Y2FuY2VsRmV0Y2gobWFrZU9iamVjdElkZW50aWZpZXI8RmV0Y2hJZGVudGlmaWVyVHlwZT4oaWRl
bnRpZmllcikpKQotICAgICAgICByZXR1cm47Ci0jZW5kaWYKLQogICAgIFJlZlB0cjxXZWJSZXNv
dXJjZUxvYWRlcj4gbG9hZGVyID0gbV93ZWJSZXNvdXJjZUxvYWRlcnMudGFrZShpZGVudGlmaWVy
KTsKICAgICAvLyBMb2FkZXIgbWF5IG5vdCBiZSByZWdpc3RlcmVkIGlmIHdlIGNyZWF0ZWQgaXQs
IGJ1dCBoYXZlbid0IHNjaGVkdWxlZCB5ZXQgKGEgYnVuZGxlIGNsaWVudCBjYW4gZGVjaWRlIHRv
IGNhbmNlbCBzdWNoIHJlcXVlc3QgdmlhIHdpbGxTZW5kUmVxdWVzdCkuCiAgICAgaWYgKCFsb2Fk
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5jcHAKaW5kZXggYTM5MjQxYWNhMzBmZTc5NjgxMTAyNzQzMjAxN2NhNDQ5YmZi
MWYyZi4uODAxMWNjYjg5MmIzYWM3ZTg3ODZjN2FkZmY4ZjBkM2IxZWI4YzI1MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmNwcApAQCAtMjE4LDYgKzIxOCw0NyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRGaW5p
c2hSZXNvdXJjZUxvYWQoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTAogICAgIG1f
Y29yZUxvYWRlci0+ZGlkRmluaXNoTG9hZGluZyhuZXR3b3JrTG9hZE1ldHJpY3MpOwogfQogCit2
b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRGYWlsU2VydmljZVdvcmtlckxvYWQoY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IpCit7CisgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gbV9jb3JlTG9h
ZGVyLT5mcmFtZSgpID8gbV9jb3JlTG9hZGVyLT5mcmFtZSgpLT5kb2N1bWVudCgpIDogbnVsbHB0
cikgeworICAgICAgICBpZiAobV9jb3JlTG9hZGVyLT5vcHRpb25zKCkuZGVzdGluYXRpb24gIT0g
RmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6RW1wdHlTdHJpbmcgfHwgZXJyb3IuaXNHZW5lcmFs
KCkpCisgICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkp
OworICAgICAgICBpZiAobV9jb3JlTG9hZGVyLT5vcHRpb25zKCkuZGVzdGluYXRpb24gIT0gRmV0
Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6RW1wdHlTdHJpbmcpCisgICAgICAgICAgICBkb2N1bWVu
dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJy
b3IsIG1ha2VTdHJpbmcoIkNhbm5vdCBsb2FkICIsIGVycm9yLmZhaWxpbmdVUkwoKS5zdHJpbmco
KSwgIi4iKSk7CisgICAgfQorCisgICAgZGlkRmFpbFJlc291cmNlTG9hZChlcnJvcik7Cit9CisK
K3ZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OnNlcnZpY2VXb3JrZXJEaWROb3RIYW5kbGUoKQorewor
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJz
ZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELnRv
VUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOworCisgICAgaWYgKG1f
Y29yZUxvYWRlci0+b3B0aW9ucygpLnNlcnZpY2VXb3JrZXJzTW9kZSAhPSBTZXJ2aWNlV29ya2Vy
c01vZGU6Ok9ubHkpIHsKKyAgICAgICAgYXV0byogd2ViRnJhbWVMb2FkZXJDbGllbnQgPSB0b1dl
YkZyYW1lTG9hZGVyQ2xpZW50KG1fY29yZUxvYWRlci0+ZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkp
OworICAgICAgICBhdXRvKiB3ZWJGcmFtZSA9IHdlYkZyYW1lTG9hZGVyQ2xpZW50ID8gd2ViRnJh
bWVMb2FkZXJDbGllbnQtPndlYkZyYW1lKCkgOiBudWxscHRyOworICAgICAgICBhdXRvKiB3ZWJQ
YWdlID0gd2ViRnJhbWUgPyB3ZWJGcmFtZS0+cGFnZSgpIDogbnVsbHB0cjsKKworICAgICAgICBp
ZiAoYXV0byogaGFuZGxlciA9IHdlYlBhZ2UtPnVybFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUobV9j
b3JlTG9hZGVyLT5yZXF1ZXN0KCkudXJsKCkucHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRDb3B5
aW5nKCkpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXNvdXJjZSBs
b2FkZWQgYnkgVVJMIHNjaGVtZSBoYW5kbGVyOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQ
YXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlE
LnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOworCisgICAgICAg
ICAgICBhdXRvIGxvYWRlciA9IG1fY29yZUxvYWRlcjsKKyAgICAgICAgICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLndlYkxvYWRlclN0cmF0ZWd5KCkucmVtb3ZlKG1fY29yZUxvYWRlci5nZXQo
KSk7CisKKyAgICAgICAgICAgIGhhbmRsZXItPnN0YXJ0TmV3VGFzaygqbG9hZGVyKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGF1dG8gZXJyb3IgPSBpbnRl
cm5hbEVycm9yKG1fY29yZUxvYWRlci0+cmVxdWVzdCgpLnVybCgpKTsKKyAgICBlcnJvci5zZXRU
eXBlKFJlc291cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxhdGlvbik7CisgICAgbV9jb3JlTG9hZGVy
LT5kaWRGYWlsKGVycm9yKTsKKyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5k
aWYKK30KKwogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbFJlc291cmNlTG9hZChjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNz
KSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbFJlc291cmNlTG9hZCBmb3IgJyVzJyIsIG1fY29y
ZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCmluZGV4IDhl
YTFhZWRiZWI5ZjU5NjQ5N2FiNjc0YWY0MzYyMTY3YTFjZjI5YWEuLjdjMjExMWQ0OGIyOTUxN2I1
OTczMWUzNGJkZWQ2ZjkzYmM3ZDU2MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaApAQCAtODUsNiArODUsOCBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwg
aW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgdm9pZCBkaWRGaW5pc2hSZXNvdXJjZUxv
YWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdm9pZCBkaWRGYWls
UmVzb3VyY2VMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKKyAgICB2b2lkIGRp
ZEZhaWxTZXJ2aWNlV29ya2VyTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7Cisg
ICAgdm9pZCBzZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlKCk7CiAgICAgdm9pZCBkaWRCbG9ja0F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCk7CiAKICAgICB2b2lkIHN0b3BMb2FkaW5nQWZ0ZXJYRnJh
bWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lEZW5pZWQoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgppbmRleCA3YjkzMjU2
ZjAzNmRkMDQyZjQ0YmE4M2EzMThiYjdiNjYzNmQ0MWFhLi44YzBmMjFhODM2MjJjZjhhYjBkMzY3
ZTIxZjg2YzcxYTdlZDA1ZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgpAQCAtMjcs
NiArMjcsOCBAQCBtZXNzYWdlcyAtPiBXZWJSZXNvdXJjZUxvYWRlciBMZWdhY3lSZWNlaXZlciB7
CiAgICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEs
IGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiAgICAgRGlkRmluaXNoUmVzb3VyY2VMb2FkKFdl
YkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyBuZXR3b3JrTG9hZE1ldHJpY3MpCiAgICAgRGlkRmFp
bFJlc291cmNlTG9hZChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQorICAgIERpZEZhaWxT
ZXJ2aWNlV29ya2VyTG9hZChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQorICAgIFNlcnZp
Y2VXb3JrZXJEaWROb3RIYW5kbGUoKQogICAgIERpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoKQogCiAgICAgU3RvcExvYWRpbmdBZnRlclhGcmFtZU9wdGlvbnNPckNvbnRlbnRTZWN1cml0
eVBvbGljeURlbmllZChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNsaWVu
dEZldGNoLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3Jr
ZXJDbGllbnRGZXRjaC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyNDQ2NmE4
ZDRkODVjODMzMDk1OWE1MGY3N2Q1ODkxNDYxMDYxMjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
U2VydmljZVdvcmtlckNsaWVudEZldGNoLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIwMyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNlcnZpY2VX
b3JrZXJDbGllbnRGZXRjaC5oIgotCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotCi0jaW5j
bHVkZSAiRGF0YVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgIldlYlNXQ2xpZW50Q29ubmVjdGlvbi5o
IgotI2luY2x1ZGUgIldlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oIgotI2luY2x1ZGUgPFdlYkNv
cmUvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVu
dC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL05vdElt
cGxlbWVudGVkLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci11c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKLQotUmVmPFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaD4gU2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoOjpjcmVhdGUoV2ViU2VydmljZVdvcmtlclByb3ZpZGVyJiBzZXJ2
aWNlV29ya2VyUHJvdmlkZXIsIFJlZjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcj4mJiBsb2FkZXIs
IEZldGNoSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZWY8V2ViU1dDbGllbnRDb25uZWN0aW9uPiYm
IGNvbm5lY3Rpb24sIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVj
dCwgQ2FsbGJhY2smJiBjYWxsYmFjaykKLXsKLSAgICBhdXRvIGZldGNoID0gYWRvcHRSZWYoKm5l
dyBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2ggeyBzZXJ2aWNlV29ya2VyUHJvdmlkZXIsIFdURk1v
dmUobG9hZGVyKSwgaWRlbnRpZmllciwgV1RGTW92ZShjb25uZWN0aW9uKSwgc2hvdWxkQ2xlYXJS
ZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgV1RGTW92ZShjYWxsYmFjaykgfSk7Ci0gICAg
ZmV0Y2gtPnN0YXJ0KCk7Ci0gICAgcmV0dXJuIGZldGNoOwotfQotCi1TZXJ2aWNlV29ya2VyQ2xp
ZW50RmV0Y2g6On5TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2goKQotewotfQotCi1TZXJ2aWNlV29y
a2VyQ2xpZW50RmV0Y2g6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaChXZWJTZXJ2aWNlV29ya2Vy
UHJvdmlkZXImIHNlcnZpY2VXb3JrZXJQcm92aWRlciwgUmVmPFdlYkNvcmU6OlJlc291cmNlTG9h
ZGVyPiYmIGxvYWRlciwgRmV0Y2hJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlZjxXZWJTV0NsaWVu
dENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQ
U1RvSFRUUFJlZGlyZWN0LCBDYWxsYmFjayYmIGNhbGxiYWNrKQotICAgIDogbV9zZXJ2aWNlV29y
a2VyUHJvdmlkZXIoc2VydmljZVdvcmtlclByb3ZpZGVyKQotICAgICwgbV9sb2FkZXIoV1RGTW92
ZShsb2FkZXIpKQotICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCi0gICAgLCBtX2Nvbm5l
Y3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKLSAgICAsIG1fY2FsbGJhY2soV1RGTW92ZShjYWxs
YmFjaykpCi0gICAgLCBtX3Nob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3Qo
c2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCkKLXsKLX0KLQotdm9pZCBT
ZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OnN0YXJ0KCkKLXsKLSAgICBhdXRvIHJlcXVlc3QgPSBt
X2xvYWRlci0+cmVxdWVzdCgpOwotICAgIGF1dG8mIG9wdGlvbnMgPSBtX2xvYWRlci0+b3B0aW9u
cygpOwotCi0gICAgYXV0byByZWZlcnJlciA9IHJlcXVlc3QuaHR0cFJlZmVycmVyKCk7Ci0KLSAg
ICAvLyBXZSBhcmUgaW50ZXJjZXB0aW5nIGZldGNoIGNhbGxzIGFmdGVyIGdvaW5nIHRocm91Z2gg
dGhlIEhUVFAgbGF5ZXIsIHdoaWNoIG1heSBhZGQgc29tZSBzcGVjaWZpYyBoZWFkZXJzLgotICAg
IGNsZWFuSFRUUFJlcXVlc3RIZWFkZXJzRm9yQWNjZXNzQ29udHJvbChyZXF1ZXN0LCBvcHRpb25z
Lmh0dHBIZWFkZXJzVG9LZWVwKTsKLQotICAgIEFTU0VSVChvcHRpb25zLnNlcnZpY2VXb3JrZXJz
TW9kZSAhPSBTZXJ2aWNlV29ya2Vyc01vZGU6Ok5vbmUpOwotICAgIG1fc2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbklkZW50aWZpZXIgPSBvcHRpb25zLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyLnZhbHVlKCk7Ci0gICAgbV9jb25uZWN0aW9uLT5zdGFydEZldGNoKG1faWRlbnRp
ZmllciwgbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgcmVxdWVzdCwgb3B0
aW9ucywgcmVmZXJyZXIpOwotfQotCi12b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6ZGlk
UmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKQotewot
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYg
KCFtX2xvYWRlcikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICByZXNwb25zZS5zZXRT
b3VyY2UoUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpTZXJ2aWNlV29ya2VyKTsKLQotICAgICAg
ICBtX2xvYWRlci0+d2lsbFNlbmRSZXF1ZXN0KG1fbG9hZGVyLT5yZXF1ZXN0KCkucmVkaXJlY3Rl
ZFJlcXVlc3QocmVzcG9uc2UsIG1fc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRp
cmVjdCksIHJlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IHByb3RlY3RlZFRoaXMuY29w
eVJlZigpXShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KSB7Ci0gICAgICAgICAgICBpZiAoIW1f
bG9hZGVyIHx8IHJlcXVlc3QuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byBj
YWxsYmFjayA9IFdURk1vdmUobV9jYWxsYmFjaykpCi0gICAgICAgICAgICAgICAgICAgIGNhbGxi
YWNrKFJlc3VsdDo6U3VjY2VlZGVkKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBBU1NFUlQocmVxdWVzdCA9PSBtX2xvYWRlci0+cmVxdWVzdCgp
KTsKLSAgICAgICAgICAgIHN0YXJ0KCk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotfQotCi12b2lk
IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVz
cG9uc2UmJiByZXNwb25zZSwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVz
c2FnZSkKLXsKLSAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSksIG5lZWRzQ29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlXSgpIG11dGFibGUgewotICAgICAgICBpZiAoIW1fbG9h
ZGVyKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChhdXRvIGNhbGxiYWNrID0g
V1RGTW92ZShtX2NhbGxiYWNrKSkKLSAgICAgICAgICAgIGNhbGxiYWNrKFJlc3VsdDo6U3VjY2Vl
ZGVkKTsKLQotICAgICAgICBBU1NFUlQoIXJlc3BvbnNlLmlzUmVkaXJlY3Rpb24oKSB8fCAhcmVz
cG9uc2UuaHR0cEhlYWRlckZpZWxkcygpLmNvbnRhaW5zKEhUVFBIZWFkZXJOYW1lOjpMb2NhdGlv
bikpOwotCi0gICAgICAgIGlmICghbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3Nh
Z2UpIHsKLSAgICAgICAgICAgIG1fbG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2Us
IFtdIHsgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBtX2xv
YWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFdURk1vdmUocHJvdGVjdGVkVGhpcyldIHsKLSAgICAgICAgICAgIGlmICghbV9sb2FkZXIpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPmNvbnRp
bnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UobV9pZGVudGlmaWVyLCBtX3NlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQg
U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCi17Ci0g
ICAgYXV0byogZGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGFSZWZlcmVu
Y2UuZGF0YSgpKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGVuY29kZWREYXRhTGVuZ3RoLCBidWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhLCBkYXRhUmVmZXJlbmNlLnNpemUoKSldKCkgbXV0YWJsZSB7Ci0gICAgICAg
IGlmICghbV9sb2FkZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbV9lbmNvZGVk
RGF0YUxlbmd0aCArPSBlbmNvZGVkRGF0YUxlbmd0aDsKLQotICAgICAgICBtX2xvYWRlci0+ZGlk
UmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlciksIG1fZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQ
YXlsb2FkQnl0ZXMpOwotICAgIH0pOwotfQotCi12b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRj
aDo6ZGlkUmVjZWl2ZUZvcm1EYXRhKGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmKQotewot
ICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9ybSBkYXRhIHJlYWRpbmcuCi19Ci0KLXZvaWQgU2Vy
dmljZVdvcmtlckNsaWVudEZldGNoOjpkaWRGaW5pc2goKQotewotICAgIGNhbGxPbk1haW5UaHJl
YWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gewotICAgICAgICBpZiAo
IW1fbG9hZGVyKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIEFTU0VSVCghbV9jYWxs
YmFjayk7Ci0KLSAgICAgICAgbV9sb2FkZXItPmRpZEZpbmlzaExvYWRpbmcoTmV0d29ya0xvYWRN
ZXRyaWNzIHsgfSk7Ci0gICAgICAgIG1fc2VydmljZVdvcmtlclByb3ZpZGVyLmZldGNoRmluaXNo
ZWQobV9pZGVudGlmaWVyKTsKLSAgICB9KTsKLX0KLQotdm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50
RmV0Y2g6OmRpZEZhaWwoUmVzb3VyY2VFcnJvciYmIGVycm9yKQotewotICAgIGNhbGxPbk1haW5U
aHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZXJyb3IgPSBXVEZN
b3ZlKGVycm9yKV0gewotICAgICAgICBpZiAoIW1fbG9hZGVyKQotICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgIGF1dG8qIGRvY3VtZW50ID0gbV9sb2FkZXItPmZyYW1lKCkgPyBtX2xvYWRl
ci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKSA6IG51bGxwdHI7Ci0gICAgICAgIGlmIChkb2N1bWVudCkg
ewotICAgICAgICAgICAgaWYgKG1fbG9hZGVyLT5vcHRpb25zKCkuZGVzdGluYXRpb24gIT0gRmV0
Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6RW1wdHlTdHJpbmcgfHwgZXJyb3IuaXNHZW5lcmFsKCkp
Ci0gICAgICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigp
KTsKLSAgICAgICAgICAgIGlmIChtX2xvYWRlci0+b3B0aW9ucygpLmRlc3RpbmF0aW9uICE9IEZl
dGNoT3B0aW9uczo6RGVzdGluYXRpb246OkVtcHR5U3RyaW5nKQotICAgICAgICAgICAgICAgIGRv
Y3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVs
OjpFcnJvciwgbWFrZVN0cmluZygiQ2Fubm90IGxvYWQgIiwgZXJyb3IuZmFpbGluZ1VSTCgpLnN0
cmluZygpLCAiLiIpKTsKLSAgICAgICAgfQotCi0gICAgICAgIG1fbG9hZGVyLT5kaWRGYWlsKGVy
cm9yKTsKLQotICAgICAgICBpZiAoYXV0byBjYWxsYmFjayA9IFdURk1vdmUobV9jYWxsYmFjaykp
Ci0gICAgICAgICAgICBjYWxsYmFjayhSZXN1bHQ6OlN1Y2NlZWRlZCk7Ci0KLSAgICAgICAgbV9z
ZXJ2aWNlV29ya2VyUHJvdmlkZXIuZmV0Y2hGaW5pc2hlZChtX2lkZW50aWZpZXIpOwotICAgIH0p
OwotfQotCi12b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6ZGlkTm90SGFuZGxlKCkKLXsK
LSAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyldIHsKLSAgICAgICAgaWYgKCFtX2xvYWRlcikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICBpZiAoYXV0byBjYWxsYmFjayA9IFdURk1vdmUobV9jYWxsYmFjaykpCi0gICAgICAgICAg
ICBjYWxsYmFjayhSZXN1bHQ6OlVuaGFuZGxlZCk7Ci0KLSAgICAgICAgbV9zZXJ2aWNlV29ya2Vy
UHJvdmlkZXIuZmV0Y2hGaW5pc2hlZChtX2lkZW50aWZpZXIpOwotICAgIH0pOwotfQotCi12b2lk
IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6Y2FuY2VsKCkKLXsKLSAgICBpZiAoYXV0byBjYWxs
YmFjayA9IFdURk1vdmUobV9jYWxsYmFjaykpCi0gICAgICAgIGNhbGxiYWNrKFJlc3VsdDo6Q2Fu
Y2VsbGVkKTsKLQotICAgIG1fY29ubmVjdGlvbi0+Y2FuY2VsRmV0Y2gobV9pZGVudGlmaWVyLCBt
X3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKLSAgICBtX2xvYWRlciA9IG51
bGxwdHI7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYzY2N2FjNzU3ZmRkNzEwODg4YjhiMmQ0ZWVlOTQ0OTkwZjBiMGQwMy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guaAorKysgL2Rldi9udWxs
CkBAIC0xLDg1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKLQotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKLSNpbmNsdWRl
ICJGb3JtRGF0YVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgotI2lu
Y2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoSWRlbnRpZmll
ci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VMb2FkZXIuaD4KLSNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4K
LQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjsKLWNs
YXNzIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjsKLQotY2xhc3MgU2VydmljZVdvcmtlckNsaWVu
dEZldGNoIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8U2VydmljZVdvcmtlckNsaWVudEZldGNo
PiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKLXB1YmxpYzoKLSAgICBlbnVtIGNsYXNz
IFJlc3VsdCB7IFN1Y2NlZWRlZCwgQ2FuY2VsbGVkLCBVbmhhbmRsZWQgfTsKLSAgICB1c2luZyBD
YWxsYmFjayA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXN1bHQpPjsKLQotICAgIHN0
YXRpYyBSZWY8U2VydmljZVdvcmtlckNsaWVudEZldGNoPiBjcmVhdGUoV2ViU2VydmljZVdvcmtl
clByb3ZpZGVyJiwgUmVmPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyPiYmLCBXZWJDb3JlOjpGZXRj
aElkZW50aWZpZXIsIFJlZjxXZWJTV0NsaWVudENvbm5lY3Rpb24+JiYsIGJvb2wgc2hvdWxkQ2xl
YXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgQ2FsbGJhY2smJik7Ci0gICAgflNlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaCgpOwotCi0gICAgdm9pZCBzdGFydCgpOwotCi0gICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsK
LSAgICB2b2lkIGNhbmNlbCgpOwotCi0gICAgYm9vbCBpc09uZ29pbmcoKSBjb25zdCB7IHJldHVy
biAhIW1fY2FsbGJhY2s7IH0KLQotcHJpdmF0ZToKLSAgICBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0
Y2goV2ViU2VydmljZVdvcmtlclByb3ZpZGVyJiwgUmVmPFdlYkNvcmU6OlJlc291cmNlTG9hZGVy
PiYmLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIsIFJlZjxXZWJTV0NsaWVudENvbm5lY3Rpb24+
JiYsIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgQ2FsbGJh
Y2smJik7Ci0KLSAgICBPcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZUVycm9yPiB2YWxpZGF0ZVJl
c3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLQotICAgIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgYm9vbCBuZWVkc0Nv
bnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmVk
aXJlY3RSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpOwotICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgaW50NjRfdCBlbmNvZGVkRGF0
YUxlbmd0aCk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRm9ybURhdGEoY29uc3QgSVBDOjpGb3JtRGF0
YVJlZmVyZW5jZSYpOwotICAgIHZvaWQgZGlkRmluaXNoKCk7Ci0gICAgdm9pZCBkaWRGYWlsKFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImJik7Ci0gICAgdm9pZCBkaWROb3RIYW5kbGUoKTsKLQotICAg
IFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlciYgbV9zZXJ2aWNlV29ya2VyUHJvdmlkZXI7Ci0gICAg
UmVmUHRyPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyPiBtX2xvYWRlcjsKLSAgICBXZWJDb3JlOjpG
ZXRjaElkZW50aWZpZXIgbV9pZGVudGlmaWVyOwotICAgIFJlZjxXZWJTV0NsaWVudENvbm5lY3Rp
b24+IG1fY29ubmVjdGlvbjsKLSAgICBDYWxsYmFjayBtX2NhbGxiYWNrOwotICAgIGJvb2wgbV9z
aG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0IHsgdHJ1ZSB9OwotICAgIGlu
dDY0X3QgbV9lbmNvZGVkRGF0YUxlbmd0aCB7IDAgfTsKLSAgICBib29sIG1fZGlkRmFpbCB7IGZh
bHNlIH07Ci0gICAgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIg
bV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcjsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZl
dGNoLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoLm1lc3NhZ2VzLmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAzZDNiYzc0MDRiZmI0N2Q2MWUwZDE1ODhlMWE1ZjJhOWMwNmExNjYxLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5tZXNzYWdlcy5pbgorKysgL2Rl
di9udWxsCkBAIC0xLDM1ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUg
bWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0j
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIK
LSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLQotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLQotbWVzc2FnZXMgLT4gU2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoIHsKLSAgICBEaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSByZXNwb25zZSwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlTWVzc2FnZSkKLSAgICBEaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZShXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlIHJlc3BvbnNlKQotICAgIERpZFJlY2VpdmVEYXRhKElQQzo6RGF0YVJlZmVy
ZW5jZSBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQotICAgIERpZFJlY2VpdmVGb3Jt
RGF0YShJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIGRhdGEpCi0gICAgRGlkRmluaXNoKCkKLSAgICBE
aWRGYWlsKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCi0gICAgRGlkTm90SGFuZGxlKCkK
LX0KLQotI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3Bw
CmluZGV4IDA2YTRjYzdkYjdhMThjMTE4N2JhZmM2NTg4NTU0MzJjNDVlYjJhZTIuLmQwMDg5YmY1
OGI2NTQ1NjVhOGUxZTkxMmQxYmRhNjIyYTdkOWVmYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcApA
QCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNs
dWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiU2VydmljZVdvcmtlckNs
aWVudEZldGNoLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sTWVzc2FnZXMuaCIKQEAg
LTIwMywyMSArMjAyLDYgQEAgdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmdldFJlZ2lzdHJh
dGlvbnMoU2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBjb24KICAgICB9KTsKIH0KIAot
dm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnN0YXJ0RmV0Y2goRmV0Y2hJZGVudGlmaWVyIGZl
dGNoSWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIHJlZmVycmVy
KQotewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6U3RhcnRGZXRj
aCB7IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIs
IHJlcXVlc3QsIG9wdGlvbnMsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgeyByZXF1ZXN0Lmh0dHBC
b2R5KCkgfSwgcmVmZXJyZXIgfSk7Ci19Ci0KLXZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpj
YW5jZWxGZXRjaChGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
cikKLXsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OkNhbmNlbEZl
dGNoIHsgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIGZldGNoSWRlbnRpZmll
ciB9KTsKLX0KLQotdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmNvbnRpbnVlRGlkUmVjZWl2
ZUZldGNoUmVzcG9uc2UoRmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllciwgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50
aWZpZXIpCi17Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpDb250
aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlIHsgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIsIGZldGNoSWRlbnRpZmllciB9KTsKLX0KLQogdm9pZCBXZWJTV0NsaWVudENvbm5l
Y3Rpb246OmNvbm5lY3Rpb25Ub1NlcnZlckxvc3QoKQogewogICAgIGNsZWFyKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rp
b24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVj
dGlvbi5oCmluZGV4IDI3ZmVhMmMxYjI0YjhjMmE5NjRjNGU5NjdkM2Y3ZWNhMzhkMDM3MmYuLjll
NDQ1ZjU1Yzk2ODA5Y2E5Y2Q2MzU2MzFmNTU1NDc5OTFlY2E1MzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5o
CkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKLSNpbmNsdWRlICJT
ZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guaCIKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TV0NsaWVudENvbm5lY3Rpb24uaD4KQEAgLTYwLDkgKzU5LDYgQEAgcHVibGljOgogICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikg
ZmluYWw7CiAKICAgICBib29sIG1heUhhdmVTZXJ2aWNlV29ya2VyUmVnaXN0ZXJlZEZvck9yaWdp
bihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKSBjb25zdCBmaW5hbDsKLSAgICB2
b2lkIHN0YXJ0RmV0Y2goV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiwgY29uc3QgU3RyaW5nJiByZWZlcnJl
cik7Ci0gICAgdm9pZCBjYW5jZWxGZXRjaChXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIsIFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKLSAgICB2b2lkIGNvbnRp
bnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyLCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CiAKICAgICB2b2lkIGNv
bm5lY3Rpb25Ub1NlcnZlckxvc3QoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAKaW5kZXgg
NjJhMzliMjVmZGZhZDE3ZTExNTc2MzMwMDI4MjQyYjMwOWYxOTI4NS4uN2RjZDE4ZWJhZDMwNmRh
ZTQ3NWIwMDdiNTdlN2UxNjVmNmJiMzUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwCkBA
IC02Niw0OCArNjYsNiBAQCBXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb24qIFdlYlNlcnZpY2VX
b3JrZXJQcm92aWRlcjo6ZXhpc3RpbmdTZXJ2aWNlV29ya2VyQ29ubgogICAgIHJldHVybiBuZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24tPmV4aXN0aW5nU2VydmljZVdvcmtlckNvbm5lY3Rpb24oKTsK
IH0KIAotc3RhdGljIGlubGluZSBib29sIHNob3VsZEhhbmRsZUZldGNoKGNvbnN0IFJlc291cmNl
TG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKLXsKLSAgICBpZiAob3B0aW9ucy5zZXJ2aWNlV29ya2Vy
c01vZGUgPT0gU2VydmljZVdvcmtlcnNNb2RlOjpOb25lKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBpZiAoaXNQb3RlbnRpYWxOYXZpZ2F0aW9uT3JTdWJyZXNvdXJjZVJlcXVlc3Qob3B0
aW9ucy5kZXN0aW5hdGlvbikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiAh
IW9wdGlvbnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI7Ci19Ci0KLXZvaWQg
V2ViU2VydmljZVdvcmtlclByb3ZpZGVyOjpoYW5kbGVGZXRjaChSZXNvdXJjZUxvYWRlciYgbG9h
ZGVyLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFNlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaDo6Q2FsbGJhY2smJiBjYWxsYmFjaykKLXsKLSAgICBpZiAoIUxl
Z2FjeVNjaGVtZVJlZ2lzdHJ5OjpjYW5TZXJ2aWNlV29ya2Vyc0hhbmRsZVVSTFNjaGVtZShsb2Fk
ZXIucmVxdWVzdCgpLnVybCgpLnByb3RvY29sKCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKSB8
fCAhc2hvdWxkSGFuZGxlRmV0Y2gobG9hZGVyLm9wdGlvbnMoKSkpIHsKLSAgICAgICAgY2FsbGJh
Y2soU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpSZXN1bHQ6OlVuaGFuZGxlZCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRvJiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuc2VydmljZVdvcmtlckNv
bm5lY3Rpb24oKTsKLSAgICBhdXRvIGZldGNoSWRlbnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlm
aWVyPEZldGNoSWRlbnRpZmllclR5cGU+KGxvYWRlci5pZGVudGlmaWVyKCkpOwotICAgIG1fb25n
b2luZ0ZldGNoVGFza3MuYWRkKGZldGNoSWRlbnRpZmllciwgU2VydmljZVdvcmtlckNsaWVudEZl
dGNoOjpjcmVhdGUoKnRoaXMsIGxvYWRlciwgZmV0Y2hJZGVudGlmaWVyLCBjb25uZWN0aW9uLCBz
aG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBXVEZNb3ZlKGNhbGxiYWNr
KSkpOwotfQotCi1ib29sIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6Y2FuY2VsRmV0Y2goRmV0
Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllcikKLXsKLSAgICBhdXRvIGZldGNoID0gbV9vbmdv
aW5nRmV0Y2hUYXNrcy50YWtlKGZldGNoSWRlbnRpZmllcik7Ci0gICAgaWYgKGZldGNoKQotICAg
ICAgICAoKmZldGNoKS0+Y2FuY2VsKCk7Ci0gICAgcmV0dXJuICEhZmV0Y2g7Ci19Ci0KLXZvaWQg
V2ViU2VydmljZVdvcmtlclByb3ZpZGVyOjpmZXRjaEZpbmlzaGVkKEZldGNoSWRlbnRpZmllciBm
ZXRjaElkZW50aWZpZXIpCi17Ci0gICAgbV9vbmdvaW5nRmV0Y2hUYXNrcy50YWtlKGZldGNoSWRl
bnRpZmllcik7Ci19Ci0KLXZvaWQgV2ViU2VydmljZVdvcmtlclByb3ZpZGVyOjpkaWRSZWNlaXZl
U2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKLXsKLSAgICBpZiAoYXV0byBmZXRjaCA9IG1fb25n
b2luZ0ZldGNoVGFza3MuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVyPEZldGNoSWRlbnRpZmllclR5
cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCi0gICAgICAgIGZldGNoLT5kaWRSZWNlaXZl
TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5o
CmluZGV4IDA4OGFlZDk1NGU5YTlkNGVlNTkyZjVkNzU1MjcyNzE0NGEwNTBhMjIuLmMwMGMwNDc5
MzEyN2EwNjlmYWU5NTIzMDEyNWRiYjk1NTU0Y2Q3MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5o
CkBAIC0yNyw3ICsyNyw2IEBACiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKLSNpbmNs
dWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZp
Y2VXb3JrZXJQcm92aWRlci5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCkBA
IC00MSwxMSArNDAsNiBAQCBjbGFzcyBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIgZmluYWwgOiBw
dWJsaWMgV2ViQ29yZTo6U2VydmljZVdvcmtlclByb3ZpZGVyIHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgV2ViU2VydmljZVdvcmtlclByb3ZpZGVyJiBzaW5nbGV0b24oKTsKIAotICAgIHZvaWQgaGFu
ZGxlRmV0Y2goV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXImLCBib29sIHNob3VsZENsZWFyUmVmZXJy
ZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6Q2FsbGJh
Y2smJik7Ci0gICAgYm9vbCBjYW5jZWxGZXRjaChXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIpOwot
ICAgIHZvaWQgZmV0Y2hGaW5pc2hlZChXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIpOwotCi0gICAg
dm9pZCBkaWRSZWNlaXZlU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2aWNlV29ya2Vy
Q2xpZW50UmVnaXN0cmF0aW9uTWF0Y2goSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7
CiAKIHByaXZhdGU6CkBAIC01NCw4ICs0OCw2IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpT
V0NsaWVudENvbm5lY3Rpb24qIGV4aXN0aW5nU2VydmljZVdvcmtlckNvbm5lY3Rpb24oKSBmaW5h
bDsKICAgICBXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb24mIHNlcnZpY2VXb3JrZXJDb25uZWN0
aW9uKCkgZmluYWw7Ci0KLSAgICBIYXNoTWFwPFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgUmVm
PFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaD4+IG1fb25nb2luZ0ZldGNoVGFza3M7CiB9OyAvLyBj
bGFzcyBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCAxYWZhYWU2NTg4Nzc1MzBhMjUzOTgzNzcw
MjE5ZjllZjY3MDM4ZmRhLi42MGMwYzYyMWFjZTliY2ZkMjNkMWRiZjM3YmYwMjlhNDQzZGMwNDFj
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxOS0x
MC0xMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgSGFuZGxl
IHNlcnZpY2Ugd29ya2VyIGxvYWRzIHRocm91Z2ggTmV0d29ya1Jlc291cmNlTG9hZGVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDIzMDkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0Y2gtcmVxdWVzdC14aHIu
aHR0cHMtZXhwZWN0ZWQudHh0OgorCiAyMDE5LTEwLTA5ICBBbGljaWEgQm95YSBHYXJjw61hICA8
YWJveWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbTVNFXVtHU3RyZWFtZXJdIEZpeCB2aWRlbyBz
b21ldGltZXMgbm90IGFwcGVhcmluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0
Y2gtcmVxdWVzdC14aHIuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0
Y2gtcmVxdWVzdC14aHIuaHR0cHMtZXhwZWN0ZWQudHh0CmluZGV4IDRmYjZiYjUzYjMxNjU1MmY0
MWQwYTk3ZmE5M2FkZDdmNjg2YTY1MjMuLjg1YWEwMGIwYWU4ZWRjYzE2ODE0NTY1ZDk5OWRhZDdl
NDFhOTNjOTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2ZldGNoLXJlcXVlc3QteGhy
Lmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9mZXRjaC1yZXF1ZXN0
LXhoci5odHRwcy1leHBlY3RlZC50eHQKQEAgLTgsNyArOCw3IEBAIFBBU1MgRmV0Y2hFdmVudCNy
ZXF1ZXN0LmJvZHkgY29udGFpbnMgWEhSIHJlcXVlc3QgZGF0YSAoc3RyaW5nKQogUEFTUyBGZXRj
aEV2ZW50I3JlcXVlc3QuYm9keSBjb250YWlucyBYSFIgcmVxdWVzdCBkYXRhIChibG9iKSAKIFBB
U1MgRmV0Y2hFdmVudCNyZXF1ZXN0Lm1ldGhvZCBpcyBzZXQgdG8gWEhSIG1ldGhvZCAKIFBBU1Mg
WEhSIHVzaW5nIE9QVElPTlMgbWV0aG9kIAotRkFJTCBYSFIgd2l0aCBmb3JtIGRhdGEgcHJvbWlz
ZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiRXJyb3I6IGFz
c2VydF9lcXVhbHM6IGV4cGVjdGVkIChzdHJpbmcpICJQT1NUIiBidXQgZ290ICh1bmRlZmluZWQp
IHVuZGVmaW5lZCIKK1BBU1MgWEhSIHdpdGggZm9ybSBkYXRhIAogUEFTUyBYSFIgd2l0aCBtb2Rl
L2NyZWRlbnRpYWxzIHNldCAKIFBBU1MgWEhSIHRvIGRhdGEgVVJMIAogUEFTUyByZXN0b3JlIGds
b2JhbCBzdGF0ZSAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380734</attachid>
            <date>2019-10-11 01:43:40 -0700</date>
            <delta_ts>2019-10-11 03:51:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202309-20191011104337.patch</filename>
            <type>text/plain</type>
            <size>106912</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMDAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNmMDc4MDEwMzI2NTYy
M2ZiNmRhNjE0NGZhNmU2ZjU4NjRjNWVmNy4uNzk5N2QzNDE5ZGQ3Y2UyOTFjOTkxOWI0ZmE0OGVh
MDIxZDlhYTVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTEwLTEwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBIYW5kbGUgc2VydmljZSB3
b3JrZXIgbG9hZHMgdGhyb3VnaCBOZXR3b3JrUmVzb3VyY2VMb2FkZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjMwOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IHRvIHNlcmlhbGl6ZSBIVFRQ
IGhlYWRlciBuYW1lcyBhcyBlbnVtZXJhdGlvbi4KKyAgICAgICAgVXBkYXRlZCBTV1NlcnZlciBh
YmlsaXR5IHRvIGhhbmRsZSBzY2hlbWVzIGJ5IGFkZGluZyBidWlsdC1pbiBzdXBwb3J0IGZvciBI
VFRQIGFuZCBIVFRQUyBhcyBkb25lIGluIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5LgorCisgICAgICAg
IENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VM
b2FkZXJPcHRpb25zLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jcmVhdGUtaHR0cC1o
ZWFkZXItbmFtZS10YWJsZToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpjYW5IYW5kbGVTY2hlbWUgY29u
c3QpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2IpOgorCiAyMDE5LTEw
LTEwICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRleC5ydT4KIAogICAgICAgICBH
dWFyZCBHQ3J5cHQtc3BlY2lmaWMgY29kZSB3aXRoIFVTRShHQ1JZUFQpIGluc3RlYWQgb2YgUExB
VEZPUk0gbWFjcm9zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQ1MTcyNzA4YWNhM2JiYmJkNDljODMzZTdiN2Q2MTFk
MGM5MTAzYWMuLjcxYzNkMTVlYjJkODNlYTg4MmNjYzNhNGFiOWIxNGRlNDM4ODU0ODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsOTkgQEAKKzIwMTktMTAtMTAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgorCisgICAgICAgIEhhbmRsZSBzZXJ2aWNlIHdvcmtlciBsb2FkcyB0aHJvdWdo
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjAyMzA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVtb3ZlIFNlcnZpY2VXb3JrZXJGZXRjaENsaWVudC4KKyAgICAgICAg
SW5zdGVhZCB3ZSB1c2UgdGhlIG5vcm1hbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXIvV2ViUmVzb3Vy
Y2VMb2FkZXIgY29tbXVuaWNhdGlvbiBjaGFubmVsLgorICAgICAgICBXZSBwYXNzIGFkZGl0aW9u
YWwgcGFyYW1ldGVycywgaW4gcGFydGljdWxhciBzZXJ2aWNlIHdvcmtlciBtb2RlIGFuZCByZWdp
c3RyYXRpb24gaWRlbnRpZmllci4KKworICAgICAgICBCYXNlZCBvbiB0aGF0IGluZm9ybWF0aW9u
LCBuZXR3b3JrIHByb2Nlc3Mgd2lsbCBkZWNpZGUgd2hldGhlciB0byBsb2FkIGZyb20gc2Vydmlj
ZSB3b3JrZXIgb3IgbmV0d29yay4KKyAgICAgICAgVGhlIGZpcnN0IGFkdmFudGFnZSBpcyB0aGF0
IGluIGNhc2Ugb2Ygc2VydmljZSB3b3JrZXIgbm90IGhhbmRsaW5nIHRoZSBsb2FkLCBnb2luZyB0
byB0aGUgbmV0d29yayBpcyBmYXN0ZXIuCisgICAgICAgIFRoaXMgd2lsbCBhbHNvIGFsbG93IHVz
IHRvIGRvIHRoZSByZWdpc3RyYXRpb24gbWF0Y2hpbmcgaW4gbmV0d29yayBwcm9jZXNzIHdoZW4g
cmVjZWl2aW5nIGEgbmF2aWdhdGlvbiByZXF1ZXN0LgorCisgICAgICAgIFNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2sgaXMgbm93IGJlZWZlZCB1cCB0byBkbyB0aGUgbGluayBiZXR3ZWVuIHNlcnZpY2Ug
d29ya2VyIGFuZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXIvV2ViUmVzb3VyY2VMb2FkZXIuCisgICAg
ICAgIFRvIHN1cHBvcnQgdGhlIHNhbWUgY29uc29sZSBsb2dnaW5nLCB3ZSBhZGQgYSBuZXcgbWVz
c2FnZSBjYWxsZWQgRGlkRmFpbFNlcnZpY2VXb3JrZXJMb2FkLgorCisgICAgICAgIFRvIHN1cHBv
cnQgQVBJIHRlc3RzLCB3ZSBjb250aW51ZSB0byBnbyB0byB0aGUgc2VydmljZSB3b3JrZXIgYmVm
b3JlIHRyeWluZyB0byBnbyB0byBVUkwgc2NoZW1lIGhhbmRsZXJzLgorICAgICAgICBUaGlzIGFk
ZHMgc29tZSBidXJkZW4gYXMgd2UgbmVlZCB0byBnbyB0byBuZXR3b3JrIHByb2Nlc3Mvc2Vydmlj
ZSB3b3JrZXIgcHJvY2VzcyBhbmQsIGluIGNhc2UgbG9hZCBpcyBub3QgaGFuZGxlZAorICAgICAg
ICBieSBzZXJ2aWNlIHdvcmtlciwgd2UgZ28gYmFjayB0byB0aGUgd2ViIHByb2Nlc3MgdG8gZG8g
dGhlIGxvYWQgdGhyb3VnaCBVUkwgc2NoZW1lIGhhbmRsZXJzLgorICAgICAgICBGb3IgdGhhdCBw
dXJwb3NlIHdlIHVzZSBTZXJ2aWNlV29ya2Vyc01vZGU6Ok9ubHkuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Ogor
ICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6c2NoZWR1bGVSZXNvdXJjZUxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjphYm9ydCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRXaXRo
U2VydmljZVdvcmtlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
c2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2Vydmlj
ZVdvcmtlckZldGNoVGFzazo6U2VydmljZVdvcmtlckZldGNoVGFzayk6CisgICAgICAgIChXZWJL
aXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6On5TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKToKKyAg
ICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6c2VuZFRvU2VydmljZVdvcmtl
cik6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnNlbmRUb0NsaWVu
dCk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnN0YXJ0KToKKyAg
ICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6c3RhcnRGZXRjaCk6CisgICAg
ICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZWRpcmVjdFJl
c3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6
ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
OjpkaWRSZWNlaXZlRm9ybURhdGEpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrOjpkaWRGaW5pc2gpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrOjpkaWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6
ZGlkTm90SGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6
Y2FuY2VsRnJvbUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s6OmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpjb250aW51ZUZldGNoVGFza1dpdGgpOgorICAgICAgICAo
V2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjp0aW1lb3V0VGltZXJGaXJlZCk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Lmg6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmZldGNoSWRlbnRp
ZmllciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y2FuY2VsRmV0Y2gpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTV1NlcnZlckNvbm5lY3Rpb246OmNyZWF0ZUZldGNoVGFzayk6CisgICAgICAgIChXZWJLaXQ6
OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaCk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6c3RhcnRGZXRjaCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZGlkUmVj
ZWl2ZUZldGNoVGFza01lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246OnJlZ2lzdGVyRmV0Y2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246OnVucmVnaXN0ZXJGZXRjaCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZmV0Y2hUYXNrVGltZWRPdXQpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6aXBjQ29ubmVjdGlvbiBjb25zdCk6CisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlJlc291cmNlTG9hZGVyOjpkaWRGYWlsU2VydmljZVdvcmtlckxvYWQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6c2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50
RmV0Y2guaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdv
cmtlckNsaWVudEZldGNoLm1lc3NhZ2VzLmluOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwOgorICAgICAgICAqIFdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmg6CisKIDIwMTktMTAtMTAgIEJh
c3VrZSBTdXp1a2kgIDxCYXN1a2UuU3V6dWtpQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5DYWly
b10gTW92ZSByZW1vdGUgY29tbXVuaWNhdGlvbiBoYW5kbGluZyBmcm9tIFJlbW90ZUluc3BlY3Rv
clNlcnZlciB0byBSZW1vdGVJbnNwZWN0b3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkZXJPcHRpb25zLmgKaW5kZXggOWUzMDc0ZGEzMjExZDBlZTk3YjhlYjJlZGY0OTE2
OWVjNWRmMmE0YS4uYWVjZjk0NDFkMzIxZWQ5OTZiOGU0ZDIwMjEwMGI2NWZmYzBhZTEzNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaApAQCAtMTc1
LDMgKzE3NSwxNiBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zIDogcHVibGljIEZldGNo
T3B0aW9ucyB7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYg
eworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJz
TW9kZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJzTW9kZSwKKyAgICAgICAgV2ViQ29yZTo6U2VydmljZVdvcmtlcnNNb2Rl
OjpBbGwsCisgICAgICAgIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJzTW9kZTo6Tm9uZSwKKyAgICAg
ICAgV2ViQ29yZTo6U2VydmljZVdvcmtlcnNNb2RlOjpPbmx5CisgICAgPjsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jcmVhdGUtaHR0cC1oZWFkZXItbmFtZS10YWJsZSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3JlYXRlLWh0dHAtaGVhZGVyLW5hbWUtdGFibGUKaW5kZXggNjQ3Y2RkODI0MmZh
Zjc4NWUwMjMxNDM0ZDAwOTBlNmMzOTc3M2RhZC4uNDM5ZGI2OGMzMmM0M2UwODNiMDAwNjc4ZDcy
Y2UzNTlkYWQzZTI5ZiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jcmVhdGUtaHR0cC1oZWFkZXItbmFtZS10YWJsZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NyZWF0ZS1odHRwLWhlYWRlci1uYW1lLXRhYmxlCkBAIC0yMzMsNiArMjMz
LDI4IEBAIFdFQkNPUkVfRVhQT1JUIFN0cmluZ1ZpZXcgaHR0cEhlYWRlck5hbWVTdHJpbmcoSFRU
UEhlYWRlck5hbWUpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBXVEYg
eworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkhUVFBIZWFkZXJOYW1l
PiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6SFRU
UEhlYWRlck5hbWUsCisnJycpCisKK2lzX2ZpcnN0ID0gVHJ1ZQorZm9yIGh0dHBfaGVhZGVyX25h
bWUgaW4gaHR0cF9oZWFkZXJfbmFtZXM6CisgICAgaWYgaXNfZmlyc3Q6CisgICAgICAgIGlzX2Zp
cnN0ID0gRmFsc2UKKyAgICBlbHNlOgorICAgIAloZWFkZXJfZmlsZS53cml0ZSgnLFxuJykKKwor
ICAgIGhlYWRlcl9maWxlLndyaXRlKCcgICAgICAgIFdlYkNvcmU6OkhUVFBIZWFkZXJOYW1lOjol
cycgJSBodHRwX2hlYWRlcl9uYW1lX3RvX2lkW2h0dHBfaGVhZGVyX25hbWVdKQorCitoZWFkZXJf
ZmlsZS53cml0ZSgnJycKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKICNlbmRp
ZiAvLyBIVFRQSGVhZGVyTmFtZXNfaAogJycnKQogaGVhZGVyX2ZpbGUuY2xvc2UoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRl
eCA5YmI2NmFiMjhlMDc1ZTA3MDBjZjNjNzY5Y2UzY2ViMmYzNmI4NjAwLi4xMzdjNjYyNTUyZTFj
YWU2MGM1NTIwMjAyZGU3OGNmNDhmZWIxZDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtOTc0LDYgKzk3NCwyMSBAQCB2
b2lkIFNXU2VydmVyOjpjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgcmVnaXN0cmFibGVEb21haQogICAgIG1fY3JlYXRlQ29udGV4dENvbm5lY3Rpb25DYWxs
YmFjayhyZWdpc3RyYWJsZURvbWFpbik7CiB9CiAKK2Jvb2wgU1dTZXJ2ZXI6OmNhbkhhbmRsZVNj
aGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkgY29uc3QKK3sKKyAgICBpZiAoc2NoZW1lLmlzTnVs
bCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoc2NoZW1lLnN0YXJ0c1dpdGhJ
Z25vcmluZ0FTQ0lJQ2FzZSgiaHR0cCJfcykpIHsKKyAgICAgICAgaWYgKHNjaGVtZS5sZW5ndGgo
KSA9PSA0KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChzY2hlbWUubGVu
Z3RoKCkgPT0gNSAmJiBpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKHNjaGVtZVs0XSwgJ3MnKSkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBtX3JlZ2lzdGVy
ZWRTY2hlbWVzLmNvbnRhaW5zKHNjaGVtZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRleCA0NjAxMzE3NjE2YzgxNjc0
OGQyMDgwMGYyNjBiMzUyODU3NDg4MTcwLi4zMTNkNWU5MWUzYTFjZmQzYmMwOGY5ZDc4NjFhZjE5
ODk3YjlhMDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlci5oCkBAIC0xNjQsNyArMTY0LDcgQEAgcHVibGljOgogICAgIENvbm5lY3Rpb24q
IGNvbm5lY3Rpb24oU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKSBjb25z
dCB7IHJldHVybiBtX2Nvbm5lY3Rpb25zLmdldChpZGVudGlmaWVyKTsgfQogCiAgICAgY29uc3Qg
SGFzaE1hcDxTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8Q29u
bmVjdGlvbj4+JiBjb25uZWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbnM7IH0K
LSAgICBjb25zdCBIYXNoU2V0PFN0cmluZz4gcmVnaXN0ZXJlZFNjaGVtZXMoKSBjb25zdCB7IHJl
dHVybiBtX3JlZ2lzdGVyZWRTY2hlbWVzOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjYW5I
YW5kbGVTY2hlbWUoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAKICAgICBTV09yaWdpblN0b3JlJiBv
cmlnaW5TdG9yZSgpIHsgcmV0dXJuIG1fb3JpZ2luU3RvcmU7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5j
cHAKaW5kZXggNzc4YWU3ZDZjODMzNzdlN2QxZTQyZmVkNzIwYzMzYzc1N2ZlMmQxZi4uOGM0YTAw
NWQxMzFlZDJiMDNiMWRlODRmYTMxNDIzMzZhMWVjZTFkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3Bw
CkBAIC0yNTksNyArMjU5LDcgQEAgdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpydW5SZWdpc3Rlckpv
Yihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iKQogewogICAgIEFTU0VSVChqb2IudHlw
ZSA9PSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6UmVnaXN0ZXIpOwogCi0gICAgaWYgKCFzaG91bGRU
cmVhdEFzUG90ZW50aWFsbHlUcnVzdHdvcnRoeShqb2Iuc2NyaXB0VVJMKSAmJiAhbV9zZXJ2ZXIu
cmVnaXN0ZXJlZFNjaGVtZXMoKS5jb250YWlucyhqb2Iuc2NyaXB0VVJMLnByb3RvY29sKCkudG9T
dHJpbmdXaXRob3V0Q29weWluZygpKSkKKyAgICBpZiAoIXNob3VsZFRyZWF0QXNQb3RlbnRpYWxs
eVRydXN0d29ydGh5KGpvYi5zY3JpcHRVUkwpICYmICFtX3NlcnZlci5jYW5IYW5kbGVTY2hlbWUo
am9iLnNjcmlwdFVSTC5wcm90b2NvbCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkpCiAgICAg
ICAgIHJldHVybiByZWplY3RDdXJyZW50Sm9iKEV4Y2VwdGlvbkRhdGEgeyBTZWN1cml0eUVycm9y
LCAiU2NyaXB0IFVSTCBpcyBub3QgcG90ZW50aWFsbHkgdHJ1c3R3b3J0aHkiX3MgfSk7CiAKICAg
ICAvLyBJZiB0aGUgb3JpZ2luIG9mIGpvYidzIHNjcmlwdCB1cmwgaXMgbm90IGpvYidzIHJlZmVy
cmVyJ3Mgb3JpZ2luLCB0aGVuOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3Rz
LnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXggZjdjZDE4YmQyOTIzM2I4
NThmZTdjN2RkMzc1YTlhOTk2M2E2OTI2ZS4uMWUwNmU2MjYwY2QyZDk0ZTI0ODA4ZWI1N2YwNDI3
MGYxMzUzYTQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC0xOTAsNyArMTkwLDYgQEAgc2V0KFdl
YktpdF9NRVNTQUdFU19JTl9GSUxFUwogICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KICAgICBXZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJveHkubWVzc2FnZXMuaW4KIAotICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNl
V29ya2VyQ2xpZW50RmV0Y2gubWVzc2FnZXMuaW4KICAgICBXZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDbGllbnRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAgICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCAyZTQ3NjYwODU0MDNkNDIw
N2YyYmYxNzJlOTljNzg0NjkwYTljY2UxLi5mMWFkYWQ2MjY5ZDAxMmNhYjFkZDcyYjU5MDUyNThl
ZjkwOWY5NWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2Zp
bGVsaXN0CkBAIC0xMDUsNyArMTA1LDYgQEAgJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9E
SVIpL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0
aW9uTWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb3h5Lm1lc3NhZ2VzLmluCi0kKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1N0b3Jh
Z2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBS
T0pFQ1RfRElSKS9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCBiZDlkZDdmNjMzYzE3YmNmMjk5MDg3
N2YxZGUzYWFlNGE4ZmI0N2FjLi4xYzVkMjE0ZDAwNzFkMjY4NGZkY2M4YjhlNGFjOWM2NWJkOTdk
YjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QKQEAgLTgwLDggKzgwLDYgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvUmVtb3RlV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZVdlYkluc3BlY3RvclVJTWVz
c2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvU2Vj
SXRlbVNoaW1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1NlY0l0ZW1TaGltUHJveHlNZXNzYWdlcy5oCi0kKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TZXJ2aWNlV29ya2VyQ2xpZW50
RmV0Y2hNZXNzYWdlUmVjZWl2ZXIuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlcy5oCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvU2VydmljZVdvcmtlckZldGNoVGFza01lc3NhZ2VzLmgKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRy
b2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXgg
OWRlNzA0MjY2YWZlZTUxMzZlNjVlODQ3ODFiNWEwMjUyNTE1N2FjOS4uYmFlN2MzMTllNDc2NDQ1
YTljZTM2ZTYyZDc2ZWZlZGRmNjZhYjEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJp
dmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpA
QCAtMTMyLDcgKzEzMiw2IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFJlbW90ZVdlYklu
c3BlY3RvclByb3h5IFwKICAgICBSZW1vdGVXZWJJbnNwZWN0b3JVSSBcCiAgICAgU2VjSXRlbVNo
aW1Qcm94eSBcCi0gICAgU2VydmljZVdvcmtlckNsaWVudEZldGNoIFwKICAgICBTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrIFwKICAgICBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyIFwKICAgICBT
dG9yYWdlQXJlYU1hcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDYyMThhNmU5
MGZhYmZmNDQxOTM1ZWUwMWE3NWZkOWY1ZDlkMGE0NjYuLmNiNTBlYmFjMTBiOTAzMmFlMjU1MzQ5
ODVlNTBjNzdjNzgyOWZkMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC00MDYs
OSArNDA2LDEzIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNjaGVkdWxl
UmVzb3VyY2VMb2FkKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhCiAgICAgUkVMRUFTRV9BU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwogICAgIEFTU0VSVCghbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJz
LmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKIAotICAgIGF1dG8gbG9hZGVyID0gTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpjcmVhdGUoV1RGTW92ZShsb2FkUGFyYW1ldGVycyksICp0aGlzKTsKLSAgICBt
X25ldHdvcmtSZXNvdXJjZUxvYWRlcnMuYWRkKGlkZW50aWZpZXIsIGxvYWRlci5jb3B5UmVmKCkp
OworICAgIGF1dG8mIGxvYWRlciA9IG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5hZGQoaWRlbnRp
ZmllciwgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjcmVhdGUoV1RGTW92ZShsb2FkUGFyYW1ldGVy
cyksICp0aGlzKSkuaXRlcmF0b3ItPnZhbHVlOworCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQorICAgIGxvYWRlci0+c3RhcnRXaXRoU2VydmljZVdvcmtlcihtX3N3Q29ubmVjdGlvbi5nZXQo
KSk7CisjZWxzZQogICAgIGxvYWRlci0+c3RhcnQoKTsKKyNlbmRpZgogfQogCiB2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwZXJmb3JtU3luY2hyb25vdXNMb2FkKE5ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMsIE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJl
cGx5JiYgcmVwbHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4IGUyOGM3ZDE0YmQx
MGE0Yzc0YTc0YzU0ZjE0NjJkYjU5NDIzMDEzYzUuLmNmYTU0OTI0OWMxODMzZWY2NDQ1OTdjZDQw
YzY1NWI4MTUxZDIwNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCkBAIC0xMDcsNiAr
MTA3LDEyIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZShJUEM6
OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBmcmFtZUFuY2VzdG9yT3Jp
Z2luczsKICAgICBlbmNvZGVyIDw8IGlzSFRUUFNVcGdyYWRlRW5hYmxlZDsKIAorI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKKyAgICBlbmNvZGVyIDw8IHNlcnZpY2VXb3JrZXJzTW9kZTsKKyAg
ICBlbmNvZGVyIDw8IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOworICAgIGVu
Y29kZXIgPDwgaHR0cEhlYWRlcnNUb0tlZXA7CisjZW5kaWYKKwogI2lmIEVOQUJMRShDT05URU5U
X0VYVEVOU0lPTlMpCiAgICAgZW5jb2RlciA8PCBtYWluRG9jdW1lbnRVUkw7CiAgICAgZW5jb2Rl
ciA8PCB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwpAQCAtMjQyLDcgKzI0OCwyNyBA
QCBPcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycz4gTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnM6OmRlY29kZShJUAogICAgIGlmICghaXNIVFRQU1VwZ3JhZGVFbmFibGVk
KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIHJlc3VsdC5pc0hUVFBTVXBncmFk
ZUVuYWJsZWQgPSAqaXNIVFRQU1VwZ3JhZGVFbmFibGVkOwotICAgIAorCisjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQorICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJzTW9kZT4gc2VydmljZVdv
cmtlcnNNb2RlOworICAgIGRlY29kZXIgPj4gc2VydmljZVdvcmtlcnNNb2RlOworICAgIGlmICgh
c2VydmljZVdvcmtlcnNNb2RlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJl
c3VsdC5zZXJ2aWNlV29ya2Vyc01vZGUgPSAqc2VydmljZVdvcmtlcnNNb2RlOworCisgICAgT3B0
aW9uYWw8T3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+PiBzZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+IHNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOworICAgIGlmICghc2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbklkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmVz
dWx0LnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyID0gKnNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyOworCisgICAgT3B0aW9uYWw8SGFzaFNldDxIVFRQSGVhZGVy
TmFtZSwgV1RGOjpJbnRIYXNoPEhUVFBIZWFkZXJOYW1lPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRy
YWl0czxIVFRQSGVhZGVyTmFtZT4+PiBodHRwSGVhZGVyc1RvS2VlcDsKKyAgICBkZWNvZGVyID4+
IGh0dHBIZWFkZXJzVG9LZWVwOworICAgIGlmICghaHR0cEhlYWRlcnNUb0tlZXApCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmVzdWx0Lmh0dHBIZWFkZXJzVG9LZWVwID0gV1RG
TW92ZSgqaHR0cEhlYWRlcnNUb0tlZXApOworI2VuZGlmCisKICNpZiBFTkFCTEUoQ09OVEVOVF9F
WFRFTlNJT05TKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1haW5Eb2N1bWVudFVS
TCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgK
aW5kZXggMTIwMzQ3MDRkYTkyN2I1YTJmYzFiNWNlZmU5OWJiZjgyYmZkZjU3NC4uOWNkNWI0NTVj
NzI1NTczNDlhMDAzOWQ4ZmQxYzI3NDVhNGI1NzMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMu
aApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNl
SGVhZGVycy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hPcHRpb25zLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9IVFRQSGVhZGVyTmFtZXMuaD4KICNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogCiBu
YW1lc3BhY2UgSVBDIHsKQEAgLTYwLDYgKzYxLDEyIEBAIHB1YmxpYzoKICAgICBWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4gZnJhbWVBbmNlc3Rvck9yaWdpbnM7CiAgICAg
Ym9vbCBpc0hUVFBTVXBncmFkZUVuYWJsZWQgeyBmYWxzZSB9OwogCisjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQorICAgIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJzTW9kZSBzZXJ2aWNlV29ya2Vy
c01vZGUgeyBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vyc01vZGU6Ok5vbmUgfTsKKyAgICBPcHRpb25h
bDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4gc2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI7CisgICAgSGFzaFNldDxXZWJDb3JlOjpIVFRQSGVh
ZGVyTmFtZSwgV1RGOjpJbnRIYXNoPFdlYkNvcmU6OkhUVFBIZWFkZXJOYW1lPiwgV1RGOjpTdHJv
bmdFbnVtSGFzaFRyYWl0czxXZWJDb3JlOjpIVFRQSGVhZGVyTmFtZT4+IGh0dHBIZWFkZXJzVG9L
ZWVwOworI2VuZGlmCisKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIFVSTCBt
YWluRG9jdW1lbnRVUkw7CiAgICAgT3B0aW9uYWw8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRp
Zmllcj4gdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBm
YjM3MmQ3OWRlY2I5NmNlYTUxYjdjZTQzMTNmZjQ2ODExYzE5ZGJkLi45MmFmNzFlMTQ3MDNjNTg0
NTdhOWMzZDQ0ODk5ZDVlYThlMTZhZDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0zNzksNiArMzc5LDEx
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjphYm9ydCgpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgaWYgKGF1dG8gdGFzayA9
IFdURk1vdmUobV9zZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKSkKKyAgICAgICAgdGFzay0+Y2FuY2Vs
RnJvbUNsaWVudCgpOworI2VuZGlmCisKICAgICBpZiAobV9uZXR3b3JrTG9hZCkgewogICAgICAg
ICBpZiAoY2FuVXNlQ2FjaGUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKSkpIHsKICAg
ICAgICAgICAgIC8vIFdlIG1pZ2h0IGFscmVhZHkgaGF2ZSB1c2VkIGRhdGEgZnJvbSB0aGlzIGlu
Y29tcGxldGUgbG9hZC4gRW5zdXJlIG9sZGVyIHZlcnNpb25zIGRvbid0IHJlbWFpbiBpbiB0aGUg
Y2FjaGUgYWZ0ZXIgY2FuY2VsLgpAQCAtNjEyLDggKzYxNywxNiBAQCB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6ZGlkRmFpbExvYWRpbmcoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAg
ICAgaWYgKGlzU3luY2hyb25vdXMoKSkgewogICAgICAgICBtX3N5bmNocm9ub3VzTG9hZERhdGEt
PmVycm9yID0gZXJyb3I7CiAgICAgICAgIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KCpt
X3N5bmNocm9ub3VzTG9hZERhdGEsIG51bGxwdHIpOwotICAgIH0gZWxzZSBpZiAoYXV0byogY29u
bmVjdGlvbiA9IG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkpCisgICAgfSBlbHNlIGlmIChhdXRv
KiBjb25uZWN0aW9uID0gbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSkgeworI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKKyAgICAgICAgaWYgKG1fc2VydmljZVdvcmtlckZldGNoVGFzaykKKyAg
ICAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpE
aWRGYWlsU2VydmljZVdvcmtlckxvYWQoZXJyb3IpLCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25J
RCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZhaWxSZXNvdXJjZUxvYWQoZXJyb3IpLCBtZXNzYWdl
U2VuZGVyRGVzdGluYXRpb25JRCgpKTsKKyNlbHNlCiAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGYWlsUmVzb3VyY2VMb2FkKGVycm9yKSwg
bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSk7CisjZW5kaWYKKyAgICB9CiAKICAgICBjbGVh
bnVwKExvYWRSZXN1bHQ6OkZhaWx1cmUpOwogfQpAQCAtNzQ3LDYgKzc2MCwxMCBAQCB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6cmVzdGFydE5ldHdvcmtMb2FkKFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmIG5ld1JlcQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVX
aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgYm9vbCBpc0FsbG93
ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscykKIHsKKyAgICBpZiAobV9zZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrKSB7CisgICAgICAgIG1fc2VydmljZVdvcmtlckZldGNoVGFzay0+Y29udGludWVGZXRj
aFRhc2tXaXRoKFdURk1vdmUobmV3UmVxdWVzdCkpOworICAgICAgICByZXR1cm47CisgICAgfQog
ICAgIGlmIChtX3Nob3VsZFJlc3RhcnRMb2FkKSB7CiAgICAgICAgIG1fc2hvdWxkUmVzdGFydExv
YWQgPSBmYWxzZTsKIApAQCAtNzkyLDYgKzgwOSwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVz
dAogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2UoKQogeworICAgIGlmIChtX3NlcnZpY2VXb3JrZXJGZXRjaFRhc2spIHsKKyAgICAgICAgbV9z
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLT5jb250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAobV9jYWNoZUVudHJ5V2FpdGluZ0Zv
ckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKSB7CiAgICAgICAgIHNlbmRSZXN1bHRGb3JDYWNo
ZUVudHJ5KFdURk1vdmUobV9jYWNoZUVudHJ5V2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlKSk7CiAgICAgICAgIGNsZWFudXAoTG9hZFJlc3VsdDo6U3VjY2Vzcyk7CkBAIC0xMTk2
LDYgKzEyMTgsMzAgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmlzQ3Jvc3NPcmlnaW5Q
cmVmZXRjaCgpIGNvbnN0CiAgICAgcmV0dXJuIHJlcXVlc3QuaHR0cEhlYWRlckZpZWxkKEhUVFBI
ZWFkZXJOYW1lOjpQdXJwb3NlKSA9PSAicHJlZmV0Y2giICYmICFtX3BhcmFtZXRlcnMuc291cmNl
T3JpZ2luLT5jYW5SZXF1ZXN0KHJlcXVlc3QudXJsKCkpOwogfQogCisjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0V2l0aFNlcnZpY2VX
b3JrZXIoV2ViU1dTZXJ2ZXJDb25uZWN0aW9uKiBzd0Nvbm5lY3Rpb24pCit7CisgICAgQVNTRVJU
KCFtX3NlcnZpY2VXb3JrZXJGZXRjaFRhc2spOworICAgIG1fc2VydmljZVdvcmtlckZldGNoVGFz
ayA9IHN3Q29ubmVjdGlvbiA/IHN3Q29ubmVjdGlvbi0+Y3JlYXRlRmV0Y2hUYXNrKCp0aGlzKSA6
IG51bGxwdHI7CisgICAgaWYgKG1fc2VydmljZVdvcmtlckZldGNoVGFzaykKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKG1fcGFyYW1ldGVycy5zZXJ2aWNlV29ya2Vyc01vZGUgPT0gU2Vydmlj
ZVdvcmtlcnNNb2RlOjpPbmx5KSB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNl
TG9hZGVyOjpTZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlIHsgfSwgaWRlbnRpZmllcigpKTsKKyAg
ICAgICAgYWJvcnQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBzdGFydCgpOworfQor
Cit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSgp
Cit7CisgICAgbV9zZXJ2aWNlV29ya2VyRmV0Y2hUYXNrID0gbnVsbHB0cjsKKyAgICBzdGFydCgp
OworfQorCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBSRUxFQVNF
X0xPR19JRl9BTExPV0VECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCBkNjUwNzJiNzJiZDQxMzE0MWEwNmIyODdjNDUy
NjliZTQyYWYwNzc2Li43MWY4MWJiNDYyNWQ4MzQ1YzY0ODA3MjdmOGE2NTRjMzY3Y2Y3ZGVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmgKQEAgLTUxLDYgKzUxLDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKIGNsYXNzIE5ldHdvcmtMb2FkOwogY2xhc3MgTmV0
d29ya0xvYWRDaGVja2VyOworY2xhc3MgU2VydmljZVdvcmtlckZldGNoVGFzazsKK2NsYXNzIFdl
YlNXU2VydmVyQ29ubmVjdGlvbjsKIAogbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiBjbGFzcyBF
bnRyeTsKQEAgLTg4LDcgKzkwLDggQEAgcHVibGljOgogICAgIFJlc291cmNlTG9hZElkZW50aWZp
ZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyOyB9
CiAgICAgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQoKSBjb25zdCB7IHJldHVybiBt
X3BhcmFtZXRlcnMud2ViRnJhbWVJRDsgfQogICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQ7IH0KLSAgICAKKyAg
ICBjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYgcGFyYW1ldGVycygpIGNvbnN0
IHsgcmV0dXJuIG1fcGFyYW1ldGVyczsgfQorCiAgICAgTmV0d29ya0NhY2hlOjpHbG9iYWxGcmFt
ZUlEIGdsb2JhbEZyYW1lSUQoKSB7IHJldHVybiB7IG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJ
RCwgcGFnZUlEKCksIGZyYW1lSUQoKSB9OyB9CiAKICAgICBzdHJ1Y3QgU3luY2hyb25vdXNMb2Fk
RGF0YTsKQEAgLTEyMiw2ICsxMjUsMTEgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0tlcHRBbGl2
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNLZXB0QWxpdmU7IH0KIAorI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKKyAgICB2b2lkIHN0YXJ0V2l0aFNlcnZpY2VXb3JrZXIoV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uKik7CisgICAgdm9pZCBzZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlKCk7CisjZW5kaWYK
KwogcHJpdmF0ZToKICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMmJiwgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRl
bGF5ZWRSZXBseSYmKTsKIApAQCAtMjIwLDYgKzIyOCw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X2lzS2VwdEFsaXZlIHsgZmFsc2UgfTsKIAogICAgIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRy
YWNrZXI+IG1fbmV0d29ya0FjdGl2aXR5VHJhY2tlcjsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCisgICAgc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+IG1fc2Vydmlj
ZVdvcmtlckZldGNoVGFzazsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlckZldGNoVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKaW5kZXggODM0YjU2OWU0MjI3
NWYxMzQ4N2VjNzdkZWExNWUwYmMzZjBhYTI1Zi4uMjU2MDI4N2U5YWYyM2ZlYjVmZjAxNTQ0OTVh
OGY2ZDQxMjZjMzFlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNw
cApAQCAtMzIsMTAgKzMyLDE0IEBACiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1
ZGUgIkZvcm1EYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUg
IlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3MuaCIKKyNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgiCi0jaW5jbHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2Vi
UmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oPgog
CiAjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lG
KG1fc2Vzc2lvbklELmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBTZXJ2aWNlV29ya2VyLCAi
JXAgLSBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykK
ICNkZWZpbmUgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9M
T0dfRVJST1JfSUYobV9zZXNzaW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFNlcnZp
Y2VXb3JrZXIsICIlcCAtIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OiIgZm10LCB0aGlzLCAjI19f
VkFfQVJHU19fKQpAQCAtNDQsODAgKzQ4LDEzOSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2soUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJTV1NlcnZlckNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4
dENvbm5lY3Rpb24sIEZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIsIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTZWNvbmRzIHRpbWVvdXQpCitT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgTmV0d29ya1Jlc291cmNlTG9hZGVyJiBsb2FkZXIsIFNXU2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQogICAgIDogbV9zZXNzaW9uSUQo
c2Vzc2lvbklEKQotICAgICwgbV9jb25uZWN0aW9uKG1ha2VXZWFrUHRyKGNvbm5lY3Rpb24pKQot
ICAgICwgbV9jb250ZXh0Q29ubmVjdGlvbihjb250ZXh0Q29ubmVjdGlvbikKLSAgICAsIG1faWRl
bnRpZmllciB7IGNvbm5lY3Rpb24uaWRlbnRpZmllcigpLCBmZXRjaElkZW50aWZpZXIgfQorICAg
ICwgbV9sb2FkZXIobG9hZGVyKQorICAgICwgbV9mZXRjaElkZW50aWZpZXIoV2ViQ29yZTo6RmV0
Y2hJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQorICAgICwgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllcihzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikKICAgICAsIG1fc2VydmljZVdvcmtlcklk
ZW50aWZpZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIpCi0gICAgLCBtX3RpbWVvdXQodGltZW91
dCkKICAgICAsIG1fdGltZW91dFRpbWVyKCp0aGlzLCAmU2VydmljZVdvcmtlckZldGNoVGFzazo6
dGltZW91dFRpbWVyRmlyZWQpCiB7Ci0gICAgbV90aW1lb3V0VGltZXIuc3RhcnRPbmVTaG90KG1f
dGltZW91dCk7CisgICAgbV90aW1lb3V0VGltZXIuc3RhcnRPbmVTaG90KGxvYWRlci5jb25uZWN0
aW9uVG9XZWJQcm9jZXNzKCkubmV0d29ya1Byb2Nlc3MoKS5zZXJ2aWNlV29ya2VyRmV0Y2hUaW1l
b3V0KCkpOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZWRp
cmVjdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorU2VydmljZVdv
cmtlckZldGNoVGFzazo6flNlcnZpY2VXb3JrZXJGZXRjaFRhc2soKQogewotICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlOiAlcyIsIG1faWRlbnRp
Zmllci5mZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAg
IG1fdGltZW91dFRpbWVyLnN0b3AoKTsKKyAgICBpZiAobV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlv
bikKKyAgICAgICAgbV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbi0+dW5yZWdpc3RlckZldGNoKCp0
aGlzKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgTWVzc2FnZT4gYm9vbCBTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOjpzZW5kVG9TZXJ2aWNlV29ya2VyKE1lc3NhZ2UmJiBtZXNzYWdlKQoreworICAg
IHJldHVybiBtX3NlcnZpY2VXb3JrZXJDb25uZWN0aW9uID8gbV9zZXJ2aWNlV29ya2VyQ29ubmVj
dGlvbi0+aXBjQ29ubmVjdGlvbigpLnNlbmQoc3RkOjpmb3J3YXJkPE1lc3NhZ2U+KG1lc3NhZ2Up
LCAwKSA6IGZhbHNlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBNZXNzYWdlPiBib29sIFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OnNlbmRUb0NsaWVudChNZXNzYWdlJiYgbWVzc2FnZSkKK3sKKyAg
ICByZXR1cm4gbV9sb2FkZXIuY29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNvbm5lY3Rpb24oKS5z
ZW5kKHN0ZDo6Zm9yd2FyZDxNZXNzYWdlPihtZXNzYWdlKSwgbV9sb2FkZXIuaWRlbnRpZmllcigp
KTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpzdGFydChXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24mIHNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKQoreworICAgIG1fc2Vy
dmljZVdvcmtlckNvbm5lY3Rpb24gPSBtYWtlV2Vha1B0cihzZXJ2aWNlV29ya2VyQ29ubmVjdGlv
bik7CisgICAgc2VydmljZVdvcmtlckNvbm5lY3Rpb24ucmVnaXN0ZXJGZXRjaCgqdGhpcyk7CisK
KyAgICBzdGFydEZldGNoKFJlc291cmNlUmVxdWVzdCB7IG1fbG9hZGVyLm9yaWdpbmFsUmVxdWVz
dCgpIH0sIHNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOjpzdGFydEZldGNoKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgc2VydmljZVdvcmtlckNvbm5lY3Rpb24pCit7CisgICAg
bV9jdXJyZW50UmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCk7CisKKyAgICBhdXRvJiBvcHRpb25z
ID0gbV9sb2FkZXIucGFyYW1ldGVycygpLm9wdGlvbnM7CisgICAgYXV0byByZWZlcnJlciA9IG1f
Y3VycmVudFJlcXVlc3QuaHR0cFJlZmVycmVyKCk7CisKKyAgICAvLyBXZSBhcmUgaW50ZXJjZXB0
aW5nIGZldGNoIGNhbGxzIGFmdGVyIGdvaW5nIHRocm91Z2ggdGhlIEhUVFAgbGF5ZXIsIHdoaWNo
IG1heSBhZGQgc29tZSBzcGVjaWZpYyBoZWFkZXJzLgorICAgIGNsZWFuSFRUUFJlcXVlc3RIZWFk
ZXJzRm9yQWNjZXNzQ29udHJvbChtX2N1cnJlbnRSZXF1ZXN0LCBtX2xvYWRlci5wYXJhbWV0ZXJz
KCkuaHR0cEhlYWRlcnNUb0tlZXApOworCisgICAgYm9vbCBpc1NlbnQgPSBzZW5kVG9TZXJ2aWNl
V29ya2VyKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U3RhcnRGZXRj
aCB7IG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIG1fc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIG1fZmV0Y2hJZGVudGlmaWVyLCBtX2N1cnJlbnRSZXF1ZXN0LCBvcHRpb25zLCBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlIHsgbV9jdXJyZW50UmVxdWVzdC5odHRwQm9keSgpIH0sIHJlZmVycmVy
IH0pOworICAgIEFTU0VSVF9VTlVTRUQoaXNTZW50LCBpc1NlbnQpOworfQorCit2b2lkIFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKFJlc291cmNlUmVz
cG9uc2UmJiByZXNwb25zZSkKK3sKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNl
aXZlUmVkaXJlY3RSZXNwb25zZTogJXMiLCBtX2ZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CiAgICAgbV93YXNIYW5kbGVkID0gdHJ1ZTsKLSAgICBpZiAobV9j
b25uZWN0aW9uKQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VX
b3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgeyByZXNwb25zZSB9
LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKKworICAgIHJlc3BvbnNlLnNldFNvdXJj
ZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OlNlcnZpY2VXb3JrZXIpOworICAgIGF1dG8gbmV3
UmVxdWVzdCA9IG1fY3VycmVudFJlcXVlc3QucmVkaXJlY3RlZFJlcXVlc3QocmVzcG9uc2UsIG1f
bG9hZGVyLnBhcmFtZXRlcnMoKS5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGly
ZWN0KTsKKworICAgIHNlbmRUb0NsaWVudChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6Oldp
bGxTZW5kUmVxdWVzdCB7IG5ld1JlcXVlc3QsIHJlc3BvbnNlIH0pOwogfQogCi12b2lkIFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2Fn
ZSkKK3ZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291
cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlTWVzc2FnZSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVz
cG9uc2U6ICVzIiwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJl
c3BvbnNlOiAlcyIsIG1fZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKICAgICBtX3RpbWVvdXRUaW1lci5zdG9wKCk7CiAgICAgbV93YXNIYW5kbGVkID0gdHJ1
ZTsKLSAgICBpZiAobV9jb25uZWN0aW9uKQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVz
cG9uc2UsIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0sIG1faWRlbnRp
Zmllci5mZXRjaElkZW50aWZpZXIpOworICAgIHJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJl
c3BvbnNlOjpTb3VyY2U6OlNlcnZpY2VXb3JrZXIpOworCisgICAgc2VuZFRvQ2xpZW50KE1lc3Nh
Z2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG5l
ZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0pOwogfQogCiB2b2lkIFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIW1fdGlt
ZW91dFRpbWVyLmlzQWN0aXZlKCkpOwotICAgIGlmIChtX2Nvbm5lY3Rpb24pCi0gICAgICAgIG1f
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRS
ZWNlaXZlRGF0YSB7IGRhdGEsIGVuY29kZWREYXRhTGVuZ3RoIH0sIG1faWRlbnRpZmllci5mZXRj
aElkZW50aWZpZXIpOworICAgIHNlbmRUb0NsaWVudChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2Fk
ZXI6OkRpZFJlY2VpdmVEYXRhIHsgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHsgZGF0
YS5kYXRhKCksIGRhdGEuc2l6ZSgpIH0sIGVuY29kZWREYXRhTGVuZ3RoIH0pOwogfQogCiB2b2lk
IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVGb3JtRGF0YShjb25zdCBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlJiBmb3JtRGF0YSkKIHsKICAgICBBU1NFUlQoIW1fdGltZW91dFRpbWVy
LmlzQWN0aXZlKCkpOwotICAgIGlmIChtX2Nvbm5lY3Rpb24pCi0gICAgICAgIG1fY29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRSZWNlaXZlRm9y
bURhdGEgeyBmb3JtRGF0YSB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKKyAgICAv
LyBGSVhNRTogQWxsb3cgV2ViUmVzb3VyY2VMb2FkZXIgdG8gcmVjZWl2ZSBmb3JtIGRhdGEuCiB9
CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkRmluaXNoKCkKIHsKICAgICBBU1NF
UlQoIW1fdGltZW91dFRpbWVyLmlzQWN0aXZlKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoImRpZEZpbmlzaEZldGNoOiBmZXRjaElkZW50aWZpZXI6ICVzIiwgbV9pZGVudGlmaWVyLmZl
dGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgiZGlkRmluaXNoRmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMiLCBt
X2ZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgbV90
aW1lb3V0VGltZXIuc3RvcCgpOwotICAgIGlmIChtX2Nvbm5lY3Rpb24pCi0gICAgICAgIG1fY29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRGaW5p
c2ggeyB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKKyAgICBzZW5kVG9DbGllbnQo
TWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJjZUxvYWQgeyB7IH0g
fSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkRmFpbChjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJk
aWRGYWlsRmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMiLCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVu
dGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBtX3RpbWVvdXRUaW1l
ci5zdG9wKCk7Ci0gICAgaWYgKG1fY29ubmVjdGlvbikKLSAgICAgICAgbV9jb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZEZhaWwgeyBlcnJvciB9
LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9J
Rl9BTExPV0VEKCJkaWRGYWlsRmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMiLCBtX2ZldGNoSWRl
bnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgbV9sb2FkZXIuZGlk
RmFpbExvYWRpbmcoZXJyb3IpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRp
ZE5vdEhhbmRsZSgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkTm90SGFuZGxl
RmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMiLCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVy
LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJkaWROb3RIYW5kbGVGZXRjaDogZmV0Y2hJZGVudGlmaWVyOiAlcyIsIG1fZmV0Y2hJZGVu
dGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBtX3RpbWVvdXRUaW1l
ci5zdG9wKCk7Ci0gICAgaWYgKG1fY29ubmVjdGlvbikKLSAgICAgICAgbV9jb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZE5vdEhhbmRsZSB7IH0s
IG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOworICAgIGlmIChtX2xvYWRlci5wYXJhbWV0
ZXJzKCkuc2VydmljZVdvcmtlcnNNb2RlID09IFNlcnZpY2VXb3JrZXJzTW9kZTo6T25seSkgewor
ICAgICAgICBzZW5kVG9DbGllbnQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpTZXJ2aWNl
V29ya2VyRGlkTm90SGFuZGxlIHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9s
b2FkZXIuc2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSgpOworfQorCit2b2lkIFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OmNhbmNlbEZyb21DbGllbnQoKQoreworICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoImNhbmNlbEZyb21DbGllbnQ6IGZldGNoSWRlbnRpZmllcjogJXMiLCBtX2ZldGNoSWRl
bnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgc2VuZFRvU2Vydmlj
ZVdvcmtlcihNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkNhbmNlbEZl
dGNoIHsgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgbV9zZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgbV9mZXRjaElkZW50aWZpZXIgfSk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlckZldGNo
VGFzazo6Y29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSgpCit7CisgICAgc2VuZFRvU2Vy
dmljZVdvcmtlcihNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkNvbnRp
bnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UgeyBtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
LCBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBtX2ZldGNoSWRlbnRpZmllciB9KTsKK30KKwor
dm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpjb250aW51ZUZldGNoVGFza1dpdGgoUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCkKK3sKKyAgICBpZiAoIW1fc2VydmljZVdvcmtlckNvbm5lY3Rp
b24pIHsKKyAgICAgICAgbV9sb2FkZXIuc2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIHN0YXJ0RmV0Y2goV1RGTW92ZShyZXF1ZXN0KSwgKm1f
c2VydmljZVdvcmtlckNvbm5lY3Rpb24pOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s6OnRpbWVvdXRUaW1lckZpcmVkKCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ0
aW1lb3V0VGltZXJGaXJlZDogZmV0Y2hJZGVudGlmaWVyOiAlcyIsIG1faWRlbnRpZmllci5mZXRj
aElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIGRpZE5vdEhh
bmRsZSgpOwotICAgIG1fY29udGV4dENvbm5lY3Rpb24uZmV0Y2hUYXNrVGltZWRPdXQoKnRoaXMp
OworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInRpbWVvdXRUaW1lckZpcmVkOiBmZXRjaElk
ZW50aWZpZXI6ICVzIiwgbV9mZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOworICAgIGlmIChtX3NlcnZpY2VXb3JrZXJDb25uZWN0aW9uKQorICAgICAgICBtX3Nl
cnZpY2VXb3JrZXJDb25uZWN0aW9uLT5mZXRjaFRhc2tUaW1lZE91dChzZXJ2aWNlV29ya2VySWRl
bnRpZmllcigpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNo
VGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJGZXRjaFRhc2suaAppbmRleCBkOGI5ZDZmMjU2NjM4MzY3NzJmMjliOWY5Yjk5ZTBh
MGUyNjM5NDVjLi5iZGZkNWU2OTM1OThkYzgwM2ZlZjM4NjRmMjY4ZWZiMWQ2NWFmZjFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlckZldGNoVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKQEAgLTI4LDEyICsyOCwxNSBAQAog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hJZGVu
dGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIu
aD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKK2NsYXNzIFJlc291
cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiB9CiAKQEAgLTQ2LDgyICs0OSw1
OSBAQCBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNs
YXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKK2NsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjsK
IGNsYXNzIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjsKIAotY2xhc3MgU2VydmljZVdv
cmtlckZldGNoVGFzayB7CitjbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2FkZXI7CitjbGFzcyBXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CisKK2NsYXNzIFNlcnZpY2VXb3JrZXJGZXRjaFRh
c2sgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U2VydmljZVdvcmtlckZldGNoVGFzaz4gewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFNlcnZpY2VXb3JrZXJGZXRj
aFRhc2soUEFMOjpTZXNzaW9uSUQsIFdlYlNXU2VydmVyQ29ubmVjdGlvbiYsIFdlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbiYsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNlY29uZHMgdGltZW91dCk7CisgICAgU2VydmljZVdv
cmtlckZldGNoVGFzayhQQUw6OlNlc3Npb25JRCwgTmV0d29ya1Jlc291cmNlTG9hZGVyJiwgV2Vi
Q29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIpOworICAgIH5TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKCk7CiAKLSAgICB2b2lk
IGRpZE5vdEhhbmRsZSgpOworICAgIHZvaWQgc3RhcnQoV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uJik7CisgICAgdm9pZCBjYW5jZWxGcm9tQ2xpZW50KCk7CiAgICAgdm9pZCBmYWlsKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKSB7IGRpZEZhaWwoZXJyb3IpOyB9CiAg
ICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KTsKIAotICAgIHN0cnVjdCBJZGVudGlmaWVyIHsKLSAgICAgICAgV2ViQ29yZTo6U1dTZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcjsKLSAgICAgICAgV2ViQ29y
ZTo6RmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllcjsKLSAgICAgICAgCi0gICAgICAgIHVu
c2lnbmVkIGhhc2goKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBoYXNo
ZXNbMl07Ci0gICAgICAgICAgICBoYXNoZXNbMF0gPSBXVEY6OmludEhhc2goY29ubmVjdGlvbklk
ZW50aWZpZXIudG9VSW50NjQoKSk7Ci0gICAgICAgICAgICBoYXNoZXNbMV0gPSBXVEY6OmludEhh
c2goZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOwotICAgICAgICAgICAgcmV0dXJuIFN0cmlu
Z0hhc2hlcjo6aGFzaE1lbW9yeShoYXNoZXMsIHNpemVvZihoYXNoZXMpKTsKLSAgICAgICAgfQot
ICAgIH07Ci0KLSAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1
cm4gbV9pZGVudGlmaWVyOyB9Ci0gICAgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXImIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNl
V29ya2VySWRlbnRpZmllcjsgfQorICAgIHZvaWQgY29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNw
b25zZSgpOworICAgIHZvaWQgY29udGludWVGZXRjaFRhc2tXaXRoKFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmKTsKKworICAgIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZp
ZXIoKSBjb25zdCB7IHJldHVybiBtX2ZldGNoSWRlbnRpZmllcjsgfQorICAgIFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZXJ2aWNlV29ya2VySWRlbnRpZmllcjsgfQorCisgICAgdm9pZCBkaWROb3RIYW5k
bGUoKTsKKwogICAgIGJvb2wgd2FzSGFuZGxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzSGFuZGxl
ZDsgfQogCiBwcml2YXRlOgotICAgIHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBib29sIG5lZWRzQ29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZWRpcmVjdFJl
c3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CisgICAgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBib29sIG5lZWRzQ29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZv
aWQgZGlkUmVjZWl2ZUZvcm1EYXRhKGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmKTsKICAg
ICB2b2lkIGRpZEZpbmlzaCgpOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJik7CisKKyAgICB2b2lkIHN0YXJ0RmV0Y2goV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpOworCiAgICAgdm9pZCB0aW1l
b3V0VGltZXJGaXJlZCgpOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWVzc2FnZT4gYm9vbCBz
ZW5kVG9TZXJ2aWNlV29ya2VyKE1lc3NhZ2UmJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWVz
c2FnZT4gYm9vbCBzZW5kVG9DbGllbnQoTWVzc2FnZSYmKTsKKwogICAgIFBBTDo6U2Vzc2lvbklE
IG1fc2Vzc2lvbklEOwotICAgIFdlYWtQdHI8V2ViU1dTZXJ2ZXJDb25uZWN0aW9uPiBtX2Nvbm5l
Y3Rpb247Ci0gICAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBtX2NvbnRleHRDb25u
ZWN0aW9uOwotICAgIElkZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAgIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlciYgbV9sb2FkZXI7CisgICAgV2Vha1B0cjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24+IG1fc2VydmljZVdvcmtlckNvbm5lY3Rpb247CisgICAgV2ViQ29yZTo6RmV0Y2hJZGVu
dGlmaWVyIG1fZmV0Y2hJZGVudGlmaWVyOworICAgIFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcjsKICAgICBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyOwotICAgIFNl
Y29uZHMgbV90aW1lb3V0OworICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX2N1cnJlbnRS
ZXF1ZXN0OwogICAgIFdlYkNvcmU6OlRpbWVyIG1fdGltZW91dFRpbWVyOwogICAgIGJvb2wgbV93
YXNIYW5kbGVkIHsgZmFsc2UgfTsKIH07CiAKLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3Qg
U2VydmljZVdvcmtlckZldGNoVGFzazo6SWRlbnRpZmllciYgYSwgY29uc3QgU2VydmljZVdvcmtl
ckZldGNoVGFzazo6SWRlbnRpZmllciYgYikKLXsKLSAgICByZXR1cm4gYS5jb25uZWN0aW9uSWRl
bnRpZmllciA9PSBiLmNvbm5lY3Rpb25JZGVudGlmaWVyICYmICBhLmZldGNoSWRlbnRpZmllciA9
PSBiLmZldGNoSWRlbnRpZmllcjsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLQotbmFt
ZXNwYWNlIFdURiB7Ci0KLXN0cnVjdCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrSWRlbnRpZmllckhh
c2ggewotICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFdlYktpdDo6U2VydmljZVdvcmtl
ckZldGNoVGFzazo6SWRlbnRpZmllciYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9Ci0gICAg
c3RhdGljIGJvb2wgZXF1YWwoY29uc3QgV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpJ
ZGVudGlmaWVyJiBhLCBjb25zdCBXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OklkZW50
aWZpZXImIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVU
b0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0
IEhhc2hUcmFpdHM8V2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpJZGVudGlmaWVyPiA6
IEdlbmVyaWNIYXNoVHJhaXRzPFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6SWRlbnRp
Zmllcj4gewotICAgIHN0YXRpYyBXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OklkZW50
aWZpZXIgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIHsgfTsgfQotICAgIAotICAgIHN0YXRpYyB2b2lk
IGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6Oklk
ZW50aWZpZXImIHNsb3QpIHsgc2xvdC5jb25uZWN0aW9uSWRlbnRpZmllciA9IG1ha2VPYmplY3RJ
ZGVudGlmaWVyPFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXJUeXBlPihzdGQ6
Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkpOyB9Ci0gICAgCi0gICAgc3RhdGljIGJv
b2wgaXNEZWxldGVkVmFsdWUoY29uc3QgV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpJ
ZGVudGlmaWVyJiBzbG90KSB7IHJldHVybiBzbG90LmNvbm5lY3Rpb25JZGVudGlmaWVyLnRvVUlu
dDY0KCkgPT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpOyB9Ci19OwotCi10
ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s6OklkZW50aWZpZXI+IHsKLSAgICB1c2luZyBIYXNoID0gU2VydmljZVdvcmtlckZldGNoVGFz
a0lkZW50aWZpZXJIYXNoOwotfTsKLQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCA3OWUzMjY1
Y2VkMWVhMjRlODc1YmU1MjBiNzkzMmU4NWI2NDAzMTNmLi5kZDllY2I0YzFjMjhkMjI1MjA0MmI1
Mjk3MDk1OTRlOGMxODE0ODFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
LmNwcApAQCAtMzMsMTYgKzMzLDE4IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUg
Ik5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3
b3JrUHJvY2Vzcy5oIgotI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZGVyTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJXZWJTV0NsaWVudENvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUg
IldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJT
V1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRJZGVudGlmaWVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25EYXRhLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9M
ZWdhY3lTY2hlbWVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1NXU2VydmVyUmVnaXN0cmF0aW9uLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgpAQCAtMTI2LDE4ICsxMjgsOCBAQCB2b2lkIFdlYlNX
U2VydmVyQ29ubmVjdGlvbjo6dXBkYXRlV29ya2VyU3RhdGVJbkNsaWVudChTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciB3bwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6
VXBkYXRlV29ya2VyU3RhdGUod29ya2VyLCBzdGF0ZSkpOwogfQogCi12b2lkIFdlYlNXU2VydmVy
Q29ubmVjdGlvbjo6Y2FuY2VsRmV0Y2goU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIEZldGNoSWRlbnRpZmllciBm
ZXRjaElkZW50aWZpZXIpCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y2FuY2VsRmV0Y2go
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIEZldGNoSWRlbnRpZmllcikKIHsK
LSAgICBTV1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY2FuY2VsRmV0
Y2g6ICVzIiwgZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
LSAgICBhdXRvKiB3b3JrZXIgPSBzZXJ2ZXIoKS5hY3RpdmVXb3JrZXJGcm9tUmVnaXN0cmF0aW9u
SUQoc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpOwotICAgIGlmICghd29ya2Vy
IHx8ICF3b3JrZXItPmlzUnVubmluZygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyID0gd29ya2VyLT5pZGVudGlmaWVyKCk7Ci0gICAgc2VydmVy
KCkucnVuU2VydmljZVdvcmtlcklmTmVjZXNzYXJ5KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBb
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgdGhpcywgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIGZldGNoSWRlbnRpZmllcl0oYXV0byogY29udGV4dENvbm5lY3Rpb24pIG11dGFibGUgewot
ICAgICAgICBpZiAod2Vha1RoaXMgJiYgY29udGV4dENvbm5lY3Rpb24pCi0gICAgICAgICAgICBz
dGF0aWNfY2FzdDxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mPigqY29udGV4dENvbm5l
Y3Rpb24pLmNhbmNlbEZldGNoKHRoaXMtPmlkZW50aWZpZXIoKSwgZmV0Y2hJZGVudGlmaWVyLCBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgfSk7CiB9CiAKIHZvaWQgV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpjb250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
LCBGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyKQpAQCAtMTUzLDU5ICsxNDUsODkgQEAg
dm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9u
c2UoU2VydmljZVdvcmtlclJlZ2lzdHIKICAgICB9KTsKIH0KIAotdm9pZCBXZWJTV1NlcnZlckNv
bm5lY3Rpb246OnN0YXJ0RmV0Y2goU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIg
c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIEZldGNoSWRlbnRpZmllciBmZXRj
aElkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZldGNoT3B0aW9ucyYmIG9w
dGlvbnMsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiBmb3JtRGF0YSwgU3RyaW5nJiYgcmVmZXJy
ZXIpCitzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckZldGNoVGFzaz4gV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpjcmVhdGVGZXRjaFRhc2soTmV0d29ya1Jlc291cmNlTG9hZGVyJiBsb2FkZXIp
CiB7Ci0gICAgYXV0byogd29ya2VyID0gc2VydmVyKCkuYWN0aXZlV29ya2VyRnJvbVJlZ2lzdHJh
dGlvbklEKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKKyAgICBpZiAoIWxv
YWRlci5wYXJhbWV0ZXJzKCkuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKGxvYWRlci5wYXJhbWV0ZXJzKCkuc2Vy
dmljZVdvcmtlcnNNb2RlID09IFNlcnZpY2VXb3JrZXJzTW9kZTo6Tm9uZSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBpZiAoaXNQb3RlbnRpYWxOYXZpZ2F0aW9uT3JTdWJyZXNvdXJj
ZVJlcXVlc3QobG9hZGVyLnBhcmFtZXRlcnMoKS5vcHRpb25zLmRlc3RpbmF0aW9uKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoIXNlcnZlcigpLmNhbkhhbmRsZVNjaGVtZShs
b2FkZXIub3JpZ2luYWxSZXF1ZXN0KCkudXJsKCkucHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRD
b3B5aW5nKCkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8qIHdvcmtlciA9
IHNlcnZlcigpLmFjdGl2ZVdvcmtlckZyb21SZWdpc3RyYXRpb25JRCgqbG9hZGVyLnBhcmFtZXRl
cnMoKS5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CiAgICAgaWYgKCF3b3Jr
ZXIpIHsKLSAgICAgICAgU1dTRVJWRVJDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SX0lGX0FM
TE9XRUQoInN0YXJ0RmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMgLT4gRGlkTm90SGFuZGxlIGJl
Y2F1c2Ugbm8gYWN0aXZlIHdvcmtlciIsIGZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVu
dGlmaWVyKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBTV1NFUlZFUkNPTk5FQ1RJT05fUkVM
RUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgic3RhcnRGZXRjaDogRGlkTm90SGFuZGxlIGJlY2F1
c2Ugbm8gYWN0aXZlIHdvcmtlciAlcyIsIGxvYWRlci5wYXJhbWV0ZXJzKCkuc2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXItPmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIGF1dG8gc2VydmljZVdvcmtlcklk
ZW50aWZpZXIgPSB3b3JrZXItPmlkZW50aWZpZXIoKTsKIAotICAgIGF1dG8gcnVuU2VydmVyV29y
a2VyQW5kU3RhcnRGZXRjaCA9IFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCB0aGlzLCBm
ZXRjaElkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCByZXF1ZXN0ID0gV1RGTW92
ZShyZXF1ZXN0KSwgb3B0aW9ucyA9IFdURk1vdmUob3B0aW9ucyksIGZvcm1EYXRhID0gV1RGTW92
ZShmb3JtRGF0YSksIHJlZmVycmVyID0gV1RGTW92ZShyZWZlcnJlcildKGJvb2wgc3VjY2Vzcykg
bXV0YWJsZSB7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgaWYgKHdvcmtlci0+c2hvdWxk
U2tpcEZldGNoRXZlbnQoKSkgeworICAgICAgICBhdXRvKiByZWdpc3RyYXRpb24gPSBzZXJ2ZXIo
KS5nZXRSZWdpc3RyYXRpb24od29ya2VyLT5yZWdpc3RyYXRpb25LZXkoKSk7CisgICAgICAgIGlm
IChyZWdpc3RyYXRpb24gJiYgcmVnaXN0cmF0aW9uLT5zaG91bGRTb2Z0VXBkYXRlKGxvYWRlci5w
YXJhbWV0ZXJzKCkub3B0aW9ucykpCisgICAgICAgICAgICByZWdpc3RyYXRpb24tPnNvZnRVcGRh
dGUoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgYXV0byB0YXNrID0g
bWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPihzZXNzaW9uSUQoKSwgbG9hZGVyLCBp
ZGVudGlmaWVyKCksIHdvcmtlci0+aWRlbnRpZmllcigpKTsKKyAgICBzdGFydEZldGNoKCp0YXNr
LCAqd29ya2VyKTsKKyAgICByZXR1cm4gdGFzazsKK30KKwordm9pZCBXZWJTV1NlcnZlckNvbm5l
Y3Rpb246OnN0YXJ0RmV0Y2goU2VydmljZVdvcmtlckZldGNoVGFzayYgdGFzaywgU1dTZXJ2ZXJX
b3JrZXImIHdvcmtlcikKK3sKKyAgICBhdXRvIHJ1blNlcnZlcldvcmtlckFuZFN0YXJ0RmV0Y2gg
PSBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgdGhpcywgdGFzayA9IG1ha2VXZWFrUHRy
KHRhc2spXShib29sIHN1Y2Nlc3MpIG11dGFibGUgeworICAgICAgICBpZiAoIXRhc2spCiAgICAg
ICAgICAgICByZXR1cm47CiAKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykgeworICAgICAgICAgICAg
dGFzay0+ZGlkTm90SGFuZGxlKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwog
ICAgICAgICBpZiAoIXN1Y2Nlc3MpIHsKLSAgICAgICAgICAgIFNXU0VSVkVSQ09OTkVDVElPTl9S
RUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJzdGFydEZldGNoOiBmZXRjaElkZW50aWZpZXI6
ICVzIERpZE5vdEhhbmRsZSBiZWNhdXNlIHdvcmtlciBkaWQgbm90IGJlY29tZSBhY3RpdmF0ZWQi
LCBmZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAg
ICAgICAgbV9jb250ZW50Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNs
aWVudEZldGNoOjpEaWROb3RIYW5kbGUgeyB9LCBmZXRjaElkZW50aWZpZXIpOworICAgICAgICAg
ICAgU1dTRVJWRVJDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoInN0YXJ0
RmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMgRGlkTm90SGFuZGxlIGJlY2F1c2Ugd29ya2VyIGRp
ZCBub3QgYmVjb21lIGFjdGl2YXRlZCIsIHRhc2stPmZldGNoSWRlbnRpZmllcigpLmxvZ2dpbmdT
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHRhc2stPmRpZE5vdEhhbmRsZSgp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byogd29ya2Vy
ID0gc2VydmVyKCkud29ya2VyQnlJRChzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CisgICAgICAg
IGF1dG8qIHdvcmtlciA9IHNlcnZlcigpLndvcmtlckJ5SUQodGFzay0+c2VydmljZVdvcmtlcklk
ZW50aWZpZXIoKSk7CiAgICAgICAgIGlmICghd29ya2VyIHx8IHdvcmtlci0+aGFzVGltZWRPdXRB
bnlGZXRjaFRhc2tzKCkpIHsKLSAgICAgICAgICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0
Y2hJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIHRhc2stPmRpZE5vdEhhbmRsZSgpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgc2VydmVyKCkucnVuU2VydmljZVdv
cmtlcklmTmVjZXNzYXJ5KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBbd2Vha1RoaXMgPSBXVEZN
b3ZlKHdlYWtUaGlzKSwgdGhpcywgZmV0Y2hJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMgPSBXVEZNb3ZlKG9wdGlv
bnMpLCBmb3JtRGF0YSA9IFdURk1vdmUoZm9ybURhdGEpLCByZWZlcnJlciA9IFdURk1vdmUocmVm
ZXJyZXIpLCBzaG91bGRTa2lwRmV0Y2hFdmVudCA9IHdvcmtlci0+c2hvdWxkU2tpcEZldGNoRXZl
bnQoKV0oYXV0byogY29udGV4dENvbm5lY3Rpb24pIHsKLSAgICAgICAgICAgIGlmICghd2Vha1Ro
aXMpCisgICAgICAgIGlmICghd29ya2VyLT5jb250ZXh0Q29ubmVjdGlvbigpKQorICAgICAgICAg
ICAgc2VydmVyKCkuY3JlYXRlQ29udGV4dENvbm5lY3Rpb24od29ya2VyLT5yZWdpc3RyYWJsZURv
bWFpbigpKTsKKworICAgICAgICBzZXJ2ZXIoKS5ydW5TZXJ2aWNlV29ya2VySWZOZWNlc3Nhcnko
dGFzay0+c2VydmljZVdvcmtlcklkZW50aWZpZXIoKSwgW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFr
VGhpcyksIHRoaXMsIHRhc2sgPSBXVEZNb3ZlKHRhc2spXShhdXRvKiBjb250ZXh0Q29ubmVjdGlv
bikgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXRhc2spCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKSB7CisgICAgICAg
ICAgICAgICAgdGFzay0+ZGlkTm90SGFuZGxlKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoY29udGV4dENvbm5lY3Rpb24pIHsKLSAg
ICAgICAgICAgICAgICBTV1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
c3RhcnRGZXRjaDogU3RhcnRpbmcgZmV0Y2ggJXMgdmlhIHNlcnZpY2Ugd29ya2VyICVzIiwgZmV0
Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJj4oKmNvbnRleHRD
b25uZWN0aW9uKS5zdGFydEZldGNoKHNlc3Npb25JRCgpLCAqdGhpcywgZmV0Y2hJZGVudGlmaWVy
LCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9ucywgZm9ybURhdGEsIHJl
ZmVycmVyKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgU1dTRVJWRVJD
T05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoInN0YXJ0RmV0Y2g6IGZldGNo
SWRlbnRpZmllcjogJXMgRGlkTm90SGFuZGxlIGJlY2F1c2UgZmFpbGVkIHRvIHJ1biBzZXJ2aWNl
IHdvcmtlciwgb3Igc2VydmljZSB3b3JrZXIgaGFzIGhhZCB0aW1lZCBvdXQgZmV0Y2ggdGFza3Mi
LCBmZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAg
ICAgICAgICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3Jr
ZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyKTsKKyAgICAg
ICAgICAgIGlmICghY29udGV4dENvbm5lY3Rpb24pIHsKKyAgICAgICAgICAgICAgICBTV1NFUlZF
UkNPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgic3RhcnRGZXRjaDogZmV0
Y2hJZGVudGlmaWVyOiAlcyBEaWROb3RIYW5kbGUgYmVjYXVzZSBmYWlsZWQgdG8gcnVuIHNlcnZp
Y2Ugd29ya2VyIiwgdGFzay0+ZmV0Y2hJZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOworICAgICAgICAgICAgICAgIHRhc2stPmRpZE5vdEhhbmRsZSgpOworICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFNXU0VSVkVSQ09O
TkVDVElPTl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydEZldGNoOiBTdGFydGluZyBmZXRj
aCAlcyB2aWEgc2VydmljZSB3b3JrZXIgJXMiLCB0YXNrLT5mZXRjaElkZW50aWZpZXIoKS5sb2dn
aW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgdGFzay0+c2VydmljZVdvcmtlcklkZW50aWZpZXIo
KS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mPigqY29udGV4dENvbm5lY3Rpb24pLnN0
YXJ0RmV0Y2goKnRhc2spOwogICAgICAgICB9KTsKICAgICB9OwotCi0gICAgaWYgKHdvcmtlci0+
c2hvdWxkU2tpcEZldGNoRXZlbnQoKSkgewotICAgICAgICBtX2NvbnRlbnRDb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZE5vdEhhbmRsZSB7IH0s
IGZldGNoSWRlbnRpZmllcik7Ci0gICAgICAgIGF1dG8qIHJlZ2lzdHJhdGlvbiA9IHNlcnZlcigp
LmdldFJlZ2lzdHJhdGlvbih3b3JrZXItPnJlZ2lzdHJhdGlvbktleSgpKTsKLSAgICAgICAgaWYg
KHJlZ2lzdHJhdGlvbiAmJiByZWdpc3RyYXRpb24tPnNob3VsZFNvZnRVcGRhdGUob3B0aW9ucykp
Ci0gICAgICAgICAgICByZWdpc3RyYXRpb24tPnNvZnRVcGRhdGUoKTsKKyAgICAKKyAgICBpZiAo
d29ya2VyLnN0YXRlKCkgPT0gU2VydmljZVdvcmtlclN0YXRlOjpBY3RpdmF0aW5nKSB7CisgICAg
ICAgIHdvcmtlci53aGVuQWN0aXZhdGVkKFdURk1vdmUocnVuU2VydmVyV29ya2VyQW5kU3RhcnRG
ZXRjaCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKHdvcmtlci0+c3RhdGUo
KSA9PSBTZXJ2aWNlV29ya2VyU3RhdGU6OkFjdGl2YXRpbmcpIHsKLSAgICAgICAgd29ya2VyLT53
aGVuQWN0aXZhdGVkKFdURk1vdmUocnVuU2VydmVyV29ya2VyQW5kU3RhcnRGZXRjaCkpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIEFTU0VSVCh3b3JrZXItPnN0YXRlKCkgPT0gU2Vydmlj
ZVdvcmtlclN0YXRlOjpBY3RpdmF0ZWQpOworICAgIEFTU0VSVCh3b3JrZXIuc3RhdGUoKSA9PSBT
ZXJ2aWNlV29ya2VyU3RhdGU6OkFjdGl2YXRlZCk7CiAgICAgcnVuU2VydmVyV29ya2VyQW5kU3Rh
cnRGZXRjaCh0cnVlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCmlu
ZGV4IDdiZDJhMzNjYjU4YTMwNzcwZTM5OGJkMDQ5ZTUzZTIyNDIzYTNkMjYuLjk2Nzk2OGMyNmJh
MzNlNDU2MTY0OTY3YTA3OTFiMDI5ZWY0ODk3NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmgKQEAgLTUyLDYgKzUyLDggQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnRE
YXRhOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIE5ldHdvcmtQcm9jZXNzOworY2xhc3Mg
TmV0d29ya1Jlc291cmNlTG9hZGVyOworY2xhc3MgU2VydmljZVdvcmtlckZldGNoVGFzazsKIAog
Y2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uIDogcHVibGljIFdlYkNvcmU6OlNXU2VydmVyOjpD
b25uZWN0aW9uLCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdl
UmVjZWl2ZXIgewogcHVibGljOgpAQCAtNjYsNiArNjgsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAg
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3Q7CiAKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
U2VydmljZVdvcmtlckZldGNoVGFzaz4gY3JlYXRlRmV0Y2hUYXNrKE5ldHdvcmtSZXNvdXJjZUxv
YWRlciYpOworCiBwcml2YXRlOgogICAgIC8vIEltcGxlbWVudCBTV1NlcnZlcjo6Q29ubmVjdGlv
biAoTWVzc2FnZXMgdG8gdGhlIGNsaWVudCBXZWJQcm9jZXNzKQogICAgIHZvaWQgcmVqZWN0Sm9i
SW5DbGllbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYklkZW50aWZpZXIsIGNvbnN0IFdlYkNv
cmU6OkV4Y2VwdGlvbkRhdGEmKSBmaW5hbDsKQEAgLTgyLDcgKzg2LDkgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgc2NoZWR1bGVKb2JJblNlcnZlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0
YSYmKTsKIAotICAgIHZvaWQgc3RhcnRGZXRjaChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiYsIElQQzo6Rm9ybURhdGFSZWZl
cmVuY2UmJiwgU3RyaW5nJiYgcmVmZXJyZXIpOworICAgIGJvb2wgaGFuZGxlRmV0Y2goTmV0d29y
a1Jlc291cmNlTG9hZGVyJik7CisKKyAgICB2b2lkIHN0YXJ0RmV0Y2goU2VydmljZVdvcmtlckZl
dGNoVGFzayYsIFdlYkNvcmU6OlNXU2VydmVyV29ya2VyJik7CiAgICAgdm9pZCBjYW5jZWxGZXRj
aChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6
RmV0Y2hJZGVudGlmaWVyKTsKICAgICB2b2lkIGNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9u
c2UoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6
OkZldGNoSWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IGFiMjQ2OGU4Y2UzY2I1YzZkZGZjODI4Y2U3NWJmZDhj
MWY2MjdlZDcuLjNkYTY0ZDk4NzRlYzFkN2Y3ZWIyOWQ0YzdmZGU1NjdhMmVjNTQxYTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAt
MjksMTAgKzI5LDYgQEAgbWVzc2FnZXMgLT4gV2ViU1dTZXJ2ZXJDb25uZWN0aW9uIHsKICAgICBB
ZGRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIoV2ViQ29yZTo6U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBSZW1vdmVTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bklkZW50aWZpZXIgaWRlbnRpZmllcikKIAotICAgIFN0YXJ0RmV0Y2goV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBzdHJ1Y3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25z
IG9wdGlvbnMsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVzdEJvZHksIFN0cmluZyByZWZl
cnJlcikKLSAgICBDYW5jZWxGZXRjaChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6
RmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllcikKLSAgICBDb250aW51ZURpZFJlY2VpdmVG
ZXRjaFJlc3BvbnNlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50
aWZpZXIgZmV0Y2hJZGVudGlmaWVyKQotCiAgICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIo
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRpb24sIHN0cnVjdCBXZWJD
b3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBtZXNzYWdlLCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyT3JDbGllbnRJZGVudGlmaWVyIHNvdXJjZSkKIAogICAgIERpZFJlc29sdmVSZWdpc3RyYXRp
b25Qcm9taXNlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkga2V5KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRl
eCA4NWQ5ZTk1NWFhNDJlYjkyNmIwODNkMjA0MTVkMzQ3YjMyNTVkNjUyLi5mYWQ2ZWU5ZWViN2Q3
YmM5NzAyMjU5YzYxODBlN2MyYjJmMjRkMTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMTUyLDM5ICsxNTIsMTQgQEAgdm9p
ZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnRlcm1pbmF0ZSgpCiAgICAgc2VuZChN
ZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlRlcm1pbmF0ZVByb2Nlc3Mo
KSk7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzdGFydEZldGNo
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBjb250ZW50
Q29ubmVjdGlvbiwgRmV0Y2hJZGVudGlmaWVyIGNvbnRlbnRGZXRjaElkZW50aWZpZXIsIFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSVBD
OjpGb3JtRGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKK3ZvaWQg
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzdGFydEZldGNoKFNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2smIHRhc2spCiB7Ci0gICAgYXV0byBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciA9
IGNvbnRlbnRDb25uZWN0aW9uLmlkZW50aWZpZXIoKTsKLSAgICBhdXRvIGZldGNoSWRlbnRpZmll
ciA9IEZldGNoSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKLQotICAgIGF1dG8gcmVzdWx0ID0gbV9v
bmdvaW5nRmV0Y2hlcy5hZGQoZmV0Y2hJZGVudGlmaWVyLCBtYWtlVW5pcXVlPFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s+KHNlc3Npb25JRCwgY29udGVudENvbm5lY3Rpb24sICp0aGlzLCBjb250ZW50
RmV0Y2hJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgbV9uZXR3b3JrUHJvY2Vz
cy0+c2VydmljZVdvcmtlckZldGNoVGltZW91dCgpKSk7Ci0KLSAgICBBU1NFUlQoIW1fb25nb2lu
Z0ZldGNoSWRlbnRpZmllcnMuY29udGFpbnMoeyBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwg
Y29udGVudEZldGNoSWRlbnRpZmllciB9KSk7Ci0gICAgbV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVy
cy5hZGQoeyBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29udGVudEZldGNoSWRlbnRpZmll
ciB9LCBmZXRjaElkZW50aWZpZXIpOwotCi0gICAgaWYgKCFzZW5kKE1lc3NhZ2VzOjpXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U3RhcnRGZXRjaCB7IHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyLCByZXF1ZXN0
LCBvcHRpb25zLCBkYXRhLCByZWZlcnJlciB9KSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZS0+ZGlkTm90SGFuZGxlKCk7CisgICAgdGFzay5zdGFydCgqdGhpcyk7CiB9CiAKLXZvaWQg
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjYW5jZWxGZXRjaChXZWJDb3JlOjpTV1Nl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBGZXRj
aElkZW50aWZpZXIgY29udGVudEZldGNoSWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZp
ZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIpCit2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6Y29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZShXZWJDb3JlOjpTV1NlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCBGZXRjaElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKQogewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX29uZ29pbmdGZXRjaElkZW50aWZpZXJz
LmZpbmQoeyBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29udGVudEZldGNoSWRlbnRpZmll
ciB9KTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVycy5lbmQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb246OkNhbmNlbEZldGNoIHsgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIs
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBpdGVyYXRvci0+dmFsdWUgfSk7Ci0KLSAgICBtX29u
Z29pbmdGZXRjaGVzLnJlbW92ZShpdGVyYXRvci0+dmFsdWUpOwotICAgIG1fb25nb2luZ0ZldGNo
SWRlbnRpZmllcnMucmVtb3ZlKGl0ZXJhdG9yKTsKLX0KLQotdm9pZCBXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246OmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoV2ViQ29yZTo6
U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwg
RmV0Y2hJZGVudGlmaWVyIGNvbnRlbnRGZXRjaElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQotewotICAgIGF1dG8gaXRlcmF0b3IgPSBt
X29uZ29pbmdGZXRjaElkZW50aWZpZXJzLmZpbmQoeyBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciwgY29udGVudEZldGNoSWRlbnRpZmllciB9KTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vbmdv
aW5nRmV0Y2hJZGVudGlmaWVycy5lbmQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIHNl
bmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpDb250aW51ZURpZFJl
Y2VpdmVGZXRjaFJlc3BvbnNlIHsgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBpdGVyYXRvci0+dmFsdWUgfSk7CisgICAgLy8gRklYTUU6IFRvIGJl
IGRvbmUgdGhyb3VnaCBOZXR3b3JrUmVzb3VyY2VMb2FkZXIKIH0KIAogdm9pZCBXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb246OmRpZFJlY2VpdmVGZXRjaFRhc2tNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQpAQCAtMTkyLDUxICsx
NjcsNDEgQEAgdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmRpZFJlY2VpdmVG
ZXRjaFRhc2tNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYKICAgICBhdXRvIGl0ZXJhdG9yID0gbV9v
bmdvaW5nRmV0Y2hlcy5maW5kKG1ha2VPYmplY3RJZGVudGlmaWVyPEZldGNoSWRlbnRpZmllclR5
cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSk7CiAgICAgaWYgKGl0ZXJhdG9yID09IG1fb25n
b2luZ0ZldGNoZXMuZW5kKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBib29sIHNob3Vs
ZFJlbW92ZSA9IGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6U2VydmljZVdvcmtl
ckZldGNoVGFzazo6RGlkRmFpbDo6bmFtZSgpCi0gICAgICAgIHx8IGRlY29kZXIubWVzc2FnZU5h
bWUoKSA9PSBNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkTm90SGFuZGxlOjpu
YW1lKCkKLSAgICAgICAgfHwgZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRGaW5pc2g6Om5hbWUoKQotICAgICAgICB8fCBkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJl
Y2VpdmVSZWRpcmVjdFJlc3BvbnNlOjpuYW1lKCk7CiAKICAgICBpdGVyYXRvci0+dmFsdWUtPmRp
ZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwotCi0gICAgaWYgKHNob3VsZFJl
bW92ZSkgewotICAgICAgICBBU1NFUlQobV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVycy5jb250YWlu
cyhpdGVyYXRvci0+dmFsdWUtPmlkZW50aWZpZXIoKSkpOwotICAgICAgICBtX29uZ29pbmdGZXRj
aElkZW50aWZpZXJzLnJlbW92ZShpdGVyYXRvci0+dmFsdWUtPmlkZW50aWZpZXIoKSk7Ci0gICAg
ICAgIG1fb25nb2luZ0ZldGNoZXMucmVtb3ZlKGl0ZXJhdG9yKTsKLSAgICB9CiB9CiAKLXZvaWQg
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmZXRjaFRhc2tUaW1lZE91dChTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrJiB0YXNrKQordm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OnJlZ2lzdGVyRmV0Y2goU2VydmljZVdvcmtlckZldGNoVGFzayYgdGFzaykKIHsKLSAgICBB
U1NFUlQobV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVycy5jb250YWlucyh0YXNrLmlkZW50aWZpZXIo
KSkpOwotICAgIGF1dG8gdGFrZW5JZGVudGlmaWVyID0gbV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVy
cy50YWtlKHRhc2suaWRlbnRpZmllcigpKTsKKyAgICBBU1NFUlQoIW1fb25nb2luZ0ZldGNoZXMu
Y29udGFpbnModGFzay5mZXRjaElkZW50aWZpZXIoKSkpOworICAgIG1fb25nb2luZ0ZldGNoZXMu
YWRkKHRhc2suZmV0Y2hJZGVudGlmaWVyKCksIG1ha2VXZWFrUHRyKHRhc2spKTsKK30KIAotICAg
IEFTU0VSVChtX29uZ29pbmdGZXRjaGVzLmNvbnRhaW5zKHRha2VuSWRlbnRpZmllcikpOwotICAg
IGF1dG8gdGFrZW5UYXNrID0gbV9vbmdvaW5nRmV0Y2hlcy50YWtlKHRha2VuSWRlbnRpZmllcik7
Ci0gICAgQVNTRVJUKHRha2VuVGFzayk7Ci0gICAgQVNTRVJUKHRha2VuVGFzay5nZXQoKSA9PSAm
dGFzayk7Cit2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6dW5yZWdpc3RlckZl
dGNoKFNlcnZpY2VXb3JrZXJGZXRjaFRhc2smIHRhc2spCit7CisgICAgQVNTRVJUKG1fb25nb2lu
Z0ZldGNoZXMuY29udGFpbnModGFzay5mZXRjaElkZW50aWZpZXIoKSkpOworICAgIG1fb25nb2lu
Z0ZldGNoZXMucmVtb3ZlKHRhc2suZmV0Y2hJZGVudGlmaWVyKCkpOworfQogCi0gICAgLy8gR2F0
aGVyIGFsbCBvdGhlciBmZXRjaGVzIGluIHRoaXMgc2VydmljZSB3b3JrZXIKLSAgICBWZWN0b3I8
U2VydmljZVdvcmtlckZldGNoVGFzayo+IG90aGVyRmV0Y2hlczsKK3ZvaWQgV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjpmZXRjaFRhc2tUaW1lZE91dChTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKK3sKKyAgICAvLyBHYXRoZXIgYWxsIGZldGNo
ZXMgaW4gdGhpcyBzZXJ2aWNlIHdvcmtlcgorICAgIFZlY3RvcjxTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrKj4gZmV0Y2hlczsKICAgICBmb3IgKGF1dG8mIGZldGNoVGFzayA6IG1fb25nb2luZ0ZldGNo
ZXMudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKGZldGNoVGFzay0+c2VydmljZVdvcmtlcklkZW50
aWZpZXIoKSA9PSB0YXNrLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICBv
dGhlckZldGNoZXMuYXBwZW5kKGZldGNoVGFzay5nZXQoKSk7CisgICAgICAgIGlmIChmZXRjaFRh
c2stPnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCkgPT0gc2VydmljZVdvcmtlcklkZW50aWZpZXIp
CisgICAgICAgICAgICBmZXRjaGVzLmFwcGVuZChmZXRjaFRhc2suZ2V0KCkpOwogICAgIH0KIAog
ICAgIC8vIFNpZ25hbCBsb2FkIGZhaWx1cmUgZm9yIHRoZW0KLSAgICBmb3IgKGF1dG8qIGZldGNo
VGFzayA6IG90aGVyRmV0Y2hlcykgeworICAgIGZvciAoYXV0byogZmV0Y2hUYXNrIDogZmV0Y2hl
cykgewogICAgICAgICBpZiAoZmV0Y2hUYXNrLT53YXNIYW5kbGVkKCkpCiAgICAgICAgICAgICBm
ZXRjaFRhc2stPmZhaWwoeyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB7IH0sICJTZXJ2
aWNlIFdvcmtlciBjb250ZXh0IGNsb3NlZCJfcyB9KTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgZmV0Y2hUYXNrLT5kaWROb3RIYW5kbGUoKTsKLQotICAgICAgICBhdXRvIGlkZW50aWZpZXIg
PSBtX29uZ29pbmdGZXRjaElkZW50aWZpZXJzLnRha2UoZmV0Y2hUYXNrLT5pZGVudGlmaWVyKCkp
OwotICAgICAgICBtX29uZ29pbmdGZXRjaGVzLnJlbW92ZShpZGVudGlmaWVyKTsKICAgICB9CiAK
ICAgICBpZiAobV9zZXJ2ZXIpIHsKLSAgICAgICAgaWYgKGF1dG8qIHdvcmtlciA9IG1fc2VydmVy
LT53b3JrZXJCeUlEKHRhc2suc2VydmljZVdvcmtlcklkZW50aWZpZXIoKSkpIHsKKyAgICAgICAg
aWYgKGF1dG8qIHdvcmtlciA9IG1fc2VydmVyLT53b3JrZXJCeUlEKHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKSkgewogICAgICAgICAgICAgd29ya2VyLT5zZXRIYXNUaW1lZE91dEFueUZldGNoVGFz
a3MoKTsKICAgICAgICAgICAgIGlmICh3b3JrZXItPmlzUnVubmluZygpKQogICAgICAgICAgICAg
ICAgIG1fc2VydmVyLT5zeW5jVGVybWluYXRlV29ya2VyKCp3b3JrZXIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4IGUzMGYzNDFlMTdi
ZTE4NjA4Y2VlYzlhMjAzMmJkYTAyOWE0Y2E1ZjYuLjdlZDMxNDhmNjdlODM4NDJlNDg4MTllYzU3
Mzc2ZDI1MGEzNzY5NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmgKQEAgLTUyLDIwICs1MiwxOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNs
YXNzIE5ldHdvcmtQcm9jZXNzOwogY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOwogCi1jbGFz
cyBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gOiBwdWJsaWMgV2ViQ29yZTo6U1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bj4sIHB1YmxpYyBXZWJDb3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24sIHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6
CiAgICAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgV2ViQ29yZTo6U1dTZXJ2ZXImLCBSZWY8SVBDOjpD
b25uZWN0aW9uPiYmKTsKICAgICB+V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCk7CiAK
LSAgICBJUEM6OkNvbm5lY3Rpb24qIGlwY0Nvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lw
Y0Nvbm5lY3Rpb24ucHRyKCk7IH0KKyAgICBJUEM6OkNvbm5lY3Rpb24mIGlwY0Nvbm5lY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX2lwY0Nvbm5lY3Rpb24uZ2V0KCk7IH0KIAogICAgIC8vIElQQzo6
TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKIAogICAgIHZvaWQgdGVybWluYXRlKCk7CiAKLSAg
ICB2b2lkIHN0YXJ0RmV0Y2goUEFMOjpTZXNzaW9uSUQsIFdlYlNXU2VydmVyQ29ubmVjdGlvbiYs
IFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OkZldGNo
T3B0aW9ucyYsIGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmKTsK
LSAgICB2b2lkIGNhbmNlbEZldGNoKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIpOworICAgIHZvaWQgc3RhcnRGZXRjaChTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrJik7CiAg
ICAgdm9pZCBjb250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKFdlYkNvcmU6OlNXU2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlRmV0Y2hUYXNr
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKQEAgLTczLDcgKzcyLDEw
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRocm90dGxlU3RhdGUoYm9vbCBpc1Rocm90dGxlYWJs
ZSk7CiAgICAgYm9vbCBpc1Rocm90dGxlYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNUaHJvdHRs
ZWFibGU7IH0KIAotICAgIHZvaWQgZmV0Y2hUYXNrVGltZWRPdXQoU2VydmljZVdvcmtlckZldGNo
VGFzayYpOworICAgIHZvaWQgZmV0Y2hUYXNrVGltZWRPdXQoV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIpOworCisgICAgdm9pZCByZWdpc3RlckZldGNoKFNlcnZpY2VXb3JrZXJGZXRj
aFRhc2smKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJGZXRjaChTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Jik7CiAKIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyCkBAIC05OCwxMiArMTAw
LDEzIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNvbm5lY3Rpb25DbG9zZWQoKTsKIAorICAgIHZv
aWQgdGltZW91dFRpbWVyRmlyZWQoKTsKKwogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1faXBj
Q29ubmVjdGlvbjsKICAgICBSZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29ya1Byb2Nlc3M7CiAg
ICAgV2Vha1B0cjxXZWJDb3JlOjpTV1NlcnZlcj4gbV9zZXJ2ZXI7CiAKLSAgICBIYXNoTWFwPFNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s6OklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmll
cj4gbV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVyczsKLSAgICBIYXNoTWFwPFdlYkNvcmU6OkZldGNo
SWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+PiBtX29u
Z29pbmdGZXRjaGVzOworICAgIEhhc2hNYXA8V2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyLCBXZWFr
UHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+PiBtX29uZ29pbmdGZXRjaGVzOwogICAgIGJvb2wg
bV9pc1Rocm90dGxlYWJsZSB7IHRydWUgfTsKIH07IC8vIGNsYXNzIFdlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA5MzZjMGNmNTVhZDAzZmJiYjNhZGM4NDM5
MjAxM2E5MGUzNDhiNWVkLi42MzI3OGIxYmJlZTA4YTcyNTg5YjQzMzdkNTgzYmVmMzczZTIyMmFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKQEAgLTUyNSw3ICs1MjUsNiBAQCBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwIEBuby11bmlmeQogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcCBAbm8tdW5pZnkKIFdlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAgQG5vLXVuaWZ5CiAKLVdlYlBy
b2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guY3BwCiBXZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXT3Jp
Z2luVGFibGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA2MzhlYmVkNTg1M2ZkN2FkNDc0OTkzNTEzZTZhZmEwMWIwODcwYjdiLi45
YTk1NzNiNjU3MjI0NDg4MmEzOTYxNzZlNmRmNjBiNWQ3ZTdhYjU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExNDMsNyArMTE0Myw2
IEBACiAJCTVDRTkxMjEyMjI5M0MyNzgwMDVCRUM3OCAvKiBBdXhpbGlhcnlQcm9jZXNzTWFpbi5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0U5MTIw
RjIyOTNDMjVGMDA1QkVDNzggLyogQXV4aWxpYXJ5UHJvY2Vzc01haW4uY3BwICovOyB9OwogCQk1
Q0U5MTIxMzIyOTNDMjc5MDA1QkVDNzggLyogQXV4aWxpYXJ5UHJvY2Vzc01haW4uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNFOTEyMEYyMjkzQzI1
RjAwNUJFQzc4IC8qIEF1eGlsaWFyeVByb2Nlc3NNYWluLmNwcCAqLzsgfTsKIAkJNUNFOTEyMTQy
MjkzQzI4MDAwNUJFQzc4IC8qIFdLTWFpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNUNFOTEyMEIyMjkzQzFFMDAwNUJFQzc4IC8qIFdLTWFpbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTYxN0E1MkQ4
MUY0M0E5REEwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjE3
QTUyRDcxRjQzQTlCNjAwRENEQzBBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi87IH07CiAJCTYzMTA4Rjk2MUY5NjcxOUMwMEEwREI4NCAvKiBfV0tBcHBs
aWNhdGlvbk1hbmlmZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2MzEwOEY5NDFGOTY3MTlDMDBBMERCODQgLyogX1dLQXBwbGljYXRpb25NYW5pZmVz
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTYz
MTA4Rjk5MUY5NjcxRjcwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzMTA4Rjk4
MUY5NjcxRjcwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwuaCAqLzsg
fTsKIAkJNjM0ODQyNTExRkIyNkU3MTAwOTQ2RTNDIC8qIEFQSUFwcGxpY2F0aW9uTWFuaWZlc3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzNDg0MjRG
MUZCMjZFNzEwMDk0NkUzQyAvKiBBUElBcHBsaWNhdGlvbk1hbmlmZXN0LmggKi87IH07CkBAIC0z
MTI5LDkgKzMxMjgsNiBAQAogCQk0MTMwNzVBNjFERTg1RUU3MDAzOUVDNjkgLyogTGliV2ViUlRD
U29ja2V0RmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJXZWJS
VENTb2NrZXRGYWN0b3J5Lmg7IHBhdGggPSBOZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRG
YWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzA3NUE3MURFODVFRTcw
MDM5RUM2OSAvKiBMaWJXZWJSVENQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IGxpbmVFbmRpbmcgPSAwOyBuYW1lID0gTGliV2ViUlRDUHJvdmlkZXIuY3BwOyBwYXRo
ID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLmNw
cDsgfTsKIAkJNDEzMDc1QTgxREU4NUVFNzAwMzlFQzY5IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbGluZUVuZGluZyA9IDA7IG5hbWUgPSBMaWJXZWJS
VENQcm92aWRlci5oOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVy
ID0geGNvZGUubGFuZy5vYmpjcHA7IH07Ci0JCTQxMzFGM0NFMUY5NkE0OTUwMDU5OTk1QSAvKiBT
ZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2VydmljZVdvcmtlckNsaWVudEZldGNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTQxMzFGM0NGMUY5NkE5MzYwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gu
bWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2VydmljZVdvcmtlckNsaWVudEZl
dGNoLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTMxRjNEMDFG
OTZCQ0M4MDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzFGM0UwMUY5ODcxMkMwMDU5OTk1QSAv
KiBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTM1RkJDRjFGNEZCN0YyMDA3NEM0N0IgLyog
Q2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxMzVGQkQwMUY0RkI3RjIwMDc0QzQ3QiAvKiBDYWNoZVN0b3JhZ2VFbmdp
bmVDYWNoZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVTdG9yYWdl
RW5naW5lQ2FjaGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNzA4LDcgKzM3
MDQsNiBAQAogCQk1Q0VBQkEyQjIzMzMyNTE0MDA3OTc3OTcgLyogTGVnYWN5R2xvYmFsU2V0dGlu
Z3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGVnYWN5R2xvYmFs
U2V0dGluZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0ZFQ0IwMzFFMUVE
MUM4MDBGODg1MDQgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEQUQ3M0YxMTE2RkY5MEMwMEVFNTM5
NiAvKiBCYXNlVGFyZ2V0LnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9
IEJhc2VUYXJnZXQueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTYxN0E1
MkQ3MUY0M0E5QjYwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU2VydmljZVdv
cmtlckNsaWVudEZldGNoTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291
cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNjMxMDhGOTQxRjk2NzE5QzAwQTBE
Qjg0IC8qIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLQXBwbGlj
YXRpb25NYW5pZmVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2MzEwOEY5NTFG
OTY3MTlDMDBBMERCODQgLyogX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTYzMTA4Rjk4MUY5NjcxRjcwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlm
ZXN0SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLQXBwbGljYXRpb25NYW5pZmVzdEludGVy
bmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02ODM5LDkgKzY4MzQsNiBAQAog
CQk1MTE4RTk5ODFGMjk1MjU5MDAzRUY5RjUgLyogU3RvcmFnZSAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJNDEzMUYzRDAxRjk2QkNDODAwNTk5OTVBIC8q
IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5jcHAgKi8sCi0JCQkJNDEzMUYzQ0UxRjk2QTQ5NTAw
NTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5oICovLAotCQkJCTQxMzFGM0NGMUY5
NkE5MzYwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gubWVzc2FnZXMuaW4gKi8s
CiAJCQkJNDEzMUYzRTAxRjk4NzEyQzAwNTk5OTVBIC8qIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2tDbGllbnQuY3BwICovLAogCQkJCTQxOUFDRjlCMUY5ODFEMjYwMDlGMUE4MyAvKiBXZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmggKi8sCiAJCQkJNTFCRUI2MjkxRjNBNUFDRDAwNTAy
OUI5IC8qIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAgKi8sCkBAIC04ODc0LDcgKzg4NjYs
NiBAQAogCQkJCTFCQkJFNDlFMTlCNjZDNTMwMDZCN0Q4MSAvKiBSZW1vdGVXZWJJbnNwZWN0b3JV
SU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJRTE4RTY5MTMxNjlCNjY3QjAwOUI2NjcwIC8q
IFNlY0l0ZW1TaGltUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCUUxOEU2OTE0MTY5
QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5TWVzc2FnZXMuaCAqLywKLQkJCQk2MTdB
NTJENzFGNDNBOUI2MDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLywKIAkJCQkyREU2OTQzQjE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWdu
aWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMkRFNjk0M0Mx
OEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5o
ICovLAogCQkJCTFBMzM0REVCMTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3Nh
Z2VSZWNlaXZlci5jcHAgKi8sCkBAIC0xMTMxMyw3ICsxMTMwNCw2IEBACiAJCQkJQTU1QkE4MjYx
QkEyNUNGRDAwN0NEMzNEIC8qIFJlbW90ZVdlYkluc3BlY3RvclByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFCQkJFNEEwMTlCNjZDNTMwMDZCN0Q4MSAvKiBSZW1v
dGVXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlF
MThFNjkxNzE2OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk2MTdBNTJEODFGNDNBOURBMDBEQ0RDMEEgLyogU2Vy
dmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTQxREU3QzZDMjIyNzhGMUUwMDUzMkI2NSAvKiBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzg3MjEyQjZBQjEwMEY0OTNGRCAvKiBTaGFyZWFi
bGVCaXRtYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRFNjk0M0QxOEJEMkE2ODAwNUMxNUU1
IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCBmMGI0ZmRmYTZhMzExNzA0
OTk2ZDc4NWExYzk2Mjc3MzYwMTE5ODAxLi4zMDgzMzU3NzMwMWQwZjI2NDUzMmI0YTMyYmE4NmVm
NmVmNWI5YjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTI5LDcgKzI5LDYgQEAK
ICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDTmV0d29yay5o
IgogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKLSNp
bmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlN0
b3JhZ2VBcmVhTWFwLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIldlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgiCkBAIC0xNDEsMTAgKzE0MCw2IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIElQCiAgICAgICAgICAgICBtX3N3Q29ubmVjdGlvbi0+ZGlkUmVj
ZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpTZXJ2
aWNlV29ya2VyQ2xpZW50RmV0Y2g6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewotICAgICAgICBX
ZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVTZXJ2aWNlV29y
a2VyQ2xpZW50RmV0Y2hNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNz
YWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSkgewogICAgICAgICBBU1NFUlQoU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVj
dGlvbigpKTsKICAgICAgICAgaWYgKGF1dG8qIGNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiA9IFNX
Q29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRl
eCBhZmEzYzcyNDE0OGRhMTI3NWEyNzcwZGZjN2U4M2Q3Mjk2ZGE1MDQ0Li5hOWZjMDRkNTM4ZmVi
OWI3ZjRkOTRlNjQ4MjEzM2JmOTI1ZjNkNDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC0yMTUsNDEgKzIx
NSwyMCBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2Fk
ZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCi0gICAgaWYgKCEhcmVzb3VyY2VMb2FkZXIub3B0aW9ucygpLnNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKQotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIHNjaGVkdWxlZCB0aHJvdWdoIFNlcnZpY2VX
b3JrZXIgb3IgTmV0d29yayBQcm9jZXNzIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVz
b3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgp
LCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRC50b1VJbnQ2NCgpLCBpZGVudGlmaWVyKTsKKyAg
ICBhdXRvIHVybCA9IHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS51cmwoKTsKKyAgICBhdXRvKiBk
YXRhID0gdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCk7CisgICAgaWYgKGRhdGEpCisgICAgICAg
IHVybC5zdHJpbmcoKTsKIAotICAgIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9u
KCkuaGFuZGxlRmV0Y2gocmVzb3VyY2VMb2FkZXIsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBT
VG9IVFRQUmVkaXJlY3QsIFt0aGlzLCB0cmFja2luZ1BhcmFtZXRlcnMsIGlkZW50aWZpZXIsIHNo
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIG1heGltdW1CdWZmZXJpbmdU
aW1lID0gbWF4aW11bUJ1ZmZlcmluZ1RpbWUocmVzb3VyY2UpLCByZXNvdXJjZUxvYWRlciA9IG1h
a2VSZWYocmVzb3VyY2VMb2FkZXIpXSAoU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpSZXN1bHQg
cmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKHJlc3VsdCAhPSBTZXJ2aWNlV29ya2VyQ2xp
ZW50RmV0Y2g6OlJlc3VsdDo6VW5oYW5kbGVkKSB7Ci0gICAgICAgICAgICBMT0coTmV0d29ya1Nj
aGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwg
dXJsICclcycgd2lsbCBiZSBzY2hlZHVsZWQgdGhyb3VnaCBTZXJ2aWNlV29ya2VyIGhhbmRsZSBm
ZXRjaCBhbGdvcml0aG0iLCByZXNvdXJjZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCku
ZGF0YSgpKTsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInNjaGVkdWxlTG9h
ZDogVVJMIHdpbGwgYmUgc2NoZWR1bGVkIHRocm91Z2ggU2VydmljZVdvcmtlciBoYW5kbGUgZmV0
Y2ggYWxnb3JpdGhtIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIt
PmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQ
YXJhbWV0ZXJzLmZyYW1lSUQudG9VSW50NjQoKSwgaWRlbnRpZmllcik7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHJlc291cmNlTG9hZGVyLT5vcHRpb25zKCku
c2VydmljZVdvcmtlcnNNb2RlID09IFNlcnZpY2VXb3JrZXJzTW9kZTo6T25seSkgewotICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgic2NoZWR1bGVMb2FkOiB1bmFibGUg
dG8gc2NoZWR1bGUgVVJMIHRocm91Z2ggU2VydmljZVdvcmtlciBoYW5kbGUgZmV0Y2ggYWxnb3Jp
dGhtIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2
NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXItPmZyYW1lKCks
IHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJz
LmZyYW1lSUQudG9VSW50NjQoKSwgaWRlbnRpZmllcik7Ci0gICAgICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKFtyZXNvdXJjZUxvYWRlciA9IFdURk1vdmUocmVzb3VyY2VMb2FkZXIpXSB7Ci0gICAg
ICAgICAgICAgICAgYXV0byBlcnJvciA9IGludGVybmFsRXJyb3IocmVzb3VyY2VMb2FkZXItPnJl
cXVlc3QoKS51cmwoKSk7Ci0gICAgICAgICAgICAgICAgZXJyb3Iuc2V0VHlwZShSZXNvdXJjZUVy
cm9yOjpUeXBlOjpDYW5jZWxsYXRpb24pOwotICAgICAgICAgICAgICAgIHJlc291cmNlTG9hZGVy
LT5kaWRGYWlsKGVycm9yKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJMb2Fk
ZXJTdHJhdGVneSgpLnRyeUxvYWRpbmdVc2luZ1VSTFNjaGVtZUhhbmRsZXIocmVzb3VyY2VMb2Fk
ZXIpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzY2hlZHVsZUxvYWQ6
IFVSTCB3aWxsIGJlIHNjaGVkdWxlZCB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyAoZnJhbWUgPSAl
cCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLT5mcmFtZSgpLCB0cmFja2luZ1BhcmFt
ZXRlcnMucGFnZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELnRvVUlu
dDY0KCksIGlkZW50aWZpZXIpOwotICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
d2ViTG9hZGVyU3RyYXRlZ3koKS5zY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MocmVzb3Vy
Y2VMb2FkZXIuZ2V0KCksIHJlc291cmNlTG9hZGVyLT5yZXF1ZXN0KCksIHRyYWNraW5nUGFyYW1l
dGVycywgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgbWF4aW11bUJ1
ZmZlcmluZ1RpbWUpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic2NoZWR1bGVMb2FkOiBVUkwgbm90IGhhbmRsZWQgYnkg
YW55IGhhbmRsZXJzIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIt
PmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQ
YXJhbWV0ZXJzLmZyYW1lSUQudG9VSW50NjQoKSwgaWRlbnRpZmllcik7Ci0gICAgfSk7CisgICAg
aWYgKChyZXNvdXJjZUxvYWRlci5vcHRpb25zKCkuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIgJiYgcmVzb3VyY2VMb2FkZXIub3B0aW9ucygpLnNlcnZpY2VXb3JrZXJzTW9kZSAh
PSBTZXJ2aWNlV29ya2Vyc01vZGU6Ok5vbmUpIHx8ICF0cnlMb2FkaW5nVXNpbmdVUkxTY2hlbWVI
YW5kbGVyKHJlc291cmNlTG9hZGVyKSkgewogI2Vsc2UKICAgICBpZiAoIXRyeUxvYWRpbmdVc2lu
Z1VSTFNjaGVtZUhhbmRsZXIocmVzb3VyY2VMb2FkZXIpKSB7CisjZW5kaWYKICAgICAgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRCgic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBzY2hlZHVsZWQg
d2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAi
LCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNv
dXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCks
IHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELnRvVUludDY0KCksIGlkZW50aWZpZXIpOwogICAg
ICAgICBzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MocmVzb3VyY2VMb2FkZXIsIHJlc291
cmNlTG9hZGVyLnJlcXVlc3QoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLCBzaG91bGRDbGVhclJlZmVy
cmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBtYXhpbXVtQnVmZmVyaW5nVGltZShyZXNvdXJjZSkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInNj
aGVkdWxlTG9hZDogVVJMIG5vdCBoYW5kbGVkIGJ5IGFueSBoYW5kbGVycyAoZnJhbWUgPSAlcCwg
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9
ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVy
cy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQudG9VSW50NjQo
KSwgaWRlbnRpZmllcik7Ci0jZW5kaWYKIH0KIAogYm9vbCBXZWJMb2FkZXJTdHJhdGVneTo6dHJ5
TG9hZGluZ1VzaW5nVVJMU2NoZW1lSGFuZGxlcihSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2Fk
ZXIpCkBAIC0yNzEsNiArMjUwLDEwIEBAIGJvb2wgV2ViTG9hZGVyU3RyYXRlZ3k6OnRyeUxvYWRp
bmdVc2luZ1VSTFNjaGVtZUhhbmRsZXIoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlCiAKIHZvaWQg
V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhSZXNvdXJj
ZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgV2ViUmVzb3VyY2VMb2FkZXI6OlRyYWNraW5nUGFyYW1ldGVycyYgdHJhY2tpbmdQYXJh
bWV0ZXJzLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFNl
Y29uZHMgbWF4aW11bUJ1ZmZlcmluZ1RpbWUpCiB7CisgICAgYXV0byogd2ViRnJhbWVMb2FkZXJD
bGllbnQgPSB0b1dlYkZyYW1lTG9hZGVyQ2xpZW50KHJlc291cmNlTG9hZGVyLmZyYW1lTG9hZGVy
KCktPmNsaWVudCgpKTsKKyAgICBhdXRvKiB3ZWJGcmFtZSA9IHdlYkZyYW1lTG9hZGVyQ2xpZW50
ID8gd2ViRnJhbWVMb2FkZXJDbGllbnQtPndlYkZyYW1lKCkgOiBudWxscHRyOworICAgIGF1dG8q
IHdlYlBhZ2UgPSB3ZWJGcmFtZSA/IHdlYkZyYW1lLT5wYWdlKCkgOiBudWxscHRyOworCiAgICAg
UmVzb3VyY2VMb2FkSWRlbnRpZmllciBpZGVudGlmaWVyID0gcmVzb3VyY2VMb2FkZXIuaWRlbnRp
ZmllcigpOwogICAgIEFTU0VSVChpZGVudGlmaWVyKTsKIApAQCAtMzAyLDYgKzI4NSwxNyBAQCB2
b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MoUmVz
b3VyY2VMb2FkZXImIHJlc291cmNlTAogICAgIGxvYWRQYXJhbWV0ZXJzLnByZWZsaWdodFBvbGlj
eSA9IHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5wcmVmbGlnaHRQb2xpY3k7CiAgICAgbG9hZFBh
cmFtZXRlcnMuaXNIVFRQU1VwZ3JhZGVFbmFibGVkID0gcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSA/
IHJlc291cmNlTG9hZGVyLmZyYW1lKCktPnNldHRpbmdzKCkuSFRUUFNVcGdyYWRlRW5hYmxlZCgp
IDogZmFsc2U7CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgLy8gSW4gY2FzZSBv
ZiBVUkwgc2NoZW1lIGhhbmRsZXIsIHdlIHdpbGwgdHJ5IHRvIGxvYWQgb24gc2VydmljZSB3b3Jr
ZXJzIGFuZCBpZiB1bmhhbmRsZWQsIGZhbGxiYWNrIHRvIFVSTCBzY2hlbWUgaGFuZGxlci4KKyAg
ICBpZiAocmVzb3VyY2VMb2FkZXIub3B0aW9ucygpLnNlcnZpY2VXb3JrZXJzTW9kZSA9PSBTZXJ2
aWNlV29ya2Vyc01vZGU6OkFsbCAmJiB3ZWJQYWdlICYmICB3ZWJQYWdlLT51cmxTY2hlbWVIYW5k
bGVyRm9yU2NoZW1lKHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS51cmwoKS5wcm90b2NvbCgpLnRv
U3RyaW5nV2l0aG91dENvcHlpbmcoKSkpCisgICAgICAgIGxvYWRQYXJhbWV0ZXJzLnNlcnZpY2VX
b3JrZXJzTW9kZSA9IFNlcnZpY2VXb3JrZXJzTW9kZTo6T25seTsKKyAgICBlbHNlCisgICAgICAg
IGxvYWRQYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJzTW9kZSA9IHJlc291cmNlTG9hZGVyLm9wdGlv
bnMoKS5zZXJ2aWNlV29ya2Vyc01vZGU7CisKKyAgICBsb2FkUGFyYW1ldGVycy5zZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciA9IHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5zZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcjsKKyAgICBsb2FkUGFyYW1ldGVycy5odHRw
SGVhZGVyc1RvS2VlcCA9IHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5odHRwSGVhZGVyc1RvS2Vl
cDsKKyNlbmRpZgorCiAgICAgYXV0byogZG9jdW1lbnQgPSByZXNvdXJjZUxvYWRlci5mcmFtZSgp
ID8gcmVzb3VyY2VMb2FkZXIuZnJhbWUoKS0+ZG9jdW1lbnQoKSA6IG51bGxwdHI7CiAgICAgaWYg
KHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5jc3BSZXNwb25zZUhlYWRlcnMpCiAgICAgICAgIGxv
YWRQYXJhbWV0ZXJzLmNzcFJlc3BvbnNlSGVhZGVycyA9IHJlc291cmNlTG9hZGVyLm9wdGlvbnMo
KS5jc3BSZXNwb25zZUhlYWRlcnM7CkBAIC00MzgsMTEgKzQzMiw2IEBAIHZvaWQgV2ViTG9hZGVy
U3RyYXRlZ3k6OnJlbW92ZShSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIpCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKFdl
YlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuY2FuY2VsRmV0Y2gobWFrZU9iamVj
dElkZW50aWZpZXI8RmV0Y2hJZGVudGlmaWVyVHlwZT4oaWRlbnRpZmllcikpKQotICAgICAgICBy
ZXR1cm47Ci0jZW5kaWYKLQogICAgIFJlZlB0cjxXZWJSZXNvdXJjZUxvYWRlcj4gbG9hZGVyID0g
bV93ZWJSZXNvdXJjZUxvYWRlcnMudGFrZShpZGVudGlmaWVyKTsKICAgICAvLyBMb2FkZXIgbWF5
IG5vdCBiZSByZWdpc3RlcmVkIGlmIHdlIGNyZWF0ZWQgaXQsIGJ1dCBoYXZlbid0IHNjaGVkdWxl
ZCB5ZXQgKGEgYnVuZGxlIGNsaWVudCBjYW4gZGVjaWRlIHRvIGNhbmNlbCBzdWNoIHJlcXVlc3Qg
dmlhIHdpbGxTZW5kUmVxdWVzdCkuCiAgICAgaWYgKCFsb2FkZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXgg
YTM5MjQxYWNhMzBmZTc5NjgxMTAyNzQzMjAxN2NhNDQ5YmZiMWYyZi4uODAxMWNjYjg5MmIzYWM3
ZTg3ODZjN2FkZmY4ZjBkM2IxZWI4YzI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcApAQCAtMjE4LDYgKzIxOCw0
NyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hSZXNvdXJjZUxvYWQoY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTAogICAgIG1fY29yZUxvYWRlci0+ZGlkRmluaXNo
TG9hZGluZyhuZXR3b3JrTG9hZE1ldHJpY3MpOwogfQogCit2b2lkIFdlYlJlc291cmNlTG9hZGVy
OjpkaWRGYWlsU2VydmljZVdvcmtlckxvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCit7
CisgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gbV9jb3JlTG9hZGVyLT5mcmFtZSgpID8gbV9jb3Jl
TG9hZGVyLT5mcmFtZSgpLT5kb2N1bWVudCgpIDogbnVsbHB0cikgeworICAgICAgICBpZiAobV9j
b3JlTG9hZGVyLT5vcHRpb25zKCkuZGVzdGluYXRpb24gIT0gRmV0Y2hPcHRpb25zOjpEZXN0aW5h
dGlvbjo6RW1wdHlTdHJpbmcgfHwgZXJyb3IuaXNHZW5lcmFsKCkpCisgICAgICAgICAgICBkb2N1
bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6
RXJyb3IsIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkpOworICAgICAgICBpZiAobV9jb3Jl
TG9hZGVyLT5vcHRpb25zKCkuZGVzdGluYXRpb24gIT0gRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlv
bjo6RW1wdHlTdHJpbmcpCisgICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1ha2VTdHJpbmcoIkNhbm5v
dCBsb2FkICIsIGVycm9yLmZhaWxpbmdVUkwoKS5zdHJpbmcoKSwgIi4iKSk7CisgICAgfQorCisg
ICAgZGlkRmFpbFJlc291cmNlTG9hZChlcnJvcik7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2Fk
ZXI6OnNlcnZpY2VXb3JrZXJEaWROb3RIYW5kbGUoKQoreworI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzZXJ2aWNlV29ya2VyRGlkTm90SGFu
ZGxlOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3Vy
Y2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2
NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQ
YXJhbWV0ZXJzLnJlc291cmNlSUQpOworCisgICAgaWYgKG1fY29yZUxvYWRlci0+b3B0aW9ucygp
LnNlcnZpY2VXb3JrZXJzTW9kZSAhPSBTZXJ2aWNlV29ya2Vyc01vZGU6Ok9ubHkpIHsKKyAgICAg
ICAgYXV0byogd2ViRnJhbWVMb2FkZXJDbGllbnQgPSB0b1dlYkZyYW1lTG9hZGVyQ2xpZW50KG1f
Y29yZUxvYWRlci0+ZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkpOworICAgICAgICBhdXRvKiB3ZWJG
cmFtZSA9IHdlYkZyYW1lTG9hZGVyQ2xpZW50ID8gd2ViRnJhbWVMb2FkZXJDbGllbnQtPndlYkZy
YW1lKCkgOiBudWxscHRyOworICAgICAgICBhdXRvKiB3ZWJQYWdlID0gd2ViRnJhbWUgPyB3ZWJG
cmFtZS0+cGFnZSgpIDogbnVsbHB0cjsKKworICAgICAgICBpZiAoYXV0byogaGFuZGxlciA9IHdl
YlBhZ2UtPnVybFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUobV9jb3JlTG9hZGVyLT5yZXF1ZXN0KCku
dXJsKCkucHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpKSB7CisgICAgICAgICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXNvdXJjZSBsb2FkZWQgYnkgVVJMIHNjaGVtZSBo
YW5kbGVyOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVz
b3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJ
bnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELnRvVUludDY0KCksIG1fdHJhY2tp
bmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOworCisgICAgICAgICAgICBhdXRvIGxvYWRlciA9IG1f
Y29yZUxvYWRlcjsKKyAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkxvYWRl
clN0cmF0ZWd5KCkucmVtb3ZlKG1fY29yZUxvYWRlci5nZXQoKSk7CisKKyAgICAgICAgICAgIGhh
bmRsZXItPnN0YXJ0TmV3VGFzaygqbG9hZGVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGF1dG8gZXJyb3IgPSBpbnRlcm5hbEVycm9yKG1fY29yZUxvYWRl
ci0+cmVxdWVzdCgpLnVybCgpKTsKKyAgICBlcnJvci5zZXRUeXBlKFJlc291cmNlRXJyb3I6OlR5
cGU6OkNhbmNlbGxhdGlvbik7CisgICAgbV9jb3JlTG9hZGVyLT5kaWRGYWlsKGVycm9yKTsKKyNl
bHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKK30KKwogdm9pZCBXZWJSZXNv
dXJjZUxvYWRlcjo6ZGlkRmFpbFJlc291cmNlTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
cikKIHsKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6
ZGlkRmFpbFJlc291cmNlTG9hZCBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5n
KCkubGF0aW4xKCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCmluZGV4IDhlYTFhZWRiZWI5ZjU5NjQ5N2FiNjc0
YWY0MzYyMTY3YTFjZjI5YWEuLjdjMjExMWQ0OGIyOTUxN2I1OTczMWUzNGJkZWQ2ZjkzYmM3ZDU2
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuaApAQCAtODUsNiArODUsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgaW50NjRfdCBlbmNvZGVkRGF0YUxl
bmd0aCk7CiAgICAgdm9pZCBkaWRGaW5pc2hSZXNvdXJjZUxvYWQoY29uc3QgV2ViQ29yZTo6TmV0
d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdm9pZCBkaWRGYWlsUmVzb3VyY2VMb2FkKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImKTsKKyAgICB2b2lkIGRpZEZhaWxTZXJ2aWNlV29ya2VyTG9h
ZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CisgICAgdm9pZCBzZXJ2aWNlV29ya2Vy
RGlkTm90SGFuZGxlKCk7CiAgICAgdm9pZCBkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KCk7CiAKICAgICB2b2lkIHN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50U2Vj
dXJpdHlQb2xpY3lEZW5pZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5tZXNzYWdlcy5pbgppbmRleCA3YjkzMjU2ZjAzNmRkMDQyZjQ0YmE4M2EzMThi
YjdiNjYzNmQ0MWFhLi44YzBmMjFhODM2MjJjZjhhYjBkMzY3ZTIxZjg2YzcxYTdlZDA1ZDY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgpAQCAtMjcsNiArMjcsOCBAQCBtZXNzYWdlcyAt
PiBXZWJSZXNvdXJjZUxvYWRlciBMZWdhY3lSZWNlaXZlciB7CiAgICAgRGlkUmVjZWl2ZURhdGEo
SVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFM
ZW5ndGgpCiAgICAgRGlkRmluaXNoUmVzb3VyY2VMb2FkKFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0
cmljcyBuZXR3b3JrTG9hZE1ldHJpY3MpCiAgICAgRGlkRmFpbFJlc291cmNlTG9hZChXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yIGVycm9yKQorICAgIERpZEZhaWxTZXJ2aWNlV29ya2VyTG9hZChXZWJD
b3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQorICAgIFNlcnZpY2VXb3JrZXJEaWROb3RIYW5kbGUo
KQogICAgIERpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKQogCiAgICAgU3RvcExvYWRp
bmdBZnRlclhGcmFtZU9wdGlvbnNPckNvbnRlbnRTZWN1cml0eVBvbGljeURlbmllZChXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyNDQ2NmE4ZDRkODVjODMzMDk1OWE1MGY3N2Q1
ODkxNDYxMDYxMjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZl
dGNoLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIwMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5oIgot
Ci0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5o
IgotI2luY2x1ZGUgIldlYlNXQ2xpZW50Q29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIldlYlNlcnZp
Y2VXb3JrZXJQcm92aWRlci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmlnaW5BY2Nlc3ND
b250cm9sLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvRnJhbWUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZm
ZXIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQot
UmVmPFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaD4gU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpj
cmVhdGUoV2ViU2VydmljZVdvcmtlclByb3ZpZGVyJiBzZXJ2aWNlV29ya2VyUHJvdmlkZXIsIFJl
ZjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcj4mJiBsb2FkZXIsIEZldGNoSWRlbnRpZmllciBpZGVu
dGlmaWVyLCBSZWY8V2ViU1dDbGllbnRDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIGJvb2wgc2hv
dWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgQ2FsbGJhY2smJiBjYWxsYmFj
aykKLXsKLSAgICBhdXRvIGZldGNoID0gYWRvcHRSZWYoKm5ldyBTZXJ2aWNlV29ya2VyQ2xpZW50
RmV0Y2ggeyBzZXJ2aWNlV29ya2VyUHJvdmlkZXIsIFdURk1vdmUobG9hZGVyKSwgaWRlbnRpZmll
ciwgV1RGTW92ZShjb25uZWN0aW9uKSwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBS
ZWRpcmVjdCwgV1RGTW92ZShjYWxsYmFjaykgfSk7Ci0gICAgZmV0Y2gtPnN0YXJ0KCk7Ci0gICAg
cmV0dXJuIGZldGNoOwotfQotCi1TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6On5TZXJ2aWNlV29y
a2VyQ2xpZW50RmV0Y2goKQotewotfQotCi1TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OlNlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaChXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXImIHNlcnZpY2VXb3Jr
ZXJQcm92aWRlciwgUmVmPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyPiYmIGxvYWRlciwgRmV0Y2hJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlZjxXZWJTV0NsaWVudENvbm5lY3Rpb24+JiYgY29ubmVj
dGlvbiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBDYWxs
YmFjayYmIGNhbGxiYWNrKQotICAgIDogbV9zZXJ2aWNlV29ya2VyUHJvdmlkZXIoc2VydmljZVdv
cmtlclByb3ZpZGVyKQotICAgICwgbV9sb2FkZXIoV1RGTW92ZShsb2FkZXIpKQotICAgICwgbV9p
ZGVudGlmaWVyKGlkZW50aWZpZXIpCi0gICAgLCBtX2Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0
aW9uKSkKLSAgICAsIG1fY2FsbGJhY2soV1RGTW92ZShjYWxsYmFjaykpCi0gICAgLCBtX3Nob3Vs
ZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3Qoc2hvdWxkQ2xlYXJSZWZlcnJlck9u
SFRUUFNUb0hUVFBSZWRpcmVjdCkKLXsKLX0KLQotdm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0
Y2g6OnN0YXJ0KCkKLXsKLSAgICBhdXRvIHJlcXVlc3QgPSBtX2xvYWRlci0+cmVxdWVzdCgpOwot
ICAgIGF1dG8mIG9wdGlvbnMgPSBtX2xvYWRlci0+b3B0aW9ucygpOwotCi0gICAgYXV0byByZWZl
cnJlciA9IHJlcXVlc3QuaHR0cFJlZmVycmVyKCk7Ci0KLSAgICAvLyBXZSBhcmUgaW50ZXJjZXB0
aW5nIGZldGNoIGNhbGxzIGFmdGVyIGdvaW5nIHRocm91Z2ggdGhlIEhUVFAgbGF5ZXIsIHdoaWNo
IG1heSBhZGQgc29tZSBzcGVjaWZpYyBoZWFkZXJzLgotICAgIGNsZWFuSFRUUFJlcXVlc3RIZWFk
ZXJzRm9yQWNjZXNzQ29udHJvbChyZXF1ZXN0LCBvcHRpb25zLmh0dHBIZWFkZXJzVG9LZWVwKTsK
LQotICAgIEFTU0VSVChvcHRpb25zLnNlcnZpY2VXb3JrZXJzTW9kZSAhPSBTZXJ2aWNlV29ya2Vy
c01vZGU6Ok5vbmUpOwotICAgIG1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIg
PSBvcHRpb25zLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLnZhbHVlKCk7Ci0g
ICAgbV9jb25uZWN0aW9uLT5zdGFydEZldGNoKG1faWRlbnRpZmllciwgbV9zZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9ucywgcmVmZXJyZXIpOwotfQot
Ci12b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6ZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9u
c2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKQotewotICAgIGNhbGxPbk1haW5UaHJlYWQo
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVzcG9uc2UgPSBXVEZNb3Zl
KHJlc3BvbnNlKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFtX2xvYWRlcikKLSAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICByZXNwb25zZS5zZXRTb3VyY2UoUmVzb3VyY2VSZXNwb25z
ZTo6U291cmNlOjpTZXJ2aWNlV29ya2VyKTsKLQotICAgICAgICBtX2xvYWRlci0+d2lsbFNlbmRS
ZXF1ZXN0KG1fbG9hZGVyLT5yZXF1ZXN0KCkucmVkaXJlY3RlZFJlcXVlc3QocmVzcG9uc2UsIG1f
c2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCksIHJlc3BvbnNlLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IHByb3RlY3RlZFRoaXMuY29weVJlZigpXShSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0KSB7Ci0gICAgICAgICAgICBpZiAoIW1fbG9hZGVyIHx8IHJlcXVlc3QuaXNO
dWxsKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byBjYWxsYmFjayA9IFdURk1vdmUobV9j
YWxsYmFjaykpCi0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKFJlc3VsdDo6U3VjY2VlZGVk
KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBB
U1NFUlQocmVxdWVzdCA9PSBtX2xvYWRlci0+cmVxdWVzdCgpKTsKLSAgICAgICAgICAgIHN0YXJ0
KCk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotfQotCi12b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRG
ZXRjaDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgYm9v
bCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkKLXsKLSAgICBjYWxsT25N
YWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlc3BvbnNl
ID0gV1RGTW92ZShyZXNwb25zZSksIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNz
YWdlXSgpIG11dGFibGUgewotICAgICAgICBpZiAoIW1fbG9hZGVyKQotICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgIGlmIChhdXRvIGNhbGxiYWNrID0gV1RGTW92ZShtX2NhbGxiYWNrKSkK
LSAgICAgICAgICAgIGNhbGxiYWNrKFJlc3VsdDo6U3VjY2VlZGVkKTsKLQotICAgICAgICBBU1NF
UlQoIXJlc3BvbnNlLmlzUmVkaXJlY3Rpb24oKSB8fCAhcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxk
cygpLmNvbnRhaW5zKEhUVFBIZWFkZXJOYW1lOjpMb2NhdGlvbikpOwotCi0gICAgICAgIGlmICgh
bmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpIHsKLSAgICAgICAgICAgIG1f
bG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIFtdIHsgfSk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBtX2xvYWRlci0+ZGlkUmVjZWl2ZVJlc3Bv
bnNlKHJlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhp
cyldIHsKLSAgICAgICAgICAgIGlmICghbV9sb2FkZXIpCi0gICAgICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVz
cG9uc2UobV9pZGVudGlmaWVyLCBtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
KTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU2VydmljZVdvcmtlckNsaWVudEZl
dGNoOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVu
Y2UsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCi17Ci0gICAgYXV0byogZGF0YSA9IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGFSZWZlcmVuY2UuZGF0YSgpKTsKLSAgICBjYWxs
T25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGVuY29k
ZWREYXRhTGVuZ3RoLCBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBkYXRhUmVm
ZXJlbmNlLnNpemUoKSldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghbV9sb2FkZXIpCi0gICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbV9lbmNvZGVkRGF0YUxlbmd0aCArPSBlbmNvZGVk
RGF0YUxlbmd0aDsKLQotICAgICAgICBtX2xvYWRlci0+ZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3Zl
KGJ1ZmZlciksIG1fZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkQnl0ZXMpOwotICAgIH0p
OwotfQotCi12b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6ZGlkUmVjZWl2ZUZvcm1EYXRh
KGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmKQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgZm9ybSBkYXRhIHJlYWRpbmcuCi19Ci0KLXZvaWQgU2VydmljZVdvcmtlckNsaWVudEZldGNo
OjpkaWRGaW5pc2goKQotewotICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKV0gewotICAgICAgICBpZiAoIW1fbG9hZGVyKQotICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgIEFTU0VSVCghbV9jYWxsYmFjayk7Ci0KLSAgICAgICAgbV9s
b2FkZXItPmRpZEZpbmlzaExvYWRpbmcoTmV0d29ya0xvYWRNZXRyaWNzIHsgfSk7Ci0gICAgICAg
IG1fc2VydmljZVdvcmtlclByb3ZpZGVyLmZldGNoRmluaXNoZWQobV9pZGVudGlmaWVyKTsKLSAg
ICB9KTsKLX0KLQotdm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OmRpZEZhaWwoUmVzb3Vy
Y2VFcnJvciYmIGVycm9yKQotewotICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZXJyb3IgPSBXVEZNb3ZlKGVycm9yKV0gewotICAgICAg
ICBpZiAoIW1fbG9hZGVyKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGF1dG8qIGRv
Y3VtZW50ID0gbV9sb2FkZXItPmZyYW1lKCkgPyBtX2xvYWRlci0+ZnJhbWUoKS0+ZG9jdW1lbnQo
KSA6IG51bGxwdHI7Ci0gICAgICAgIGlmIChkb2N1bWVudCkgewotICAgICAgICAgICAgaWYgKG1f
bG9hZGVyLT5vcHRpb25zKCkuZGVzdGluYXRpb24gIT0gRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlv
bjo6RW1wdHlTdHJpbmcgfHwgZXJyb3IuaXNHZW5lcmFsKCkpCi0gICAgICAgICAgICAgICAgZG9j
dW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6
OkVycm9yLCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKTsKLSAgICAgICAgICAgIGlmICht
X2xvYWRlci0+b3B0aW9ucygpLmRlc3RpbmF0aW9uICE9IEZldGNoT3B0aW9uczo6RGVzdGluYXRp
b246OkVtcHR5U3RyaW5nKQotICAgICAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgbWFrZVN0cmluZygi
Q2Fubm90IGxvYWQgIiwgZXJyb3IuZmFpbGluZ1VSTCgpLnN0cmluZygpLCAiLiIpKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIG1fbG9hZGVyLT5kaWRGYWlsKGVycm9yKTsKLQotICAgICAgICBpZiAo
YXV0byBjYWxsYmFjayA9IFdURk1vdmUobV9jYWxsYmFjaykpCi0gICAgICAgICAgICBjYWxsYmFj
ayhSZXN1bHQ6OlN1Y2NlZWRlZCk7Ci0KLSAgICAgICAgbV9zZXJ2aWNlV29ya2VyUHJvdmlkZXIu
ZmV0Y2hGaW5pc2hlZChtX2lkZW50aWZpZXIpOwotICAgIH0pOwotfQotCi12b2lkIFNlcnZpY2VX
b3JrZXJDbGllbnRGZXRjaDo6ZGlkTm90SGFuZGxlKCkKLXsKLSAgICBjYWxsT25NYWluVGhyZWFk
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKLSAgICAgICAgaWYgKCFt
X2xvYWRlcikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAoYXV0byBjYWxsYmFj
ayA9IFdURk1vdmUobV9jYWxsYmFjaykpCi0gICAgICAgICAgICBjYWxsYmFjayhSZXN1bHQ6OlVu
aGFuZGxlZCk7Ci0KLSAgICAgICAgbV9zZXJ2aWNlV29ya2VyUHJvdmlkZXIuZmV0Y2hGaW5pc2hl
ZChtX2lkZW50aWZpZXIpOwotICAgIH0pOwotfQotCi12b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRG
ZXRjaDo6Y2FuY2VsKCkKLXsKLSAgICBpZiAoYXV0byBjYWxsYmFjayA9IFdURk1vdmUobV9jYWxs
YmFjaykpCi0gICAgICAgIGNhbGxiYWNrKFJlc3VsdDo6Q2FuY2VsbGVkKTsKLQotICAgIG1fY29u
bmVjdGlvbi0+Y2FuY2VsRmV0Y2gobV9pZGVudGlmaWVyLCBtX3NlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25JZGVudGlmaWVyKTsKLSAgICBtX2xvYWRlciA9IG51bGxwdHI7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNsaWVu
dEZldGNoLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2Vy
Q2xpZW50RmV0Y2guaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzY2N2FjNzU3ZmRk
NzEwODg4YjhiMmQ0ZWVlOTQ0OTkwZjBiMGQwMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2
aWNlV29ya2VyQ2xpZW50RmV0Y2guaAorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLQot
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJGb3JtRGF0YVJlZmVyZW5jZS5o
IgotI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgotI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIu
aCIKLSNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoSWRlbnRpZmllci5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VFcnJvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXIuaD4K
LSNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7
Ci0KLWNsYXNzIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjsKLWNsYXNzIFdlYlNlcnZpY2VXb3JrZXJQ
cm92aWRlcjsKLQotY2xhc3MgU2VydmljZVdvcmtlckNsaWVudEZldGNoIGZpbmFsIDogcHVibGlj
IFJlZkNvdW50ZWQ8U2VydmljZVdvcmtlckNsaWVudEZldGNoPiwgcHVibGljIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyIHsKLXB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIFJlc3VsdCB7IFN1Y2NlZWRlZCwg
Q2FuY2VsbGVkLCBVbmhhbmRsZWQgfTsKLSAgICB1c2luZyBDYWxsYmFjayA9IFdURjo6Q29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZXN1bHQpPjsKLQotICAgIHN0YXRpYyBSZWY8U2VydmljZVdvcmtl
ckNsaWVudEZldGNoPiBjcmVhdGUoV2ViU2VydmljZVdvcmtlclByb3ZpZGVyJiwgUmVmPFdlYkNv
cmU6OlJlc291cmNlTG9hZGVyPiYmLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIsIFJlZjxXZWJT
V0NsaWVudENvbm5lY3Rpb24+JiYsIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hU
VFBSZWRpcmVjdCwgQ2FsbGJhY2smJik7Ci0gICAgflNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaCgp
OwotCi0gICAgdm9pZCBzdGFydCgpOwotCi0gICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKLSAgICB2b2lkIGNhbmNlbCgpOwot
Ci0gICAgYm9vbCBpc09uZ29pbmcoKSBjb25zdCB7IHJldHVybiAhIW1fY2FsbGJhY2s7IH0KLQot
cHJpdmF0ZToKLSAgICBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2goV2ViU2VydmljZVdvcmtlclBy
b3ZpZGVyJiwgUmVmPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyPiYmLCBXZWJDb3JlOjpGZXRjaElk
ZW50aWZpZXIsIFJlZjxXZWJTV0NsaWVudENvbm5lY3Rpb24+JiYsIGJvb2wgc2hvdWxkQ2xlYXJS
ZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgQ2FsbGJhY2smJik7Ci0KLSAgICBPcHRpb25h
bDxXZWJDb3JlOjpSZXNvdXJjZUVycm9yPiB2YWxpZGF0ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmKTsKLQotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlTWVzc2FnZSk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZShXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7Ci0gICAgdm9pZCBk
aWRSZWNlaXZlRm9ybURhdGEoY29uc3QgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYpOwotICAgIHZv
aWQgZGlkRmluaXNoKCk7Ci0gICAgdm9pZCBkaWRGYWlsKFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
Jik7Ci0gICAgdm9pZCBkaWROb3RIYW5kbGUoKTsKLQotICAgIFdlYlNlcnZpY2VXb3JrZXJQcm92
aWRlciYgbV9zZXJ2aWNlV29ya2VyUHJvdmlkZXI7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlJlc291
cmNlTG9hZGVyPiBtX2xvYWRlcjsKLSAgICBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIgbV9pZGVu
dGlmaWVyOwotICAgIFJlZjxXZWJTV0NsaWVudENvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKLSAg
ICBDYWxsYmFjayBtX2NhbGxiYWNrOwotICAgIGJvb2wgbV9zaG91bGRDbGVhclJlZmVycmVyT25I
VFRQU1RvSFRUUFJlZGlyZWN0IHsgdHJ1ZSB9OwotICAgIGludDY0X3QgbV9lbmNvZGVkRGF0YUxl
bmd0aCB7IDAgfTsKLSAgICBib29sIG1fZGlkRmFpbCB7IGZhbHNlIH07Ci0gICAgV2ViQ29yZTo6
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgbV9zZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uSWRlbnRpZmllcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYg
Ly8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLm1l
c3NhZ2VzLmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZDNiYzc0MDRiZmI0N2Q2
MWUwZDE1ODhlMWE1ZjJhOWMwNmExNjYxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VX
b3JrZXJDbGllbnRGZXRjaC5tZXNzYWdlcy5pbgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAg
QEAKLSMgQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKLQotbWVzc2FnZXMgLT4gU2VydmljZVdvcmtlckNsaWVudEZldGNoIHsK
LSAgICBEaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25z
ZSwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkKLSAgICBEaWRS
ZWNlaXZlUmVkaXJlY3RSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNl
KQotICAgIERpZFJlY2VpdmVEYXRhKElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhLCBpbnQ2NF90IGVu
Y29kZWREYXRhTGVuZ3RoKQotICAgIERpZFJlY2VpdmVGb3JtRGF0YShJUEM6OkZvcm1EYXRhUmVm
ZXJlbmNlIGRhdGEpCi0gICAgRGlkRmluaXNoKCkKLSAgICBEaWRGYWlsKFdlYkNvcmU6OlJlc291
cmNlRXJyb3IgZXJyb3IpCi0gICAgRGlkTm90SGFuZGxlKCkKLX0KLQotI2VuZGlmIC8vIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCmluZGV4IDA2YTRjYzdkYjdhMThj
MTE4N2JhZmM2NTg4NTU0MzJjNDVlYjJhZTIuLmQwMDg5YmY1OGI2NTQ1NjVhOGUxZTkxMmQxYmRh
NjIyYTdkOWVmYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcApAQCAtMzQsNyArMzQsNiBAQAogI2lu
Y2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01l
c3NhZ2VzLmgiCi0jaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudEZldGNoLmgiCiAjaW5jbHVk
ZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2lu
Y2x1ZGUgIldlYlByb2Nlc3NQb29sTWVzc2FnZXMuaCIKQEAgLTIwMywyMSArMjAyLDYgQEAgdm9p
ZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmdldFJlZ2lzdHJhdGlvbnMoU2VjdXJpdHlPcmlnaW5E
YXRhJiYgdG9wT3JpZ2luLCBjb24KICAgICB9KTsKIH0KIAotdm9pZCBXZWJTV0NsaWVudENvbm5l
Y3Rpb246OnN0YXJ0RmV0Y2goRmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllciwgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgRmV0Y2hPcHRp
b25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQotewotICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6U3RhcnRGZXRjaCB7IHNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIsIHJlcXVlc3QsIG9wdGlvbnMsIElQ
Qzo6Rm9ybURhdGFSZWZlcmVuY2UgeyByZXF1ZXN0Lmh0dHBCb2R5KCkgfSwgcmVmZXJyZXIgfSk7
Ci19Ci0KLXZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpjYW5jZWxGZXRjaChGZXRjaElkZW50
aWZpZXIgZmV0Y2hJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
ciBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcikKLXsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OkNhbmNlbEZldGNoIHsgc2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbklkZW50aWZpZXIsIGZldGNoSWRlbnRpZmllciB9KTsKLX0KLQotdm9pZCBXZWJT
V0NsaWVudENvbm5lY3Rpb246OmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoRmV0Y2hJ
ZGVudGlmaWVyIGZldGNoSWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50
aWZpZXIgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpCi17Ci0gICAgc2VuZChN
ZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpDb250aW51ZURpZFJlY2VpdmVGZXRjaFJl
c3BvbnNlIHsgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIGZldGNoSWRlbnRp
ZmllciB9KTsKLX0KLQogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmNvbm5lY3Rpb25Ub1Nl
cnZlckxvc3QoKQogewogICAgIGNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oCmluZGV4IDI3ZmVhMmMx
YjI0YjhjMmE5NjRjNGU5NjdkM2Y3ZWNhMzhkMDM3MmYuLjllNDQ1ZjU1Yzk2ODA5Y2E5Y2Q2MzU2
MzFmNTU1NDc5OTFlY2E1MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oCkBAIC0zMCw3ICszMCw2IEBACiAj
aW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2lu
Y2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKLSNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50RmV0
Y2guaCIKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL01lc3Nh
Z2VXaXRoTWVzc2FnZVBvcnRzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TV0NsaWVudENvbm5lY3Rp
b24uaD4KQEAgLTYwLDkgKzU5LDYgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAKICAgICBib29sIG1h
eUhhdmVTZXJ2aWNlV29ya2VyUmVnaXN0ZXJlZEZvck9yaWdpbihjb25zdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHN0YXJ0RmV0Y2goV2ViQ29y
ZTo6RmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6
RmV0Y2hPcHRpb25zJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlcik7Ci0gICAgdm9pZCBjYW5jZWxG
ZXRjaChXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JZGVudGlmaWVyKTsKLSAgICB2b2lkIGNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVz
cG9uc2UoV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uSWRlbnRpZmllcik7CiAKICAgICB2b2lkIGNvbm5lY3Rpb25Ub1NlcnZlckxvc3Qo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vy
dmljZVdvcmtlclByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAKaW5kZXggNjJhMzliMjVmZGZhZDE3ZTExNTc2
MzMwMDI4MjQyYjMwOWYxOTI4NS4uN2RjZDE4ZWJhZDMwNmRhZTQ3NWIwMDdiNTdlN2UxNjVmNmJi
MzUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vy
dmljZVdvcmtlclByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwCkBAIC02Niw0OCArNjYsNiBAQCBXZWJD
b3JlOjpTV0NsaWVudENvbm5lY3Rpb24qIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6ZXhpc3Rp
bmdTZXJ2aWNlV29ya2VyQ29ubgogICAgIHJldHVybiBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24t
PmV4aXN0aW5nU2VydmljZVdvcmtlckNvbm5lY3Rpb24oKTsKIH0KIAotc3RhdGljIGlubGluZSBi
b29sIHNob3VsZEhhbmRsZUZldGNoKGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9u
cykKLXsKLSAgICBpZiAob3B0aW9ucy5zZXJ2aWNlV29ya2Vyc01vZGUgPT0gU2VydmljZVdvcmtl
cnNNb2RlOjpOb25lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoaXNQb3RlbnRp
YWxOYXZpZ2F0aW9uT3JTdWJyZXNvdXJjZVJlcXVlc3Qob3B0aW9ucy5kZXN0aW5hdGlvbikpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiAhIW9wdGlvbnMuc2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXI7Ci19Ci0KLXZvaWQgV2ViU2VydmljZVdvcmtlclByb3Zp
ZGVyOjpoYW5kbGVGZXRjaChSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBib29sIHNob3VsZENsZWFy
UmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6
Q2FsbGJhY2smJiBjYWxsYmFjaykKLXsKLSAgICBpZiAoIUxlZ2FjeVNjaGVtZVJlZ2lzdHJ5Ojpj
YW5TZXJ2aWNlV29ya2Vyc0hhbmRsZVVSTFNjaGVtZShsb2FkZXIucmVxdWVzdCgpLnVybCgpLnBy
b3RvY29sKCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKSB8fCAhc2hvdWxkSGFuZGxlRmV0Y2go
bG9hZGVyLm9wdGlvbnMoKSkpIHsKLSAgICAgICAgY2FsbGJhY2soU2VydmljZVdvcmtlckNsaWVu
dEZldGNoOjpSZXN1bHQ6OlVuaGFuZGxlZCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBhdXRvJiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKCkuc2VydmljZVdvcmtlckNvbm5lY3Rpb24oKTsKLSAgICBhdXRv
IGZldGNoSWRlbnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPEZldGNoSWRlbnRpZmllclR5
cGU+KGxvYWRlci5pZGVudGlmaWVyKCkpOwotICAgIG1fb25nb2luZ0ZldGNoVGFza3MuYWRkKGZl
dGNoSWRlbnRpZmllciwgU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpjcmVhdGUoKnRoaXMsIGxv
YWRlciwgZmV0Y2hJZGVudGlmaWVyLCBjb25uZWN0aW9uLCBzaG91bGRDbGVhclJlZmVycmVyT25I
VFRQU1RvSFRUUFJlZGlyZWN0LCBXVEZNb3ZlKGNhbGxiYWNrKSkpOwotfQotCi1ib29sIFdlYlNl
cnZpY2VXb3JrZXJQcm92aWRlcjo6Y2FuY2VsRmV0Y2goRmV0Y2hJZGVudGlmaWVyIGZldGNoSWRl
bnRpZmllcikKLXsKLSAgICBhdXRvIGZldGNoID0gbV9vbmdvaW5nRmV0Y2hUYXNrcy50YWtlKGZl
dGNoSWRlbnRpZmllcik7Ci0gICAgaWYgKGZldGNoKQotICAgICAgICAoKmZldGNoKS0+Y2FuY2Vs
KCk7Ci0gICAgcmV0dXJuICEhZmV0Y2g7Ci19Ci0KLXZvaWQgV2ViU2VydmljZVdvcmtlclByb3Zp
ZGVyOjpmZXRjaEZpbmlzaGVkKEZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIpCi17Ci0g
ICAgbV9vbmdvaW5nRmV0Y2hUYXNrcy50YWtlKGZldGNoSWRlbnRpZmllcik7Ci19Ci0KLXZvaWQg
V2ViU2VydmljZVdvcmtlclByb3ZpZGVyOjpkaWRSZWNlaXZlU2VydmljZVdvcmtlckNsaWVudEZl
dGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVj
b2RlcikKLXsKLSAgICBpZiAoYXV0byBmZXRjaCA9IG1fb25nb2luZ0ZldGNoVGFza3MuZ2V0KG1h
a2VPYmplY3RJZGVudGlmaWVyPEZldGNoSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRp
b25JRCgpKSkpCi0gICAgICAgIGZldGNoLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBk
ZWNvZGVyKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oCmluZGV4IDA4OGFlZDk1NGU5YTlk
NGVlNTkyZjVkNzU1MjcyNzE0NGEwNTBhMjIuLmMwMGMwNDc5MzEyN2EwNjlmYWU5NTIzMDEyNWRi
Yjk1NTU0Y2Q3MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oCkBAIC0yNyw3ICsyNyw2IEBACiAK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKLSNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xp
ZW50RmV0Y2guaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJQcm92aWRlci5oPgog
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCkBAIC00MSwxMSArNDAsNiBAQCBjbGFz
cyBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclByb3ZpZGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViU2VydmljZVdvcmtlclBy
b3ZpZGVyJiBzaW5nbGV0b24oKTsKIAotICAgIHZvaWQgaGFuZGxlRmV0Y2goV2ViQ29yZTo6UmVz
b3VyY2VMb2FkZXImLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJl
Y3QsIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6Q2FsbGJhY2smJik7Ci0gICAgYm9vbCBjYW5j
ZWxGZXRjaChXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIpOwotICAgIHZvaWQgZmV0Y2hGaW5pc2hl
ZChXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIpOwotCi0gICAgdm9pZCBkaWRSZWNlaXZlU2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KTsKICAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2aWNlV29ya2VyQ2xpZW50UmVnaXN0cmF0aW9uTWF0
Y2goSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAKIHByaXZhdGU6CkBAIC01NCw4
ICs0OCw2IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb24qIGV4
aXN0aW5nU2VydmljZVdvcmtlckNvbm5lY3Rpb24oKSBmaW5hbDsKICAgICBXZWJDb3JlOjpTV0Ns
aWVudENvbm5lY3Rpb24mIHNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKCkgZmluYWw7Ci0KLSAgICBI
YXNoTWFwPFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgUmVmPFNlcnZpY2VXb3JrZXJDbGllbnRG
ZXRjaD4+IG1fb25nb2luZ0ZldGNoVGFza3M7CiB9OyAvLyBjbGFzcyBXZWJTZXJ2aWNlV29ya2Vy
UHJvdmlkZXIKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5n
ZUxvZwppbmRleCAwMTdiNDdmMzIwN2Q5OWU1YmI1ZTc3YzBhYzY1YjE3MTk3MmZkZTllLi44NjY2
OGNiYTc1ZDVlNDhkZjRkYzlkNzJmZDEzYzQ3OThiNjkzOTE3IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxOS0xMC0xMCAgWW91ZW5uIEZhYmxldCAg
PHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgSGFuZGxlIHNlcnZpY2Ugd29ya2VyIGxvYWRz
IHRocm91Z2ggTmV0d29ya1Jlc291cmNlTG9hZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDIzMDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtl
cnMvc2VydmljZS13b3JrZXIvZmV0Y2gtcmVxdWVzdC14aHIuaHR0cHMtZXhwZWN0ZWQudHh0Ogor
CiAyMDE5LTEwLTEwICBDYXJsb3MgQWxiZXJ0byBMb3BleiBQZXJleiAgPGNsb3BlekBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIEltcG9ydCBjc3MvY3NzLWltYWdlcyBXUFQgdGVzdHMKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13
b3JrZXJzL3NlcnZpY2Utd29ya2VyL2ZldGNoLXJlcXVlc3QteGhyLmh0dHBzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13
b3JrZXJzL3NlcnZpY2Utd29ya2VyL2ZldGNoLXJlcXVlc3QteGhyLmh0dHBzLWV4cGVjdGVkLnR4
dAppbmRleCA0ZmI2YmI1M2IzMTY1NTJmNDFkMGE5N2ZhOTNhZGQ3ZjY4NmE2NTIzLi44NWFhMDBi
MGFlOGVkY2MxNjgxNDU2NWQ5OTlkYWQ3ZTQxYTkzYzk0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNl
LXdvcmtlci9mZXRjaC1yZXF1ZXN0LXhoci5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2Vy
dmljZS13b3JrZXIvZmV0Y2gtcmVxdWVzdC14aHIuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC04LDcg
KzgsNyBAQCBQQVNTIEZldGNoRXZlbnQjcmVxdWVzdC5ib2R5IGNvbnRhaW5zIFhIUiByZXF1ZXN0
IGRhdGEgKHN0cmluZykKIFBBU1MgRmV0Y2hFdmVudCNyZXF1ZXN0LmJvZHkgY29udGFpbnMgWEhS
IHJlcXVlc3QgZGF0YSAoYmxvYikgCiBQQVNTIEZldGNoRXZlbnQjcmVxdWVzdC5tZXRob2QgaXMg
c2V0IHRvIFhIUiBtZXRob2QgCiBQQVNTIFhIUiB1c2luZyBPUFRJT05TIG1ldGhvZCAKLUZBSUwg
WEhSIHdpdGggZm9ybSBkYXRhIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRo
IHZhbHVlOiBvYmplY3QgIkVycm9yOiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAoc3RyaW5nKSAi
UE9TVCIgYnV0IGdvdCAodW5kZWZpbmVkKSB1bmRlZmluZWQiCitQQVNTIFhIUiB3aXRoIGZvcm0g
ZGF0YSAKIFBBU1MgWEhSIHdpdGggbW9kZS9jcmVkZW50aWFscyBzZXQgCiBQQVNTIFhIUiB0byBk
YXRhIFVSTCAKIFBBU1MgcmVzdG9yZSBnbG9iYWwgc3RhdGUgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380741</attachid>
            <date>2019-10-11 03:51:12 -0700</date>
            <delta_ts>2019-10-11 06:12:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202309-20191011125109.patch</filename>
            <type>text/plain</type>
            <size>107426</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNmMDc4MDEwMzI2NTYy
M2ZiNmRhNjE0NGZhNmU2ZjU4NjRjNWVmNy4uMTg4YTZmODFkMjQxODY4MzcxZDk2YTVlMDI3YzBh
OGZhMDMxYjAyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTEwLTExICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBIYW5kbGUgc2VydmljZSB3
b3JrZXIgbG9hZHMgdGhyb3VnaCBOZXR3b3JrUmVzb3VyY2VMb2FkZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjMwOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IHRvIHNlcmlhbGl6ZSBIVFRQ
IGhlYWRlciBuYW1lcyBhcyBlbnVtZXJhdGlvbi4KKyAgICAgICAgVXBkYXRlZCBTV1NlcnZlciBh
YmlsaXR5IHRvIGhhbmRsZSBzY2hlbWVzIGJ5IGFkZGluZyBidWlsdC1pbiBzdXBwb3J0IGZvciBI
VFRQIGFuZCBIVFRQUyBhcyBkb25lIGluIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5LgorCisgICAgICAg
IENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VM
b2FkZXJPcHRpb25zLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jcmVhdGUtaHR0cC1o
ZWFkZXItbmFtZS10YWJsZToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpjYW5IYW5kbGVTY2hlbWUgY29u
c3QpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2IpOgorCiAyMDE5LTEw
LTEwICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRleC5ydT4KIAogICAgICAgICBH
dWFyZCBHQ3J5cHQtc3BlY2lmaWMgY29kZSB3aXRoIFVTRShHQ1JZUFQpIGluc3RlYWQgb2YgUExB
VEZPUk0gbWFjcm9zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGI0OGNkMmUwZWVhYzk2ZGNhNGY5ZDMzNmU3MDhhMWQx
NTBkZWIzMGMuLjY4Y2Y3MzMxMzMzNDljMjQ4M2U4NGM4NDk3YWQwMGI2YmJiZDZjNjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsOTkgQEAKKzIwMTktMTAtMTEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgorCisgICAgICAgIEhhbmRsZSBzZXJ2aWNlIHdvcmtlciBsb2FkcyB0aHJvdWdo
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjAyMzA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVtb3ZlIFNlcnZpY2VXb3JrZXJGZXRjaENsaWVudC4KKyAgICAgICAg
SW5zdGVhZCB3ZSB1c2UgdGhlIG5vcm1hbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXIvV2ViUmVzb3Vy
Y2VMb2FkZXIgY29tbXVuaWNhdGlvbiBjaGFubmVsLgorICAgICAgICBXZSBwYXNzIGFkZGl0aW9u
YWwgcGFyYW1ldGVycywgaW4gcGFydGljdWxhciBzZXJ2aWNlIHdvcmtlciBtb2RlIGFuZCByZWdp
c3RyYXRpb24gaWRlbnRpZmllci4KKworICAgICAgICBCYXNlZCBvbiB0aGF0IGluZm9ybWF0aW9u
LCBuZXR3b3JrIHByb2Nlc3Mgd2lsbCBkZWNpZGUgd2hldGhlciB0byBsb2FkIGZyb20gc2Vydmlj
ZSB3b3JrZXIgb3IgbmV0d29yay4KKyAgICAgICAgVGhlIGZpcnN0IGFkdmFudGFnZSBpcyB0aGF0
IGluIGNhc2Ugb2Ygc2VydmljZSB3b3JrZXIgbm90IGhhbmRsaW5nIHRoZSBsb2FkLCBnb2luZyB0
byB0aGUgbmV0d29yayBpcyBmYXN0ZXIuCisgICAgICAgIFRoaXMgd2lsbCBhbHNvIGFsbG93IHVz
IHRvIGRvIHRoZSByZWdpc3RyYXRpb24gbWF0Y2hpbmcgaW4gbmV0d29yayBwcm9jZXNzIHdoZW4g
cmVjZWl2aW5nIGEgbmF2aWdhdGlvbiByZXF1ZXN0LgorCisgICAgICAgIFNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2sgaXMgbm93IGJlZWZlZCB1cCB0byBkbyB0aGUgbGluayBiZXR3ZWVuIHNlcnZpY2Ug
d29ya2VyIGFuZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXIvV2ViUmVzb3VyY2VMb2FkZXIuCisgICAg
ICAgIFRvIHN1cHBvcnQgdGhlIHNhbWUgY29uc29sZSBsb2dnaW5nLCB3ZSBhZGQgYSBuZXcgbWVz
c2FnZSBjYWxsZWQgRGlkRmFpbFNlcnZpY2VXb3JrZXJMb2FkLgorCisgICAgICAgIFRvIHN1cHBv
cnQgQVBJIHRlc3RzLCB3ZSBjb250aW51ZSB0byBnbyB0byB0aGUgc2VydmljZSB3b3JrZXIgYmVm
b3JlIHRyeWluZyB0byBnbyB0byBVUkwgc2NoZW1lIGhhbmRsZXJzLgorICAgICAgICBUaGlzIGFk
ZHMgc29tZSBidXJkZW4gYXMgd2UgbmVlZCB0byBnbyB0byBuZXR3b3JrIHByb2Nlc3Mvc2Vydmlj
ZSB3b3JrZXIgcHJvY2VzcyBhbmQsIGluIGNhc2UgbG9hZCBpcyBub3QgaGFuZGxlZAorICAgICAg
ICBieSBzZXJ2aWNlIHdvcmtlciwgd2UgZ28gYmFjayB0byB0aGUgd2ViIHByb2Nlc3MgdG8gZG8g
dGhlIGxvYWQgdGhyb3VnaCBVUkwgc2NoZW1lIGhhbmRsZXJzLgorICAgICAgICBGb3IgdGhhdCBw
dXJwb3NlIHdlIHVzZSBTZXJ2aWNlV29ya2Vyc01vZGU6Ok9ubHkuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Ogor
ICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6c2NoZWR1bGVSZXNvdXJjZUxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjphYm9ydCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRXaXRo
U2VydmljZVdvcmtlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
c2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2Vydmlj
ZVdvcmtlckZldGNoVGFzazo6U2VydmljZVdvcmtlckZldGNoVGFzayk6CisgICAgICAgIChXZWJL
aXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6On5TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKToKKyAg
ICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6c2VuZFRvU2VydmljZVdvcmtl
cik6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnNlbmRUb0NsaWVu
dCk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnN0YXJ0KToKKyAg
ICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6c3RhcnRGZXRjaCk6CisgICAg
ICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZWRpcmVjdFJl
c3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6
ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
OjpkaWRSZWNlaXZlRm9ybURhdGEpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrOjpkaWRGaW5pc2gpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrOjpkaWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6
ZGlkTm90SGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6
Y2FuY2VsRnJvbUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s6OmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpjb250aW51ZUZldGNoVGFza1dpdGgpOgorICAgICAgICAo
V2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjp0aW1lb3V0VGltZXJGaXJlZCk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Lmg6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmZldGNoSWRlbnRp
ZmllciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y2FuY2VsRmV0Y2gpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTV1NlcnZlckNvbm5lY3Rpb246OmNyZWF0ZUZldGNoVGFzayk6CisgICAgICAgIChXZWJLaXQ6
OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaCk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6c3RhcnRGZXRjaCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZGlkUmVj
ZWl2ZUZldGNoVGFza01lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246OnJlZ2lzdGVyRmV0Y2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246OnVucmVnaXN0ZXJGZXRjaCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZmV0Y2hUYXNrVGltZWRPdXQpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6aXBjQ29ubmVjdGlvbiBjb25zdCk6CisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlJlc291cmNlTG9hZGVyOjpkaWRGYWlsU2VydmljZVdvcmtlckxvYWQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6c2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50
RmV0Y2guaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdv
cmtlckNsaWVudEZldGNoLm1lc3NhZ2VzLmluOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwOgorICAgICAgICAqIFdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmg6CisKIDIwMTktMTAtMTAgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1v
dmUgdW51c2VkIFdlYlByb2Nlc3NQb29sOjpyZXF1ZXN0TmV0d29ya2luZ1N0YXRpc3RpY3MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaAppbmRleCA5ZTMw
NzRkYTMyMTFkMGVlOTdiOGViMmVkZjQ5MTY5ZWM1ZGYyYTRhLi5hZWNmOTQ0MWQzMjFlZDk5NmI4
ZTRkMjAyMTAwYjY1ZmZjMGFlMTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXJPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyT3B0aW9ucy5oCkBAIC0xNzUsMyArMTc1LDE2IEBAIHN0cnVjdCBSZXNvdXJjZUxv
YWRlck9wdGlvbnMgOiBwdWJsaWMgRmV0Y2hPcHRpb25zIHsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFp
dHM8V2ViQ29yZTo6U2VydmljZVdvcmtlcnNNb2RlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51
bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6U2VydmljZVdvcmtlcnNNb2RlLAorICAgICAgICBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2Vyc01vZGU6OkFsbCwKKyAgICAgICAgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlcnNNb2RlOjpOb25lLAorICAgICAgICBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vyc01vZGU6
Ok9ubHkKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NyZWF0ZS1odHRwLWhlYWRlci1uYW1lLXRhYmxl
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jcmVhdGUtaHR0cC1oZWFkZXItbmFt
ZS10YWJsZQppbmRleCA2NDdjZGQ4MjQyZmFmNzg1ZTAyMzE0MzRkMDA5MGU2YzM5NzczZGFkLi40
MzlkYjY4YzMyYzQzZTA4M2IwMDA2NzhkNzJjZTM1OWRhZDNlMjlmIDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NyZWF0ZS1odHRwLWhlYWRlci1uYW1lLXRhYmxl
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3JlYXRlLWh0dHAtaGVhZGVy
LW5hbWUtdGFibGUKQEAgLTIzMyw2ICsyMzMsMjggQEAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nVmll
dyBodHRwSGVhZGVyTmFtZVN0cmluZyhIVFRQSGVhZGVyTmFtZSk7CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAorbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFp
dHM8V2ViQ29yZTo6SFRUUEhlYWRlck5hbWU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFs
dWVzPAorICAgICAgICBXZWJDb3JlOjpIVFRQSGVhZGVyTmFtZSwKKycnJykKKworaXNfZmlyc3Qg
PSBUcnVlCitmb3IgaHR0cF9oZWFkZXJfbmFtZSBpbiBodHRwX2hlYWRlcl9uYW1lczoKKyAgICBp
ZiBpc19maXJzdDoKKyAgICAgICAgaXNfZmlyc3QgPSBGYWxzZQorICAgIGVsc2U6CisgICAgCWhl
YWRlcl9maWxlLndyaXRlKCcsXG4nKQorCisgICAgaGVhZGVyX2ZpbGUud3JpdGUoJyAgICAgICAg
V2ViQ29yZTo6SFRUUEhlYWRlck5hbWU6OiVzJyAlIGh0dHBfaGVhZGVyX25hbWVfdG9faWRbaHR0
cF9oZWFkZXJfbmFtZV0pCisKK2hlYWRlcl9maWxlLndyaXRlKCcnJworICAgID47Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXVEYKKwogI2VuZGlmIC8vIEhUVFBIZWFkZXJOYW1lc19oCiAnJycpCiBo
ZWFkZXJfZmlsZS5jbG9zZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmluZGV4IDliYjY2YWIyOGUwNzVlMDcwMGNmM2M3NjljZTNj
ZWIyZjM2Yjg2MDAuLjEzN2M2NjI1NTJlMWNhZTYwYzU1MjAyMDJkZTc4Y2Y0OGZlYjFkMTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIu
Y3BwCkBAIC05NzQsNiArOTc0LDIxIEBAIHZvaWQgU1dTZXJ2ZXI6OmNyZWF0ZUNvbnRleHRDb25u
ZWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpCiAgICAgbV9j
cmVhdGVDb250ZXh0Q29ubmVjdGlvbkNhbGxiYWNrKHJlZ2lzdHJhYmxlRG9tYWluKTsKIH0KIAor
Ym9vbCBTV1NlcnZlcjo6Y2FuSGFuZGxlU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKSBjb25z
dAoreworICAgIGlmIChzY2hlbWUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlmIChzY2hlbWUuc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCJodHRwIl9zKSkgewor
ICAgICAgICBpZiAoc2NoZW1lLmxlbmd0aCgpID09IDQpCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgaWYgKHNjaGVtZS5sZW5ndGgoKSA9PSA1ICYmIGlzQVNDSUlBbHBoYUNhc2Vs
ZXNzRXF1YWwoc2NoZW1lWzRdLCAncycpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCisgICAgcmV0dXJuIG1fcmVnaXN0ZXJlZFNjaGVtZXMuY29udGFpbnMoc2NoZW1lKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ci5oCmluZGV4IDQ2MDEzMTc2MTZjODE2NzQ4ZDIwODAwZjI2MGIzNTI4NTc0ODgxNzAuLjMxM2Q1
ZTkxZTNhMWNmZDNiYzA4ZjlkNzg2MWFmMTk4OTdiOWEwNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTE2NCw3ICsxNjQsNyBA
QCBwdWJsaWM6CiAgICAgQ29ubmVjdGlvbiogY29ubmVjdGlvbihTV1NlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyIGlkZW50aWZpZXIpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbnMuZ2V0KGlk
ZW50aWZpZXIpOyB9CiAKICAgICBjb25zdCBIYXNoTWFwPFNXU2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9uPj4mIGNvbm5lY3Rpb25zKCkgY29uc3Qg
eyByZXR1cm4gbV9jb25uZWN0aW9uczsgfQotICAgIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiByZWdp
c3RlcmVkU2NoZW1lcygpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0ZXJlZFNjaGVtZXM7IH0KKyAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGNhbkhhbmRsZVNjaGVtZShjb25zdCBTdHJpbmcmKSBjb25z
dDsKIAogICAgIFNXT3JpZ2luU3RvcmUmIG9yaWdpblN0b3JlKCkgeyByZXR1cm4gbV9vcmlnaW5T
dG9yZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVySm9iUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcAppbmRleCA3NzhhZTdkNmM4MzM3N2U3ZDFlNDJm
ZWQ3MjBjMzNjNzU3ZmUyZDFmLi44YzRhMDA1ZDEzMWVkMmIwM2IxZGU4NGZhMzE0MjMzNmExZWNl
MWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVySm9iUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKQEAgLTI1OSw3ICsyNTksNyBAQCB2b2lkIFNXU2Vy
dmVySm9iUXVldWU6OnJ1blJlZ2lzdGVySm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBq
b2IpCiB7CiAgICAgQVNTRVJUKGpvYi50eXBlID09IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpSZWdp
c3Rlcik7CiAKLSAgICBpZiAoIXNob3VsZFRyZWF0QXNQb3RlbnRpYWxseVRydXN0d29ydGh5KGpv
Yi5zY3JpcHRVUkwpICYmICFtX3NlcnZlci5yZWdpc3RlcmVkU2NoZW1lcygpLmNvbnRhaW5zKGpv
Yi5zY3JpcHRVUkwucHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpKQorICAgIGlm
ICghc2hvdWxkVHJlYXRBc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHkoam9iLnNjcmlwdFVSTCkgJiYg
IW1fc2VydmVyLmNhbkhhbmRsZVNjaGVtZShqb2Iuc2NyaXB0VVJMLnByb3RvY29sKCkudG9TdHJp
bmdXaXRob3V0Q29weWluZygpKSkKICAgICAgICAgcmV0dXJuIHJlamVjdEN1cnJlbnRKb2IoRXhj
ZXB0aW9uRGF0YSB7IFNlY3VyaXR5RXJyb3IsICJTY3JpcHQgVVJMIGlzIG5vdCBwb3RlbnRpYWxs
eSB0cnVzdHdvcnRoeSJfcyB9KTsKIAogICAgIC8vIElmIHRoZSBvcmlnaW4gb2Ygam9iJ3Mgc2Ny
aXB0IHVybCBpcyBub3Qgam9iJ3MgcmVmZXJyZXIncyBvcmlnaW4sIHRoZW46CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3Rz
LnR4dAppbmRleCBmN2NkMThiZDI5MjMzYjg1OGZlN2M3ZGQzNzVhOWE5OTYzYTY5MjZlLi4xZTA2
ZTYyNjBjZDJkOTRlMjQ4MDhlYjU3ZjA0MjcwZjEzNTNhNDE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQK
QEAgLTE5MCw3ICsxOTAsNiBAQCBzZXQoV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAgICAgV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5tZXNzYWdlcy5p
bgogICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5tZXNzYWdlcy5pbgogCi0gICAg
V2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5tZXNzYWdlcy5pbgog
ICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
ICAgICBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVz
c2FnZXMuaW4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1
dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVs
aXN0CmluZGV4IDJlNDc2NjA4NTQwM2Q0MjA3ZjJiZjE3MmU5OWM3ODQ2OTBhOWNjZTEuLmYxYWRh
ZDYyNjlkMDEyY2FiMWRkNzJiNTkwNTI1OGVmOTA5Zjk1YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTEwNSw3ICsxMDUsNiBAQCAkKFBS
T0pFQ1RfRElSKS9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdl
ci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLm1lc3NhZ2VzLmluCiAkKFBST0pF
Q1RfRElSKS9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkubWVzc2FnZXMuaW4KLSQoUFJP
SkVDVF9ESVIpL1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gubWVz
c2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENv
bm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikv
V2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIubWVzc2FnZXMu
aW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmls
ZWxpc3QgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0Cmlu
ZGV4IGJkOWRkN2Y2MzNjMTdiY2YyOTkwODc3ZjFkZTNhYWU0YThmYjQ3YWMuLjFjNWQyMTRkMDA3
MWQyNjg0ZmRjYzhiOGU0YWM5YzY1YmQ5N2RiMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtODAsOCArODAsNiBAQCAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9SZW1vdGVXZWJJbnNwZWN0b3JVSU1l
c3NhZ2VSZWNlaXZlcgogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvUmVtb3RlV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TZWNJdGVtU2hpbVByb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvU2VjSXRlbVNo
aW1Qcm94eU1lc3NhZ2VzLmgKLSQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VSZWNlaXZlci5jcHAKLSQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1NlcnZpY2VXb3JrZXJDbGll
bnRGZXRjaE1lc3NhZ2VzLmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9X
ZWJLaXQyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2tNZXNzYWdlUmVjZWl2ZXIuY3BwCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJLaXQv
RGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA5ZGU3MDQyNjZhZmVlNTEzNmU2NWU4NDc4MWI1YTAy
NTI1MTU3YWM5Li5iYWU3YzMxOWU0NzY0NDVhOWNlMzZlNjJkNzZlZmVkZGY2NmFiMTI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xMzIsNyArMTMyLDYgQEAgTUVTU0FHRV9SRUNF
SVZFUlMgPSBcCiAgICAgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkgXAogICAgIFJlbW90ZVdlYklu
c3BlY3RvclVJIFwKICAgICBTZWNJdGVtU2hpbVByb3h5IFwKLSAgICBTZXJ2aWNlV29ya2VyQ2xp
ZW50RmV0Y2ggXAogICAgIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2sgXAogICAgIFNtYXJ0TWFnbmlm
aWNhdGlvbkNvbnRyb2xsZXIgXAogICAgIFN0b3JhZ2VBcmVhTWFwIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKaW5kZXggNjIxOGE2ZTkwZmFiZmY0NDE5MzVlZTAxYTc1ZmQ5ZjVkOWQwYTQ2
Ni4uY2I1MGViYWMxMGI5MDMyYWUyNTUzNDk4NWU1MGM3N2M3ODI5ZmQyNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAKQEAgLTQwNiw5ICs0MDYsMTMgQEAgdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6c2NoZWR1bGVSZXNvdXJjZUxvYWQoTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmEKICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgQVNTRVJU
KCFtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMuY29udGFpbnMoaWRlbnRpZmllcikpOwogCi0gICAg
YXV0byBsb2FkZXIgPSBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShXVEZNb3ZlKGxvYWRQ
YXJhbWV0ZXJzKSwgKnRoaXMpOwotICAgIG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5hZGQoaWRl
bnRpZmllciwgbG9hZGVyLmNvcHlSZWYoKSk7CisgICAgYXV0byYgbG9hZGVyID0gbV9uZXR3b3Jr
UmVzb3VyY2VMb2FkZXJzLmFkZChpZGVudGlmaWVyLCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNy
ZWF0ZShXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzKSwgKnRoaXMpKS5pdGVyYXRvci0+dmFsdWU7CisK
KyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgbG9hZGVyLT5zdGFydFdpdGhTZXJ2aWNl
V29ya2VyKG1fc3dDb25uZWN0aW9uLmdldCgpKTsKKyNlbHNlCiAgICAgbG9hZGVyLT5zdGFydCgp
OworI2VuZGlmCiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBlcmZv
cm1TeW5jaHJvbm91c0xvYWQoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFy
YW1ldGVycywgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3Jt
U3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHkmJiByZXBseSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1l
dGVycy5jcHAKaW5kZXggZTI4YzdkMTRiZDEwYTRjNzRhNzRjNTRmMTQ2MmRiNTk0MjMwMTNjNS4u
Y2ZhNTQ5MjQ5YzE4MzNlZjY0NDU5N2NkNDBjNjU1YjgxNTFkMjA1YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycy5jcHAKQEAgLTEwNyw2ICsxMDcsMTIgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBl
bmNvZGVyIDw8IGZyYW1lQW5jZXN0b3JPcmlnaW5zOwogICAgIGVuY29kZXIgPDwgaXNIVFRQU1Vw
Z3JhZGVFbmFibGVkOwogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIGVuY29kZXIg
PDwgc2VydmljZVdvcmtlcnNNb2RlOworICAgIGVuY29kZXIgPDwgc2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbklkZW50aWZpZXI7CisgICAgZW5jb2RlciA8PCBodHRwSGVhZGVyc1RvS2VlcDsKKyNl
bmRpZgorCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAgICBlbmNvZGVyIDw8IG1h
aW5Eb2N1bWVudFVSTDsKICAgICBlbmNvZGVyIDw8IHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXI7CkBAIC0yNDIsNyArMjQ4LDI3IEBAIE9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzPiBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKElQCiAgICAg
aWYgKCFpc0hUVFBTVXBncmFkZUVuYWJsZWQpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiAgICAgcmVzdWx0LmlzSFRUUFNVcGdyYWRlRW5hYmxlZCA9ICppc0hUVFBTVXBncmFkZUVuYWJs
ZWQ7Ci0gICAgCisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgT3B0aW9uYWw8U2Vy
dmljZVdvcmtlcnNNb2RlPiBzZXJ2aWNlV29ya2Vyc01vZGU7CisgICAgZGVjb2RlciA+PiBzZXJ2
aWNlV29ya2Vyc01vZGU7CisgICAgaWYgKCFzZXJ2aWNlV29ya2Vyc01vZGUpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmVzdWx0LnNlcnZpY2VXb3JrZXJzTW9kZSA9ICpzZXJ2
aWNlV29ya2Vyc01vZGU7CisKKyAgICBPcHRpb25hbDxPcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uSWRlbnRpZmllcj4+IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
OworICAgIGRlY29kZXIgPj4gc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI7Cisg
ICAgaWYgKCFzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcikKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXN1bHQuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIgPSAqc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI7CisKKyAgICBP
cHRpb25hbDxIYXNoU2V0PEhUVFBIZWFkZXJOYW1lLCBXVEY6OkludEhhc2g8SFRUUEhlYWRlck5h
bWU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPEhUVFBIZWFkZXJOYW1lPj4+IGh0dHBIZWFk
ZXJzVG9LZWVwOworICAgIGRlY29kZXIgPj4gaHR0cEhlYWRlcnNUb0tlZXA7CisgICAgaWYgKCFo
dHRwSGVhZGVyc1RvS2VlcCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXN1
bHQuaHR0cEhlYWRlcnNUb0tlZXAgPSBXVEZNb3ZlKCpodHRwSGVhZGVyc1RvS2VlcCk7CisjZW5k
aWYKKwogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShyZXN1bHQubWFpbkRvY3VtZW50VVJMKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaAppbmRleCAxMjAzNDcwNGRhOTI3YjVhMmZjMWI1Y2Vm
ZTk5YmJmODJiZmRmNTc0Li45Y2Q1YjQ1NWM3MjU1NzM0OWEwMDM5ZDhmZDFjMjc0NWE0YjU3MzI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAi
VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29u
dGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9G
ZXRjaE9wdGlvbnMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0hUVFBIZWFkZXJOYW1lcy5oPgogI2lu
Y2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAKIG5hbWVzcGFjZSBJUEMgewpAQCAtNjAsNiArNjEsMTIg
QEAgcHVibGljOgogICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiBm
cmFtZUFuY2VzdG9yT3JpZ2luczsKICAgICBib29sIGlzSFRUUFNVcGdyYWRlRW5hYmxlZCB7IGZh
bHNlIH07CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlcnNNb2RlIHNlcnZpY2VXb3JrZXJzTW9kZSB7IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJz
TW9kZTo6Tm9uZSB9OworICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25JZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcjsKKyAg
ICBIYXNoU2V0PFdlYkNvcmU6OkhUVFBIZWFkZXJOYW1lLCBXVEY6OkludEhhc2g8V2ViQ29yZTo6
SFRUUEhlYWRlck5hbWU+LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPFdlYkNvcmU6OkhUVFBI
ZWFkZXJOYW1lPj4gaHR0cEhlYWRlcnNUb0tlZXA7CisjZW5kaWYKKwogI2lmIEVOQUJMRShDT05U
RU5UX0VYVEVOU0lPTlMpCiAgICAgVVJMIG1haW5Eb2N1bWVudFVSTDsKICAgICBPcHRpb25hbDxV
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyPiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVu
dGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGZiMzcyZDc5ZGVjYjk2Y2VhNTFiN2NlNDMxM2ZmNDY4
MTFjMTlkYmQuLjkyYWY3MWUxNDcwM2M1ODQ1N2E5YzNkNDQ4OTlkNWVhOGUxNmFkODAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHAKQEAgLTM3OSw2ICszNzksMTEgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmFib3J0KCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKKyAgICBpZiAoYXV0byB0YXNrID0gV1RGTW92ZShtX3NlcnZpY2VXb3JrZXJGZXRjaFRh
c2spKQorICAgICAgICB0YXNrLT5jYW5jZWxGcm9tQ2xpZW50KCk7CisjZW5kaWYKKwogICAgIGlm
IChtX25ldHdvcmtMb2FkKSB7CiAgICAgICAgIGlmIChjYW5Vc2VDYWNoZShtX25ldHdvcmtMb2Fk
LT5jdXJyZW50UmVxdWVzdCgpKSkgewogICAgICAgICAgICAgLy8gV2UgbWlnaHQgYWxyZWFkeSBo
YXZlIHVzZWQgZGF0YSBmcm9tIHRoaXMgaW5jb21wbGV0ZSBsb2FkLiBFbnN1cmUgb2xkZXIgdmVy
c2lvbnMgZG9uJ3QgcmVtYWluIGluIHRoZSBjYWNoZSBhZnRlciBjYW5jZWwuCkBAIC02MTIsOCAr
NjE3LDE2IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGYWlsTG9hZGluZyhjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICBpZiAoaXNTeW5jaHJvbm91cygpKSB7CiAgICAg
ICAgIG1fc3luY2hyb25vdXNMb2FkRGF0YS0+ZXJyb3IgPSBlcnJvcjsKICAgICAgICAgc2VuZFJl
cGx5VG9TeW5jaHJvbm91c1JlcXVlc3QoKm1fc3luY2hyb25vdXNMb2FkRGF0YSwgbnVsbHB0cik7
Ci0gICAgfSBlbHNlIGlmIChhdXRvKiBjb25uZWN0aW9uID0gbWVzc2FnZVNlbmRlckNvbm5lY3Rp
b24oKSkKKyAgICB9IGVsc2UgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBtZXNzYWdlU2VuZGVyQ29u
bmVjdGlvbigpKSB7CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgICAgICBpZiAobV9z
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKQorICAgICAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZhaWxTZXJ2aWNlV29ya2VyTG9hZChlcnJvciks
IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkRmFpbFJl
c291cmNlTG9hZChlcnJvciksIG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkpOworI2Vsc2UK
ICAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRp
ZEZhaWxSZXNvdXJjZUxvYWQoZXJyb3IpLCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpKTsK
KyNlbmRpZgorICAgIH0KIAogICAgIGNsZWFudXAoTG9hZFJlc3VsdDo6RmFpbHVyZSk7CiB9CkBA
IC03NDcsNiArNzYwLDEwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpyZXN0YXJ0TmV0
d29ya0xvYWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxCiAKIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qm
JiBuZXdSZXF1ZXN0LCBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKQogewor
ICAgIGlmIChtX3NlcnZpY2VXb3JrZXJGZXRjaFRhc2spIHsKKyAgICAgICAgbV9zZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrLT5jb250aW51ZUZldGNoVGFza1dpdGgoV1RGTW92ZShuZXdSZXF1ZXN0KSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgaWYgKG1fc2hvdWxkUmVzdGFydExvYWQpIHsK
ICAgICAgICAgbV9zaG91bGRSZXN0YXJ0TG9hZCA9IGZhbHNlOwogCkBAIC03OTIsNiArODA5LDEx
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
Ojpjb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpCiB7CisgICAgaWYgKG1fc2VydmljZVdvcmtl
ckZldGNoVGFzaykgeworICAgICAgICBtX3NlcnZpY2VXb3JrZXJGZXRjaFRhc2stPmNvbnRpbnVl
RGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAg
IGlmIChtX2NhY2hlRW50cnlXYWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpIHsK
ICAgICAgICAgc2VuZFJlc3VsdEZvckNhY2hlRW50cnkoV1RGTW92ZShtX2NhY2hlRW50cnlXYWl0
aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpKTsKICAgICAgICAgY2xlYW51cChMb2Fk
UmVzdWx0OjpTdWNjZXNzKTsKQEAgLTExOTYsNiArMTIxOCwzMCBAQCBib29sIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6aXNDcm9zc09yaWdpblByZWZldGNoKCkgY29uc3QKICAgICByZXR1cm4gcmVx
dWVzdC5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlB1cnBvc2UpID09ICJwcmVmZXRj
aCIgJiYgIW1fcGFyYW1ldGVycy5zb3VyY2VPcmlnaW4tPmNhblJlcXVlc3QocmVxdWVzdC51cmwo
KSk7CiB9CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCit2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6c3RhcnRXaXRoU2VydmljZVdvcmtlcihXZWJTV1NlcnZlckNvbm5lY3Rpb24qIHN3
Q29ubmVjdGlvbikKK3sKKyAgICBBU1NFUlQoIW1fc2VydmljZVdvcmtlckZldGNoVGFzayk7Cisg
ICAgbV9zZXJ2aWNlV29ya2VyRmV0Y2hUYXNrID0gc3dDb25uZWN0aW9uID8gc3dDb25uZWN0aW9u
LT5jcmVhdGVGZXRjaFRhc2soKnRoaXMpIDogbnVsbHB0cjsKKyAgICBpZiAobV9zZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9wYXJhbWV0ZXJzLnNl
cnZpY2VXb3JrZXJzTW9kZSA9PSBTZXJ2aWNlV29ya2Vyc01vZGU6Ok9ubHkpIHsKKyAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OlNlcnZpY2VXb3JrZXJEaWROb3RIYW5k
bGUgeyB9LCBpZGVudGlmaWVyKCkpOworICAgICAgICBhYm9ydCgpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIHN0YXJ0KCk7Cit9CisKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpz
ZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlKCkKK3sKKyAgICBtX3NlcnZpY2VXb3JrZXJGZXRjaFRh
c2sgPSBudWxscHRyOworICAgIHN0YXJ0KCk7Cit9CisKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIAogI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IGQ2
NTA3MmI3MmJkNDEzMTQxYTA2YjI4N2M0NTI2OWJlNDJhZjA3NzYuLjcxZjgxYmI0NjI1ZDgzNDVj
NjQ4MDcyN2Y4YTY1NGMzNjdjZjdkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtNTEsNiArNTEsOCBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIGNsYXNzIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogY2xh
c3MgTmV0d29ya0xvYWQ7CiBjbGFzcyBOZXR3b3JrTG9hZENoZWNrZXI7CitjbGFzcyBTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrOworY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOwogCiBuYW1lc3Bh
Y2UgTmV0d29ya0NhY2hlIHsKIGNsYXNzIEVudHJ5OwpAQCAtODgsNyArOTAsOCBAQCBwdWJsaWM6
CiAgICAgUmVzb3VyY2VMb2FkSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4g
bV9wYXJhbWV0ZXJzLmlkZW50aWZpZXI7IH0KICAgICBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlEOyB9CiAgICAg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0
ZXJzLndlYlBhZ2VJRDsgfQotICAgIAorICAgIGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzOyB9CisKICAg
ICBOZXR3b3JrQ2FjaGU6Okdsb2JhbEZyYW1lSUQgZ2xvYmFsRnJhbWVJRCgpIHsgcmV0dXJuIHsg
bV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELCBwYWdlSUQoKSwgZnJhbWVJRCgpIH07IH0KIAog
ICAgIHN0cnVjdCBTeW5jaHJvbm91c0xvYWREYXRhOwpAQCAtMTIyLDYgKzEyNSwxMSBAQCBwdWJs
aWM6CiAKICAgICBib29sIGlzS2VwdEFsaXZlKCkgY29uc3QgeyByZXR1cm4gbV9pc0tlcHRBbGl2
ZTsgfQogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIHZvaWQgc3RhcnRXaXRoU2Vy
dmljZVdvcmtlcihXZWJTV1NlcnZlckNvbm5lY3Rpb24qKTsKKyAgICB2b2lkIHNlcnZpY2VXb3Jr
ZXJEaWROb3RIYW5kbGUoKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcihOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmLCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYsIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5JiYpOwogCkBAIC0yMjAsNiArMjI4
LDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNLZXB0QWxpdmUgeyBmYWxzZSB9OwogCiAgICAg
T3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gbV9uZXR3b3JrQWN0aXZpdHlUcmFja2Vy
OworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Vydmlj
ZVdvcmtlckZldGNoVGFzaz4gbV9zZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOworI2VuZGlmCiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrLmNwcAppbmRleCA4MzRiNTY5ZTQyMjc1ZjEzNDg3ZWM3N2RlYTE1ZTBiYzNmMGFhMjVmLi4y
NTYwMjg3ZTlhZjIzZmViNWZmMDE1NDQ5NWE4ZjZkNDEyNmMzMWVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNo
VGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCkBAIC0zMiwxMCArMzIsMTQgQEAKICNpbmNsdWRl
ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRm9ybURhdGFSZWZlcmVuY2UuaCIKICNpbmNs
dWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtSZXNv
dXJjZUxvYWRlci5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKICNp
bmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKLSNpbmNsdWRlICJXZWJTV1NlcnZlckNv
bm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmgiCisjaW5j
bHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUg
IldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ3Jv
c3NPcmlnaW5BY2Nlc3NDb250cm9sLmg+CiAKICNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYobV9zZXNzaW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdB
bGxvd2VkKCksIFNlcnZpY2VXb3JrZXIsICIlcCAtIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OiIg
Zm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBSRUxFQVNFX0xPR19FUlJPUl9JRl9B
TExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUl9JRihtX3Nlc3Npb25JRC5pc0Fsd2F5
c09uTG9nZ2luZ0FsbG93ZWQoKSwgU2VydmljZVdvcmtlciwgIiVwIC0gU2VydmljZVdvcmtlckZl
dGNoVGFzazo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCkBAIC00NCw4MCArNDgsMTM5IEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotU2Vydmlj
ZVdvcmtlckZldGNoVGFzazo6U2VydmljZVdvcmtlckZldGNoVGFzayhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFdlYlNXU2VydmVyQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uJiBjb250ZXh0Q29ubmVjdGlvbiwgRmV0Y2hJZGVudGlmaWVyIGZl
dGNoSWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50
aWZpZXIsIFNlY29uZHMgdGltZW91dCkKK1NlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2soUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXImIGxvYWRlciwgU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50
aWZpZXIpCiAgICAgOiBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCi0gICAgLCBtX2Nvbm5lY3Rpb24o
bWFrZVdlYWtQdHIoY29ubmVjdGlvbikpCi0gICAgLCBtX2NvbnRleHRDb25uZWN0aW9uKGNvbnRl
eHRDb25uZWN0aW9uKQotICAgICwgbV9pZGVudGlmaWVyIHsgY29ubmVjdGlvbi5pZGVudGlmaWVy
KCksIGZldGNoSWRlbnRpZmllciB9CisgICAgLCBtX2xvYWRlcihsb2FkZXIpCisgICAgLCBtX2Zl
dGNoSWRlbnRpZmllcihXZWJDb3JlOjpGZXRjaElkZW50aWZpZXI6OmdlbmVyYXRlKCkpCisgICAg
LCBtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
KQogICAgICwgbV9zZXJ2aWNlV29ya2VySWRlbnRpZmllcihzZXJ2aWNlV29ya2VySWRlbnRpZmll
cikKLSAgICAsIG1fdGltZW91dCh0aW1lb3V0KQogICAgICwgbV90aW1lb3V0VGltZXIoKnRoaXMs
ICZTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjp0aW1lb3V0VGltZXJGaXJlZCkKIHsKLSAgICBtX3Rp
bWVvdXRUaW1lci5zdGFydE9uZVNob3QobV90aW1lb3V0KTsKKyAgICBtX3RpbWVvdXRUaW1lci5z
dGFydE9uZVNob3QobG9hZGVyLmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5uZXR3b3JrUHJvY2Vz
cygpLnNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXQoKSk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtl
ckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCitTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjp+U2VydmljZVdvcmtlckZl
dGNoVGFzaygpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlZGly
ZWN0UmVzcG9uc2U6ICVzIiwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci5sb2dnaW5nU3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgbV90aW1lb3V0VGltZXIuc3RvcCgpOworICAgIGlm
IChtX3NlcnZpY2VXb3JrZXJDb25uZWN0aW9uKQorICAgICAgICBtX3NlcnZpY2VXb3JrZXJDb25u
ZWN0aW9uLT51bnJlZ2lzdGVyRmV0Y2goKnRoaXMpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBN
ZXNzYWdlPiBib29sIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnNlbmRUb1NlcnZpY2VXb3JrZXIo
TWVzc2FnZSYmIG1lc3NhZ2UpCit7CisgICAgcmV0dXJuIG1fc2VydmljZVdvcmtlckNvbm5lY3Rp
b24gPyBtX3NlcnZpY2VXb3JrZXJDb25uZWN0aW9uLT5pcGNDb25uZWN0aW9uKCkuc2VuZChzdGQ6
OmZvcndhcmQ8TWVzc2FnZT4obWVzc2FnZSksIDApIDogZmFsc2U7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIE1lc3NhZ2U+IGJvb2wgU2VydmljZVdvcmtlckZldGNoVGFzazo6c2VuZFRvQ2xpZW50
KE1lc3NhZ2UmJiBtZXNzYWdlKQoreworICAgIHJldHVybiBtX2xvYWRlci5jb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKCkuY29ubmVjdGlvbigpLnNlbmQoc3RkOjpmb3J3YXJkPE1lc3NhZ2U+KG1lc3Nh
Z2UpLCBtX2xvYWRlci5pZGVudGlmaWVyKCkpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJGZXRj
aFRhc2s6OnN0YXJ0KFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgc2VydmljZVdvcmtl
ckNvbm5lY3Rpb24pCit7CisgICAgbV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbiA9IG1ha2VXZWFr
UHRyKHNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKTsKKyAgICBzZXJ2aWNlV29ya2VyQ29ubmVjdGlv
bi5yZWdpc3RlckZldGNoKCp0aGlzKTsKKworICAgIHN0YXJ0RmV0Y2goUmVzb3VyY2VSZXF1ZXN0
IHsgbV9sb2FkZXIub3JpZ2luYWxSZXF1ZXN0KCkgfSwgc2VydmljZVdvcmtlckNvbm5lY3Rpb24p
OworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnN0YXJ0RmV0Y2goUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBzZXJ2aWNl
V29ya2VyQ29ubmVjdGlvbikKK3sKKyAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gV1RGTW92ZShyZXF1
ZXN0KTsKKworICAgIGF1dG8mIG9wdGlvbnMgPSBtX2xvYWRlci5wYXJhbWV0ZXJzKCkub3B0aW9u
czsKKyAgICBhdXRvIHJlZmVycmVyID0gbV9jdXJyZW50UmVxdWVzdC5odHRwUmVmZXJyZXIoKTsK
KworICAgIC8vIFdlIGFyZSBpbnRlcmNlcHRpbmcgZmV0Y2ggY2FsbHMgYWZ0ZXIgZ29pbmcgdGhy
b3VnaCB0aGUgSFRUUCBsYXllciwgd2hpY2ggbWF5IGFkZCBzb21lIHNwZWNpZmljIGhlYWRlcnMu
CisgICAgY2xlYW5IVFRQUmVxdWVzdEhlYWRlcnNGb3JBY2Nlc3NDb250cm9sKG1fY3VycmVudFJl
cXVlc3QsIG1fbG9hZGVyLnBhcmFtZXRlcnMoKS5odHRwSGVhZGVyc1RvS2VlcCk7CisKKyAgICBi
b29sIGlzU2VudCA9IHNlbmRUb1NlcnZpY2VXb3JrZXIoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uOjpTdGFydEZldGNoIHsgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciwgbV9zZXJ2aWNlV29ya2VySWRlbnRpZmllciwgbV9mZXRjaElkZW50aWZpZXIsIG1fY3VycmVu
dFJlcXVlc3QsIG9wdGlvbnMsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgeyBtX2N1cnJlbnRSZXF1
ZXN0Lmh0dHBCb2R5KCkgfSwgcmVmZXJyZXIgfSk7CisgICAgQVNTRVJUX1VOVVNFRChpc1NlbnQs
IGlzU2VudCk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJl
ZGlyZWN0UmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKQoreworICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlOiAlcyIsIG1fZmV0
Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBtX3dhc0hh
bmRsZWQgPSB0cnVlOwotICAgIGlmIChtX2Nvbm5lY3Rpb24pCi0gICAgICAgIG1fY29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRSZWNlaXZlUmVk
aXJlY3RSZXNwb25zZSB7IHJlc3BvbnNlIH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIp
OworCisgICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6U2Vy
dmljZVdvcmtlcik7CisgICAgYXV0byBuZXdSZXF1ZXN0ID0gbV9jdXJyZW50UmVxdWVzdC5yZWRp
cmVjdGVkUmVxdWVzdChyZXNwb25zZSwgbV9sb2FkZXIucGFyYW1ldGVycygpLnNob3VsZENsZWFy
UmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QpOworCisgICAgc2VuZFRvQ2xpZW50KE1lc3Nh
Z2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6V2lsbFNlbmRSZXF1ZXN0IHsgbmV3UmVxdWVzdCwgcmVz
cG9uc2UgfSk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBib29sIG5lZWRzQ29udGlu
dWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQordm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
OjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBib29sIG5l
ZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQogewotICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogJXMiLCBtX2lkZW50aWZpZXIuZmV0Y2hJ
ZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6ICVzIiwgbV9mZXRjaElkZW50aWZpZXIu
bG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgIG1fdGltZW91dFRpbWVyLnN0b3Ao
KTsKICAgICBtX3dhc0hhbmRsZWQgPSB0cnVlOwotICAgIGlmIChtX2Nvbm5lY3Rpb24pCi0gICAg
ICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNo
OjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSwgbmVlZHNDb250aW51ZURpZFJlY2VpdmVS
ZXNwb25zZU1lc3NhZ2UgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllcik7CisgICAgcmVz
cG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6U2VydmljZVdvcmtlcik7
CisKKyAgICBzZW5kVG9DbGllbnQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNl
aXZlUmVzcG9uc2UgeyByZXNwb25zZSwgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1l
c3NhZ2UgfSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZURh
dGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVu
Z3RoKQogewogICAgIEFTU0VSVCghbV90aW1lb3V0VGltZXIuaXNBY3RpdmUoKSk7Ci0gICAgaWYg
KG1fY29ubmVjdGlvbikKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2
aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZFJlY2VpdmVEYXRhIHsgZGF0YSwgZW5jb2RlZERhdGFM
ZW5ndGggfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllcik7CisgICAgc2VuZFRvQ2xpZW50
KE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZURhdGEgeyBJUEM6OlNoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2UgeyBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkgfSwgZW5jb2Rl
ZERhdGFMZW5ndGggfSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVj
ZWl2ZUZvcm1EYXRhKGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmIGZvcm1EYXRhKQogewog
ICAgIEFTU0VSVCghbV90aW1lb3V0VGltZXIuaXNBY3RpdmUoKSk7Ci0gICAgaWYgKG1fY29ubmVj
dGlvbikKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2Vy
Q2xpZW50RmV0Y2g6OkRpZFJlY2VpdmVGb3JtRGF0YSB7IGZvcm1EYXRhIH0sIG1faWRlbnRpZmll
ci5mZXRjaElkZW50aWZpZXIpOworICAgIC8vIEZJWE1FOiBBbGxvdyBXZWJSZXNvdXJjZUxvYWRl
ciB0byByZWNlaXZlIGZvcm0gZGF0YS4KIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
OjpkaWRGaW5pc2goKQogewogICAgIEFTU0VSVCghbV90aW1lb3V0VGltZXIuaXNBY3RpdmUoKSk7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmluaXNoRmV0Y2g6IGZldGNoSWRlbnRp
ZmllcjogJXMiLCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGaW5pc2hGZXRj
aDogZmV0Y2hJZGVudGlmaWVyOiAlcyIsIG1fZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKICAgICBtX3RpbWVvdXRUaW1lci5zdG9wKCk7Ci0gICAgaWYgKG1f
Y29ubmVjdGlvbikKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNl
V29ya2VyQ2xpZW50RmV0Y2g6OkRpZEZpbmlzaCB7IH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50
aWZpZXIpOworICAgIHNlbmRUb0NsaWVudChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRp
ZEZpbmlzaFJlc291cmNlTG9hZCB7IHsgfSB9KTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrOjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIFJFTEVB
U0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoImRpZEZhaWxGZXRjaDogZmV0Y2hJZGVudGlmaWVyOiAl
cyIsIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOwogICAgIG1fdGltZW91dFRpbWVyLnN0b3AoKTsKLSAgICBpZiAobV9jb25uZWN0aW9u
KQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGll
bnRGZXRjaDo6RGlkRmFpbCB7IGVycm9yIH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIp
OworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoImRpZEZhaWxGZXRjaDogZmV0Y2hJ
ZGVudGlmaWVyOiAlcyIsIG1fZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKKyAgICBtX2xvYWRlci5kaWRGYWlsTG9hZGluZyhlcnJvcik7CiB9CiAKIHZvaWQg
U2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkTm90SGFuZGxlKCkKIHsKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJkaWROb3RIYW5kbGVGZXRjaDogZmV0Y2hJZGVudGlmaWVyOiAlcyIsIG1f
aWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZE5vdEhhbmRsZUZldGNoOiBmZXRjaElk
ZW50aWZpZXI6ICVzIiwgbV9mZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOwogICAgIG1fdGltZW91dFRpbWVyLnN0b3AoKTsKLSAgICBpZiAobV9jb25uZWN0aW9u
KQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGll
bnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllcik7
CisgICAgaWYgKG1fbG9hZGVyLnBhcmFtZXRlcnMoKS5zZXJ2aWNlV29ya2Vyc01vZGUgPT0gU2Vy
dmljZVdvcmtlcnNNb2RlOjpPbmx5KSB7CisgICAgICAgIHNlbmRUb0NsaWVudChNZXNzYWdlczo6
V2ViUmVzb3VyY2VMb2FkZXI6OlNlcnZpY2VXb3JrZXJEaWROb3RIYW5kbGUgeyB9KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBtX2xvYWRlci5zZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxl
KCk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6Y2FuY2VsRnJvbUNsaWVudCgp
Cit7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY2FuY2VsRnJvbUNsaWVudDogZmV0Y2hJ
ZGVudGlmaWVyOiAlcyIsIG1fZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKKyAgICBzZW5kVG9TZXJ2aWNlV29ya2VyKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbjo6Q2FuY2VsRmV0Y2ggeyBtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyLCBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBtX2ZldGNoSWRlbnRpZmllciB9KTsKK30K
Kwordm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpjb250aW51ZURpZFJlY2VpdmVGZXRjaFJl
c3BvbnNlKCkKK3sKKyAgICBzZW5kVG9TZXJ2aWNlV29ya2VyKE1lc3NhZ2VzOjpXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6Q29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSB7IG1f
c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIG1fc2VydmljZVdvcmtlcklkZW50aWZpZXIsIG1f
ZmV0Y2hJZGVudGlmaWVyIH0pOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmNv
bnRpbnVlRmV0Y2hUYXNrV2l0aChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQoreworICAgIGlm
ICghbV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbikgeworICAgICAgICBtX2xvYWRlci5zZXJ2aWNl
V29ya2VyRGlkTm90SGFuZGxlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgc3RhcnRG
ZXRjaChXVEZNb3ZlKHJlcXVlc3QpLCAqbV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbik7CiB9CiAK
IHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6dGltZW91dFRpbWVyRmlyZWQoKQogewotICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInRpbWVvdXRUaW1lckZpcmVkOiBmZXRjaElkZW50aWZp
ZXI6ICVzIiwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7Ci0gICAgZGlkTm90SGFuZGxlKCk7Ci0gICAgbV9jb250ZXh0Q29ubmVjdGlv
bi5mZXRjaFRhc2tUaW1lZE91dCgqdGhpcyk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
dGltZW91dFRpbWVyRmlyZWQ6IGZldGNoSWRlbnRpZmllcjogJXMiLCBtX2ZldGNoSWRlbnRpZmll
ci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgaWYgKG1fc2VydmljZVdvcmtl
ckNvbm5lY3Rpb24pCisgICAgICAgIG1fc2VydmljZVdvcmtlckNvbm5lY3Rpb24tPmZldGNoVGFz
a1RpbWVkT3V0KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCkpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCmluZGV4IGQ4Yjlk
NmYyNTY2MzgzNjc3MmYyOWI5ZjliOTllMGEwZTI2Mzk0NWMuLmJkZmQ1ZTY5MzU5OGRjODAzZmVm
Mzg2NGYyNjhlZmIxZDY1YWZmMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRh
c2suaApAQCAtMjgsMTIgKzI4LDE1IEBACiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCiAj
aW5jbHVkZSA8V2ViQ29yZS9GZXRjaElkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jl
c291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4K
KyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBS
ZXNvdXJjZUVycm9yOworY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNw
b25zZTsKIH0KIApAQCAtNDYsODIgKzQ5LDU5IEBAIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOworY2xh
c3MgTmV0d29ya1Jlc291cmNlTG9hZGVyOwogY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOwogCi1jbGFzcyBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrIHsKK2NsYXNzIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjsKK2NsYXNzIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjsKKwor
Y2xhc3MgU2VydmljZVdvcmtlckZldGNoVGFzayA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6Ci0gICAgU2VydmljZVdvcmtlckZldGNoVGFzayhQQUw6OlNlc3Npb25JRCwgV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uJiwgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiwgV2ViQ29yZTo6
RmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2Vjb25k
cyB0aW1lb3V0KTsKKyAgICBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKFBBTDo6U2Vzc2lvbklELCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXImLCBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CisgICAgflNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2soKTsKIAotICAgIHZvaWQgZGlkTm90SGFuZGxlKCk7CisgICAgdm9pZCBzdGFy
dChXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mKTsKKyAgICB2b2lkIGNhbmNlbEZyb21D
bGllbnQoKTsKICAgICB2b2lkIGZhaWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJy
b3IpIHsgZGlkRmFpbChlcnJvcik7IH0KICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogCi0gICAgc3RydWN0IElkZW50aWZpZXIgewot
ICAgICAgICBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIGNvbm5lY3Rpb25J
ZGVudGlmaWVyOwotICAgICAgICBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlm
aWVyOwotICAgICAgICAKLSAgICAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0Ci0gICAgICAgIHsK
LSAgICAgICAgICAgIHVuc2lnbmVkIGhhc2hlc1syXTsKLSAgICAgICAgICAgIGhhc2hlc1swXSA9
IFdURjo6aW50SGFzaChjb25uZWN0aW9uSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKLSAgICAgICAg
ICAgIGhhc2hlc1sxXSA9IFdURjo6aW50SGFzaChmZXRjaElkZW50aWZpZXIudG9VSW50NjQoKSk7
Ci0gICAgICAgICAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5KGhhc2hlcywgc2l6
ZW9mKGhhc2hlcykpOwotICAgICAgICB9Ci0gICAgfTsKLQotICAgIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KLSAgICBjb25zdCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciYgc2VydmljZVdvcmtlcklkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyOyB9CisgICAgdm9pZCBj
b250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKCk7CisgICAgdm9pZCBjb250aW51ZUZldGNo
VGFza1dpdGgoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOworCisgICAgV2ViQ29yZTo6RmV0
Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fZmV0Y2hJZGVu
dGlmaWVyOyB9CisgICAgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdv
cmtlcklkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVy
OyB9CisKKyAgICB2b2lkIGRpZE5vdEhhbmRsZSgpOworCiAgICAgYm9vbCB3YXNIYW5kbGVkKCkg
Y29uc3QgeyByZXR1cm4gbV93YXNIYW5kbGVkOyB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBkaWRS
ZWNlaXZlUmVkaXJlY3RSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7
Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpOworICAg
IHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpOwogICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgaW50NjRfdCBl
bmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlRm9ybURhdGEoY29uc3QgSVBD
OjpGb3JtRGF0YVJlZmVyZW5jZSYpOwogICAgIHZvaWQgZGlkRmluaXNoKCk7CiAgICAgdm9pZCBk
aWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKKworICAgIHZvaWQgc3RhcnRG
ZXRjaChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uJik7CisKICAgICB2b2lkIHRpbWVvdXRUaW1lckZpcmVkKCk7CiAKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBNZXNzYWdlPiBib29sIHNlbmRUb1NlcnZpY2VXb3JrZXIoTWVzc2FnZSYmKTsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNZXNzYWdlPiBib29sIHNlbmRUb0NsaWVudChNZXNzYWdl
JiYpOworCiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7Ci0gICAgV2Vha1B0cjxXZWJT
V1NlcnZlckNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKLSAgICBXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24mIG1fY29udGV4dENvbm5lY3Rpb247Ci0gICAgSWRlbnRpZmllciBtX2lkZW50
aWZpZXI7CisgICAgTmV0d29ya1Jlc291cmNlTG9hZGVyJiBtX2xvYWRlcjsKKyAgICBXZWFrUHRy
PFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4gbV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlv
bjsKKyAgICBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIgbV9mZXRjaElkZW50aWZpZXI7CisgICAg
V2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBtX3NlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyOwogICAgIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIG1fc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXI7Ci0gICAgU2Vjb25kcyBtX3RpbWVvdXQ7CisgICAgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0IG1fY3VycmVudFJlcXVlc3Q7CiAgICAgV2ViQ29yZTo6VGltZXIgbV90
aW1lb3V0VGltZXI7CiAgICAgYm9vbCBtX3dhc0hhbmRsZWQgeyBmYWxzZSB9OwogfTsKIAotaW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpJZGVudGlm
aWVyJiBhLCBjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpJZGVudGlmaWVyJiBiKQotewot
ICAgIHJldHVybiBhLmNvbm5lY3Rpb25JZGVudGlmaWVyID09IGIuY29ubmVjdGlvbklkZW50aWZp
ZXIgJiYgIGEuZmV0Y2hJZGVudGlmaWVyID09IGIuZmV0Y2hJZGVudGlmaWVyOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJLaXQKLQotCi1uYW1lc3BhY2UgV1RGIHsKLQotc3RydWN0IFNlcnZpY2VX
b3JrZXJGZXRjaFRhc2tJZGVudGlmaWVySGFzaCB7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGhhc2go
Y29uc3QgV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpJZGVudGlmaWVyJiBrZXkpIHsg
cmV0dXJuIGtleS5oYXNoKCk7IH0KLSAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBXZWJLaXQ6
OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OklkZW50aWZpZXImIGEsIGNvbnN0IFdlYktpdDo6U2Vy
dmljZVdvcmtlckZldGNoVGFzazo6SWRlbnRpZmllciYgYikgeyByZXR1cm4gYSA9PSBiOyB9Ci0g
ICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVl
OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJLaXQ6OlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OklkZW50aWZpZXI+IDogR2VuZXJpY0hhc2hUcmFpdHM8V2ViS2l0OjpTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrOjpJZGVudGlmaWVyPiB7Ci0gICAgc3RhdGljIFdlYktpdDo6U2Vy
dmljZVdvcmtlckZldGNoVGFzazo6SWRlbnRpZmllciBlbXB0eVZhbHVlKCkgeyByZXR1cm4geyB9
OyB9Ci0gICAgCi0gICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFdlYktpdDo6
U2VydmljZVdvcmtlckZldGNoVGFzazo6SWRlbnRpZmllciYgc2xvdCkgeyBzbG90LmNvbm5lY3Rp
b25JZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8V2ViQ29yZTo6U1dTZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllclR5cGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgo
KSk7IH0KLSAgICAKLSAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBXZWJLaXQ6
OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OklkZW50aWZpZXImIHNsb3QpIHsgcmV0dXJuIHNsb3Qu
Y29ubmVjdGlvbklkZW50aWZpZXIudG9VSW50NjQoKSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVp
bnQ2NF90Pjo6bWF4KCk7IH0KLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFdl
YktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6SWRlbnRpZmllcj4gewotICAgIHVzaW5nIEhh
c2ggPSBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrSWRlbnRpZmllckhhc2g7Ci19OwotCiB9CiAKICNl
bmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNv
bm5lY3Rpb24uY3BwCmluZGV4IDc5ZTMyNjVjZWQxZWEyNGU4NzViZTUyMGI3OTMyZTg1YjY0MDMx
M2YuLmRkOWVjYjRjMWMyOGQyMjUyMDQyYjUyOTcwOTU5NGU4YzE4MTQ4MWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNv
bm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0zMywxNiArMzMsMTggQEAKICNpbmNs
dWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCi0jaW5jbHVkZSAiU2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VM
b2FkZXIuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJX
ZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAi
V2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNXQ2xpZW50Q29ubmVj
dGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25N
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9Eb2N1bWVudElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0V4Y2VwdGlvbkRh
dGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1dTZXJ2ZXJS
ZWdpc3RyYXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CkBAIC0x
MjYsMTggKzEyOCw4IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjp1cGRhdGVXb3JrZXJT
dGF0ZUluQ2xpZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHdvCiAgICAgc2VuZChNZXNzYWdl
czo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpVcGRhdGVXb3JrZXJTdGF0ZSh3b3JrZXIsIHN0YXRl
KSk7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpjYW5jZWxGZXRjaChTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRl
bnRpZmllciwgRmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllcikKK3ZvaWQgV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uOjpjYW5jZWxGZXRjaChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRp
ZmllciwgRmV0Y2hJZGVudGlmaWVyKQogewotICAgIFNXU0VSVkVSQ09OTkVDVElPTl9SRUxFQVNF
X0xPR19JRl9BTExPV0VEKCJjYW5jZWxGZXRjaDogJXMiLCBmZXRjaElkZW50aWZpZXIubG9nZ2lu
Z1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIGF1dG8qIHdvcmtlciA9IHNlcnZlcigpLmFj
dGl2ZVdvcmtlckZyb21SZWdpc3RyYXRpb25JRChzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRl
bnRpZmllcik7Ci0gICAgaWYgKCF3b3JrZXIgfHwgIXdvcmtlci0+aXNSdW5uaW5nKCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGF1dG8gc2VydmljZVdvcmtlcklkZW50aWZpZXIgPSB3b3JrZXIt
PmlkZW50aWZpZXIoKTsKLSAgICBzZXJ2ZXIoKS5ydW5TZXJ2aWNlV29ya2VySWZOZWNlc3Nhcnko
c2VydmljZVdvcmtlcklkZW50aWZpZXIsIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCB0
aGlzLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyXShhdXRvKiBjb250
ZXh0Q29ubmVjdGlvbikgbXV0YWJsZSB7Ci0gICAgICAgIGlmICh3ZWFrVGhpcyAmJiBjb250ZXh0
Q29ubmVjdGlvbikKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PFdlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbiY+KCpjb250ZXh0Q29ubmVjdGlvbikuY2FuY2VsRmV0Y2godGhpcy0+aWRlbnRp
ZmllcigpLCBmZXRjaElkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKLSAgICB9
KTsKIH0KIAogdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmNvbnRpbnVlRGlkUmVjZWl2ZUZl
dGNoUmVzcG9uc2UoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgc2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIEZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZp
ZXIpCkBAIC0xNTMsNTkgKzE0NSw4OSBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y29u
dGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZShTZXJ2aWNlV29ya2VyUmVnaXN0cgogICAgIH0p
OwogfQogCi12b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaChTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRp
ZmllciwgRmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgRmV0Y2hPcHRpb25zJiYgb3B0aW9ucywgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYm
IGZvcm1EYXRhLCBTdHJpbmcmJiByZWZlcnJlcikKK3N0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrPiBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmNyZWF0ZUZldGNoVGFzayhOZXR3
b3JrUmVzb3VyY2VMb2FkZXImIGxvYWRlcikKIHsKLSAgICBhdXRvKiB3b3JrZXIgPSBzZXJ2ZXIo
KS5hY3RpdmVXb3JrZXJGcm9tUmVnaXN0cmF0aW9uSUQoc2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bklkZW50aWZpZXIpOworICAgIGlmICghbG9hZGVyLnBhcmFtZXRlcnMoKS5zZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBp
ZiAobG9hZGVyLnBhcmFtZXRlcnMoKS5zZXJ2aWNlV29ya2Vyc01vZGUgPT0gU2VydmljZVdvcmtl
cnNNb2RlOjpOb25lKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmIChpc1BvdGVu
dGlhbE5hdmlnYXRpb25PclN1YnJlc291cmNlUmVxdWVzdChsb2FkZXIucGFyYW1ldGVycygpLm9w
dGlvbnMuZGVzdGluYXRpb24pKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmICgh
c2VydmVyKCkuY2FuSGFuZGxlU2NoZW1lKGxvYWRlci5vcmlnaW5hbFJlcXVlc3QoKS51cmwoKS5w
cm90b2NvbCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgYXV0byogd29ya2VyID0gc2VydmVyKCkuYWN0aXZlV29ya2VyRnJvbVJlZ2lz
dHJhdGlvbklEKCpsb2FkZXIucGFyYW1ldGVycygpLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyKTsKICAgICBpZiAoIXdvcmtlcikgewotICAgICAgICBTV1NFUlZFUkNPTk5FQ1RJ
T05fUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgic3RhcnRGZXRjaDogZmV0Y2hJZGVudGlm
aWVyOiAlcyAtPiBEaWROb3RIYW5kbGUgYmVjYXVzZSBubyBhY3RpdmUgd29ya2VyIiwgZmV0Y2hJ
ZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgbV9jb250
ZW50Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpE
aWROb3RIYW5kbGUgeyB9LCBmZXRjaElkZW50aWZpZXIpOwotICAgICAgICByZXR1cm47CisgICAg
ICAgIFNXU0VSVkVSQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJzdGFy
dEZldGNoOiBEaWROb3RIYW5kbGUgYmVjYXVzZSBubyBhY3RpdmUgd29ya2VyICVzIiwgbG9hZGVy
LnBhcmFtZXRlcnMoKS5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllci0+bG9nZ2lu
Z1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
Ci0gICAgYXV0byBzZXJ2aWNlV29ya2VySWRlbnRpZmllciA9IHdvcmtlci0+aWRlbnRpZmllcigp
OwogCi0gICAgYXV0byBydW5TZXJ2ZXJXb3JrZXJBbmRTdGFydEZldGNoID0gW3dlYWtUaGlzID0g
bWFrZVdlYWtQdHIodGhpcyksIHRoaXMsIGZldGNoSWRlbnRpZmllciwgc2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zID0gV1RGTW92ZShv
cHRpb25zKSwgZm9ybURhdGEgPSBXVEZNb3ZlKGZvcm1EYXRhKSwgcmVmZXJyZXIgPSBXVEZNb3Zl
KHJlZmVycmVyKV0oYm9vbCBzdWNjZXNzKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCF3ZWFrVGhp
cykKKyAgICBpZiAod29ya2VyLT5zaG91bGRTa2lwRmV0Y2hFdmVudCgpKSB7CisgICAgICAgIGF1
dG8qIHJlZ2lzdHJhdGlvbiA9IHNlcnZlcigpLmdldFJlZ2lzdHJhdGlvbih3b3JrZXItPnJlZ2lz
dHJhdGlvbktleSgpKTsKKyAgICAgICAgaWYgKHJlZ2lzdHJhdGlvbiAmJiByZWdpc3RyYXRpb24t
PnNob3VsZFNvZnRVcGRhdGUobG9hZGVyLnBhcmFtZXRlcnMoKS5vcHRpb25zKSkKKyAgICAgICAg
ICAgIHJlZ2lzdHJhdGlvbi0+c29mdFVwZGF0ZSgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9CisKKyAgICBhdXRvIHRhc2sgPSBtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s+KHNlc3Npb25JRCgpLCBsb2FkZXIsIGlkZW50aWZpZXIoKSwgd29ya2VyLT5pZGVudGlmaWVy
KCkpOworICAgIHN0YXJ0RmV0Y2goKnRhc2ssICp3b3JrZXIpOworICAgIHJldHVybiB0YXNrOwor
fQorCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaChTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrJiB0YXNrLCBTV1NlcnZlcldvcmtlciYgd29ya2VyKQoreworICAgIGF1dG8gcnVu
U2VydmVyV29ya2VyQW5kU3RhcnRGZXRjaCA9IFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMp
LCB0aGlzLCB0YXNrID0gbWFrZVdlYWtQdHIodGFzayldKGJvb2wgc3VjY2VzcykgbXV0YWJsZSB7
CisgICAgICAgIGlmICghdGFzaykKICAgICAgICAgICAgIHJldHVybjsKIAorICAgICAgICBpZiAo
IXdlYWtUaGlzKSB7CisgICAgICAgICAgICB0YXNrLT5kaWROb3RIYW5kbGUoKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIGlmICghc3VjY2VzcykgewotICAgICAg
ICAgICAgU1dTRVJWRVJDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoInN0
YXJ0RmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMgRGlkTm90SGFuZGxlIGJlY2F1c2Ugd29ya2Vy
IGRpZCBub3QgYmVjb21lIGFjdGl2YXRlZCIsIGZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICBtX2NvbnRlbnRDb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZE5vdEhhbmRsZSB7IH0sIGZl
dGNoSWRlbnRpZmllcik7CisgICAgICAgICAgICBTV1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFTRV9M
T0dfRVJST1JfSUZfQUxMT1dFRCgic3RhcnRGZXRjaDogZmV0Y2hJZGVudGlmaWVyOiAlcyBEaWRO
b3RIYW5kbGUgYmVjYXVzZSB3b3JrZXIgZGlkIG5vdCBiZWNvbWUgYWN0aXZhdGVkIiwgdGFzay0+
ZmV0Y2hJZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAg
ICAgICAgdGFzay0+ZGlkTm90SGFuZGxlKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAotICAgICAgICBhdXRvKiB3b3JrZXIgPSBzZXJ2ZXIoKS53b3JrZXJCeUlEKHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKTsKKyAgICAgICAgYXV0byogd29ya2VyID0gc2VydmVyKCkud29ya2Vy
QnlJRCh0YXNrLT5zZXJ2aWNlV29ya2VySWRlbnRpZmllcigpKTsKICAgICAgICAgaWYgKCF3b3Jr
ZXIgfHwgd29ya2VyLT5oYXNUaW1lZE91dEFueUZldGNoVGFza3MoKSkgewotICAgICAgICAgICAg
bV9jb250ZW50Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZl
dGNoOjpEaWROb3RIYW5kbGUgeyB9LCBmZXRjaElkZW50aWZpZXIpOworICAgICAgICAgICAgdGFz
ay0+ZGlkTm90SGFuZGxlKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAg
ICAgICBzZXJ2ZXIoKS5ydW5TZXJ2aWNlV29ya2VySWZOZWNlc3Nhcnkoc2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCB0aGlzLCBmZXRjaElkZW50
aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0
KSwgb3B0aW9ucyA9IFdURk1vdmUob3B0aW9ucyksIGZvcm1EYXRhID0gV1RGTW92ZShmb3JtRGF0
YSksIHJlZmVycmVyID0gV1RGTW92ZShyZWZlcnJlciksIHNob3VsZFNraXBGZXRjaEV2ZW50ID0g
d29ya2VyLT5zaG91bGRTa2lwRmV0Y2hFdmVudCgpXShhdXRvKiBjb250ZXh0Q29ubmVjdGlvbikg
ewotICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgaWYgKCF3b3JrZXItPmNvbnRl
eHRDb25uZWN0aW9uKCkpCisgICAgICAgICAgICBzZXJ2ZXIoKS5jcmVhdGVDb250ZXh0Q29ubmVj
dGlvbih3b3JrZXItPnJlZ2lzdHJhYmxlRG9tYWluKCkpOworCisgICAgICAgIHNlcnZlcigpLnJ1
blNlcnZpY2VXb3JrZXJJZk5lY2Vzc2FyeSh0YXNrLT5zZXJ2aWNlV29ya2VySWRlbnRpZmllcigp
LCBbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgdGhpcywgdGFzayA9IFdURk1vdmUodGFz
ayldKGF1dG8qIGNvbnRleHRDb25uZWN0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICgh
dGFzaykKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IGlmICghd2Vha1RoaXMpIHsKKyAgICAgICAgICAgICAgICB0YXNrLT5kaWROb3RIYW5kbGUoKTsK
ICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlm
IChjb250ZXh0Q29ubmVjdGlvbikgewotICAgICAgICAgICAgICAgIFNXU0VSVkVSQ09OTkVDVElP
Tl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydEZldGNoOiBTdGFydGluZyBmZXRjaCAlcyB2
aWEgc2VydmljZSB3b3JrZXIgJXMiLCBmZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0
ZjgoKS5kYXRhKCksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKLSAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24mPigqY29udGV4dENvbm5lY3Rpb24pLnN0YXJ0RmV0Y2goc2Vzc2lvbklE
KCksICp0aGlzLCBmZXRjaElkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCByZXF1
ZXN0LCBvcHRpb25zLCBmb3JtRGF0YSwgcmVmZXJyZXIpOwotICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICBTV1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1JfSUZf
QUxMT1dFRCgic3RhcnRGZXRjaDogZmV0Y2hJZGVudGlmaWVyOiAlcyBEaWROb3RIYW5kbGUgYmVj
YXVzZSBmYWlsZWQgdG8gcnVuIHNlcnZpY2Ugd29ya2VyLCBvciBzZXJ2aWNlIHdvcmtlciBoYXMg
aGFkIHRpbWVkIG91dCBmZXRjaCB0YXNrcyIsIGZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICAgICAgbV9jb250ZW50Q29ubmVjdGlvbi0+
c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWROb3RIYW5kbGUgeyB9
LCBmZXRjaElkZW50aWZpZXIpOworICAgICAgICAgICAgaWYgKCFjb250ZXh0Q29ubmVjdGlvbikg
eworICAgICAgICAgICAgICAgIFNXU0VSVkVSQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUl9J
Rl9BTExPV0VEKCJzdGFydEZldGNoOiBmZXRjaElkZW50aWZpZXI6ICVzIERpZE5vdEhhbmRsZSBi
ZWNhdXNlIGZhaWxlZCB0byBydW4gc2VydmljZSB3b3JrZXIiLCB0YXNrLT5mZXRjaElkZW50aWZp
ZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgdGFz
ay0+ZGlkTm90SGFuZGxlKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
fQorICAgICAgICAgICAgU1dTRVJWRVJDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
InN0YXJ0RmV0Y2g6IFN0YXJ0aW5nIGZldGNoICVzIHZpYSBzZXJ2aWNlIHdvcmtlciAlcyIsIHRh
c2stPmZldGNoSWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB0YXNr
LT5zZXJ2aWNlV29ya2VySWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
biY+KCpjb250ZXh0Q29ubmVjdGlvbikuc3RhcnRGZXRjaCgqdGFzayk7CiAgICAgICAgIH0pOwog
ICAgIH07Ci0KLSAgICBpZiAod29ya2VyLT5zaG91bGRTa2lwRmV0Y2hFdmVudCgpKSB7Ci0gICAg
ICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGll
bnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyKTsKLSAgICAgICAgYXV0
byogcmVnaXN0cmF0aW9uID0gc2VydmVyKCkuZ2V0UmVnaXN0cmF0aW9uKHdvcmtlci0+cmVnaXN0
cmF0aW9uS2V5KCkpOwotICAgICAgICBpZiAocmVnaXN0cmF0aW9uICYmIHJlZ2lzdHJhdGlvbi0+
c2hvdWxkU29mdFVwZGF0ZShvcHRpb25zKSkKLSAgICAgICAgICAgIHJlZ2lzdHJhdGlvbi0+c29m
dFVwZGF0ZSgpOworICAgIAorICAgIGlmICh3b3JrZXIuc3RhdGUoKSA9PSBTZXJ2aWNlV29ya2Vy
U3RhdGU6OkFjdGl2YXRpbmcpIHsKKyAgICAgICAgd29ya2VyLndoZW5BY3RpdmF0ZWQoV1RGTW92
ZShydW5TZXJ2ZXJXb3JrZXJBbmRTdGFydEZldGNoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBpZiAod29ya2VyLT5zdGF0ZSgpID09IFNlcnZpY2VXb3JrZXJTdGF0ZTo6QWN0aXZh
dGluZykgewotICAgICAgICB3b3JrZXItPndoZW5BY3RpdmF0ZWQoV1RGTW92ZShydW5TZXJ2ZXJX
b3JrZXJBbmRTdGFydEZldGNoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgQVNTRVJU
KHdvcmtlci0+c3RhdGUoKSA9PSBTZXJ2aWNlV29ya2VyU3RhdGU6OkFjdGl2YXRlZCk7CisgICAg
QVNTRVJUKHdvcmtlci5zdGF0ZSgpID09IFNlcnZpY2VXb3JrZXJTdGF0ZTo6QWN0aXZhdGVkKTsK
ICAgICBydW5TZXJ2ZXJXb3JrZXJBbmRTdGFydEZldGNoKHRydWUpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKaW5kZXggN2JkMmEzM2NiNThhMzA3NzBlMzk4YmQwNDll
NTNlMjI0MjNhM2QyNi4uOTY3OTY4YzI2YmEzM2U0NTYxNjQ5NjdhMDc5MWIwMjllZjQ4OTc0NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaApAQCAtNTIsNiArNTIsOCBAQCBz
dHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudERhdGE7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgTmV0d29ya1Byb2Nlc3M7CitjbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2FkZXI7CitjbGFzcyBT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOwogCiBjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb24gOiBw
dWJsaWMgV2ViQ29yZTo6U1dTZXJ2ZXI6OkNvbm5lY3Rpb24sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VT
ZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6CkBAIC02Niw2ICs2
OCw4IEBAIHB1YmxpYzoKICAgICAKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25z
dDsKIAorICAgIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBjcmVhdGVG
ZXRjaFRhc2soTmV0d29ya1Jlc291cmNlTG9hZGVyJik7CisKIHByaXZhdGU6CiAgICAgLy8gSW1w
bGVtZW50IFNXU2VydmVyOjpDb25uZWN0aW9uIChNZXNzYWdlcyB0byB0aGUgY2xpZW50IFdlYlBy
b2Nlc3MpCiAgICAgdm9pZCByZWplY3RKb2JJbkNsaWVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
Sm9iSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYpIGZpbmFsOwpAQCAt
ODIsNyArODYsOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzY2hlZHVsZUpvYkluU2VydmVyKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhJiYpOwogCi0gICAgdm9pZCBzdGFydEZldGNoKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRj
aElkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpGZXRjaE9w
dGlvbnMmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmLCBTdHJpbmcmJiByZWZlcnJlcik7Cisg
ICAgYm9vbCBoYW5kbGVGZXRjaChOZXR3b3JrUmVzb3VyY2VMb2FkZXImKTsKKworICAgIHZvaWQg
c3RhcnRGZXRjaChTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrJiwgV2ViQ29yZTo6U1dTZXJ2ZXJXb3Jr
ZXImKTsKICAgICB2b2lkIGNhbmNlbEZldGNoKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIpOwogICAgIHZvaWQgY29u
dGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggYWIyNDY4
ZThjZTNjYjVjNmRkZmM4MjhjZTc1YmZkOGMxZjYyN2VkNy4uM2RhNjRkOTg3NGVjMWQ3ZjdlYjI5
ZDRjN2ZkZTU2N2EyZWM1NDFhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0yOSwxMCArMjksNiBAQCBtZXNzYWdlcyAtPiBXZWJT
V1NlcnZlckNvbm5lY3Rpb24gewogICAgIEFkZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNl
cnZlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlm
aWVyKQogICAgIFJlbW92ZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcihXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQogCi0gICAg
U3RhcnRGZXRjaChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBz
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlm
aWVyIGZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHN0
cnVjdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMgb3B0aW9ucywgSVBDOjpGb3JtRGF0YVJlZmVyZW5j
ZSByZXF1ZXN0Qm9keSwgU3RyaW5nIHJlZmVycmVyKQotICAgIENhbmNlbEZldGNoKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVy
KQotICAgIENvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoV2ViQ29yZTo6U2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50
aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIpCi0KICAgICBQ
b3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBkZXN0aW5hdGlvbiwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1l
c3NhZ2UsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXIgc291cmNlKQog
CiAgICAgRGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoV2ViQ29yZTo6U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbktleSBrZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uY3BwCmluZGV4IDg1ZDllOTU1YWE0MmViOTI2YjA4M2QyMDQxNWQz
NDdiMzI1NWQ2NTIuLmZhZDZlZTllZWI3ZDdiYzk3MDIyNTljNjE4MGU3YzJiMmYyNGQxMTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3Bw
CkBAIC0xNTIsMzkgKzE1MiwxNCBAQCB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bjo6dGVybWluYXRlKCkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6VGVybWluYXRlUHJvY2VzcygpKTsKIH0KIAotdm9pZCBXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246OnN0YXJ0RmV0Y2goUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJT
V1NlcnZlckNvbm5lY3Rpb24mIGNvbnRlbnRDb25uZWN0aW9uLCBGZXRjaElkZW50aWZpZXIgY29u
dGVudEZldGNoSWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgRmV0Y2hP
cHRpb25zJiBvcHRpb25zLCBjb25zdCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25z
dCBTdHJpbmcmIHJlZmVycmVyKQordm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
OnN0YXJ0RmV0Y2goU2VydmljZVdvcmtlckZldGNoVGFzayYgdGFzaykKIHsKLSAgICBhdXRvIHNl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyID0gY29udGVudENvbm5lY3Rpb24uaWRlbnRpZmllcigp
OwotICAgIGF1dG8gZmV0Y2hJZGVudGlmaWVyID0gRmV0Y2hJZGVudGlmaWVyOjpnZW5lcmF0ZSgp
OwotCi0gICAgYXV0byByZXN1bHQgPSBtX29uZ29pbmdGZXRjaGVzLmFkZChmZXRjaElkZW50aWZp
ZXIsIG1ha2VVbmlxdWU8U2VydmljZVdvcmtlckZldGNoVGFzaz4oc2Vzc2lvbklELCBjb250ZW50
Q29ubmVjdGlvbiwgKnRoaXMsIGNvbnRlbnRGZXRjaElkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBtX25ldHdvcmtQcm9jZXNzLT5zZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0KCkp
KTsKLQotICAgIEFTU0VSVCghbV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVycy5jb250YWlucyh7IHNl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb250ZW50RmV0Y2hJZGVudGlmaWVyIH0pKTsKLSAg
ICBtX29uZ29pbmdGZXRjaElkZW50aWZpZXJzLmFkZCh7IHNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyLCBjb250ZW50RmV0Y2hJZGVudGlmaWVyIH0sIGZldGNoSWRlbnRpZmllcik7Ci0KLSAgICBp
ZiAoIXNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTdGFydEZl
dGNoIHsgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBmZXRjaElkZW50aWZpZXIsIHJlcXVlc3QsIG9wdGlvbnMsIGRhdGEsIHJlZmVycmVyIH0pKQot
ICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5kaWROb3RIYW5kbGUoKTsKKyAgICB0YXNr
LnN0YXJ0KCp0aGlzKTsKIH0KIAotdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
OmNhbmNlbEZldGNoKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIsIEZldGNoSWRlbnRpZmllciBjb250ZW50RmV0Y2hJZGVudGlm
aWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKK3Zv
aWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb250aW51ZURpZFJlY2VpdmVGZXRj
aFJlc3BvbnNlKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIEZldGNoSWRl
bnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBpdGVyYXRvciA9
IG1fb25nb2luZ0ZldGNoSWRlbnRpZmllcnMuZmluZCh7IHNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyLCBjb250ZW50RmV0Y2hJZGVudGlmaWVyIH0pOwotICAgIGlmIChpdGVyYXRvciA9PSBtX29u
Z29pbmdGZXRjaElkZW50aWZpZXJzLmVuZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Q2FuY2VsRmV0Y2ggeyBz
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGl0ZXJh
dG9yLT52YWx1ZSB9KTsKLQotICAgIG1fb25nb2luZ0ZldGNoZXMucmVtb3ZlKGl0ZXJhdG9yLT52
YWx1ZSk7Ci0gICAgbV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVycy5yZW1vdmUoaXRlcmF0b3IpOwot
fQotCi12b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29udGludWVEaWRSZWNl
aXZlRmV0Y2hSZXNwb25zZShXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBGZXRjaElkZW50aWZpZXIgY29udGVudEZldGNoSWRl
bnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIp
Ci17Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fb25nb2luZ0ZldGNoSWRlbnRpZmllcnMuZmluZCh7
IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb250ZW50RmV0Y2hJZGVudGlmaWVyIH0pOwot
ICAgIGlmIChpdGVyYXRvciA9PSBtX29uZ29pbmdGZXRjaElkZW50aWZpZXJzLmVuZCgpKQotICAg
ICAgICByZXR1cm47Ci0gICAgCi0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb246OkNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UgeyBzZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGl0ZXJhdG9yLT52YWx1
ZSB9KTsKKyAgICAvLyBGSVhNRTogVG8gYmUgZG9uZSB0aHJvdWdoIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcgogfQogCiB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZGlkUmVjZWl2
ZUZldGNoVGFza01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29k
ZXImIGRlY29kZXIpCkBAIC0xOTIsNTEgKzE2Nyw0MSBAQCB2b2lkIFdlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUZldGNoVGFza01lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JgogICAgIGF1dG8gaXRlcmF0b3IgPSBtX29uZ29pbmdGZXRjaGVzLmZpbmQobWFrZU9iamVjdElk
ZW50aWZpZXI8RmV0Y2hJZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKTsK
ICAgICBpZiAoaXRlcmF0b3IgPT0gbV9vbmdvaW5nRmV0Y2hlcy5lbmQoKSkKICAgICAgICAgcmV0
dXJuOwotICAgIAotICAgIGJvb2wgc2hvdWxkUmVtb3ZlID0gZGVjb2Rlci5tZXNzYWdlTmFtZSgp
ID09IE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRGYWlsOjpuYW1lKCkKLSAg
ICAgICAgfHwgZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOjpEaWROb3RIYW5kbGU6Om5hbWUoKQotICAgICAgICB8fCBkZWNvZGVyLm1lc3Nh
Z2VOYW1lKCkgPT0gTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZEZpbmlzaDo6
bmFtZSgpCi0gICAgICAgIHx8IGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6U2Vy
dmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2U6Om5hbWUoKTsK
IAogICAgIGl0ZXJhdG9yLT52YWx1ZS0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVj
b2Rlcik7Ci0KLSAgICBpZiAoc2hvdWxkUmVtb3ZlKSB7Ci0gICAgICAgIEFTU0VSVChtX29uZ29p
bmdGZXRjaElkZW50aWZpZXJzLmNvbnRhaW5zKGl0ZXJhdG9yLT52YWx1ZS0+aWRlbnRpZmllcigp
KSk7Ci0gICAgICAgIG1fb25nb2luZ0ZldGNoSWRlbnRpZmllcnMucmVtb3ZlKGl0ZXJhdG9yLT52
YWx1ZS0+aWRlbnRpZmllcigpKTsKLSAgICAgICAgbV9vbmdvaW5nRmV0Y2hlcy5yZW1vdmUoaXRl
cmF0b3IpOwotICAgIH0KIH0KIAotdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
OmZldGNoVGFza1RpbWVkT3V0KFNlcnZpY2VXb3JrZXJGZXRjaFRhc2smIHRhc2spCit2b2lkIFdl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6cmVnaXN0ZXJGZXRjaChTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrJiB0YXNrKQogewotICAgIEFTU0VSVChtX29uZ29pbmdGZXRjaElkZW50aWZpZXJz
LmNvbnRhaW5zKHRhc2suaWRlbnRpZmllcigpKSk7Ci0gICAgYXV0byB0YWtlbklkZW50aWZpZXIg
PSBtX29uZ29pbmdGZXRjaElkZW50aWZpZXJzLnRha2UodGFzay5pZGVudGlmaWVyKCkpOworICAg
IEFTU0VSVCghbV9vbmdvaW5nRmV0Y2hlcy5jb250YWlucyh0YXNrLmZldGNoSWRlbnRpZmllcigp
KSk7CisgICAgbV9vbmdvaW5nRmV0Y2hlcy5hZGQodGFzay5mZXRjaElkZW50aWZpZXIoKSwgbWFr
ZVdlYWtQdHIodGFzaykpOworfQogCi0gICAgQVNTRVJUKG1fb25nb2luZ0ZldGNoZXMuY29udGFp
bnModGFrZW5JZGVudGlmaWVyKSk7Ci0gICAgYXV0byB0YWtlblRhc2sgPSBtX29uZ29pbmdGZXRj
aGVzLnRha2UodGFrZW5JZGVudGlmaWVyKTsKLSAgICBBU1NFUlQodGFrZW5UYXNrKTsKLSAgICBB
U1NFUlQodGFrZW5UYXNrLmdldCgpID09ICZ0YXNrKTsKK3ZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjp1bnJlZ2lzdGVyRmV0Y2goU2VydmljZVdvcmtlckZldGNoVGFzayYgdGFz
aykKK3sKKyAgICBBU1NFUlQobV9vbmdvaW5nRmV0Y2hlcy5jb250YWlucyh0YXNrLmZldGNoSWRl
bnRpZmllcigpKSk7CisgICAgbV9vbmdvaW5nRmV0Y2hlcy5yZW1vdmUodGFzay5mZXRjaElkZW50
aWZpZXIoKSk7Cit9CiAKLSAgICAvLyBHYXRoZXIgYWxsIG90aGVyIGZldGNoZXMgaW4gdGhpcyBz
ZXJ2aWNlIHdvcmtlcgotICAgIFZlY3RvcjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKj4gb3RoZXJG
ZXRjaGVzOwordm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmZldGNoVGFza1Rp
bWVkT3V0KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQor
eworICAgIC8vIEdhdGhlciBhbGwgZmV0Y2hlcyBpbiB0aGlzIHNlcnZpY2Ugd29ya2VyCisgICAg
VmVjdG9yPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2sqPiBmZXRjaGVzOwogICAgIGZvciAoYXV0byYg
ZmV0Y2hUYXNrIDogbV9vbmdvaW5nRmV0Y2hlcy52YWx1ZXMoKSkgewotICAgICAgICBpZiAoZmV0
Y2hUYXNrLT5zZXJ2aWNlV29ya2VySWRlbnRpZmllcigpID09IHRhc2suc2VydmljZVdvcmtlcklk
ZW50aWZpZXIoKSkKLSAgICAgICAgICAgIG90aGVyRmV0Y2hlcy5hcHBlbmQoZmV0Y2hUYXNrLmdl
dCgpKTsKKyAgICAgICAgaWYgKGZldGNoVGFzay0+c2VydmljZVdvcmtlcklkZW50aWZpZXIoKSA9
PSBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKKyAgICAgICAgICAgIGZldGNoZXMuYXBwZW5kKGZl
dGNoVGFzay5nZXQoKSk7CiAgICAgfQogCiAgICAgLy8gU2lnbmFsIGxvYWQgZmFpbHVyZSBmb3Ig
dGhlbQotICAgIGZvciAoYXV0byogZmV0Y2hUYXNrIDogb3RoZXJGZXRjaGVzKSB7CisgICAgZm9y
IChhdXRvKiBmZXRjaFRhc2sgOiBmZXRjaGVzKSB7CiAgICAgICAgIGlmIChmZXRjaFRhc2stPndh
c0hhbmRsZWQoKSkKICAgICAgICAgICAgIGZldGNoVGFzay0+ZmFpbCh7IGVycm9yRG9tYWluV2Vi
S2l0SW50ZXJuYWwsIDAsIHsgfSwgIlNlcnZpY2UgV29ya2VyIGNvbnRleHQgY2xvc2VkIl9zIH0p
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBmZXRjaFRhc2stPmRpZE5vdEhhbmRsZSgpOwot
Ci0gICAgICAgIGF1dG8gaWRlbnRpZmllciA9IG1fb25nb2luZ0ZldGNoSWRlbnRpZmllcnMudGFr
ZShmZXRjaFRhc2stPmlkZW50aWZpZXIoKSk7Ci0gICAgICAgIG1fb25nb2luZ0ZldGNoZXMucmVt
b3ZlKGlkZW50aWZpZXIpOwogICAgIH0KIAogICAgIGlmIChtX3NlcnZlcikgewotICAgICAgICBp
ZiAoYXV0byogd29ya2VyID0gbV9zZXJ2ZXItPndvcmtlckJ5SUQodGFzay5zZXJ2aWNlV29ya2Vy
SWRlbnRpZmllcigpKSkgeworICAgICAgICBpZiAoYXV0byogd29ya2VyID0gbV9zZXJ2ZXItPndv
cmtlckJ5SUQoc2VydmljZVdvcmtlcklkZW50aWZpZXIpKSB7CiAgICAgICAgICAgICB3b3JrZXIt
PnNldEhhc1RpbWVkT3V0QW55RmV0Y2hUYXNrcygpOwogICAgICAgICAgICAgaWYgKHdvcmtlci0+
aXNSdW5uaW5nKCkpCiAgICAgICAgICAgICAgICAgbV9zZXJ2ZXItPnN5bmNUZXJtaW5hdGVXb3Jr
ZXIoKndvcmtlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmgKaW5kZXggZTMwZjM0MWUxN2JlMTg2MDhjZWVjOWEyMDMyYmRhMDI5YTRjYTVmNi4u
N2VkMzE0OGY2N2U4Mzg0MmU0ODgxOWVjNTczNzZkMjUwYTM3Njk0YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtNTIsMjAgKzUyLDE5
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgTmV0d29ya1Byb2Nlc3M7CiBjbGFzcyBXZWJT
V1NlcnZlckNvbm5lY3Rpb247CiAKLWNsYXNzIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
biA6IHB1YmxpYyBXZWJDb3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24sIHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitjbGFzcyBX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPiwgcHVibGljIFdlYkNvcmU6OlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbiwgcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6
TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKICAgICBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24oTmV0d29ya1Byb2Nlc3MmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBXZWJD
b3JlOjpTV1NlcnZlciYsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYpOwogICAgIH5XZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24oKTsKIAotICAgIElQQzo6Q29ubmVjdGlvbiogaXBjQ29ubmVj
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXBjQ29ubmVjdGlvbi5wdHIoKTsgfQorICAgIElQQzo6
Q29ubmVjdGlvbiYgaXBjQ29ubmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXBjQ29ubmVjdGlv
bi5nZXQoKTsgfQogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCiAg
ICAgdm9pZCB0ZXJtaW5hdGUoKTsKIAotICAgIHZvaWQgc3RhcnRGZXRjaChQQUw6OlNlc3Npb25J
RCwgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyLCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiwgY29uc3QgSVBDOjpGb3JtRGF0YVJl
ZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgY2FuY2VsRmV0Y2goV2ViQ29yZTo6
U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyLCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CisgICAgdm9pZCBzdGFydEZldGNoKFNl
cnZpY2VXb3JrZXJGZXRjaFRhc2smKTsKICAgICB2b2lkIGNvbnRpbnVlRGlkUmVjZWl2ZUZldGNo
UmVzcG9uc2UoV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6
RmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAKICAg
ICB2b2lkIGRpZFJlY2VpdmVGZXRjaFRhc2tNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYpOwpAQCAtNzMsNyArNzIsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VGhyb3R0
bGVTdGF0ZShib29sIGlzVGhyb3R0bGVhYmxlKTsKICAgICBib29sIGlzVGhyb3R0bGVhYmxlKCkg
Y29uc3QgeyByZXR1cm4gbV9pc1Rocm90dGxlYWJsZTsgfQogCi0gICAgdm9pZCBmZXRjaFRhc2tU
aW1lZE91dChTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrJik7CisgICAgdm9pZCBmZXRjaFRhc2tUaW1l
ZE91dChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CisKKyAgICB2b2lkIHJlZ2lz
dGVyRmV0Y2goU2VydmljZVdvcmtlckZldGNoVGFzayYpOworICAgIHZvaWQgdW5yZWdpc3RlckZl
dGNoKFNlcnZpY2VXb3JrZXJGZXRjaFRhc2smKTsKIAogcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1l
c3NhZ2VTZW5kZXIKQEAgLTk4LDEyICsxMDAsMTMgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29u
bmVjdGlvbkNsb3NlZCgpOwogCisgICAgdm9pZCB0aW1lb3V0VGltZXJGaXJlZCgpOworCiAgICAg
UmVmPElQQzo6Q29ubmVjdGlvbj4gbV9pcGNDb25uZWN0aW9uOwogICAgIFJlZjxOZXR3b3JrUHJv
Y2Vzcz4gbV9uZXR3b3JrUHJvY2VzczsKICAgICBXZWFrUHRyPFdlYkNvcmU6OlNXU2VydmVyPiBt
X3NlcnZlcjsKIAotICAgIEhhc2hNYXA8U2VydmljZVdvcmtlckZldGNoVGFzazo6SWRlbnRpZmll
ciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyPiBtX29uZ29pbmdGZXRjaElkZW50aWZpZXJzOwot
ICAgIEhhc2hNYXA8V2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8U2Vy
dmljZVdvcmtlckZldGNoVGFzaz4+IG1fb25nb2luZ0ZldGNoZXM7CisgICAgSGFzaE1hcDxXZWJD
b3JlOjpGZXRjaElkZW50aWZpZXIsIFdlYWtQdHI8U2VydmljZVdvcmtlckZldGNoVGFzaz4+IG1f
b25nb2luZ0ZldGNoZXM7CiAgICAgYm9vbCBtX2lzVGhyb3R0bGVhYmxlIHsgdHJ1ZSB9OwogfTsg
Ly8gY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4
IDkzNmMwY2Y1NWFkMDNmYmJiM2FkYzg0MzkyMDEzYTkwZTM0OGI1ZWQuLjYzMjc4YjFiYmVlMDhh
NzI1ODliNDMzN2Q1ODNiZWYzNzNlMjIyYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtNTI1LDcgKzUyNSw2
IEBAIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAg
QG5vLXVuaWZ5CiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3Bw
IEBuby11bmlmeQogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3Ry
ZWFtLmNwcCBAbm8tdW5pZnkKIAotV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGll
bnRGZXRjaC5jcHAKIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3Bw
CiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCiBX
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dPcmlnaW5UYWJsZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDYzOGViZWQ1ODUzZmQ3YWQ0
NzQ5OTM1MTNlNmFmYTAxYjA4NzBiN2IuLjlhOTU3M2I2NTcyMjQ0ODgyYTM5NjE3NmU2ZGY2MGI1
ZDdlN2FiNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTE0Myw3ICsxMTQzLDYgQEAKIAkJNUNFOTEyMTIyMjkzQzI3ODAwNUJFQzc4
IC8qIEF1eGlsaWFyeVByb2Nlc3NNYWluLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDRTkxMjBGMjI5M0MyNUYwMDVCRUM3OCAvKiBBdXhpbGlhcnlQ
cm9jZXNzTWFpbi5jcHAgKi87IH07CiAJCTVDRTkxMjEzMjI5M0MyNzkwMDVCRUM3OCAvKiBBdXhp
bGlhcnlQcm9jZXNzTWFpbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1Q0U5MTIwRjIyOTNDMjVGMDA1QkVDNzggLyogQXV4aWxpYXJ5UHJvY2Vzc01h
aW4uY3BwICovOyB9OwogCQk1Q0U5MTIxNDIyOTNDMjgwMDA1QkVDNzggLyogV0tNYWluLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0U5MTIwQjIyOTND
MUUwMDA1QkVDNzggLyogV0tNYWluLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKLQkJNjE3QTUyRDgxRjQzQTlEQTAwRENEQzBBIC8qIFNlcnZpY2VXb3Jr
ZXJDbGllbnRGZXRjaE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MTdBNTJENzFGNDNBOUI2MDBEQ0RDMEEgLyogU2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJNjMxMDhGOTYx
Rjk2NzE5QzAwQTBEQjg0IC8qIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzMTA4Rjk0MUY5NjcxOUMwMEEwREI4
NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjMxMDhGOTkxRjk2NzFGNzAwQTBEQjg0IC8qIF9XS0Fw
cGxpY2F0aW9uTWFuaWZlc3RJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNjMxMDhGOTgxRjk2NzFGNzAwQTBEQjg0IC8qIF9XS0FwcGxpY2F0
aW9uTWFuaWZlc3RJbnRlcm5hbC5oICovOyB9OwogCQk2MzQ4NDI1MTFGQjI2RTcxMDA5NDZFM0Mg
LyogQVBJQXBwbGljYXRpb25NYW5pZmVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNjM0ODQyNEYxRkIyNkU3MTAwOTQ2RTNDIC8qIEFQSUFwcGxpY2F0
aW9uTWFuaWZlc3QuaCAqLzsgfTsKQEAgLTMxMjksOSArMzEyOCw2IEBACiAJCTQxMzA3NUE2MURF
ODVFRTcwMDM5RUM2OSAvKiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJUQ1NvY2tldEZhY3RvcnkuaDsgcGF0aCA9IE5ldHdv
cmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldEZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDEzMDc1QTcxREU4NUVFNzAwMzlFQzY5IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbGluZUVuZGluZyA9IDA7IG5hbWUgPSBM
aWJXZWJSVENQcm92aWRlci5jcHA7IHBhdGggPSBOZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92
aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9u
SWRlbnRpZmllciA9IHhjb2RlLmxhbmcuY3BwOyB9OwogCQk0MTMwNzVBODFERTg1RUU3MDAzOUVD
NjkgLyogTGliV2ViUlRDUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBsaW5l
RW5kaW5nID0gMDsgbmFtZSA9IExpYldlYlJUQ1Byb3ZpZGVyLmg7IHBhdGggPSBOZXR3b3JrL3dl
YnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1
YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLm9iamNwcDsgfTsKLQkJNDEz
MUYzQ0UxRjk2QTQ5NTAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDEzMUYzQ0YxRjk2QTkzNjAwNTk5OTVBIC8q
IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTQxMzFGM0QwMUY5NkJDQzgwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2Vy
Q2xpZW50RmV0Y2guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Vy
dmljZVdvcmtlckNsaWVudEZldGNoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDEzMUYzRTAxRjk4NzEyQzAwNTk5OTVBIC8qIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU2VydmljZVdv
cmtlckZldGNoVGFza0NsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
MzVGQkNGMUY0RkI3RjIwMDc0QzQ3QiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVTdG9yYWdlRW5naW5lQ2Fj
aGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzNUZCRDAxRjRGQjdGMjAw
NzRDNDdCIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTM3MDgsNyArMzcwNCw2IEBACiAJCTVDRUFCQTJCMjMzMzI1MTQwMDc5
Nzc5NyAvKiBMZWdhY3lHbG9iYWxTZXR0aW5ncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBMZWdhY3lHbG9iYWxTZXR0aW5ncy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTVDRkVDQjAzMUUxRUQxQzgwMEY4ODUwNCAvKiBMZWdhY3lDdXN0b21Qcm90
b2NvbE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGVn
YWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNURBRDczRjExMTZGRjkwQzAwRUU1Mzk2IC8qIEJhc2VUYXJnZXQueGNjb25maWcgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQmFzZVRhcmdldC54Y2NvbmZpZzsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNjE3QTUyRDcxRjQzQTlCNjAwRENEQzBBIC8qIFNlcnZpY2VX
b3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlUmVjZWl2ZXIu
Y3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0
Y2hNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OwogCQk2MzEwOEY5NDFGOTY3MTlDMDBBMERCODQgLyogX1dLQXBwbGljYXRpb25NYW5pZmVzdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTYzMTA4Rjk1MUY5NjcxOUMwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlv
bk1hbmlmZXN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLQXBwbGljYXRpb25NYW5pZmVz
dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjMxMDhGOTgxRjk2NzFGNzAwQTBE
Qjg0IC8qIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3RJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBf
V0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTY4MzksOSArNjgzNCw2IEBACiAJCTUxMThFOTk4MUYyOTUyNTkwMDNFRjlGNSAvKiBT
dG9yYWdlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk0
MTMxRjNEMDFGOTZCQ0M4MDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoLmNwcCAq
LywKLQkJCQk0MTMxRjNDRTFGOTZBNDk1MDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNsaWVudEZl
dGNoLmggKi8sCi0JCQkJNDEzMUYzQ0YxRjk2QTkzNjAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJD
bGllbnRGZXRjaC5tZXNzYWdlcy5pbiAqLywKIAkJCQk0MTMxRjNFMDFGOTg3MTJDMDA1OTk5NUEg
LyogV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAgKi8sCiAJCQkJNDE5QUNGOUIx
Rjk4MUQyNjAwOUYxQTgzIC8qIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaCAqLywK
IAkJCQk1MUJFQjYyOTFGM0E1QUNEMDA1MDI5QjkgLyogV2ViU2VydmljZVdvcmtlclByb3ZpZGVy
LmNwcCAqLywKQEAgLTg4NzQsNyArODg2Niw2IEBACiAJCQkJMUJCQkU0OUUxOUI2NkM1MzAwNkI3
RDgxIC8qIFJlbW90ZVdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQlF
MThFNjkxMzE2OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi8sCiAJCQkJRTE4RTY5MTQxNjlCNjY3QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJv
eHlNZXNzYWdlcy5oICovLAotCQkJCTYxN0E1MkQ3MUY0M0E5QjYwMERDREMwQSAvKiBTZXJ2aWNl
V29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTJERTY5NDNCMThC
RDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLywKIAkJCQkyREU2OTQzQzE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZp
Y2F0aW9uQ29udHJvbGxlck1lc3NhZ2VzLmggKi8sCiAJCQkJMUEzMzRERUIxNkRFOEY4ODAwNkE4
RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKQEAgLTExMzEzLDcg
KzExMzA0LDYgQEAKIAkJCQlBNTVCQTgyNjFCQTI1Q0ZEMDA3Q0QzM0QgLyogUmVtb3RlV2ViSW5z
cGVjdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUJCQkU0
QTAxOUI2NkM1MzAwNkI3RDgxIC8qIFJlbW90ZVdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxOEU2OTE3MTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJ
dGVtU2hpbVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTYxN0E1
MkQ4MUY0M0E5REEwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFERTdDNkMyMjI3OEYxRTAwNTMyQjY1IC8q
IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5MkE3ODcy
MTJCNkFCMTAwRjQ5M0ZEIC8qIFNoYXJlYWJsZUJpdG1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkyREU2OTQzRDE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxl
ck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwCmluZGV4IGYwYjRmZGZhNmEzMTE3MDQ5OTZkNzg1YTFjOTYyNzczNjAxMTk4MDEuLjMwODMz
NTc3MzAxZDBmMjY0NTMyYjRhMzJiYTg2ZWY2ZWY1YjliNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLmNwcApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNp
bmNsdWRlICJMaWJXZWJSVENOZXR3b3JrLmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3NNZXNzYWdlcy5oIgotI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRGZXRj
aE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXAuaCIKICNpbmNsdWRlICJTdG9y
YWdlQXJlYU1hcE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIu
aCIKQEAgLTE0MSwxMCArMTQwLDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVAKICAgICAgICAg
ICAgIG1fc3dDb25uZWN0aW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVy
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2
ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xl
dG9uKCkuZGlkUmVjZWl2ZVNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2UoY29ubmVjdGlv
biwgZGVjb2Rlcik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CiAgICAgaWYgKGRlY29kZXIubWVz
c2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAgICAgIEFTU0VSVChTV0NvbnRleHRN
YW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpOwogICAgICAgICBpZiAoYXV0byogY29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29u
bmVjdGlvbigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IGFmYTNjNzI0MTQ4ZGExMjc1YTI3NzBkZmM3ZTgz
ZDcyOTZkYTUwNDQuLmE5ZmMwNGQ1MzhmZWI5YjdmNGQ5NGU2NDgyMTMzYmY5MjVmM2Q0N2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0
ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJT
dHJhdGVneS5jcHAKQEAgLTIxNSw0MSArMjE1LDIwIEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6
OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBpZiAoISFyZXNvdXJj
ZUxvYWRlci5vcHRpb25zKCkuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpCi0g
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUg
c2NoZWR1bGVkIHRocm91Z2ggU2VydmljZVdvcmtlciBvciBOZXR3b3JrIFByb2Nlc3MgKGZyYW1l
ID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291
cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1Bh
cmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELnRv
VUludDY0KCksIGlkZW50aWZpZXIpOworICAgIGF1dG8gdXJsID0gcmVzb3VyY2VMb2FkZXIucmVx
dWVzdCgpLnVybCgpOworICAgIGF1dG8qIGRhdGEgPSB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KTsKKyAgICBpZiAoZGF0YSkKKyAgICAgICAgdXJsLnN0cmluZygpOwogCi0gICAgV2ViU2Vydmlj
ZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKS5oYW5kbGVGZXRjaChyZXNvdXJjZUxvYWRlciwg
c2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgW3RoaXMsIHRyYWNraW5n
UGFyYW1ldGVycywgaWRlbnRpZmllciwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBS
ZWRpcmVjdCwgbWF4aW11bUJ1ZmZlcmluZ1RpbWUgPSBtYXhpbXVtQnVmZmVyaW5nVGltZShyZXNv
dXJjZSksIHJlc291cmNlTG9hZGVyID0gbWFrZVJlZihyZXNvdXJjZUxvYWRlcildIChTZXJ2aWNl
V29ya2VyQ2xpZW50RmV0Y2g6OlJlc3VsdCByZXN1bHQpIG11dGFibGUgewotICAgICAgICBpZiAo
cmVzdWx0ICE9IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6UmVzdWx0OjpVbmhhbmRsZWQpIHsK
LSAgICAgICAgICAgIExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJMb2Fk
ZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkLCB1cmwgJyVzJyB3aWxsIGJlIHNjaGVkdWxlZCB0aHJv
dWdoIFNlcnZpY2VXb3JrZXIgaGFuZGxlIGZldGNoIGFsZ29yaXRobSIsIHJlc291cmNlTG9hZGVy
LT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwotICAgICAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBzY2hlZHVsZWQgdGhyb3Vn
aCBTZXJ2aWNlV29ya2VyIGhhbmRsZSBmZXRjaCBhbGdvcml0aG0gKGZyYW1lID0gJXAsIHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQ
Ukl1NjQgIikiLCByZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBh
Z2VJRC50b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRC50b1VJbnQ2NCgpLCBp
ZGVudGlmaWVyKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBpZiAo
cmVzb3VyY2VMb2FkZXItPm9wdGlvbnMoKS5zZXJ2aWNlV29ya2Vyc01vZGUgPT0gU2VydmljZVdv
cmtlcnNNb2RlOjpPbmx5KSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExP
V0VEKCJzY2hlZHVsZUxvYWQ6IHVuYWJsZSB0byBzY2hlZHVsZSBVUkwgdGhyb3VnaCBTZXJ2aWNl
V29ya2VyIGhhbmRsZSBmZXRjaCBhbGdvcml0aG0gKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBS
SXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiki
LCByZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJ
bnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRC50b1VJbnQ2NCgpLCBpZGVudGlmaWVy
KTsKLSAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Jlc291cmNlTG9hZGVyID0gV1RGTW92
ZShyZXNvdXJjZUxvYWRlcildIHsKLSAgICAgICAgICAgICAgICBhdXRvIGVycm9yID0gaW50ZXJu
YWxFcnJvcihyZXNvdXJjZUxvYWRlci0+cmVxdWVzdCgpLnVybCgpKTsKLSAgICAgICAgICAgICAg
ICBlcnJvci5zZXRUeXBlKFJlc291cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxhdGlvbik7Ci0gICAg
ICAgICAgICAgICAgcmVzb3VyY2VMb2FkZXItPmRpZEZhaWwoZXJyb3IpOwotICAgICAgICAgICAg
fSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIVdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLndlYkxvYWRlclN0cmF0ZWd5KCkudHJ5TG9hZGluZ1VzaW5nVVJM
U2NoZW1lSGFuZGxlcihyZXNvdXJjZUxvYWRlcikpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgc2NoZWR1bGVkIHdpdGggdGhl
IE5ldHdvcmtQcm9jZXNzIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2Fk
ZXItPmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tp
bmdQYXJhbWV0ZXJzLmZyYW1lSUQudG9VSW50NjQoKSwgaWRlbnRpZmllcik7Ci0gICAgICAgICAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJMb2FkZXJTdHJhdGVneSgpLnNjaGVkdWxlTG9h
ZEZyb21OZXR3b3JrUHJvY2VzcyhyZXNvdXJjZUxvYWRlci5nZXQoKSwgcmVzb3VyY2VMb2FkZXIt
PnJlcXVlc3QoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQ
U1RvSFRUUFJlZGlyZWN0LCBtYXhpbXVtQnVmZmVyaW5nVGltZSk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLQotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzY2hlZHVs
ZUxvYWQ6IFVSTCBub3QgaGFuZGxlZCBieSBhbnkgaGFuZGxlcnMgKGZyYW1lID0gJXAsIHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQ
Ukl1NjQgIikiLCByZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBh
Z2VJRC50b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRC50b1VJbnQ2NCgpLCBp
ZGVudGlmaWVyKTsKLSAgICB9KTsKKyAgICBpZiAoKHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5z
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciAmJiByZXNvdXJjZUxvYWRlci5vcHRp
b25zKCkuc2VydmljZVdvcmtlcnNNb2RlICE9IFNlcnZpY2VXb3JrZXJzTW9kZTo6Tm9uZSkgfHwg
IXRyeUxvYWRpbmdVc2luZ1VSTFNjaGVtZUhhbmRsZXIocmVzb3VyY2VMb2FkZXIpKSB7CiAjZWxz
ZQogICAgIGlmICghdHJ5TG9hZGluZ1VzaW5nVVJMU2NoZW1lSGFuZGxlcihyZXNvdXJjZUxvYWRl
cikpIHsKKyNlbmRpZgogICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzY2hlZHVsZUxv
YWQ6IFVSTCB3aWxsIGJlIHNjaGVkdWxlZCB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyAoZnJhbWUg
PSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3Vy
Y2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5nUGFy
YW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQudG9V
SW50NjQoKSwgaWRlbnRpZmllcik7CiAgICAgICAgIHNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJv
Y2VzcyhyZXNvdXJjZUxvYWRlciwgcmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLCB0cmFja2luZ1Bh
cmFtZXRlcnMsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIG1heGlt
dW1CdWZmZXJpbmdUaW1lKHJlc291cmNlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic2NoZWR1bGVMb2FkOiBVUkwgbm90IGhhbmRsZWQgYnkg
YW55IGhhbmRsZXJzIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIu
ZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCB0cmFja2luZ1Bh
cmFtZXRlcnMuZnJhbWVJRC50b1VJbnQ2NCgpLCBpZGVudGlmaWVyKTsKLSNlbmRpZgogfQogCiBi
b29sIFdlYkxvYWRlclN0cmF0ZWd5Ojp0cnlMb2FkaW5nVXNpbmdVUkxTY2hlbWVIYW5kbGVyKFJl
c291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlcikKQEAgLTI3MSw2ICsyNTAsMTAgQEAgYm9vbCBX
ZWJMb2FkZXJTdHJhdGVneTo6dHJ5TG9hZGluZ1VzaW5nVVJMU2NoZW1lSGFuZGxlcihSZXNvdXJj
ZUxvYWRlciYgcmVzb3VyY2UKIAogdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2Fk
RnJvbU5ldHdvcmtQcm9jZXNzKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJSZXNvdXJjZUxvYWRlcjo6VHJhY2tp
bmdQYXJhbWV0ZXJzJiB0cmFja2luZ1BhcmFtZXRlcnMsIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJl
ck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgU2Vjb25kcyBtYXhpbXVtQnVmZmVyaW5nVGltZSkKIHsK
KyAgICBhdXRvKiB3ZWJGcmFtZUxvYWRlckNsaWVudCA9IHRvV2ViRnJhbWVMb2FkZXJDbGllbnQo
cmVzb3VyY2VMb2FkZXIuZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkpOworICAgIGF1dG8qIHdlYkZy
YW1lID0gd2ViRnJhbWVMb2FkZXJDbGllbnQgPyB3ZWJGcmFtZUxvYWRlckNsaWVudC0+d2ViRnJh
bWUoKSA6IG51bGxwdHI7CisgICAgYXV0byogd2ViUGFnZSA9IHdlYkZyYW1lID8gd2ViRnJhbWUt
PnBhZ2UoKSA6IG51bGxwdHI7CisKICAgICBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGlkZW50aWZp
ZXIgPSByZXNvdXJjZUxvYWRlci5pZGVudGlmaWVyKCk7CiAgICAgQVNTRVJUKGlkZW50aWZpZXIp
OwogCkBAIC0zMDIsNiArMjg1LDE3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxl
TG9hZEZyb21OZXR3b3JrUHJvY2VzcyhSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMCiAgICAgbG9h
ZFBhcmFtZXRlcnMucHJlZmxpZ2h0UG9saWN5ID0gcmVzb3VyY2VMb2FkZXIub3B0aW9ucygpLnBy
ZWZsaWdodFBvbGljeTsKICAgICBsb2FkUGFyYW1ldGVycy5pc0hUVFBTVXBncmFkZUVuYWJsZWQg
PSByZXNvdXJjZUxvYWRlci5mcmFtZSgpID8gcmVzb3VyY2VMb2FkZXIuZnJhbWUoKS0+c2V0dGlu
Z3MoKS5IVFRQU1VwZ3JhZGVFbmFibGVkKCkgOiBmYWxzZTsKIAorI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKKyAgICAvLyBJbiBjYXNlIG9mIFVSTCBzY2hlbWUgaGFuZGxlciwgd2Ugd2lsbCB0
cnkgdG8gbG9hZCBvbiBzZXJ2aWNlIHdvcmtlcnMgYW5kIGlmIHVuaGFuZGxlZCwgZmFsbGJhY2sg
dG8gVVJMIHNjaGVtZSBoYW5kbGVyLgorICAgIGlmIChyZXNvdXJjZUxvYWRlci5vcHRpb25zKCku
c2VydmljZVdvcmtlcnNNb2RlID09IFNlcnZpY2VXb3JrZXJzTW9kZTo6QWxsICYmIHdlYlBhZ2Ug
JiYgIHdlYlBhZ2UtPnVybFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUocmVzb3VyY2VMb2FkZXIucmVx
dWVzdCgpLnVybCgpLnByb3RvY29sKCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKSkKKyAgICAg
ICAgbG9hZFBhcmFtZXRlcnMuc2VydmljZVdvcmtlcnNNb2RlID0gU2VydmljZVdvcmtlcnNNb2Rl
OjpPbmx5OworICAgIGVsc2UKKyAgICAgICAgbG9hZFBhcmFtZXRlcnMuc2VydmljZVdvcmtlcnNN
b2RlID0gcmVzb3VyY2VMb2FkZXIub3B0aW9ucygpLnNlcnZpY2VXb3JrZXJzTW9kZTsKKworICAg
IGxvYWRQYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyID0gcmVz
b3VyY2VMb2FkZXIub3B0aW9ucygpLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
OworICAgIGxvYWRQYXJhbWV0ZXJzLmh0dHBIZWFkZXJzVG9LZWVwID0gcmVzb3VyY2VMb2FkZXIu
b3B0aW9ucygpLmh0dHBIZWFkZXJzVG9LZWVwOworI2VuZGlmCisKICAgICBhdXRvKiBkb2N1bWVu
dCA9IHJlc291cmNlTG9hZGVyLmZyYW1lKCkgPyByZXNvdXJjZUxvYWRlci5mcmFtZSgpLT5kb2N1
bWVudCgpIDogbnVsbHB0cjsKICAgICBpZiAocmVzb3VyY2VMb2FkZXIub3B0aW9ucygpLmNzcFJl
c3BvbnNlSGVhZGVycykKICAgICAgICAgbG9hZFBhcmFtZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJz
ID0gcmVzb3VyY2VMb2FkZXIub3B0aW9ucygpLmNzcFJlc3BvbnNlSGVhZGVyczsKQEAgLTQzOCwx
MSArNDMyLDYgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6cmVtb3ZlKFJlc291cmNlTG9hZGVy
KiByZXNvdXJjZUxvYWRlcikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKLSAgICBpZiAoV2ViU2VydmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0
b24oKS5jYW5jZWxGZXRjaChtYWtlT2JqZWN0SWRlbnRpZmllcjxGZXRjaElkZW50aWZpZXJUeXBl
PihpZGVudGlmaWVyKSkpCi0gICAgICAgIHJldHVybjsKLSNlbmRpZgotCiAgICAgUmVmUHRyPFdl
YlJlc291cmNlTG9hZGVyPiBsb2FkZXIgPSBtX3dlYlJlc291cmNlTG9hZGVycy50YWtlKGlkZW50
aWZpZXIpOwogICAgIC8vIExvYWRlciBtYXkgbm90IGJlIHJlZ2lzdGVyZWQgaWYgd2UgY3JlYXRl
ZCBpdCwgYnV0IGhhdmVuJ3Qgc2NoZWR1bGVkIHlldCAoYSBidW5kbGUgY2xpZW50IGNhbiBkZWNp
ZGUgdG8gY2FuY2VsIHN1Y2ggcmVxdWVzdCB2aWEgd2lsbFNlbmRSZXF1ZXN0KS4KICAgICBpZiAo
IWxvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLmNwcAppbmRleCBhMzkyNDFhY2EzMGZlNzk2ODExMDI3NDMyMDE3Y2E0
NDliZmIxZjJmLi5lNzEyMWIxMmEwMzIxODA0ZGRmMWNhZTAxODQyNDdmNjUyZDRkOGFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9h
ZGVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNs
dWRlICJXZWJFcnJvcnMuaCIKKyNpbmNsdWRlICJXZWJGcmFtZUxvYWRlckNsaWVudC5oIgogI2lu
Y2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVI
b3N0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DZXJ0aWZpY2F0ZUluZm8uaD4KQEAgLTM5LDYgKzQw
LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRG9jdW1lbnRMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3Jr
TG9hZE1ldHJpY3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KQEAgLTIxOCw2ICsyMjAs
NDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoUmVzb3VyY2VMb2FkKGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0wKICAgICBtX2NvcmVMb2FkZXItPmRpZEZpbmlz
aExvYWRpbmcobmV0d29ya0xvYWRNZXRyaWNzKTsKIH0KIAordm9pZCBXZWJSZXNvdXJjZUxvYWRl
cjo6ZGlkRmFpbFNlcnZpY2VXb3JrZXJMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQor
eworICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IG1fY29yZUxvYWRlci0+ZnJhbWUoKSA/IG1fY29y
ZUxvYWRlci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKSA6IG51bGxwdHIpIHsKKyAgICAgICAgaWYgKG1f
Y29yZUxvYWRlci0+b3B0aW9ucygpLmRlc3RpbmF0aW9uICE9IEZldGNoT3B0aW9uczo6RGVzdGlu
YXRpb246OkVtcHR5U3RyaW5nIHx8IGVycm9yLmlzR2VuZXJhbCgpKQorICAgICAgICAgICAgZG9j
dW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6
OkVycm9yLCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKTsKKyAgICAgICAgaWYgKG1fY29y
ZUxvYWRlci0+b3B0aW9ucygpLmRlc3RpbmF0aW9uICE9IEZldGNoT3B0aW9uczo6RGVzdGluYXRp
b246OkVtcHR5U3RyaW5nKQorICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdl
KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtYWtlU3RyaW5nKCJDYW5u
b3QgbG9hZCAiLCBlcnJvci5mYWlsaW5nVVJMKCkuc3RyaW5nKCksICIuIikpOworICAgIH0KKwor
ICAgIGRpZEZhaWxSZXNvdXJjZUxvYWQoZXJyb3IpOworfQorCit2b2lkIFdlYlJlc291cmNlTG9h
ZGVyOjpzZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlKCkKK3sKKyNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic2VydmljZVdvcmtlckRpZE5vdEhh
bmRsZTogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291
cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50
NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRC50b1VJbnQ2NCgpLCBtX3RyYWNraW5n
UGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKKworICAgIGlmIChtX2NvcmVMb2FkZXItPm9wdGlvbnMo
KS5zZXJ2aWNlV29ya2Vyc01vZGUgIT0gU2VydmljZVdvcmtlcnNNb2RlOjpPbmx5KSB7CisgICAg
ICAgIGF1dG8qIHdlYkZyYW1lTG9hZGVyQ2xpZW50ID0gdG9XZWJGcmFtZUxvYWRlckNsaWVudCht
X2NvcmVMb2FkZXItPmZyYW1lTG9hZGVyKCktPmNsaWVudCgpKTsKKyAgICAgICAgYXV0byogd2Vi
RnJhbWUgPSB3ZWJGcmFtZUxvYWRlckNsaWVudCA/IHdlYkZyYW1lTG9hZGVyQ2xpZW50LT53ZWJG
cmFtZSgpIDogbnVsbHB0cjsKKyAgICAgICAgYXV0byogd2ViUGFnZSA9IHdlYkZyYW1lID8gd2Vi
RnJhbWUtPnBhZ2UoKSA6IG51bGxwdHI7CisKKyAgICAgICAgaWYgKGF1dG8qIGhhbmRsZXIgPSB3
ZWJQYWdlLT51cmxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKG1fY29yZUxvYWRlci0+cmVxdWVzdCgp
LnVybCgpLnByb3RvY29sKCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKSkgeworICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmVzb3VyY2UgbG9hZGVkIGJ5IFVSTCBzY2hlbWUg
aGFuZGxlcjogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJl
c291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9V
SW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRC50b1VJbnQ2NCgpLCBtX3RyYWNr
aW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKKworICAgICAgICAgICAgYXV0byBsb2FkZXIgPSBt
X2NvcmVMb2FkZXI7CisgICAgICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJMb2Fk
ZXJTdHJhdGVneSgpLnJlbW92ZShtX2NvcmVMb2FkZXIuZ2V0KCkpOworCisgICAgICAgICAgICBo
YW5kbGVyLT5zdGFydE5ld1Rhc2soKmxvYWRlcik7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBhdXRvIGVycm9yID0gaW50ZXJuYWxFcnJvcihtX2NvcmVMb2Fk
ZXItPnJlcXVlc3QoKS51cmwoKSk7CisgICAgZXJyb3Iuc2V0VHlwZShSZXNvdXJjZUVycm9yOjpU
eXBlOjpDYW5jZWxsYXRpb24pOworICAgIG1fY29yZUxvYWRlci0+ZGlkRmFpbChlcnJvcik7Cisj
ZWxzZQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCit9CisKIHZvaWQgV2ViUmVz
b3VyY2VMb2FkZXI6OmRpZEZhaWxSZXNvdXJjZUxvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IpCiB7CiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6
OmRpZEZhaWxSZXNvdXJjZUxvYWQgZm9yICclcyciLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmlu
ZygpLmxhdGluMSgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAppbmRleCA4ZWExYWVkYmViOWY1OTY0OTdhYjY3
NGFmNDM2MjE2N2ExY2YyOWFhLi43YzIxMTFkNDhiMjk1MTdiNTk3MzFlMzRiZGVkNmY5M2JjN2Q1
NjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLmgKQEAgLTg1LDYgKzg1LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGludDY0X3QgZW5jb2RlZERhdGFM
ZW5ndGgpOwogICAgIHZvaWQgZGlkRmluaXNoUmVzb3VyY2VMb2FkKGNvbnN0IFdlYkNvcmU6Ok5l
dHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZvaWQgZGlkRmFpbFJlc291cmNlTG9hZChjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CisgICAgdm9pZCBkaWRGYWlsU2VydmljZVdvcmtlckxv
YWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOworICAgIHZvaWQgc2VydmljZVdvcmtl
ckRpZE5vdEhhbmRsZSgpOwogICAgIHZvaWQgZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSgpOwogCiAgICAgdm9pZCBzdG9wTG9hZGluZ0FmdGVyWEZyYW1lT3B0aW9uc09yQ29udGVudFNl
Y3VyaXR5UG9saWN5RGVuaWVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KaW5kZXggN2I5MzI1NmYwMzZkZDA0MmY0NGJhODNhMzE4
YmI3YjY2MzZkNDFhYS4uOGMwZjIxYTgzNjIyY2Y4YWIwZDM2N2UyMWY4NmM3MWE3ZWQwNWQ2NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KQEAgLTI3LDYgKzI3LDggQEAgbWVzc2FnZXMg
LT4gV2ViUmVzb3VyY2VMb2FkZXIgTGVnYWN5UmVjZWl2ZXIgewogICAgIERpZFJlY2VpdmVEYXRh
KElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRh
TGVuZ3RoKQogICAgIERpZEZpbmlzaFJlc291cmNlTG9hZChXZWJDb3JlOjpOZXR3b3JrTG9hZE1l
dHJpY3MgbmV0d29ya0xvYWRNZXRyaWNzKQogICAgIERpZEZhaWxSZXNvdXJjZUxvYWQoV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKKyAgICBEaWRGYWlsU2VydmljZVdvcmtlckxvYWQoV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKKyAgICBTZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxl
KCkKICAgICBEaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkKIAogICAgIFN0b3BMb2Fk
aW5nQWZ0ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lEZW5pZWQoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjQ0NjZhOGQ0ZDg1YzgzMzA5NTlhNTBmNzdk
NTg5MTQ2MTA2MTIxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRG
ZXRjaC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guaCIK
LQotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLQotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2Uu
aCIKLSNpbmNsdWRlICJXZWJTV0NsaWVudENvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJXZWJTZXJ2
aWNlV29ya2VyUHJvdmlkZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzT3JpZ2luQWNjZXNz
Q29udHJvbC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL0ZyYW1lLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVm
ZmVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0K
LVJlZjxTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g+IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6
Y3JlYXRlKFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlciYgc2VydmljZVdvcmtlclByb3ZpZGVyLCBS
ZWY8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI+JiYgbG9hZGVyLCBGZXRjaElkZW50aWZpZXIgaWRl
bnRpZmllciwgUmVmPFdlYlNXQ2xpZW50Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBib29sIHNo
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIENhbGxiYWNrJiYgY2FsbGJh
Y2spCi17Ci0gICAgYXV0byBmZXRjaCA9IGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtlckNsaWVu
dEZldGNoIHsgc2VydmljZVdvcmtlclByb3ZpZGVyLCBXVEZNb3ZlKGxvYWRlciksIGlkZW50aWZp
ZXIsIFdURk1vdmUoY29ubmVjdGlvbiksIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQ
UmVkaXJlY3QsIFdURk1vdmUoY2FsbGJhY2spIH0pOwotICAgIGZldGNoLT5zdGFydCgpOwotICAg
IHJldHVybiBmZXRjaDsKLX0KLQotU2VydmljZVdvcmtlckNsaWVudEZldGNoOjp+U2VydmljZVdv
cmtlckNsaWVudEZldGNoKCkKLXsKLX0KLQotU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpTZXJ2
aWNlV29ya2VyQ2xpZW50RmV0Y2goV2ViU2VydmljZVdvcmtlclByb3ZpZGVyJiBzZXJ2aWNlV29y
a2VyUHJvdmlkZXIsIFJlZjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcj4mJiBsb2FkZXIsIEZldGNo
SWRlbnRpZmllciBpZGVudGlmaWVyLCBSZWY8V2ViU1dDbGllbnRDb25uZWN0aW9uPiYmIGNvbm5l
Y3Rpb24sIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgQ2Fs
bGJhY2smJiBjYWxsYmFjaykKLSAgICA6IG1fc2VydmljZVdvcmtlclByb3ZpZGVyKHNlcnZpY2VX
b3JrZXJQcm92aWRlcikKLSAgICAsIG1fbG9hZGVyKFdURk1vdmUobG9hZGVyKSkKLSAgICAsIG1f
aWRlbnRpZmllcihpZGVudGlmaWVyKQotICAgICwgbV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVj
dGlvbikpCi0gICAgLCBtX2NhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKQotICAgICwgbV9zaG91
bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KHNob3VsZENsZWFyUmVmZXJyZXJP
bkhUVFBTVG9IVFRQUmVkaXJlY3QpCi17Ci19Ci0KLXZvaWQgU2VydmljZVdvcmtlckNsaWVudEZl
dGNoOjpzdGFydCgpCi17Ci0gICAgYXV0byByZXF1ZXN0ID0gbV9sb2FkZXItPnJlcXVlc3QoKTsK
LSAgICBhdXRvJiBvcHRpb25zID0gbV9sb2FkZXItPm9wdGlvbnMoKTsKLQotICAgIGF1dG8gcmVm
ZXJyZXIgPSByZXF1ZXN0Lmh0dHBSZWZlcnJlcigpOwotCi0gICAgLy8gV2UgYXJlIGludGVyY2Vw
dGluZyBmZXRjaCBjYWxscyBhZnRlciBnb2luZyB0aHJvdWdoIHRoZSBIVFRQIGxheWVyLCB3aGlj
aCBtYXkgYWRkIHNvbWUgc3BlY2lmaWMgaGVhZGVycy4KLSAgICBjbGVhbkhUVFBSZXF1ZXN0SGVh
ZGVyc0ZvckFjY2Vzc0NvbnRyb2wocmVxdWVzdCwgb3B0aW9ucy5odHRwSGVhZGVyc1RvS2VlcCk7
Ci0KLSAgICBBU1NFUlQob3B0aW9ucy5zZXJ2aWNlV29ya2Vyc01vZGUgIT0gU2VydmljZVdvcmtl
cnNNb2RlOjpOb25lKTsKLSAgICBtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
ID0gb3B0aW9ucy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllci52YWx1ZSgpOwot
ICAgIG1fY29ubmVjdGlvbi0+c3RhcnRGZXRjaChtX2lkZW50aWZpZXIsIG1fc2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIHJlcXVlc3QsIG9wdGlvbnMsIHJlZmVycmVyKTsKLX0K
LQotdm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OmRpZFJlY2VpdmVSZWRpcmVjdFJlc3Bv
bnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkKLXsKLSAgICBjYWxsT25NYWluVGhyZWFk
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlc3BvbnNlID0gV1RGTW92
ZShyZXNwb25zZSldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghbV9sb2FkZXIpCi0gICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9u
c2U6OlNvdXJjZTo6U2VydmljZVdvcmtlcik7Ci0KLSAgICAgICAgbV9sb2FkZXItPndpbGxTZW5k
UmVxdWVzdChtX2xvYWRlci0+cmVxdWVzdCgpLnJlZGlyZWN0ZWRSZXF1ZXN0KHJlc3BvbnNlLCBt
X3Nob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QpLCByZXNwb25zZSwgW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBwcm90ZWN0ZWRUaGlzLmNvcHlSZWYoKV0oUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCkgewotICAgICAgICAgICAgaWYgKCFtX2xvYWRlciB8fCByZXF1ZXN0Lmlz
TnVsbCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBXVEZNb3ZlKG1f
Y2FsbGJhY2spKQotICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhSZXN1bHQ6OlN1Y2NlZWRl
ZCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
QVNTRVJUKHJlcXVlc3QgPT0gbV9sb2FkZXItPnJlcXVlc3QoKSk7Ci0gICAgICAgICAgICBzdGFy
dCgpOwotICAgICAgICB9KTsKLSAgICB9KTsKLX0KLQotdm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50
RmV0Y2g6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIGJv
b2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCi17Ci0gICAgY2FsbE9u
TWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXNwb25z
ZSA9IFdURk1vdmUocmVzcG9uc2UpLCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVz
c2FnZV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFtX2xvYWRlcikKLSAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICBpZiAoYXV0byBjYWxsYmFjayA9IFdURk1vdmUobV9jYWxsYmFjaykp
Ci0gICAgICAgICAgICBjYWxsYmFjayhSZXN1bHQ6OlN1Y2NlZWRlZCk7Ci0KLSAgICAgICAgQVNT
RVJUKCFyZXNwb25zZS5pc1JlZGlyZWN0aW9uKCkgfHwgIXJlc3BvbnNlLmh0dHBIZWFkZXJGaWVs
ZHMoKS5jb250YWlucyhIVFRQSGVhZGVyTmFtZTo6TG9jYXRpb24pKTsKLQotICAgICAgICBpZiAo
IW5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKSB7Ci0gICAgICAgICAgICBt
X2xvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBbXSB7IH0pOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgbV9sb2FkZXItPmRpZFJlY2VpdmVSZXNw
b25zZShyZXNwb25zZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRo
aXMpXSB7Ci0gICAgICAgICAgICBpZiAoIW1fbG9hZGVyKQotICAgICAgICAgICAgICAgIHJldHVy
bjsKLQotICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5jb250aW51ZURpZFJlY2VpdmVGZXRjaFJl
c3BvbnNlKG1faWRlbnRpZmllciwgbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
cik7Ci0gICAgICAgIH0pOwotICAgIH0pOwotfQotCi12b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRG
ZXRjaDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJl
bmNlLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQotewotICAgIGF1dG8qIGRhdGEgPSByZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhUmVmZXJlbmNlLmRhdGEoKSk7Ci0gICAgY2Fs
bE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBlbmNv
ZGVkRGF0YUxlbmd0aCwgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgZGF0YVJl
ZmVyZW5jZS5zaXplKCkpXSgpIG11dGFibGUgewotICAgICAgICBpZiAoIW1fbG9hZGVyKQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1fZW5jb2RlZERhdGFMZW5ndGggKz0gZW5jb2Rl
ZERhdGFMZW5ndGg7Ci0KLSAgICAgICAgbV9sb2FkZXItPmRpZFJlY2VpdmVCdWZmZXIoV1RGTW92
ZShidWZmZXIpLCBtX2VuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKLSAgICB9
KTsKLX0KLQotdm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OmRpZFJlY2VpdmVGb3JtRGF0
YShjb25zdCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJikKLXsKLSAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IGZvcm0gZGF0YSByZWFkaW5nLgotfQotCi12b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRj
aDo6ZGlkRmluaXNoKCkKLXsKLSAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyldIHsKLSAgICAgICAgaWYgKCFtX2xvYWRlcikKLSAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICBBU1NFUlQoIW1fY2FsbGJhY2spOwotCi0gICAgICAgIG1f
bG9hZGVyLT5kaWRGaW5pc2hMb2FkaW5nKE5ldHdvcmtMb2FkTWV0cmljcyB7IH0pOwotICAgICAg
ICBtX3NlcnZpY2VXb3JrZXJQcm92aWRlci5mZXRjaEZpbmlzaGVkKG1faWRlbnRpZmllcik7Ci0g
ICAgfSk7Ci19Ci0KLXZvaWQgU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpkaWRGYWlsKFJlc291
cmNlRXJyb3ImJiBlcnJvcikKLXsKLSAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGVycm9yID0gV1RGTW92ZShlcnJvcildIHsKLSAgICAg
ICAgaWYgKCFtX2xvYWRlcikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBhdXRvKiBk
b2N1bWVudCA9IG1fbG9hZGVyLT5mcmFtZSgpID8gbV9sb2FkZXItPmZyYW1lKCktPmRvY3VtZW50
KCkgOiBudWxscHRyOwotICAgICAgICBpZiAoZG9jdW1lbnQpIHsKLSAgICAgICAgICAgIGlmICht
X2xvYWRlci0+b3B0aW9ucygpLmRlc3RpbmF0aW9uICE9IEZldGNoT3B0aW9uczo6RGVzdGluYXRp
b246OkVtcHR5U3RyaW5nIHx8IGVycm9yLmlzR2VuZXJhbCgpKQotICAgICAgICAgICAgICAgIGRv
Y3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVs
OjpFcnJvciwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKSk7Ci0gICAgICAgICAgICBpZiAo
bV9sb2FkZXItPm9wdGlvbnMoKS5kZXN0aW5hdGlvbiAhPSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0
aW9uOjpFbXB0eVN0cmluZykKLSAgICAgICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1ha2VTdHJpbmco
IkNhbm5vdCBsb2FkICIsIGVycm9yLmZhaWxpbmdVUkwoKS5zdHJpbmcoKSwgIi4iKSk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBtX2xvYWRlci0+ZGlkRmFpbChlcnJvcik7Ci0KLSAgICAgICAgaWYg
KGF1dG8gY2FsbGJhY2sgPSBXVEZNb3ZlKG1fY2FsbGJhY2spKQotICAgICAgICAgICAgY2FsbGJh
Y2soUmVzdWx0OjpTdWNjZWVkZWQpOwotCi0gICAgICAgIG1fc2VydmljZVdvcmtlclByb3ZpZGVy
LmZldGNoRmluaXNoZWQobV9pZGVudGlmaWVyKTsKLSAgICB9KTsKLX0KLQotdm9pZCBTZXJ2aWNl
V29ya2VyQ2xpZW50RmV0Y2g6OmRpZE5vdEhhbmRsZSgpCi17Ci0gICAgY2FsbE9uTWFpblRocmVh
ZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7Ci0gICAgICAgIGlmICgh
bV9sb2FkZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKGF1dG8gY2FsbGJh
Y2sgPSBXVEZNb3ZlKG1fY2FsbGJhY2spKQotICAgICAgICAgICAgY2FsbGJhY2soUmVzdWx0OjpV
bmhhbmRsZWQpOwotCi0gICAgICAgIG1fc2VydmljZVdvcmtlclByb3ZpZGVyLmZldGNoRmluaXNo
ZWQobV9pZGVudGlmaWVyKTsKLSAgICB9KTsKLX0KLQotdm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50
RmV0Y2g6OmNhbmNlbCgpCi17Ci0gICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBXVEZNb3ZlKG1fY2Fs
bGJhY2spKQotICAgICAgICBjYWxsYmFjayhSZXN1bHQ6OkNhbmNlbGxlZCk7Ci0KLSAgICBtX2Nv
bm5lY3Rpb24tPmNhbmNlbEZldGNoKG1faWRlbnRpZmllciwgbV9zZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uSWRlbnRpZmllcik7Ci0gICAgbV9sb2FkZXIgPSBudWxscHRyOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGll
bnRGZXRjaC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtl
ckNsaWVudEZldGNoLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2NjdhYzc1N2Zk
ZDcxMDg4OGI4YjJkNGVlZTk0NDk5MGYwYjBkMDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2Vy
dmljZVdvcmtlckNsaWVudEZldGNoLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0K
LSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCi0jaW5jbHVkZSAiRm9ybURhdGFSZWZlcmVuY2Uu
aCIKLSNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKLSNpbmNsdWRlICJNZXNzYWdlU2VuZGVy
LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GZXRjaElkZW50aWZpZXIuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlRXJyb3IuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZGVyLmg+
Ci0jaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQg
ewotCi1jbGFzcyBXZWJTV0NsaWVudENvbm5lY3Rpb247Ci1jbGFzcyBXZWJTZXJ2aWNlV29ya2Vy
UHJvdmlkZXI7Ci0KLWNsYXNzIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaCBmaW5hbCA6IHB1Ymxp
YyBSZWZDb3VudGVkPFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaD4sIHB1YmxpYyBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciB7Ci1wdWJsaWM6Ci0gICAgZW51bSBjbGFzcyBSZXN1bHQgeyBTdWNjZWVkZWQs
IENhbmNlbGxlZCwgVW5oYW5kbGVkIH07Ci0gICAgdXNpbmcgQ2FsbGJhY2sgPSBXVEY6OkNvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVzdWx0KT47Ci0KLSAgICBzdGF0aWMgUmVmPFNlcnZpY2VXb3Jr
ZXJDbGllbnRGZXRjaD4gY3JlYXRlKFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlciYsIFJlZjxXZWJD
b3JlOjpSZXNvdXJjZUxvYWRlcj4mJiwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyLCBSZWY8V2Vi
U1dDbGllbnRDb25uZWN0aW9uPiYmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9I
VFRQUmVkaXJlY3QsIENhbGxiYWNrJiYpOwotICAgIH5TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2go
KTsKLQotICAgIHZvaWQgc3RhcnQoKTsKLQotICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7Ci0gICAgdm9pZCBjYW5jZWwoKTsK
LQotICAgIGJvb2wgaXNPbmdvaW5nKCkgY29uc3QgeyByZXR1cm4gISFtX2NhbGxiYWNrOyB9Ci0K
LXByaXZhdGU6Ci0gICAgU2VydmljZVdvcmtlckNsaWVudEZldGNoKFdlYlNlcnZpY2VXb3JrZXJQ
cm92aWRlciYsIFJlZjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcj4mJiwgV2ViQ29yZTo6RmV0Y2hJ
ZGVudGlmaWVyLCBSZWY8V2ViU1dDbGllbnRDb25uZWN0aW9uPiYmLCBib29sIHNob3VsZENsZWFy
UmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIENhbGxiYWNrJiYpOwotCi0gICAgT3B0aW9u
YWw8V2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4gdmFsaWRhdGVSZXNwb25zZShjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0KLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZU1lc3NhZ2UpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZUZvcm1EYXRhKGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmKTsKLSAgICB2
b2lkIGRpZEZpbmlzaCgpOwotICAgIHZvaWQgZGlkRmFpbChXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JiYpOwotICAgIHZvaWQgZGlkTm90SGFuZGxlKCk7Ci0KLSAgICBXZWJTZXJ2aWNlV29ya2VyUHJv
dmlkZXImIG1fc2VydmljZVdvcmtlclByb3ZpZGVyOwotICAgIFJlZlB0cjxXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlcj4gbV9sb2FkZXI7Ci0gICAgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyIG1faWRl
bnRpZmllcjsKLSAgICBSZWY8V2ViU1dDbGllbnRDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247Ci0g
ICAgQ2FsbGJhY2sgbV9jYWxsYmFjazsKLSAgICBib29sIG1fc2hvdWxkQ2xlYXJSZWZlcnJlck9u
SFRUUFNUb0hUVFBSZWRpcmVjdCB7IHRydWUgfTsKLSAgICBpbnQ2NF90IG1fZW5jb2RlZERhdGFM
ZW5ndGggeyAwIH07Ci0gICAgYm9vbCBtX2RpZEZhaWwgeyBmYWxzZSB9OwotICAgIFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIG1fc2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbklkZW50aWZpZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlm
IC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5t
ZXNzYWdlcy5pbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2QzYmM3NDA0YmZiNDdk
NjFlMGQxNTg4ZTFhNWYyYTljMDZhMTY2MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNl
V29ya2VyQ2xpZW50RmV0Y2gubWVzc2FnZXMuaW4KKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCww
IEBACi0jIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0j
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCi0KLW1lc3NhZ2VzIC0+IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaCB7
Ci0gICAgRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9u
c2UsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCi0gICAgRGlk
UmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25z
ZSkKLSAgICBEaWRSZWNlaXZlRGF0YShJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSwgaW50NjRfdCBl
bmNvZGVkRGF0YUxlbmd0aCkKLSAgICBEaWRSZWNlaXZlRm9ybURhdGEoSVBDOjpGb3JtRGF0YVJl
ZmVyZW5jZSBkYXRhKQotICAgIERpZEZpbmlzaCgpCi0gICAgRGlkRmFpbChXZWJDb3JlOjpSZXNv
dXJjZUVycm9yIGVycm9yKQotICAgIERpZE5vdEhhbmRsZSgpCi19Ci0KLSNlbmRpZiAvLyBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAppbmRleCAwNmE0Y2M3ZGI3YTE4
YzExODdiYWZjNjU4ODU1NDMyYzQ1ZWIyYWUyLi5kMDA4OWJmNThiNjU0NTY1YThlMWU5MTJkMWJk
YTYyMmE3ZDllZmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKICNp
bmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NN
ZXNzYWdlcy5oIgotI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5oIgogI2luY2x1
ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzUG9vbE1lc3NhZ2VzLmgiCkBAIC0yMDMsMjEgKzIwMiw2IEBAIHZv
aWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpnZXRSZWdpc3RyYXRpb25zKFNlY3VyaXR5T3JpZ2lu
RGF0YSYmIHRvcE9yaWdpbiwgY29uCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViU1dDbGllbnRDb25u
ZWN0aW9uOjpzdGFydEZldGNoKEZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIsIFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEZldGNoT3B0
aW9ucyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKLXsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlN0YXJ0RmV0Y2ggeyBzZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyLCByZXF1ZXN0LCBvcHRpb25zLCBJ
UEM6OkZvcm1EYXRhUmVmZXJlbmNlIHsgcmVxdWVzdC5odHRwQm9keSgpIH0sIHJlZmVycmVyIH0p
OwotfQotCi12b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Y2FuY2VsRmV0Y2goRmV0Y2hJZGVu
dGlmaWVyIGZldGNoSWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpCi17Ci0gICAgc2VuZChNZXNz
YWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpDYW5jZWxGZXRjaCB7IHNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIgfSk7Ci19Ci0KLXZvaWQgV2Vi
U1dDbGllbnRDb25uZWN0aW9uOjpjb250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKEZldGNo
SWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVu
dGlmaWVyIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKQotewotICAgIHNlbmQo
TWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6Q29udGludWVEaWRSZWNlaXZlRmV0Y2hS
ZXNwb25zZSB7IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBmZXRjaElkZW50
aWZpZXIgfSk7Ci19Ci0KIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpjb25uZWN0aW9uVG9T
ZXJ2ZXJMb3N0KCkKIHsKICAgICBjbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaAppbmRleCAyN2ZlYTJj
MWIyNGI4YzJhOTY0YzRlOTY3ZDNmN2VjYTM4ZDAzNzJmLi45ZTQ0NWY1NWM5NjgwOWNhOWNkNjM1
NjMxZjU1NTQ3OTkxZWNhNTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaApAQCAtMzAsNyArMzAsNiBAQAog
I2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNp
bmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCi0jaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudEZl
dGNoLmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9NZXNz
YWdlV2l0aE1lc3NhZ2VQb3J0cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1dDbGllbnRDb25uZWN0
aW9uLmg+CkBAIC02MCw5ICs1OSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCiAgICAgYm9vbCBt
YXlIYXZlU2VydmljZVdvcmtlclJlZ2lzdGVyZWRGb3JPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJikgY29uc3QgZmluYWw7Ci0gICAgdm9pZCBzdGFydEZldGNoKFdlYkNv
cmU6OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6
OkZldGNoT3B0aW9ucyYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpOwotICAgIHZvaWQgY2FuY2Vs
RmV0Y2goV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uSWRlbnRpZmllcik7Ci0gICAgdm9pZCBjb250aW51ZURpZFJlY2VpdmVGZXRjaFJl
c3BvbnNlKFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbklkZW50aWZpZXIpOwogCiAgICAgdm9pZCBjb25uZWN0aW9uVG9TZXJ2ZXJMb3N0
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNl
cnZpY2VXb3JrZXJQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwCmluZGV4IDYyYTM5YjI1ZmRmYWQxN2UxMTU3
NjMzMDAyODI0MmIzMDlmMTkyODUuLjdkY2QxOGViYWQzMDZkYWU0NzViMDA3YjU3ZTdlMTY1ZjZi
YjM1MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNl
cnZpY2VXb3JrZXJQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcApAQCAtNjYsNDggKzY2LDYgQEAgV2Vi
Q29yZTo6U1dDbGllbnRDb25uZWN0aW9uKiBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OmV4aXN0
aW5nU2VydmljZVdvcmtlckNvbm4KICAgICByZXR1cm4gbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LT5leGlzdGluZ1NlcnZpY2VXb3JrZXJDb25uZWN0aW9uKCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUg
Ym9vbCBzaG91bGRIYW5kbGVGZXRjaChjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlv
bnMpCi17Ci0gICAgaWYgKG9wdGlvbnMuc2VydmljZVdvcmtlcnNNb2RlID09IFNlcnZpY2VXb3Jr
ZXJzTW9kZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGlzUG90ZW50
aWFsTmF2aWdhdGlvbk9yU3VicmVzb3VyY2VSZXF1ZXN0KG9wdGlvbnMuZGVzdGluYXRpb24pKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gISFvcHRpb25zLnNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOwotfQotCi12b2lkIFdlYlNlcnZpY2VXb3JrZXJQcm92
aWRlcjo6aGFuZGxlRmV0Y2goUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgYm9vbCBzaG91bGRDbGVh
clJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6
OkNhbGxiYWNrJiYgY2FsbGJhY2spCi17Ci0gICAgaWYgKCFMZWdhY3lTY2hlbWVSZWdpc3RyeTo6
Y2FuU2VydmljZVdvcmtlcnNIYW5kbGVVUkxTY2hlbWUobG9hZGVyLnJlcXVlc3QoKS51cmwoKS5w
cm90b2NvbCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkgfHwgIXNob3VsZEhhbmRsZUZldGNo
KGxvYWRlci5vcHRpb25zKCkpKSB7Ci0gICAgICAgIGNhbGxiYWNrKFNlcnZpY2VXb3JrZXJDbGll
bnRGZXRjaDo6UmVzdWx0OjpVbmhhbmRsZWQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgYXV0byYgY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbigpLnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKCk7Ci0gICAgYXV0
byBmZXRjaElkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxGZXRjaElkZW50aWZpZXJU
eXBlPihsb2FkZXIuaWRlbnRpZmllcigpKTsKLSAgICBtX29uZ29pbmdGZXRjaFRhc2tzLmFkZChm
ZXRjaElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6Y3JlYXRlKCp0aGlzLCBs
b2FkZXIsIGZldGNoSWRlbnRpZmllciwgY29ubmVjdGlvbiwgc2hvdWxkQ2xlYXJSZWZlcnJlck9u
SFRUUFNUb0hUVFBSZWRpcmVjdCwgV1RGTW92ZShjYWxsYmFjaykpKTsKLX0KLQotYm9vbCBXZWJT
ZXJ2aWNlV29ya2VyUHJvdmlkZXI6OmNhbmNlbEZldGNoKEZldGNoSWRlbnRpZmllciBmZXRjaElk
ZW50aWZpZXIpCi17Ci0gICAgYXV0byBmZXRjaCA9IG1fb25nb2luZ0ZldGNoVGFza3MudGFrZShm
ZXRjaElkZW50aWZpZXIpOwotICAgIGlmIChmZXRjaCkKLSAgICAgICAgKCpmZXRjaCktPmNhbmNl
bCgpOwotICAgIHJldHVybiAhIWZldGNoOwotfQotCi12b2lkIFdlYlNlcnZpY2VXb3JrZXJQcm92
aWRlcjo6ZmV0Y2hGaW5pc2hlZChGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyKQotewot
ICAgIG1fb25nb2luZ0ZldGNoVGFza3MudGFrZShmZXRjaElkZW50aWZpZXIpOwotfQotCi12b2lk
IFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6ZGlkUmVjZWl2ZVNlcnZpY2VXb3JrZXJDbGllbnRG
ZXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRl
Y29kZXIpCi17Ci0gICAgaWYgKGF1dG8gZmV0Y2ggPSBtX29uZ29pbmdGZXRjaFRhc2tzLmdldCht
YWtlT2JqZWN0SWRlbnRpZmllcjxGZXRjaElkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0
aW9uSUQoKSkpKQotICAgICAgICBmZXRjaC0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwg
ZGVjb2Rlcik7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaAppbmRleCAwODhhZWQ5NTRlOWE5
ZDRlZTU5MmY1ZDc1NTI3MjcxNDRhMDUwYTIyLi5jMDBjMDQ3OTMxMjdhMDY5ZmFlOTUyMzAxMjVk
YmI5NTU1NGNkNzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaApAQCAtMjcsNyArMjcsNiBAQAog
CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCi0jaW5jbHVkZSAiU2VydmljZVdvcmtlckNs
aWVudEZldGNoLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyUHJvdmlkZXIuaD4K
ICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApAQCAtNDEsMTEgKzQwLDYgQEAgY2xh
c3MgV2ViU2VydmljZVdvcmtlclByb3ZpZGVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJQcm92aWRlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFdlYlNlcnZpY2VXb3JrZXJQ
cm92aWRlciYgc2luZ2xldG9uKCk7CiAKLSAgICB2b2lkIGhhbmRsZUZldGNoKFdlYkNvcmU6OlJl
c291cmNlTG9hZGVyJiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGly
ZWN0LCBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkNhbGxiYWNrJiYpOwotICAgIGJvb2wgY2Fu
Y2VsRmV0Y2goV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyKTsKLSAgICB2b2lkIGZldGNoRmluaXNo
ZWQoV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyKTsKLQotICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU2VydmljZVdvcmtlckNsaWVudFJlZ2lzdHJhdGlvbk1h
dGNoKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogCiBwcml2YXRlOgpAQCAtNTQs
OCArNDgsNiBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uKiBl
eGlzdGluZ1NlcnZpY2VXb3JrZXJDb25uZWN0aW9uKCkgZmluYWw7CiAgICAgV2ViQ29yZTo6U1dD
bGllbnRDb25uZWN0aW9uJiBzZXJ2aWNlV29ya2VyQ29ubmVjdGlvbigpIGZpbmFsOwotCi0gICAg
SGFzaE1hcDxXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIsIFJlZjxTZXJ2aWNlV29ya2VyQ2xpZW50
RmV0Y2g+PiBtX29uZ29pbmdGZXRjaFRhc2tzOwogfTsgLy8gY2xhc3MgV2ViU2VydmljZVdvcmtl
clByb3ZpZGVyCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFu
Z2VMb2cKaW5kZXggMDE3YjQ3ZjMyMDdkOTllNWJiNWU3N2MwYWM2NWIxNzE5NzJmZGU5ZS4uYWQx
YTViYjM4OGU1MGYzZGE5NWJkMDcwZTBiZDY5MjRhMDg2NjI3ZiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTktMTAtMTEgIFlvdWVubiBGYWJsZXQg
IDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEhhbmRsZSBzZXJ2aWNlIHdvcmtlciBsb2Fk
cyB0aHJvdWdoIE5ldHdvcmtSZXNvdXJjZUxvYWRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMzA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3Jr
ZXJzL3NlcnZpY2Utd29ya2VyL2ZldGNoLXJlcXVlc3QteGhyLmh0dHBzLWV4cGVjdGVkLnR4dDoK
KwogMjAxOS0xMC0xMCAgQ2FybG9zIEFsYmVydG8gTG9wZXogUGVyZXogIDxjbG9wZXpAaWdhbGlh
LmNvbT4KIAogICAgICAgICBJbXBvcnQgY3NzL2Nzcy1pbWFnZXMgV1BUIHRlc3RzCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Ut
d29ya2Vycy9zZXJ2aWNlLXdvcmtlci9mZXRjaC1yZXF1ZXN0LXhoci5odHRwcy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Ut
d29ya2Vycy9zZXJ2aWNlLXdvcmtlci9mZXRjaC1yZXF1ZXN0LXhoci5odHRwcy1leHBlY3RlZC50
eHQKaW5kZXggNGZiNmJiNTNiMzE2NTUyZjQxZDBhOTdmYTkzYWRkN2Y2ODZhNjUyMy4uODVhYTAw
YjBhZThlZGNjMTY4MTQ1NjVkOTk5ZGFkN2U0MWE5M2M5NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2Vydmlj
ZS13b3JrZXIvZmV0Y2gtcmVxdWVzdC14aHIuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3Nl
cnZpY2Utd29ya2VyL2ZldGNoLXJlcXVlc3QteGhyLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtOCw3
ICs4LDcgQEAgUEFTUyBGZXRjaEV2ZW50I3JlcXVlc3QuYm9keSBjb250YWlucyBYSFIgcmVxdWVz
dCBkYXRhIChzdHJpbmcpCiBQQVNTIEZldGNoRXZlbnQjcmVxdWVzdC5ib2R5IGNvbnRhaW5zIFhI
UiByZXF1ZXN0IGRhdGEgKGJsb2IpIAogUEFTUyBGZXRjaEV2ZW50I3JlcXVlc3QubWV0aG9kIGlz
IHNldCB0byBYSFIgbWV0aG9kIAogUEFTUyBYSFIgdXNpbmcgT1BUSU9OUyBtZXRob2QgCi1GQUlM
IFhIUiB3aXRoIGZvcm0gZGF0YSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0
aCB2YWx1ZTogb2JqZWN0ICJFcnJvcjogYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgKHN0cmluZykg
IlBPU1QiIGJ1dCBnb3QgKHVuZGVmaW5lZCkgdW5kZWZpbmVkIgorUEFTUyBYSFIgd2l0aCBmb3Jt
IGRhdGEgCiBQQVNTIFhIUiB3aXRoIG1vZGUvY3JlZGVudGlhbHMgc2V0IAogUEFTUyBYSFIgdG8g
ZGF0YSBVUkwgCiBQQVNTIHJlc3RvcmUgZ2xvYmFsIHN0YXRlIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380747</attachid>
            <date>2019-10-11 06:12:14 -0700</date>
            <delta_ts>2019-10-11 06:57:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202309-20191011151211.patch</filename>
            <type>text/plain</type>
            <size>107518</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMDAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNmMDc4MDEwMzI2NTYy
M2ZiNmRhNjE0NGZhNmU2ZjU4NjRjNWVmNy4uNzk5N2QzNDE5ZGQ3Y2UyOTFjOTkxOWI0ZmE0OGVh
MDIxZDlhYTVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTEwLTEwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBIYW5kbGUgc2VydmljZSB3
b3JrZXIgbG9hZHMgdGhyb3VnaCBOZXR3b3JrUmVzb3VyY2VMb2FkZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjMwOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IHRvIHNlcmlhbGl6ZSBIVFRQ
IGhlYWRlciBuYW1lcyBhcyBlbnVtZXJhdGlvbi4KKyAgICAgICAgVXBkYXRlZCBTV1NlcnZlciBh
YmlsaXR5IHRvIGhhbmRsZSBzY2hlbWVzIGJ5IGFkZGluZyBidWlsdC1pbiBzdXBwb3J0IGZvciBI
VFRQIGFuZCBIVFRQUyBhcyBkb25lIGluIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5LgorCisgICAgICAg
IENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VM
b2FkZXJPcHRpb25zLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jcmVhdGUtaHR0cC1o
ZWFkZXItbmFtZS10YWJsZToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpjYW5IYW5kbGVTY2hlbWUgY29u
c3QpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2IpOgorCiAyMDE5LTEw
LTEwICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRleC5ydT4KIAogICAgICAgICBH
dWFyZCBHQ3J5cHQtc3BlY2lmaWMgY29kZSB3aXRoIFVTRShHQ1JZUFQpIGluc3RlYWQgb2YgUExB
VEZPUk0gbWFjcm9zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQ1MTcyNzA4YWNhM2JiYmJkNDljODMzZTdiN2Q2MTFk
MGM5MTAzYWMuLjcxYzNkMTVlYjJkODNlYTg4MmNjYzNhNGFiOWIxNGRlNDM4ODU0ODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsOTkgQEAKKzIwMTktMTAtMTAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgorCisgICAgICAgIEhhbmRsZSBzZXJ2aWNlIHdvcmtlciBsb2FkcyB0aHJvdWdo
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjAyMzA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVtb3ZlIFNlcnZpY2VXb3JrZXJGZXRjaENsaWVudC4KKyAgICAgICAg
SW5zdGVhZCB3ZSB1c2UgdGhlIG5vcm1hbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXIvV2ViUmVzb3Vy
Y2VMb2FkZXIgY29tbXVuaWNhdGlvbiBjaGFubmVsLgorICAgICAgICBXZSBwYXNzIGFkZGl0aW9u
YWwgcGFyYW1ldGVycywgaW4gcGFydGljdWxhciBzZXJ2aWNlIHdvcmtlciBtb2RlIGFuZCByZWdp
c3RyYXRpb24gaWRlbnRpZmllci4KKworICAgICAgICBCYXNlZCBvbiB0aGF0IGluZm9ybWF0aW9u
LCBuZXR3b3JrIHByb2Nlc3Mgd2lsbCBkZWNpZGUgd2hldGhlciB0byBsb2FkIGZyb20gc2Vydmlj
ZSB3b3JrZXIgb3IgbmV0d29yay4KKyAgICAgICAgVGhlIGZpcnN0IGFkdmFudGFnZSBpcyB0aGF0
IGluIGNhc2Ugb2Ygc2VydmljZSB3b3JrZXIgbm90IGhhbmRsaW5nIHRoZSBsb2FkLCBnb2luZyB0
byB0aGUgbmV0d29yayBpcyBmYXN0ZXIuCisgICAgICAgIFRoaXMgd2lsbCBhbHNvIGFsbG93IHVz
IHRvIGRvIHRoZSByZWdpc3RyYXRpb24gbWF0Y2hpbmcgaW4gbmV0d29yayBwcm9jZXNzIHdoZW4g
cmVjZWl2aW5nIGEgbmF2aWdhdGlvbiByZXF1ZXN0LgorCisgICAgICAgIFNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2sgaXMgbm93IGJlZWZlZCB1cCB0byBkbyB0aGUgbGluayBiZXR3ZWVuIHNlcnZpY2Ug
d29ya2VyIGFuZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXIvV2ViUmVzb3VyY2VMb2FkZXIuCisgICAg
ICAgIFRvIHN1cHBvcnQgdGhlIHNhbWUgY29uc29sZSBsb2dnaW5nLCB3ZSBhZGQgYSBuZXcgbWVz
c2FnZSBjYWxsZWQgRGlkRmFpbFNlcnZpY2VXb3JrZXJMb2FkLgorCisgICAgICAgIFRvIHN1cHBv
cnQgQVBJIHRlc3RzLCB3ZSBjb250aW51ZSB0byBnbyB0byB0aGUgc2VydmljZSB3b3JrZXIgYmVm
b3JlIHRyeWluZyB0byBnbyB0byBVUkwgc2NoZW1lIGhhbmRsZXJzLgorICAgICAgICBUaGlzIGFk
ZHMgc29tZSBidXJkZW4gYXMgd2UgbmVlZCB0byBnbyB0byBuZXR3b3JrIHByb2Nlc3Mvc2Vydmlj
ZSB3b3JrZXIgcHJvY2VzcyBhbmQsIGluIGNhc2UgbG9hZCBpcyBub3QgaGFuZGxlZAorICAgICAg
ICBieSBzZXJ2aWNlIHdvcmtlciwgd2UgZ28gYmFjayB0byB0aGUgd2ViIHByb2Nlc3MgdG8gZG8g
dGhlIGxvYWQgdGhyb3VnaCBVUkwgc2NoZW1lIGhhbmRsZXJzLgorICAgICAgICBGb3IgdGhhdCBw
dXJwb3NlIHdlIHVzZSBTZXJ2aWNlV29ya2Vyc01vZGU6Ok9ubHkuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Ogor
ICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6c2NoZWR1bGVSZXNvdXJjZUxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjphYm9ydCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRXaXRo
U2VydmljZVdvcmtlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
c2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2Vydmlj
ZVdvcmtlckZldGNoVGFzazo6U2VydmljZVdvcmtlckZldGNoVGFzayk6CisgICAgICAgIChXZWJL
aXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6On5TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKToKKyAg
ICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6c2VuZFRvU2VydmljZVdvcmtl
cik6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnNlbmRUb0NsaWVu
dCk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnN0YXJ0KToKKyAg
ICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6c3RhcnRGZXRjaCk6CisgICAg
ICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZWRpcmVjdFJl
c3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6
ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
OjpkaWRSZWNlaXZlRm9ybURhdGEpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrOjpkaWRGaW5pc2gpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrOjpkaWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6
ZGlkTm90SGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6
Y2FuY2VsRnJvbUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s6OmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpjb250aW51ZUZldGNoVGFza1dpdGgpOgorICAgICAgICAo
V2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjp0aW1lb3V0VGltZXJGaXJlZCk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Lmg6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmZldGNoSWRlbnRp
ZmllciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y2FuY2VsRmV0Y2gpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTV1NlcnZlckNvbm5lY3Rpb246OmNyZWF0ZUZldGNoVGFzayk6CisgICAgICAgIChXZWJLaXQ6
OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaCk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6c3RhcnRGZXRjaCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZGlkUmVj
ZWl2ZUZldGNoVGFza01lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246OnJlZ2lzdGVyRmV0Y2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246OnVucmVnaXN0ZXJGZXRjaCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZmV0Y2hUYXNrVGltZWRPdXQpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6aXBjQ29ubmVjdGlvbiBjb25zdCk6CisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlJlc291cmNlTG9hZGVyOjpkaWRGYWlsU2VydmljZVdvcmtlckxvYWQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6c2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50
RmV0Y2guaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdv
cmtlckNsaWVudEZldGNoLm1lc3NhZ2VzLmluOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwOgorICAgICAgICAqIFdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmg6CisKIDIwMTktMTAtMTAgIEJh
c3VrZSBTdXp1a2kgIDxCYXN1a2UuU3V6dWtpQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5DYWly
b10gTW92ZSByZW1vdGUgY29tbXVuaWNhdGlvbiBoYW5kbGluZyBmcm9tIFJlbW90ZUluc3BlY3Rv
clNlcnZlciB0byBSZW1vdGVJbnNwZWN0b3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkZXJPcHRpb25zLmgKaW5kZXggOWUzMDc0ZGEzMjExZDBlZTk3YjhlYjJlZGY0OTE2
OWVjNWRmMmE0YS4uYWVjZjk0NDFkMzIxZWQ5OTZiOGU0ZDIwMjEwMGI2NWZmYzBhZTEzNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaApAQCAtMTc1
LDMgKzE3NSwxNiBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zIDogcHVibGljIEZldGNo
T3B0aW9ucyB7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYg
eworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJz
TW9kZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJzTW9kZSwKKyAgICAgICAgV2ViQ29yZTo6U2VydmljZVdvcmtlcnNNb2Rl
OjpBbGwsCisgICAgICAgIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJzTW9kZTo6Tm9uZSwKKyAgICAg
ICAgV2ViQ29yZTo6U2VydmljZVdvcmtlcnNNb2RlOjpPbmx5CisgICAgPjsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jcmVhdGUtaHR0cC1oZWFkZXItbmFtZS10YWJsZSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3JlYXRlLWh0dHAtaGVhZGVyLW5hbWUtdGFibGUKaW5kZXggNjQ3Y2RkODI0MmZh
Zjc4NWUwMjMxNDM0ZDAwOTBlNmMzOTc3M2RhZC4uNDM5ZGI2OGMzMmM0M2UwODNiMDAwNjc4ZDcy
Y2UzNTlkYWQzZTI5ZiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jcmVhdGUtaHR0cC1oZWFkZXItbmFtZS10YWJsZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NyZWF0ZS1odHRwLWhlYWRlci1uYW1lLXRhYmxlCkBAIC0yMzMsNiArMjMz
LDI4IEBAIFdFQkNPUkVfRVhQT1JUIFN0cmluZ1ZpZXcgaHR0cEhlYWRlck5hbWVTdHJpbmcoSFRU
UEhlYWRlck5hbWUpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBXVEYg
eworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkhUVFBIZWFkZXJOYW1l
PiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6SFRU
UEhlYWRlck5hbWUsCisnJycpCisKK2lzX2ZpcnN0ID0gVHJ1ZQorZm9yIGh0dHBfaGVhZGVyX25h
bWUgaW4gaHR0cF9oZWFkZXJfbmFtZXM6CisgICAgaWYgaXNfZmlyc3Q6CisgICAgICAgIGlzX2Zp
cnN0ID0gRmFsc2UKKyAgICBlbHNlOgorICAgIAloZWFkZXJfZmlsZS53cml0ZSgnLFxuJykKKwor
ICAgIGhlYWRlcl9maWxlLndyaXRlKCcgICAgICAgIFdlYkNvcmU6OkhUVFBIZWFkZXJOYW1lOjol
cycgJSBodHRwX2hlYWRlcl9uYW1lX3RvX2lkW2h0dHBfaGVhZGVyX25hbWVdKQorCitoZWFkZXJf
ZmlsZS53cml0ZSgnJycKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKICNlbmRp
ZiAvLyBIVFRQSGVhZGVyTmFtZXNfaAogJycnKQogaGVhZGVyX2ZpbGUuY2xvc2UoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRl
eCA5YmI2NmFiMjhlMDc1ZTA3MDBjZjNjNzY5Y2UzY2ViMmYzNmI4NjAwLi4xMzdjNjYyNTUyZTFj
YWU2MGM1NTIwMjAyZGU3OGNmNDhmZWIxZDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtOTc0LDYgKzk3NCwyMSBAQCB2
b2lkIFNXU2VydmVyOjpjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgcmVnaXN0cmFibGVEb21haQogICAgIG1fY3JlYXRlQ29udGV4dENvbm5lY3Rpb25DYWxs
YmFjayhyZWdpc3RyYWJsZURvbWFpbik7CiB9CiAKK2Jvb2wgU1dTZXJ2ZXI6OmNhbkhhbmRsZVNj
aGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkgY29uc3QKK3sKKyAgICBpZiAoc2NoZW1lLmlzTnVs
bCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoc2NoZW1lLnN0YXJ0c1dpdGhJ
Z25vcmluZ0FTQ0lJQ2FzZSgiaHR0cCJfcykpIHsKKyAgICAgICAgaWYgKHNjaGVtZS5sZW5ndGgo
KSA9PSA0KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChzY2hlbWUubGVu
Z3RoKCkgPT0gNSAmJiBpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKHNjaGVtZVs0XSwgJ3MnKSkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBtX3JlZ2lzdGVy
ZWRTY2hlbWVzLmNvbnRhaW5zKHNjaGVtZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRleCA0NjAxMzE3NjE2YzgxNjc0
OGQyMDgwMGYyNjBiMzUyODU3NDg4MTcwLi4zMTNkNWU5MWUzYTFjZmQzYmMwOGY5ZDc4NjFhZjE5
ODk3YjlhMDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlci5oCkBAIC0xNjQsNyArMTY0LDcgQEAgcHVibGljOgogICAgIENvbm5lY3Rpb24q
IGNvbm5lY3Rpb24oU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKSBjb25z
dCB7IHJldHVybiBtX2Nvbm5lY3Rpb25zLmdldChpZGVudGlmaWVyKTsgfQogCiAgICAgY29uc3Qg
SGFzaE1hcDxTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8Q29u
bmVjdGlvbj4+JiBjb25uZWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbnM7IH0K
LSAgICBjb25zdCBIYXNoU2V0PFN0cmluZz4gcmVnaXN0ZXJlZFNjaGVtZXMoKSBjb25zdCB7IHJl
dHVybiBtX3JlZ2lzdGVyZWRTY2hlbWVzOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjYW5I
YW5kbGVTY2hlbWUoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAKICAgICBTV09yaWdpblN0b3JlJiBv
cmlnaW5TdG9yZSgpIHsgcmV0dXJuIG1fb3JpZ2luU3RvcmU7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5j
cHAKaW5kZXggNzc4YWU3ZDZjODMzNzdlN2QxZTQyZmVkNzIwYzMzYzc1N2ZlMmQxZi4uOGM0YTAw
NWQxMzFlZDJiMDNiMWRlODRmYTMxNDIzMzZhMWVjZTFkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3Bw
CkBAIC0yNTksNyArMjU5LDcgQEAgdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpydW5SZWdpc3Rlckpv
Yihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iKQogewogICAgIEFTU0VSVChqb2IudHlw
ZSA9PSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6UmVnaXN0ZXIpOwogCi0gICAgaWYgKCFzaG91bGRU
cmVhdEFzUG90ZW50aWFsbHlUcnVzdHdvcnRoeShqb2Iuc2NyaXB0VVJMKSAmJiAhbV9zZXJ2ZXIu
cmVnaXN0ZXJlZFNjaGVtZXMoKS5jb250YWlucyhqb2Iuc2NyaXB0VVJMLnByb3RvY29sKCkudG9T
dHJpbmdXaXRob3V0Q29weWluZygpKSkKKyAgICBpZiAoIXNob3VsZFRyZWF0QXNQb3RlbnRpYWxs
eVRydXN0d29ydGh5KGpvYi5zY3JpcHRVUkwpICYmICFtX3NlcnZlci5jYW5IYW5kbGVTY2hlbWUo
am9iLnNjcmlwdFVSTC5wcm90b2NvbCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkpCiAgICAg
ICAgIHJldHVybiByZWplY3RDdXJyZW50Sm9iKEV4Y2VwdGlvbkRhdGEgeyBTZWN1cml0eUVycm9y
LCAiU2NyaXB0IFVSTCBpcyBub3QgcG90ZW50aWFsbHkgdHJ1c3R3b3J0aHkiX3MgfSk7CiAKICAg
ICAvLyBJZiB0aGUgb3JpZ2luIG9mIGpvYidzIHNjcmlwdCB1cmwgaXMgbm90IGpvYidzIHJlZmVy
cmVyJ3Mgb3JpZ2luLCB0aGVuOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3Rz
LnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXggZjdjZDE4YmQyOTIzM2I4
NThmZTdjN2RkMzc1YTlhOTk2M2E2OTI2ZS4uMWUwNmU2MjYwY2QyZDk0ZTI0ODA4ZWI1N2YwNDI3
MGYxMzUzYTQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC0xOTAsNyArMTkwLDYgQEAgc2V0KFdl
YktpdF9NRVNTQUdFU19JTl9GSUxFUwogICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KICAgICBXZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJveHkubWVzc2FnZXMuaW4KIAotICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNl
V29ya2VyQ2xpZW50RmV0Y2gubWVzc2FnZXMuaW4KICAgICBXZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDbGllbnRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAgICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCAyZTQ3NjYwODU0MDNkNDIw
N2YyYmYxNzJlOTljNzg0NjkwYTljY2UxLi5mMWFkYWQ2MjY5ZDAxMmNhYjFkZDcyYjU5MDUyNThl
ZjkwOWY5NWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2Zp
bGVsaXN0CkBAIC0xMDUsNyArMTA1LDYgQEAgJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9E
SVIpL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0
aW9uTWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb3h5Lm1lc3NhZ2VzLmluCi0kKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1N0b3Jh
Z2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBS
T0pFQ1RfRElSKS9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCBiZDlkZDdmNjMzYzE3YmNmMjk5MDg3
N2YxZGUzYWFlNGE4ZmI0N2FjLi4xYzVkMjE0ZDAwNzFkMjY4NGZkY2M4YjhlNGFjOWM2NWJkOTdk
YjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QKQEAgLTgwLDggKzgwLDYgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvUmVtb3RlV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZVdlYkluc3BlY3RvclVJTWVz
c2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvU2Vj
SXRlbVNoaW1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1NlY0l0ZW1TaGltUHJveHlNZXNzYWdlcy5oCi0kKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TZXJ2aWNlV29ya2VyQ2xpZW50
RmV0Y2hNZXNzYWdlUmVjZWl2ZXIuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlcy5oCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvU2VydmljZVdvcmtlckZldGNoVGFza01lc3NhZ2VzLmgKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRy
b2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXgg
OWRlNzA0MjY2YWZlZTUxMzZlNjVlODQ3ODFiNWEwMjUyNTE1N2FjOS4uYmFlN2MzMTllNDc2NDQ1
YTljZTM2ZTYyZDc2ZWZlZGRmNjZhYjEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJp
dmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpA
QCAtMTMyLDcgKzEzMiw2IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFJlbW90ZVdlYklu
c3BlY3RvclByb3h5IFwKICAgICBSZW1vdGVXZWJJbnNwZWN0b3JVSSBcCiAgICAgU2VjSXRlbVNo
aW1Qcm94eSBcCi0gICAgU2VydmljZVdvcmtlckNsaWVudEZldGNoIFwKICAgICBTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrIFwKICAgICBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyIFwKICAgICBT
dG9yYWdlQXJlYU1hcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDYyMThhNmU5
MGZhYmZmNDQxOTM1ZWUwMWE3NWZkOWY1ZDlkMGE0NjYuLmNiNTBlYmFjMTBiOTAzMmFlMjU1MzQ5
ODVlNTBjNzdjNzgyOWZkMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC00MDYs
OSArNDA2LDEzIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNjaGVkdWxl
UmVzb3VyY2VMb2FkKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhCiAgICAgUkVMRUFTRV9BU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwogICAgIEFTU0VSVCghbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJz
LmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKIAotICAgIGF1dG8gbG9hZGVyID0gTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpjcmVhdGUoV1RGTW92ZShsb2FkUGFyYW1ldGVycyksICp0aGlzKTsKLSAgICBt
X25ldHdvcmtSZXNvdXJjZUxvYWRlcnMuYWRkKGlkZW50aWZpZXIsIGxvYWRlci5jb3B5UmVmKCkp
OworICAgIGF1dG8mIGxvYWRlciA9IG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5hZGQoaWRlbnRp
ZmllciwgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjcmVhdGUoV1RGTW92ZShsb2FkUGFyYW1ldGVy
cyksICp0aGlzKSkuaXRlcmF0b3ItPnZhbHVlOworCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQorICAgIGxvYWRlci0+c3RhcnRXaXRoU2VydmljZVdvcmtlcihtX3N3Q29ubmVjdGlvbi5nZXQo
KSk7CisjZWxzZQogICAgIGxvYWRlci0+c3RhcnQoKTsKKyNlbmRpZgogfQogCiB2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwZXJmb3JtU3luY2hyb25vdXNMb2FkKE5ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMsIE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJl
cGx5JiYgcmVwbHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4IGUyOGM3ZDE0YmQx
MGE0Yzc0YTc0YzU0ZjE0NjJkYjU5NDIzMDEzYzUuLmNmYTU0OTI0OWMxODMzZWY2NDQ1OTdjZDQw
YzY1NWI4MTUxZDIwNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCkBAIC0xMDcsNiAr
MTA3LDEyIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZShJUEM6
OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBmcmFtZUFuY2VzdG9yT3Jp
Z2luczsKICAgICBlbmNvZGVyIDw8IGlzSFRUUFNVcGdyYWRlRW5hYmxlZDsKIAorI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKKyAgICBlbmNvZGVyIDw8IHNlcnZpY2VXb3JrZXJzTW9kZTsKKyAg
ICBlbmNvZGVyIDw8IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOworICAgIGVu
Y29kZXIgPDwgaHR0cEhlYWRlcnNUb0tlZXA7CisjZW5kaWYKKwogI2lmIEVOQUJMRShDT05URU5U
X0VYVEVOU0lPTlMpCiAgICAgZW5jb2RlciA8PCBtYWluRG9jdW1lbnRVUkw7CiAgICAgZW5jb2Rl
ciA8PCB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwpAQCAtMjQyLDcgKzI0OCwyNyBA
QCBPcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycz4gTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnM6OmRlY29kZShJUAogICAgIGlmICghaXNIVFRQU1VwZ3JhZGVFbmFibGVk
KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIHJlc3VsdC5pc0hUVFBTVXBncmFk
ZUVuYWJsZWQgPSAqaXNIVFRQU1VwZ3JhZGVFbmFibGVkOwotICAgIAorCisjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQorICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJzTW9kZT4gc2VydmljZVdv
cmtlcnNNb2RlOworICAgIGRlY29kZXIgPj4gc2VydmljZVdvcmtlcnNNb2RlOworICAgIGlmICgh
c2VydmljZVdvcmtlcnNNb2RlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJl
c3VsdC5zZXJ2aWNlV29ya2Vyc01vZGUgPSAqc2VydmljZVdvcmtlcnNNb2RlOworCisgICAgT3B0
aW9uYWw8T3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+PiBzZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+IHNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOworICAgIGlmICghc2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbklkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmVz
dWx0LnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyID0gKnNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyOworCisgICAgT3B0aW9uYWw8SGFzaFNldDxIVFRQSGVhZGVy
TmFtZSwgV1RGOjpJbnRIYXNoPEhUVFBIZWFkZXJOYW1lPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRy
YWl0czxIVFRQSGVhZGVyTmFtZT4+PiBodHRwSGVhZGVyc1RvS2VlcDsKKyAgICBkZWNvZGVyID4+
IGh0dHBIZWFkZXJzVG9LZWVwOworICAgIGlmICghaHR0cEhlYWRlcnNUb0tlZXApCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmVzdWx0Lmh0dHBIZWFkZXJzVG9LZWVwID0gV1RG
TW92ZSgqaHR0cEhlYWRlcnNUb0tlZXApOworI2VuZGlmCisKICNpZiBFTkFCTEUoQ09OVEVOVF9F
WFRFTlNJT05TKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1haW5Eb2N1bWVudFVS
TCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgK
aW5kZXggMTIwMzQ3MDRkYTkyN2I1YTJmYzFiNWNlZmU5OWJiZjgyYmZkZjU3NC4uOWNkNWI0NTVj
NzI1NTczNDlhMDAzOWQ4ZmQxYzI3NDVhNGI1NzMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMu
aApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNl
SGVhZGVycy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hPcHRpb25zLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9IVFRQSGVhZGVyTmFtZXMuaD4KICNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogCiBu
YW1lc3BhY2UgSVBDIHsKQEAgLTYwLDYgKzYxLDEyIEBAIHB1YmxpYzoKICAgICBWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4gZnJhbWVBbmNlc3Rvck9yaWdpbnM7CiAgICAg
Ym9vbCBpc0hUVFBTVXBncmFkZUVuYWJsZWQgeyBmYWxzZSB9OwogCisjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQorICAgIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJzTW9kZSBzZXJ2aWNlV29ya2Vy
c01vZGUgeyBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vyc01vZGU6Ok5vbmUgfTsKKyAgICBPcHRpb25h
bDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4gc2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI7CisgICAgSGFzaFNldDxXZWJDb3JlOjpIVFRQSGVh
ZGVyTmFtZSwgV1RGOjpJbnRIYXNoPFdlYkNvcmU6OkhUVFBIZWFkZXJOYW1lPiwgV1RGOjpTdHJv
bmdFbnVtSGFzaFRyYWl0czxXZWJDb3JlOjpIVFRQSGVhZGVyTmFtZT4+IGh0dHBIZWFkZXJzVG9L
ZWVwOworI2VuZGlmCisKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIFVSTCBt
YWluRG9jdW1lbnRVUkw7CiAgICAgT3B0aW9uYWw8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRp
Zmllcj4gdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBm
YjM3MmQ3OWRlY2I5NmNlYTUxYjdjZTQzMTNmZjQ2ODExYzE5ZGJkLi45MmFmNzFlMTQ3MDNjNTg0
NTdhOWMzZDQ0ODk5ZDVlYThlMTZhZDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0zNzksNiArMzc5LDEx
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjphYm9ydCgpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgaWYgKGF1dG8gdGFzayA9
IFdURk1vdmUobV9zZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKSkKKyAgICAgICAgdGFzay0+Y2FuY2Vs
RnJvbUNsaWVudCgpOworI2VuZGlmCisKICAgICBpZiAobV9uZXR3b3JrTG9hZCkgewogICAgICAg
ICBpZiAoY2FuVXNlQ2FjaGUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKSkpIHsKICAg
ICAgICAgICAgIC8vIFdlIG1pZ2h0IGFscmVhZHkgaGF2ZSB1c2VkIGRhdGEgZnJvbSB0aGlzIGlu
Y29tcGxldGUgbG9hZC4gRW5zdXJlIG9sZGVyIHZlcnNpb25zIGRvbid0IHJlbWFpbiBpbiB0aGUg
Y2FjaGUgYWZ0ZXIgY2FuY2VsLgpAQCAtNjEyLDggKzYxNywxNiBAQCB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6ZGlkRmFpbExvYWRpbmcoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAg
ICAgaWYgKGlzU3luY2hyb25vdXMoKSkgewogICAgICAgICBtX3N5bmNocm9ub3VzTG9hZERhdGEt
PmVycm9yID0gZXJyb3I7CiAgICAgICAgIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KCpt
X3N5bmNocm9ub3VzTG9hZERhdGEsIG51bGxwdHIpOwotICAgIH0gZWxzZSBpZiAoYXV0byogY29u
bmVjdGlvbiA9IG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkpCisgICAgfSBlbHNlIGlmIChhdXRv
KiBjb25uZWN0aW9uID0gbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSkgeworI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKKyAgICAgICAgaWYgKG1fc2VydmljZVdvcmtlckZldGNoVGFzaykKKyAg
ICAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpE
aWRGYWlsU2VydmljZVdvcmtlckxvYWQoZXJyb3IpLCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25J
RCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZhaWxSZXNvdXJjZUxvYWQoZXJyb3IpLCBtZXNzYWdl
U2VuZGVyRGVzdGluYXRpb25JRCgpKTsKKyNlbHNlCiAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGYWlsUmVzb3VyY2VMb2FkKGVycm9yKSwg
bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSk7CisjZW5kaWYKKyAgICB9CiAKICAgICBjbGVh
bnVwKExvYWRSZXN1bHQ6OkZhaWx1cmUpOwogfQpAQCAtNzQ3LDYgKzc2MCwxMCBAQCB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6cmVzdGFydE5ldHdvcmtMb2FkKFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmIG5ld1JlcQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVX
aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgYm9vbCBpc0FsbG93
ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscykKIHsKKyAgICBpZiAobV9zZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrKSB7CisgICAgICAgIG1fc2VydmljZVdvcmtlckZldGNoVGFzay0+Y29udGludWVGZXRj
aFRhc2tXaXRoKFdURk1vdmUobmV3UmVxdWVzdCkpOworICAgICAgICByZXR1cm47CisgICAgfQog
ICAgIGlmIChtX3Nob3VsZFJlc3RhcnRMb2FkKSB7CiAgICAgICAgIG1fc2hvdWxkUmVzdGFydExv
YWQgPSBmYWxzZTsKIApAQCAtNzkyLDYgKzgwOSwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVz
dAogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2UoKQogeworICAgIGlmIChtX3NlcnZpY2VXb3JrZXJGZXRjaFRhc2spIHsKKyAgICAgICAgbV9z
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLT5jb250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAobV9jYWNoZUVudHJ5V2FpdGluZ0Zv
ckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKSB7CiAgICAgICAgIHNlbmRSZXN1bHRGb3JDYWNo
ZUVudHJ5KFdURk1vdmUobV9jYWNoZUVudHJ5V2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlKSk7CiAgICAgICAgIGNsZWFudXAoTG9hZFJlc3VsdDo6U3VjY2Vzcyk7CkBAIC0xMTk2
LDYgKzEyMTgsMzAgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmlzQ3Jvc3NPcmlnaW5Q
cmVmZXRjaCgpIGNvbnN0CiAgICAgcmV0dXJuIHJlcXVlc3QuaHR0cEhlYWRlckZpZWxkKEhUVFBI
ZWFkZXJOYW1lOjpQdXJwb3NlKSA9PSAicHJlZmV0Y2giICYmICFtX3BhcmFtZXRlcnMuc291cmNl
T3JpZ2luLT5jYW5SZXF1ZXN0KHJlcXVlc3QudXJsKCkpOwogfQogCisjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0V2l0aFNlcnZpY2VX
b3JrZXIoV2ViU1dTZXJ2ZXJDb25uZWN0aW9uKiBzd0Nvbm5lY3Rpb24pCit7CisgICAgQVNTRVJU
KCFtX3NlcnZpY2VXb3JrZXJGZXRjaFRhc2spOworICAgIG1fc2VydmljZVdvcmtlckZldGNoVGFz
ayA9IHN3Q29ubmVjdGlvbiA/IHN3Q29ubmVjdGlvbi0+Y3JlYXRlRmV0Y2hUYXNrKCp0aGlzKSA6
IG51bGxwdHI7CisgICAgaWYgKG1fc2VydmljZVdvcmtlckZldGNoVGFzaykKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKG1fcGFyYW1ldGVycy5zZXJ2aWNlV29ya2Vyc01vZGUgPT0gU2Vydmlj
ZVdvcmtlcnNNb2RlOjpPbmx5KSB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNl
TG9hZGVyOjpTZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlIHsgfSwgaWRlbnRpZmllcigpKTsKKyAg
ICAgICAgYWJvcnQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBzdGFydCgpOworfQor
Cit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSgp
Cit7CisgICAgbV9zZXJ2aWNlV29ya2VyRmV0Y2hUYXNrID0gbnVsbHB0cjsKKyAgICBzdGFydCgp
OworfQorCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBSRUxFQVNF
X0xPR19JRl9BTExPV0VECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCBkNjUwNzJiNzJiZDQxMzE0MWEwNmIyODdjNDUy
NjliZTQyYWYwNzc2Li43MWY4MWJiNDYyNWQ4MzQ1YzY0ODA3MjdmOGE2NTRjMzY3Y2Y3ZGVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmgKQEAgLTUxLDYgKzUxLDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKIGNsYXNzIE5ldHdvcmtMb2FkOwogY2xhc3MgTmV0
d29ya0xvYWRDaGVja2VyOworY2xhc3MgU2VydmljZVdvcmtlckZldGNoVGFzazsKK2NsYXNzIFdl
YlNXU2VydmVyQ29ubmVjdGlvbjsKIAogbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiBjbGFzcyBF
bnRyeTsKQEAgLTg4LDcgKzkwLDggQEAgcHVibGljOgogICAgIFJlc291cmNlTG9hZElkZW50aWZp
ZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyOyB9
CiAgICAgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQoKSBjb25zdCB7IHJldHVybiBt
X3BhcmFtZXRlcnMud2ViRnJhbWVJRDsgfQogICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQ7IH0KLSAgICAKKyAg
ICBjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYgcGFyYW1ldGVycygpIGNvbnN0
IHsgcmV0dXJuIG1fcGFyYW1ldGVyczsgfQorCiAgICAgTmV0d29ya0NhY2hlOjpHbG9iYWxGcmFt
ZUlEIGdsb2JhbEZyYW1lSUQoKSB7IHJldHVybiB7IG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJ
RCwgcGFnZUlEKCksIGZyYW1lSUQoKSB9OyB9CiAKICAgICBzdHJ1Y3QgU3luY2hyb25vdXNMb2Fk
RGF0YTsKQEAgLTEyMiw2ICsxMjUsMTEgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0tlcHRBbGl2
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNLZXB0QWxpdmU7IH0KIAorI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKKyAgICB2b2lkIHN0YXJ0V2l0aFNlcnZpY2VXb3JrZXIoV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uKik7CisgICAgdm9pZCBzZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlKCk7CisjZW5kaWYK
KwogcHJpdmF0ZToKICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMmJiwgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRl
bGF5ZWRSZXBseSYmKTsKIApAQCAtMjIwLDYgKzIyOCw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X2lzS2VwdEFsaXZlIHsgZmFsc2UgfTsKIAogICAgIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRy
YWNrZXI+IG1fbmV0d29ya0FjdGl2aXR5VHJhY2tlcjsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCisgICAgc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+IG1fc2Vydmlj
ZVdvcmtlckZldGNoVGFzazsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlckZldGNoVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKaW5kZXggODM0YjU2OWU0MjI3
NWYxMzQ4N2VjNzdkZWExNWUwYmMzZjBhYTI1Zi4uMjU2MDI4N2U5YWYyM2ZlYjVmZjAxNTQ0OTVh
OGY2ZDQxMjZjMzFlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNw
cApAQCAtMzIsMTAgKzMyLDE0IEBACiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1
ZGUgIkZvcm1EYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUg
IlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3MuaCIKKyNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgiCi0jaW5jbHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2Vi
UmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oPgog
CiAjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lG
KG1fc2Vzc2lvbklELmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBTZXJ2aWNlV29ya2VyLCAi
JXAgLSBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykK
ICNkZWZpbmUgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9M
T0dfRVJST1JfSUYobV9zZXNzaW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFNlcnZp
Y2VXb3JrZXIsICIlcCAtIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OiIgZm10LCB0aGlzLCAjI19f
VkFfQVJHU19fKQpAQCAtNDQsODAgKzQ4LDEzOSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2soUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJTV1NlcnZlckNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4
dENvbm5lY3Rpb24sIEZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIsIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTZWNvbmRzIHRpbWVvdXQpCitT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgTmV0d29ya1Jlc291cmNlTG9hZGVyJiBsb2FkZXIsIFNXU2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQogICAgIDogbV9zZXNzaW9uSUQo
c2Vzc2lvbklEKQotICAgICwgbV9jb25uZWN0aW9uKG1ha2VXZWFrUHRyKGNvbm5lY3Rpb24pKQot
ICAgICwgbV9jb250ZXh0Q29ubmVjdGlvbihjb250ZXh0Q29ubmVjdGlvbikKLSAgICAsIG1faWRl
bnRpZmllciB7IGNvbm5lY3Rpb24uaWRlbnRpZmllcigpLCBmZXRjaElkZW50aWZpZXIgfQorICAg
ICwgbV9sb2FkZXIobG9hZGVyKQorICAgICwgbV9mZXRjaElkZW50aWZpZXIoV2ViQ29yZTo6RmV0
Y2hJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQorICAgICwgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllcihzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikKICAgICAsIG1fc2VydmljZVdvcmtlcklk
ZW50aWZpZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIpCi0gICAgLCBtX3RpbWVvdXQodGltZW91
dCkKICAgICAsIG1fdGltZW91dFRpbWVyKCp0aGlzLCAmU2VydmljZVdvcmtlckZldGNoVGFzazo6
dGltZW91dFRpbWVyRmlyZWQpCiB7Ci0gICAgbV90aW1lb3V0VGltZXIuc3RhcnRPbmVTaG90KG1f
dGltZW91dCk7CisgICAgbV90aW1lb3V0VGltZXIuc3RhcnRPbmVTaG90KGxvYWRlci5jb25uZWN0
aW9uVG9XZWJQcm9jZXNzKCkubmV0d29ya1Byb2Nlc3MoKS5zZXJ2aWNlV29ya2VyRmV0Y2hUaW1l
b3V0KCkpOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZWRp
cmVjdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorU2VydmljZVdv
cmtlckZldGNoVGFzazo6flNlcnZpY2VXb3JrZXJGZXRjaFRhc2soKQogewotICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlOiAlcyIsIG1faWRlbnRp
Zmllci5mZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAg
IG1fdGltZW91dFRpbWVyLnN0b3AoKTsKKyAgICBpZiAobV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlv
bikKKyAgICAgICAgbV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbi0+dW5yZWdpc3RlckZldGNoKCp0
aGlzKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgTWVzc2FnZT4gYm9vbCBTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOjpzZW5kVG9TZXJ2aWNlV29ya2VyKE1lc3NhZ2UmJiBtZXNzYWdlKQoreworICAg
IHJldHVybiBtX3NlcnZpY2VXb3JrZXJDb25uZWN0aW9uID8gbV9zZXJ2aWNlV29ya2VyQ29ubmVj
dGlvbi0+aXBjQ29ubmVjdGlvbigpLnNlbmQoc3RkOjpmb3J3YXJkPE1lc3NhZ2U+KG1lc3NhZ2Up
LCAwKSA6IGZhbHNlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBNZXNzYWdlPiBib29sIFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OnNlbmRUb0NsaWVudChNZXNzYWdlJiYgbWVzc2FnZSkKK3sKKyAg
ICByZXR1cm4gbV9sb2FkZXIuY29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNvbm5lY3Rpb24oKS5z
ZW5kKHN0ZDo6Zm9yd2FyZDxNZXNzYWdlPihtZXNzYWdlKSwgbV9sb2FkZXIuaWRlbnRpZmllcigp
KTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpzdGFydChXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24mIHNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKQoreworICAgIG1fc2Vy
dmljZVdvcmtlckNvbm5lY3Rpb24gPSBtYWtlV2Vha1B0cihzZXJ2aWNlV29ya2VyQ29ubmVjdGlv
bik7CisgICAgc2VydmljZVdvcmtlckNvbm5lY3Rpb24ucmVnaXN0ZXJGZXRjaCgqdGhpcyk7CisK
KyAgICBzdGFydEZldGNoKFJlc291cmNlUmVxdWVzdCB7IG1fbG9hZGVyLm9yaWdpbmFsUmVxdWVz
dCgpIH0sIHNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOjpzdGFydEZldGNoKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgc2VydmljZVdvcmtlckNvbm5lY3Rpb24pCit7CisgICAg
bV9jdXJyZW50UmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCk7CisKKyAgICBhdXRvJiBvcHRpb25z
ID0gbV9sb2FkZXIucGFyYW1ldGVycygpLm9wdGlvbnM7CisgICAgYXV0byByZWZlcnJlciA9IG1f
Y3VycmVudFJlcXVlc3QuaHR0cFJlZmVycmVyKCk7CisKKyAgICAvLyBXZSBhcmUgaW50ZXJjZXB0
aW5nIGZldGNoIGNhbGxzIGFmdGVyIGdvaW5nIHRocm91Z2ggdGhlIEhUVFAgbGF5ZXIsIHdoaWNo
IG1heSBhZGQgc29tZSBzcGVjaWZpYyBoZWFkZXJzLgorICAgIGNsZWFuSFRUUFJlcXVlc3RIZWFk
ZXJzRm9yQWNjZXNzQ29udHJvbChtX2N1cnJlbnRSZXF1ZXN0LCBtX2xvYWRlci5wYXJhbWV0ZXJz
KCkuaHR0cEhlYWRlcnNUb0tlZXApOworCisgICAgYm9vbCBpc1NlbnQgPSBzZW5kVG9TZXJ2aWNl
V29ya2VyKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U3RhcnRGZXRj
aCB7IG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIG1fc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIG1fZmV0Y2hJZGVudGlmaWVyLCBtX2N1cnJlbnRSZXF1ZXN0LCBvcHRpb25zLCBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlIHsgbV9jdXJyZW50UmVxdWVzdC5odHRwQm9keSgpIH0sIHJlZmVycmVy
IH0pOworICAgIEFTU0VSVF9VTlVTRUQoaXNTZW50LCBpc1NlbnQpOworfQorCit2b2lkIFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKFJlc291cmNlUmVz
cG9uc2UmJiByZXNwb25zZSkKK3sKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNl
aXZlUmVkaXJlY3RSZXNwb25zZTogJXMiLCBtX2ZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CiAgICAgbV93YXNIYW5kbGVkID0gdHJ1ZTsKLSAgICBpZiAobV9j
b25uZWN0aW9uKQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VX
b3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgeyByZXNwb25zZSB9
LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKKworICAgIHJlc3BvbnNlLnNldFNvdXJj
ZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OlNlcnZpY2VXb3JrZXIpOworICAgIGF1dG8gbmV3
UmVxdWVzdCA9IG1fY3VycmVudFJlcXVlc3QucmVkaXJlY3RlZFJlcXVlc3QocmVzcG9uc2UsIG1f
bG9hZGVyLnBhcmFtZXRlcnMoKS5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGly
ZWN0KTsKKworICAgIHNlbmRUb0NsaWVudChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6Oldp
bGxTZW5kUmVxdWVzdCB7IG5ld1JlcXVlc3QsIHJlc3BvbnNlIH0pOwogfQogCi12b2lkIFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2Fn
ZSkKK3ZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291
cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlTWVzc2FnZSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVz
cG9uc2U6ICVzIiwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJl
c3BvbnNlOiAlcyIsIG1fZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKICAgICBtX3RpbWVvdXRUaW1lci5zdG9wKCk7CiAgICAgbV93YXNIYW5kbGVkID0gdHJ1
ZTsKLSAgICBpZiAobV9jb25uZWN0aW9uKQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVz
cG9uc2UsIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0sIG1faWRlbnRp
Zmllci5mZXRjaElkZW50aWZpZXIpOworICAgIHJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJl
c3BvbnNlOjpTb3VyY2U6OlNlcnZpY2VXb3JrZXIpOworCisgICAgc2VuZFRvQ2xpZW50KE1lc3Nh
Z2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG5l
ZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0pOwogfQogCiB2b2lkIFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIW1fdGlt
ZW91dFRpbWVyLmlzQWN0aXZlKCkpOwotICAgIGlmIChtX2Nvbm5lY3Rpb24pCi0gICAgICAgIG1f
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRS
ZWNlaXZlRGF0YSB7IGRhdGEsIGVuY29kZWREYXRhTGVuZ3RoIH0sIG1faWRlbnRpZmllci5mZXRj
aElkZW50aWZpZXIpOworICAgIHNlbmRUb0NsaWVudChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2Fk
ZXI6OkRpZFJlY2VpdmVEYXRhIHsgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHsgZGF0
YS5kYXRhKCksIGRhdGEuc2l6ZSgpIH0sIGVuY29kZWREYXRhTGVuZ3RoIH0pOwogfQogCiB2b2lk
IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVGb3JtRGF0YShjb25zdCBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlJiBmb3JtRGF0YSkKIHsKICAgICBBU1NFUlQoIW1fdGltZW91dFRpbWVy
LmlzQWN0aXZlKCkpOwotICAgIGlmIChtX2Nvbm5lY3Rpb24pCi0gICAgICAgIG1fY29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRSZWNlaXZlRm9y
bURhdGEgeyBmb3JtRGF0YSB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKKyAgICAv
LyBGSVhNRTogQWxsb3cgV2ViUmVzb3VyY2VMb2FkZXIgdG8gcmVjZWl2ZSBmb3JtIGRhdGEuCiB9
CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkRmluaXNoKCkKIHsKICAgICBBU1NF
UlQoIW1fdGltZW91dFRpbWVyLmlzQWN0aXZlKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoImRpZEZpbmlzaEZldGNoOiBmZXRjaElkZW50aWZpZXI6ICVzIiwgbV9pZGVudGlmaWVyLmZl
dGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgiZGlkRmluaXNoRmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMiLCBt
X2ZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgbV90
aW1lb3V0VGltZXIuc3RvcCgpOwotICAgIGlmIChtX2Nvbm5lY3Rpb24pCi0gICAgICAgIG1fY29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRGaW5p
c2ggeyB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKKyAgICBzZW5kVG9DbGllbnQo
TWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJjZUxvYWQgeyB7IH0g
fSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkRmFpbChjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJk
aWRGYWlsRmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMiLCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVu
dGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBtX3RpbWVvdXRUaW1l
ci5zdG9wKCk7Ci0gICAgaWYgKG1fY29ubmVjdGlvbikKLSAgICAgICAgbV9jb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZEZhaWwgeyBlcnJvciB9
LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9J
Rl9BTExPV0VEKCJkaWRGYWlsRmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMiLCBtX2ZldGNoSWRl
bnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgbV9sb2FkZXIuZGlk
RmFpbExvYWRpbmcoZXJyb3IpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRp
ZE5vdEhhbmRsZSgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkTm90SGFuZGxl
RmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMiLCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVy
LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJkaWROb3RIYW5kbGVGZXRjaDogZmV0Y2hJZGVudGlmaWVyOiAlcyIsIG1fZmV0Y2hJZGVu
dGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBtX3RpbWVvdXRUaW1l
ci5zdG9wKCk7Ci0gICAgaWYgKG1fY29ubmVjdGlvbikKLSAgICAgICAgbV9jb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZE5vdEhhbmRsZSB7IH0s
IG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOworICAgIGlmIChtX2xvYWRlci5wYXJhbWV0
ZXJzKCkuc2VydmljZVdvcmtlcnNNb2RlID09IFNlcnZpY2VXb3JrZXJzTW9kZTo6T25seSkgewor
ICAgICAgICBzZW5kVG9DbGllbnQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpTZXJ2aWNl
V29ya2VyRGlkTm90SGFuZGxlIHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9s
b2FkZXIuc2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSgpOworfQorCit2b2lkIFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OmNhbmNlbEZyb21DbGllbnQoKQoreworICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoImNhbmNlbEZyb21DbGllbnQ6IGZldGNoSWRlbnRpZmllcjogJXMiLCBtX2ZldGNoSWRl
bnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgc2VuZFRvU2Vydmlj
ZVdvcmtlcihNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkNhbmNlbEZl
dGNoIHsgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgbV9zZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgbV9mZXRjaElkZW50aWZpZXIgfSk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlckZldGNo
VGFzazo6Y29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSgpCit7CisgICAgc2VuZFRvU2Vy
dmljZVdvcmtlcihNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkNvbnRp
bnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UgeyBtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
LCBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBtX2ZldGNoSWRlbnRpZmllciB9KTsKK30KKwor
dm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpjb250aW51ZUZldGNoVGFza1dpdGgoUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCkKK3sKKyAgICBpZiAoIW1fc2VydmljZVdvcmtlckNvbm5lY3Rp
b24pIHsKKyAgICAgICAgbV9sb2FkZXIuc2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIHN0YXJ0RmV0Y2goV1RGTW92ZShyZXF1ZXN0KSwgKm1f
c2VydmljZVdvcmtlckNvbm5lY3Rpb24pOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s6OnRpbWVvdXRUaW1lckZpcmVkKCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ0
aW1lb3V0VGltZXJGaXJlZDogZmV0Y2hJZGVudGlmaWVyOiAlcyIsIG1faWRlbnRpZmllci5mZXRj
aElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIGRpZE5vdEhh
bmRsZSgpOwotICAgIG1fY29udGV4dENvbm5lY3Rpb24uZmV0Y2hUYXNrVGltZWRPdXQoKnRoaXMp
OworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInRpbWVvdXRUaW1lckZpcmVkOiBmZXRjaElk
ZW50aWZpZXI6ICVzIiwgbV9mZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOworICAgIGlmIChtX3NlcnZpY2VXb3JrZXJDb25uZWN0aW9uKQorICAgICAgICBtX3Nl
cnZpY2VXb3JrZXJDb25uZWN0aW9uLT5mZXRjaFRhc2tUaW1lZE91dChzZXJ2aWNlV29ya2VySWRl
bnRpZmllcigpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNo
VGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJGZXRjaFRhc2suaAppbmRleCBkOGI5ZDZmMjU2NjM4MzY3NzJmMjliOWY5Yjk5ZTBh
MGUyNjM5NDVjLi5iZGZkNWU2OTM1OThkYzgwM2ZlZjM4NjRmMjY4ZWZiMWQ2NWFmZjFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlckZldGNoVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKQEAgLTI4LDEyICsyOCwxNSBAQAog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hJZGVu
dGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIu
aD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKK2NsYXNzIFJlc291
cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiB9CiAKQEAgLTQ2LDgyICs0OSw1
OSBAQCBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNs
YXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKK2NsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjsK
IGNsYXNzIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjsKIAotY2xhc3MgU2VydmljZVdv
cmtlckZldGNoVGFzayB7CitjbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2FkZXI7CitjbGFzcyBXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CisKK2NsYXNzIFNlcnZpY2VXb3JrZXJGZXRjaFRh
c2sgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U2VydmljZVdvcmtlckZldGNoVGFzaz4gewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFNlcnZpY2VXb3JrZXJGZXRj
aFRhc2soUEFMOjpTZXNzaW9uSUQsIFdlYlNXU2VydmVyQ29ubmVjdGlvbiYsIFdlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbiYsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNlY29uZHMgdGltZW91dCk7CisgICAgU2VydmljZVdv
cmtlckZldGNoVGFzayhQQUw6OlNlc3Npb25JRCwgTmV0d29ya1Jlc291cmNlTG9hZGVyJiwgV2Vi
Q29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIpOworICAgIH5TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKCk7CiAKLSAgICB2b2lk
IGRpZE5vdEhhbmRsZSgpOworICAgIHZvaWQgc3RhcnQoV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uJik7CisgICAgdm9pZCBjYW5jZWxGcm9tQ2xpZW50KCk7CiAgICAgdm9pZCBmYWlsKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKSB7IGRpZEZhaWwoZXJyb3IpOyB9CiAg
ICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KTsKIAotICAgIHN0cnVjdCBJZGVudGlmaWVyIHsKLSAgICAgICAgV2ViQ29yZTo6U1dTZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcjsKLSAgICAgICAgV2ViQ29y
ZTo6RmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllcjsKLSAgICAgICAgCi0gICAgICAgIHVu
c2lnbmVkIGhhc2goKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBoYXNo
ZXNbMl07Ci0gICAgICAgICAgICBoYXNoZXNbMF0gPSBXVEY6OmludEhhc2goY29ubmVjdGlvbklk
ZW50aWZpZXIudG9VSW50NjQoKSk7Ci0gICAgICAgICAgICBoYXNoZXNbMV0gPSBXVEY6OmludEhh
c2goZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOwotICAgICAgICAgICAgcmV0dXJuIFN0cmlu
Z0hhc2hlcjo6aGFzaE1lbW9yeShoYXNoZXMsIHNpemVvZihoYXNoZXMpKTsKLSAgICAgICAgfQot
ICAgIH07Ci0KLSAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1
cm4gbV9pZGVudGlmaWVyOyB9Ci0gICAgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXImIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNl
V29ya2VySWRlbnRpZmllcjsgfQorICAgIHZvaWQgY29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNw
b25zZSgpOworICAgIHZvaWQgY29udGludWVGZXRjaFRhc2tXaXRoKFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmKTsKKworICAgIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZp
ZXIoKSBjb25zdCB7IHJldHVybiBtX2ZldGNoSWRlbnRpZmllcjsgfQorICAgIFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZXJ2aWNlV29ya2VySWRlbnRpZmllcjsgfQorCisgICAgdm9pZCBkaWROb3RIYW5k
bGUoKTsKKwogICAgIGJvb2wgd2FzSGFuZGxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzSGFuZGxl
ZDsgfQogCiBwcml2YXRlOgotICAgIHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBib29sIG5lZWRzQ29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZWRpcmVjdFJl
c3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CisgICAgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBib29sIG5lZWRzQ29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZv
aWQgZGlkUmVjZWl2ZUZvcm1EYXRhKGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmKTsKICAg
ICB2b2lkIGRpZEZpbmlzaCgpOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJik7CisKKyAgICB2b2lkIHN0YXJ0RmV0Y2goV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpOworCiAgICAgdm9pZCB0aW1l
b3V0VGltZXJGaXJlZCgpOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWVzc2FnZT4gYm9vbCBz
ZW5kVG9TZXJ2aWNlV29ya2VyKE1lc3NhZ2UmJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWVz
c2FnZT4gYm9vbCBzZW5kVG9DbGllbnQoTWVzc2FnZSYmKTsKKwogICAgIFBBTDo6U2Vzc2lvbklE
IG1fc2Vzc2lvbklEOwotICAgIFdlYWtQdHI8V2ViU1dTZXJ2ZXJDb25uZWN0aW9uPiBtX2Nvbm5l
Y3Rpb247Ci0gICAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBtX2NvbnRleHRDb25u
ZWN0aW9uOwotICAgIElkZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAgIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlciYgbV9sb2FkZXI7CisgICAgV2Vha1B0cjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24+IG1fc2VydmljZVdvcmtlckNvbm5lY3Rpb247CisgICAgV2ViQ29yZTo6RmV0Y2hJZGVu
dGlmaWVyIG1fZmV0Y2hJZGVudGlmaWVyOworICAgIFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcjsKICAgICBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyOwotICAgIFNl
Y29uZHMgbV90aW1lb3V0OworICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX2N1cnJlbnRS
ZXF1ZXN0OwogICAgIFdlYkNvcmU6OlRpbWVyIG1fdGltZW91dFRpbWVyOwogICAgIGJvb2wgbV93
YXNIYW5kbGVkIHsgZmFsc2UgfTsKIH07CiAKLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3Qg
U2VydmljZVdvcmtlckZldGNoVGFzazo6SWRlbnRpZmllciYgYSwgY29uc3QgU2VydmljZVdvcmtl
ckZldGNoVGFzazo6SWRlbnRpZmllciYgYikKLXsKLSAgICByZXR1cm4gYS5jb25uZWN0aW9uSWRl
bnRpZmllciA9PSBiLmNvbm5lY3Rpb25JZGVudGlmaWVyICYmICBhLmZldGNoSWRlbnRpZmllciA9
PSBiLmZldGNoSWRlbnRpZmllcjsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLQotbmFt
ZXNwYWNlIFdURiB7Ci0KLXN0cnVjdCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrSWRlbnRpZmllckhh
c2ggewotICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFdlYktpdDo6U2VydmljZVdvcmtl
ckZldGNoVGFzazo6SWRlbnRpZmllciYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9Ci0gICAg
c3RhdGljIGJvb2wgZXF1YWwoY29uc3QgV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpJ
ZGVudGlmaWVyJiBhLCBjb25zdCBXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OklkZW50
aWZpZXImIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVU
b0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0
IEhhc2hUcmFpdHM8V2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpJZGVudGlmaWVyPiA6
IEdlbmVyaWNIYXNoVHJhaXRzPFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6SWRlbnRp
Zmllcj4gewotICAgIHN0YXRpYyBXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OklkZW50
aWZpZXIgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIHsgfTsgfQotICAgIAotICAgIHN0YXRpYyB2b2lk
IGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6Oklk
ZW50aWZpZXImIHNsb3QpIHsgc2xvdC5jb25uZWN0aW9uSWRlbnRpZmllciA9IG1ha2VPYmplY3RJ
ZGVudGlmaWVyPFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXJUeXBlPihzdGQ6
Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkpOyB9Ci0gICAgCi0gICAgc3RhdGljIGJv
b2wgaXNEZWxldGVkVmFsdWUoY29uc3QgV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpJ
ZGVudGlmaWVyJiBzbG90KSB7IHJldHVybiBzbG90LmNvbm5lY3Rpb25JZGVudGlmaWVyLnRvVUlu
dDY0KCkgPT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpOyB9Ci19OwotCi10
ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s6OklkZW50aWZpZXI+IHsKLSAgICB1c2luZyBIYXNoID0gU2VydmljZVdvcmtlckZldGNoVGFz
a0lkZW50aWZpZXJIYXNoOwotfTsKLQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCA3OWUzMjY1
Y2VkMWVhMjRlODc1YmU1MjBiNzkzMmU4NWI2NDAzMTNmLi5kZDllY2I0YzFjMjhkMjI1MjA0MmI1
Mjk3MDk1OTRlOGMxODE0ODFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
LmNwcApAQCAtMzMsMTYgKzMzLDE4IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUg
Ik5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3
b3JrUHJvY2Vzcy5oIgotI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZGVyTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJXZWJTV0NsaWVudENvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUg
IldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJT
V1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRJZGVudGlmaWVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25EYXRhLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9M
ZWdhY3lTY2hlbWVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1NXU2VydmVyUmVnaXN0cmF0aW9uLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgpAQCAtMTI2LDE4ICsxMjgsOCBAQCB2b2lkIFdlYlNX
U2VydmVyQ29ubmVjdGlvbjo6dXBkYXRlV29ya2VyU3RhdGVJbkNsaWVudChTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciB3bwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6
VXBkYXRlV29ya2VyU3RhdGUod29ya2VyLCBzdGF0ZSkpOwogfQogCi12b2lkIFdlYlNXU2VydmVy
Q29ubmVjdGlvbjo6Y2FuY2VsRmV0Y2goU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIEZldGNoSWRlbnRpZmllciBm
ZXRjaElkZW50aWZpZXIpCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y2FuY2VsRmV0Y2go
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIEZldGNoSWRlbnRpZmllcikKIHsK
LSAgICBTV1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY2FuY2VsRmV0
Y2g6ICVzIiwgZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
LSAgICBhdXRvKiB3b3JrZXIgPSBzZXJ2ZXIoKS5hY3RpdmVXb3JrZXJGcm9tUmVnaXN0cmF0aW9u
SUQoc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpOwotICAgIGlmICghd29ya2Vy
IHx8ICF3b3JrZXItPmlzUnVubmluZygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyID0gd29ya2VyLT5pZGVudGlmaWVyKCk7Ci0gICAgc2VydmVy
KCkucnVuU2VydmljZVdvcmtlcklmTmVjZXNzYXJ5KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBb
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgdGhpcywgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIGZldGNoSWRlbnRpZmllcl0oYXV0byogY29udGV4dENvbm5lY3Rpb24pIG11dGFibGUgewot
ICAgICAgICBpZiAod2Vha1RoaXMgJiYgY29udGV4dENvbm5lY3Rpb24pCi0gICAgICAgICAgICBz
dGF0aWNfY2FzdDxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mPigqY29udGV4dENvbm5l
Y3Rpb24pLmNhbmNlbEZldGNoKHRoaXMtPmlkZW50aWZpZXIoKSwgZmV0Y2hJZGVudGlmaWVyLCBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgfSk7CiB9CiAKIHZvaWQgV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpjb250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
LCBGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyKQpAQCAtMTUzLDU5ICsxNDUsODkgQEAg
dm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9u
c2UoU2VydmljZVdvcmtlclJlZ2lzdHIKICAgICB9KTsKIH0KIAotdm9pZCBXZWJTV1NlcnZlckNv
bm5lY3Rpb246OnN0YXJ0RmV0Y2goU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIg
c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIEZldGNoSWRlbnRpZmllciBmZXRj
aElkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZldGNoT3B0aW9ucyYmIG9w
dGlvbnMsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiBmb3JtRGF0YSwgU3RyaW5nJiYgcmVmZXJy
ZXIpCitzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckZldGNoVGFzaz4gV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpjcmVhdGVGZXRjaFRhc2soTmV0d29ya1Jlc291cmNlTG9hZGVyJiBsb2FkZXIp
CiB7Ci0gICAgYXV0byogd29ya2VyID0gc2VydmVyKCkuYWN0aXZlV29ya2VyRnJvbVJlZ2lzdHJh
dGlvbklEKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKKyAgICBpZiAoIWxv
YWRlci5wYXJhbWV0ZXJzKCkuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKGxvYWRlci5wYXJhbWV0ZXJzKCkuc2Vy
dmljZVdvcmtlcnNNb2RlID09IFNlcnZpY2VXb3JrZXJzTW9kZTo6Tm9uZSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBpZiAoaXNQb3RlbnRpYWxOYXZpZ2F0aW9uT3JTdWJyZXNvdXJj
ZVJlcXVlc3QobG9hZGVyLnBhcmFtZXRlcnMoKS5vcHRpb25zLmRlc3RpbmF0aW9uKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoIXNlcnZlcigpLmNhbkhhbmRsZVNjaGVtZShs
b2FkZXIub3JpZ2luYWxSZXF1ZXN0KCkudXJsKCkucHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRD
b3B5aW5nKCkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8qIHdvcmtlciA9
IHNlcnZlcigpLmFjdGl2ZVdvcmtlckZyb21SZWdpc3RyYXRpb25JRCgqbG9hZGVyLnBhcmFtZXRl
cnMoKS5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CiAgICAgaWYgKCF3b3Jr
ZXIpIHsKLSAgICAgICAgU1dTRVJWRVJDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SX0lGX0FM
TE9XRUQoInN0YXJ0RmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMgLT4gRGlkTm90SGFuZGxlIGJl
Y2F1c2Ugbm8gYWN0aXZlIHdvcmtlciIsIGZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVu
dGlmaWVyKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBTV1NFUlZFUkNPTk5FQ1RJT05fUkVM
RUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgic3RhcnRGZXRjaDogRGlkTm90SGFuZGxlIGJlY2F1
c2Ugbm8gYWN0aXZlIHdvcmtlciAlcyIsIGxvYWRlci5wYXJhbWV0ZXJzKCkuc2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXItPmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIGF1dG8gc2VydmljZVdvcmtlcklk
ZW50aWZpZXIgPSB3b3JrZXItPmlkZW50aWZpZXIoKTsKIAotICAgIGF1dG8gcnVuU2VydmVyV29y
a2VyQW5kU3RhcnRGZXRjaCA9IFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCB0aGlzLCBm
ZXRjaElkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCByZXF1ZXN0ID0gV1RGTW92
ZShyZXF1ZXN0KSwgb3B0aW9ucyA9IFdURk1vdmUob3B0aW9ucyksIGZvcm1EYXRhID0gV1RGTW92
ZShmb3JtRGF0YSksIHJlZmVycmVyID0gV1RGTW92ZShyZWZlcnJlcildKGJvb2wgc3VjY2Vzcykg
bXV0YWJsZSB7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgaWYgKHdvcmtlci0+c2hvdWxk
U2tpcEZldGNoRXZlbnQoKSkgeworICAgICAgICBhdXRvKiByZWdpc3RyYXRpb24gPSBzZXJ2ZXIo
KS5nZXRSZWdpc3RyYXRpb24od29ya2VyLT5yZWdpc3RyYXRpb25LZXkoKSk7CisgICAgICAgIGlm
IChyZWdpc3RyYXRpb24gJiYgcmVnaXN0cmF0aW9uLT5zaG91bGRTb2Z0VXBkYXRlKGxvYWRlci5w
YXJhbWV0ZXJzKCkub3B0aW9ucykpCisgICAgICAgICAgICByZWdpc3RyYXRpb24tPnNvZnRVcGRh
dGUoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgYXV0byB0YXNrID0g
bWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPihzZXNzaW9uSUQoKSwgbG9hZGVyLCBp
ZGVudGlmaWVyKCksIHdvcmtlci0+aWRlbnRpZmllcigpKTsKKyAgICBzdGFydEZldGNoKCp0YXNr
LCAqd29ya2VyKTsKKyAgICByZXR1cm4gdGFzazsKK30KKwordm9pZCBXZWJTV1NlcnZlckNvbm5l
Y3Rpb246OnN0YXJ0RmV0Y2goU2VydmljZVdvcmtlckZldGNoVGFzayYgdGFzaywgU1dTZXJ2ZXJX
b3JrZXImIHdvcmtlcikKK3sKKyAgICBhdXRvIHJ1blNlcnZlcldvcmtlckFuZFN0YXJ0RmV0Y2gg
PSBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgdGhpcywgdGFzayA9IG1ha2VXZWFrUHRy
KHRhc2spXShib29sIHN1Y2Nlc3MpIG11dGFibGUgeworICAgICAgICBpZiAoIXRhc2spCiAgICAg
ICAgICAgICByZXR1cm47CiAKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykgeworICAgICAgICAgICAg
dGFzay0+ZGlkTm90SGFuZGxlKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwog
ICAgICAgICBpZiAoIXN1Y2Nlc3MpIHsKLSAgICAgICAgICAgIFNXU0VSVkVSQ09OTkVDVElPTl9S
RUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJzdGFydEZldGNoOiBmZXRjaElkZW50aWZpZXI6
ICVzIERpZE5vdEhhbmRsZSBiZWNhdXNlIHdvcmtlciBkaWQgbm90IGJlY29tZSBhY3RpdmF0ZWQi
LCBmZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAg
ICAgICAgbV9jb250ZW50Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNs
aWVudEZldGNoOjpEaWROb3RIYW5kbGUgeyB9LCBmZXRjaElkZW50aWZpZXIpOworICAgICAgICAg
ICAgU1dTRVJWRVJDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoInN0YXJ0
RmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMgRGlkTm90SGFuZGxlIGJlY2F1c2Ugd29ya2VyIGRp
ZCBub3QgYmVjb21lIGFjdGl2YXRlZCIsIHRhc2stPmZldGNoSWRlbnRpZmllcigpLmxvZ2dpbmdT
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHRhc2stPmRpZE5vdEhhbmRsZSgp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byogd29ya2Vy
ID0gc2VydmVyKCkud29ya2VyQnlJRChzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CisgICAgICAg
IGF1dG8qIHdvcmtlciA9IHNlcnZlcigpLndvcmtlckJ5SUQodGFzay0+c2VydmljZVdvcmtlcklk
ZW50aWZpZXIoKSk7CiAgICAgICAgIGlmICghd29ya2VyIHx8IHdvcmtlci0+aGFzVGltZWRPdXRB
bnlGZXRjaFRhc2tzKCkpIHsKLSAgICAgICAgICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0
Y2hJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIHRhc2stPmRpZE5vdEhhbmRsZSgpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgc2VydmVyKCkucnVuU2VydmljZVdv
cmtlcklmTmVjZXNzYXJ5KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBbd2Vha1RoaXMgPSBXVEZN
b3ZlKHdlYWtUaGlzKSwgdGhpcywgZmV0Y2hJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMgPSBXVEZNb3ZlKG9wdGlv
bnMpLCBmb3JtRGF0YSA9IFdURk1vdmUoZm9ybURhdGEpLCByZWZlcnJlciA9IFdURk1vdmUocmVm
ZXJyZXIpLCBzaG91bGRTa2lwRmV0Y2hFdmVudCA9IHdvcmtlci0+c2hvdWxkU2tpcEZldGNoRXZl
bnQoKV0oYXV0byogY29udGV4dENvbm5lY3Rpb24pIHsKLSAgICAgICAgICAgIGlmICghd2Vha1Ro
aXMpCisgICAgICAgIGlmICghd29ya2VyLT5jb250ZXh0Q29ubmVjdGlvbigpKQorICAgICAgICAg
ICAgc2VydmVyKCkuY3JlYXRlQ29udGV4dENvbm5lY3Rpb24od29ya2VyLT5yZWdpc3RyYWJsZURv
bWFpbigpKTsKKworICAgICAgICBzZXJ2ZXIoKS5ydW5TZXJ2aWNlV29ya2VySWZOZWNlc3Nhcnko
dGFzay0+c2VydmljZVdvcmtlcklkZW50aWZpZXIoKSwgW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFr
VGhpcyksIHRoaXMsIHRhc2sgPSBXVEZNb3ZlKHRhc2spXShhdXRvKiBjb250ZXh0Q29ubmVjdGlv
bikgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXRhc2spCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKSB7CisgICAgICAg
ICAgICAgICAgdGFzay0+ZGlkTm90SGFuZGxlKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoY29udGV4dENvbm5lY3Rpb24pIHsKLSAg
ICAgICAgICAgICAgICBTV1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
c3RhcnRGZXRjaDogU3RhcnRpbmcgZmV0Y2ggJXMgdmlhIHNlcnZpY2Ugd29ya2VyICVzIiwgZmV0
Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJj4oKmNvbnRleHRD
b25uZWN0aW9uKS5zdGFydEZldGNoKHNlc3Npb25JRCgpLCAqdGhpcywgZmV0Y2hJZGVudGlmaWVy
LCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9ucywgZm9ybURhdGEsIHJl
ZmVycmVyKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgU1dTRVJWRVJD
T05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoInN0YXJ0RmV0Y2g6IGZldGNo
SWRlbnRpZmllcjogJXMgRGlkTm90SGFuZGxlIGJlY2F1c2UgZmFpbGVkIHRvIHJ1biBzZXJ2aWNl
IHdvcmtlciwgb3Igc2VydmljZSB3b3JrZXIgaGFzIGhhZCB0aW1lZCBvdXQgZmV0Y2ggdGFza3Mi
LCBmZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAg
ICAgICAgICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3Jr
ZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyKTsKKyAgICAg
ICAgICAgIGlmICghY29udGV4dENvbm5lY3Rpb24pIHsKKyAgICAgICAgICAgICAgICBTV1NFUlZF
UkNPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgic3RhcnRGZXRjaDogZmV0
Y2hJZGVudGlmaWVyOiAlcyBEaWROb3RIYW5kbGUgYmVjYXVzZSBmYWlsZWQgdG8gcnVuIHNlcnZp
Y2Ugd29ya2VyIiwgdGFzay0+ZmV0Y2hJZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOworICAgICAgICAgICAgICAgIHRhc2stPmRpZE5vdEhhbmRsZSgpOworICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFNXU0VSVkVSQ09O
TkVDVElPTl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydEZldGNoOiBTdGFydGluZyBmZXRj
aCAlcyB2aWEgc2VydmljZSB3b3JrZXIgJXMiLCB0YXNrLT5mZXRjaElkZW50aWZpZXIoKS5sb2dn
aW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgdGFzay0+c2VydmljZVdvcmtlcklkZW50aWZpZXIo
KS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mPigqY29udGV4dENvbm5lY3Rpb24pLnN0
YXJ0RmV0Y2goKnRhc2spOwogICAgICAgICB9KTsKICAgICB9OwotCi0gICAgaWYgKHdvcmtlci0+
c2hvdWxkU2tpcEZldGNoRXZlbnQoKSkgewotICAgICAgICBtX2NvbnRlbnRDb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZE5vdEhhbmRsZSB7IH0s
IGZldGNoSWRlbnRpZmllcik7Ci0gICAgICAgIGF1dG8qIHJlZ2lzdHJhdGlvbiA9IHNlcnZlcigp
LmdldFJlZ2lzdHJhdGlvbih3b3JrZXItPnJlZ2lzdHJhdGlvbktleSgpKTsKLSAgICAgICAgaWYg
KHJlZ2lzdHJhdGlvbiAmJiByZWdpc3RyYXRpb24tPnNob3VsZFNvZnRVcGRhdGUob3B0aW9ucykp
Ci0gICAgICAgICAgICByZWdpc3RyYXRpb24tPnNvZnRVcGRhdGUoKTsKKyAgICAKKyAgICBpZiAo
d29ya2VyLnN0YXRlKCkgPT0gU2VydmljZVdvcmtlclN0YXRlOjpBY3RpdmF0aW5nKSB7CisgICAg
ICAgIHdvcmtlci53aGVuQWN0aXZhdGVkKFdURk1vdmUocnVuU2VydmVyV29ya2VyQW5kU3RhcnRG
ZXRjaCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKHdvcmtlci0+c3RhdGUo
KSA9PSBTZXJ2aWNlV29ya2VyU3RhdGU6OkFjdGl2YXRpbmcpIHsKLSAgICAgICAgd29ya2VyLT53
aGVuQWN0aXZhdGVkKFdURk1vdmUocnVuU2VydmVyV29ya2VyQW5kU3RhcnRGZXRjaCkpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIEFTU0VSVCh3b3JrZXItPnN0YXRlKCkgPT0gU2Vydmlj
ZVdvcmtlclN0YXRlOjpBY3RpdmF0ZWQpOworICAgIEFTU0VSVCh3b3JrZXIuc3RhdGUoKSA9PSBT
ZXJ2aWNlV29ya2VyU3RhdGU6OkFjdGl2YXRlZCk7CiAgICAgcnVuU2VydmVyV29ya2VyQW5kU3Rh
cnRGZXRjaCh0cnVlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCmlu
ZGV4IDdiZDJhMzNjYjU4YTMwNzcwZTM5OGJkMDQ5ZTUzZTIyNDIzYTNkMjYuLjk2Nzk2OGMyNmJh
MzNlNDU2MTY0OTY3YTA3OTFiMDI5ZWY0ODk3NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmgKQEAgLTUyLDYgKzUyLDggQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnRE
YXRhOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIE5ldHdvcmtQcm9jZXNzOworY2xhc3Mg
TmV0d29ya1Jlc291cmNlTG9hZGVyOworY2xhc3MgU2VydmljZVdvcmtlckZldGNoVGFzazsKIAog
Y2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uIDogcHVibGljIFdlYkNvcmU6OlNXU2VydmVyOjpD
b25uZWN0aW9uLCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdl
UmVjZWl2ZXIgewogcHVibGljOgpAQCAtNjYsNiArNjgsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAg
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3Q7CiAKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
U2VydmljZVdvcmtlckZldGNoVGFzaz4gY3JlYXRlRmV0Y2hUYXNrKE5ldHdvcmtSZXNvdXJjZUxv
YWRlciYpOworCiBwcml2YXRlOgogICAgIC8vIEltcGxlbWVudCBTV1NlcnZlcjo6Q29ubmVjdGlv
biAoTWVzc2FnZXMgdG8gdGhlIGNsaWVudCBXZWJQcm9jZXNzKQogICAgIHZvaWQgcmVqZWN0Sm9i
SW5DbGllbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYklkZW50aWZpZXIsIGNvbnN0IFdlYkNv
cmU6OkV4Y2VwdGlvbkRhdGEmKSBmaW5hbDsKQEAgLTgyLDcgKzg2LDkgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgc2NoZWR1bGVKb2JJblNlcnZlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0
YSYmKTsKIAotICAgIHZvaWQgc3RhcnRGZXRjaChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiYsIElQQzo6Rm9ybURhdGFSZWZl
cmVuY2UmJiwgU3RyaW5nJiYgcmVmZXJyZXIpOworICAgIGJvb2wgaGFuZGxlRmV0Y2goTmV0d29y
a1Jlc291cmNlTG9hZGVyJik7CisKKyAgICB2b2lkIHN0YXJ0RmV0Y2goU2VydmljZVdvcmtlckZl
dGNoVGFzayYsIFdlYkNvcmU6OlNXU2VydmVyV29ya2VyJik7CiAgICAgdm9pZCBjYW5jZWxGZXRj
aChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6
RmV0Y2hJZGVudGlmaWVyKTsKICAgICB2b2lkIGNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9u
c2UoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6
OkZldGNoSWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IGFiMjQ2OGU4Y2UzY2I1YzZkZGZjODI4Y2U3NWJmZDhj
MWY2MjdlZDcuLjNkYTY0ZDk4NzRlYzFkN2Y3ZWIyOWQ0YzdmZGU1NjdhMmVjNTQxYTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAt
MjksMTAgKzI5LDYgQEAgbWVzc2FnZXMgLT4gV2ViU1dTZXJ2ZXJDb25uZWN0aW9uIHsKICAgICBB
ZGRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIoV2ViQ29yZTo6U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBSZW1vdmVTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bklkZW50aWZpZXIgaWRlbnRpZmllcikKIAotICAgIFN0YXJ0RmV0Y2goV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBzdHJ1Y3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25z
IG9wdGlvbnMsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVzdEJvZHksIFN0cmluZyByZWZl
cnJlcikKLSAgICBDYW5jZWxGZXRjaChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6
RmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllcikKLSAgICBDb250aW51ZURpZFJlY2VpdmVG
ZXRjaFJlc3BvbnNlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50
aWZpZXIgZmV0Y2hJZGVudGlmaWVyKQotCiAgICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIo
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRpb24sIHN0cnVjdCBXZWJD
b3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBtZXNzYWdlLCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyT3JDbGllbnRJZGVudGlmaWVyIHNvdXJjZSkKIAogICAgIERpZFJlc29sdmVSZWdpc3RyYXRp
b25Qcm9taXNlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkga2V5KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRl
eCA4NWQ5ZTk1NWFhNDJlYjkyNmIwODNkMjA0MTVkMzQ3YjMyNTVkNjUyLi5mYWQ2ZWU5ZWViN2Q3
YmM5NzAyMjU5YzYxODBlN2MyYjJmMjRkMTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMTUyLDM5ICsxNTIsMTQgQEAgdm9p
ZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnRlcm1pbmF0ZSgpCiAgICAgc2VuZChN
ZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlRlcm1pbmF0ZVByb2Nlc3Mo
KSk7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzdGFydEZldGNo
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBjb250ZW50
Q29ubmVjdGlvbiwgRmV0Y2hJZGVudGlmaWVyIGNvbnRlbnRGZXRjaElkZW50aWZpZXIsIFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSVBD
OjpGb3JtRGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKK3ZvaWQg
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzdGFydEZldGNoKFNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2smIHRhc2spCiB7Ci0gICAgYXV0byBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciA9
IGNvbnRlbnRDb25uZWN0aW9uLmlkZW50aWZpZXIoKTsKLSAgICBhdXRvIGZldGNoSWRlbnRpZmll
ciA9IEZldGNoSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKLQotICAgIGF1dG8gcmVzdWx0ID0gbV9v
bmdvaW5nRmV0Y2hlcy5hZGQoZmV0Y2hJZGVudGlmaWVyLCBtYWtlVW5pcXVlPFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s+KHNlc3Npb25JRCwgY29udGVudENvbm5lY3Rpb24sICp0aGlzLCBjb250ZW50
RmV0Y2hJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgbV9uZXR3b3JrUHJvY2Vz
cy0+c2VydmljZVdvcmtlckZldGNoVGltZW91dCgpKSk7Ci0KLSAgICBBU1NFUlQoIW1fb25nb2lu
Z0ZldGNoSWRlbnRpZmllcnMuY29udGFpbnMoeyBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwg
Y29udGVudEZldGNoSWRlbnRpZmllciB9KSk7Ci0gICAgbV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVy
cy5hZGQoeyBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29udGVudEZldGNoSWRlbnRpZmll
ciB9LCBmZXRjaElkZW50aWZpZXIpOwotCi0gICAgaWYgKCFzZW5kKE1lc3NhZ2VzOjpXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U3RhcnRGZXRjaCB7IHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyLCByZXF1ZXN0
LCBvcHRpb25zLCBkYXRhLCByZWZlcnJlciB9KSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZS0+ZGlkTm90SGFuZGxlKCk7CisgICAgdGFzay5zdGFydCgqdGhpcyk7CiB9CiAKLXZvaWQg
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjYW5jZWxGZXRjaChXZWJDb3JlOjpTV1Nl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBGZXRj
aElkZW50aWZpZXIgY29udGVudEZldGNoSWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZp
ZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIpCit2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6Y29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZShXZWJDb3JlOjpTV1NlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCBGZXRjaElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKQogewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX29uZ29pbmdGZXRjaElkZW50aWZpZXJz
LmZpbmQoeyBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29udGVudEZldGNoSWRlbnRpZmll
ciB9KTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVycy5lbmQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb246OkNhbmNlbEZldGNoIHsgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIs
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBpdGVyYXRvci0+dmFsdWUgfSk7Ci0KLSAgICBtX29u
Z29pbmdGZXRjaGVzLnJlbW92ZShpdGVyYXRvci0+dmFsdWUpOwotICAgIG1fb25nb2luZ0ZldGNo
SWRlbnRpZmllcnMucmVtb3ZlKGl0ZXJhdG9yKTsKLX0KLQotdm9pZCBXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246OmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoV2ViQ29yZTo6
U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwg
RmV0Y2hJZGVudGlmaWVyIGNvbnRlbnRGZXRjaElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQotewotICAgIGF1dG8gaXRlcmF0b3IgPSBt
X29uZ29pbmdGZXRjaElkZW50aWZpZXJzLmZpbmQoeyBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciwgY29udGVudEZldGNoSWRlbnRpZmllciB9KTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vbmdv
aW5nRmV0Y2hJZGVudGlmaWVycy5lbmQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIHNl
bmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpDb250aW51ZURpZFJl
Y2VpdmVGZXRjaFJlc3BvbnNlIHsgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBpdGVyYXRvci0+dmFsdWUgfSk7CisgICAgLy8gRklYTUU6IFRvIGJl
IGRvbmUgdGhyb3VnaCBOZXR3b3JrUmVzb3VyY2VMb2FkZXIKIH0KIAogdm9pZCBXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb246OmRpZFJlY2VpdmVGZXRjaFRhc2tNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQpAQCAtMTkyLDUxICsx
NjcsNDEgQEAgdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmRpZFJlY2VpdmVG
ZXRjaFRhc2tNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYKICAgICBhdXRvIGl0ZXJhdG9yID0gbV9v
bmdvaW5nRmV0Y2hlcy5maW5kKG1ha2VPYmplY3RJZGVudGlmaWVyPEZldGNoSWRlbnRpZmllclR5
cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSk7CiAgICAgaWYgKGl0ZXJhdG9yID09IG1fb25n
b2luZ0ZldGNoZXMuZW5kKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBib29sIHNob3Vs
ZFJlbW92ZSA9IGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6U2VydmljZVdvcmtl
ckZldGNoVGFzazo6RGlkRmFpbDo6bmFtZSgpCi0gICAgICAgIHx8IGRlY29kZXIubWVzc2FnZU5h
bWUoKSA9PSBNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkTm90SGFuZGxlOjpu
YW1lKCkKLSAgICAgICAgfHwgZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRGaW5pc2g6Om5hbWUoKQotICAgICAgICB8fCBkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJl
Y2VpdmVSZWRpcmVjdFJlc3BvbnNlOjpuYW1lKCk7CiAKICAgICBpdGVyYXRvci0+dmFsdWUtPmRp
ZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwotCi0gICAgaWYgKHNob3VsZFJl
bW92ZSkgewotICAgICAgICBBU1NFUlQobV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVycy5jb250YWlu
cyhpdGVyYXRvci0+dmFsdWUtPmlkZW50aWZpZXIoKSkpOwotICAgICAgICBtX29uZ29pbmdGZXRj
aElkZW50aWZpZXJzLnJlbW92ZShpdGVyYXRvci0+dmFsdWUtPmlkZW50aWZpZXIoKSk7Ci0gICAg
ICAgIG1fb25nb2luZ0ZldGNoZXMucmVtb3ZlKGl0ZXJhdG9yKTsKLSAgICB9CiB9CiAKLXZvaWQg
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmZXRjaFRhc2tUaW1lZE91dChTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrJiB0YXNrKQordm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OnJlZ2lzdGVyRmV0Y2goU2VydmljZVdvcmtlckZldGNoVGFzayYgdGFzaykKIHsKLSAgICBB
U1NFUlQobV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVycy5jb250YWlucyh0YXNrLmlkZW50aWZpZXIo
KSkpOwotICAgIGF1dG8gdGFrZW5JZGVudGlmaWVyID0gbV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVy
cy50YWtlKHRhc2suaWRlbnRpZmllcigpKTsKKyAgICBBU1NFUlQoIW1fb25nb2luZ0ZldGNoZXMu
Y29udGFpbnModGFzay5mZXRjaElkZW50aWZpZXIoKSkpOworICAgIG1fb25nb2luZ0ZldGNoZXMu
YWRkKHRhc2suZmV0Y2hJZGVudGlmaWVyKCksIG1ha2VXZWFrUHRyKHRhc2spKTsKK30KIAotICAg
IEFTU0VSVChtX29uZ29pbmdGZXRjaGVzLmNvbnRhaW5zKHRha2VuSWRlbnRpZmllcikpOwotICAg
IGF1dG8gdGFrZW5UYXNrID0gbV9vbmdvaW5nRmV0Y2hlcy50YWtlKHRha2VuSWRlbnRpZmllcik7
Ci0gICAgQVNTRVJUKHRha2VuVGFzayk7Ci0gICAgQVNTRVJUKHRha2VuVGFzay5nZXQoKSA9PSAm
dGFzayk7Cit2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6dW5yZWdpc3RlckZl
dGNoKFNlcnZpY2VXb3JrZXJGZXRjaFRhc2smIHRhc2spCit7CisgICAgQVNTRVJUKG1fb25nb2lu
Z0ZldGNoZXMuY29udGFpbnModGFzay5mZXRjaElkZW50aWZpZXIoKSkpOworICAgIG1fb25nb2lu
Z0ZldGNoZXMucmVtb3ZlKHRhc2suZmV0Y2hJZGVudGlmaWVyKCkpOworfQogCi0gICAgLy8gR2F0
aGVyIGFsbCBvdGhlciBmZXRjaGVzIGluIHRoaXMgc2VydmljZSB3b3JrZXIKLSAgICBWZWN0b3I8
U2VydmljZVdvcmtlckZldGNoVGFzayo+IG90aGVyRmV0Y2hlczsKK3ZvaWQgV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjpmZXRjaFRhc2tUaW1lZE91dChTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKK3sKKyAgICAvLyBHYXRoZXIgYWxsIGZldGNo
ZXMgaW4gdGhpcyBzZXJ2aWNlIHdvcmtlcgorICAgIFZlY3RvcjxTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrKj4gZmV0Y2hlczsKICAgICBmb3IgKGF1dG8mIGZldGNoVGFzayA6IG1fb25nb2luZ0ZldGNo
ZXMudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKGZldGNoVGFzay0+c2VydmljZVdvcmtlcklkZW50
aWZpZXIoKSA9PSB0YXNrLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICBv
dGhlckZldGNoZXMuYXBwZW5kKGZldGNoVGFzay5nZXQoKSk7CisgICAgICAgIGlmIChmZXRjaFRh
c2stPnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCkgPT0gc2VydmljZVdvcmtlcklkZW50aWZpZXIp
CisgICAgICAgICAgICBmZXRjaGVzLmFwcGVuZChmZXRjaFRhc2suZ2V0KCkpOwogICAgIH0KIAog
ICAgIC8vIFNpZ25hbCBsb2FkIGZhaWx1cmUgZm9yIHRoZW0KLSAgICBmb3IgKGF1dG8qIGZldGNo
VGFzayA6IG90aGVyRmV0Y2hlcykgeworICAgIGZvciAoYXV0byogZmV0Y2hUYXNrIDogZmV0Y2hl
cykgewogICAgICAgICBpZiAoZmV0Y2hUYXNrLT53YXNIYW5kbGVkKCkpCiAgICAgICAgICAgICBm
ZXRjaFRhc2stPmZhaWwoeyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB7IH0sICJTZXJ2
aWNlIFdvcmtlciBjb250ZXh0IGNsb3NlZCJfcyB9KTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgZmV0Y2hUYXNrLT5kaWROb3RIYW5kbGUoKTsKLQotICAgICAgICBhdXRvIGlkZW50aWZpZXIg
PSBtX29uZ29pbmdGZXRjaElkZW50aWZpZXJzLnRha2UoZmV0Y2hUYXNrLT5pZGVudGlmaWVyKCkp
OwotICAgICAgICBtX29uZ29pbmdGZXRjaGVzLnJlbW92ZShpZGVudGlmaWVyKTsKICAgICB9CiAK
ICAgICBpZiAobV9zZXJ2ZXIpIHsKLSAgICAgICAgaWYgKGF1dG8qIHdvcmtlciA9IG1fc2VydmVy
LT53b3JrZXJCeUlEKHRhc2suc2VydmljZVdvcmtlcklkZW50aWZpZXIoKSkpIHsKKyAgICAgICAg
aWYgKGF1dG8qIHdvcmtlciA9IG1fc2VydmVyLT53b3JrZXJCeUlEKHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKSkgewogICAgICAgICAgICAgd29ya2VyLT5zZXRIYXNUaW1lZE91dEFueUZldGNoVGFz
a3MoKTsKICAgICAgICAgICAgIGlmICh3b3JrZXItPmlzUnVubmluZygpKQogICAgICAgICAgICAg
ICAgIG1fc2VydmVyLT5zeW5jVGVybWluYXRlV29ya2VyKCp3b3JrZXIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4IGUzMGYzNDFlMTdi
ZTE4NjA4Y2VlYzlhMjAzMmJkYTAyOWE0Y2E1ZjYuLjdlZDMxNDhmNjdlODM4NDJlNDg4MTllYzU3
Mzc2ZDI1MGEzNzY5NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmgKQEAgLTUyLDIwICs1MiwxOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNs
YXNzIE5ldHdvcmtQcm9jZXNzOwogY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOwogCi1jbGFz
cyBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gOiBwdWJsaWMgV2ViQ29yZTo6U1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bj4sIHB1YmxpYyBXZWJDb3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24sIHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6
CiAgICAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgV2ViQ29yZTo6U1dTZXJ2ZXImLCBSZWY8SVBDOjpD
b25uZWN0aW9uPiYmKTsKICAgICB+V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCk7CiAK
LSAgICBJUEM6OkNvbm5lY3Rpb24qIGlwY0Nvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lw
Y0Nvbm5lY3Rpb24ucHRyKCk7IH0KKyAgICBJUEM6OkNvbm5lY3Rpb24mIGlwY0Nvbm5lY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX2lwY0Nvbm5lY3Rpb24uZ2V0KCk7IH0KIAogICAgIC8vIElQQzo6
TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKIAogICAgIHZvaWQgdGVybWluYXRlKCk7CiAKLSAg
ICB2b2lkIHN0YXJ0RmV0Y2goUEFMOjpTZXNzaW9uSUQsIFdlYlNXU2VydmVyQ29ubmVjdGlvbiYs
IFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OkZldGNo
T3B0aW9ucyYsIGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmKTsK
LSAgICB2b2lkIGNhbmNlbEZldGNoKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIpOworICAgIHZvaWQgc3RhcnRGZXRjaChTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrJik7CiAg
ICAgdm9pZCBjb250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKFdlYkNvcmU6OlNXU2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlRmV0Y2hUYXNr
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKQEAgLTczLDcgKzcyLDEw
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRocm90dGxlU3RhdGUoYm9vbCBpc1Rocm90dGxlYWJs
ZSk7CiAgICAgYm9vbCBpc1Rocm90dGxlYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNUaHJvdHRs
ZWFibGU7IH0KIAotICAgIHZvaWQgZmV0Y2hUYXNrVGltZWRPdXQoU2VydmljZVdvcmtlckZldGNo
VGFzayYpOworICAgIHZvaWQgZmV0Y2hUYXNrVGltZWRPdXQoV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIpOworCisgICAgdm9pZCByZWdpc3RlckZldGNoKFNlcnZpY2VXb3JrZXJGZXRj
aFRhc2smKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJGZXRjaChTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Jik7CiAKIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyCkBAIC05OCwxMiArMTAw
LDEzIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNvbm5lY3Rpb25DbG9zZWQoKTsKIAorICAgIHZv
aWQgdGltZW91dFRpbWVyRmlyZWQoKTsKKwogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1faXBj
Q29ubmVjdGlvbjsKICAgICBSZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29ya1Byb2Nlc3M7CiAg
ICAgV2Vha1B0cjxXZWJDb3JlOjpTV1NlcnZlcj4gbV9zZXJ2ZXI7CiAKLSAgICBIYXNoTWFwPFNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s6OklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmll
cj4gbV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVyczsKLSAgICBIYXNoTWFwPFdlYkNvcmU6OkZldGNo
SWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+PiBtX29u
Z29pbmdGZXRjaGVzOworICAgIEhhc2hNYXA8V2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyLCBXZWFr
UHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+PiBtX29uZ29pbmdGZXRjaGVzOwogICAgIGJvb2wg
bV9pc1Rocm90dGxlYWJsZSB7IHRydWUgfTsKIH07IC8vIGNsYXNzIFdlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA5MzZjMGNmNTVhZDAzZmJiYjNhZGM4NDM5
MjAxM2E5MGUzNDhiNWVkLi42MzI3OGIxYmJlZTA4YTcyNTg5YjQzMzdkNTgzYmVmMzczZTIyMmFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKQEAgLTUyNSw3ICs1MjUsNiBAQCBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwIEBuby11bmlmeQogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcCBAbm8tdW5pZnkKIFdlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAgQG5vLXVuaWZ5CiAKLVdlYlBy
b2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guY3BwCiBXZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXT3Jp
Z2luVGFibGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA2MzhlYmVkNTg1M2ZkN2FkNDc0OTkzNTEzZTZhZmEwMWIwODcwYjdiLi45
YTk1NzNiNjU3MjI0NDg4MmEzOTYxNzZlNmRmNjBiNWQ3ZTdhYjU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExNDMsNyArMTE0Myw2
IEBACiAJCTVDRTkxMjEyMjI5M0MyNzgwMDVCRUM3OCAvKiBBdXhpbGlhcnlQcm9jZXNzTWFpbi5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0U5MTIw
RjIyOTNDMjVGMDA1QkVDNzggLyogQXV4aWxpYXJ5UHJvY2Vzc01haW4uY3BwICovOyB9OwogCQk1
Q0U5MTIxMzIyOTNDMjc5MDA1QkVDNzggLyogQXV4aWxpYXJ5UHJvY2Vzc01haW4uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNFOTEyMEYyMjkzQzI1
RjAwNUJFQzc4IC8qIEF1eGlsaWFyeVByb2Nlc3NNYWluLmNwcCAqLzsgfTsKIAkJNUNFOTEyMTQy
MjkzQzI4MDAwNUJFQzc4IC8qIFdLTWFpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNUNFOTEyMEIyMjkzQzFFMDAwNUJFQzc4IC8qIFdLTWFpbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTYxN0E1MkQ4
MUY0M0E5REEwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjE3
QTUyRDcxRjQzQTlCNjAwRENEQzBBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi87IH07CiAJCTYzMTA4Rjk2MUY5NjcxOUMwMEEwREI4NCAvKiBfV0tBcHBs
aWNhdGlvbk1hbmlmZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2MzEwOEY5NDFGOTY3MTlDMDBBMERCODQgLyogX1dLQXBwbGljYXRpb25NYW5pZmVz
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTYz
MTA4Rjk5MUY5NjcxRjcwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzMTA4Rjk4
MUY5NjcxRjcwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwuaCAqLzsg
fTsKIAkJNjM0ODQyNTExRkIyNkU3MTAwOTQ2RTNDIC8qIEFQSUFwcGxpY2F0aW9uTWFuaWZlc3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzNDg0MjRG
MUZCMjZFNzEwMDk0NkUzQyAvKiBBUElBcHBsaWNhdGlvbk1hbmlmZXN0LmggKi87IH07CkBAIC0z
MTI5LDkgKzMxMjgsNiBAQAogCQk0MTMwNzVBNjFERTg1RUU3MDAzOUVDNjkgLyogTGliV2ViUlRD
U29ja2V0RmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJXZWJS
VENTb2NrZXRGYWN0b3J5Lmg7IHBhdGggPSBOZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRG
YWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzA3NUE3MURFODVFRTcw
MDM5RUM2OSAvKiBMaWJXZWJSVENQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IGxpbmVFbmRpbmcgPSAwOyBuYW1lID0gTGliV2ViUlRDUHJvdmlkZXIuY3BwOyBwYXRo
ID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLmNw
cDsgfTsKIAkJNDEzMDc1QTgxREU4NUVFNzAwMzlFQzY5IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbGluZUVuZGluZyA9IDA7IG5hbWUgPSBMaWJXZWJS
VENQcm92aWRlci5oOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVy
ID0geGNvZGUubGFuZy5vYmpjcHA7IH07Ci0JCTQxMzFGM0NFMUY5NkE0OTUwMDU5OTk1QSAvKiBT
ZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2VydmljZVdvcmtlckNsaWVudEZldGNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTQxMzFGM0NGMUY5NkE5MzYwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gu
bWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2VydmljZVdvcmtlckNsaWVudEZl
dGNoLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTMxRjNEMDFG
OTZCQ0M4MDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzFGM0UwMUY5ODcxMkMwMDU5OTk1QSAv
KiBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTM1RkJDRjFGNEZCN0YyMDA3NEM0N0IgLyog
Q2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxMzVGQkQwMUY0RkI3RjIwMDc0QzQ3QiAvKiBDYWNoZVN0b3JhZ2VFbmdp
bmVDYWNoZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVTdG9yYWdl
RW5naW5lQ2FjaGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNzA4LDcgKzM3
MDQsNiBAQAogCQk1Q0VBQkEyQjIzMzMyNTE0MDA3OTc3OTcgLyogTGVnYWN5R2xvYmFsU2V0dGlu
Z3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGVnYWN5R2xvYmFs
U2V0dGluZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0ZFQ0IwMzFFMUVE
MUM4MDBGODg1MDQgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEQUQ3M0YxMTE2RkY5MEMwMEVFNTM5
NiAvKiBCYXNlVGFyZ2V0LnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9
IEJhc2VUYXJnZXQueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTYxN0E1
MkQ3MUY0M0E5QjYwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU2VydmljZVdv
cmtlckNsaWVudEZldGNoTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291
cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNjMxMDhGOTQxRjk2NzE5QzAwQTBE
Qjg0IC8qIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLQXBwbGlj
YXRpb25NYW5pZmVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2MzEwOEY5NTFG
OTY3MTlDMDBBMERCODQgLyogX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTYzMTA4Rjk4MUY5NjcxRjcwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlm
ZXN0SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLQXBwbGljYXRpb25NYW5pZmVzdEludGVy
bmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02ODM5LDkgKzY4MzQsNiBAQAog
CQk1MTE4RTk5ODFGMjk1MjU5MDAzRUY5RjUgLyogU3RvcmFnZSAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJNDEzMUYzRDAxRjk2QkNDODAwNTk5OTVBIC8q
IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5jcHAgKi8sCi0JCQkJNDEzMUYzQ0UxRjk2QTQ5NTAw
NTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5oICovLAotCQkJCTQxMzFGM0NGMUY5
NkE5MzYwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gubWVzc2FnZXMuaW4gKi8s
CiAJCQkJNDEzMUYzRTAxRjk4NzEyQzAwNTk5OTVBIC8qIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2tDbGllbnQuY3BwICovLAogCQkJCTQxOUFDRjlCMUY5ODFEMjYwMDlGMUE4MyAvKiBXZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmggKi8sCiAJCQkJNTFCRUI2MjkxRjNBNUFDRDAwNTAy
OUI5IC8qIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAgKi8sCkBAIC04ODc0LDcgKzg4NjYs
NiBAQAogCQkJCTFCQkJFNDlFMTlCNjZDNTMwMDZCN0Q4MSAvKiBSZW1vdGVXZWJJbnNwZWN0b3JV
SU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJRTE4RTY5MTMxNjlCNjY3QjAwOUI2NjcwIC8q
IFNlY0l0ZW1TaGltUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCUUxOEU2OTE0MTY5
QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5TWVzc2FnZXMuaCAqLywKLQkJCQk2MTdB
NTJENzFGNDNBOUI2MDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLywKIAkJCQkyREU2OTQzQjE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWdu
aWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMkRFNjk0M0Mx
OEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5o
ICovLAogCQkJCTFBMzM0REVCMTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3Nh
Z2VSZWNlaXZlci5jcHAgKi8sCkBAIC0xMTMxMyw3ICsxMTMwNCw2IEBACiAJCQkJQTU1QkE4MjYx
QkEyNUNGRDAwN0NEMzNEIC8qIFJlbW90ZVdlYkluc3BlY3RvclByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFCQkJFNEEwMTlCNjZDNTMwMDZCN0Q4MSAvKiBSZW1v
dGVXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlF
MThFNjkxNzE2OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk2MTdBNTJEODFGNDNBOURBMDBEQ0RDMEEgLyogU2Vy
dmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTQxREU3QzZDMjIyNzhGMUUwMDUzMkI2NSAvKiBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzg3MjEyQjZBQjEwMEY0OTNGRCAvKiBTaGFyZWFi
bGVCaXRtYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRFNjk0M0QxOEJEMkE2ODAwNUMxNUU1
IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCBmMGI0ZmRmYTZhMzExNzA0
OTk2ZDc4NWExYzk2Mjc3MzYwMTE5ODAxLi4zMDgzMzU3NzMwMWQwZjI2NDUzMmI0YTMyYmE4NmVm
NmVmNWI5YjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTI5LDcgKzI5LDYgQEAK
ICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDTmV0d29yay5o
IgogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKLSNp
bmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlN0
b3JhZ2VBcmVhTWFwLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIldlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgiCkBAIC0xNDEsMTAgKzE0MCw2IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIElQCiAgICAgICAgICAgICBtX3N3Q29ubmVjdGlvbi0+ZGlkUmVj
ZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpTZXJ2
aWNlV29ya2VyQ2xpZW50RmV0Y2g6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewotICAgICAgICBX
ZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVTZXJ2aWNlV29y
a2VyQ2xpZW50RmV0Y2hNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNz
YWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSkgewogICAgICAgICBBU1NFUlQoU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVj
dGlvbigpKTsKICAgICAgICAgaWYgKGF1dG8qIGNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiA9IFNX
Q29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRl
eCBhZmEzYzcyNDE0OGRhMTI3NWEyNzcwZGZjN2U4M2Q3Mjk2ZGE1MDQ0Li5hOWZjMDRkNTM4ZmVi
OWI3ZjRkOTRlNjQ4MjEzM2JmOTI1ZjNkNDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC0yMTUsNDEgKzIx
NSwyMCBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2Fk
ZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCi0gICAgaWYgKCEhcmVzb3VyY2VMb2FkZXIub3B0aW9ucygpLnNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKQotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIHNjaGVkdWxlZCB0aHJvdWdoIFNlcnZpY2VX
b3JrZXIgb3IgTmV0d29yayBQcm9jZXNzIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVz
b3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgp
LCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRC50b1VJbnQ2NCgpLCBpZGVudGlmaWVyKTsKKyAg
ICBhdXRvIHVybCA9IHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS51cmwoKTsKKyAgICBhdXRvKiBk
YXRhID0gdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCk7CisgICAgaWYgKGRhdGEpCisgICAgICAg
IHVybC5zdHJpbmcoKTsKIAotICAgIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9u
KCkuaGFuZGxlRmV0Y2gocmVzb3VyY2VMb2FkZXIsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBT
VG9IVFRQUmVkaXJlY3QsIFt0aGlzLCB0cmFja2luZ1BhcmFtZXRlcnMsIGlkZW50aWZpZXIsIHNo
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIG1heGltdW1CdWZmZXJpbmdU
aW1lID0gbWF4aW11bUJ1ZmZlcmluZ1RpbWUocmVzb3VyY2UpLCByZXNvdXJjZUxvYWRlciA9IG1h
a2VSZWYocmVzb3VyY2VMb2FkZXIpXSAoU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpSZXN1bHQg
cmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKHJlc3VsdCAhPSBTZXJ2aWNlV29ya2VyQ2xp
ZW50RmV0Y2g6OlJlc3VsdDo6VW5oYW5kbGVkKSB7Ci0gICAgICAgICAgICBMT0coTmV0d29ya1Nj
aGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwg
dXJsICclcycgd2lsbCBiZSBzY2hlZHVsZWQgdGhyb3VnaCBTZXJ2aWNlV29ya2VyIGhhbmRsZSBm
ZXRjaCBhbGdvcml0aG0iLCByZXNvdXJjZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCku
ZGF0YSgpKTsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInNjaGVkdWxlTG9h
ZDogVVJMIHdpbGwgYmUgc2NoZWR1bGVkIHRocm91Z2ggU2VydmljZVdvcmtlciBoYW5kbGUgZmV0
Y2ggYWxnb3JpdGhtIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIt
PmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQ
YXJhbWV0ZXJzLmZyYW1lSUQudG9VSW50NjQoKSwgaWRlbnRpZmllcik7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHJlc291cmNlTG9hZGVyLT5vcHRpb25zKCku
c2VydmljZVdvcmtlcnNNb2RlID09IFNlcnZpY2VXb3JrZXJzTW9kZTo6T25seSkgewotICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgic2NoZWR1bGVMb2FkOiB1bmFibGUg
dG8gc2NoZWR1bGUgVVJMIHRocm91Z2ggU2VydmljZVdvcmtlciBoYW5kbGUgZmV0Y2ggYWxnb3Jp
dGhtIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2
NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXItPmZyYW1lKCks
IHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJz
LmZyYW1lSUQudG9VSW50NjQoKSwgaWRlbnRpZmllcik7Ci0gICAgICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKFtyZXNvdXJjZUxvYWRlciA9IFdURk1vdmUocmVzb3VyY2VMb2FkZXIpXSB7Ci0gICAg
ICAgICAgICAgICAgYXV0byBlcnJvciA9IGludGVybmFsRXJyb3IocmVzb3VyY2VMb2FkZXItPnJl
cXVlc3QoKS51cmwoKSk7Ci0gICAgICAgICAgICAgICAgZXJyb3Iuc2V0VHlwZShSZXNvdXJjZUVy
cm9yOjpUeXBlOjpDYW5jZWxsYXRpb24pOwotICAgICAgICAgICAgICAgIHJlc291cmNlTG9hZGVy
LT5kaWRGYWlsKGVycm9yKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJMb2Fk
ZXJTdHJhdGVneSgpLnRyeUxvYWRpbmdVc2luZ1VSTFNjaGVtZUhhbmRsZXIocmVzb3VyY2VMb2Fk
ZXIpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzY2hlZHVsZUxvYWQ6
IFVSTCB3aWxsIGJlIHNjaGVkdWxlZCB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyAoZnJhbWUgPSAl
cCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLT5mcmFtZSgpLCB0cmFja2luZ1BhcmFt
ZXRlcnMucGFnZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELnRvVUlu
dDY0KCksIGlkZW50aWZpZXIpOwotICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
d2ViTG9hZGVyU3RyYXRlZ3koKS5zY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MocmVzb3Vy
Y2VMb2FkZXIuZ2V0KCksIHJlc291cmNlTG9hZGVyLT5yZXF1ZXN0KCksIHRyYWNraW5nUGFyYW1l
dGVycywgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgbWF4aW11bUJ1
ZmZlcmluZ1RpbWUpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic2NoZWR1bGVMb2FkOiBVUkwgbm90IGhhbmRsZWQgYnkg
YW55IGhhbmRsZXJzIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIt
PmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQ
YXJhbWV0ZXJzLmZyYW1lSUQudG9VSW50NjQoKSwgaWRlbnRpZmllcik7Ci0gICAgfSk7CisgICAg
aWYgKChyZXNvdXJjZUxvYWRlci5vcHRpb25zKCkuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIgJiYgcmVzb3VyY2VMb2FkZXIub3B0aW9ucygpLnNlcnZpY2VXb3JrZXJzTW9kZSAh
PSBTZXJ2aWNlV29ya2Vyc01vZGU6Ok5vbmUpIHx8ICF0cnlMb2FkaW5nVXNpbmdVUkxTY2hlbWVI
YW5kbGVyKHJlc291cmNlTG9hZGVyKSkgewogI2Vsc2UKICAgICBpZiAoIXRyeUxvYWRpbmdVc2lu
Z1VSTFNjaGVtZUhhbmRsZXIocmVzb3VyY2VMb2FkZXIpKSB7CisjZW5kaWYKICAgICAgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRCgic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBzY2hlZHVsZWQg
d2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAi
LCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNv
dXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCks
IHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELnRvVUludDY0KCksIGlkZW50aWZpZXIpOwogICAg
ICAgICBzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MocmVzb3VyY2VMb2FkZXIsIHJlc291
cmNlTG9hZGVyLnJlcXVlc3QoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLCBzaG91bGRDbGVhclJlZmVy
cmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBtYXhpbXVtQnVmZmVyaW5nVGltZShyZXNvdXJjZSkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInNj
aGVkdWxlTG9hZDogVVJMIG5vdCBoYW5kbGVkIGJ5IGFueSBoYW5kbGVycyAoZnJhbWUgPSAlcCwg
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9
ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVy
cy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQudG9VSW50NjQo
KSwgaWRlbnRpZmllcik7Ci0jZW5kaWYKIH0KIAogYm9vbCBXZWJMb2FkZXJTdHJhdGVneTo6dHJ5
TG9hZGluZ1VzaW5nVVJMU2NoZW1lSGFuZGxlcihSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2Fk
ZXIpCkBAIC0yNzEsNiArMjUwLDEwIEBAIGJvb2wgV2ViTG9hZGVyU3RyYXRlZ3k6OnRyeUxvYWRp
bmdVc2luZ1VSTFNjaGVtZUhhbmRsZXIoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlCiAKIHZvaWQg
V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhSZXNvdXJj
ZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgV2ViUmVzb3VyY2VMb2FkZXI6OlRyYWNraW5nUGFyYW1ldGVycyYgdHJhY2tpbmdQYXJh
bWV0ZXJzLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFNl
Y29uZHMgbWF4aW11bUJ1ZmZlcmluZ1RpbWUpCiB7CisgICAgYXV0byogd2ViRnJhbWVMb2FkZXJD
bGllbnQgPSB0b1dlYkZyYW1lTG9hZGVyQ2xpZW50KHJlc291cmNlTG9hZGVyLmZyYW1lTG9hZGVy
KCktPmNsaWVudCgpKTsKKyAgICBhdXRvKiB3ZWJGcmFtZSA9IHdlYkZyYW1lTG9hZGVyQ2xpZW50
ID8gd2ViRnJhbWVMb2FkZXJDbGllbnQtPndlYkZyYW1lKCkgOiBudWxscHRyOworICAgIGF1dG8q
IHdlYlBhZ2UgPSB3ZWJGcmFtZSA/IHdlYkZyYW1lLT5wYWdlKCkgOiBudWxscHRyOworCiAgICAg
UmVzb3VyY2VMb2FkSWRlbnRpZmllciBpZGVudGlmaWVyID0gcmVzb3VyY2VMb2FkZXIuaWRlbnRp
ZmllcigpOwogICAgIEFTU0VSVChpZGVudGlmaWVyKTsKIApAQCAtMzAyLDYgKzI4NSwxNyBAQCB2
b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MoUmVz
b3VyY2VMb2FkZXImIHJlc291cmNlTAogICAgIGxvYWRQYXJhbWV0ZXJzLnByZWZsaWdodFBvbGlj
eSA9IHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5wcmVmbGlnaHRQb2xpY3k7CiAgICAgbG9hZFBh
cmFtZXRlcnMuaXNIVFRQU1VwZ3JhZGVFbmFibGVkID0gcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSA/
IHJlc291cmNlTG9hZGVyLmZyYW1lKCktPnNldHRpbmdzKCkuSFRUUFNVcGdyYWRlRW5hYmxlZCgp
IDogZmFsc2U7CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgLy8gSW4gY2FzZSBv
ZiBVUkwgc2NoZW1lIGhhbmRsZXIsIHdlIHdpbGwgdHJ5IHRvIGxvYWQgb24gc2VydmljZSB3b3Jr
ZXJzIGFuZCBpZiB1bmhhbmRsZWQsIGZhbGxiYWNrIHRvIFVSTCBzY2hlbWUgaGFuZGxlci4KKyAg
ICBpZiAocmVzb3VyY2VMb2FkZXIub3B0aW9ucygpLnNlcnZpY2VXb3JrZXJzTW9kZSA9PSBTZXJ2
aWNlV29ya2Vyc01vZGU6OkFsbCAmJiB3ZWJQYWdlICYmICB3ZWJQYWdlLT51cmxTY2hlbWVIYW5k
bGVyRm9yU2NoZW1lKHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS51cmwoKS5wcm90b2NvbCgpLnRv
U3RyaW5nV2l0aG91dENvcHlpbmcoKSkpCisgICAgICAgIGxvYWRQYXJhbWV0ZXJzLnNlcnZpY2VX
b3JrZXJzTW9kZSA9IFNlcnZpY2VXb3JrZXJzTW9kZTo6T25seTsKKyAgICBlbHNlCisgICAgICAg
IGxvYWRQYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJzTW9kZSA9IHJlc291cmNlTG9hZGVyLm9wdGlv
bnMoKS5zZXJ2aWNlV29ya2Vyc01vZGU7CisKKyAgICBsb2FkUGFyYW1ldGVycy5zZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciA9IHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5zZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcjsKKyAgICBsb2FkUGFyYW1ldGVycy5odHRw
SGVhZGVyc1RvS2VlcCA9IHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5odHRwSGVhZGVyc1RvS2Vl
cDsKKyNlbmRpZgorCiAgICAgYXV0byogZG9jdW1lbnQgPSByZXNvdXJjZUxvYWRlci5mcmFtZSgp
ID8gcmVzb3VyY2VMb2FkZXIuZnJhbWUoKS0+ZG9jdW1lbnQoKSA6IG51bGxwdHI7CiAgICAgaWYg
KHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5jc3BSZXNwb25zZUhlYWRlcnMpCiAgICAgICAgIGxv
YWRQYXJhbWV0ZXJzLmNzcFJlc3BvbnNlSGVhZGVycyA9IHJlc291cmNlTG9hZGVyLm9wdGlvbnMo
KS5jc3BSZXNwb25zZUhlYWRlcnM7CkBAIC00MzgsMTEgKzQzMiw2IEBAIHZvaWQgV2ViTG9hZGVy
U3RyYXRlZ3k6OnJlbW92ZShSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIpCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKFdl
YlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuY2FuY2VsRmV0Y2gobWFrZU9iamVj
dElkZW50aWZpZXI8RmV0Y2hJZGVudGlmaWVyVHlwZT4oaWRlbnRpZmllcikpKQotICAgICAgICBy
ZXR1cm47Ci0jZW5kaWYKLQogICAgIFJlZlB0cjxXZWJSZXNvdXJjZUxvYWRlcj4gbG9hZGVyID0g
bV93ZWJSZXNvdXJjZUxvYWRlcnMudGFrZShpZGVudGlmaWVyKTsKICAgICAvLyBMb2FkZXIgbWF5
IG5vdCBiZSByZWdpc3RlcmVkIGlmIHdlIGNyZWF0ZWQgaXQsIGJ1dCBoYXZlbid0IHNjaGVkdWxl
ZCB5ZXQgKGEgYnVuZGxlIGNsaWVudCBjYW4gZGVjaWRlIHRvIGNhbmNlbCBzdWNoIHJlcXVlc3Qg
dmlhIHdpbGxTZW5kUmVxdWVzdCkuCiAgICAgaWYgKCFsb2FkZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXgg
YTM5MjQxYWNhMzBmZTc5NjgxMTAyNzQzMjAxN2NhNDQ5YmZiMWYyZi4uMGMwOGFhZTk3NDkxNGIz
NmQxYzIwMGNlZWJkMjM3MzhiY2E3OGYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcApAQCAtMzIsNiArMzIsOSBA
QAogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCisjaW5jbHVk
ZSAiV2ViRnJhbWUuaCIKKyNpbmNsdWRlICJXZWJGcmFtZUxvYWRlckNsaWVudC5oIgorI2luY2x1
ZGUgIldlYkxvYWRlclN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZUhvc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nl
cnRpZmljYXRlSW5mby5oPgpAQCAtMzksNiArNDIsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRGlh
Z25vc3RpY0xvZ2dpbmdLZXlzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudExvYWRlci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9h
ZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25X
ZWJLaXQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtMb2FkTWV0cmljcy5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUGFnZS5oPgpAQCAtMjE4LDYgKzIyMiw0NyBAQCB2b2lkIFdlYlJlc291cmNl
TG9hZGVyOjpkaWRGaW5pc2hSZXNvdXJjZUxvYWQoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBu
ZXR3b3JrTAogICAgIG1fY29yZUxvYWRlci0+ZGlkRmluaXNoTG9hZGluZyhuZXR3b3JrTG9hZE1l
dHJpY3MpOwogfQogCit2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRGYWlsU2VydmljZVdvcmtl
ckxvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCit7CisgICAgaWYgKGF1dG8qIGRvY3Vt
ZW50ID0gbV9jb3JlTG9hZGVyLT5mcmFtZSgpID8gbV9jb3JlTG9hZGVyLT5mcmFtZSgpLT5kb2N1
bWVudCgpIDogbnVsbHB0cikgeworICAgICAgICBpZiAobV9jb3JlTG9hZGVyLT5vcHRpb25zKCku
ZGVzdGluYXRpb24gIT0gRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6RW1wdHlTdHJpbmcgfHwg
ZXJyb3IuaXNHZW5lcmFsKCkpCisgICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yLmxvY2FsaXpl
ZERlc2NyaXB0aW9uKCkpOworICAgICAgICBpZiAobV9jb3JlTG9hZGVyLT5vcHRpb25zKCkuZGVz
dGluYXRpb24gIT0gRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6RW1wdHlTdHJpbmcpCisgICAg
ICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1l
c3NhZ2VMZXZlbDo6RXJyb3IsIG1ha2VTdHJpbmcoIkNhbm5vdCBsb2FkICIsIGVycm9yLmZhaWxp
bmdVUkwoKS5zdHJpbmcoKSwgIi4iKSk7CisgICAgfQorCisgICAgZGlkRmFpbFJlc291cmNlTG9h
ZChlcnJvcik7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OnNlcnZpY2VXb3JrZXJEaWRO
b3RIYW5kbGUoKQoreworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJzZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlOiAocGFnZUlEID0gJSIgUFJJ
dTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIs
IG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1l
dGVycy5mcmFtZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQp
OworCisgICAgaWYgKG1fY29yZUxvYWRlci0+b3B0aW9ucygpLnNlcnZpY2VXb3JrZXJzTW9kZSAh
PSBTZXJ2aWNlV29ya2Vyc01vZGU6Ok9ubHkpIHsKKyAgICAgICAgYXV0byogd2ViRnJhbWVMb2Fk
ZXJDbGllbnQgPSB0b1dlYkZyYW1lTG9hZGVyQ2xpZW50KG1fY29yZUxvYWRlci0+ZnJhbWVMb2Fk
ZXIoKS0+Y2xpZW50KCkpOworICAgICAgICBhdXRvKiB3ZWJGcmFtZSA9IHdlYkZyYW1lTG9hZGVy
Q2xpZW50ID8gd2ViRnJhbWVMb2FkZXJDbGllbnQtPndlYkZyYW1lKCkgOiBudWxscHRyOworICAg
ICAgICBhdXRvKiB3ZWJQYWdlID0gd2ViRnJhbWUgPyB3ZWJGcmFtZS0+cGFnZSgpIDogbnVsbHB0
cjsKKworICAgICAgICBpZiAoYXV0byogaGFuZGxlciA9IHdlYlBhZ2UtPnVybFNjaGVtZUhhbmRs
ZXJGb3JTY2hlbWUobV9jb3JlTG9hZGVyLT5yZXF1ZXN0KCkudXJsKCkucHJvdG9jb2woKS50b1N0
cmluZ1dpdGhvdXRDb3B5aW5nKCkpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJyZXNvdXJjZSBsb2FkZWQgYnkgVVJMIHNjaGVtZSBoYW5kbGVyOiAocGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
KSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFy
YW1ldGVycy5mcmFtZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNl
SUQpOworCisgICAgICAgICAgICBhdXRvIGxvYWRlciA9IG1fY29yZUxvYWRlcjsKKyAgICAgICAg
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkxvYWRlclN0cmF0ZWd5KCkucmVtb3ZlKG1f
Y29yZUxvYWRlci5nZXQoKSk7CisKKyAgICAgICAgICAgIGhhbmRsZXItPnN0YXJ0TmV3VGFzaygq
bG9hZGVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGF1
dG8gZXJyb3IgPSBpbnRlcm5hbEVycm9yKG1fY29yZUxvYWRlci0+cmVxdWVzdCgpLnVybCgpKTsK
KyAgICBlcnJvci5zZXRUeXBlKFJlc291cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxhdGlvbik7Cisg
ICAgbV9jb3JlTG9hZGVyLT5kaWRGYWlsKGVycm9yKTsKKyNlbHNlCisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisjZW5kaWYKK30KKwogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbFJl
c291cmNlTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICAgICBMT0coTmV0d29y
aywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbFJlc291cmNlTG9hZCBm
b3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5oCmluZGV4IDhlYTFhZWRiZWI5ZjU5NjQ5N2FiNjc0YWY0MzYyMTY3YTFjZjI5YWEuLjdj
MjExMWQ0OGIyOTUxN2I1OTczMWUzNGJkZWQ2ZjkzYmM3ZDU2MzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaApAQCAtODUs
NiArODUsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgdm9pZCBkaWRG
aW5pc2hSZXNvdXJjZUxvYWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7CiAg
ICAgdm9pZCBkaWRGYWlsUmVzb3VyY2VMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
KTsKKyAgICB2b2lkIGRpZEZhaWxTZXJ2aWNlV29ya2VyTG9hZChjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJik7CisgICAgdm9pZCBzZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlKCk7CiAgICAg
dm9pZCBkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCk7CiAKICAgICB2b2lkIHN0b3BM
b2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lEZW5pZWQoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5p
bgppbmRleCA3YjkzMjU2ZjAzNmRkMDQyZjQ0YmE4M2EzMThiYjdiNjYzNmQ0MWFhLi44YzBmMjFh
ODM2MjJjZjhhYjBkMzY3ZTIxZjg2YzcxYTdlZDA1ZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNz
YWdlcy5pbgpAQCAtMjcsNiArMjcsOCBAQCBtZXNzYWdlcyAtPiBXZWJSZXNvdXJjZUxvYWRlciBM
ZWdhY3lSZWNlaXZlciB7CiAgICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiAgICAgRGlkRmluaXNo
UmVzb3VyY2VMb2FkKFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyBuZXR3b3JrTG9hZE1ldHJp
Y3MpCiAgICAgRGlkRmFpbFJlc291cmNlTG9hZChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9y
KQorICAgIERpZEZhaWxTZXJ2aWNlV29ya2VyTG9hZChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVy
cm9yKQorICAgIFNlcnZpY2VXb3JrZXJEaWROb3RIYW5kbGUoKQogICAgIERpZEJsb2NrQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoKQogCiAgICAgU3RvcExvYWRpbmdBZnRlclhGcmFtZU9wdGlvbnNP
ckNvbnRlbnRTZWN1cml0eVBvbGljeURlbmllZChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJl
c3BvbnNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2Vy
dmljZVdvcmtlckNsaWVudEZldGNoLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDMyNDQ2NmE4ZDRkODVjODMzMDk1OWE1MGY3N2Q1ODkxNDYxMDYxMjEuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDIwMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5oIgotCi0jaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQotCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgIldlYlNXQ2xp
ZW50Q29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIldlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oIgot
I2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9Eb2N1bWVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVy
cm9yLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KLQotbmFtZXNwYWNlIFdl
YktpdCB7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotUmVmPFNlcnZpY2VXb3JrZXJDbGll
bnRGZXRjaD4gU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpjcmVhdGUoV2ViU2VydmljZVdvcmtl
clByb3ZpZGVyJiBzZXJ2aWNlV29ya2VyUHJvdmlkZXIsIFJlZjxXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlcj4mJiBsb2FkZXIsIEZldGNoSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZWY8V2ViU1dDbGll
bnRDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRU
UFNUb0hUVFBSZWRpcmVjdCwgQ2FsbGJhY2smJiBjYWxsYmFjaykKLXsKLSAgICBhdXRvIGZldGNo
ID0gYWRvcHRSZWYoKm5ldyBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2ggeyBzZXJ2aWNlV29ya2Vy
UHJvdmlkZXIsIFdURk1vdmUobG9hZGVyKSwgaWRlbnRpZmllciwgV1RGTW92ZShjb25uZWN0aW9u
KSwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgV1RGTW92ZShjYWxs
YmFjaykgfSk7Ci0gICAgZmV0Y2gtPnN0YXJ0KCk7Ci0gICAgcmV0dXJuIGZldGNoOwotfQotCi1T
ZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6On5TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2goKQotewot
fQotCi1TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaChX
ZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXImIHNlcnZpY2VXb3JrZXJQcm92aWRlciwgUmVmPFdlYkNv
cmU6OlJlc291cmNlTG9hZGVyPiYmIGxvYWRlciwgRmV0Y2hJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFJlZjxXZWJTV0NsaWVudENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgYm9vbCBzaG91bGRDbGVh
clJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBDYWxsYmFjayYmIGNhbGxiYWNrKQotICAg
IDogbV9zZXJ2aWNlV29ya2VyUHJvdmlkZXIoc2VydmljZVdvcmtlclByb3ZpZGVyKQotICAgICwg
bV9sb2FkZXIoV1RGTW92ZShsb2FkZXIpKQotICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIp
Ci0gICAgLCBtX2Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKLSAgICAsIG1fY2FsbGJh
Y2soV1RGTW92ZShjYWxsYmFjaykpCi0gICAgLCBtX3Nob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBT
VG9IVFRQUmVkaXJlY3Qoc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCkK
LXsKLX0KLQotdm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OnN0YXJ0KCkKLXsKLSAgICBh
dXRvIHJlcXVlc3QgPSBtX2xvYWRlci0+cmVxdWVzdCgpOwotICAgIGF1dG8mIG9wdGlvbnMgPSBt
X2xvYWRlci0+b3B0aW9ucygpOwotCi0gICAgYXV0byByZWZlcnJlciA9IHJlcXVlc3QuaHR0cFJl
ZmVycmVyKCk7Ci0KLSAgICAvLyBXZSBhcmUgaW50ZXJjZXB0aW5nIGZldGNoIGNhbGxzIGFmdGVy
IGdvaW5nIHRocm91Z2ggdGhlIEhUVFAgbGF5ZXIsIHdoaWNoIG1heSBhZGQgc29tZSBzcGVjaWZp
YyBoZWFkZXJzLgotICAgIGNsZWFuSFRUUFJlcXVlc3RIZWFkZXJzRm9yQWNjZXNzQ29udHJvbChy
ZXF1ZXN0LCBvcHRpb25zLmh0dHBIZWFkZXJzVG9LZWVwKTsKLQotICAgIEFTU0VSVChvcHRpb25z
LnNlcnZpY2VXb3JrZXJzTW9kZSAhPSBTZXJ2aWNlV29ya2Vyc01vZGU6Ok5vbmUpOwotICAgIG1f
c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgPSBvcHRpb25zLnNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLnZhbHVlKCk7Ci0gICAgbV9jb25uZWN0aW9uLT5zdGFy
dEZldGNoKG1faWRlbnRpZmllciwgbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
ciwgcmVxdWVzdCwgb3B0aW9ucywgcmVmZXJyZXIpOwotfQotCi12b2lkIFNlcnZpY2VXb3JrZXJD
bGllbnRGZXRjaDo6ZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYm
IHJlc3BvbnNlKQotewotICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKV0oKSBtdXRhYmxl
IHsKLSAgICAgICAgaWYgKCFtX2xvYWRlcikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICByZXNwb25zZS5zZXRTb3VyY2UoUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpTZXJ2aWNlV29y
a2VyKTsKLQotICAgICAgICBtX2xvYWRlci0+d2lsbFNlbmRSZXF1ZXN0KG1fbG9hZGVyLT5yZXF1
ZXN0KCkucmVkaXJlY3RlZFJlcXVlc3QocmVzcG9uc2UsIG1fc2hvdWxkQ2xlYXJSZWZlcnJlck9u
SFRUUFNUb0hUVFBSZWRpcmVjdCksIHJlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IHBy
b3RlY3RlZFRoaXMuY29weVJlZigpXShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KSB7Ci0gICAg
ICAgICAgICBpZiAoIW1fbG9hZGVyIHx8IHJlcXVlc3QuaXNOdWxsKCkpIHsKLSAgICAgICAgICAg
ICAgICBpZiAoYXV0byBjYWxsYmFjayA9IFdURk1vdmUobV9jYWxsYmFjaykpCi0gICAgICAgICAg
ICAgICAgICAgIGNhbGxiYWNrKFJlc3VsdDo6U3VjY2VlZGVkKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBBU1NFUlQocmVxdWVzdCA9PSBtX2xv
YWRlci0+cmVxdWVzdCgpKTsKLSAgICAgICAgICAgIHN0YXJ0KCk7Ci0gICAgICAgIH0pOwotICAg
IH0pOwotfQotCi12b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVj
ZWl2ZVJlc3BvbnNlTWVzc2FnZSkKLXsKLSAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSks
IG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlXSgpIG11dGFibGUgewotICAg
ICAgICBpZiAoIW1fbG9hZGVyKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChh
dXRvIGNhbGxiYWNrID0gV1RGTW92ZShtX2NhbGxiYWNrKSkKLSAgICAgICAgICAgIGNhbGxiYWNr
KFJlc3VsdDo6U3VjY2VlZGVkKTsKLQotICAgICAgICBBU1NFUlQoIXJlc3BvbnNlLmlzUmVkaXJl
Y3Rpb24oKSB8fCAhcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygpLmNvbnRhaW5zKEhUVFBIZWFk
ZXJOYW1lOjpMb2NhdGlvbikpOwotCi0gICAgICAgIGlmICghbmVlZHNDb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZU1lc3NhZ2UpIHsKLSAgICAgICAgICAgIG1fbG9hZGVyLT5kaWRSZWNlaXZlUmVz
cG9uc2UocmVzcG9uc2UsIFtdIHsgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LQotICAgICAgICBtX2xvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyldIHsKLSAgICAgICAgICAgIGlm
ICghbV9sb2FkZXIpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBtX2Nv
bm5lY3Rpb24tPmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UobV9pZGVudGlmaWVyLCBt
X3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKLSAgICAgICAgfSk7Ci0gICAg
fSk7Ci19Ci0KLXZvaWQgU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpkaWRSZWNlaXZlRGF0YShj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsIGludDY0X3QgZW5jb2RlZERh
dGFMZW5ndGgpCi17Ci0gICAgYXV0byogZGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGRhdGFSZWZlcmVuY2UuZGF0YSgpKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGVuY29kZWREYXRhTGVuZ3RoLCBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBkYXRhUmVmZXJlbmNlLnNpemUoKSldKCkgbXV0
YWJsZSB7Ci0gICAgICAgIGlmICghbV9sb2FkZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgbV9lbmNvZGVkRGF0YUxlbmd0aCArPSBlbmNvZGVkRGF0YUxlbmd0aDsKLQotICAgICAg
ICBtX2xvYWRlci0+ZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlciksIG1fZW5jb2RlZERh
dGFMZW5ndGgsIERhdGFQYXlsb2FkQnl0ZXMpOwotICAgIH0pOwotfQotCi12b2lkIFNlcnZpY2VX
b3JrZXJDbGllbnRGZXRjaDo6ZGlkUmVjZWl2ZUZvcm1EYXRhKGNvbnN0IElQQzo6Rm9ybURhdGFS
ZWZlcmVuY2UmKQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9ybSBkYXRhIHJlYWRpbmcu
Ci19Ci0KLXZvaWQgU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpkaWRGaW5pc2goKQotewotICAg
IGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0g
ewotICAgICAgICBpZiAoIW1fbG9hZGVyKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg
IEFTU0VSVCghbV9jYWxsYmFjayk7Ci0KLSAgICAgICAgbV9sb2FkZXItPmRpZEZpbmlzaExvYWRp
bmcoTmV0d29ya0xvYWRNZXRyaWNzIHsgfSk7Ci0gICAgICAgIG1fc2VydmljZVdvcmtlclByb3Zp
ZGVyLmZldGNoRmluaXNoZWQobV9pZGVudGlmaWVyKTsKLSAgICB9KTsKLX0KLQotdm9pZCBTZXJ2
aWNlV29ya2VyQ2xpZW50RmV0Y2g6OmRpZEZhaWwoUmVzb3VyY2VFcnJvciYmIGVycm9yKQotewot
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgZXJyb3IgPSBXVEZNb3ZlKGVycm9yKV0gewotICAgICAgICBpZiAoIW1fbG9hZGVyKQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGF1dG8qIGRvY3VtZW50ID0gbV9sb2FkZXItPmZy
YW1lKCkgPyBtX2xvYWRlci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKSA6IG51bGxwdHI7Ci0gICAgICAg
IGlmIChkb2N1bWVudCkgewotICAgICAgICAgICAgaWYgKG1fbG9hZGVyLT5vcHRpb25zKCkuZGVz
dGluYXRpb24gIT0gRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6RW1wdHlTdHJpbmcgfHwgZXJy
b3IuaXNHZW5lcmFsKCkpCi0gICAgICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNz
YWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvci5sb2NhbGl6
ZWREZXNjcmlwdGlvbigpKTsKLSAgICAgICAgICAgIGlmIChtX2xvYWRlci0+b3B0aW9ucygpLmRl
c3RpbmF0aW9uICE9IEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OkVtcHR5U3RyaW5nKQotICAg
ICAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpK
UywgTWVzc2FnZUxldmVsOjpFcnJvciwgbWFrZVN0cmluZygiQ2Fubm90IGxvYWQgIiwgZXJyb3Iu
ZmFpbGluZ1VSTCgpLnN0cmluZygpLCAiLiIpKTsKLSAgICAgICAgfQotCi0gICAgICAgIG1fbG9h
ZGVyLT5kaWRGYWlsKGVycm9yKTsKLQotICAgICAgICBpZiAoYXV0byBjYWxsYmFjayA9IFdURk1v
dmUobV9jYWxsYmFjaykpCi0gICAgICAgICAgICBjYWxsYmFjayhSZXN1bHQ6OlN1Y2NlZWRlZCk7
Ci0KLSAgICAgICAgbV9zZXJ2aWNlV29ya2VyUHJvdmlkZXIuZmV0Y2hGaW5pc2hlZChtX2lkZW50
aWZpZXIpOwotICAgIH0pOwotfQotCi12b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6ZGlk
Tm90SGFuZGxlKCkKLXsKLSAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyldIHsKLSAgICAgICAgaWYgKCFtX2xvYWRlcikKLSAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICBpZiAoYXV0byBjYWxsYmFjayA9IFdURk1vdmUobV9jYWxsYmFj
aykpCi0gICAgICAgICAgICBjYWxsYmFjayhSZXN1bHQ6OlVuaGFuZGxlZCk7Ci0KLSAgICAgICAg
bV9zZXJ2aWNlV29ya2VyUHJvdmlkZXIuZmV0Y2hGaW5pc2hlZChtX2lkZW50aWZpZXIpOwotICAg
IH0pOwotfQotCi12b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6Y2FuY2VsKCkKLXsKLSAg
ICBpZiAoYXV0byBjYWxsYmFjayA9IFdURk1vdmUobV9jYWxsYmFjaykpCi0gICAgICAgIGNhbGxi
YWNrKFJlc3VsdDo6Q2FuY2VsbGVkKTsKLQotICAgIG1fY29ubmVjdGlvbi0+Y2FuY2VsRmV0Y2go
bV9pZGVudGlmaWVyLCBtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKLSAg
ICBtX2xvYWRlciA9IG51bGxwdHI7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5k
aWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzY2N2FjNzU3ZmRkNzEwODg4YjhiMmQ0ZWVlOTQ0OTkw
ZjBiMGQwMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gu
aAorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLQotI2luY2x1ZGUgIkRhdGFSZWZlcmVu
Y2UuaCIKLSNpbmNsdWRlICJGb3JtRGF0YVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgIk1lc3NhZ2VS
ZWNlaXZlci5oIgotI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3Jl
L0ZldGNoSWRlbnRpZmllci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXIuaD4KLSNpbmNsdWRlIDx3dGYvQ29tcGxl
dGlvbkhhbmRsZXIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYlNXQ2xpZW50
Q29ubmVjdGlvbjsKLWNsYXNzIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjsKLQotY2xhc3MgU2Vy
dmljZVdvcmtlckNsaWVudEZldGNoIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8U2VydmljZVdv
cmtlckNsaWVudEZldGNoPiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKLXB1YmxpYzoK
LSAgICBlbnVtIGNsYXNzIFJlc3VsdCB7IFN1Y2NlZWRlZCwgQ2FuY2VsbGVkLCBVbmhhbmRsZWQg
fTsKLSAgICB1c2luZyBDYWxsYmFjayA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXN1
bHQpPjsKLQotICAgIHN0YXRpYyBSZWY8U2VydmljZVdvcmtlckNsaWVudEZldGNoPiBjcmVhdGUo
V2ViU2VydmljZVdvcmtlclByb3ZpZGVyJiwgUmVmPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyPiYm
LCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIsIFJlZjxXZWJTV0NsaWVudENvbm5lY3Rpb24+JiYs
IGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgQ2FsbGJhY2sm
Jik7Ci0gICAgflNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaCgpOwotCi0gICAgdm9pZCBzdGFydCgp
OwotCi0gICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImKSBmaW5hbDsKLSAgICB2b2lkIGNhbmNlbCgpOwotCi0gICAgYm9vbCBpc09uZ29pbmco
KSBjb25zdCB7IHJldHVybiAhIW1fY2FsbGJhY2s7IH0KLQotcHJpdmF0ZToKLSAgICBTZXJ2aWNl
V29ya2VyQ2xpZW50RmV0Y2goV2ViU2VydmljZVdvcmtlclByb3ZpZGVyJiwgUmVmPFdlYkNvcmU6
OlJlc291cmNlTG9hZGVyPiYmLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIsIFJlZjxXZWJTV0Ns
aWVudENvbm5lY3Rpb24+JiYsIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBS
ZWRpcmVjdCwgQ2FsbGJhY2smJik7Ci0KLSAgICBPcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yPiB2YWxpZGF0ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsK
LQotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSk7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYp
OwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgaW50
NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRm9ybURhdGEoY29u
c3QgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYpOwotICAgIHZvaWQgZGlkRmluaXNoKCk7Ci0gICAg
dm9pZCBkaWRGYWlsKFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik7Ci0gICAgdm9pZCBkaWROb3RI
YW5kbGUoKTsKLQotICAgIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlciYgbV9zZXJ2aWNlV29ya2Vy
UHJvdmlkZXI7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyPiBtX2xvYWRlcjsK
LSAgICBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIgbV9pZGVudGlmaWVyOwotICAgIFJlZjxXZWJT
V0NsaWVudENvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKLSAgICBDYWxsYmFjayBtX2NhbGxiYWNr
OwotICAgIGJvb2wgbV9zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0IHsg
dHJ1ZSB9OwotICAgIGludDY0X3QgbV9lbmNvZGVkRGF0YUxlbmd0aCB7IDAgfTsKLSAgICBib29s
IG1fZGlkRmFpbCB7IGZhbHNlIH07Ci0gICAgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbklkZW50aWZpZXIgbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcjsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLm1lc3NhZ2VzLmluCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAzZDNiYzc0MDRiZmI0N2Q2MWUwZDE1ODhlMWE1ZjJhOWMwNmEx
NjYxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5tZXNz
YWdlcy5pbgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLQotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLQotbWVz
c2FnZXMgLT4gU2VydmljZVdvcmtlckNsaWVudEZldGNoIHsKLSAgICBEaWRSZWNlaXZlUmVzcG9u
c2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgYm9vbCBuZWVkc0NvbnRpbnVl
RGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkKLSAgICBEaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25z
ZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKQotICAgIERpZFJlY2VpdmVEYXRh
KElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQotICAg
IERpZFJlY2VpdmVGb3JtRGF0YShJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIGRhdGEpCi0gICAgRGlk
RmluaXNoKCkKLSAgICBEaWRGYWlsKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCi0gICAg
RGlkTm90SGFuZGxlKCkKLX0KLQotI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVu
dENvbm5lY3Rpb24uY3BwCmluZGV4IDA2YTRjYzdkYjdhMThjMTE4N2JhZmM2NTg4NTU0MzJjNDVl
YjJhZTIuLmQwMDg5YmY1OGI2NTQ1NjVhOGUxZTkxMmQxYmRhNjIyYTdkOWVmYzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRD
b25uZWN0aW9uLmNwcApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCi0jaW5jbHVkZSAi
U2VydmljZVdvcmtlckNsaWVudEZldGNoLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29s
TWVzc2FnZXMuaCIKQEAgLTIwMywyMSArMjAyLDYgQEAgdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rp
b246OmdldFJlZ2lzdHJhdGlvbnMoU2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBjb24K
ICAgICB9KTsKIH0KIAotdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnN0YXJ0RmV0Y2goRmV0
Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBT
dHJpbmcmIHJlZmVycmVyKQotewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVj
dGlvbjo6U3RhcnRGZXRjaCB7IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBm
ZXRjaElkZW50aWZpZXIsIHJlcXVlc3QsIG9wdGlvbnMsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2Ug
eyByZXF1ZXN0Lmh0dHBCb2R5KCkgfSwgcmVmZXJyZXIgfSk7Ci19Ci0KLXZvaWQgV2ViU1dDbGll
bnRDb25uZWN0aW9uOjpjYW5jZWxGZXRjaChGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVy
LCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uSWRlbnRpZmllcikKLXsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5l
Y3Rpb246OkNhbmNlbEZldGNoIHsgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIs
IGZldGNoSWRlbnRpZmllciB9KTsKLX0KLQotdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmNv
bnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoRmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRp
ZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgc2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbklkZW50aWZpZXIpCi17Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpDb250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlIHsgc2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIGZldGNoSWRlbnRpZmllciB9KTsKLX0KLQogdm9pZCBX
ZWJTV0NsaWVudENvbm5lY3Rpb246OmNvbm5lY3Rpb25Ub1NlcnZlckxvc3QoKQogewogICAgIGNs
ZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ2xpZW50Q29ubmVjdGlvbi5oCmluZGV4IDI3ZmVhMmMxYjI0YjhjMmE5NjRjNGU5NjdkM2Y3
ZWNhMzhkMDM3MmYuLjllNDQ1ZjU1Yzk2ODA5Y2E5Y2Q2MzU2MzFmNTU1NDc5OTFlY2E1MzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29u
bmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xp
ZW50Q29ubmVjdGlvbi5oCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIu
aCIKLSNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guaCIKICNpbmNsdWRlICJTaGFy
ZWRNZW1vcnkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TV0NsaWVudENvbm5lY3Rpb24uaD4KQEAgLTYwLDkgKzU5LDYg
QEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJikgZmluYWw7CiAKICAgICBib29sIG1heUhhdmVTZXJ2aWNlV29ya2VyUmVn
aXN0ZXJlZEZvck9yaWdpbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKSBjb25z
dCBmaW5hbDsKLSAgICB2b2lkIHN0YXJ0RmV0Y2goV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyLCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiwgY29uc3Qg
U3RyaW5nJiByZWZlcnJlcik7Ci0gICAgdm9pZCBjYW5jZWxGZXRjaChXZWJDb3JlOjpGZXRjaElk
ZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsK
LSAgICB2b2lkIGNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoV2ViQ29yZTo6RmV0Y2hJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7
CiAKICAgICB2b2lkIGNvbm5lY3Rpb25Ub1NlcnZlckxvc3QoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92
aWRlci5jcHAKaW5kZXggNjJhMzliMjVmZGZhZDE3ZTExNTc2MzMwMDI4MjQyYjMwOWYxOTI4NS4u
N2RjZDE4ZWJhZDMwNmRhZTQ3NWIwMDdiNTdlN2UxNjVmNmJiMzUwMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2Vy
UHJvdmlkZXIuY3BwCkBAIC02Niw0OCArNjYsNiBAQCBXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rp
b24qIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6ZXhpc3RpbmdTZXJ2aWNlV29ya2VyQ29ubgog
ICAgIHJldHVybiBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24tPmV4aXN0aW5nU2VydmljZVdvcmtl
ckNvbm5lY3Rpb24oKTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIHNob3VsZEhhbmRsZUZldGNo
KGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKLXsKLSAgICBpZiAob3B0aW9u
cy5zZXJ2aWNlV29ya2Vyc01vZGUgPT0gU2VydmljZVdvcmtlcnNNb2RlOjpOb25lKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoaXNQb3RlbnRpYWxOYXZpZ2F0aW9uT3JTdWJyZXNv
dXJjZVJlcXVlc3Qob3B0aW9ucy5kZXN0aW5hdGlvbikpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIHJldHVybiAhIW9wdGlvbnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXI7Ci19Ci0KLXZvaWQgV2ViU2VydmljZVdvcmtlclByb3ZpZGVyOjpoYW5kbGVGZXRjaChSZXNv
dXJjZUxvYWRlciYgbG9hZGVyLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQ
UmVkaXJlY3QsIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6Q2FsbGJhY2smJiBjYWxsYmFjaykK
LXsKLSAgICBpZiAoIUxlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpjYW5TZXJ2aWNlV29ya2Vyc0hhbmRs
ZVVSTFNjaGVtZShsb2FkZXIucmVxdWVzdCgpLnVybCgpLnByb3RvY29sKCkudG9TdHJpbmdXaXRo
b3V0Q29weWluZygpKSB8fCAhc2hvdWxkSGFuZGxlRmV0Y2gobG9hZGVyLm9wdGlvbnMoKSkpIHsK
LSAgICAgICAgY2FsbGJhY2soU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpSZXN1bHQ6OlVuaGFu
ZGxlZCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRvJiBjb25uZWN0aW9uID0g
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCku
c2VydmljZVdvcmtlckNvbm5lY3Rpb24oKTsKLSAgICBhdXRvIGZldGNoSWRlbnRpZmllciA9IG1h
a2VPYmplY3RJZGVudGlmaWVyPEZldGNoSWRlbnRpZmllclR5cGU+KGxvYWRlci5pZGVudGlmaWVy
KCkpOwotICAgIG1fb25nb2luZ0ZldGNoVGFza3MuYWRkKGZldGNoSWRlbnRpZmllciwgU2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoOjpjcmVhdGUoKnRoaXMsIGxvYWRlciwgZmV0Y2hJZGVudGlmaWVy
LCBjb25uZWN0aW9uLCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBX
VEZNb3ZlKGNhbGxiYWNrKSkpOwotfQotCi1ib29sIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6
Y2FuY2VsRmV0Y2goRmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllcikKLXsKLSAgICBhdXRv
IGZldGNoID0gbV9vbmdvaW5nRmV0Y2hUYXNrcy50YWtlKGZldGNoSWRlbnRpZmllcik7Ci0gICAg
aWYgKGZldGNoKQotICAgICAgICAoKmZldGNoKS0+Y2FuY2VsKCk7Ci0gICAgcmV0dXJuICEhZmV0
Y2g7Ci19Ci0KLXZvaWQgV2ViU2VydmljZVdvcmtlclByb3ZpZGVyOjpmZXRjaEZpbmlzaGVkKEZl
dGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIpCi17Ci0gICAgbV9vbmdvaW5nRmV0Y2hUYXNr
cy50YWtlKGZldGNoSWRlbnRpZmllcik7Ci19Ci0KLXZvaWQgV2ViU2VydmljZVdvcmtlclByb3Zp
ZGVyOjpkaWRSZWNlaXZlU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKLXsKLSAgICBpZiAoYXV0
byBmZXRjaCA9IG1fb25nb2luZ0ZldGNoVGFza3MuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVyPEZl
dGNoSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCi0gICAgICAgIGZl
dGNoLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKLX0KLQogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2Vy
UHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VX
b3JrZXJQcm92aWRlci5oCmluZGV4IDA4OGFlZDk1NGU5YTlkNGVlNTkyZjVkNzU1MjcyNzE0NGEw
NTBhMjIuLmMwMGMwNDc5MzEyN2EwNjlmYWU5NTIzMDEyNWRiYjk1NTU0Y2Q3MzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92
aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VX
b3JrZXJQcm92aWRlci5oCkBAIC0yNyw3ICsyNyw2IEBACiAKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiAKLSNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guaCIKICNpbmNsdWRl
IDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJQcm92aWRlci5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogCkBAIC00MSwxMSArNDAsNiBAQCBjbGFzcyBXZWJTZXJ2aWNlV29ya2VyUHJv
dmlkZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U2VydmljZVdvcmtlclByb3ZpZGVyIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgV2ViU2VydmljZVdvcmtlclByb3ZpZGVyJiBzaW5nbGV0b24oKTsK
IAotICAgIHZvaWQgaGFuZGxlRmV0Y2goV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXImLCBib29sIHNo
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFNlcnZpY2VXb3JrZXJDbGll
bnRGZXRjaDo6Q2FsbGJhY2smJik7Ci0gICAgYm9vbCBjYW5jZWxGZXRjaChXZWJDb3JlOjpGZXRj
aElkZW50aWZpZXIpOwotICAgIHZvaWQgZmV0Y2hGaW5pc2hlZChXZWJDb3JlOjpGZXRjaElkZW50
aWZpZXIpOwotCi0gICAgdm9pZCBkaWRSZWNlaXZlU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKICAgICB2b2lkIGRpZFJlY2Vp
dmVTZXJ2aWNlV29ya2VyQ2xpZW50UmVnaXN0cmF0aW9uTWF0Y2goSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJik7CiAKIHByaXZhdGU6CkBAIC01NCw4ICs0OCw2IEBAIHByaXZhdGU6CiAK
ICAgICBXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb24qIGV4aXN0aW5nU2VydmljZVdvcmtlckNv
bm5lY3Rpb24oKSBmaW5hbDsKICAgICBXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb24mIHNlcnZp
Y2VXb3JrZXJDb25uZWN0aW9uKCkgZmluYWw7Ci0KLSAgICBIYXNoTWFwPFdlYkNvcmU6OkZldGNo
SWRlbnRpZmllciwgUmVmPFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaD4+IG1fb25nb2luZ0ZldGNo
VGFza3M7CiB9OyAvLyBjbGFzcyBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCAwMTdiNDdmMzIw
N2Q5OWU1YmI1ZTc3YzBhYzY1YjE3MTk3MmZkZTllLi44NjY2OGNiYTc1ZDVlNDhkZjRkYzlkNzJm
ZDEzYzQ3OThiNjkzOTE3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMiBAQAorMjAxOS0xMC0xMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisK
KyAgICAgICAgSGFuZGxlIHNlcnZpY2Ugd29ya2VyIGxvYWRzIHRocm91Z2ggTmV0d29ya1Jlc291
cmNlTG9hZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDIzMDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0
Y2gtcmVxdWVzdC14aHIuaHR0cHMtZXhwZWN0ZWQudHh0OgorCiAyMDE5LTEwLTEwICBDYXJsb3Mg
QWxiZXJ0byBMb3BleiBQZXJleiAgPGNsb3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIEltcG9y
dCBjc3MvY3NzLWltYWdlcyBXUFQgdGVzdHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vy
L2ZldGNoLXJlcXVlc3QteGhyLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vy
L2ZldGNoLXJlcXVlc3QteGhyLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCA0ZmI2YmI1M2IzMTY1
NTJmNDFkMGE5N2ZhOTNhZGQ3ZjY4NmE2NTIzLi44NWFhMDBiMGFlOGVkY2MxNjgxNDU2NWQ5OTlk
YWQ3ZTQxYTkzYzk0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9mZXRjaC1yZXF1ZXN0
LXhoci5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0Y2gtcmVx
dWVzdC14aHIuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC04LDcgKzgsNyBAQCBQQVNTIEZldGNoRXZl
bnQjcmVxdWVzdC5ib2R5IGNvbnRhaW5zIFhIUiByZXF1ZXN0IGRhdGEgKHN0cmluZykKIFBBU1Mg
RmV0Y2hFdmVudCNyZXF1ZXN0LmJvZHkgY29udGFpbnMgWEhSIHJlcXVlc3QgZGF0YSAoYmxvYikg
CiBQQVNTIEZldGNoRXZlbnQjcmVxdWVzdC5tZXRob2QgaXMgc2V0IHRvIFhIUiBtZXRob2QgCiBQ
QVNTIFhIUiB1c2luZyBPUFRJT05TIG1ldGhvZCAKLUZBSUwgWEhSIHdpdGggZm9ybSBkYXRhIHBy
b21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIkVycm9y
OiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAoc3RyaW5nKSAiUE9TVCIgYnV0IGdvdCAodW5kZWZp
bmVkKSB1bmRlZmluZWQiCitQQVNTIFhIUiB3aXRoIGZvcm0gZGF0YSAKIFBBU1MgWEhSIHdpdGgg
bW9kZS9jcmVkZW50aWFscyBzZXQgCiBQQVNTIFhIUiB0byBkYXRhIFVSTCAKIFBBU1MgcmVzdG9y
ZSBnbG9iYWwgc3RhdGUgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380748</attachid>
            <date>2019-10-11 06:57:42 -0700</date>
            <delta_ts>2019-10-11 07:04:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202309-20191011155739.patch</filename>
            <type>text/plain</type>
            <size>107552</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMDAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNmMDc4MDEwMzI2NTYy
M2ZiNmRhNjE0NGZhNmU2ZjU4NjRjNWVmNy4uNzk5N2QzNDE5ZGQ3Y2UyOTFjOTkxOWI0ZmE0OGVh
MDIxZDlhYTVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTEwLTEwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBIYW5kbGUgc2VydmljZSB3
b3JrZXIgbG9hZHMgdGhyb3VnaCBOZXR3b3JrUmVzb3VyY2VMb2FkZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjMwOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IHRvIHNlcmlhbGl6ZSBIVFRQ
IGhlYWRlciBuYW1lcyBhcyBlbnVtZXJhdGlvbi4KKyAgICAgICAgVXBkYXRlZCBTV1NlcnZlciBh
YmlsaXR5IHRvIGhhbmRsZSBzY2hlbWVzIGJ5IGFkZGluZyBidWlsdC1pbiBzdXBwb3J0IGZvciBI
VFRQIGFuZCBIVFRQUyBhcyBkb25lIGluIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5LgorCisgICAgICAg
IENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VM
b2FkZXJPcHRpb25zLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jcmVhdGUtaHR0cC1o
ZWFkZXItbmFtZS10YWJsZToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpjYW5IYW5kbGVTY2hlbWUgY29u
c3QpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2IpOgorCiAyMDE5LTEw
LTEwICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRleC5ydT4KIAogICAgICAgICBH
dWFyZCBHQ3J5cHQtc3BlY2lmaWMgY29kZSB3aXRoIFVTRShHQ1JZUFQpIGluc3RlYWQgb2YgUExB
VEZPUk0gbWFjcm9zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQ1MTcyNzA4YWNhM2JiYmJkNDljODMzZTdiN2Q2MTFk
MGM5MTAzYWMuLjcxYzNkMTVlYjJkODNlYTg4MmNjYzNhNGFiOWIxNGRlNDM4ODU0ODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsOTkgQEAKKzIwMTktMTAtMTAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgorCisgICAgICAgIEhhbmRsZSBzZXJ2aWNlIHdvcmtlciBsb2FkcyB0aHJvdWdo
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjAyMzA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVtb3ZlIFNlcnZpY2VXb3JrZXJGZXRjaENsaWVudC4KKyAgICAgICAg
SW5zdGVhZCB3ZSB1c2UgdGhlIG5vcm1hbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXIvV2ViUmVzb3Vy
Y2VMb2FkZXIgY29tbXVuaWNhdGlvbiBjaGFubmVsLgorICAgICAgICBXZSBwYXNzIGFkZGl0aW9u
YWwgcGFyYW1ldGVycywgaW4gcGFydGljdWxhciBzZXJ2aWNlIHdvcmtlciBtb2RlIGFuZCByZWdp
c3RyYXRpb24gaWRlbnRpZmllci4KKworICAgICAgICBCYXNlZCBvbiB0aGF0IGluZm9ybWF0aW9u
LCBuZXR3b3JrIHByb2Nlc3Mgd2lsbCBkZWNpZGUgd2hldGhlciB0byBsb2FkIGZyb20gc2Vydmlj
ZSB3b3JrZXIgb3IgbmV0d29yay4KKyAgICAgICAgVGhlIGZpcnN0IGFkdmFudGFnZSBpcyB0aGF0
IGluIGNhc2Ugb2Ygc2VydmljZSB3b3JrZXIgbm90IGhhbmRsaW5nIHRoZSBsb2FkLCBnb2luZyB0
byB0aGUgbmV0d29yayBpcyBmYXN0ZXIuCisgICAgICAgIFRoaXMgd2lsbCBhbHNvIGFsbG93IHVz
IHRvIGRvIHRoZSByZWdpc3RyYXRpb24gbWF0Y2hpbmcgaW4gbmV0d29yayBwcm9jZXNzIHdoZW4g
cmVjZWl2aW5nIGEgbmF2aWdhdGlvbiByZXF1ZXN0LgorCisgICAgICAgIFNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2sgaXMgbm93IGJlZWZlZCB1cCB0byBkbyB0aGUgbGluayBiZXR3ZWVuIHNlcnZpY2Ug
d29ya2VyIGFuZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXIvV2ViUmVzb3VyY2VMb2FkZXIuCisgICAg
ICAgIFRvIHN1cHBvcnQgdGhlIHNhbWUgY29uc29sZSBsb2dnaW5nLCB3ZSBhZGQgYSBuZXcgbWVz
c2FnZSBjYWxsZWQgRGlkRmFpbFNlcnZpY2VXb3JrZXJMb2FkLgorCisgICAgICAgIFRvIHN1cHBv
cnQgQVBJIHRlc3RzLCB3ZSBjb250aW51ZSB0byBnbyB0byB0aGUgc2VydmljZSB3b3JrZXIgYmVm
b3JlIHRyeWluZyB0byBnbyB0byBVUkwgc2NoZW1lIGhhbmRsZXJzLgorICAgICAgICBUaGlzIGFk
ZHMgc29tZSBidXJkZW4gYXMgd2UgbmVlZCB0byBnbyB0byBuZXR3b3JrIHByb2Nlc3Mvc2Vydmlj
ZSB3b3JrZXIgcHJvY2VzcyBhbmQsIGluIGNhc2UgbG9hZCBpcyBub3QgaGFuZGxlZAorICAgICAg
ICBieSBzZXJ2aWNlIHdvcmtlciwgd2UgZ28gYmFjayB0byB0aGUgd2ViIHByb2Nlc3MgdG8gZG8g
dGhlIGxvYWQgdGhyb3VnaCBVUkwgc2NoZW1lIGhhbmRsZXJzLgorICAgICAgICBGb3IgdGhhdCBw
dXJwb3NlIHdlIHVzZSBTZXJ2aWNlV29ya2Vyc01vZGU6Ok9ubHkuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Ogor
ICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6c2NoZWR1bGVSZXNvdXJjZUxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjphYm9ydCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRXaXRo
U2VydmljZVdvcmtlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
c2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2Vydmlj
ZVdvcmtlckZldGNoVGFzazo6U2VydmljZVdvcmtlckZldGNoVGFzayk6CisgICAgICAgIChXZWJL
aXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6On5TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKToKKyAg
ICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6c2VuZFRvU2VydmljZVdvcmtl
cik6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnNlbmRUb0NsaWVu
dCk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnN0YXJ0KToKKyAg
ICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6c3RhcnRGZXRjaCk6CisgICAg
ICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZWRpcmVjdFJl
c3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6
ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
OjpkaWRSZWNlaXZlRm9ybURhdGEpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrOjpkaWRGaW5pc2gpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrOjpkaWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6
ZGlkTm90SGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6
Y2FuY2VsRnJvbUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s6OmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpjb250aW51ZUZldGNoVGFza1dpdGgpOgorICAgICAgICAo
V2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjp0aW1lb3V0VGltZXJGaXJlZCk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Lmg6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmZldGNoSWRlbnRp
ZmllciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y2FuY2VsRmV0Y2gpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTV1NlcnZlckNvbm5lY3Rpb246OmNyZWF0ZUZldGNoVGFzayk6CisgICAgICAgIChXZWJLaXQ6
OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaCk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6c3RhcnRGZXRjaCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZGlkUmVj
ZWl2ZUZldGNoVGFza01lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246OnJlZ2lzdGVyRmV0Y2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246OnVucmVnaXN0ZXJGZXRjaCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZmV0Y2hUYXNrVGltZWRPdXQpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6aXBjQ29ubmVjdGlvbiBjb25zdCk6CisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlJlc291cmNlTG9hZGVyOjpkaWRGYWlsU2VydmljZVdvcmtlckxvYWQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6c2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50
RmV0Y2guaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdv
cmtlckNsaWVudEZldGNoLm1lc3NhZ2VzLmluOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwOgorICAgICAgICAqIFdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmg6CisKIDIwMTktMTAtMTAgIEJh
c3VrZSBTdXp1a2kgIDxCYXN1a2UuU3V6dWtpQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5DYWly
b10gTW92ZSByZW1vdGUgY29tbXVuaWNhdGlvbiBoYW5kbGluZyBmcm9tIFJlbW90ZUluc3BlY3Rv
clNlcnZlciB0byBSZW1vdGVJbnNwZWN0b3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkZXJPcHRpb25zLmgKaW5kZXggOWUzMDc0ZGEzMjExZDBlZTk3YjhlYjJlZGY0OTE2
OWVjNWRmMmE0YS4uYWVjZjk0NDFkMzIxZWQ5OTZiOGU0ZDIwMjEwMGI2NWZmYzBhZTEzNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaApAQCAtMTc1
LDMgKzE3NSwxNiBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zIDogcHVibGljIEZldGNo
T3B0aW9ucyB7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYg
eworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJz
TW9kZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJzTW9kZSwKKyAgICAgICAgV2ViQ29yZTo6U2VydmljZVdvcmtlcnNNb2Rl
OjpBbGwsCisgICAgICAgIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJzTW9kZTo6Tm9uZSwKKyAgICAg
ICAgV2ViQ29yZTo6U2VydmljZVdvcmtlcnNNb2RlOjpPbmx5CisgICAgPjsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jcmVhdGUtaHR0cC1oZWFkZXItbmFtZS10YWJsZSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3JlYXRlLWh0dHAtaGVhZGVyLW5hbWUtdGFibGUKaW5kZXggNjQ3Y2RkODI0MmZh
Zjc4NWUwMjMxNDM0ZDAwOTBlNmMzOTc3M2RhZC4uNDM5ZGI2OGMzMmM0M2UwODNiMDAwNjc4ZDcy
Y2UzNTlkYWQzZTI5ZiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jcmVhdGUtaHR0cC1oZWFkZXItbmFtZS10YWJsZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NyZWF0ZS1odHRwLWhlYWRlci1uYW1lLXRhYmxlCkBAIC0yMzMsNiArMjMz
LDI4IEBAIFdFQkNPUkVfRVhQT1JUIFN0cmluZ1ZpZXcgaHR0cEhlYWRlck5hbWVTdHJpbmcoSFRU
UEhlYWRlck5hbWUpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBXVEYg
eworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkhUVFBIZWFkZXJOYW1l
PiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6SFRU
UEhlYWRlck5hbWUsCisnJycpCisKK2lzX2ZpcnN0ID0gVHJ1ZQorZm9yIGh0dHBfaGVhZGVyX25h
bWUgaW4gaHR0cF9oZWFkZXJfbmFtZXM6CisgICAgaWYgaXNfZmlyc3Q6CisgICAgICAgIGlzX2Zp
cnN0ID0gRmFsc2UKKyAgICBlbHNlOgorICAgIAloZWFkZXJfZmlsZS53cml0ZSgnLFxuJykKKwor
ICAgIGhlYWRlcl9maWxlLndyaXRlKCcgICAgICAgIFdlYkNvcmU6OkhUVFBIZWFkZXJOYW1lOjol
cycgJSBodHRwX2hlYWRlcl9uYW1lX3RvX2lkW2h0dHBfaGVhZGVyX25hbWVdKQorCitoZWFkZXJf
ZmlsZS53cml0ZSgnJycKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKICNlbmRp
ZiAvLyBIVFRQSGVhZGVyTmFtZXNfaAogJycnKQogaGVhZGVyX2ZpbGUuY2xvc2UoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRl
eCA5YmI2NmFiMjhlMDc1ZTA3MDBjZjNjNzY5Y2UzY2ViMmYzNmI4NjAwLi4xMzdjNjYyNTUyZTFj
YWU2MGM1NTIwMjAyZGU3OGNmNDhmZWIxZDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtOTc0LDYgKzk3NCwyMSBAQCB2
b2lkIFNXU2VydmVyOjpjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgcmVnaXN0cmFibGVEb21haQogICAgIG1fY3JlYXRlQ29udGV4dENvbm5lY3Rpb25DYWxs
YmFjayhyZWdpc3RyYWJsZURvbWFpbik7CiB9CiAKK2Jvb2wgU1dTZXJ2ZXI6OmNhbkhhbmRsZVNj
aGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkgY29uc3QKK3sKKyAgICBpZiAoc2NoZW1lLmlzTnVs
bCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoc2NoZW1lLnN0YXJ0c1dpdGhJ
Z25vcmluZ0FTQ0lJQ2FzZSgiaHR0cCJfcykpIHsKKyAgICAgICAgaWYgKHNjaGVtZS5sZW5ndGgo
KSA9PSA0KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChzY2hlbWUubGVu
Z3RoKCkgPT0gNSAmJiBpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKHNjaGVtZVs0XSwgJ3MnKSkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBtX3JlZ2lzdGVy
ZWRTY2hlbWVzLmNvbnRhaW5zKHNjaGVtZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRleCA0NjAxMzE3NjE2YzgxNjc0
OGQyMDgwMGYyNjBiMzUyODU3NDg4MTcwLi4zMTNkNWU5MWUzYTFjZmQzYmMwOGY5ZDc4NjFhZjE5
ODk3YjlhMDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlci5oCkBAIC0xNjQsNyArMTY0LDcgQEAgcHVibGljOgogICAgIENvbm5lY3Rpb24q
IGNvbm5lY3Rpb24oU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKSBjb25z
dCB7IHJldHVybiBtX2Nvbm5lY3Rpb25zLmdldChpZGVudGlmaWVyKTsgfQogCiAgICAgY29uc3Qg
SGFzaE1hcDxTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8Q29u
bmVjdGlvbj4+JiBjb25uZWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbnM7IH0K
LSAgICBjb25zdCBIYXNoU2V0PFN0cmluZz4gcmVnaXN0ZXJlZFNjaGVtZXMoKSBjb25zdCB7IHJl
dHVybiBtX3JlZ2lzdGVyZWRTY2hlbWVzOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjYW5I
YW5kbGVTY2hlbWUoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAKICAgICBTV09yaWdpblN0b3JlJiBv
cmlnaW5TdG9yZSgpIHsgcmV0dXJuIG1fb3JpZ2luU3RvcmU7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5j
cHAKaW5kZXggNzc4YWU3ZDZjODMzNzdlN2QxZTQyZmVkNzIwYzMzYzc1N2ZlMmQxZi4uOGM0YTAw
NWQxMzFlZDJiMDNiMWRlODRmYTMxNDIzMzZhMWVjZTFkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3Bw
CkBAIC0yNTksNyArMjU5LDcgQEAgdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpydW5SZWdpc3Rlckpv
Yihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iKQogewogICAgIEFTU0VSVChqb2IudHlw
ZSA9PSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6UmVnaXN0ZXIpOwogCi0gICAgaWYgKCFzaG91bGRU
cmVhdEFzUG90ZW50aWFsbHlUcnVzdHdvcnRoeShqb2Iuc2NyaXB0VVJMKSAmJiAhbV9zZXJ2ZXIu
cmVnaXN0ZXJlZFNjaGVtZXMoKS5jb250YWlucyhqb2Iuc2NyaXB0VVJMLnByb3RvY29sKCkudG9T
dHJpbmdXaXRob3V0Q29weWluZygpKSkKKyAgICBpZiAoIXNob3VsZFRyZWF0QXNQb3RlbnRpYWxs
eVRydXN0d29ydGh5KGpvYi5zY3JpcHRVUkwpICYmICFtX3NlcnZlci5jYW5IYW5kbGVTY2hlbWUo
am9iLnNjcmlwdFVSTC5wcm90b2NvbCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkpCiAgICAg
ICAgIHJldHVybiByZWplY3RDdXJyZW50Sm9iKEV4Y2VwdGlvbkRhdGEgeyBTZWN1cml0eUVycm9y
LCAiU2NyaXB0IFVSTCBpcyBub3QgcG90ZW50aWFsbHkgdHJ1c3R3b3J0aHkiX3MgfSk7CiAKICAg
ICAvLyBJZiB0aGUgb3JpZ2luIG9mIGpvYidzIHNjcmlwdCB1cmwgaXMgbm90IGpvYidzIHJlZmVy
cmVyJ3Mgb3JpZ2luLCB0aGVuOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3Rz
LnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXggZjdjZDE4YmQyOTIzM2I4
NThmZTdjN2RkMzc1YTlhOTk2M2E2OTI2ZS4uMWUwNmU2MjYwY2QyZDk0ZTI0ODA4ZWI1N2YwNDI3
MGYxMzUzYTQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC0xOTAsNyArMTkwLDYgQEAgc2V0KFdl
YktpdF9NRVNTQUdFU19JTl9GSUxFUwogICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KICAgICBXZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJveHkubWVzc2FnZXMuaW4KIAotICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNl
V29ya2VyQ2xpZW50RmV0Y2gubWVzc2FnZXMuaW4KICAgICBXZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDbGllbnRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAgICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCAyZTQ3NjYwODU0MDNkNDIw
N2YyYmYxNzJlOTljNzg0NjkwYTljY2UxLi5mMWFkYWQ2MjY5ZDAxMmNhYjFkZDcyYjU5MDUyNThl
ZjkwOWY5NWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2Zp
bGVsaXN0CkBAIC0xMDUsNyArMTA1LDYgQEAgJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9E
SVIpL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0
aW9uTWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb3h5Lm1lc3NhZ2VzLmluCi0kKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1N0b3Jh
Z2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBS
T0pFQ1RfRElSKS9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCBiZDlkZDdmNjMzYzE3YmNmMjk5MDg3
N2YxZGUzYWFlNGE4ZmI0N2FjLi4xYzVkMjE0ZDAwNzFkMjY4NGZkY2M4YjhlNGFjOWM2NWJkOTdk
YjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QKQEAgLTgwLDggKzgwLDYgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvUmVtb3RlV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZVdlYkluc3BlY3RvclVJTWVz
c2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvU2Vj
SXRlbVNoaW1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1NlY0l0ZW1TaGltUHJveHlNZXNzYWdlcy5oCi0kKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TZXJ2aWNlV29ya2VyQ2xpZW50
RmV0Y2hNZXNzYWdlUmVjZWl2ZXIuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlcy5oCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvU2VydmljZVdvcmtlckZldGNoVGFza01lc3NhZ2VzLmgKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRy
b2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXgg
OWRlNzA0MjY2YWZlZTUxMzZlNjVlODQ3ODFiNWEwMjUyNTE1N2FjOS4uYmFlN2MzMTllNDc2NDQ1
YTljZTM2ZTYyZDc2ZWZlZGRmNjZhYjEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJp
dmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpA
QCAtMTMyLDcgKzEzMiw2IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFJlbW90ZVdlYklu
c3BlY3RvclByb3h5IFwKICAgICBSZW1vdGVXZWJJbnNwZWN0b3JVSSBcCiAgICAgU2VjSXRlbVNo
aW1Qcm94eSBcCi0gICAgU2VydmljZVdvcmtlckNsaWVudEZldGNoIFwKICAgICBTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrIFwKICAgICBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyIFwKICAgICBT
dG9yYWdlQXJlYU1hcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDYyMThhNmU5
MGZhYmZmNDQxOTM1ZWUwMWE3NWZkOWY1ZDlkMGE0NjYuLmNiNTBlYmFjMTBiOTAzMmFlMjU1MzQ5
ODVlNTBjNzdjNzgyOWZkMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC00MDYs
OSArNDA2LDEzIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNjaGVkdWxl
UmVzb3VyY2VMb2FkKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhCiAgICAgUkVMRUFTRV9BU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwogICAgIEFTU0VSVCghbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJz
LmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKIAotICAgIGF1dG8gbG9hZGVyID0gTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpjcmVhdGUoV1RGTW92ZShsb2FkUGFyYW1ldGVycyksICp0aGlzKTsKLSAgICBt
X25ldHdvcmtSZXNvdXJjZUxvYWRlcnMuYWRkKGlkZW50aWZpZXIsIGxvYWRlci5jb3B5UmVmKCkp
OworICAgIGF1dG8mIGxvYWRlciA9IG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5hZGQoaWRlbnRp
ZmllciwgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjcmVhdGUoV1RGTW92ZShsb2FkUGFyYW1ldGVy
cyksICp0aGlzKSkuaXRlcmF0b3ItPnZhbHVlOworCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQorICAgIGxvYWRlci0+c3RhcnRXaXRoU2VydmljZVdvcmtlcihtX3N3Q29ubmVjdGlvbi5nZXQo
KSk7CisjZWxzZQogICAgIGxvYWRlci0+c3RhcnQoKTsKKyNlbmRpZgogfQogCiB2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwZXJmb3JtU3luY2hyb25vdXNMb2FkKE5ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMsIE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJl
cGx5JiYgcmVwbHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4IGUyOGM3ZDE0YmQx
MGE0Yzc0YTc0YzU0ZjE0NjJkYjU5NDIzMDEzYzUuLmNmYTU0OTI0OWMxODMzZWY2NDQ1OTdjZDQw
YzY1NWI4MTUxZDIwNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCkBAIC0xMDcsNiAr
MTA3LDEyIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZShJUEM6
OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBmcmFtZUFuY2VzdG9yT3Jp
Z2luczsKICAgICBlbmNvZGVyIDw8IGlzSFRUUFNVcGdyYWRlRW5hYmxlZDsKIAorI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKKyAgICBlbmNvZGVyIDw8IHNlcnZpY2VXb3JrZXJzTW9kZTsKKyAg
ICBlbmNvZGVyIDw8IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOworICAgIGVu
Y29kZXIgPDwgaHR0cEhlYWRlcnNUb0tlZXA7CisjZW5kaWYKKwogI2lmIEVOQUJMRShDT05URU5U
X0VYVEVOU0lPTlMpCiAgICAgZW5jb2RlciA8PCBtYWluRG9jdW1lbnRVUkw7CiAgICAgZW5jb2Rl
ciA8PCB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwpAQCAtMjQyLDcgKzI0OCwyNyBA
QCBPcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycz4gTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnM6OmRlY29kZShJUAogICAgIGlmICghaXNIVFRQU1VwZ3JhZGVFbmFibGVk
KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIHJlc3VsdC5pc0hUVFBTVXBncmFk
ZUVuYWJsZWQgPSAqaXNIVFRQU1VwZ3JhZGVFbmFibGVkOwotICAgIAorCisjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQorICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJzTW9kZT4gc2VydmljZVdv
cmtlcnNNb2RlOworICAgIGRlY29kZXIgPj4gc2VydmljZVdvcmtlcnNNb2RlOworICAgIGlmICgh
c2VydmljZVdvcmtlcnNNb2RlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJl
c3VsdC5zZXJ2aWNlV29ya2Vyc01vZGUgPSAqc2VydmljZVdvcmtlcnNNb2RlOworCisgICAgT3B0
aW9uYWw8T3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+PiBzZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+IHNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOworICAgIGlmICghc2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbklkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmVz
dWx0LnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyID0gKnNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyOworCisgICAgT3B0aW9uYWw8SGFzaFNldDxIVFRQSGVhZGVy
TmFtZSwgV1RGOjpJbnRIYXNoPEhUVFBIZWFkZXJOYW1lPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRy
YWl0czxIVFRQSGVhZGVyTmFtZT4+PiBodHRwSGVhZGVyc1RvS2VlcDsKKyAgICBkZWNvZGVyID4+
IGh0dHBIZWFkZXJzVG9LZWVwOworICAgIGlmICghaHR0cEhlYWRlcnNUb0tlZXApCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmVzdWx0Lmh0dHBIZWFkZXJzVG9LZWVwID0gV1RG
TW92ZSgqaHR0cEhlYWRlcnNUb0tlZXApOworI2VuZGlmCisKICNpZiBFTkFCTEUoQ09OVEVOVF9F
WFRFTlNJT05TKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1haW5Eb2N1bWVudFVS
TCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgK
aW5kZXggMTIwMzQ3MDRkYTkyN2I1YTJmYzFiNWNlZmU5OWJiZjgyYmZkZjU3NC4uOWNkNWI0NTVj
NzI1NTczNDlhMDAzOWQ4ZmQxYzI3NDVhNGI1NzMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMu
aApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNl
SGVhZGVycy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hPcHRpb25zLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9IVFRQSGVhZGVyTmFtZXMuaD4KICNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogCiBu
YW1lc3BhY2UgSVBDIHsKQEAgLTYwLDYgKzYxLDEyIEBAIHB1YmxpYzoKICAgICBWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4gZnJhbWVBbmNlc3Rvck9yaWdpbnM7CiAgICAg
Ym9vbCBpc0hUVFBTVXBncmFkZUVuYWJsZWQgeyBmYWxzZSB9OwogCisjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQorICAgIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJzTW9kZSBzZXJ2aWNlV29ya2Vy
c01vZGUgeyBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vyc01vZGU6Ok5vbmUgfTsKKyAgICBPcHRpb25h
bDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4gc2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI7CisgICAgSGFzaFNldDxXZWJDb3JlOjpIVFRQSGVh
ZGVyTmFtZSwgV1RGOjpJbnRIYXNoPFdlYkNvcmU6OkhUVFBIZWFkZXJOYW1lPiwgV1RGOjpTdHJv
bmdFbnVtSGFzaFRyYWl0czxXZWJDb3JlOjpIVFRQSGVhZGVyTmFtZT4+IGh0dHBIZWFkZXJzVG9L
ZWVwOworI2VuZGlmCisKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIFVSTCBt
YWluRG9jdW1lbnRVUkw7CiAgICAgT3B0aW9uYWw8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRp
Zmllcj4gdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBm
YjM3MmQ3OWRlY2I5NmNlYTUxYjdjZTQzMTNmZjQ2ODExYzE5ZGJkLi45MmFmNzFlMTQ3MDNjNTg0
NTdhOWMzZDQ0ODk5ZDVlYThlMTZhZDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0zNzksNiArMzc5LDEx
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjphYm9ydCgpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgaWYgKGF1dG8gdGFzayA9
IFdURk1vdmUobV9zZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKSkKKyAgICAgICAgdGFzay0+Y2FuY2Vs
RnJvbUNsaWVudCgpOworI2VuZGlmCisKICAgICBpZiAobV9uZXR3b3JrTG9hZCkgewogICAgICAg
ICBpZiAoY2FuVXNlQ2FjaGUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKSkpIHsKICAg
ICAgICAgICAgIC8vIFdlIG1pZ2h0IGFscmVhZHkgaGF2ZSB1c2VkIGRhdGEgZnJvbSB0aGlzIGlu
Y29tcGxldGUgbG9hZC4gRW5zdXJlIG9sZGVyIHZlcnNpb25zIGRvbid0IHJlbWFpbiBpbiB0aGUg
Y2FjaGUgYWZ0ZXIgY2FuY2VsLgpAQCAtNjEyLDggKzYxNywxNiBAQCB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6ZGlkRmFpbExvYWRpbmcoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAg
ICAgaWYgKGlzU3luY2hyb25vdXMoKSkgewogICAgICAgICBtX3N5bmNocm9ub3VzTG9hZERhdGEt
PmVycm9yID0gZXJyb3I7CiAgICAgICAgIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KCpt
X3N5bmNocm9ub3VzTG9hZERhdGEsIG51bGxwdHIpOwotICAgIH0gZWxzZSBpZiAoYXV0byogY29u
bmVjdGlvbiA9IG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkpCisgICAgfSBlbHNlIGlmIChhdXRv
KiBjb25uZWN0aW9uID0gbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSkgeworI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKKyAgICAgICAgaWYgKG1fc2VydmljZVdvcmtlckZldGNoVGFzaykKKyAg
ICAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpE
aWRGYWlsU2VydmljZVdvcmtlckxvYWQoZXJyb3IpLCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25J
RCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZhaWxSZXNvdXJjZUxvYWQoZXJyb3IpLCBtZXNzYWdl
U2VuZGVyRGVzdGluYXRpb25JRCgpKTsKKyNlbHNlCiAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGYWlsUmVzb3VyY2VMb2FkKGVycm9yKSwg
bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSk7CisjZW5kaWYKKyAgICB9CiAKICAgICBjbGVh
bnVwKExvYWRSZXN1bHQ6OkZhaWx1cmUpOwogfQpAQCAtNzQ3LDYgKzc2MCwxMCBAQCB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6cmVzdGFydE5ldHdvcmtMb2FkKFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmIG5ld1JlcQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVX
aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgYm9vbCBpc0FsbG93
ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscykKIHsKKyAgICBpZiAobV9zZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrKSB7CisgICAgICAgIG1fc2VydmljZVdvcmtlckZldGNoVGFzay0+Y29udGludWVGZXRj
aFRhc2tXaXRoKFdURk1vdmUobmV3UmVxdWVzdCkpOworICAgICAgICByZXR1cm47CisgICAgfQog
ICAgIGlmIChtX3Nob3VsZFJlc3RhcnRMb2FkKSB7CiAgICAgICAgIG1fc2hvdWxkUmVzdGFydExv
YWQgPSBmYWxzZTsKIApAQCAtNzkyLDYgKzgwOSwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVz
dAogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2UoKQogeworICAgIGlmIChtX3NlcnZpY2VXb3JrZXJGZXRjaFRhc2spIHsKKyAgICAgICAgbV9z
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLT5jb250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAobV9jYWNoZUVudHJ5V2FpdGluZ0Zv
ckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKSB7CiAgICAgICAgIHNlbmRSZXN1bHRGb3JDYWNo
ZUVudHJ5KFdURk1vdmUobV9jYWNoZUVudHJ5V2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlKSk7CiAgICAgICAgIGNsZWFudXAoTG9hZFJlc3VsdDo6U3VjY2Vzcyk7CkBAIC0xMTk2
LDYgKzEyMTgsMzAgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmlzQ3Jvc3NPcmlnaW5Q
cmVmZXRjaCgpIGNvbnN0CiAgICAgcmV0dXJuIHJlcXVlc3QuaHR0cEhlYWRlckZpZWxkKEhUVFBI
ZWFkZXJOYW1lOjpQdXJwb3NlKSA9PSAicHJlZmV0Y2giICYmICFtX3BhcmFtZXRlcnMuc291cmNl
T3JpZ2luLT5jYW5SZXF1ZXN0KHJlcXVlc3QudXJsKCkpOwogfQogCisjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0V2l0aFNlcnZpY2VX
b3JrZXIoV2ViU1dTZXJ2ZXJDb25uZWN0aW9uKiBzd0Nvbm5lY3Rpb24pCit7CisgICAgQVNTRVJU
KCFtX3NlcnZpY2VXb3JrZXJGZXRjaFRhc2spOworICAgIG1fc2VydmljZVdvcmtlckZldGNoVGFz
ayA9IHN3Q29ubmVjdGlvbiA/IHN3Q29ubmVjdGlvbi0+Y3JlYXRlRmV0Y2hUYXNrKCp0aGlzKSA6
IG51bGxwdHI7CisgICAgaWYgKG1fc2VydmljZVdvcmtlckZldGNoVGFzaykKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKG1fcGFyYW1ldGVycy5zZXJ2aWNlV29ya2Vyc01vZGUgPT0gU2Vydmlj
ZVdvcmtlcnNNb2RlOjpPbmx5KSB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNl
TG9hZGVyOjpTZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlIHsgfSwgaWRlbnRpZmllcigpKTsKKyAg
ICAgICAgYWJvcnQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBzdGFydCgpOworfQor
Cit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSgp
Cit7CisgICAgbV9zZXJ2aWNlV29ya2VyRmV0Y2hUYXNrID0gbnVsbHB0cjsKKyAgICBzdGFydCgp
OworfQorCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBSRUxFQVNF
X0xPR19JRl9BTExPV0VECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCBkNjUwNzJiNzJiZDQxMzE0MWEwNmIyODdjNDUy
NjliZTQyYWYwNzc2Li43MWY4MWJiNDYyNWQ4MzQ1YzY0ODA3MjdmOGE2NTRjMzY3Y2Y3ZGVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmgKQEAgLTUxLDYgKzUxLDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKIGNsYXNzIE5ldHdvcmtMb2FkOwogY2xhc3MgTmV0
d29ya0xvYWRDaGVja2VyOworY2xhc3MgU2VydmljZVdvcmtlckZldGNoVGFzazsKK2NsYXNzIFdl
YlNXU2VydmVyQ29ubmVjdGlvbjsKIAogbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiBjbGFzcyBF
bnRyeTsKQEAgLTg4LDcgKzkwLDggQEAgcHVibGljOgogICAgIFJlc291cmNlTG9hZElkZW50aWZp
ZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyOyB9
CiAgICAgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQoKSBjb25zdCB7IHJldHVybiBt
X3BhcmFtZXRlcnMud2ViRnJhbWVJRDsgfQogICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQ7IH0KLSAgICAKKyAg
ICBjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYgcGFyYW1ldGVycygpIGNvbnN0
IHsgcmV0dXJuIG1fcGFyYW1ldGVyczsgfQorCiAgICAgTmV0d29ya0NhY2hlOjpHbG9iYWxGcmFt
ZUlEIGdsb2JhbEZyYW1lSUQoKSB7IHJldHVybiB7IG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJ
RCwgcGFnZUlEKCksIGZyYW1lSUQoKSB9OyB9CiAKICAgICBzdHJ1Y3QgU3luY2hyb25vdXNMb2Fk
RGF0YTsKQEAgLTEyMiw2ICsxMjUsMTEgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0tlcHRBbGl2
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNLZXB0QWxpdmU7IH0KIAorI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKKyAgICB2b2lkIHN0YXJ0V2l0aFNlcnZpY2VXb3JrZXIoV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uKik7CisgICAgdm9pZCBzZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlKCk7CisjZW5kaWYK
KwogcHJpdmF0ZToKICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMmJiwgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRl
bGF5ZWRSZXBseSYmKTsKIApAQCAtMjIwLDYgKzIyOCw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X2lzS2VwdEFsaXZlIHsgZmFsc2UgfTsKIAogICAgIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRy
YWNrZXI+IG1fbmV0d29ya0FjdGl2aXR5VHJhY2tlcjsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCisgICAgc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+IG1fc2Vydmlj
ZVdvcmtlckZldGNoVGFzazsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlckZldGNoVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKaW5kZXggODM0YjU2OWU0MjI3
NWYxMzQ4N2VjNzdkZWExNWUwYmMzZjBhYTI1Zi4uMjU2MDI4N2U5YWYyM2ZlYjVmZjAxNTQ0OTVh
OGY2ZDQxMjZjMzFlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNw
cApAQCAtMzIsMTAgKzMyLDE0IEBACiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1
ZGUgIkZvcm1EYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUg
IlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3MuaCIKKyNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgiCi0jaW5jbHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2Vi
UmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oPgog
CiAjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lG
KG1fc2Vzc2lvbklELmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBTZXJ2aWNlV29ya2VyLCAi
JXAgLSBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykK
ICNkZWZpbmUgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9M
T0dfRVJST1JfSUYobV9zZXNzaW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFNlcnZp
Y2VXb3JrZXIsICIlcCAtIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OiIgZm10LCB0aGlzLCAjI19f
VkFfQVJHU19fKQpAQCAtNDQsODAgKzQ4LDEzOSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2soUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJTV1NlcnZlckNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4
dENvbm5lY3Rpb24sIEZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIsIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTZWNvbmRzIHRpbWVvdXQpCitT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgTmV0d29ya1Jlc291cmNlTG9hZGVyJiBsb2FkZXIsIFNXU2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQogICAgIDogbV9zZXNzaW9uSUQo
c2Vzc2lvbklEKQotICAgICwgbV9jb25uZWN0aW9uKG1ha2VXZWFrUHRyKGNvbm5lY3Rpb24pKQot
ICAgICwgbV9jb250ZXh0Q29ubmVjdGlvbihjb250ZXh0Q29ubmVjdGlvbikKLSAgICAsIG1faWRl
bnRpZmllciB7IGNvbm5lY3Rpb24uaWRlbnRpZmllcigpLCBmZXRjaElkZW50aWZpZXIgfQorICAg
ICwgbV9sb2FkZXIobG9hZGVyKQorICAgICwgbV9mZXRjaElkZW50aWZpZXIoV2ViQ29yZTo6RmV0
Y2hJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQorICAgICwgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllcihzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikKICAgICAsIG1fc2VydmljZVdvcmtlcklk
ZW50aWZpZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIpCi0gICAgLCBtX3RpbWVvdXQodGltZW91
dCkKICAgICAsIG1fdGltZW91dFRpbWVyKCp0aGlzLCAmU2VydmljZVdvcmtlckZldGNoVGFzazo6
dGltZW91dFRpbWVyRmlyZWQpCiB7Ci0gICAgbV90aW1lb3V0VGltZXIuc3RhcnRPbmVTaG90KG1f
dGltZW91dCk7CisgICAgbV90aW1lb3V0VGltZXIuc3RhcnRPbmVTaG90KGxvYWRlci5jb25uZWN0
aW9uVG9XZWJQcm9jZXNzKCkubmV0d29ya1Byb2Nlc3MoKS5zZXJ2aWNlV29ya2VyRmV0Y2hUaW1l
b3V0KCkpOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZWRp
cmVjdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorU2VydmljZVdv
cmtlckZldGNoVGFzazo6flNlcnZpY2VXb3JrZXJGZXRjaFRhc2soKQogewotICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlOiAlcyIsIG1faWRlbnRp
Zmllci5mZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAg
IG1fdGltZW91dFRpbWVyLnN0b3AoKTsKKyAgICBpZiAobV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlv
bikKKyAgICAgICAgbV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbi0+dW5yZWdpc3RlckZldGNoKCp0
aGlzKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgTWVzc2FnZT4gYm9vbCBTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOjpzZW5kVG9TZXJ2aWNlV29ya2VyKE1lc3NhZ2UmJiBtZXNzYWdlKQoreworICAg
IHJldHVybiBtX3NlcnZpY2VXb3JrZXJDb25uZWN0aW9uID8gbV9zZXJ2aWNlV29ya2VyQ29ubmVj
dGlvbi0+aXBjQ29ubmVjdGlvbigpLnNlbmQoc3RkOjpmb3J3YXJkPE1lc3NhZ2U+KG1lc3NhZ2Up
LCAwKSA6IGZhbHNlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBNZXNzYWdlPiBib29sIFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OnNlbmRUb0NsaWVudChNZXNzYWdlJiYgbWVzc2FnZSkKK3sKKyAg
ICByZXR1cm4gbV9sb2FkZXIuY29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNvbm5lY3Rpb24oKS5z
ZW5kKHN0ZDo6Zm9yd2FyZDxNZXNzYWdlPihtZXNzYWdlKSwgbV9sb2FkZXIuaWRlbnRpZmllcigp
KTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpzdGFydChXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24mIHNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKQoreworICAgIG1fc2Vy
dmljZVdvcmtlckNvbm5lY3Rpb24gPSBtYWtlV2Vha1B0cihzZXJ2aWNlV29ya2VyQ29ubmVjdGlv
bik7CisgICAgc2VydmljZVdvcmtlckNvbm5lY3Rpb24ucmVnaXN0ZXJGZXRjaCgqdGhpcyk7CisK
KyAgICBzdGFydEZldGNoKFJlc291cmNlUmVxdWVzdCB7IG1fbG9hZGVyLm9yaWdpbmFsUmVxdWVz
dCgpIH0sIHNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOjpzdGFydEZldGNoKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgc2VydmljZVdvcmtlckNvbm5lY3Rpb24pCit7CisgICAg
bV9jdXJyZW50UmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCk7CisKKyAgICBhdXRvJiBvcHRpb25z
ID0gbV9sb2FkZXIucGFyYW1ldGVycygpLm9wdGlvbnM7CisgICAgYXV0byByZWZlcnJlciA9IG1f
Y3VycmVudFJlcXVlc3QuaHR0cFJlZmVycmVyKCk7CisKKyAgICAvLyBXZSBhcmUgaW50ZXJjZXB0
aW5nIGZldGNoIGNhbGxzIGFmdGVyIGdvaW5nIHRocm91Z2ggdGhlIEhUVFAgbGF5ZXIsIHdoaWNo
IG1heSBhZGQgc29tZSBzcGVjaWZpYyBoZWFkZXJzLgorICAgIGNsZWFuSFRUUFJlcXVlc3RIZWFk
ZXJzRm9yQWNjZXNzQ29udHJvbChtX2N1cnJlbnRSZXF1ZXN0LCBtX2xvYWRlci5wYXJhbWV0ZXJz
KCkuaHR0cEhlYWRlcnNUb0tlZXApOworCisgICAgYm9vbCBpc1NlbnQgPSBzZW5kVG9TZXJ2aWNl
V29ya2VyKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U3RhcnRGZXRj
aCB7IG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIG1fc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIG1fZmV0Y2hJZGVudGlmaWVyLCBtX2N1cnJlbnRSZXF1ZXN0LCBvcHRpb25zLCBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlIHsgbV9jdXJyZW50UmVxdWVzdC5odHRwQm9keSgpIH0sIHJlZmVycmVy
IH0pOworICAgIEFTU0VSVF9VTlVTRUQoaXNTZW50LCBpc1NlbnQpOworfQorCit2b2lkIFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKFJlc291cmNlUmVz
cG9uc2UmJiByZXNwb25zZSkKK3sKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNl
aXZlUmVkaXJlY3RSZXNwb25zZTogJXMiLCBtX2ZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CiAgICAgbV93YXNIYW5kbGVkID0gdHJ1ZTsKLSAgICBpZiAobV9j
b25uZWN0aW9uKQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VX
b3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgeyByZXNwb25zZSB9
LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKKworICAgIHJlc3BvbnNlLnNldFNvdXJj
ZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OlNlcnZpY2VXb3JrZXIpOworICAgIGF1dG8gbmV3
UmVxdWVzdCA9IG1fY3VycmVudFJlcXVlc3QucmVkaXJlY3RlZFJlcXVlc3QocmVzcG9uc2UsIG1f
bG9hZGVyLnBhcmFtZXRlcnMoKS5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGly
ZWN0KTsKKworICAgIHNlbmRUb0NsaWVudChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6Oldp
bGxTZW5kUmVxdWVzdCB7IG5ld1JlcXVlc3QsIHJlc3BvbnNlIH0pOwogfQogCi12b2lkIFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2Fn
ZSkKK3ZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291
cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlTWVzc2FnZSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVz
cG9uc2U6ICVzIiwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJl
c3BvbnNlOiAlcyIsIG1fZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKICAgICBtX3RpbWVvdXRUaW1lci5zdG9wKCk7CiAgICAgbV93YXNIYW5kbGVkID0gdHJ1
ZTsKLSAgICBpZiAobV9jb25uZWN0aW9uKQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVz
cG9uc2UsIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0sIG1faWRlbnRp
Zmllci5mZXRjaElkZW50aWZpZXIpOworICAgIHJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJl
c3BvbnNlOjpTb3VyY2U6OlNlcnZpY2VXb3JrZXIpOworCisgICAgc2VuZFRvQ2xpZW50KE1lc3Nh
Z2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG5l
ZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0pOwogfQogCiB2b2lkIFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIW1fdGlt
ZW91dFRpbWVyLmlzQWN0aXZlKCkpOwotICAgIGlmIChtX2Nvbm5lY3Rpb24pCi0gICAgICAgIG1f
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRS
ZWNlaXZlRGF0YSB7IGRhdGEsIGVuY29kZWREYXRhTGVuZ3RoIH0sIG1faWRlbnRpZmllci5mZXRj
aElkZW50aWZpZXIpOworICAgIHNlbmRUb0NsaWVudChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2Fk
ZXI6OkRpZFJlY2VpdmVEYXRhIHsgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHsgZGF0
YS5kYXRhKCksIGRhdGEuc2l6ZSgpIH0sIGVuY29kZWREYXRhTGVuZ3RoIH0pOwogfQogCiB2b2lk
IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVGb3JtRGF0YShjb25zdCBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlJiBmb3JtRGF0YSkKIHsKICAgICBBU1NFUlQoIW1fdGltZW91dFRpbWVy
LmlzQWN0aXZlKCkpOwotICAgIGlmIChtX2Nvbm5lY3Rpb24pCi0gICAgICAgIG1fY29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRSZWNlaXZlRm9y
bURhdGEgeyBmb3JtRGF0YSB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKKyAgICAv
LyBGSVhNRTogQWxsb3cgV2ViUmVzb3VyY2VMb2FkZXIgdG8gcmVjZWl2ZSBmb3JtIGRhdGEuCiB9
CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkRmluaXNoKCkKIHsKICAgICBBU1NF
UlQoIW1fdGltZW91dFRpbWVyLmlzQWN0aXZlKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoImRpZEZpbmlzaEZldGNoOiBmZXRjaElkZW50aWZpZXI6ICVzIiwgbV9pZGVudGlmaWVyLmZl
dGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgiZGlkRmluaXNoRmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMiLCBt
X2ZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgbV90
aW1lb3V0VGltZXIuc3RvcCgpOwotICAgIGlmIChtX2Nvbm5lY3Rpb24pCi0gICAgICAgIG1fY29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRGaW5p
c2ggeyB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKKyAgICBzZW5kVG9DbGllbnQo
TWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJjZUxvYWQgeyB7IH0g
fSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkRmFpbChjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJk
aWRGYWlsRmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMiLCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVu
dGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBtX3RpbWVvdXRUaW1l
ci5zdG9wKCk7Ci0gICAgaWYgKG1fY29ubmVjdGlvbikKLSAgICAgICAgbV9jb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZEZhaWwgeyBlcnJvciB9
LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9J
Rl9BTExPV0VEKCJkaWRGYWlsRmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMiLCBtX2ZldGNoSWRl
bnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgbV9sb2FkZXIuZGlk
RmFpbExvYWRpbmcoZXJyb3IpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRp
ZE5vdEhhbmRsZSgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkTm90SGFuZGxl
RmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMiLCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVy
LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJkaWROb3RIYW5kbGVGZXRjaDogZmV0Y2hJZGVudGlmaWVyOiAlcyIsIG1fZmV0Y2hJZGVu
dGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBtX3RpbWVvdXRUaW1l
ci5zdG9wKCk7Ci0gICAgaWYgKG1fY29ubmVjdGlvbikKLSAgICAgICAgbV9jb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZE5vdEhhbmRsZSB7IH0s
IG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOworICAgIGlmIChtX2xvYWRlci5wYXJhbWV0
ZXJzKCkuc2VydmljZVdvcmtlcnNNb2RlID09IFNlcnZpY2VXb3JrZXJzTW9kZTo6T25seSkgewor
ICAgICAgICBzZW5kVG9DbGllbnQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpTZXJ2aWNl
V29ya2VyRGlkTm90SGFuZGxlIHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9s
b2FkZXIuc2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSgpOworfQorCit2b2lkIFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OmNhbmNlbEZyb21DbGllbnQoKQoreworICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoImNhbmNlbEZyb21DbGllbnQ6IGZldGNoSWRlbnRpZmllcjogJXMiLCBtX2ZldGNoSWRl
bnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgc2VuZFRvU2Vydmlj
ZVdvcmtlcihNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkNhbmNlbEZl
dGNoIHsgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgbV9zZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgbV9mZXRjaElkZW50aWZpZXIgfSk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlckZldGNo
VGFzazo6Y29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSgpCit7CisgICAgc2VuZFRvU2Vy
dmljZVdvcmtlcihNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkNvbnRp
bnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UgeyBtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
LCBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBtX2ZldGNoSWRlbnRpZmllciB9KTsKK30KKwor
dm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpjb250aW51ZUZldGNoVGFza1dpdGgoUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCkKK3sKKyAgICBpZiAoIW1fc2VydmljZVdvcmtlckNvbm5lY3Rp
b24pIHsKKyAgICAgICAgbV9sb2FkZXIuc2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIHN0YXJ0RmV0Y2goV1RGTW92ZShyZXF1ZXN0KSwgKm1f
c2VydmljZVdvcmtlckNvbm5lY3Rpb24pOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s6OnRpbWVvdXRUaW1lckZpcmVkKCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ0
aW1lb3V0VGltZXJGaXJlZDogZmV0Y2hJZGVudGlmaWVyOiAlcyIsIG1faWRlbnRpZmllci5mZXRj
aElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIGRpZE5vdEhh
bmRsZSgpOwotICAgIG1fY29udGV4dENvbm5lY3Rpb24uZmV0Y2hUYXNrVGltZWRPdXQoKnRoaXMp
OworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInRpbWVvdXRUaW1lckZpcmVkOiBmZXRjaElk
ZW50aWZpZXI6ICVzIiwgbV9mZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOworICAgIGlmIChtX3NlcnZpY2VXb3JrZXJDb25uZWN0aW9uKQorICAgICAgICBtX3Nl
cnZpY2VXb3JrZXJDb25uZWN0aW9uLT5mZXRjaFRhc2tUaW1lZE91dChzZXJ2aWNlV29ya2VySWRl
bnRpZmllcigpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNo
VGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJGZXRjaFRhc2suaAppbmRleCBkOGI5ZDZmMjU2NjM4MzY3NzJmMjliOWY5Yjk5ZTBh
MGUyNjM5NDVjLi5iZGZkNWU2OTM1OThkYzgwM2ZlZjM4NjRmMjY4ZWZiMWQ2NWFmZjFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlckZldGNoVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKQEAgLTI4LDEyICsyOCwxNSBAQAog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hJZGVu
dGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIu
aD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKK2NsYXNzIFJlc291
cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiB9CiAKQEAgLTQ2LDgyICs0OSw1
OSBAQCBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNs
YXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKK2NsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjsK
IGNsYXNzIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjsKIAotY2xhc3MgU2VydmljZVdv
cmtlckZldGNoVGFzayB7CitjbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2FkZXI7CitjbGFzcyBXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CisKK2NsYXNzIFNlcnZpY2VXb3JrZXJGZXRjaFRh
c2sgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U2VydmljZVdvcmtlckZldGNoVGFzaz4gewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFNlcnZpY2VXb3JrZXJGZXRj
aFRhc2soUEFMOjpTZXNzaW9uSUQsIFdlYlNXU2VydmVyQ29ubmVjdGlvbiYsIFdlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbiYsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNlY29uZHMgdGltZW91dCk7CisgICAgU2VydmljZVdv
cmtlckZldGNoVGFzayhQQUw6OlNlc3Npb25JRCwgTmV0d29ya1Jlc291cmNlTG9hZGVyJiwgV2Vi
Q29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIpOworICAgIH5TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKCk7CiAKLSAgICB2b2lk
IGRpZE5vdEhhbmRsZSgpOworICAgIHZvaWQgc3RhcnQoV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uJik7CisgICAgdm9pZCBjYW5jZWxGcm9tQ2xpZW50KCk7CiAgICAgdm9pZCBmYWlsKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKSB7IGRpZEZhaWwoZXJyb3IpOyB9CiAg
ICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KTsKIAotICAgIHN0cnVjdCBJZGVudGlmaWVyIHsKLSAgICAgICAgV2ViQ29yZTo6U1dTZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcjsKLSAgICAgICAgV2ViQ29y
ZTo6RmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllcjsKLSAgICAgICAgCi0gICAgICAgIHVu
c2lnbmVkIGhhc2goKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBoYXNo
ZXNbMl07Ci0gICAgICAgICAgICBoYXNoZXNbMF0gPSBXVEY6OmludEhhc2goY29ubmVjdGlvbklk
ZW50aWZpZXIudG9VSW50NjQoKSk7Ci0gICAgICAgICAgICBoYXNoZXNbMV0gPSBXVEY6OmludEhh
c2goZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOwotICAgICAgICAgICAgcmV0dXJuIFN0cmlu
Z0hhc2hlcjo6aGFzaE1lbW9yeShoYXNoZXMsIHNpemVvZihoYXNoZXMpKTsKLSAgICAgICAgfQot
ICAgIH07Ci0KLSAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1
cm4gbV9pZGVudGlmaWVyOyB9Ci0gICAgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXImIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNl
V29ya2VySWRlbnRpZmllcjsgfQorICAgIHZvaWQgY29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNw
b25zZSgpOworICAgIHZvaWQgY29udGludWVGZXRjaFRhc2tXaXRoKFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmKTsKKworICAgIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZp
ZXIoKSBjb25zdCB7IHJldHVybiBtX2ZldGNoSWRlbnRpZmllcjsgfQorICAgIFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZXJ2aWNlV29ya2VySWRlbnRpZmllcjsgfQorCisgICAgdm9pZCBkaWROb3RIYW5k
bGUoKTsKKwogICAgIGJvb2wgd2FzSGFuZGxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzSGFuZGxl
ZDsgfQogCiBwcml2YXRlOgotICAgIHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBib29sIG5lZWRzQ29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZWRpcmVjdFJl
c3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CisgICAgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBib29sIG5lZWRzQ29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZv
aWQgZGlkUmVjZWl2ZUZvcm1EYXRhKGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmKTsKICAg
ICB2b2lkIGRpZEZpbmlzaCgpOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJik7CisKKyAgICB2b2lkIHN0YXJ0RmV0Y2goV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpOworCiAgICAgdm9pZCB0aW1l
b3V0VGltZXJGaXJlZCgpOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWVzc2FnZT4gYm9vbCBz
ZW5kVG9TZXJ2aWNlV29ya2VyKE1lc3NhZ2UmJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWVz
c2FnZT4gYm9vbCBzZW5kVG9DbGllbnQoTWVzc2FnZSYmKTsKKwogICAgIFBBTDo6U2Vzc2lvbklE
IG1fc2Vzc2lvbklEOwotICAgIFdlYWtQdHI8V2ViU1dTZXJ2ZXJDb25uZWN0aW9uPiBtX2Nvbm5l
Y3Rpb247Ci0gICAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBtX2NvbnRleHRDb25u
ZWN0aW9uOwotICAgIElkZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAgIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlciYgbV9sb2FkZXI7CisgICAgV2Vha1B0cjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24+IG1fc2VydmljZVdvcmtlckNvbm5lY3Rpb247CisgICAgV2ViQ29yZTo6RmV0Y2hJZGVu
dGlmaWVyIG1fZmV0Y2hJZGVudGlmaWVyOworICAgIFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcjsKICAgICBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyOwotICAgIFNl
Y29uZHMgbV90aW1lb3V0OworICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX2N1cnJlbnRS
ZXF1ZXN0OwogICAgIFdlYkNvcmU6OlRpbWVyIG1fdGltZW91dFRpbWVyOwogICAgIGJvb2wgbV93
YXNIYW5kbGVkIHsgZmFsc2UgfTsKIH07CiAKLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3Qg
U2VydmljZVdvcmtlckZldGNoVGFzazo6SWRlbnRpZmllciYgYSwgY29uc3QgU2VydmljZVdvcmtl
ckZldGNoVGFzazo6SWRlbnRpZmllciYgYikKLXsKLSAgICByZXR1cm4gYS5jb25uZWN0aW9uSWRl
bnRpZmllciA9PSBiLmNvbm5lY3Rpb25JZGVudGlmaWVyICYmICBhLmZldGNoSWRlbnRpZmllciA9
PSBiLmZldGNoSWRlbnRpZmllcjsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLQotbmFt
ZXNwYWNlIFdURiB7Ci0KLXN0cnVjdCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrSWRlbnRpZmllckhh
c2ggewotICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFdlYktpdDo6U2VydmljZVdvcmtl
ckZldGNoVGFzazo6SWRlbnRpZmllciYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9Ci0gICAg
c3RhdGljIGJvb2wgZXF1YWwoY29uc3QgV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpJ
ZGVudGlmaWVyJiBhLCBjb25zdCBXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OklkZW50
aWZpZXImIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVU
b0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0
IEhhc2hUcmFpdHM8V2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpJZGVudGlmaWVyPiA6
IEdlbmVyaWNIYXNoVHJhaXRzPFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6SWRlbnRp
Zmllcj4gewotICAgIHN0YXRpYyBXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OklkZW50
aWZpZXIgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIHsgfTsgfQotICAgIAotICAgIHN0YXRpYyB2b2lk
IGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6Oklk
ZW50aWZpZXImIHNsb3QpIHsgc2xvdC5jb25uZWN0aW9uSWRlbnRpZmllciA9IG1ha2VPYmplY3RJ
ZGVudGlmaWVyPFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXJUeXBlPihzdGQ6
Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkpOyB9Ci0gICAgCi0gICAgc3RhdGljIGJv
b2wgaXNEZWxldGVkVmFsdWUoY29uc3QgV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpJ
ZGVudGlmaWVyJiBzbG90KSB7IHJldHVybiBzbG90LmNvbm5lY3Rpb25JZGVudGlmaWVyLnRvVUlu
dDY0KCkgPT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpOyB9Ci19OwotCi10
ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s6OklkZW50aWZpZXI+IHsKLSAgICB1c2luZyBIYXNoID0gU2VydmljZVdvcmtlckZldGNoVGFz
a0lkZW50aWZpZXJIYXNoOwotfTsKLQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCA3OWUzMjY1
Y2VkMWVhMjRlODc1YmU1MjBiNzkzMmU4NWI2NDAzMTNmLi5kZDllY2I0YzFjMjhkMjI1MjA0MmI1
Mjk3MDk1OTRlOGMxODE0ODFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
LmNwcApAQCAtMzMsMTYgKzMzLDE4IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUg
Ik5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3
b3JrUHJvY2Vzcy5oIgotI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZGVyTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJXZWJTV0NsaWVudENvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUg
IldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJT
V1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRJZGVudGlmaWVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25EYXRhLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9M
ZWdhY3lTY2hlbWVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1NXU2VydmVyUmVnaXN0cmF0aW9uLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgpAQCAtMTI2LDE4ICsxMjgsOCBAQCB2b2lkIFdlYlNX
U2VydmVyQ29ubmVjdGlvbjo6dXBkYXRlV29ya2VyU3RhdGVJbkNsaWVudChTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciB3bwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6
VXBkYXRlV29ya2VyU3RhdGUod29ya2VyLCBzdGF0ZSkpOwogfQogCi12b2lkIFdlYlNXU2VydmVy
Q29ubmVjdGlvbjo6Y2FuY2VsRmV0Y2goU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIEZldGNoSWRlbnRpZmllciBm
ZXRjaElkZW50aWZpZXIpCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y2FuY2VsRmV0Y2go
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIEZldGNoSWRlbnRpZmllcikKIHsK
LSAgICBTV1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY2FuY2VsRmV0
Y2g6ICVzIiwgZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
LSAgICBhdXRvKiB3b3JrZXIgPSBzZXJ2ZXIoKS5hY3RpdmVXb3JrZXJGcm9tUmVnaXN0cmF0aW9u
SUQoc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpOwotICAgIGlmICghd29ya2Vy
IHx8ICF3b3JrZXItPmlzUnVubmluZygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyID0gd29ya2VyLT5pZGVudGlmaWVyKCk7Ci0gICAgc2VydmVy
KCkucnVuU2VydmljZVdvcmtlcklmTmVjZXNzYXJ5KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBb
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgdGhpcywgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIGZldGNoSWRlbnRpZmllcl0oYXV0byogY29udGV4dENvbm5lY3Rpb24pIG11dGFibGUgewot
ICAgICAgICBpZiAod2Vha1RoaXMgJiYgY29udGV4dENvbm5lY3Rpb24pCi0gICAgICAgICAgICBz
dGF0aWNfY2FzdDxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mPigqY29udGV4dENvbm5l
Y3Rpb24pLmNhbmNlbEZldGNoKHRoaXMtPmlkZW50aWZpZXIoKSwgZmV0Y2hJZGVudGlmaWVyLCBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgfSk7CiB9CiAKIHZvaWQgV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpjb250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
LCBGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyKQpAQCAtMTUzLDU5ICsxNDUsODkgQEAg
dm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9u
c2UoU2VydmljZVdvcmtlclJlZ2lzdHIKICAgICB9KTsKIH0KIAotdm9pZCBXZWJTV1NlcnZlckNv
bm5lY3Rpb246OnN0YXJ0RmV0Y2goU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIg
c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIEZldGNoSWRlbnRpZmllciBmZXRj
aElkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZldGNoT3B0aW9ucyYmIG9w
dGlvbnMsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiBmb3JtRGF0YSwgU3RyaW5nJiYgcmVmZXJy
ZXIpCitzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckZldGNoVGFzaz4gV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpjcmVhdGVGZXRjaFRhc2soTmV0d29ya1Jlc291cmNlTG9hZGVyJiBsb2FkZXIp
CiB7Ci0gICAgYXV0byogd29ya2VyID0gc2VydmVyKCkuYWN0aXZlV29ya2VyRnJvbVJlZ2lzdHJh
dGlvbklEKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKKyAgICBpZiAoIWxv
YWRlci5wYXJhbWV0ZXJzKCkuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKGxvYWRlci5wYXJhbWV0ZXJzKCkuc2Vy
dmljZVdvcmtlcnNNb2RlID09IFNlcnZpY2VXb3JrZXJzTW9kZTo6Tm9uZSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBpZiAoaXNQb3RlbnRpYWxOYXZpZ2F0aW9uT3JTdWJyZXNvdXJj
ZVJlcXVlc3QobG9hZGVyLnBhcmFtZXRlcnMoKS5vcHRpb25zLmRlc3RpbmF0aW9uKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoIXNlcnZlcigpLmNhbkhhbmRsZVNjaGVtZShs
b2FkZXIub3JpZ2luYWxSZXF1ZXN0KCkudXJsKCkucHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRD
b3B5aW5nKCkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8qIHdvcmtlciA9
IHNlcnZlcigpLmFjdGl2ZVdvcmtlckZyb21SZWdpc3RyYXRpb25JRCgqbG9hZGVyLnBhcmFtZXRl
cnMoKS5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CiAgICAgaWYgKCF3b3Jr
ZXIpIHsKLSAgICAgICAgU1dTRVJWRVJDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SX0lGX0FM
TE9XRUQoInN0YXJ0RmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMgLT4gRGlkTm90SGFuZGxlIGJl
Y2F1c2Ugbm8gYWN0aXZlIHdvcmtlciIsIGZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVu
dGlmaWVyKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBTV1NFUlZFUkNPTk5FQ1RJT05fUkVM
RUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgic3RhcnRGZXRjaDogRGlkTm90SGFuZGxlIGJlY2F1
c2Ugbm8gYWN0aXZlIHdvcmtlciAlcyIsIGxvYWRlci5wYXJhbWV0ZXJzKCkuc2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXItPmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIGF1dG8gc2VydmljZVdvcmtlcklk
ZW50aWZpZXIgPSB3b3JrZXItPmlkZW50aWZpZXIoKTsKIAotICAgIGF1dG8gcnVuU2VydmVyV29y
a2VyQW5kU3RhcnRGZXRjaCA9IFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCB0aGlzLCBm
ZXRjaElkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCByZXF1ZXN0ID0gV1RGTW92
ZShyZXF1ZXN0KSwgb3B0aW9ucyA9IFdURk1vdmUob3B0aW9ucyksIGZvcm1EYXRhID0gV1RGTW92
ZShmb3JtRGF0YSksIHJlZmVycmVyID0gV1RGTW92ZShyZWZlcnJlcildKGJvb2wgc3VjY2Vzcykg
bXV0YWJsZSB7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgaWYgKHdvcmtlci0+c2hvdWxk
U2tpcEZldGNoRXZlbnQoKSkgeworICAgICAgICBhdXRvKiByZWdpc3RyYXRpb24gPSBzZXJ2ZXIo
KS5nZXRSZWdpc3RyYXRpb24od29ya2VyLT5yZWdpc3RyYXRpb25LZXkoKSk7CisgICAgICAgIGlm
IChyZWdpc3RyYXRpb24gJiYgcmVnaXN0cmF0aW9uLT5zaG91bGRTb2Z0VXBkYXRlKGxvYWRlci5w
YXJhbWV0ZXJzKCkub3B0aW9ucykpCisgICAgICAgICAgICByZWdpc3RyYXRpb24tPnNvZnRVcGRh
dGUoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgYXV0byB0YXNrID0g
bWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPihzZXNzaW9uSUQoKSwgbG9hZGVyLCBp
ZGVudGlmaWVyKCksIHdvcmtlci0+aWRlbnRpZmllcigpKTsKKyAgICBzdGFydEZldGNoKCp0YXNr
LCAqd29ya2VyKTsKKyAgICByZXR1cm4gdGFzazsKK30KKwordm9pZCBXZWJTV1NlcnZlckNvbm5l
Y3Rpb246OnN0YXJ0RmV0Y2goU2VydmljZVdvcmtlckZldGNoVGFzayYgdGFzaywgU1dTZXJ2ZXJX
b3JrZXImIHdvcmtlcikKK3sKKyAgICBhdXRvIHJ1blNlcnZlcldvcmtlckFuZFN0YXJ0RmV0Y2gg
PSBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgdGhpcywgdGFzayA9IG1ha2VXZWFrUHRy
KHRhc2spXShib29sIHN1Y2Nlc3MpIG11dGFibGUgeworICAgICAgICBpZiAoIXRhc2spCiAgICAg
ICAgICAgICByZXR1cm47CiAKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykgeworICAgICAgICAgICAg
dGFzay0+ZGlkTm90SGFuZGxlKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwog
ICAgICAgICBpZiAoIXN1Y2Nlc3MpIHsKLSAgICAgICAgICAgIFNXU0VSVkVSQ09OTkVDVElPTl9S
RUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJzdGFydEZldGNoOiBmZXRjaElkZW50aWZpZXI6
ICVzIERpZE5vdEhhbmRsZSBiZWNhdXNlIHdvcmtlciBkaWQgbm90IGJlY29tZSBhY3RpdmF0ZWQi
LCBmZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAg
ICAgICAgbV9jb250ZW50Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNs
aWVudEZldGNoOjpEaWROb3RIYW5kbGUgeyB9LCBmZXRjaElkZW50aWZpZXIpOworICAgICAgICAg
ICAgU1dTRVJWRVJDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoInN0YXJ0
RmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMgRGlkTm90SGFuZGxlIGJlY2F1c2Ugd29ya2VyIGRp
ZCBub3QgYmVjb21lIGFjdGl2YXRlZCIsIHRhc2stPmZldGNoSWRlbnRpZmllcigpLmxvZ2dpbmdT
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHRhc2stPmRpZE5vdEhhbmRsZSgp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byogd29ya2Vy
ID0gc2VydmVyKCkud29ya2VyQnlJRChzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CisgICAgICAg
IGF1dG8qIHdvcmtlciA9IHNlcnZlcigpLndvcmtlckJ5SUQodGFzay0+c2VydmljZVdvcmtlcklk
ZW50aWZpZXIoKSk7CiAgICAgICAgIGlmICghd29ya2VyIHx8IHdvcmtlci0+aGFzVGltZWRPdXRB
bnlGZXRjaFRhc2tzKCkpIHsKLSAgICAgICAgICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0
Y2hJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIHRhc2stPmRpZE5vdEhhbmRsZSgpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgc2VydmVyKCkucnVuU2VydmljZVdv
cmtlcklmTmVjZXNzYXJ5KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBbd2Vha1RoaXMgPSBXVEZN
b3ZlKHdlYWtUaGlzKSwgdGhpcywgZmV0Y2hJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMgPSBXVEZNb3ZlKG9wdGlv
bnMpLCBmb3JtRGF0YSA9IFdURk1vdmUoZm9ybURhdGEpLCByZWZlcnJlciA9IFdURk1vdmUocmVm
ZXJyZXIpLCBzaG91bGRTa2lwRmV0Y2hFdmVudCA9IHdvcmtlci0+c2hvdWxkU2tpcEZldGNoRXZl
bnQoKV0oYXV0byogY29udGV4dENvbm5lY3Rpb24pIHsKLSAgICAgICAgICAgIGlmICghd2Vha1Ro
aXMpCisgICAgICAgIGlmICghd29ya2VyLT5jb250ZXh0Q29ubmVjdGlvbigpKQorICAgICAgICAg
ICAgc2VydmVyKCkuY3JlYXRlQ29udGV4dENvbm5lY3Rpb24od29ya2VyLT5yZWdpc3RyYWJsZURv
bWFpbigpKTsKKworICAgICAgICBzZXJ2ZXIoKS5ydW5TZXJ2aWNlV29ya2VySWZOZWNlc3Nhcnko
dGFzay0+c2VydmljZVdvcmtlcklkZW50aWZpZXIoKSwgW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFr
VGhpcyksIHRoaXMsIHRhc2sgPSBXVEZNb3ZlKHRhc2spXShhdXRvKiBjb250ZXh0Q29ubmVjdGlv
bikgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXRhc2spCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKSB7CisgICAgICAg
ICAgICAgICAgdGFzay0+ZGlkTm90SGFuZGxlKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoY29udGV4dENvbm5lY3Rpb24pIHsKLSAg
ICAgICAgICAgICAgICBTV1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
c3RhcnRGZXRjaDogU3RhcnRpbmcgZmV0Y2ggJXMgdmlhIHNlcnZpY2Ugd29ya2VyICVzIiwgZmV0
Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJj4oKmNvbnRleHRD
b25uZWN0aW9uKS5zdGFydEZldGNoKHNlc3Npb25JRCgpLCAqdGhpcywgZmV0Y2hJZGVudGlmaWVy
LCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9ucywgZm9ybURhdGEsIHJl
ZmVycmVyKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgU1dTRVJWRVJD
T05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoInN0YXJ0RmV0Y2g6IGZldGNo
SWRlbnRpZmllcjogJXMgRGlkTm90SGFuZGxlIGJlY2F1c2UgZmFpbGVkIHRvIHJ1biBzZXJ2aWNl
IHdvcmtlciwgb3Igc2VydmljZSB3b3JrZXIgaGFzIGhhZCB0aW1lZCBvdXQgZmV0Y2ggdGFza3Mi
LCBmZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAg
ICAgICAgICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3Jr
ZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyKTsKKyAgICAg
ICAgICAgIGlmICghY29udGV4dENvbm5lY3Rpb24pIHsKKyAgICAgICAgICAgICAgICBTV1NFUlZF
UkNPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgic3RhcnRGZXRjaDogZmV0
Y2hJZGVudGlmaWVyOiAlcyBEaWROb3RIYW5kbGUgYmVjYXVzZSBmYWlsZWQgdG8gcnVuIHNlcnZp
Y2Ugd29ya2VyIiwgdGFzay0+ZmV0Y2hJZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOworICAgICAgICAgICAgICAgIHRhc2stPmRpZE5vdEhhbmRsZSgpOworICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFNXU0VSVkVSQ09O
TkVDVElPTl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydEZldGNoOiBTdGFydGluZyBmZXRj
aCAlcyB2aWEgc2VydmljZSB3b3JrZXIgJXMiLCB0YXNrLT5mZXRjaElkZW50aWZpZXIoKS5sb2dn
aW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgdGFzay0+c2VydmljZVdvcmtlcklkZW50aWZpZXIo
KS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mPigqY29udGV4dENvbm5lY3Rpb24pLnN0
YXJ0RmV0Y2goKnRhc2spOwogICAgICAgICB9KTsKICAgICB9OwotCi0gICAgaWYgKHdvcmtlci0+
c2hvdWxkU2tpcEZldGNoRXZlbnQoKSkgewotICAgICAgICBtX2NvbnRlbnRDb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZE5vdEhhbmRsZSB7IH0s
IGZldGNoSWRlbnRpZmllcik7Ci0gICAgICAgIGF1dG8qIHJlZ2lzdHJhdGlvbiA9IHNlcnZlcigp
LmdldFJlZ2lzdHJhdGlvbih3b3JrZXItPnJlZ2lzdHJhdGlvbktleSgpKTsKLSAgICAgICAgaWYg
KHJlZ2lzdHJhdGlvbiAmJiByZWdpc3RyYXRpb24tPnNob3VsZFNvZnRVcGRhdGUob3B0aW9ucykp
Ci0gICAgICAgICAgICByZWdpc3RyYXRpb24tPnNvZnRVcGRhdGUoKTsKKyAgICAKKyAgICBpZiAo
d29ya2VyLnN0YXRlKCkgPT0gU2VydmljZVdvcmtlclN0YXRlOjpBY3RpdmF0aW5nKSB7CisgICAg
ICAgIHdvcmtlci53aGVuQWN0aXZhdGVkKFdURk1vdmUocnVuU2VydmVyV29ya2VyQW5kU3RhcnRG
ZXRjaCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKHdvcmtlci0+c3RhdGUo
KSA9PSBTZXJ2aWNlV29ya2VyU3RhdGU6OkFjdGl2YXRpbmcpIHsKLSAgICAgICAgd29ya2VyLT53
aGVuQWN0aXZhdGVkKFdURk1vdmUocnVuU2VydmVyV29ya2VyQW5kU3RhcnRGZXRjaCkpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIEFTU0VSVCh3b3JrZXItPnN0YXRlKCkgPT0gU2Vydmlj
ZVdvcmtlclN0YXRlOjpBY3RpdmF0ZWQpOworICAgIEFTU0VSVCh3b3JrZXIuc3RhdGUoKSA9PSBT
ZXJ2aWNlV29ya2VyU3RhdGU6OkFjdGl2YXRlZCk7CiAgICAgcnVuU2VydmVyV29ya2VyQW5kU3Rh
cnRGZXRjaCh0cnVlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCmlu
ZGV4IDdiZDJhMzNjYjU4YTMwNzcwZTM5OGJkMDQ5ZTUzZTIyNDIzYTNkMjYuLjk2Nzk2OGMyNmJh
MzNlNDU2MTY0OTY3YTA3OTFiMDI5ZWY0ODk3NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmgKQEAgLTUyLDYgKzUyLDggQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnRE
YXRhOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIE5ldHdvcmtQcm9jZXNzOworY2xhc3Mg
TmV0d29ya1Jlc291cmNlTG9hZGVyOworY2xhc3MgU2VydmljZVdvcmtlckZldGNoVGFzazsKIAog
Y2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uIDogcHVibGljIFdlYkNvcmU6OlNXU2VydmVyOjpD
b25uZWN0aW9uLCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdl
UmVjZWl2ZXIgewogcHVibGljOgpAQCAtNjYsNiArNjgsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAg
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3Q7CiAKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
U2VydmljZVdvcmtlckZldGNoVGFzaz4gY3JlYXRlRmV0Y2hUYXNrKE5ldHdvcmtSZXNvdXJjZUxv
YWRlciYpOworCiBwcml2YXRlOgogICAgIC8vIEltcGxlbWVudCBTV1NlcnZlcjo6Q29ubmVjdGlv
biAoTWVzc2FnZXMgdG8gdGhlIGNsaWVudCBXZWJQcm9jZXNzKQogICAgIHZvaWQgcmVqZWN0Sm9i
SW5DbGllbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYklkZW50aWZpZXIsIGNvbnN0IFdlYkNv
cmU6OkV4Y2VwdGlvbkRhdGEmKSBmaW5hbDsKQEAgLTgyLDcgKzg2LDkgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgc2NoZWR1bGVKb2JJblNlcnZlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0
YSYmKTsKIAotICAgIHZvaWQgc3RhcnRGZXRjaChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiYsIElQQzo6Rm9ybURhdGFSZWZl
cmVuY2UmJiwgU3RyaW5nJiYgcmVmZXJyZXIpOworICAgIGJvb2wgaGFuZGxlRmV0Y2goTmV0d29y
a1Jlc291cmNlTG9hZGVyJik7CisKKyAgICB2b2lkIHN0YXJ0RmV0Y2goU2VydmljZVdvcmtlckZl
dGNoVGFzayYsIFdlYkNvcmU6OlNXU2VydmVyV29ya2VyJik7CiAgICAgdm9pZCBjYW5jZWxGZXRj
aChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6
RmV0Y2hJZGVudGlmaWVyKTsKICAgICB2b2lkIGNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9u
c2UoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6
OkZldGNoSWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IGFiMjQ2OGU4Y2UzY2I1YzZkZGZjODI4Y2U3NWJmZDhj
MWY2MjdlZDcuLjNkYTY0ZDk4NzRlYzFkN2Y3ZWIyOWQ0YzdmZGU1NjdhMmVjNTQxYTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAt
MjksMTAgKzI5LDYgQEAgbWVzc2FnZXMgLT4gV2ViU1dTZXJ2ZXJDb25uZWN0aW9uIHsKICAgICBB
ZGRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIoV2ViQ29yZTo6U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBSZW1vdmVTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bklkZW50aWZpZXIgaWRlbnRpZmllcikKIAotICAgIFN0YXJ0RmV0Y2goV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBzdHJ1Y3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25z
IG9wdGlvbnMsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVzdEJvZHksIFN0cmluZyByZWZl
cnJlcikKLSAgICBDYW5jZWxGZXRjaChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6
RmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllcikKLSAgICBDb250aW51ZURpZFJlY2VpdmVG
ZXRjaFJlc3BvbnNlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50
aWZpZXIgZmV0Y2hJZGVudGlmaWVyKQotCiAgICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIo
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRpb24sIHN0cnVjdCBXZWJD
b3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBtZXNzYWdlLCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyT3JDbGllbnRJZGVudGlmaWVyIHNvdXJjZSkKIAogICAgIERpZFJlc29sdmVSZWdpc3RyYXRp
b25Qcm9taXNlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkga2V5KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRl
eCA4NWQ5ZTk1NWFhNDJlYjkyNmIwODNkMjA0MTVkMzQ3YjMyNTVkNjUyLi5mYWQ2ZWU5ZWViN2Q3
YmM5NzAyMjU5YzYxODBlN2MyYjJmMjRkMTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMTUyLDM5ICsxNTIsMTQgQEAgdm9p
ZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnRlcm1pbmF0ZSgpCiAgICAgc2VuZChN
ZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlRlcm1pbmF0ZVByb2Nlc3Mo
KSk7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzdGFydEZldGNo
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBjb250ZW50
Q29ubmVjdGlvbiwgRmV0Y2hJZGVudGlmaWVyIGNvbnRlbnRGZXRjaElkZW50aWZpZXIsIFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSVBD
OjpGb3JtRGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKK3ZvaWQg
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzdGFydEZldGNoKFNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2smIHRhc2spCiB7Ci0gICAgYXV0byBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciA9
IGNvbnRlbnRDb25uZWN0aW9uLmlkZW50aWZpZXIoKTsKLSAgICBhdXRvIGZldGNoSWRlbnRpZmll
ciA9IEZldGNoSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKLQotICAgIGF1dG8gcmVzdWx0ID0gbV9v
bmdvaW5nRmV0Y2hlcy5hZGQoZmV0Y2hJZGVudGlmaWVyLCBtYWtlVW5pcXVlPFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s+KHNlc3Npb25JRCwgY29udGVudENvbm5lY3Rpb24sICp0aGlzLCBjb250ZW50
RmV0Y2hJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgbV9uZXR3b3JrUHJvY2Vz
cy0+c2VydmljZVdvcmtlckZldGNoVGltZW91dCgpKSk7Ci0KLSAgICBBU1NFUlQoIW1fb25nb2lu
Z0ZldGNoSWRlbnRpZmllcnMuY29udGFpbnMoeyBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwg
Y29udGVudEZldGNoSWRlbnRpZmllciB9KSk7Ci0gICAgbV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVy
cy5hZGQoeyBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29udGVudEZldGNoSWRlbnRpZmll
ciB9LCBmZXRjaElkZW50aWZpZXIpOwotCi0gICAgaWYgKCFzZW5kKE1lc3NhZ2VzOjpXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U3RhcnRGZXRjaCB7IHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyLCByZXF1ZXN0
LCBvcHRpb25zLCBkYXRhLCByZWZlcnJlciB9KSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZS0+ZGlkTm90SGFuZGxlKCk7CisgICAgdGFzay5zdGFydCgqdGhpcyk7CiB9CiAKLXZvaWQg
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjYW5jZWxGZXRjaChXZWJDb3JlOjpTV1Nl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBGZXRj
aElkZW50aWZpZXIgY29udGVudEZldGNoSWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZp
ZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIpCit2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6Y29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZShXZWJDb3JlOjpTV1NlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCBGZXRjaElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKQogewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX29uZ29pbmdGZXRjaElkZW50aWZpZXJz
LmZpbmQoeyBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29udGVudEZldGNoSWRlbnRpZmll
ciB9KTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVycy5lbmQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb246OkNhbmNlbEZldGNoIHsgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIs
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBpdGVyYXRvci0+dmFsdWUgfSk7Ci0KLSAgICBtX29u
Z29pbmdGZXRjaGVzLnJlbW92ZShpdGVyYXRvci0+dmFsdWUpOwotICAgIG1fb25nb2luZ0ZldGNo
SWRlbnRpZmllcnMucmVtb3ZlKGl0ZXJhdG9yKTsKLX0KLQotdm9pZCBXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246OmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoV2ViQ29yZTo6
U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwg
RmV0Y2hJZGVudGlmaWVyIGNvbnRlbnRGZXRjaElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQotewotICAgIGF1dG8gaXRlcmF0b3IgPSBt
X29uZ29pbmdGZXRjaElkZW50aWZpZXJzLmZpbmQoeyBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciwgY29udGVudEZldGNoSWRlbnRpZmllciB9KTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vbmdv
aW5nRmV0Y2hJZGVudGlmaWVycy5lbmQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIHNl
bmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpDb250aW51ZURpZFJl
Y2VpdmVGZXRjaFJlc3BvbnNlIHsgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBpdGVyYXRvci0+dmFsdWUgfSk7CisgICAgLy8gRklYTUU6IFRvIGJl
IGRvbmUgdGhyb3VnaCBOZXR3b3JrUmVzb3VyY2VMb2FkZXIKIH0KIAogdm9pZCBXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb246OmRpZFJlY2VpdmVGZXRjaFRhc2tNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQpAQCAtMTkyLDUxICsx
NjcsNDEgQEAgdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmRpZFJlY2VpdmVG
ZXRjaFRhc2tNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYKICAgICBhdXRvIGl0ZXJhdG9yID0gbV9v
bmdvaW5nRmV0Y2hlcy5maW5kKG1ha2VPYmplY3RJZGVudGlmaWVyPEZldGNoSWRlbnRpZmllclR5
cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSk7CiAgICAgaWYgKGl0ZXJhdG9yID09IG1fb25n
b2luZ0ZldGNoZXMuZW5kKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBib29sIHNob3Vs
ZFJlbW92ZSA9IGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6U2VydmljZVdvcmtl
ckZldGNoVGFzazo6RGlkRmFpbDo6bmFtZSgpCi0gICAgICAgIHx8IGRlY29kZXIubWVzc2FnZU5h
bWUoKSA9PSBNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkTm90SGFuZGxlOjpu
YW1lKCkKLSAgICAgICAgfHwgZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRGaW5pc2g6Om5hbWUoKQotICAgICAgICB8fCBkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJl
Y2VpdmVSZWRpcmVjdFJlc3BvbnNlOjpuYW1lKCk7CiAKICAgICBpdGVyYXRvci0+dmFsdWUtPmRp
ZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwotCi0gICAgaWYgKHNob3VsZFJl
bW92ZSkgewotICAgICAgICBBU1NFUlQobV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVycy5jb250YWlu
cyhpdGVyYXRvci0+dmFsdWUtPmlkZW50aWZpZXIoKSkpOwotICAgICAgICBtX29uZ29pbmdGZXRj
aElkZW50aWZpZXJzLnJlbW92ZShpdGVyYXRvci0+dmFsdWUtPmlkZW50aWZpZXIoKSk7Ci0gICAg
ICAgIG1fb25nb2luZ0ZldGNoZXMucmVtb3ZlKGl0ZXJhdG9yKTsKLSAgICB9CiB9CiAKLXZvaWQg
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmZXRjaFRhc2tUaW1lZE91dChTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrJiB0YXNrKQordm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OnJlZ2lzdGVyRmV0Y2goU2VydmljZVdvcmtlckZldGNoVGFzayYgdGFzaykKIHsKLSAgICBB
U1NFUlQobV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVycy5jb250YWlucyh0YXNrLmlkZW50aWZpZXIo
KSkpOwotICAgIGF1dG8gdGFrZW5JZGVudGlmaWVyID0gbV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVy
cy50YWtlKHRhc2suaWRlbnRpZmllcigpKTsKKyAgICBBU1NFUlQoIW1fb25nb2luZ0ZldGNoZXMu
Y29udGFpbnModGFzay5mZXRjaElkZW50aWZpZXIoKSkpOworICAgIG1fb25nb2luZ0ZldGNoZXMu
YWRkKHRhc2suZmV0Y2hJZGVudGlmaWVyKCksIG1ha2VXZWFrUHRyKHRhc2spKTsKK30KIAotICAg
IEFTU0VSVChtX29uZ29pbmdGZXRjaGVzLmNvbnRhaW5zKHRha2VuSWRlbnRpZmllcikpOwotICAg
IGF1dG8gdGFrZW5UYXNrID0gbV9vbmdvaW5nRmV0Y2hlcy50YWtlKHRha2VuSWRlbnRpZmllcik7
Ci0gICAgQVNTRVJUKHRha2VuVGFzayk7Ci0gICAgQVNTRVJUKHRha2VuVGFzay5nZXQoKSA9PSAm
dGFzayk7Cit2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6dW5yZWdpc3RlckZl
dGNoKFNlcnZpY2VXb3JrZXJGZXRjaFRhc2smIHRhc2spCit7CisgICAgQVNTRVJUKG1fb25nb2lu
Z0ZldGNoZXMuY29udGFpbnModGFzay5mZXRjaElkZW50aWZpZXIoKSkpOworICAgIG1fb25nb2lu
Z0ZldGNoZXMucmVtb3ZlKHRhc2suZmV0Y2hJZGVudGlmaWVyKCkpOworfQogCi0gICAgLy8gR2F0
aGVyIGFsbCBvdGhlciBmZXRjaGVzIGluIHRoaXMgc2VydmljZSB3b3JrZXIKLSAgICBWZWN0b3I8
U2VydmljZVdvcmtlckZldGNoVGFzayo+IG90aGVyRmV0Y2hlczsKK3ZvaWQgV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjpmZXRjaFRhc2tUaW1lZE91dChTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKK3sKKyAgICAvLyBHYXRoZXIgYWxsIGZldGNo
ZXMgaW4gdGhpcyBzZXJ2aWNlIHdvcmtlcgorICAgIFZlY3RvcjxTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrKj4gZmV0Y2hlczsKICAgICBmb3IgKGF1dG8mIGZldGNoVGFzayA6IG1fb25nb2luZ0ZldGNo
ZXMudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKGZldGNoVGFzay0+c2VydmljZVdvcmtlcklkZW50
aWZpZXIoKSA9PSB0YXNrLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICBv
dGhlckZldGNoZXMuYXBwZW5kKGZldGNoVGFzay5nZXQoKSk7CisgICAgICAgIGlmIChmZXRjaFRh
c2stPnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCkgPT0gc2VydmljZVdvcmtlcklkZW50aWZpZXIp
CisgICAgICAgICAgICBmZXRjaGVzLmFwcGVuZChmZXRjaFRhc2suZ2V0KCkpOwogICAgIH0KIAog
ICAgIC8vIFNpZ25hbCBsb2FkIGZhaWx1cmUgZm9yIHRoZW0KLSAgICBmb3IgKGF1dG8qIGZldGNo
VGFzayA6IG90aGVyRmV0Y2hlcykgeworICAgIGZvciAoYXV0byogZmV0Y2hUYXNrIDogZmV0Y2hl
cykgewogICAgICAgICBpZiAoZmV0Y2hUYXNrLT53YXNIYW5kbGVkKCkpCiAgICAgICAgICAgICBm
ZXRjaFRhc2stPmZhaWwoeyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB7IH0sICJTZXJ2
aWNlIFdvcmtlciBjb250ZXh0IGNsb3NlZCJfcyB9KTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgZmV0Y2hUYXNrLT5kaWROb3RIYW5kbGUoKTsKLQotICAgICAgICBhdXRvIGlkZW50aWZpZXIg
PSBtX29uZ29pbmdGZXRjaElkZW50aWZpZXJzLnRha2UoZmV0Y2hUYXNrLT5pZGVudGlmaWVyKCkp
OwotICAgICAgICBtX29uZ29pbmdGZXRjaGVzLnJlbW92ZShpZGVudGlmaWVyKTsKICAgICB9CiAK
ICAgICBpZiAobV9zZXJ2ZXIpIHsKLSAgICAgICAgaWYgKGF1dG8qIHdvcmtlciA9IG1fc2VydmVy
LT53b3JrZXJCeUlEKHRhc2suc2VydmljZVdvcmtlcklkZW50aWZpZXIoKSkpIHsKKyAgICAgICAg
aWYgKGF1dG8qIHdvcmtlciA9IG1fc2VydmVyLT53b3JrZXJCeUlEKHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKSkgewogICAgICAgICAgICAgd29ya2VyLT5zZXRIYXNUaW1lZE91dEFueUZldGNoVGFz
a3MoKTsKICAgICAgICAgICAgIGlmICh3b3JrZXItPmlzUnVubmluZygpKQogICAgICAgICAgICAg
ICAgIG1fc2VydmVyLT5zeW5jVGVybWluYXRlV29ya2VyKCp3b3JrZXIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4IGUzMGYzNDFlMTdi
ZTE4NjA4Y2VlYzlhMjAzMmJkYTAyOWE0Y2E1ZjYuLjdlZDMxNDhmNjdlODM4NDJlNDg4MTllYzU3
Mzc2ZDI1MGEzNzY5NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmgKQEAgLTUyLDIwICs1MiwxOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNs
YXNzIE5ldHdvcmtQcm9jZXNzOwogY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOwogCi1jbGFz
cyBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gOiBwdWJsaWMgV2ViQ29yZTo6U1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bj4sIHB1YmxpYyBXZWJDb3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24sIHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6
CiAgICAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgV2ViQ29yZTo6U1dTZXJ2ZXImLCBSZWY8SVBDOjpD
b25uZWN0aW9uPiYmKTsKICAgICB+V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCk7CiAK
LSAgICBJUEM6OkNvbm5lY3Rpb24qIGlwY0Nvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lw
Y0Nvbm5lY3Rpb24ucHRyKCk7IH0KKyAgICBJUEM6OkNvbm5lY3Rpb24mIGlwY0Nvbm5lY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX2lwY0Nvbm5lY3Rpb24uZ2V0KCk7IH0KIAogICAgIC8vIElQQzo6
TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKIAogICAgIHZvaWQgdGVybWluYXRlKCk7CiAKLSAg
ICB2b2lkIHN0YXJ0RmV0Y2goUEFMOjpTZXNzaW9uSUQsIFdlYlNXU2VydmVyQ29ubmVjdGlvbiYs
IFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OkZldGNo
T3B0aW9ucyYsIGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmKTsK
LSAgICB2b2lkIGNhbmNlbEZldGNoKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIpOworICAgIHZvaWQgc3RhcnRGZXRjaChTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrJik7CiAg
ICAgdm9pZCBjb250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKFdlYkNvcmU6OlNXU2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlRmV0Y2hUYXNr
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKQEAgLTczLDcgKzcyLDEw
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRocm90dGxlU3RhdGUoYm9vbCBpc1Rocm90dGxlYWJs
ZSk7CiAgICAgYm9vbCBpc1Rocm90dGxlYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNUaHJvdHRs
ZWFibGU7IH0KIAotICAgIHZvaWQgZmV0Y2hUYXNrVGltZWRPdXQoU2VydmljZVdvcmtlckZldGNo
VGFzayYpOworICAgIHZvaWQgZmV0Y2hUYXNrVGltZWRPdXQoV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIpOworCisgICAgdm9pZCByZWdpc3RlckZldGNoKFNlcnZpY2VXb3JrZXJGZXRj
aFRhc2smKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJGZXRjaChTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Jik7CiAKIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyCkBAIC05OCwxMiArMTAw
LDEzIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNvbm5lY3Rpb25DbG9zZWQoKTsKIAorICAgIHZv
aWQgdGltZW91dFRpbWVyRmlyZWQoKTsKKwogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1faXBj
Q29ubmVjdGlvbjsKICAgICBSZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29ya1Byb2Nlc3M7CiAg
ICAgV2Vha1B0cjxXZWJDb3JlOjpTV1NlcnZlcj4gbV9zZXJ2ZXI7CiAKLSAgICBIYXNoTWFwPFNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s6OklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmll
cj4gbV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVyczsKLSAgICBIYXNoTWFwPFdlYkNvcmU6OkZldGNo
SWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+PiBtX29u
Z29pbmdGZXRjaGVzOworICAgIEhhc2hNYXA8V2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyLCBXZWFr
UHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+PiBtX29uZ29pbmdGZXRjaGVzOwogICAgIGJvb2wg
bV9pc1Rocm90dGxlYWJsZSB7IHRydWUgfTsKIH07IC8vIGNsYXNzIFdlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA5MzZjMGNmNTVhZDAzZmJiYjNhZGM4NDM5
MjAxM2E5MGUzNDhiNWVkLi42MzI3OGIxYmJlZTA4YTcyNTg5YjQzMzdkNTgzYmVmMzczZTIyMmFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKQEAgLTUyNSw3ICs1MjUsNiBAQCBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwIEBuby11bmlmeQogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcCBAbm8tdW5pZnkKIFdlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAgQG5vLXVuaWZ5CiAKLVdlYlBy
b2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guY3BwCiBXZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXT3Jp
Z2luVGFibGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA2MzhlYmVkNTg1M2ZkN2FkNDc0OTkzNTEzZTZhZmEwMWIwODcwYjdiLi45
YTk1NzNiNjU3MjI0NDg4MmEzOTYxNzZlNmRmNjBiNWQ3ZTdhYjU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExNDMsNyArMTE0Myw2
IEBACiAJCTVDRTkxMjEyMjI5M0MyNzgwMDVCRUM3OCAvKiBBdXhpbGlhcnlQcm9jZXNzTWFpbi5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0U5MTIw
RjIyOTNDMjVGMDA1QkVDNzggLyogQXV4aWxpYXJ5UHJvY2Vzc01haW4uY3BwICovOyB9OwogCQk1
Q0U5MTIxMzIyOTNDMjc5MDA1QkVDNzggLyogQXV4aWxpYXJ5UHJvY2Vzc01haW4uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNFOTEyMEYyMjkzQzI1
RjAwNUJFQzc4IC8qIEF1eGlsaWFyeVByb2Nlc3NNYWluLmNwcCAqLzsgfTsKIAkJNUNFOTEyMTQy
MjkzQzI4MDAwNUJFQzc4IC8qIFdLTWFpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNUNFOTEyMEIyMjkzQzFFMDAwNUJFQzc4IC8qIFdLTWFpbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTYxN0E1MkQ4
MUY0M0E5REEwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjE3
QTUyRDcxRjQzQTlCNjAwRENEQzBBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi87IH07CiAJCTYzMTA4Rjk2MUY5NjcxOUMwMEEwREI4NCAvKiBfV0tBcHBs
aWNhdGlvbk1hbmlmZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2MzEwOEY5NDFGOTY3MTlDMDBBMERCODQgLyogX1dLQXBwbGljYXRpb25NYW5pZmVz
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTYz
MTA4Rjk5MUY5NjcxRjcwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzMTA4Rjk4
MUY5NjcxRjcwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwuaCAqLzsg
fTsKIAkJNjM0ODQyNTExRkIyNkU3MTAwOTQ2RTNDIC8qIEFQSUFwcGxpY2F0aW9uTWFuaWZlc3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzNDg0MjRG
MUZCMjZFNzEwMDk0NkUzQyAvKiBBUElBcHBsaWNhdGlvbk1hbmlmZXN0LmggKi87IH07CkBAIC0z
MTI5LDkgKzMxMjgsNiBAQAogCQk0MTMwNzVBNjFERTg1RUU3MDAzOUVDNjkgLyogTGliV2ViUlRD
U29ja2V0RmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJXZWJS
VENTb2NrZXRGYWN0b3J5Lmg7IHBhdGggPSBOZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRG
YWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzA3NUE3MURFODVFRTcw
MDM5RUM2OSAvKiBMaWJXZWJSVENQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IGxpbmVFbmRpbmcgPSAwOyBuYW1lID0gTGliV2ViUlRDUHJvdmlkZXIuY3BwOyBwYXRo
ID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLmNw
cDsgfTsKIAkJNDEzMDc1QTgxREU4NUVFNzAwMzlFQzY5IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbGluZUVuZGluZyA9IDA7IG5hbWUgPSBMaWJXZWJS
VENQcm92aWRlci5oOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVy
ID0geGNvZGUubGFuZy5vYmpjcHA7IH07Ci0JCTQxMzFGM0NFMUY5NkE0OTUwMDU5OTk1QSAvKiBT
ZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2VydmljZVdvcmtlckNsaWVudEZldGNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTQxMzFGM0NGMUY5NkE5MzYwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gu
bWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2VydmljZVdvcmtlckNsaWVudEZl
dGNoLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTMxRjNEMDFG
OTZCQ0M4MDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzFGM0UwMUY5ODcxMkMwMDU5OTk1QSAv
KiBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTM1RkJDRjFGNEZCN0YyMDA3NEM0N0IgLyog
Q2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxMzVGQkQwMUY0RkI3RjIwMDc0QzQ3QiAvKiBDYWNoZVN0b3JhZ2VFbmdp
bmVDYWNoZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVTdG9yYWdl
RW5naW5lQ2FjaGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNzA4LDcgKzM3
MDQsNiBAQAogCQk1Q0VBQkEyQjIzMzMyNTE0MDA3OTc3OTcgLyogTGVnYWN5R2xvYmFsU2V0dGlu
Z3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGVnYWN5R2xvYmFs
U2V0dGluZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0ZFQ0IwMzFFMUVE
MUM4MDBGODg1MDQgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEQUQ3M0YxMTE2RkY5MEMwMEVFNTM5
NiAvKiBCYXNlVGFyZ2V0LnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9
IEJhc2VUYXJnZXQueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTYxN0E1
MkQ3MUY0M0E5QjYwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU2VydmljZVdv
cmtlckNsaWVudEZldGNoTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291
cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNjMxMDhGOTQxRjk2NzE5QzAwQTBE
Qjg0IC8qIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLQXBwbGlj
YXRpb25NYW5pZmVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2MzEwOEY5NTFG
OTY3MTlDMDBBMERCODQgLyogX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTYzMTA4Rjk4MUY5NjcxRjcwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlm
ZXN0SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLQXBwbGljYXRpb25NYW5pZmVzdEludGVy
bmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02ODM5LDkgKzY4MzQsNiBAQAog
CQk1MTE4RTk5ODFGMjk1MjU5MDAzRUY5RjUgLyogU3RvcmFnZSAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJNDEzMUYzRDAxRjk2QkNDODAwNTk5OTVBIC8q
IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5jcHAgKi8sCi0JCQkJNDEzMUYzQ0UxRjk2QTQ5NTAw
NTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5oICovLAotCQkJCTQxMzFGM0NGMUY5
NkE5MzYwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gubWVzc2FnZXMuaW4gKi8s
CiAJCQkJNDEzMUYzRTAxRjk4NzEyQzAwNTk5OTVBIC8qIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2tDbGllbnQuY3BwICovLAogCQkJCTQxOUFDRjlCMUY5ODFEMjYwMDlGMUE4MyAvKiBXZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmggKi8sCiAJCQkJNTFCRUI2MjkxRjNBNUFDRDAwNTAy
OUI5IC8qIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAgKi8sCkBAIC04ODc0LDcgKzg4NjYs
NiBAQAogCQkJCTFCQkJFNDlFMTlCNjZDNTMwMDZCN0Q4MSAvKiBSZW1vdGVXZWJJbnNwZWN0b3JV
SU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJRTE4RTY5MTMxNjlCNjY3QjAwOUI2NjcwIC8q
IFNlY0l0ZW1TaGltUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCUUxOEU2OTE0MTY5
QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5TWVzc2FnZXMuaCAqLywKLQkJCQk2MTdB
NTJENzFGNDNBOUI2MDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLywKIAkJCQkyREU2OTQzQjE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWdu
aWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMkRFNjk0M0Mx
OEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5o
ICovLAogCQkJCTFBMzM0REVCMTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3Nh
Z2VSZWNlaXZlci5jcHAgKi8sCkBAIC0xMTMxMyw3ICsxMTMwNCw2IEBACiAJCQkJQTU1QkE4MjYx
QkEyNUNGRDAwN0NEMzNEIC8qIFJlbW90ZVdlYkluc3BlY3RvclByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFCQkJFNEEwMTlCNjZDNTMwMDZCN0Q4MSAvKiBSZW1v
dGVXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlF
MThFNjkxNzE2OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk2MTdBNTJEODFGNDNBOURBMDBEQ0RDMEEgLyogU2Vy
dmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTQxREU3QzZDMjIyNzhGMUUwMDUzMkI2NSAvKiBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzg3MjEyQjZBQjEwMEY0OTNGRCAvKiBTaGFyZWFi
bGVCaXRtYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRFNjk0M0QxOEJEMkE2ODAwNUMxNUU1
IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCBmMGI0ZmRmYTZhMzExNzA0
OTk2ZDc4NWExYzk2Mjc3MzYwMTE5ODAxLi4zMDgzMzU3NzMwMWQwZjI2NDUzMmI0YTMyYmE4NmVm
NmVmNWI5YjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTI5LDcgKzI5LDYgQEAK
ICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDTmV0d29yay5o
IgogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKLSNp
bmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlN0
b3JhZ2VBcmVhTWFwLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIldlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgiCkBAIC0xNDEsMTAgKzE0MCw2IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIElQCiAgICAgICAgICAgICBtX3N3Q29ubmVjdGlvbi0+ZGlkUmVj
ZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpTZXJ2
aWNlV29ya2VyQ2xpZW50RmV0Y2g6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewotICAgICAgICBX
ZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVTZXJ2aWNlV29y
a2VyQ2xpZW50RmV0Y2hNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNz
YWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSkgewogICAgICAgICBBU1NFUlQoU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVj
dGlvbigpKTsKICAgICAgICAgaWYgKGF1dG8qIGNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiA9IFNX
Q29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRl
eCBhZmEzYzcyNDE0OGRhMTI3NWEyNzcwZGZjN2U4M2Q3Mjk2ZGE1MDQ0Li5hOWZjMDRkNTM4ZmVi
OWI3ZjRkOTRlNjQ4MjEzM2JmOTI1ZjNkNDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC0yMTUsNDEgKzIx
NSwyMCBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2Fk
ZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCi0gICAgaWYgKCEhcmVzb3VyY2VMb2FkZXIub3B0aW9ucygpLnNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKQotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIHNjaGVkdWxlZCB0aHJvdWdoIFNlcnZpY2VX
b3JrZXIgb3IgTmV0d29yayBQcm9jZXNzIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVz
b3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgp
LCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRC50b1VJbnQ2NCgpLCBpZGVudGlmaWVyKTsKKyAg
ICBhdXRvIHVybCA9IHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS51cmwoKTsKKyAgICBhdXRvKiBk
YXRhID0gdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCk7CisgICAgaWYgKGRhdGEpCisgICAgICAg
IHVybC5zdHJpbmcoKTsKIAotICAgIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9u
KCkuaGFuZGxlRmV0Y2gocmVzb3VyY2VMb2FkZXIsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBT
VG9IVFRQUmVkaXJlY3QsIFt0aGlzLCB0cmFja2luZ1BhcmFtZXRlcnMsIGlkZW50aWZpZXIsIHNo
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIG1heGltdW1CdWZmZXJpbmdU
aW1lID0gbWF4aW11bUJ1ZmZlcmluZ1RpbWUocmVzb3VyY2UpLCByZXNvdXJjZUxvYWRlciA9IG1h
a2VSZWYocmVzb3VyY2VMb2FkZXIpXSAoU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpSZXN1bHQg
cmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKHJlc3VsdCAhPSBTZXJ2aWNlV29ya2VyQ2xp
ZW50RmV0Y2g6OlJlc3VsdDo6VW5oYW5kbGVkKSB7Ci0gICAgICAgICAgICBMT0coTmV0d29ya1Nj
aGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwg
dXJsICclcycgd2lsbCBiZSBzY2hlZHVsZWQgdGhyb3VnaCBTZXJ2aWNlV29ya2VyIGhhbmRsZSBm
ZXRjaCBhbGdvcml0aG0iLCByZXNvdXJjZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCku
ZGF0YSgpKTsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInNjaGVkdWxlTG9h
ZDogVVJMIHdpbGwgYmUgc2NoZWR1bGVkIHRocm91Z2ggU2VydmljZVdvcmtlciBoYW5kbGUgZmV0
Y2ggYWxnb3JpdGhtIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIt
PmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQ
YXJhbWV0ZXJzLmZyYW1lSUQudG9VSW50NjQoKSwgaWRlbnRpZmllcik7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHJlc291cmNlTG9hZGVyLT5vcHRpb25zKCku
c2VydmljZVdvcmtlcnNNb2RlID09IFNlcnZpY2VXb3JrZXJzTW9kZTo6T25seSkgewotICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgic2NoZWR1bGVMb2FkOiB1bmFibGUg
dG8gc2NoZWR1bGUgVVJMIHRocm91Z2ggU2VydmljZVdvcmtlciBoYW5kbGUgZmV0Y2ggYWxnb3Jp
dGhtIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2
NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXItPmZyYW1lKCks
IHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJz
LmZyYW1lSUQudG9VSW50NjQoKSwgaWRlbnRpZmllcik7Ci0gICAgICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKFtyZXNvdXJjZUxvYWRlciA9IFdURk1vdmUocmVzb3VyY2VMb2FkZXIpXSB7Ci0gICAg
ICAgICAgICAgICAgYXV0byBlcnJvciA9IGludGVybmFsRXJyb3IocmVzb3VyY2VMb2FkZXItPnJl
cXVlc3QoKS51cmwoKSk7Ci0gICAgICAgICAgICAgICAgZXJyb3Iuc2V0VHlwZShSZXNvdXJjZUVy
cm9yOjpUeXBlOjpDYW5jZWxsYXRpb24pOwotICAgICAgICAgICAgICAgIHJlc291cmNlTG9hZGVy
LT5kaWRGYWlsKGVycm9yKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJMb2Fk
ZXJTdHJhdGVneSgpLnRyeUxvYWRpbmdVc2luZ1VSTFNjaGVtZUhhbmRsZXIocmVzb3VyY2VMb2Fk
ZXIpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzY2hlZHVsZUxvYWQ6
IFVSTCB3aWxsIGJlIHNjaGVkdWxlZCB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyAoZnJhbWUgPSAl
cCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLT5mcmFtZSgpLCB0cmFja2luZ1BhcmFt
ZXRlcnMucGFnZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELnRvVUlu
dDY0KCksIGlkZW50aWZpZXIpOwotICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
d2ViTG9hZGVyU3RyYXRlZ3koKS5zY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MocmVzb3Vy
Y2VMb2FkZXIuZ2V0KCksIHJlc291cmNlTG9hZGVyLT5yZXF1ZXN0KCksIHRyYWNraW5nUGFyYW1l
dGVycywgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgbWF4aW11bUJ1
ZmZlcmluZ1RpbWUpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic2NoZWR1bGVMb2FkOiBVUkwgbm90IGhhbmRsZWQgYnkg
YW55IGhhbmRsZXJzIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIt
PmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQ
YXJhbWV0ZXJzLmZyYW1lSUQudG9VSW50NjQoKSwgaWRlbnRpZmllcik7Ci0gICAgfSk7CisgICAg
aWYgKChyZXNvdXJjZUxvYWRlci5vcHRpb25zKCkuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIgJiYgcmVzb3VyY2VMb2FkZXIub3B0aW9ucygpLnNlcnZpY2VXb3JrZXJzTW9kZSAh
PSBTZXJ2aWNlV29ya2Vyc01vZGU6Ok5vbmUpIHx8ICF0cnlMb2FkaW5nVXNpbmdVUkxTY2hlbWVI
YW5kbGVyKHJlc291cmNlTG9hZGVyKSkgewogI2Vsc2UKICAgICBpZiAoIXRyeUxvYWRpbmdVc2lu
Z1VSTFNjaGVtZUhhbmRsZXIocmVzb3VyY2VMb2FkZXIpKSB7CisjZW5kaWYKICAgICAgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRCgic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBzY2hlZHVsZWQg
d2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAi
LCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNv
dXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCks
IHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELnRvVUludDY0KCksIGlkZW50aWZpZXIpOwogICAg
ICAgICBzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MocmVzb3VyY2VMb2FkZXIsIHJlc291
cmNlTG9hZGVyLnJlcXVlc3QoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLCBzaG91bGRDbGVhclJlZmVy
cmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBtYXhpbXVtQnVmZmVyaW5nVGltZShyZXNvdXJjZSkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInNj
aGVkdWxlTG9hZDogVVJMIG5vdCBoYW5kbGVkIGJ5IGFueSBoYW5kbGVycyAoZnJhbWUgPSAlcCwg
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9
ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVy
cy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQudG9VSW50NjQo
KSwgaWRlbnRpZmllcik7Ci0jZW5kaWYKIH0KIAogYm9vbCBXZWJMb2FkZXJTdHJhdGVneTo6dHJ5
TG9hZGluZ1VzaW5nVVJMU2NoZW1lSGFuZGxlcihSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2Fk
ZXIpCkBAIC0yNzEsNiArMjUwLDEwIEBAIGJvb2wgV2ViTG9hZGVyU3RyYXRlZ3k6OnRyeUxvYWRp
bmdVc2luZ1VSTFNjaGVtZUhhbmRsZXIoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlCiAKIHZvaWQg
V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhSZXNvdXJj
ZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgV2ViUmVzb3VyY2VMb2FkZXI6OlRyYWNraW5nUGFyYW1ldGVycyYgdHJhY2tpbmdQYXJh
bWV0ZXJzLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFNl
Y29uZHMgbWF4aW11bUJ1ZmZlcmluZ1RpbWUpCiB7CisgICAgYXV0byogd2ViRnJhbWVMb2FkZXJD
bGllbnQgPSB0b1dlYkZyYW1lTG9hZGVyQ2xpZW50KHJlc291cmNlTG9hZGVyLmZyYW1lTG9hZGVy
KCktPmNsaWVudCgpKTsKKyAgICBhdXRvKiB3ZWJGcmFtZSA9IHdlYkZyYW1lTG9hZGVyQ2xpZW50
ID8gd2ViRnJhbWVMb2FkZXJDbGllbnQtPndlYkZyYW1lKCkgOiBudWxscHRyOworICAgIGF1dG8q
IHdlYlBhZ2UgPSB3ZWJGcmFtZSA/IHdlYkZyYW1lLT5wYWdlKCkgOiBudWxscHRyOworCiAgICAg
UmVzb3VyY2VMb2FkSWRlbnRpZmllciBpZGVudGlmaWVyID0gcmVzb3VyY2VMb2FkZXIuaWRlbnRp
ZmllcigpOwogICAgIEFTU0VSVChpZGVudGlmaWVyKTsKIApAQCAtMzAyLDYgKzI4NSwxNyBAQCB2
b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MoUmVz
b3VyY2VMb2FkZXImIHJlc291cmNlTAogICAgIGxvYWRQYXJhbWV0ZXJzLnByZWZsaWdodFBvbGlj
eSA9IHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5wcmVmbGlnaHRQb2xpY3k7CiAgICAgbG9hZFBh
cmFtZXRlcnMuaXNIVFRQU1VwZ3JhZGVFbmFibGVkID0gcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSA/
IHJlc291cmNlTG9hZGVyLmZyYW1lKCktPnNldHRpbmdzKCkuSFRUUFNVcGdyYWRlRW5hYmxlZCgp
IDogZmFsc2U7CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgLy8gSW4gY2FzZSBv
ZiBVUkwgc2NoZW1lIGhhbmRsZXIsIHdlIHdpbGwgdHJ5IHRvIGxvYWQgb24gc2VydmljZSB3b3Jr
ZXJzIGFuZCBpZiB1bmhhbmRsZWQsIGZhbGxiYWNrIHRvIFVSTCBzY2hlbWUgaGFuZGxlci4KKyAg
ICBpZiAocmVzb3VyY2VMb2FkZXIub3B0aW9ucygpLnNlcnZpY2VXb3JrZXJzTW9kZSA9PSBTZXJ2
aWNlV29ya2Vyc01vZGU6OkFsbCAmJiB3ZWJQYWdlICYmICB3ZWJQYWdlLT51cmxTY2hlbWVIYW5k
bGVyRm9yU2NoZW1lKHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS51cmwoKS5wcm90b2NvbCgpLnRv
U3RyaW5nV2l0aG91dENvcHlpbmcoKSkpCisgICAgICAgIGxvYWRQYXJhbWV0ZXJzLnNlcnZpY2VX
b3JrZXJzTW9kZSA9IFNlcnZpY2VXb3JrZXJzTW9kZTo6T25seTsKKyAgICBlbHNlCisgICAgICAg
IGxvYWRQYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJzTW9kZSA9IHJlc291cmNlTG9hZGVyLm9wdGlv
bnMoKS5zZXJ2aWNlV29ya2Vyc01vZGU7CisKKyAgICBsb2FkUGFyYW1ldGVycy5zZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciA9IHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5zZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcjsKKyAgICBsb2FkUGFyYW1ldGVycy5odHRw
SGVhZGVyc1RvS2VlcCA9IHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5odHRwSGVhZGVyc1RvS2Vl
cDsKKyNlbmRpZgorCiAgICAgYXV0byogZG9jdW1lbnQgPSByZXNvdXJjZUxvYWRlci5mcmFtZSgp
ID8gcmVzb3VyY2VMb2FkZXIuZnJhbWUoKS0+ZG9jdW1lbnQoKSA6IG51bGxwdHI7CiAgICAgaWYg
KHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5jc3BSZXNwb25zZUhlYWRlcnMpCiAgICAgICAgIGxv
YWRQYXJhbWV0ZXJzLmNzcFJlc3BvbnNlSGVhZGVycyA9IHJlc291cmNlTG9hZGVyLm9wdGlvbnMo
KS5jc3BSZXNwb25zZUhlYWRlcnM7CkBAIC00MzgsMTEgKzQzMiw2IEBAIHZvaWQgV2ViTG9hZGVy
U3RyYXRlZ3k6OnJlbW92ZShSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIpCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKFdl
YlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuY2FuY2VsRmV0Y2gobWFrZU9iamVj
dElkZW50aWZpZXI8RmV0Y2hJZGVudGlmaWVyVHlwZT4oaWRlbnRpZmllcikpKQotICAgICAgICBy
ZXR1cm47Ci0jZW5kaWYKLQogICAgIFJlZlB0cjxXZWJSZXNvdXJjZUxvYWRlcj4gbG9hZGVyID0g
bV93ZWJSZXNvdXJjZUxvYWRlcnMudGFrZShpZGVudGlmaWVyKTsKICAgICAvLyBMb2FkZXIgbWF5
IG5vdCBiZSByZWdpc3RlcmVkIGlmIHdlIGNyZWF0ZWQgaXQsIGJ1dCBoYXZlbid0IHNjaGVkdWxl
ZCB5ZXQgKGEgYnVuZGxlIGNsaWVudCBjYW4gZGVjaWRlIHRvIGNhbmNlbCBzdWNoIHJlcXVlc3Qg
dmlhIHdpbGxTZW5kUmVxdWVzdCkuCiAgICAgaWYgKCFsb2FkZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXgg
YTM5MjQxYWNhMzBmZTc5NjgxMTAyNzQzMjAxN2NhNDQ5YmZiMWYyZi4uNjRhZjg5ZDExNzc2YzNj
ZDQwMjk1MjNiN2JhMTQ0ZDFhZTU2ZjQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcApAQCAtMzIsNiArMzIsOSBA
QAogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCisjaW5jbHVk
ZSAiV2ViRnJhbWUuaCIKKyNpbmNsdWRlICJXZWJGcmFtZUxvYWRlckNsaWVudC5oIgorI2luY2x1
ZGUgIldlYkxvYWRlclN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZUhvc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nl
cnRpZmljYXRlSW5mby5oPgpAQCAtMzksNiArNDIsOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRGlh
Z25vc3RpY0xvZ2dpbmdLZXlzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudExvYWRlci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9h
ZGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlckNsaWVudC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9OZXR3b3JrTG9hZE1ldHJpY3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KQEAg
LTIxOCw2ICsyMjMsNDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoUmVzb3Vy
Y2VMb2FkKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0wKICAgICBtX2NvcmVMb2Fk
ZXItPmRpZEZpbmlzaExvYWRpbmcobmV0d29ya0xvYWRNZXRyaWNzKTsKIH0KIAordm9pZCBXZWJS
ZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbFNlcnZpY2VXb3JrZXJMb2FkKGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKQoreworICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IG1fY29yZUxvYWRlci0+ZnJh
bWUoKSA/IG1fY29yZUxvYWRlci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKSA6IG51bGxwdHIpIHsKKyAg
ICAgICAgaWYgKG1fY29yZUxvYWRlci0+b3B0aW9ucygpLmRlc3RpbmF0aW9uICE9IEZldGNoT3B0
aW9uczo6RGVzdGluYXRpb246OkVtcHR5U3RyaW5nIHx8IGVycm9yLmlzR2VuZXJhbCgpKQorICAg
ICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBN
ZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKTsKKyAgICAg
ICAgaWYgKG1fY29yZUxvYWRlci0+b3B0aW9ucygpLmRlc3RpbmF0aW9uICE9IEZldGNoT3B0aW9u
czo6RGVzdGluYXRpb246OkVtcHR5U3RyaW5nKQorICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENv
bnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtYWtl
U3RyaW5nKCJDYW5ub3QgbG9hZCAiLCBlcnJvci5mYWlsaW5nVVJMKCkuc3RyaW5nKCksICIuIikp
OworICAgIH0KKworICAgIGRpZEZhaWxSZXNvdXJjZUxvYWQoZXJyb3IpOworfQorCit2b2lkIFdl
YlJlc291cmNlTG9hZGVyOjpzZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlKCkKK3sKKyNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic2VydmljZVdv
cmtlckRpZE5vdEhhbmRsZTogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJ
dTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5w
YWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRC50b1VJbnQ2NCgp
LCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKKworICAgIGlmIChtX2NvcmVMb2Fk
ZXItPm9wdGlvbnMoKS5zZXJ2aWNlV29ya2Vyc01vZGUgIT0gU2VydmljZVdvcmtlcnNNb2RlOjpP
bmx5KSB7CisgICAgICAgIGF1dG8qIHdlYkZyYW1lTG9hZGVyQ2xpZW50ID0gdG9XZWJGcmFtZUxv
YWRlckNsaWVudChtX2NvcmVMb2FkZXItPmZyYW1lTG9hZGVyKCktPmNsaWVudCgpKTsKKyAgICAg
ICAgYXV0byogd2ViRnJhbWUgPSB3ZWJGcmFtZUxvYWRlckNsaWVudCA/IHdlYkZyYW1lTG9hZGVy
Q2xpZW50LT53ZWJGcmFtZSgpIDogbnVsbHB0cjsKKyAgICAgICAgYXV0byogd2ViUGFnZSA9IHdl
YkZyYW1lID8gd2ViRnJhbWUtPnBhZ2UoKSA6IG51bGxwdHI7CisKKyAgICAgICAgaWYgKGF1dG8q
IGhhbmRsZXIgPSB3ZWJQYWdlLT51cmxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKG1fY29yZUxvYWRl
ci0+cmVxdWVzdCgpLnVybCgpLnByb3RvY29sKCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKSkg
eworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmVzb3VyY2UgbG9hZGVkIGJ5
IFVSTCBzY2hlbWUgaGFuZGxlcjogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIg
UFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVy
cy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRC50b1VJbnQ2
NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKKworICAgICAgICAgICAgYXV0
byBsb2FkZXIgPSBtX2NvcmVMb2FkZXI7CisgICAgICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS53ZWJMb2FkZXJTdHJhdGVneSgpLnJlbW92ZShtX2NvcmVMb2FkZXIuZ2V0KCkpOworCisg
ICAgICAgICAgICBoYW5kbGVyLT5zdGFydE5ld1Rhc2soKmxvYWRlcik7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhdXRvIGVycm9yID0gaW50ZXJuYWxFcnJv
cihtX2NvcmVMb2FkZXItPnJlcXVlc3QoKS51cmwoKSk7CisgICAgZXJyb3Iuc2V0VHlwZShSZXNv
dXJjZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRpb24pOworICAgIG1fY29yZUxvYWRlci0+ZGlkRmFp
bChlcnJvcik7CisjZWxzZQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCit9CisK
IHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxSZXNvdXJjZUxvYWQoY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCiB7CiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVz
b3VyY2VMb2FkZXI6OmRpZEZhaWxSZXNvdXJjZUxvYWQgZm9yICclcyciLCBtX2NvcmVMb2FkZXIt
PnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAppbmRleCA4ZWExYWVkYmVi
OWY1OTY0OTdhYjY3NGFmNDM2MjE2N2ExY2YyOWFhLi43YzIxMTFkNDhiMjk1MTdiNTk3MzFlMzRi
ZGVkNmY5M2JjN2Q1NjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKQEAgLTg1LDYgKzg1LDggQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGludDY0X3Qg
ZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlkRmluaXNoUmVzb3VyY2VMb2FkKGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZvaWQgZGlkRmFpbFJlc291cmNl
TG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CisgICAgdm9pZCBkaWRGYWlsU2Vy
dmljZVdvcmtlckxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOworICAgIHZvaWQg
c2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSgpOwogICAgIHZvaWQgZGlkQmxvY2tBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSgpOwogCiAgICAgdm9pZCBzdG9wTG9hZGluZ0FmdGVyWEZyYW1lT3B0aW9u
c09yQ29udGVudFNlY3VyaXR5UG9saWN5RGVuaWVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KaW5kZXggN2I5MzI1NmYwMzZkZDA0
MmY0NGJhODNhMzE4YmI3YjY2MzZkNDFhYS4uOGMwZjIxYTgzNjIyY2Y4YWIwZDM2N2UyMWY4NmM3
MWE3ZWQwNWQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KQEAgLTI3LDYgKzI3LDgg
QEAgbWVzc2FnZXMgLT4gV2ViUmVzb3VyY2VMb2FkZXIgTGVnYWN5UmVjZWl2ZXIgewogICAgIERp
ZFJlY2VpdmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhLCBpbnQ2NF90
IGVuY29kZWREYXRhTGVuZ3RoKQogICAgIERpZEZpbmlzaFJlc291cmNlTG9hZChXZWJDb3JlOjpO
ZXR3b3JrTG9hZE1ldHJpY3MgbmV0d29ya0xvYWRNZXRyaWNzKQogICAgIERpZEZhaWxSZXNvdXJj
ZUxvYWQoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKKyAgICBEaWRGYWlsU2VydmljZVdv
cmtlckxvYWQoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKKyAgICBTZXJ2aWNlV29ya2Vy
RGlkTm90SGFuZGxlKCkKICAgICBEaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkKIAog
ICAgIFN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lE
ZW5pZWQoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50
RmV0Y2guY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjQ0NjZhOGQ0ZDg1Yzgz
MzA5NTlhNTBmNzdkNTg5MTQ2MTA2MTIxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VX
b3JrZXJDbGllbnRGZXRjaC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMDMgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xp
ZW50RmV0Y2guaCIKLQotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLQotI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJXZWJTV0NsaWVudENvbm5lY3Rpb24uaCIKLSNpbmNs
dWRlICJXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0Nyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRl
ZC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvU2hhcmVkQnVmZmVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7Ci0KLVJlZjxTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g+IFNlcnZpY2VXb3JrZXJD
bGllbnRGZXRjaDo6Y3JlYXRlKFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlciYgc2VydmljZVdvcmtl
clByb3ZpZGVyLCBSZWY8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI+JiYgbG9hZGVyLCBGZXRjaElk
ZW50aWZpZXIgaWRlbnRpZmllciwgUmVmPFdlYlNXQ2xpZW50Q29ubmVjdGlvbj4mJiBjb25uZWN0
aW9uLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIENhbGxi
YWNrJiYgY2FsbGJhY2spCi17Ci0gICAgYXV0byBmZXRjaCA9IGFkb3B0UmVmKCpuZXcgU2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoIHsgc2VydmljZVdvcmtlclByb3ZpZGVyLCBXVEZNb3ZlKGxvYWRl
ciksIGlkZW50aWZpZXIsIFdURk1vdmUoY29ubmVjdGlvbiksIHNob3VsZENsZWFyUmVmZXJyZXJP
bkhUVFBTVG9IVFRQUmVkaXJlY3QsIFdURk1vdmUoY2FsbGJhY2spIH0pOwotICAgIGZldGNoLT5z
dGFydCgpOwotICAgIHJldHVybiBmZXRjaDsKLX0KLQotU2VydmljZVdvcmtlckNsaWVudEZldGNo
Ojp+U2VydmljZVdvcmtlckNsaWVudEZldGNoKCkKLXsKLX0KLQotU2VydmljZVdvcmtlckNsaWVu
dEZldGNoOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2goV2ViU2VydmljZVdvcmtlclByb3ZpZGVy
JiBzZXJ2aWNlV29ya2VyUHJvdmlkZXIsIFJlZjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcj4mJiBs
b2FkZXIsIEZldGNoSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZWY8V2ViU1dDbGllbnRDb25uZWN0
aW9uPiYmIGNvbm5lY3Rpb24sIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBS
ZWRpcmVjdCwgQ2FsbGJhY2smJiBjYWxsYmFjaykKLSAgICA6IG1fc2VydmljZVdvcmtlclByb3Zp
ZGVyKHNlcnZpY2VXb3JrZXJQcm92aWRlcikKLSAgICAsIG1fbG9hZGVyKFdURk1vdmUobG9hZGVy
KSkKLSAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQotICAgICwgbV9jb25uZWN0aW9uKFdU
Rk1vdmUoY29ubmVjdGlvbikpCi0gICAgLCBtX2NhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKQot
ICAgICwgbV9zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KHNob3VsZENs
ZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QpCi17Ci19Ci0KLXZvaWQgU2VydmljZVdv
cmtlckNsaWVudEZldGNoOjpzdGFydCgpCi17Ci0gICAgYXV0byByZXF1ZXN0ID0gbV9sb2FkZXIt
PnJlcXVlc3QoKTsKLSAgICBhdXRvJiBvcHRpb25zID0gbV9sb2FkZXItPm9wdGlvbnMoKTsKLQot
ICAgIGF1dG8gcmVmZXJyZXIgPSByZXF1ZXN0Lmh0dHBSZWZlcnJlcigpOwotCi0gICAgLy8gV2Ug
YXJlIGludGVyY2VwdGluZyBmZXRjaCBjYWxscyBhZnRlciBnb2luZyB0aHJvdWdoIHRoZSBIVFRQ
IGxheWVyLCB3aGljaCBtYXkgYWRkIHNvbWUgc3BlY2lmaWMgaGVhZGVycy4KLSAgICBjbGVhbkhU
VFBSZXF1ZXN0SGVhZGVyc0ZvckFjY2Vzc0NvbnRyb2wocmVxdWVzdCwgb3B0aW9ucy5odHRwSGVh
ZGVyc1RvS2VlcCk7Ci0KLSAgICBBU1NFUlQob3B0aW9ucy5zZXJ2aWNlV29ya2Vyc01vZGUgIT0g
U2VydmljZVdvcmtlcnNNb2RlOjpOb25lKTsKLSAgICBtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25JZGVudGlmaWVyID0gb3B0aW9ucy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
ci52YWx1ZSgpOwotICAgIG1fY29ubmVjdGlvbi0+c3RhcnRGZXRjaChtX2lkZW50aWZpZXIsIG1f
c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIHJlcXVlc3QsIG9wdGlvbnMsIHJl
ZmVycmVyKTsKLX0KLQotdm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OmRpZFJlY2VpdmVS
ZWRpcmVjdFJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkKLXsKLSAgICBjYWxs
T25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlc3Bv
bnNlID0gV1RGTW92ZShyZXNwb25zZSldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghbV9sb2Fk
ZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgcmVzcG9uc2Uuc2V0U291cmNlKFJl
c291cmNlUmVzcG9uc2U6OlNvdXJjZTo6U2VydmljZVdvcmtlcik7Ci0KLSAgICAgICAgbV9sb2Fk
ZXItPndpbGxTZW5kUmVxdWVzdChtX2xvYWRlci0+cmVxdWVzdCgpLnJlZGlyZWN0ZWRSZXF1ZXN0
KHJlc3BvbnNlLCBtX3Nob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QpLCBy
ZXNwb25zZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBwcm90ZWN0ZWRUaGlzLmNvcHlSZWYoKV0o
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkgewotICAgICAgICAgICAgaWYgKCFtX2xvYWRlciB8
fCByZXF1ZXN0LmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8gY2FsbGJhY2sg
PSBXVEZNb3ZlKG1fY2FsbGJhY2spKQotICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhSZXN1
bHQ6OlN1Y2NlZWRlZCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgQVNTRVJUKHJlcXVlc3QgPT0gbV9sb2FkZXItPnJlcXVlc3QoKSk7Ci0gICAg
ICAgICAgICBzdGFydCgpOwotICAgICAgICB9KTsKLSAgICB9KTsKLX0KLQotdm9pZCBTZXJ2aWNl
V29ya2VyQ2xpZW50RmV0Y2g6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYg
cmVzcG9uc2UsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCi17
Ci0gICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCByZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpLCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2
ZVJlc3BvbnNlTWVzc2FnZV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFtX2xvYWRlcikKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAoYXV0byBjYWxsYmFjayA9IFdURk1vdmUo
bV9jYWxsYmFjaykpCi0gICAgICAgICAgICBjYWxsYmFjayhSZXN1bHQ6OlN1Y2NlZWRlZCk7Ci0K
LSAgICAgICAgQVNTRVJUKCFyZXNwb25zZS5pc1JlZGlyZWN0aW9uKCkgfHwgIXJlc3BvbnNlLmh0
dHBIZWFkZXJGaWVsZHMoKS5jb250YWlucyhIVFRQSGVhZGVyTmFtZTo6TG9jYXRpb24pKTsKLQot
ICAgICAgICBpZiAoIW5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKSB7Ci0g
ICAgICAgICAgICBtX2xvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBbXSB7IH0p
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgbV9sb2FkZXItPmRp
ZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3Zl
KHByb3RlY3RlZFRoaXMpXSB7Ci0gICAgICAgICAgICBpZiAoIW1fbG9hZGVyKQotICAgICAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5jb250aW51ZURpZFJl
Y2VpdmVGZXRjaFJlc3BvbnNlKG1faWRlbnRpZmllciwgbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uSWRlbnRpZmllcik7Ci0gICAgICAgIH0pOwotICAgIH0pOwotfQotCi12b2lkIFNlcnZpY2VX
b3JrZXJDbGllbnRGZXRjaDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBkYXRhUmVmZXJlbmNlLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQotewotICAgIGF1dG8q
IGRhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhUmVmZXJlbmNlLmRhdGEo
KSk7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBlbmNvZGVkRGF0YUxlbmd0aCwgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
ZGF0YSwgZGF0YVJlZmVyZW5jZS5zaXplKCkpXSgpIG11dGFibGUgewotICAgICAgICBpZiAoIW1f
bG9hZGVyKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1fZW5jb2RlZERhdGFMZW5n
dGggKz0gZW5jb2RlZERhdGFMZW5ndGg7Ci0KLSAgICAgICAgbV9sb2FkZXItPmRpZFJlY2VpdmVC
dWZmZXIoV1RGTW92ZShidWZmZXIpLCBtX2VuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5
dGVzKTsKLSAgICB9KTsKLX0KLQotdm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OmRpZFJl
Y2VpdmVGb3JtRGF0YShjb25zdCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJikKLXsKLSAgICAvLyBG
SVhNRTogSW1wbGVtZW50IGZvcm0gZGF0YSByZWFkaW5nLgotfQotCi12b2lkIFNlcnZpY2VXb3Jr
ZXJDbGllbnRGZXRjaDo6ZGlkRmluaXNoKCkKLXsKLSAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKLSAgICAgICAgaWYgKCFtX2xvYWRl
cikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBBU1NFUlQoIW1fY2FsbGJhY2spOwot
Ci0gICAgICAgIG1fbG9hZGVyLT5kaWRGaW5pc2hMb2FkaW5nKE5ldHdvcmtMb2FkTWV0cmljcyB7
IH0pOwotICAgICAgICBtX3NlcnZpY2VXb3JrZXJQcm92aWRlci5mZXRjaEZpbmlzaGVkKG1faWRl
bnRpZmllcik7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpk
aWRGYWlsKFJlc291cmNlRXJyb3ImJiBlcnJvcikKLXsKLSAgICBjYWxsT25NYWluVGhyZWFkKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGVycm9yID0gV1RGTW92ZShlcnJv
cildIHsKLSAgICAgICAgaWYgKCFtX2xvYWRlcikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICBhdXRvKiBkb2N1bWVudCA9IG1fbG9hZGVyLT5mcmFtZSgpID8gbV9sb2FkZXItPmZyYW1l
KCktPmRvY3VtZW50KCkgOiBudWxscHRyOwotICAgICAgICBpZiAoZG9jdW1lbnQpIHsKLSAgICAg
ICAgICAgIGlmIChtX2xvYWRlci0+b3B0aW9ucygpLmRlc3RpbmF0aW9uICE9IEZldGNoT3B0aW9u
czo6RGVzdGluYXRpb246OkVtcHR5U3RyaW5nIHx8IGVycm9yLmlzR2VuZXJhbCgpKQotICAgICAg
ICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywg
TWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKSk7Ci0gICAg
ICAgICAgICBpZiAobV9sb2FkZXItPm9wdGlvbnMoKS5kZXN0aW5hdGlvbiAhPSBGZXRjaE9wdGlv
bnM6OkRlc3RpbmF0aW9uOjpFbXB0eVN0cmluZykKLSAgICAgICAgICAgICAgICBkb2N1bWVudC0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3Is
IG1ha2VTdHJpbmcoIkNhbm5vdCBsb2FkICIsIGVycm9yLmZhaWxpbmdVUkwoKS5zdHJpbmcoKSwg
Ii4iKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBtX2xvYWRlci0+ZGlkRmFpbChlcnJvcik7Ci0K
LSAgICAgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBXVEZNb3ZlKG1fY2FsbGJhY2spKQotICAgICAg
ICAgICAgY2FsbGJhY2soUmVzdWx0OjpTdWNjZWVkZWQpOwotCi0gICAgICAgIG1fc2VydmljZVdv
cmtlclByb3ZpZGVyLmZldGNoRmluaXNoZWQobV9pZGVudGlmaWVyKTsKLSAgICB9KTsKLX0KLQot
dm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OmRpZE5vdEhhbmRsZSgpCi17Ci0gICAgY2Fs
bE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7Ci0g
ICAgICAgIGlmICghbV9sb2FkZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYg
KGF1dG8gY2FsbGJhY2sgPSBXVEZNb3ZlKG1fY2FsbGJhY2spKQotICAgICAgICAgICAgY2FsbGJh
Y2soUmVzdWx0OjpVbmhhbmRsZWQpOwotCi0gICAgICAgIG1fc2VydmljZVdvcmtlclByb3ZpZGVy
LmZldGNoRmluaXNoZWQobV9pZGVudGlmaWVyKTsKLSAgICB9KTsKLX0KLQotdm9pZCBTZXJ2aWNl
V29ya2VyQ2xpZW50RmV0Y2g6OmNhbmNlbCgpCi17Ci0gICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBX
VEZNb3ZlKG1fY2FsbGJhY2spKQotICAgICAgICBjYWxsYmFjayhSZXN1bHQ6OkNhbmNlbGxlZCk7
Ci0KLSAgICBtX2Nvbm5lY3Rpb24tPmNhbmNlbEZldGNoKG1faWRlbnRpZmllciwgbV9zZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7Ci0gICAgbV9sb2FkZXIgPSBudWxscHRyOwot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
U2VydmljZVdvcmtlckNsaWVudEZldGNoLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGM2NjdhYzc1N2ZkZDcxMDg4OGI4YjJkNGVlZTk0NDk5MGYwYjBkMDMuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4
NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCi0KLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCi0jaW5jbHVkZSAiRm9ybURh
dGFSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKLSNpbmNsdWRlICJN
ZXNzYWdlU2VuZGVyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GZXRjaElkZW50aWZpZXIuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlTG9hZGVyLmg+Ci0jaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+Ci0KLW5hbWVz
cGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJTV0NsaWVudENvbm5lY3Rpb247Ci1jbGFzcyBXZWJT
ZXJ2aWNlV29ya2VyUHJvdmlkZXI7Ci0KLWNsYXNzIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaCBm
aW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaD4sIHB1Ymxp
YyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7Ci1wdWJsaWM6Ci0gICAgZW51bSBjbGFzcyBSZXN1bHQg
eyBTdWNjZWVkZWQsIENhbmNlbGxlZCwgVW5oYW5kbGVkIH07Ci0gICAgdXNpbmcgQ2FsbGJhY2sg
PSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzdWx0KT47Ci0KLSAgICBzdGF0aWMgUmVm
PFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaD4gY3JlYXRlKFdlYlNlcnZpY2VXb3JrZXJQcm92aWRl
ciYsIFJlZjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcj4mJiwgV2ViQ29yZTo6RmV0Y2hJZGVudGlm
aWVyLCBSZWY8V2ViU1dDbGllbnRDb25uZWN0aW9uPiYmLCBib29sIHNob3VsZENsZWFyUmVmZXJy
ZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIENhbGxiYWNrJiYpOwotICAgIH5TZXJ2aWNlV29ya2Vy
Q2xpZW50RmV0Y2goKTsKLQotICAgIHZvaWQgc3RhcnQoKTsKLQotICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7Ci0gICAgdm9p
ZCBjYW5jZWwoKTsKLQotICAgIGJvb2wgaXNPbmdvaW5nKCkgY29uc3QgeyByZXR1cm4gISFtX2Nh
bGxiYWNrOyB9Ci0KLXByaXZhdGU6Ci0gICAgU2VydmljZVdvcmtlckNsaWVudEZldGNoKFdlYlNl
cnZpY2VXb3JrZXJQcm92aWRlciYsIFJlZjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcj4mJiwgV2Vi
Q29yZTo6RmV0Y2hJZGVudGlmaWVyLCBSZWY8V2ViU1dDbGllbnRDb25uZWN0aW9uPiYmLCBib29s
IHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIENhbGxiYWNrJiYpOwot
Ci0gICAgT3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4gdmFsaWRhdGVSZXNwb25zZShj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0KLSAgICB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIGJvb2wgbmVlZHNDb250aW51ZURp
ZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0UmVz
cG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgp
OwotICAgIHZvaWQgZGlkUmVjZWl2ZUZvcm1EYXRhKGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVu
Y2UmKTsKLSAgICB2b2lkIGRpZEZpbmlzaCgpOwotICAgIHZvaWQgZGlkRmFpbChXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiYpOwotICAgIHZvaWQgZGlkTm90SGFuZGxlKCk7Ci0KLSAgICBXZWJTZXJ2
aWNlV29ya2VyUHJvdmlkZXImIG1fc2VydmljZVdvcmtlclByb3ZpZGVyOwotICAgIFJlZlB0cjxX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcj4gbV9sb2FkZXI7Ci0gICAgV2ViQ29yZTo6RmV0Y2hJZGVu
dGlmaWVyIG1faWRlbnRpZmllcjsKLSAgICBSZWY8V2ViU1dDbGllbnRDb25uZWN0aW9uPiBtX2Nv
bm5lY3Rpb247Ci0gICAgQ2FsbGJhY2sgbV9jYWxsYmFjazsKLSAgICBib29sIG1fc2hvdWxkQ2xl
YXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCB7IHRydWUgfTsKLSAgICBpbnQ2NF90IG1f
ZW5jb2RlZERhdGFMZW5ndGggeyAwIH07Ci0gICAgYm9vbCBtX2RpZEZhaWwgeyBmYWxzZSB9Owot
ICAgIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIG1fc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJL
aXQKLQotI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJD
bGllbnRGZXRjaC5tZXNzYWdlcy5pbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Qz
YmM3NDA0YmZiNDdkNjFlMGQxNTg4ZTFhNWYyYTljMDZhMTY2MS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gubWVzc2FnZXMuaW4KKysrIC9kZXYvbnVsbApA
QCAtMSwzNSArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMg
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
IyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSMgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0K
LSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0KLW1lc3NhZ2VzIC0+IFNlcnZpY2VXb3JrZXJD
bGllbnRGZXRjaCB7Ci0gICAgRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UgcmVzcG9uc2UsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3Nh
Z2UpCi0gICAgRGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSByZXNwb25zZSkKLSAgICBEaWRSZWNlaXZlRGF0YShJUEM6OkRhdGFSZWZlcmVuY2UgZGF0
YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKLSAgICBEaWRSZWNlaXZlRm9ybURhdGEoSVBD
OjpGb3JtRGF0YVJlZmVyZW5jZSBkYXRhKQotICAgIERpZEZpbmlzaCgpCi0gICAgRGlkRmFpbChX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQotICAgIERpZE5vdEhhbmRsZSgpCi19Ci0KLSNl
bmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAppbmRleCAw
NmE0Y2M3ZGI3YTE4YzExODdiYWZjNjU4ODU1NDMyYzQ1ZWIyYWUyLi5kMDA4OWJmNThiNjU0NTY1
YThlMWU5MTJkMWJkYTYyMmE3ZDllZmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTM0LDcg
KzM0LDYgQEAKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0
d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgotI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRGZXRj
aC5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3MuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbE1lc3NhZ2VzLmgiCkBAIC0yMDMsMjEg
KzIwMiw2IEBAIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpnZXRSZWdpc3RyYXRpb25zKFNl
Y3VyaXR5T3JpZ2luRGF0YSYmIHRvcE9yaWdpbiwgY29uCiAgICAgfSk7CiB9CiAKLXZvaWQgV2Vi
U1dDbGllbnRDb25uZWN0aW9uOjpzdGFydEZldGNoKEZldGNoSWRlbnRpZmllciBmZXRjaElkZW50
aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNv
bnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKLXsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlN0YXJ0RmV0Y2ggeyBzZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyLCByZXF1ZXN0
LCBvcHRpb25zLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHsgcmVxdWVzdC5odHRwQm9keSgpIH0s
IHJlZmVycmVyIH0pOwotfQotCi12b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Y2FuY2VsRmV0
Y2goRmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbklkZW50aWZpZXIgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpCi17Ci0g
ICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpDYW5jZWxGZXRjaCB7IHNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIgfSk7Ci19
Ci0KLXZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpjb250aW51ZURpZFJlY2VpdmVGZXRjaFJl
c3BvbnNlKEZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKQot
ewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6Q29udGludWVEaWRS
ZWNlaXZlRmV0Y2hSZXNwb25zZSB7IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
LCBmZXRjaElkZW50aWZpZXIgfSk7Ci19Ci0KIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpj
b25uZWN0aW9uVG9TZXJ2ZXJMb3N0KCkKIHsKICAgICBjbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaApp
bmRleCAyN2ZlYTJjMWIyNGI4YzJhOTY0YzRlOTY3ZDNmN2VjYTM4ZDAzNzJmLi45ZTQ0NWY1NWM5
NjgwOWNhOWNkNjM1NjMxZjU1NTQ3OTkxZWNhNTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaApAQCAtMzAs
NyArMzAsNiBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJNZXNzYWdlUmVj
ZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCi0jaW5jbHVkZSAiU2VydmljZVdv
cmtlckNsaWVudEZldGNoLmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9NZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1dD
bGllbnRDb25uZWN0aW9uLmg+CkBAIC02MCw5ICs1OSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwog
CiAgICAgYm9vbCBtYXlIYXZlU2VydmljZVdvcmtlclJlZ2lzdGVyZWRGb3JPcmlnaW4oY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJikgY29uc3QgZmluYWw7Ci0gICAgdm9pZCBzdGFy
dEZldGNoKFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFdlYkNvcmU6OkZldGNoT3B0aW9ucyYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpOwotICAg
IHZvaWQgY2FuY2VsRmV0Y2goV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7Ci0gICAgdm9pZCBjb250aW51ZURpZFJl
Y2VpdmVGZXRjaFJlc3BvbnNlKFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpOwogCiAgICAgdm9pZCBjb25uZWN0aW9u
VG9TZXJ2ZXJMb3N0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwCmluZGV4IDYyYTM5YjI1
ZmRmYWQxN2UxMTU3NjMzMDAyODI0MmIzMDlmMTkyODUuLjdkY2QxOGViYWQzMDZkYWU0NzViMDA3
YjU3ZTdlMTY1ZjZiYjM1MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcApAQCAtNjYsNDgg
KzY2LDYgQEAgV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uKiBXZWJTZXJ2aWNlV29ya2VyUHJv
dmlkZXI6OmV4aXN0aW5nU2VydmljZVdvcmtlckNvbm4KICAgICByZXR1cm4gbmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uLT5leGlzdGluZ1NlcnZpY2VXb3JrZXJDb25uZWN0aW9uKCk7CiB9CiAKLXN0
YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRIYW5kbGVGZXRjaChjb25zdCBSZXNvdXJjZUxvYWRlck9w
dGlvbnMmIG9wdGlvbnMpCi17Ci0gICAgaWYgKG9wdGlvbnMuc2VydmljZVdvcmtlcnNNb2RlID09
IFNlcnZpY2VXb3JrZXJzTW9kZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
aWYgKGlzUG90ZW50aWFsTmF2aWdhdGlvbk9yU3VicmVzb3VyY2VSZXF1ZXN0KG9wdGlvbnMuZGVz
dGluYXRpb24pKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gISFvcHRpb25z
LnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOwotfQotCi12b2lkIFdlYlNlcnZp
Y2VXb3JrZXJQcm92aWRlcjo6aGFuZGxlRmV0Y2goUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgYm9v
bCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBTZXJ2aWNlV29ya2Vy
Q2xpZW50RmV0Y2g6OkNhbGxiYWNrJiYgY2FsbGJhY2spCi17Ci0gICAgaWYgKCFMZWdhY3lTY2hl
bWVSZWdpc3RyeTo6Y2FuU2VydmljZVdvcmtlcnNIYW5kbGVVUkxTY2hlbWUobG9hZGVyLnJlcXVl
c3QoKS51cmwoKS5wcm90b2NvbCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkgfHwgIXNob3Vs
ZEhhbmRsZUZldGNoKGxvYWRlci5vcHRpb25zKCkpKSB7Ci0gICAgICAgIGNhbGxiYWNrKFNlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaDo6UmVzdWx0OjpVbmhhbmRsZWQpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgYXV0byYgY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLnNlcnZpY2VXb3JrZXJDb25uZWN0aW9u
KCk7Ci0gICAgYXV0byBmZXRjaElkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxGZXRj
aElkZW50aWZpZXJUeXBlPihsb2FkZXIuaWRlbnRpZmllcigpKTsKLSAgICBtX29uZ29pbmdGZXRj
aFRhc2tzLmFkZChmZXRjaElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6Y3Jl
YXRlKCp0aGlzLCBsb2FkZXIsIGZldGNoSWRlbnRpZmllciwgY29ubmVjdGlvbiwgc2hvdWxkQ2xl
YXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgV1RGTW92ZShjYWxsYmFjaykpKTsKLX0K
LQotYm9vbCBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OmNhbmNlbEZldGNoKEZldGNoSWRlbnRp
ZmllciBmZXRjaElkZW50aWZpZXIpCi17Ci0gICAgYXV0byBmZXRjaCA9IG1fb25nb2luZ0ZldGNo
VGFza3MudGFrZShmZXRjaElkZW50aWZpZXIpOwotICAgIGlmIChmZXRjaCkKLSAgICAgICAgKCpm
ZXRjaCktPmNhbmNlbCgpOwotICAgIHJldHVybiAhIWZldGNoOwotfQotCi12b2lkIFdlYlNlcnZp
Y2VXb3JrZXJQcm92aWRlcjo6ZmV0Y2hGaW5pc2hlZChGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVu
dGlmaWVyKQotewotICAgIG1fb25nb2luZ0ZldGNoVGFza3MudGFrZShmZXRjaElkZW50aWZpZXIp
OwotfQotCi12b2lkIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6ZGlkUmVjZWl2ZVNlcnZpY2VX
b3JrZXJDbGllbnRGZXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6
OkRlY29kZXImIGRlY29kZXIpCi17Ci0gICAgaWYgKGF1dG8gZmV0Y2ggPSBtX29uZ29pbmdGZXRj
aFRhc2tzLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxGZXRjaElkZW50aWZpZXJUeXBlPihkZWNv
ZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQotICAgICAgICBmZXRjaC0+ZGlkUmVjZWl2ZU1lc3NhZ2Uo
Y29ubmVjdGlvbiwgZGVjb2Rlcik7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5k
aWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaAppbmRleCAw
ODhhZWQ5NTRlOWE5ZDRlZTU5MmY1ZDc1NTI3MjcxNDRhMDUwYTIyLi5jMDBjMDQ3OTMxMjdhMDY5
ZmFlOTUyMzAxMjVkYmI5NTU1NGNkNzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaApAQCAtMjcs
NyArMjcsNiBAQAogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCi0jaW5jbHVkZSAiU2Vy
dmljZVdvcmtlckNsaWVudEZldGNoLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2Vy
UHJvdmlkZXIuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApAQCAtNDEsMTEg
KzQwLDYgQEAgY2xhc3MgV2ViU2VydmljZVdvcmtlclByb3ZpZGVyIGZpbmFsIDogcHVibGljIFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJQcm92aWRlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFdlYlNl
cnZpY2VXb3JrZXJQcm92aWRlciYgc2luZ2xldG9uKCk7CiAKLSAgICB2b2lkIGhhbmRsZUZldGNo
KFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQ
U1RvSFRUUFJlZGlyZWN0LCBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkNhbGxiYWNrJiYpOwot
ICAgIGJvb2wgY2FuY2VsRmV0Y2goV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyKTsKLSAgICB2b2lk
IGZldGNoRmluaXNoZWQoV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyKTsKLQotICAgIHZvaWQgZGlk
UmVjZWl2ZVNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU2VydmljZVdvcmtlckNsaWVudFJl
Z2lzdHJhdGlvbk1hdGNoKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogCiBwcml2
YXRlOgpAQCAtNTQsOCArNDgsNiBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6U1dDbGllbnRD
b25uZWN0aW9uKiBleGlzdGluZ1NlcnZpY2VXb3JrZXJDb25uZWN0aW9uKCkgZmluYWw7CiAgICAg
V2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uJiBzZXJ2aWNlV29ya2VyQ29ubmVjdGlvbigpIGZp
bmFsOwotCi0gICAgSGFzaE1hcDxXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIsIFJlZjxTZXJ2aWNl
V29ya2VyQ2xpZW50RmV0Y2g+PiBtX29uZ29pbmdGZXRjaFRhc2tzOwogfTsgLy8gY2xhc3MgV2Vi
U2VydmljZVdvcmtlclByb3ZpZGVyCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggMDE3YjQ3ZjMyMDdkOTllNWJiNWU3N2MwYWM2NWIxNzE5
NzJmZGU5ZS4uODY2NjhjYmE3NWQ1ZTQ4ZGY0ZGM5ZDcyZmQxM2M0Nzk4YjY5MzkxNyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTktMTAtMTAgIFlv
dWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEhhbmRsZSBzZXJ2aWNl
IHdvcmtlciBsb2FkcyB0aHJvdWdoIE5ldHdvcmtSZXNvdXJjZUxvYWRlcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMzA5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
c2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2ZldGNoLXJlcXVlc3QteGhyLmh0dHBzLWV4
cGVjdGVkLnR4dDoKKwogMjAxOS0xMC0xMCAgQ2FybG9zIEFsYmVydG8gTG9wZXogUGVyZXogIDxj
bG9wZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBJbXBvcnQgY3NzL2Nzcy1pbWFnZXMgV1BUIHRl
c3RzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9mZXRjaC1yZXF1ZXN0LXhoci5odHRw
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9mZXRjaC1yZXF1ZXN0LXhoci5odHRw
cy1leHBlY3RlZC50eHQKaW5kZXggNGZiNmJiNTNiMzE2NTUyZjQxZDBhOTdmYTkzYWRkN2Y2ODZh
NjUyMy4uODVhYTAwYjBhZThlZGNjMTY4MTQ1NjVkOTk5ZGFkN2U0MWE5M2M5NCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdv
cmtlcnMvc2VydmljZS13b3JrZXIvZmV0Y2gtcmVxdWVzdC14aHIuaHR0cHMtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2Vydmlj
ZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2ZldGNoLXJlcXVlc3QteGhyLmh0dHBzLWV4cGVjdGVk
LnR4dApAQCAtOCw3ICs4LDcgQEAgUEFTUyBGZXRjaEV2ZW50I3JlcXVlc3QuYm9keSBjb250YWlu
cyBYSFIgcmVxdWVzdCBkYXRhIChzdHJpbmcpCiBQQVNTIEZldGNoRXZlbnQjcmVxdWVzdC5ib2R5
IGNvbnRhaW5zIFhIUiByZXF1ZXN0IGRhdGEgKGJsb2IpIAogUEFTUyBGZXRjaEV2ZW50I3JlcXVl
c3QubWV0aG9kIGlzIHNldCB0byBYSFIgbWV0aG9kIAogUEFTUyBYSFIgdXNpbmcgT1BUSU9OUyBt
ZXRob2QgCi1GQUlMIFhIUiB3aXRoIGZvcm0gZGF0YSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCBy
ZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJFcnJvcjogYXNzZXJ0X2VxdWFsczogZXhwZWN0
ZWQgKHN0cmluZykgIlBPU1QiIGJ1dCBnb3QgKHVuZGVmaW5lZCkgdW5kZWZpbmVkIgorUEFTUyBY
SFIgd2l0aCBmb3JtIGRhdGEgCiBQQVNTIFhIUiB3aXRoIG1vZGUvY3JlZGVudGlhbHMgc2V0IAog
UEFTUyBYSFIgdG8gZGF0YSBVUkwgCiBQQVNTIHJlc3RvcmUgZ2xvYmFsIHN0YXRlIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380749</attachid>
            <date>2019-10-11 07:04:10 -0700</date>
            <delta_ts>2019-10-11 07:11:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202309-20191011160407.patch</filename>
            <type>text/plain</type>
            <size>107575</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMDAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNmMDc4MDEwMzI2NTYy
M2ZiNmRhNjE0NGZhNmU2ZjU4NjRjNWVmNy4uNzk5N2QzNDE5ZGQ3Y2UyOTFjOTkxOWI0ZmE0OGVh
MDIxZDlhYTVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTEwLTEwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBIYW5kbGUgc2VydmljZSB3
b3JrZXIgbG9hZHMgdGhyb3VnaCBOZXR3b3JrUmVzb3VyY2VMb2FkZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjMwOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IHRvIHNlcmlhbGl6ZSBIVFRQ
IGhlYWRlciBuYW1lcyBhcyBlbnVtZXJhdGlvbi4KKyAgICAgICAgVXBkYXRlZCBTV1NlcnZlciBh
YmlsaXR5IHRvIGhhbmRsZSBzY2hlbWVzIGJ5IGFkZGluZyBidWlsdC1pbiBzdXBwb3J0IGZvciBI
VFRQIGFuZCBIVFRQUyBhcyBkb25lIGluIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5LgorCisgICAgICAg
IENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VM
b2FkZXJPcHRpb25zLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jcmVhdGUtaHR0cC1o
ZWFkZXItbmFtZS10YWJsZToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpjYW5IYW5kbGVTY2hlbWUgY29u
c3QpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2IpOgorCiAyMDE5LTEw
LTEwICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRleC5ydT4KIAogICAgICAgICBH
dWFyZCBHQ3J5cHQtc3BlY2lmaWMgY29kZSB3aXRoIFVTRShHQ1JZUFQpIGluc3RlYWQgb2YgUExB
VEZPUk0gbWFjcm9zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQ1MTcyNzA4YWNhM2JiYmJkNDljODMzZTdiN2Q2MTFk
MGM5MTAzYWMuLjcxYzNkMTVlYjJkODNlYTg4MmNjYzNhNGFiOWIxNGRlNDM4ODU0ODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsOTkgQEAKKzIwMTktMTAtMTAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgorCisgICAgICAgIEhhbmRsZSBzZXJ2aWNlIHdvcmtlciBsb2FkcyB0aHJvdWdo
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjAyMzA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVtb3ZlIFNlcnZpY2VXb3JrZXJGZXRjaENsaWVudC4KKyAgICAgICAg
SW5zdGVhZCB3ZSB1c2UgdGhlIG5vcm1hbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXIvV2ViUmVzb3Vy
Y2VMb2FkZXIgY29tbXVuaWNhdGlvbiBjaGFubmVsLgorICAgICAgICBXZSBwYXNzIGFkZGl0aW9u
YWwgcGFyYW1ldGVycywgaW4gcGFydGljdWxhciBzZXJ2aWNlIHdvcmtlciBtb2RlIGFuZCByZWdp
c3RyYXRpb24gaWRlbnRpZmllci4KKworICAgICAgICBCYXNlZCBvbiB0aGF0IGluZm9ybWF0aW9u
LCBuZXR3b3JrIHByb2Nlc3Mgd2lsbCBkZWNpZGUgd2hldGhlciB0byBsb2FkIGZyb20gc2Vydmlj
ZSB3b3JrZXIgb3IgbmV0d29yay4KKyAgICAgICAgVGhlIGZpcnN0IGFkdmFudGFnZSBpcyB0aGF0
IGluIGNhc2Ugb2Ygc2VydmljZSB3b3JrZXIgbm90IGhhbmRsaW5nIHRoZSBsb2FkLCBnb2luZyB0
byB0aGUgbmV0d29yayBpcyBmYXN0ZXIuCisgICAgICAgIFRoaXMgd2lsbCBhbHNvIGFsbG93IHVz
IHRvIGRvIHRoZSByZWdpc3RyYXRpb24gbWF0Y2hpbmcgaW4gbmV0d29yayBwcm9jZXNzIHdoZW4g
cmVjZWl2aW5nIGEgbmF2aWdhdGlvbiByZXF1ZXN0LgorCisgICAgICAgIFNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2sgaXMgbm93IGJlZWZlZCB1cCB0byBkbyB0aGUgbGluayBiZXR3ZWVuIHNlcnZpY2Ug
d29ya2VyIGFuZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXIvV2ViUmVzb3VyY2VMb2FkZXIuCisgICAg
ICAgIFRvIHN1cHBvcnQgdGhlIHNhbWUgY29uc29sZSBsb2dnaW5nLCB3ZSBhZGQgYSBuZXcgbWVz
c2FnZSBjYWxsZWQgRGlkRmFpbFNlcnZpY2VXb3JrZXJMb2FkLgorCisgICAgICAgIFRvIHN1cHBv
cnQgQVBJIHRlc3RzLCB3ZSBjb250aW51ZSB0byBnbyB0byB0aGUgc2VydmljZSB3b3JrZXIgYmVm
b3JlIHRyeWluZyB0byBnbyB0byBVUkwgc2NoZW1lIGhhbmRsZXJzLgorICAgICAgICBUaGlzIGFk
ZHMgc29tZSBidXJkZW4gYXMgd2UgbmVlZCB0byBnbyB0byBuZXR3b3JrIHByb2Nlc3Mvc2Vydmlj
ZSB3b3JrZXIgcHJvY2VzcyBhbmQsIGluIGNhc2UgbG9hZCBpcyBub3QgaGFuZGxlZAorICAgICAg
ICBieSBzZXJ2aWNlIHdvcmtlciwgd2UgZ28gYmFjayB0byB0aGUgd2ViIHByb2Nlc3MgdG8gZG8g
dGhlIGxvYWQgdGhyb3VnaCBVUkwgc2NoZW1lIGhhbmRsZXJzLgorICAgICAgICBGb3IgdGhhdCBw
dXJwb3NlIHdlIHVzZSBTZXJ2aWNlV29ya2Vyc01vZGU6Ok9ubHkuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Ogor
ICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6c2NoZWR1bGVSZXNvdXJjZUxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjphYm9ydCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRXaXRo
U2VydmljZVdvcmtlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
c2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2Vydmlj
ZVdvcmtlckZldGNoVGFzazo6U2VydmljZVdvcmtlckZldGNoVGFzayk6CisgICAgICAgIChXZWJL
aXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6On5TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKToKKyAg
ICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6c2VuZFRvU2VydmljZVdvcmtl
cik6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnNlbmRUb0NsaWVu
dCk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnN0YXJ0KToKKyAg
ICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6c3RhcnRGZXRjaCk6CisgICAg
ICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZWRpcmVjdFJl
c3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6
ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
OjpkaWRSZWNlaXZlRm9ybURhdGEpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrOjpkaWRGaW5pc2gpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrOjpkaWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6
ZGlkTm90SGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6
Y2FuY2VsRnJvbUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s6OmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpjb250aW51ZUZldGNoVGFza1dpdGgpOgorICAgICAgICAo
V2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjp0aW1lb3V0VGltZXJGaXJlZCk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Lmg6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmZldGNoSWRlbnRp
ZmllciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y2FuY2VsRmV0Y2gpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTV1NlcnZlckNvbm5lY3Rpb246OmNyZWF0ZUZldGNoVGFzayk6CisgICAgICAgIChXZWJLaXQ6
OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaCk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6c3RhcnRGZXRjaCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZGlkUmVj
ZWl2ZUZldGNoVGFza01lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246OnJlZ2lzdGVyRmV0Y2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246OnVucmVnaXN0ZXJGZXRjaCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZmV0Y2hUYXNrVGltZWRPdXQpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6aXBjQ29ubmVjdGlvbiBjb25zdCk6CisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlJlc291cmNlTG9hZGVyOjpkaWRGYWlsU2VydmljZVdvcmtlckxvYWQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6c2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50
RmV0Y2guaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdv
cmtlckNsaWVudEZldGNoLm1lc3NhZ2VzLmluOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwOgorICAgICAgICAqIFdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmg6CisKIDIwMTktMTAtMTAgIEJh
c3VrZSBTdXp1a2kgIDxCYXN1a2UuU3V6dWtpQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5DYWly
b10gTW92ZSByZW1vdGUgY29tbXVuaWNhdGlvbiBoYW5kbGluZyBmcm9tIFJlbW90ZUluc3BlY3Rv
clNlcnZlciB0byBSZW1vdGVJbnNwZWN0b3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkZXJPcHRpb25zLmgKaW5kZXggOWUzMDc0ZGEzMjExZDBlZTk3YjhlYjJlZGY0OTE2
OWVjNWRmMmE0YS4uYWVjZjk0NDFkMzIxZWQ5OTZiOGU0ZDIwMjEwMGI2NWZmYzBhZTEzNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaApAQCAtMTc1
LDMgKzE3NSwxNiBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zIDogcHVibGljIEZldGNo
T3B0aW9ucyB7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYg
eworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJz
TW9kZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJzTW9kZSwKKyAgICAgICAgV2ViQ29yZTo6U2VydmljZVdvcmtlcnNNb2Rl
OjpBbGwsCisgICAgICAgIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJzTW9kZTo6Tm9uZSwKKyAgICAg
ICAgV2ViQ29yZTo6U2VydmljZVdvcmtlcnNNb2RlOjpPbmx5CisgICAgPjsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jcmVhdGUtaHR0cC1oZWFkZXItbmFtZS10YWJsZSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3JlYXRlLWh0dHAtaGVhZGVyLW5hbWUtdGFibGUKaW5kZXggNjQ3Y2RkODI0MmZh
Zjc4NWUwMjMxNDM0ZDAwOTBlNmMzOTc3M2RhZC4uNDM5ZGI2OGMzMmM0M2UwODNiMDAwNjc4ZDcy
Y2UzNTlkYWQzZTI5ZiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jcmVhdGUtaHR0cC1oZWFkZXItbmFtZS10YWJsZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NyZWF0ZS1odHRwLWhlYWRlci1uYW1lLXRhYmxlCkBAIC0yMzMsNiArMjMz
LDI4IEBAIFdFQkNPUkVfRVhQT1JUIFN0cmluZ1ZpZXcgaHR0cEhlYWRlck5hbWVTdHJpbmcoSFRU
UEhlYWRlck5hbWUpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBXVEYg
eworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkhUVFBIZWFkZXJOYW1l
PiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6SFRU
UEhlYWRlck5hbWUsCisnJycpCisKK2lzX2ZpcnN0ID0gVHJ1ZQorZm9yIGh0dHBfaGVhZGVyX25h
bWUgaW4gaHR0cF9oZWFkZXJfbmFtZXM6CisgICAgaWYgaXNfZmlyc3Q6CisgICAgICAgIGlzX2Zp
cnN0ID0gRmFsc2UKKyAgICBlbHNlOgorICAgIAloZWFkZXJfZmlsZS53cml0ZSgnLFxuJykKKwor
ICAgIGhlYWRlcl9maWxlLndyaXRlKCcgICAgICAgIFdlYkNvcmU6OkhUVFBIZWFkZXJOYW1lOjol
cycgJSBodHRwX2hlYWRlcl9uYW1lX3RvX2lkW2h0dHBfaGVhZGVyX25hbWVdKQorCitoZWFkZXJf
ZmlsZS53cml0ZSgnJycKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKICNlbmRp
ZiAvLyBIVFRQSGVhZGVyTmFtZXNfaAogJycnKQogaGVhZGVyX2ZpbGUuY2xvc2UoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRl
eCA5YmI2NmFiMjhlMDc1ZTA3MDBjZjNjNzY5Y2UzY2ViMmYzNmI4NjAwLi4xMzdjNjYyNTUyZTFj
YWU2MGM1NTIwMjAyZGU3OGNmNDhmZWIxZDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtOTc0LDYgKzk3NCwyMSBAQCB2
b2lkIFNXU2VydmVyOjpjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgcmVnaXN0cmFibGVEb21haQogICAgIG1fY3JlYXRlQ29udGV4dENvbm5lY3Rpb25DYWxs
YmFjayhyZWdpc3RyYWJsZURvbWFpbik7CiB9CiAKK2Jvb2wgU1dTZXJ2ZXI6OmNhbkhhbmRsZVNj
aGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkgY29uc3QKK3sKKyAgICBpZiAoc2NoZW1lLmlzTnVs
bCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoc2NoZW1lLnN0YXJ0c1dpdGhJ
Z25vcmluZ0FTQ0lJQ2FzZSgiaHR0cCJfcykpIHsKKyAgICAgICAgaWYgKHNjaGVtZS5sZW5ndGgo
KSA9PSA0KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChzY2hlbWUubGVu
Z3RoKCkgPT0gNSAmJiBpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKHNjaGVtZVs0XSwgJ3MnKSkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBtX3JlZ2lzdGVy
ZWRTY2hlbWVzLmNvbnRhaW5zKHNjaGVtZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRleCA0NjAxMzE3NjE2YzgxNjc0
OGQyMDgwMGYyNjBiMzUyODU3NDg4MTcwLi4zMTNkNWU5MWUzYTFjZmQzYmMwOGY5ZDc4NjFhZjE5
ODk3YjlhMDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlci5oCkBAIC0xNjQsNyArMTY0LDcgQEAgcHVibGljOgogICAgIENvbm5lY3Rpb24q
IGNvbm5lY3Rpb24oU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKSBjb25z
dCB7IHJldHVybiBtX2Nvbm5lY3Rpb25zLmdldChpZGVudGlmaWVyKTsgfQogCiAgICAgY29uc3Qg
SGFzaE1hcDxTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8Q29u
bmVjdGlvbj4+JiBjb25uZWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbnM7IH0K
LSAgICBjb25zdCBIYXNoU2V0PFN0cmluZz4gcmVnaXN0ZXJlZFNjaGVtZXMoKSBjb25zdCB7IHJl
dHVybiBtX3JlZ2lzdGVyZWRTY2hlbWVzOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjYW5I
YW5kbGVTY2hlbWUoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAKICAgICBTV09yaWdpblN0b3JlJiBv
cmlnaW5TdG9yZSgpIHsgcmV0dXJuIG1fb3JpZ2luU3RvcmU7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5j
cHAKaW5kZXggNzc4YWU3ZDZjODMzNzdlN2QxZTQyZmVkNzIwYzMzYzc1N2ZlMmQxZi4uOGM0YTAw
NWQxMzFlZDJiMDNiMWRlODRmYTMxNDIzMzZhMWVjZTFkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3Bw
CkBAIC0yNTksNyArMjU5LDcgQEAgdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpydW5SZWdpc3Rlckpv
Yihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iKQogewogICAgIEFTU0VSVChqb2IudHlw
ZSA9PSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6UmVnaXN0ZXIpOwogCi0gICAgaWYgKCFzaG91bGRU
cmVhdEFzUG90ZW50aWFsbHlUcnVzdHdvcnRoeShqb2Iuc2NyaXB0VVJMKSAmJiAhbV9zZXJ2ZXIu
cmVnaXN0ZXJlZFNjaGVtZXMoKS5jb250YWlucyhqb2Iuc2NyaXB0VVJMLnByb3RvY29sKCkudG9T
dHJpbmdXaXRob3V0Q29weWluZygpKSkKKyAgICBpZiAoIXNob3VsZFRyZWF0QXNQb3RlbnRpYWxs
eVRydXN0d29ydGh5KGpvYi5zY3JpcHRVUkwpICYmICFtX3NlcnZlci5jYW5IYW5kbGVTY2hlbWUo
am9iLnNjcmlwdFVSTC5wcm90b2NvbCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkpCiAgICAg
ICAgIHJldHVybiByZWplY3RDdXJyZW50Sm9iKEV4Y2VwdGlvbkRhdGEgeyBTZWN1cml0eUVycm9y
LCAiU2NyaXB0IFVSTCBpcyBub3QgcG90ZW50aWFsbHkgdHJ1c3R3b3J0aHkiX3MgfSk7CiAKICAg
ICAvLyBJZiB0aGUgb3JpZ2luIG9mIGpvYidzIHNjcmlwdCB1cmwgaXMgbm90IGpvYidzIHJlZmVy
cmVyJ3Mgb3JpZ2luLCB0aGVuOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3Rz
LnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXggZjdjZDE4YmQyOTIzM2I4
NThmZTdjN2RkMzc1YTlhOTk2M2E2OTI2ZS4uMWUwNmU2MjYwY2QyZDk0ZTI0ODA4ZWI1N2YwNDI3
MGYxMzUzYTQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC0xOTAsNyArMTkwLDYgQEAgc2V0KFdl
YktpdF9NRVNTQUdFU19JTl9GSUxFUwogICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KICAgICBXZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJveHkubWVzc2FnZXMuaW4KIAotICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNl
V29ya2VyQ2xpZW50RmV0Y2gubWVzc2FnZXMuaW4KICAgICBXZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDbGllbnRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAgICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCAyZTQ3NjYwODU0MDNkNDIw
N2YyYmYxNzJlOTljNzg0NjkwYTljY2UxLi5mMWFkYWQ2MjY5ZDAxMmNhYjFkZDcyYjU5MDUyNThl
ZjkwOWY5NWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2Zp
bGVsaXN0CkBAIC0xMDUsNyArMTA1LDYgQEAgJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9E
SVIpL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0
aW9uTWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb3h5Lm1lc3NhZ2VzLmluCi0kKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1N0b3Jh
Z2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBS
T0pFQ1RfRElSKS9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCBiZDlkZDdmNjMzYzE3YmNmMjk5MDg3
N2YxZGUzYWFlNGE4ZmI0N2FjLi4xYzVkMjE0ZDAwNzFkMjY4NGZkY2M4YjhlNGFjOWM2NWJkOTdk
YjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QKQEAgLTgwLDggKzgwLDYgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvUmVtb3RlV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZVdlYkluc3BlY3RvclVJTWVz
c2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvU2Vj
SXRlbVNoaW1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1NlY0l0ZW1TaGltUHJveHlNZXNzYWdlcy5oCi0kKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TZXJ2aWNlV29ya2VyQ2xpZW50
RmV0Y2hNZXNzYWdlUmVjZWl2ZXIuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlcy5oCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvU2VydmljZVdvcmtlckZldGNoVGFza01lc3NhZ2VzLmgKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRy
b2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXgg
OWRlNzA0MjY2YWZlZTUxMzZlNjVlODQ3ODFiNWEwMjUyNTE1N2FjOS4uYmFlN2MzMTllNDc2NDQ1
YTljZTM2ZTYyZDc2ZWZlZGRmNjZhYjEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJp
dmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpA
QCAtMTMyLDcgKzEzMiw2IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFJlbW90ZVdlYklu
c3BlY3RvclByb3h5IFwKICAgICBSZW1vdGVXZWJJbnNwZWN0b3JVSSBcCiAgICAgU2VjSXRlbVNo
aW1Qcm94eSBcCi0gICAgU2VydmljZVdvcmtlckNsaWVudEZldGNoIFwKICAgICBTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrIFwKICAgICBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyIFwKICAgICBT
dG9yYWdlQXJlYU1hcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDYyMThhNmU5
MGZhYmZmNDQxOTM1ZWUwMWE3NWZkOWY1ZDlkMGE0NjYuLmNiNTBlYmFjMTBiOTAzMmFlMjU1MzQ5
ODVlNTBjNzdjNzgyOWZkMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC00MDYs
OSArNDA2LDEzIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNjaGVkdWxl
UmVzb3VyY2VMb2FkKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhCiAgICAgUkVMRUFTRV9BU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwogICAgIEFTU0VSVCghbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJz
LmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKIAotICAgIGF1dG8gbG9hZGVyID0gTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpjcmVhdGUoV1RGTW92ZShsb2FkUGFyYW1ldGVycyksICp0aGlzKTsKLSAgICBt
X25ldHdvcmtSZXNvdXJjZUxvYWRlcnMuYWRkKGlkZW50aWZpZXIsIGxvYWRlci5jb3B5UmVmKCkp
OworICAgIGF1dG8mIGxvYWRlciA9IG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5hZGQoaWRlbnRp
ZmllciwgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjcmVhdGUoV1RGTW92ZShsb2FkUGFyYW1ldGVy
cyksICp0aGlzKSkuaXRlcmF0b3ItPnZhbHVlOworCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQorICAgIGxvYWRlci0+c3RhcnRXaXRoU2VydmljZVdvcmtlcihtX3N3Q29ubmVjdGlvbi5nZXQo
KSk7CisjZWxzZQogICAgIGxvYWRlci0+c3RhcnQoKTsKKyNlbmRpZgogfQogCiB2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwZXJmb3JtU3luY2hyb25vdXNMb2FkKE5ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMsIE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJl
cGx5JiYgcmVwbHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4IGUyOGM3ZDE0YmQx
MGE0Yzc0YTc0YzU0ZjE0NjJkYjU5NDIzMDEzYzUuLmNmYTU0OTI0OWMxODMzZWY2NDQ1OTdjZDQw
YzY1NWI4MTUxZDIwNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCkBAIC0xMDcsNiAr
MTA3LDEyIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZShJUEM6
OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBmcmFtZUFuY2VzdG9yT3Jp
Z2luczsKICAgICBlbmNvZGVyIDw8IGlzSFRUUFNVcGdyYWRlRW5hYmxlZDsKIAorI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKKyAgICBlbmNvZGVyIDw8IHNlcnZpY2VXb3JrZXJzTW9kZTsKKyAg
ICBlbmNvZGVyIDw8IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOworICAgIGVu
Y29kZXIgPDwgaHR0cEhlYWRlcnNUb0tlZXA7CisjZW5kaWYKKwogI2lmIEVOQUJMRShDT05URU5U
X0VYVEVOU0lPTlMpCiAgICAgZW5jb2RlciA8PCBtYWluRG9jdW1lbnRVUkw7CiAgICAgZW5jb2Rl
ciA8PCB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwpAQCAtMjQyLDcgKzI0OCwyNyBA
QCBPcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycz4gTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnM6OmRlY29kZShJUAogICAgIGlmICghaXNIVFRQU1VwZ3JhZGVFbmFibGVk
KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIHJlc3VsdC5pc0hUVFBTVXBncmFk
ZUVuYWJsZWQgPSAqaXNIVFRQU1VwZ3JhZGVFbmFibGVkOwotICAgIAorCisjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQorICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJzTW9kZT4gc2VydmljZVdv
cmtlcnNNb2RlOworICAgIGRlY29kZXIgPj4gc2VydmljZVdvcmtlcnNNb2RlOworICAgIGlmICgh
c2VydmljZVdvcmtlcnNNb2RlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJl
c3VsdC5zZXJ2aWNlV29ya2Vyc01vZGUgPSAqc2VydmljZVdvcmtlcnNNb2RlOworCisgICAgT3B0
aW9uYWw8T3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+PiBzZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+IHNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOworICAgIGlmICghc2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbklkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmVz
dWx0LnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyID0gKnNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyOworCisgICAgT3B0aW9uYWw8SGFzaFNldDxIVFRQSGVhZGVy
TmFtZSwgV1RGOjpJbnRIYXNoPEhUVFBIZWFkZXJOYW1lPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRy
YWl0czxIVFRQSGVhZGVyTmFtZT4+PiBodHRwSGVhZGVyc1RvS2VlcDsKKyAgICBkZWNvZGVyID4+
IGh0dHBIZWFkZXJzVG9LZWVwOworICAgIGlmICghaHR0cEhlYWRlcnNUb0tlZXApCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmVzdWx0Lmh0dHBIZWFkZXJzVG9LZWVwID0gV1RG
TW92ZSgqaHR0cEhlYWRlcnNUb0tlZXApOworI2VuZGlmCisKICNpZiBFTkFCTEUoQ09OVEVOVF9F
WFRFTlNJT05TKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1haW5Eb2N1bWVudFVS
TCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgK
aW5kZXggMTIwMzQ3MDRkYTkyN2I1YTJmYzFiNWNlZmU5OWJiZjgyYmZkZjU3NC4uOWNkNWI0NTVj
NzI1NTczNDlhMDAzOWQ4ZmQxYzI3NDVhNGI1NzMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMu
aApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNl
SGVhZGVycy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hPcHRpb25zLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9IVFRQSGVhZGVyTmFtZXMuaD4KICNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogCiBu
YW1lc3BhY2UgSVBDIHsKQEAgLTYwLDYgKzYxLDEyIEBAIHB1YmxpYzoKICAgICBWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4gZnJhbWVBbmNlc3Rvck9yaWdpbnM7CiAgICAg
Ym9vbCBpc0hUVFBTVXBncmFkZUVuYWJsZWQgeyBmYWxzZSB9OwogCisjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQorICAgIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJzTW9kZSBzZXJ2aWNlV29ya2Vy
c01vZGUgeyBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vyc01vZGU6Ok5vbmUgfTsKKyAgICBPcHRpb25h
bDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4gc2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI7CisgICAgSGFzaFNldDxXZWJDb3JlOjpIVFRQSGVh
ZGVyTmFtZSwgV1RGOjpJbnRIYXNoPFdlYkNvcmU6OkhUVFBIZWFkZXJOYW1lPiwgV1RGOjpTdHJv
bmdFbnVtSGFzaFRyYWl0czxXZWJDb3JlOjpIVFRQSGVhZGVyTmFtZT4+IGh0dHBIZWFkZXJzVG9L
ZWVwOworI2VuZGlmCisKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIFVSTCBt
YWluRG9jdW1lbnRVUkw7CiAgICAgT3B0aW9uYWw8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRp
Zmllcj4gdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBm
YjM3MmQ3OWRlY2I5NmNlYTUxYjdjZTQzMTNmZjQ2ODExYzE5ZGJkLi45MmFmNzFlMTQ3MDNjNTg0
NTdhOWMzZDQ0ODk5ZDVlYThlMTZhZDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0zNzksNiArMzc5LDEx
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjphYm9ydCgpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgaWYgKGF1dG8gdGFzayA9
IFdURk1vdmUobV9zZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKSkKKyAgICAgICAgdGFzay0+Y2FuY2Vs
RnJvbUNsaWVudCgpOworI2VuZGlmCisKICAgICBpZiAobV9uZXR3b3JrTG9hZCkgewogICAgICAg
ICBpZiAoY2FuVXNlQ2FjaGUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKSkpIHsKICAg
ICAgICAgICAgIC8vIFdlIG1pZ2h0IGFscmVhZHkgaGF2ZSB1c2VkIGRhdGEgZnJvbSB0aGlzIGlu
Y29tcGxldGUgbG9hZC4gRW5zdXJlIG9sZGVyIHZlcnNpb25zIGRvbid0IHJlbWFpbiBpbiB0aGUg
Y2FjaGUgYWZ0ZXIgY2FuY2VsLgpAQCAtNjEyLDggKzYxNywxNiBAQCB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6ZGlkRmFpbExvYWRpbmcoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAg
ICAgaWYgKGlzU3luY2hyb25vdXMoKSkgewogICAgICAgICBtX3N5bmNocm9ub3VzTG9hZERhdGEt
PmVycm9yID0gZXJyb3I7CiAgICAgICAgIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KCpt
X3N5bmNocm9ub3VzTG9hZERhdGEsIG51bGxwdHIpOwotICAgIH0gZWxzZSBpZiAoYXV0byogY29u
bmVjdGlvbiA9IG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkpCisgICAgfSBlbHNlIGlmIChhdXRv
KiBjb25uZWN0aW9uID0gbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSkgeworI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKKyAgICAgICAgaWYgKG1fc2VydmljZVdvcmtlckZldGNoVGFzaykKKyAg
ICAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpE
aWRGYWlsU2VydmljZVdvcmtlckxvYWQoZXJyb3IpLCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25J
RCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZhaWxSZXNvdXJjZUxvYWQoZXJyb3IpLCBtZXNzYWdl
U2VuZGVyRGVzdGluYXRpb25JRCgpKTsKKyNlbHNlCiAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGYWlsUmVzb3VyY2VMb2FkKGVycm9yKSwg
bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSk7CisjZW5kaWYKKyAgICB9CiAKICAgICBjbGVh
bnVwKExvYWRSZXN1bHQ6OkZhaWx1cmUpOwogfQpAQCAtNzQ3LDYgKzc2MCwxMCBAQCB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6cmVzdGFydE5ldHdvcmtMb2FkKFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmIG5ld1JlcQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVX
aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgYm9vbCBpc0FsbG93
ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscykKIHsKKyAgICBpZiAobV9zZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrKSB7CisgICAgICAgIG1fc2VydmljZVdvcmtlckZldGNoVGFzay0+Y29udGludWVGZXRj
aFRhc2tXaXRoKFdURk1vdmUobmV3UmVxdWVzdCkpOworICAgICAgICByZXR1cm47CisgICAgfQog
ICAgIGlmIChtX3Nob3VsZFJlc3RhcnRMb2FkKSB7CiAgICAgICAgIG1fc2hvdWxkUmVzdGFydExv
YWQgPSBmYWxzZTsKIApAQCAtNzkyLDYgKzgwOSwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVz
dAogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2UoKQogeworICAgIGlmIChtX3NlcnZpY2VXb3JrZXJGZXRjaFRhc2spIHsKKyAgICAgICAgbV9z
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLT5jb250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAobV9jYWNoZUVudHJ5V2FpdGluZ0Zv
ckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKSB7CiAgICAgICAgIHNlbmRSZXN1bHRGb3JDYWNo
ZUVudHJ5KFdURk1vdmUobV9jYWNoZUVudHJ5V2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlKSk7CiAgICAgICAgIGNsZWFudXAoTG9hZFJlc3VsdDo6U3VjY2Vzcyk7CkBAIC0xMTk2
LDYgKzEyMTgsMzAgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmlzQ3Jvc3NPcmlnaW5Q
cmVmZXRjaCgpIGNvbnN0CiAgICAgcmV0dXJuIHJlcXVlc3QuaHR0cEhlYWRlckZpZWxkKEhUVFBI
ZWFkZXJOYW1lOjpQdXJwb3NlKSA9PSAicHJlZmV0Y2giICYmICFtX3BhcmFtZXRlcnMuc291cmNl
T3JpZ2luLT5jYW5SZXF1ZXN0KHJlcXVlc3QudXJsKCkpOwogfQogCisjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0V2l0aFNlcnZpY2VX
b3JrZXIoV2ViU1dTZXJ2ZXJDb25uZWN0aW9uKiBzd0Nvbm5lY3Rpb24pCit7CisgICAgQVNTRVJU
KCFtX3NlcnZpY2VXb3JrZXJGZXRjaFRhc2spOworICAgIG1fc2VydmljZVdvcmtlckZldGNoVGFz
ayA9IHN3Q29ubmVjdGlvbiA/IHN3Q29ubmVjdGlvbi0+Y3JlYXRlRmV0Y2hUYXNrKCp0aGlzKSA6
IG51bGxwdHI7CisgICAgaWYgKG1fc2VydmljZVdvcmtlckZldGNoVGFzaykKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKG1fcGFyYW1ldGVycy5zZXJ2aWNlV29ya2Vyc01vZGUgPT0gU2Vydmlj
ZVdvcmtlcnNNb2RlOjpPbmx5KSB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNl
TG9hZGVyOjpTZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlIHsgfSwgaWRlbnRpZmllcigpKTsKKyAg
ICAgICAgYWJvcnQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBzdGFydCgpOworfQor
Cit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSgp
Cit7CisgICAgbV9zZXJ2aWNlV29ya2VyRmV0Y2hUYXNrID0gbnVsbHB0cjsKKyAgICBzdGFydCgp
OworfQorCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBSRUxFQVNF
X0xPR19JRl9BTExPV0VECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCBkNjUwNzJiNzJiZDQxMzE0MWEwNmIyODdjNDUy
NjliZTQyYWYwNzc2Li43MWY4MWJiNDYyNWQ4MzQ1YzY0ODA3MjdmOGE2NTRjMzY3Y2Y3ZGVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmgKQEAgLTUxLDYgKzUxLDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKIGNsYXNzIE5ldHdvcmtMb2FkOwogY2xhc3MgTmV0
d29ya0xvYWRDaGVja2VyOworY2xhc3MgU2VydmljZVdvcmtlckZldGNoVGFzazsKK2NsYXNzIFdl
YlNXU2VydmVyQ29ubmVjdGlvbjsKIAogbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiBjbGFzcyBF
bnRyeTsKQEAgLTg4LDcgKzkwLDggQEAgcHVibGljOgogICAgIFJlc291cmNlTG9hZElkZW50aWZp
ZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyOyB9
CiAgICAgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQoKSBjb25zdCB7IHJldHVybiBt
X3BhcmFtZXRlcnMud2ViRnJhbWVJRDsgfQogICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQ7IH0KLSAgICAKKyAg
ICBjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYgcGFyYW1ldGVycygpIGNvbnN0
IHsgcmV0dXJuIG1fcGFyYW1ldGVyczsgfQorCiAgICAgTmV0d29ya0NhY2hlOjpHbG9iYWxGcmFt
ZUlEIGdsb2JhbEZyYW1lSUQoKSB7IHJldHVybiB7IG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJ
RCwgcGFnZUlEKCksIGZyYW1lSUQoKSB9OyB9CiAKICAgICBzdHJ1Y3QgU3luY2hyb25vdXNMb2Fk
RGF0YTsKQEAgLTEyMiw2ICsxMjUsMTEgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0tlcHRBbGl2
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNLZXB0QWxpdmU7IH0KIAorI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKKyAgICB2b2lkIHN0YXJ0V2l0aFNlcnZpY2VXb3JrZXIoV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uKik7CisgICAgdm9pZCBzZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlKCk7CisjZW5kaWYK
KwogcHJpdmF0ZToKICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMmJiwgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRl
bGF5ZWRSZXBseSYmKTsKIApAQCAtMjIwLDYgKzIyOCw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X2lzS2VwdEFsaXZlIHsgZmFsc2UgfTsKIAogICAgIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRy
YWNrZXI+IG1fbmV0d29ya0FjdGl2aXR5VHJhY2tlcjsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCisgICAgc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+IG1fc2Vydmlj
ZVdvcmtlckZldGNoVGFzazsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlckZldGNoVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKaW5kZXggODM0YjU2OWU0MjI3
NWYxMzQ4N2VjNzdkZWExNWUwYmMzZjBhYTI1Zi4uMjU2MDI4N2U5YWYyM2ZlYjVmZjAxNTQ0OTVh
OGY2ZDQxMjZjMzFlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNw
cApAQCAtMzIsMTAgKzMyLDE0IEBACiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1
ZGUgIkZvcm1EYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUg
IlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3MuaCIKKyNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgiCi0jaW5jbHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2Vi
UmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oPgog
CiAjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lG
KG1fc2Vzc2lvbklELmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBTZXJ2aWNlV29ya2VyLCAi
JXAgLSBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykK
ICNkZWZpbmUgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9M
T0dfRVJST1JfSUYobV9zZXNzaW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFNlcnZp
Y2VXb3JrZXIsICIlcCAtIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OiIgZm10LCB0aGlzLCAjI19f
VkFfQVJHU19fKQpAQCAtNDQsODAgKzQ4LDEzOSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2soUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJTV1NlcnZlckNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4
dENvbm5lY3Rpb24sIEZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIsIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTZWNvbmRzIHRpbWVvdXQpCitT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgTmV0d29ya1Jlc291cmNlTG9hZGVyJiBsb2FkZXIsIFNXU2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQogICAgIDogbV9zZXNzaW9uSUQo
c2Vzc2lvbklEKQotICAgICwgbV9jb25uZWN0aW9uKG1ha2VXZWFrUHRyKGNvbm5lY3Rpb24pKQot
ICAgICwgbV9jb250ZXh0Q29ubmVjdGlvbihjb250ZXh0Q29ubmVjdGlvbikKLSAgICAsIG1faWRl
bnRpZmllciB7IGNvbm5lY3Rpb24uaWRlbnRpZmllcigpLCBmZXRjaElkZW50aWZpZXIgfQorICAg
ICwgbV9sb2FkZXIobG9hZGVyKQorICAgICwgbV9mZXRjaElkZW50aWZpZXIoV2ViQ29yZTo6RmV0
Y2hJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQorICAgICwgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllcihzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikKICAgICAsIG1fc2VydmljZVdvcmtlcklk
ZW50aWZpZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIpCi0gICAgLCBtX3RpbWVvdXQodGltZW91
dCkKICAgICAsIG1fdGltZW91dFRpbWVyKCp0aGlzLCAmU2VydmljZVdvcmtlckZldGNoVGFzazo6
dGltZW91dFRpbWVyRmlyZWQpCiB7Ci0gICAgbV90aW1lb3V0VGltZXIuc3RhcnRPbmVTaG90KG1f
dGltZW91dCk7CisgICAgbV90aW1lb3V0VGltZXIuc3RhcnRPbmVTaG90KGxvYWRlci5jb25uZWN0
aW9uVG9XZWJQcm9jZXNzKCkubmV0d29ya1Byb2Nlc3MoKS5zZXJ2aWNlV29ya2VyRmV0Y2hUaW1l
b3V0KCkpOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZWRp
cmVjdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorU2VydmljZVdv
cmtlckZldGNoVGFzazo6flNlcnZpY2VXb3JrZXJGZXRjaFRhc2soKQogewotICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlOiAlcyIsIG1faWRlbnRp
Zmllci5mZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAg
IG1fdGltZW91dFRpbWVyLnN0b3AoKTsKKyAgICBpZiAobV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlv
bikKKyAgICAgICAgbV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbi0+dW5yZWdpc3RlckZldGNoKCp0
aGlzKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgTWVzc2FnZT4gYm9vbCBTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOjpzZW5kVG9TZXJ2aWNlV29ya2VyKE1lc3NhZ2UmJiBtZXNzYWdlKQoreworICAg
IHJldHVybiBtX3NlcnZpY2VXb3JrZXJDb25uZWN0aW9uID8gbV9zZXJ2aWNlV29ya2VyQ29ubmVj
dGlvbi0+aXBjQ29ubmVjdGlvbigpLnNlbmQoc3RkOjpmb3J3YXJkPE1lc3NhZ2U+KG1lc3NhZ2Up
LCAwKSA6IGZhbHNlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBNZXNzYWdlPiBib29sIFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OnNlbmRUb0NsaWVudChNZXNzYWdlJiYgbWVzc2FnZSkKK3sKKyAg
ICByZXR1cm4gbV9sb2FkZXIuY29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNvbm5lY3Rpb24oKS5z
ZW5kKHN0ZDo6Zm9yd2FyZDxNZXNzYWdlPihtZXNzYWdlKSwgbV9sb2FkZXIuaWRlbnRpZmllcigp
KTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpzdGFydChXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24mIHNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKQoreworICAgIG1fc2Vy
dmljZVdvcmtlckNvbm5lY3Rpb24gPSBtYWtlV2Vha1B0cihzZXJ2aWNlV29ya2VyQ29ubmVjdGlv
bik7CisgICAgc2VydmljZVdvcmtlckNvbm5lY3Rpb24ucmVnaXN0ZXJGZXRjaCgqdGhpcyk7CisK
KyAgICBzdGFydEZldGNoKFJlc291cmNlUmVxdWVzdCB7IG1fbG9hZGVyLm9yaWdpbmFsUmVxdWVz
dCgpIH0sIHNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOjpzdGFydEZldGNoKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgc2VydmljZVdvcmtlckNvbm5lY3Rpb24pCit7CisgICAg
bV9jdXJyZW50UmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCk7CisKKyAgICBhdXRvJiBvcHRpb25z
ID0gbV9sb2FkZXIucGFyYW1ldGVycygpLm9wdGlvbnM7CisgICAgYXV0byByZWZlcnJlciA9IG1f
Y3VycmVudFJlcXVlc3QuaHR0cFJlZmVycmVyKCk7CisKKyAgICAvLyBXZSBhcmUgaW50ZXJjZXB0
aW5nIGZldGNoIGNhbGxzIGFmdGVyIGdvaW5nIHRocm91Z2ggdGhlIEhUVFAgbGF5ZXIsIHdoaWNo
IG1heSBhZGQgc29tZSBzcGVjaWZpYyBoZWFkZXJzLgorICAgIGNsZWFuSFRUUFJlcXVlc3RIZWFk
ZXJzRm9yQWNjZXNzQ29udHJvbChtX2N1cnJlbnRSZXF1ZXN0LCBtX2xvYWRlci5wYXJhbWV0ZXJz
KCkuaHR0cEhlYWRlcnNUb0tlZXApOworCisgICAgYm9vbCBpc1NlbnQgPSBzZW5kVG9TZXJ2aWNl
V29ya2VyKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U3RhcnRGZXRj
aCB7IG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIG1fc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIG1fZmV0Y2hJZGVudGlmaWVyLCBtX2N1cnJlbnRSZXF1ZXN0LCBvcHRpb25zLCBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlIHsgbV9jdXJyZW50UmVxdWVzdC5odHRwQm9keSgpIH0sIHJlZmVycmVy
IH0pOworICAgIEFTU0VSVF9VTlVTRUQoaXNTZW50LCBpc1NlbnQpOworfQorCit2b2lkIFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKFJlc291cmNlUmVz
cG9uc2UmJiByZXNwb25zZSkKK3sKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNl
aXZlUmVkaXJlY3RSZXNwb25zZTogJXMiLCBtX2ZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CiAgICAgbV93YXNIYW5kbGVkID0gdHJ1ZTsKLSAgICBpZiAobV9j
b25uZWN0aW9uKQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VX
b3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgeyByZXNwb25zZSB9
LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKKworICAgIHJlc3BvbnNlLnNldFNvdXJj
ZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OlNlcnZpY2VXb3JrZXIpOworICAgIGF1dG8gbmV3
UmVxdWVzdCA9IG1fY3VycmVudFJlcXVlc3QucmVkaXJlY3RlZFJlcXVlc3QocmVzcG9uc2UsIG1f
bG9hZGVyLnBhcmFtZXRlcnMoKS5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGly
ZWN0KTsKKworICAgIHNlbmRUb0NsaWVudChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6Oldp
bGxTZW5kUmVxdWVzdCB7IG5ld1JlcXVlc3QsIHJlc3BvbnNlIH0pOwogfQogCi12b2lkIFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2Fn
ZSkKK3ZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291
cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlTWVzc2FnZSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVz
cG9uc2U6ICVzIiwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJl
c3BvbnNlOiAlcyIsIG1fZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKICAgICBtX3RpbWVvdXRUaW1lci5zdG9wKCk7CiAgICAgbV93YXNIYW5kbGVkID0gdHJ1
ZTsKLSAgICBpZiAobV9jb25uZWN0aW9uKQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVz
cG9uc2UsIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0sIG1faWRlbnRp
Zmllci5mZXRjaElkZW50aWZpZXIpOworICAgIHJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJl
c3BvbnNlOjpTb3VyY2U6OlNlcnZpY2VXb3JrZXIpOworCisgICAgc2VuZFRvQ2xpZW50KE1lc3Nh
Z2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG5l
ZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0pOwogfQogCiB2b2lkIFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIW1fdGlt
ZW91dFRpbWVyLmlzQWN0aXZlKCkpOwotICAgIGlmIChtX2Nvbm5lY3Rpb24pCi0gICAgICAgIG1f
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRS
ZWNlaXZlRGF0YSB7IGRhdGEsIGVuY29kZWREYXRhTGVuZ3RoIH0sIG1faWRlbnRpZmllci5mZXRj
aElkZW50aWZpZXIpOworICAgIHNlbmRUb0NsaWVudChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2Fk
ZXI6OkRpZFJlY2VpdmVEYXRhIHsgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHsgZGF0
YS5kYXRhKCksIGRhdGEuc2l6ZSgpIH0sIGVuY29kZWREYXRhTGVuZ3RoIH0pOwogfQogCiB2b2lk
IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVGb3JtRGF0YShjb25zdCBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlJiBmb3JtRGF0YSkKIHsKICAgICBBU1NFUlQoIW1fdGltZW91dFRpbWVy
LmlzQWN0aXZlKCkpOwotICAgIGlmIChtX2Nvbm5lY3Rpb24pCi0gICAgICAgIG1fY29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRSZWNlaXZlRm9y
bURhdGEgeyBmb3JtRGF0YSB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKKyAgICAv
LyBGSVhNRTogQWxsb3cgV2ViUmVzb3VyY2VMb2FkZXIgdG8gcmVjZWl2ZSBmb3JtIGRhdGEuCiB9
CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkRmluaXNoKCkKIHsKICAgICBBU1NF
UlQoIW1fdGltZW91dFRpbWVyLmlzQWN0aXZlKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoImRpZEZpbmlzaEZldGNoOiBmZXRjaElkZW50aWZpZXI6ICVzIiwgbV9pZGVudGlmaWVyLmZl
dGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgiZGlkRmluaXNoRmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMiLCBt
X2ZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgbV90
aW1lb3V0VGltZXIuc3RvcCgpOwotICAgIGlmIChtX2Nvbm5lY3Rpb24pCi0gICAgICAgIG1fY29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRGaW5p
c2ggeyB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKKyAgICBzZW5kVG9DbGllbnQo
TWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJjZUxvYWQgeyB7IH0g
fSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkRmFpbChjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJk
aWRGYWlsRmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMiLCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVu
dGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBtX3RpbWVvdXRUaW1l
ci5zdG9wKCk7Ci0gICAgaWYgKG1fY29ubmVjdGlvbikKLSAgICAgICAgbV9jb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZEZhaWwgeyBlcnJvciB9
LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9J
Rl9BTExPV0VEKCJkaWRGYWlsRmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMiLCBtX2ZldGNoSWRl
bnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgbV9sb2FkZXIuZGlk
RmFpbExvYWRpbmcoZXJyb3IpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRp
ZE5vdEhhbmRsZSgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkTm90SGFuZGxl
RmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMiLCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVy
LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJkaWROb3RIYW5kbGVGZXRjaDogZmV0Y2hJZGVudGlmaWVyOiAlcyIsIG1fZmV0Y2hJZGVu
dGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBtX3RpbWVvdXRUaW1l
ci5zdG9wKCk7Ci0gICAgaWYgKG1fY29ubmVjdGlvbikKLSAgICAgICAgbV9jb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZE5vdEhhbmRsZSB7IH0s
IG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOworICAgIGlmIChtX2xvYWRlci5wYXJhbWV0
ZXJzKCkuc2VydmljZVdvcmtlcnNNb2RlID09IFNlcnZpY2VXb3JrZXJzTW9kZTo6T25seSkgewor
ICAgICAgICBzZW5kVG9DbGllbnQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpTZXJ2aWNl
V29ya2VyRGlkTm90SGFuZGxlIHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9s
b2FkZXIuc2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSgpOworfQorCit2b2lkIFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OmNhbmNlbEZyb21DbGllbnQoKQoreworICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoImNhbmNlbEZyb21DbGllbnQ6IGZldGNoSWRlbnRpZmllcjogJXMiLCBtX2ZldGNoSWRl
bnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgc2VuZFRvU2Vydmlj
ZVdvcmtlcihNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkNhbmNlbEZl
dGNoIHsgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgbV9zZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgbV9mZXRjaElkZW50aWZpZXIgfSk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlckZldGNo
VGFzazo6Y29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSgpCit7CisgICAgc2VuZFRvU2Vy
dmljZVdvcmtlcihNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkNvbnRp
bnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UgeyBtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
LCBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBtX2ZldGNoSWRlbnRpZmllciB9KTsKK30KKwor
dm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpjb250aW51ZUZldGNoVGFza1dpdGgoUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCkKK3sKKyAgICBpZiAoIW1fc2VydmljZVdvcmtlckNvbm5lY3Rp
b24pIHsKKyAgICAgICAgbV9sb2FkZXIuc2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIHN0YXJ0RmV0Y2goV1RGTW92ZShyZXF1ZXN0KSwgKm1f
c2VydmljZVdvcmtlckNvbm5lY3Rpb24pOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s6OnRpbWVvdXRUaW1lckZpcmVkKCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ0
aW1lb3V0VGltZXJGaXJlZDogZmV0Y2hJZGVudGlmaWVyOiAlcyIsIG1faWRlbnRpZmllci5mZXRj
aElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIGRpZE5vdEhh
bmRsZSgpOwotICAgIG1fY29udGV4dENvbm5lY3Rpb24uZmV0Y2hUYXNrVGltZWRPdXQoKnRoaXMp
OworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInRpbWVvdXRUaW1lckZpcmVkOiBmZXRjaElk
ZW50aWZpZXI6ICVzIiwgbV9mZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOworICAgIGlmIChtX3NlcnZpY2VXb3JrZXJDb25uZWN0aW9uKQorICAgICAgICBtX3Nl
cnZpY2VXb3JrZXJDb25uZWN0aW9uLT5mZXRjaFRhc2tUaW1lZE91dChzZXJ2aWNlV29ya2VySWRl
bnRpZmllcigpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNo
VGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJGZXRjaFRhc2suaAppbmRleCBkOGI5ZDZmMjU2NjM4MzY3NzJmMjliOWY5Yjk5ZTBh
MGUyNjM5NDVjLi5iZGZkNWU2OTM1OThkYzgwM2ZlZjM4NjRmMjY4ZWZiMWQ2NWFmZjFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlckZldGNoVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKQEAgLTI4LDEyICsyOCwxNSBAQAog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hJZGVu
dGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIu
aD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKK2NsYXNzIFJlc291
cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiB9CiAKQEAgLTQ2LDgyICs0OSw1
OSBAQCBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNs
YXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKK2NsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjsK
IGNsYXNzIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjsKIAotY2xhc3MgU2VydmljZVdv
cmtlckZldGNoVGFzayB7CitjbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2FkZXI7CitjbGFzcyBXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CisKK2NsYXNzIFNlcnZpY2VXb3JrZXJGZXRjaFRh
c2sgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U2VydmljZVdvcmtlckZldGNoVGFzaz4gewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFNlcnZpY2VXb3JrZXJGZXRj
aFRhc2soUEFMOjpTZXNzaW9uSUQsIFdlYlNXU2VydmVyQ29ubmVjdGlvbiYsIFdlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbiYsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNlY29uZHMgdGltZW91dCk7CisgICAgU2VydmljZVdv
cmtlckZldGNoVGFzayhQQUw6OlNlc3Npb25JRCwgTmV0d29ya1Jlc291cmNlTG9hZGVyJiwgV2Vi
Q29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIpOworICAgIH5TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKCk7CiAKLSAgICB2b2lk
IGRpZE5vdEhhbmRsZSgpOworICAgIHZvaWQgc3RhcnQoV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uJik7CisgICAgdm9pZCBjYW5jZWxGcm9tQ2xpZW50KCk7CiAgICAgdm9pZCBmYWlsKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKSB7IGRpZEZhaWwoZXJyb3IpOyB9CiAg
ICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KTsKIAotICAgIHN0cnVjdCBJZGVudGlmaWVyIHsKLSAgICAgICAgV2ViQ29yZTo6U1dTZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcjsKLSAgICAgICAgV2ViQ29y
ZTo6RmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllcjsKLSAgICAgICAgCi0gICAgICAgIHVu
c2lnbmVkIGhhc2goKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBoYXNo
ZXNbMl07Ci0gICAgICAgICAgICBoYXNoZXNbMF0gPSBXVEY6OmludEhhc2goY29ubmVjdGlvbklk
ZW50aWZpZXIudG9VSW50NjQoKSk7Ci0gICAgICAgICAgICBoYXNoZXNbMV0gPSBXVEY6OmludEhh
c2goZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOwotICAgICAgICAgICAgcmV0dXJuIFN0cmlu
Z0hhc2hlcjo6aGFzaE1lbW9yeShoYXNoZXMsIHNpemVvZihoYXNoZXMpKTsKLSAgICAgICAgfQot
ICAgIH07Ci0KLSAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1
cm4gbV9pZGVudGlmaWVyOyB9Ci0gICAgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXImIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNl
V29ya2VySWRlbnRpZmllcjsgfQorICAgIHZvaWQgY29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNw
b25zZSgpOworICAgIHZvaWQgY29udGludWVGZXRjaFRhc2tXaXRoKFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmKTsKKworICAgIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZp
ZXIoKSBjb25zdCB7IHJldHVybiBtX2ZldGNoSWRlbnRpZmllcjsgfQorICAgIFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZXJ2aWNlV29ya2VySWRlbnRpZmllcjsgfQorCisgICAgdm9pZCBkaWROb3RIYW5k
bGUoKTsKKwogICAgIGJvb2wgd2FzSGFuZGxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzSGFuZGxl
ZDsgfQogCiBwcml2YXRlOgotICAgIHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBib29sIG5lZWRzQ29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZWRpcmVjdFJl
c3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CisgICAgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBib29sIG5lZWRzQ29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZv
aWQgZGlkUmVjZWl2ZUZvcm1EYXRhKGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmKTsKICAg
ICB2b2lkIGRpZEZpbmlzaCgpOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJik7CisKKyAgICB2b2lkIHN0YXJ0RmV0Y2goV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpOworCiAgICAgdm9pZCB0aW1l
b3V0VGltZXJGaXJlZCgpOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWVzc2FnZT4gYm9vbCBz
ZW5kVG9TZXJ2aWNlV29ya2VyKE1lc3NhZ2UmJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWVz
c2FnZT4gYm9vbCBzZW5kVG9DbGllbnQoTWVzc2FnZSYmKTsKKwogICAgIFBBTDo6U2Vzc2lvbklE
IG1fc2Vzc2lvbklEOwotICAgIFdlYWtQdHI8V2ViU1dTZXJ2ZXJDb25uZWN0aW9uPiBtX2Nvbm5l
Y3Rpb247Ci0gICAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBtX2NvbnRleHRDb25u
ZWN0aW9uOwotICAgIElkZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAgIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlciYgbV9sb2FkZXI7CisgICAgV2Vha1B0cjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24+IG1fc2VydmljZVdvcmtlckNvbm5lY3Rpb247CisgICAgV2ViQ29yZTo6RmV0Y2hJZGVu
dGlmaWVyIG1fZmV0Y2hJZGVudGlmaWVyOworICAgIFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcjsKICAgICBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyOwotICAgIFNl
Y29uZHMgbV90aW1lb3V0OworICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX2N1cnJlbnRS
ZXF1ZXN0OwogICAgIFdlYkNvcmU6OlRpbWVyIG1fdGltZW91dFRpbWVyOwogICAgIGJvb2wgbV93
YXNIYW5kbGVkIHsgZmFsc2UgfTsKIH07CiAKLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3Qg
U2VydmljZVdvcmtlckZldGNoVGFzazo6SWRlbnRpZmllciYgYSwgY29uc3QgU2VydmljZVdvcmtl
ckZldGNoVGFzazo6SWRlbnRpZmllciYgYikKLXsKLSAgICByZXR1cm4gYS5jb25uZWN0aW9uSWRl
bnRpZmllciA9PSBiLmNvbm5lY3Rpb25JZGVudGlmaWVyICYmICBhLmZldGNoSWRlbnRpZmllciA9
PSBiLmZldGNoSWRlbnRpZmllcjsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLQotbmFt
ZXNwYWNlIFdURiB7Ci0KLXN0cnVjdCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrSWRlbnRpZmllckhh
c2ggewotICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFdlYktpdDo6U2VydmljZVdvcmtl
ckZldGNoVGFzazo6SWRlbnRpZmllciYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9Ci0gICAg
c3RhdGljIGJvb2wgZXF1YWwoY29uc3QgV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpJ
ZGVudGlmaWVyJiBhLCBjb25zdCBXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OklkZW50
aWZpZXImIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVU
b0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0
IEhhc2hUcmFpdHM8V2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpJZGVudGlmaWVyPiA6
IEdlbmVyaWNIYXNoVHJhaXRzPFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6SWRlbnRp
Zmllcj4gewotICAgIHN0YXRpYyBXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OklkZW50
aWZpZXIgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIHsgfTsgfQotICAgIAotICAgIHN0YXRpYyB2b2lk
IGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6Oklk
ZW50aWZpZXImIHNsb3QpIHsgc2xvdC5jb25uZWN0aW9uSWRlbnRpZmllciA9IG1ha2VPYmplY3RJ
ZGVudGlmaWVyPFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXJUeXBlPihzdGQ6
Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkpOyB9Ci0gICAgCi0gICAgc3RhdGljIGJv
b2wgaXNEZWxldGVkVmFsdWUoY29uc3QgV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpJ
ZGVudGlmaWVyJiBzbG90KSB7IHJldHVybiBzbG90LmNvbm5lY3Rpb25JZGVudGlmaWVyLnRvVUlu
dDY0KCkgPT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpOyB9Ci19OwotCi10
ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s6OklkZW50aWZpZXI+IHsKLSAgICB1c2luZyBIYXNoID0gU2VydmljZVdvcmtlckZldGNoVGFz
a0lkZW50aWZpZXJIYXNoOwotfTsKLQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCA3OWUzMjY1
Y2VkMWVhMjRlODc1YmU1MjBiNzkzMmU4NWI2NDAzMTNmLi5kZDllY2I0YzFjMjhkMjI1MjA0MmI1
Mjk3MDk1OTRlOGMxODE0ODFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
LmNwcApAQCAtMzMsMTYgKzMzLDE4IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUg
Ik5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3
b3JrUHJvY2Vzcy5oIgotI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZGVyTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJXZWJTV0NsaWVudENvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUg
IldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJT
V1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRJZGVudGlmaWVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25EYXRhLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9M
ZWdhY3lTY2hlbWVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1NXU2VydmVyUmVnaXN0cmF0aW9uLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgpAQCAtMTI2LDE4ICsxMjgsOCBAQCB2b2lkIFdlYlNX
U2VydmVyQ29ubmVjdGlvbjo6dXBkYXRlV29ya2VyU3RhdGVJbkNsaWVudChTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciB3bwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6
VXBkYXRlV29ya2VyU3RhdGUod29ya2VyLCBzdGF0ZSkpOwogfQogCi12b2lkIFdlYlNXU2VydmVy
Q29ubmVjdGlvbjo6Y2FuY2VsRmV0Y2goU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIEZldGNoSWRlbnRpZmllciBm
ZXRjaElkZW50aWZpZXIpCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y2FuY2VsRmV0Y2go
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIEZldGNoSWRlbnRpZmllcikKIHsK
LSAgICBTV1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY2FuY2VsRmV0
Y2g6ICVzIiwgZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
LSAgICBhdXRvKiB3b3JrZXIgPSBzZXJ2ZXIoKS5hY3RpdmVXb3JrZXJGcm9tUmVnaXN0cmF0aW9u
SUQoc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpOwotICAgIGlmICghd29ya2Vy
IHx8ICF3b3JrZXItPmlzUnVubmluZygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyID0gd29ya2VyLT5pZGVudGlmaWVyKCk7Ci0gICAgc2VydmVy
KCkucnVuU2VydmljZVdvcmtlcklmTmVjZXNzYXJ5KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBb
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgdGhpcywgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIGZldGNoSWRlbnRpZmllcl0oYXV0byogY29udGV4dENvbm5lY3Rpb24pIG11dGFibGUgewot
ICAgICAgICBpZiAod2Vha1RoaXMgJiYgY29udGV4dENvbm5lY3Rpb24pCi0gICAgICAgICAgICBz
dGF0aWNfY2FzdDxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mPigqY29udGV4dENvbm5l
Y3Rpb24pLmNhbmNlbEZldGNoKHRoaXMtPmlkZW50aWZpZXIoKSwgZmV0Y2hJZGVudGlmaWVyLCBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgfSk7CiB9CiAKIHZvaWQgV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpjb250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
LCBGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyKQpAQCAtMTUzLDU5ICsxNDUsODkgQEAg
dm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9u
c2UoU2VydmljZVdvcmtlclJlZ2lzdHIKICAgICB9KTsKIH0KIAotdm9pZCBXZWJTV1NlcnZlckNv
bm5lY3Rpb246OnN0YXJ0RmV0Y2goU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIg
c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIEZldGNoSWRlbnRpZmllciBmZXRj
aElkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZldGNoT3B0aW9ucyYmIG9w
dGlvbnMsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiBmb3JtRGF0YSwgU3RyaW5nJiYgcmVmZXJy
ZXIpCitzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckZldGNoVGFzaz4gV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpjcmVhdGVGZXRjaFRhc2soTmV0d29ya1Jlc291cmNlTG9hZGVyJiBsb2FkZXIp
CiB7Ci0gICAgYXV0byogd29ya2VyID0gc2VydmVyKCkuYWN0aXZlV29ya2VyRnJvbVJlZ2lzdHJh
dGlvbklEKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKKyAgICBpZiAoIWxv
YWRlci5wYXJhbWV0ZXJzKCkuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKGxvYWRlci5wYXJhbWV0ZXJzKCkuc2Vy
dmljZVdvcmtlcnNNb2RlID09IFNlcnZpY2VXb3JrZXJzTW9kZTo6Tm9uZSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBpZiAoaXNQb3RlbnRpYWxOYXZpZ2F0aW9uT3JTdWJyZXNvdXJj
ZVJlcXVlc3QobG9hZGVyLnBhcmFtZXRlcnMoKS5vcHRpb25zLmRlc3RpbmF0aW9uKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoIXNlcnZlcigpLmNhbkhhbmRsZVNjaGVtZShs
b2FkZXIub3JpZ2luYWxSZXF1ZXN0KCkudXJsKCkucHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRD
b3B5aW5nKCkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8qIHdvcmtlciA9
IHNlcnZlcigpLmFjdGl2ZVdvcmtlckZyb21SZWdpc3RyYXRpb25JRCgqbG9hZGVyLnBhcmFtZXRl
cnMoKS5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CiAgICAgaWYgKCF3b3Jr
ZXIpIHsKLSAgICAgICAgU1dTRVJWRVJDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SX0lGX0FM
TE9XRUQoInN0YXJ0RmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMgLT4gRGlkTm90SGFuZGxlIGJl
Y2F1c2Ugbm8gYWN0aXZlIHdvcmtlciIsIGZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVu
dGlmaWVyKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBTV1NFUlZFUkNPTk5FQ1RJT05fUkVM
RUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgic3RhcnRGZXRjaDogRGlkTm90SGFuZGxlIGJlY2F1
c2Ugbm8gYWN0aXZlIHdvcmtlciAlcyIsIGxvYWRlci5wYXJhbWV0ZXJzKCkuc2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXItPmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIGF1dG8gc2VydmljZVdvcmtlcklk
ZW50aWZpZXIgPSB3b3JrZXItPmlkZW50aWZpZXIoKTsKIAotICAgIGF1dG8gcnVuU2VydmVyV29y
a2VyQW5kU3RhcnRGZXRjaCA9IFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCB0aGlzLCBm
ZXRjaElkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCByZXF1ZXN0ID0gV1RGTW92
ZShyZXF1ZXN0KSwgb3B0aW9ucyA9IFdURk1vdmUob3B0aW9ucyksIGZvcm1EYXRhID0gV1RGTW92
ZShmb3JtRGF0YSksIHJlZmVycmVyID0gV1RGTW92ZShyZWZlcnJlcildKGJvb2wgc3VjY2Vzcykg
bXV0YWJsZSB7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgaWYgKHdvcmtlci0+c2hvdWxk
U2tpcEZldGNoRXZlbnQoKSkgeworICAgICAgICBhdXRvKiByZWdpc3RyYXRpb24gPSBzZXJ2ZXIo
KS5nZXRSZWdpc3RyYXRpb24od29ya2VyLT5yZWdpc3RyYXRpb25LZXkoKSk7CisgICAgICAgIGlm
IChyZWdpc3RyYXRpb24gJiYgcmVnaXN0cmF0aW9uLT5zaG91bGRTb2Z0VXBkYXRlKGxvYWRlci5w
YXJhbWV0ZXJzKCkub3B0aW9ucykpCisgICAgICAgICAgICByZWdpc3RyYXRpb24tPnNvZnRVcGRh
dGUoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgYXV0byB0YXNrID0g
bWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPihzZXNzaW9uSUQoKSwgbG9hZGVyLCBp
ZGVudGlmaWVyKCksIHdvcmtlci0+aWRlbnRpZmllcigpKTsKKyAgICBzdGFydEZldGNoKCp0YXNr
LCAqd29ya2VyKTsKKyAgICByZXR1cm4gdGFzazsKK30KKwordm9pZCBXZWJTV1NlcnZlckNvbm5l
Y3Rpb246OnN0YXJ0RmV0Y2goU2VydmljZVdvcmtlckZldGNoVGFzayYgdGFzaywgU1dTZXJ2ZXJX
b3JrZXImIHdvcmtlcikKK3sKKyAgICBhdXRvIHJ1blNlcnZlcldvcmtlckFuZFN0YXJ0RmV0Y2gg
PSBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgdGhpcywgdGFzayA9IG1ha2VXZWFrUHRy
KHRhc2spXShib29sIHN1Y2Nlc3MpIG11dGFibGUgeworICAgICAgICBpZiAoIXRhc2spCiAgICAg
ICAgICAgICByZXR1cm47CiAKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykgeworICAgICAgICAgICAg
dGFzay0+ZGlkTm90SGFuZGxlKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwog
ICAgICAgICBpZiAoIXN1Y2Nlc3MpIHsKLSAgICAgICAgICAgIFNXU0VSVkVSQ09OTkVDVElPTl9S
RUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJzdGFydEZldGNoOiBmZXRjaElkZW50aWZpZXI6
ICVzIERpZE5vdEhhbmRsZSBiZWNhdXNlIHdvcmtlciBkaWQgbm90IGJlY29tZSBhY3RpdmF0ZWQi
LCBmZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAg
ICAgICAgbV9jb250ZW50Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNs
aWVudEZldGNoOjpEaWROb3RIYW5kbGUgeyB9LCBmZXRjaElkZW50aWZpZXIpOworICAgICAgICAg
ICAgU1dTRVJWRVJDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoInN0YXJ0
RmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMgRGlkTm90SGFuZGxlIGJlY2F1c2Ugd29ya2VyIGRp
ZCBub3QgYmVjb21lIGFjdGl2YXRlZCIsIHRhc2stPmZldGNoSWRlbnRpZmllcigpLmxvZ2dpbmdT
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHRhc2stPmRpZE5vdEhhbmRsZSgp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byogd29ya2Vy
ID0gc2VydmVyKCkud29ya2VyQnlJRChzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CisgICAgICAg
IGF1dG8qIHdvcmtlciA9IHNlcnZlcigpLndvcmtlckJ5SUQodGFzay0+c2VydmljZVdvcmtlcklk
ZW50aWZpZXIoKSk7CiAgICAgICAgIGlmICghd29ya2VyIHx8IHdvcmtlci0+aGFzVGltZWRPdXRB
bnlGZXRjaFRhc2tzKCkpIHsKLSAgICAgICAgICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0
Y2hJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIHRhc2stPmRpZE5vdEhhbmRsZSgpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgc2VydmVyKCkucnVuU2VydmljZVdv
cmtlcklmTmVjZXNzYXJ5KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBbd2Vha1RoaXMgPSBXVEZN
b3ZlKHdlYWtUaGlzKSwgdGhpcywgZmV0Y2hJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMgPSBXVEZNb3ZlKG9wdGlv
bnMpLCBmb3JtRGF0YSA9IFdURk1vdmUoZm9ybURhdGEpLCByZWZlcnJlciA9IFdURk1vdmUocmVm
ZXJyZXIpLCBzaG91bGRTa2lwRmV0Y2hFdmVudCA9IHdvcmtlci0+c2hvdWxkU2tpcEZldGNoRXZl
bnQoKV0oYXV0byogY29udGV4dENvbm5lY3Rpb24pIHsKLSAgICAgICAgICAgIGlmICghd2Vha1Ro
aXMpCisgICAgICAgIGlmICghd29ya2VyLT5jb250ZXh0Q29ubmVjdGlvbigpKQorICAgICAgICAg
ICAgc2VydmVyKCkuY3JlYXRlQ29udGV4dENvbm5lY3Rpb24od29ya2VyLT5yZWdpc3RyYWJsZURv
bWFpbigpKTsKKworICAgICAgICBzZXJ2ZXIoKS5ydW5TZXJ2aWNlV29ya2VySWZOZWNlc3Nhcnko
dGFzay0+c2VydmljZVdvcmtlcklkZW50aWZpZXIoKSwgW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFr
VGhpcyksIHRoaXMsIHRhc2sgPSBXVEZNb3ZlKHRhc2spXShhdXRvKiBjb250ZXh0Q29ubmVjdGlv
bikgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXRhc2spCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKSB7CisgICAgICAg
ICAgICAgICAgdGFzay0+ZGlkTm90SGFuZGxlKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoY29udGV4dENvbm5lY3Rpb24pIHsKLSAg
ICAgICAgICAgICAgICBTV1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
c3RhcnRGZXRjaDogU3RhcnRpbmcgZmV0Y2ggJXMgdmlhIHNlcnZpY2Ugd29ya2VyICVzIiwgZmV0
Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJj4oKmNvbnRleHRD
b25uZWN0aW9uKS5zdGFydEZldGNoKHNlc3Npb25JRCgpLCAqdGhpcywgZmV0Y2hJZGVudGlmaWVy
LCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9ucywgZm9ybURhdGEsIHJl
ZmVycmVyKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgU1dTRVJWRVJD
T05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoInN0YXJ0RmV0Y2g6IGZldGNo
SWRlbnRpZmllcjogJXMgRGlkTm90SGFuZGxlIGJlY2F1c2UgZmFpbGVkIHRvIHJ1biBzZXJ2aWNl
IHdvcmtlciwgb3Igc2VydmljZSB3b3JrZXIgaGFzIGhhZCB0aW1lZCBvdXQgZmV0Y2ggdGFza3Mi
LCBmZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAg
ICAgICAgICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3Jr
ZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyKTsKKyAgICAg
ICAgICAgIGlmICghY29udGV4dENvbm5lY3Rpb24pIHsKKyAgICAgICAgICAgICAgICBTV1NFUlZF
UkNPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgic3RhcnRGZXRjaDogZmV0
Y2hJZGVudGlmaWVyOiAlcyBEaWROb3RIYW5kbGUgYmVjYXVzZSBmYWlsZWQgdG8gcnVuIHNlcnZp
Y2Ugd29ya2VyIiwgdGFzay0+ZmV0Y2hJZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOworICAgICAgICAgICAgICAgIHRhc2stPmRpZE5vdEhhbmRsZSgpOworICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFNXU0VSVkVSQ09O
TkVDVElPTl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydEZldGNoOiBTdGFydGluZyBmZXRj
aCAlcyB2aWEgc2VydmljZSB3b3JrZXIgJXMiLCB0YXNrLT5mZXRjaElkZW50aWZpZXIoKS5sb2dn
aW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgdGFzay0+c2VydmljZVdvcmtlcklkZW50aWZpZXIo
KS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mPigqY29udGV4dENvbm5lY3Rpb24pLnN0
YXJ0RmV0Y2goKnRhc2spOwogICAgICAgICB9KTsKICAgICB9OwotCi0gICAgaWYgKHdvcmtlci0+
c2hvdWxkU2tpcEZldGNoRXZlbnQoKSkgewotICAgICAgICBtX2NvbnRlbnRDb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZE5vdEhhbmRsZSB7IH0s
IGZldGNoSWRlbnRpZmllcik7Ci0gICAgICAgIGF1dG8qIHJlZ2lzdHJhdGlvbiA9IHNlcnZlcigp
LmdldFJlZ2lzdHJhdGlvbih3b3JrZXItPnJlZ2lzdHJhdGlvbktleSgpKTsKLSAgICAgICAgaWYg
KHJlZ2lzdHJhdGlvbiAmJiByZWdpc3RyYXRpb24tPnNob3VsZFNvZnRVcGRhdGUob3B0aW9ucykp
Ci0gICAgICAgICAgICByZWdpc3RyYXRpb24tPnNvZnRVcGRhdGUoKTsKKyAgICAKKyAgICBpZiAo
d29ya2VyLnN0YXRlKCkgPT0gU2VydmljZVdvcmtlclN0YXRlOjpBY3RpdmF0aW5nKSB7CisgICAg
ICAgIHdvcmtlci53aGVuQWN0aXZhdGVkKFdURk1vdmUocnVuU2VydmVyV29ya2VyQW5kU3RhcnRG
ZXRjaCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKHdvcmtlci0+c3RhdGUo
KSA9PSBTZXJ2aWNlV29ya2VyU3RhdGU6OkFjdGl2YXRpbmcpIHsKLSAgICAgICAgd29ya2VyLT53
aGVuQWN0aXZhdGVkKFdURk1vdmUocnVuU2VydmVyV29ya2VyQW5kU3RhcnRGZXRjaCkpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIEFTU0VSVCh3b3JrZXItPnN0YXRlKCkgPT0gU2Vydmlj
ZVdvcmtlclN0YXRlOjpBY3RpdmF0ZWQpOworICAgIEFTU0VSVCh3b3JrZXIuc3RhdGUoKSA9PSBT
ZXJ2aWNlV29ya2VyU3RhdGU6OkFjdGl2YXRlZCk7CiAgICAgcnVuU2VydmVyV29ya2VyQW5kU3Rh
cnRGZXRjaCh0cnVlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCmlu
ZGV4IDdiZDJhMzNjYjU4YTMwNzcwZTM5OGJkMDQ5ZTUzZTIyNDIzYTNkMjYuLjk2Nzk2OGMyNmJh
MzNlNDU2MTY0OTY3YTA3OTFiMDI5ZWY0ODk3NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmgKQEAgLTUyLDYgKzUyLDggQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnRE
YXRhOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIE5ldHdvcmtQcm9jZXNzOworY2xhc3Mg
TmV0d29ya1Jlc291cmNlTG9hZGVyOworY2xhc3MgU2VydmljZVdvcmtlckZldGNoVGFzazsKIAog
Y2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uIDogcHVibGljIFdlYkNvcmU6OlNXU2VydmVyOjpD
b25uZWN0aW9uLCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdl
UmVjZWl2ZXIgewogcHVibGljOgpAQCAtNjYsNiArNjgsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAg
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3Q7CiAKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
U2VydmljZVdvcmtlckZldGNoVGFzaz4gY3JlYXRlRmV0Y2hUYXNrKE5ldHdvcmtSZXNvdXJjZUxv
YWRlciYpOworCiBwcml2YXRlOgogICAgIC8vIEltcGxlbWVudCBTV1NlcnZlcjo6Q29ubmVjdGlv
biAoTWVzc2FnZXMgdG8gdGhlIGNsaWVudCBXZWJQcm9jZXNzKQogICAgIHZvaWQgcmVqZWN0Sm9i
SW5DbGllbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYklkZW50aWZpZXIsIGNvbnN0IFdlYkNv
cmU6OkV4Y2VwdGlvbkRhdGEmKSBmaW5hbDsKQEAgLTgyLDcgKzg2LDkgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgc2NoZWR1bGVKb2JJblNlcnZlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0
YSYmKTsKIAotICAgIHZvaWQgc3RhcnRGZXRjaChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiYsIElQQzo6Rm9ybURhdGFSZWZl
cmVuY2UmJiwgU3RyaW5nJiYgcmVmZXJyZXIpOworICAgIGJvb2wgaGFuZGxlRmV0Y2goTmV0d29y
a1Jlc291cmNlTG9hZGVyJik7CisKKyAgICB2b2lkIHN0YXJ0RmV0Y2goU2VydmljZVdvcmtlckZl
dGNoVGFzayYsIFdlYkNvcmU6OlNXU2VydmVyV29ya2VyJik7CiAgICAgdm9pZCBjYW5jZWxGZXRj
aChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6
RmV0Y2hJZGVudGlmaWVyKTsKICAgICB2b2lkIGNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9u
c2UoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6
OkZldGNoSWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IGFiMjQ2OGU4Y2UzY2I1YzZkZGZjODI4Y2U3NWJmZDhj
MWY2MjdlZDcuLjNkYTY0ZDk4NzRlYzFkN2Y3ZWIyOWQ0YzdmZGU1NjdhMmVjNTQxYTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAt
MjksMTAgKzI5LDYgQEAgbWVzc2FnZXMgLT4gV2ViU1dTZXJ2ZXJDb25uZWN0aW9uIHsKICAgICBB
ZGRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIoV2ViQ29yZTo6U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBSZW1vdmVTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bklkZW50aWZpZXIgaWRlbnRpZmllcikKIAotICAgIFN0YXJ0RmV0Y2goV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBzdHJ1Y3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25z
IG9wdGlvbnMsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVzdEJvZHksIFN0cmluZyByZWZl
cnJlcikKLSAgICBDYW5jZWxGZXRjaChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6
RmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllcikKLSAgICBDb250aW51ZURpZFJlY2VpdmVG
ZXRjaFJlc3BvbnNlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50
aWZpZXIgZmV0Y2hJZGVudGlmaWVyKQotCiAgICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIo
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRpb24sIHN0cnVjdCBXZWJD
b3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBtZXNzYWdlLCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyT3JDbGllbnRJZGVudGlmaWVyIHNvdXJjZSkKIAogICAgIERpZFJlc29sdmVSZWdpc3RyYXRp
b25Qcm9taXNlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkga2V5KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRl
eCA4NWQ5ZTk1NWFhNDJlYjkyNmIwODNkMjA0MTVkMzQ3YjMyNTVkNjUyLi5mYWQ2ZWU5ZWViN2Q3
YmM5NzAyMjU5YzYxODBlN2MyYjJmMjRkMTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMTUyLDM5ICsxNTIsMTQgQEAgdm9p
ZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnRlcm1pbmF0ZSgpCiAgICAgc2VuZChN
ZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlRlcm1pbmF0ZVByb2Nlc3Mo
KSk7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzdGFydEZldGNo
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBjb250ZW50
Q29ubmVjdGlvbiwgRmV0Y2hJZGVudGlmaWVyIGNvbnRlbnRGZXRjaElkZW50aWZpZXIsIFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSVBD
OjpGb3JtRGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKK3ZvaWQg
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzdGFydEZldGNoKFNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2smIHRhc2spCiB7Ci0gICAgYXV0byBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciA9
IGNvbnRlbnRDb25uZWN0aW9uLmlkZW50aWZpZXIoKTsKLSAgICBhdXRvIGZldGNoSWRlbnRpZmll
ciA9IEZldGNoSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKLQotICAgIGF1dG8gcmVzdWx0ID0gbV9v
bmdvaW5nRmV0Y2hlcy5hZGQoZmV0Y2hJZGVudGlmaWVyLCBtYWtlVW5pcXVlPFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s+KHNlc3Npb25JRCwgY29udGVudENvbm5lY3Rpb24sICp0aGlzLCBjb250ZW50
RmV0Y2hJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgbV9uZXR3b3JrUHJvY2Vz
cy0+c2VydmljZVdvcmtlckZldGNoVGltZW91dCgpKSk7Ci0KLSAgICBBU1NFUlQoIW1fb25nb2lu
Z0ZldGNoSWRlbnRpZmllcnMuY29udGFpbnMoeyBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwg
Y29udGVudEZldGNoSWRlbnRpZmllciB9KSk7Ci0gICAgbV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVy
cy5hZGQoeyBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29udGVudEZldGNoSWRlbnRpZmll
ciB9LCBmZXRjaElkZW50aWZpZXIpOwotCi0gICAgaWYgKCFzZW5kKE1lc3NhZ2VzOjpXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U3RhcnRGZXRjaCB7IHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyLCByZXF1ZXN0
LCBvcHRpb25zLCBkYXRhLCByZWZlcnJlciB9KSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZS0+ZGlkTm90SGFuZGxlKCk7CisgICAgdGFzay5zdGFydCgqdGhpcyk7CiB9CiAKLXZvaWQg
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjYW5jZWxGZXRjaChXZWJDb3JlOjpTV1Nl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBGZXRj
aElkZW50aWZpZXIgY29udGVudEZldGNoSWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZp
ZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIpCit2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6Y29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZShXZWJDb3JlOjpTV1NlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCBGZXRjaElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKQogewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX29uZ29pbmdGZXRjaElkZW50aWZpZXJz
LmZpbmQoeyBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29udGVudEZldGNoSWRlbnRpZmll
ciB9KTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVycy5lbmQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb246OkNhbmNlbEZldGNoIHsgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIs
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBpdGVyYXRvci0+dmFsdWUgfSk7Ci0KLSAgICBtX29u
Z29pbmdGZXRjaGVzLnJlbW92ZShpdGVyYXRvci0+dmFsdWUpOwotICAgIG1fb25nb2luZ0ZldGNo
SWRlbnRpZmllcnMucmVtb3ZlKGl0ZXJhdG9yKTsKLX0KLQotdm9pZCBXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246OmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoV2ViQ29yZTo6
U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwg
RmV0Y2hJZGVudGlmaWVyIGNvbnRlbnRGZXRjaElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQotewotICAgIGF1dG8gaXRlcmF0b3IgPSBt
X29uZ29pbmdGZXRjaElkZW50aWZpZXJzLmZpbmQoeyBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciwgY29udGVudEZldGNoSWRlbnRpZmllciB9KTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vbmdv
aW5nRmV0Y2hJZGVudGlmaWVycy5lbmQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIHNl
bmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpDb250aW51ZURpZFJl
Y2VpdmVGZXRjaFJlc3BvbnNlIHsgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBpdGVyYXRvci0+dmFsdWUgfSk7CisgICAgLy8gRklYTUU6IFRvIGJl
IGRvbmUgdGhyb3VnaCBOZXR3b3JrUmVzb3VyY2VMb2FkZXIKIH0KIAogdm9pZCBXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb246OmRpZFJlY2VpdmVGZXRjaFRhc2tNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQpAQCAtMTkyLDUxICsx
NjcsNDEgQEAgdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmRpZFJlY2VpdmVG
ZXRjaFRhc2tNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYKICAgICBhdXRvIGl0ZXJhdG9yID0gbV9v
bmdvaW5nRmV0Y2hlcy5maW5kKG1ha2VPYmplY3RJZGVudGlmaWVyPEZldGNoSWRlbnRpZmllclR5
cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSk7CiAgICAgaWYgKGl0ZXJhdG9yID09IG1fb25n
b2luZ0ZldGNoZXMuZW5kKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBib29sIHNob3Vs
ZFJlbW92ZSA9IGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6U2VydmljZVdvcmtl
ckZldGNoVGFzazo6RGlkRmFpbDo6bmFtZSgpCi0gICAgICAgIHx8IGRlY29kZXIubWVzc2FnZU5h
bWUoKSA9PSBNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkTm90SGFuZGxlOjpu
YW1lKCkKLSAgICAgICAgfHwgZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRGaW5pc2g6Om5hbWUoKQotICAgICAgICB8fCBkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJl
Y2VpdmVSZWRpcmVjdFJlc3BvbnNlOjpuYW1lKCk7CiAKICAgICBpdGVyYXRvci0+dmFsdWUtPmRp
ZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwotCi0gICAgaWYgKHNob3VsZFJl
bW92ZSkgewotICAgICAgICBBU1NFUlQobV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVycy5jb250YWlu
cyhpdGVyYXRvci0+dmFsdWUtPmlkZW50aWZpZXIoKSkpOwotICAgICAgICBtX29uZ29pbmdGZXRj
aElkZW50aWZpZXJzLnJlbW92ZShpdGVyYXRvci0+dmFsdWUtPmlkZW50aWZpZXIoKSk7Ci0gICAg
ICAgIG1fb25nb2luZ0ZldGNoZXMucmVtb3ZlKGl0ZXJhdG9yKTsKLSAgICB9CiB9CiAKLXZvaWQg
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmZXRjaFRhc2tUaW1lZE91dChTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrJiB0YXNrKQordm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OnJlZ2lzdGVyRmV0Y2goU2VydmljZVdvcmtlckZldGNoVGFzayYgdGFzaykKIHsKLSAgICBB
U1NFUlQobV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVycy5jb250YWlucyh0YXNrLmlkZW50aWZpZXIo
KSkpOwotICAgIGF1dG8gdGFrZW5JZGVudGlmaWVyID0gbV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVy
cy50YWtlKHRhc2suaWRlbnRpZmllcigpKTsKKyAgICBBU1NFUlQoIW1fb25nb2luZ0ZldGNoZXMu
Y29udGFpbnModGFzay5mZXRjaElkZW50aWZpZXIoKSkpOworICAgIG1fb25nb2luZ0ZldGNoZXMu
YWRkKHRhc2suZmV0Y2hJZGVudGlmaWVyKCksIG1ha2VXZWFrUHRyKHRhc2spKTsKK30KIAotICAg
IEFTU0VSVChtX29uZ29pbmdGZXRjaGVzLmNvbnRhaW5zKHRha2VuSWRlbnRpZmllcikpOwotICAg
IGF1dG8gdGFrZW5UYXNrID0gbV9vbmdvaW5nRmV0Y2hlcy50YWtlKHRha2VuSWRlbnRpZmllcik7
Ci0gICAgQVNTRVJUKHRha2VuVGFzayk7Ci0gICAgQVNTRVJUKHRha2VuVGFzay5nZXQoKSA9PSAm
dGFzayk7Cit2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6dW5yZWdpc3RlckZl
dGNoKFNlcnZpY2VXb3JrZXJGZXRjaFRhc2smIHRhc2spCit7CisgICAgQVNTRVJUKG1fb25nb2lu
Z0ZldGNoZXMuY29udGFpbnModGFzay5mZXRjaElkZW50aWZpZXIoKSkpOworICAgIG1fb25nb2lu
Z0ZldGNoZXMucmVtb3ZlKHRhc2suZmV0Y2hJZGVudGlmaWVyKCkpOworfQogCi0gICAgLy8gR2F0
aGVyIGFsbCBvdGhlciBmZXRjaGVzIGluIHRoaXMgc2VydmljZSB3b3JrZXIKLSAgICBWZWN0b3I8
U2VydmljZVdvcmtlckZldGNoVGFzayo+IG90aGVyRmV0Y2hlczsKK3ZvaWQgV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjpmZXRjaFRhc2tUaW1lZE91dChTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKK3sKKyAgICAvLyBHYXRoZXIgYWxsIGZldGNo
ZXMgaW4gdGhpcyBzZXJ2aWNlIHdvcmtlcgorICAgIFZlY3RvcjxTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrKj4gZmV0Y2hlczsKICAgICBmb3IgKGF1dG8mIGZldGNoVGFzayA6IG1fb25nb2luZ0ZldGNo
ZXMudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKGZldGNoVGFzay0+c2VydmljZVdvcmtlcklkZW50
aWZpZXIoKSA9PSB0YXNrLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICBv
dGhlckZldGNoZXMuYXBwZW5kKGZldGNoVGFzay5nZXQoKSk7CisgICAgICAgIGlmIChmZXRjaFRh
c2stPnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCkgPT0gc2VydmljZVdvcmtlcklkZW50aWZpZXIp
CisgICAgICAgICAgICBmZXRjaGVzLmFwcGVuZChmZXRjaFRhc2suZ2V0KCkpOwogICAgIH0KIAog
ICAgIC8vIFNpZ25hbCBsb2FkIGZhaWx1cmUgZm9yIHRoZW0KLSAgICBmb3IgKGF1dG8qIGZldGNo
VGFzayA6IG90aGVyRmV0Y2hlcykgeworICAgIGZvciAoYXV0byogZmV0Y2hUYXNrIDogZmV0Y2hl
cykgewogICAgICAgICBpZiAoZmV0Y2hUYXNrLT53YXNIYW5kbGVkKCkpCiAgICAgICAgICAgICBm
ZXRjaFRhc2stPmZhaWwoeyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB7IH0sICJTZXJ2
aWNlIFdvcmtlciBjb250ZXh0IGNsb3NlZCJfcyB9KTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgZmV0Y2hUYXNrLT5kaWROb3RIYW5kbGUoKTsKLQotICAgICAgICBhdXRvIGlkZW50aWZpZXIg
PSBtX29uZ29pbmdGZXRjaElkZW50aWZpZXJzLnRha2UoZmV0Y2hUYXNrLT5pZGVudGlmaWVyKCkp
OwotICAgICAgICBtX29uZ29pbmdGZXRjaGVzLnJlbW92ZShpZGVudGlmaWVyKTsKICAgICB9CiAK
ICAgICBpZiAobV9zZXJ2ZXIpIHsKLSAgICAgICAgaWYgKGF1dG8qIHdvcmtlciA9IG1fc2VydmVy
LT53b3JrZXJCeUlEKHRhc2suc2VydmljZVdvcmtlcklkZW50aWZpZXIoKSkpIHsKKyAgICAgICAg
aWYgKGF1dG8qIHdvcmtlciA9IG1fc2VydmVyLT53b3JrZXJCeUlEKHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKSkgewogICAgICAgICAgICAgd29ya2VyLT5zZXRIYXNUaW1lZE91dEFueUZldGNoVGFz
a3MoKTsKICAgICAgICAgICAgIGlmICh3b3JrZXItPmlzUnVubmluZygpKQogICAgICAgICAgICAg
ICAgIG1fc2VydmVyLT5zeW5jVGVybWluYXRlV29ya2VyKCp3b3JrZXIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4IGUzMGYzNDFlMTdi
ZTE4NjA4Y2VlYzlhMjAzMmJkYTAyOWE0Y2E1ZjYuLjdlZDMxNDhmNjdlODM4NDJlNDg4MTllYzU3
Mzc2ZDI1MGEzNzY5NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmgKQEAgLTUyLDIwICs1MiwxOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNs
YXNzIE5ldHdvcmtQcm9jZXNzOwogY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOwogCi1jbGFz
cyBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gOiBwdWJsaWMgV2ViQ29yZTo6U1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bj4sIHB1YmxpYyBXZWJDb3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24sIHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6
CiAgICAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgV2ViQ29yZTo6U1dTZXJ2ZXImLCBSZWY8SVBDOjpD
b25uZWN0aW9uPiYmKTsKICAgICB+V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCk7CiAK
LSAgICBJUEM6OkNvbm5lY3Rpb24qIGlwY0Nvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lw
Y0Nvbm5lY3Rpb24ucHRyKCk7IH0KKyAgICBJUEM6OkNvbm5lY3Rpb24mIGlwY0Nvbm5lY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX2lwY0Nvbm5lY3Rpb24uZ2V0KCk7IH0KIAogICAgIC8vIElQQzo6
TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKIAogICAgIHZvaWQgdGVybWluYXRlKCk7CiAKLSAg
ICB2b2lkIHN0YXJ0RmV0Y2goUEFMOjpTZXNzaW9uSUQsIFdlYlNXU2VydmVyQ29ubmVjdGlvbiYs
IFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OkZldGNo
T3B0aW9ucyYsIGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmKTsK
LSAgICB2b2lkIGNhbmNlbEZldGNoKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIpOworICAgIHZvaWQgc3RhcnRGZXRjaChTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrJik7CiAg
ICAgdm9pZCBjb250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKFdlYkNvcmU6OlNXU2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlRmV0Y2hUYXNr
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKQEAgLTczLDcgKzcyLDEw
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRocm90dGxlU3RhdGUoYm9vbCBpc1Rocm90dGxlYWJs
ZSk7CiAgICAgYm9vbCBpc1Rocm90dGxlYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNUaHJvdHRs
ZWFibGU7IH0KIAotICAgIHZvaWQgZmV0Y2hUYXNrVGltZWRPdXQoU2VydmljZVdvcmtlckZldGNo
VGFzayYpOworICAgIHZvaWQgZmV0Y2hUYXNrVGltZWRPdXQoV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIpOworCisgICAgdm9pZCByZWdpc3RlckZldGNoKFNlcnZpY2VXb3JrZXJGZXRj
aFRhc2smKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJGZXRjaChTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Jik7CiAKIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyCkBAIC05OCwxMiArMTAw
LDEzIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNvbm5lY3Rpb25DbG9zZWQoKTsKIAorICAgIHZv
aWQgdGltZW91dFRpbWVyRmlyZWQoKTsKKwogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1faXBj
Q29ubmVjdGlvbjsKICAgICBSZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29ya1Byb2Nlc3M7CiAg
ICAgV2Vha1B0cjxXZWJDb3JlOjpTV1NlcnZlcj4gbV9zZXJ2ZXI7CiAKLSAgICBIYXNoTWFwPFNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s6OklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmll
cj4gbV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVyczsKLSAgICBIYXNoTWFwPFdlYkNvcmU6OkZldGNo
SWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+PiBtX29u
Z29pbmdGZXRjaGVzOworICAgIEhhc2hNYXA8V2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyLCBXZWFr
UHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+PiBtX29uZ29pbmdGZXRjaGVzOwogICAgIGJvb2wg
bV9pc1Rocm90dGxlYWJsZSB7IHRydWUgfTsKIH07IC8vIGNsYXNzIFdlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA5MzZjMGNmNTVhZDAzZmJiYjNhZGM4NDM5
MjAxM2E5MGUzNDhiNWVkLi42MzI3OGIxYmJlZTA4YTcyNTg5YjQzMzdkNTgzYmVmMzczZTIyMmFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKQEAgLTUyNSw3ICs1MjUsNiBAQCBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwIEBuby11bmlmeQogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcCBAbm8tdW5pZnkKIFdlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAgQG5vLXVuaWZ5CiAKLVdlYlBy
b2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guY3BwCiBXZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXT3Jp
Z2luVGFibGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA2MzhlYmVkNTg1M2ZkN2FkNDc0OTkzNTEzZTZhZmEwMWIwODcwYjdiLi45
YTk1NzNiNjU3MjI0NDg4MmEzOTYxNzZlNmRmNjBiNWQ3ZTdhYjU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExNDMsNyArMTE0Myw2
IEBACiAJCTVDRTkxMjEyMjI5M0MyNzgwMDVCRUM3OCAvKiBBdXhpbGlhcnlQcm9jZXNzTWFpbi5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0U5MTIw
RjIyOTNDMjVGMDA1QkVDNzggLyogQXV4aWxpYXJ5UHJvY2Vzc01haW4uY3BwICovOyB9OwogCQk1
Q0U5MTIxMzIyOTNDMjc5MDA1QkVDNzggLyogQXV4aWxpYXJ5UHJvY2Vzc01haW4uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNFOTEyMEYyMjkzQzI1
RjAwNUJFQzc4IC8qIEF1eGlsaWFyeVByb2Nlc3NNYWluLmNwcCAqLzsgfTsKIAkJNUNFOTEyMTQy
MjkzQzI4MDAwNUJFQzc4IC8qIFdLTWFpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNUNFOTEyMEIyMjkzQzFFMDAwNUJFQzc4IC8qIFdLTWFpbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTYxN0E1MkQ4
MUY0M0E5REEwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjE3
QTUyRDcxRjQzQTlCNjAwRENEQzBBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi87IH07CiAJCTYzMTA4Rjk2MUY5NjcxOUMwMEEwREI4NCAvKiBfV0tBcHBs
aWNhdGlvbk1hbmlmZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2MzEwOEY5NDFGOTY3MTlDMDBBMERCODQgLyogX1dLQXBwbGljYXRpb25NYW5pZmVz
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTYz
MTA4Rjk5MUY5NjcxRjcwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzMTA4Rjk4
MUY5NjcxRjcwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwuaCAqLzsg
fTsKIAkJNjM0ODQyNTExRkIyNkU3MTAwOTQ2RTNDIC8qIEFQSUFwcGxpY2F0aW9uTWFuaWZlc3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzNDg0MjRG
MUZCMjZFNzEwMDk0NkUzQyAvKiBBUElBcHBsaWNhdGlvbk1hbmlmZXN0LmggKi87IH07CkBAIC0z
MTI5LDkgKzMxMjgsNiBAQAogCQk0MTMwNzVBNjFERTg1RUU3MDAzOUVDNjkgLyogTGliV2ViUlRD
U29ja2V0RmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJXZWJS
VENTb2NrZXRGYWN0b3J5Lmg7IHBhdGggPSBOZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRG
YWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzA3NUE3MURFODVFRTcw
MDM5RUM2OSAvKiBMaWJXZWJSVENQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IGxpbmVFbmRpbmcgPSAwOyBuYW1lID0gTGliV2ViUlRDUHJvdmlkZXIuY3BwOyBwYXRo
ID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLmNw
cDsgfTsKIAkJNDEzMDc1QTgxREU4NUVFNzAwMzlFQzY5IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbGluZUVuZGluZyA9IDA7IG5hbWUgPSBMaWJXZWJS
VENQcm92aWRlci5oOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVy
ID0geGNvZGUubGFuZy5vYmpjcHA7IH07Ci0JCTQxMzFGM0NFMUY5NkE0OTUwMDU5OTk1QSAvKiBT
ZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2VydmljZVdvcmtlckNsaWVudEZldGNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTQxMzFGM0NGMUY5NkE5MzYwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gu
bWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2VydmljZVdvcmtlckNsaWVudEZl
dGNoLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTMxRjNEMDFG
OTZCQ0M4MDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzFGM0UwMUY5ODcxMkMwMDU5OTk1QSAv
KiBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTM1RkJDRjFGNEZCN0YyMDA3NEM0N0IgLyog
Q2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxMzVGQkQwMUY0RkI3RjIwMDc0QzQ3QiAvKiBDYWNoZVN0b3JhZ2VFbmdp
bmVDYWNoZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVTdG9yYWdl
RW5naW5lQ2FjaGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNzA4LDcgKzM3
MDQsNiBAQAogCQk1Q0VBQkEyQjIzMzMyNTE0MDA3OTc3OTcgLyogTGVnYWN5R2xvYmFsU2V0dGlu
Z3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGVnYWN5R2xvYmFs
U2V0dGluZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0ZFQ0IwMzFFMUVE
MUM4MDBGODg1MDQgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEQUQ3M0YxMTE2RkY5MEMwMEVFNTM5
NiAvKiBCYXNlVGFyZ2V0LnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9
IEJhc2VUYXJnZXQueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTYxN0E1
MkQ3MUY0M0E5QjYwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU2VydmljZVdv
cmtlckNsaWVudEZldGNoTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291
cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNjMxMDhGOTQxRjk2NzE5QzAwQTBE
Qjg0IC8qIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLQXBwbGlj
YXRpb25NYW5pZmVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2MzEwOEY5NTFG
OTY3MTlDMDBBMERCODQgLyogX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTYzMTA4Rjk4MUY5NjcxRjcwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlm
ZXN0SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLQXBwbGljYXRpb25NYW5pZmVzdEludGVy
bmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02ODM5LDkgKzY4MzQsNiBAQAog
CQk1MTE4RTk5ODFGMjk1MjU5MDAzRUY5RjUgLyogU3RvcmFnZSAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJNDEzMUYzRDAxRjk2QkNDODAwNTk5OTVBIC8q
IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5jcHAgKi8sCi0JCQkJNDEzMUYzQ0UxRjk2QTQ5NTAw
NTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5oICovLAotCQkJCTQxMzFGM0NGMUY5
NkE5MzYwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gubWVzc2FnZXMuaW4gKi8s
CiAJCQkJNDEzMUYzRTAxRjk4NzEyQzAwNTk5OTVBIC8qIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2tDbGllbnQuY3BwICovLAogCQkJCTQxOUFDRjlCMUY5ODFEMjYwMDlGMUE4MyAvKiBXZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmggKi8sCiAJCQkJNTFCRUI2MjkxRjNBNUFDRDAwNTAy
OUI5IC8qIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAgKi8sCkBAIC04ODc0LDcgKzg4NjYs
NiBAQAogCQkJCTFCQkJFNDlFMTlCNjZDNTMwMDZCN0Q4MSAvKiBSZW1vdGVXZWJJbnNwZWN0b3JV
SU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJRTE4RTY5MTMxNjlCNjY3QjAwOUI2NjcwIC8q
IFNlY0l0ZW1TaGltUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCUUxOEU2OTE0MTY5
QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5TWVzc2FnZXMuaCAqLywKLQkJCQk2MTdB
NTJENzFGNDNBOUI2MDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLywKIAkJCQkyREU2OTQzQjE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWdu
aWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMkRFNjk0M0Mx
OEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5o
ICovLAogCQkJCTFBMzM0REVCMTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3Nh
Z2VSZWNlaXZlci5jcHAgKi8sCkBAIC0xMTMxMyw3ICsxMTMwNCw2IEBACiAJCQkJQTU1QkE4MjYx
QkEyNUNGRDAwN0NEMzNEIC8qIFJlbW90ZVdlYkluc3BlY3RvclByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFCQkJFNEEwMTlCNjZDNTMwMDZCN0Q4MSAvKiBSZW1v
dGVXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlF
MThFNjkxNzE2OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk2MTdBNTJEODFGNDNBOURBMDBEQ0RDMEEgLyogU2Vy
dmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTQxREU3QzZDMjIyNzhGMUUwMDUzMkI2NSAvKiBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzg3MjEyQjZBQjEwMEY0OTNGRCAvKiBTaGFyZWFi
bGVCaXRtYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRFNjk0M0QxOEJEMkE2ODAwNUMxNUU1
IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCBmMGI0ZmRmYTZhMzExNzA0
OTk2ZDc4NWExYzk2Mjc3MzYwMTE5ODAxLi4zMDgzMzU3NzMwMWQwZjI2NDUzMmI0YTMyYmE4NmVm
NmVmNWI5YjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTI5LDcgKzI5LDYgQEAK
ICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDTmV0d29yay5o
IgogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKLSNp
bmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlN0
b3JhZ2VBcmVhTWFwLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIldlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgiCkBAIC0xNDEsMTAgKzE0MCw2IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIElQCiAgICAgICAgICAgICBtX3N3Q29ubmVjdGlvbi0+ZGlkUmVj
ZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpTZXJ2
aWNlV29ya2VyQ2xpZW50RmV0Y2g6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewotICAgICAgICBX
ZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVTZXJ2aWNlV29y
a2VyQ2xpZW50RmV0Y2hNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNz
YWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSkgewogICAgICAgICBBU1NFUlQoU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVj
dGlvbigpKTsKICAgICAgICAgaWYgKGF1dG8qIGNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiA9IFNX
Q29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRl
eCBhZmEzYzcyNDE0OGRhMTI3NWEyNzcwZGZjN2U4M2Q3Mjk2ZGE1MDQ0Li5hOWZjMDRkNTM4ZmVi
OWI3ZjRkOTRlNjQ4MjEzM2JmOTI1ZjNkNDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC0yMTUsNDEgKzIx
NSwyMCBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2Fk
ZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCi0gICAgaWYgKCEhcmVzb3VyY2VMb2FkZXIub3B0aW9ucygpLnNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKQotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIHNjaGVkdWxlZCB0aHJvdWdoIFNlcnZpY2VX
b3JrZXIgb3IgTmV0d29yayBQcm9jZXNzIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVz
b3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgp
LCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRC50b1VJbnQ2NCgpLCBpZGVudGlmaWVyKTsKKyAg
ICBhdXRvIHVybCA9IHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS51cmwoKTsKKyAgICBhdXRvKiBk
YXRhID0gdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCk7CisgICAgaWYgKGRhdGEpCisgICAgICAg
IHVybC5zdHJpbmcoKTsKIAotICAgIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9u
KCkuaGFuZGxlRmV0Y2gocmVzb3VyY2VMb2FkZXIsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBT
VG9IVFRQUmVkaXJlY3QsIFt0aGlzLCB0cmFja2luZ1BhcmFtZXRlcnMsIGlkZW50aWZpZXIsIHNo
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIG1heGltdW1CdWZmZXJpbmdU
aW1lID0gbWF4aW11bUJ1ZmZlcmluZ1RpbWUocmVzb3VyY2UpLCByZXNvdXJjZUxvYWRlciA9IG1h
a2VSZWYocmVzb3VyY2VMb2FkZXIpXSAoU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpSZXN1bHQg
cmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKHJlc3VsdCAhPSBTZXJ2aWNlV29ya2VyQ2xp
ZW50RmV0Y2g6OlJlc3VsdDo6VW5oYW5kbGVkKSB7Ci0gICAgICAgICAgICBMT0coTmV0d29ya1Nj
aGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwg
dXJsICclcycgd2lsbCBiZSBzY2hlZHVsZWQgdGhyb3VnaCBTZXJ2aWNlV29ya2VyIGhhbmRsZSBm
ZXRjaCBhbGdvcml0aG0iLCByZXNvdXJjZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCku
ZGF0YSgpKTsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInNjaGVkdWxlTG9h
ZDogVVJMIHdpbGwgYmUgc2NoZWR1bGVkIHRocm91Z2ggU2VydmljZVdvcmtlciBoYW5kbGUgZmV0
Y2ggYWxnb3JpdGhtIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIt
PmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQ
YXJhbWV0ZXJzLmZyYW1lSUQudG9VSW50NjQoKSwgaWRlbnRpZmllcik7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHJlc291cmNlTG9hZGVyLT5vcHRpb25zKCku
c2VydmljZVdvcmtlcnNNb2RlID09IFNlcnZpY2VXb3JrZXJzTW9kZTo6T25seSkgewotICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgic2NoZWR1bGVMb2FkOiB1bmFibGUg
dG8gc2NoZWR1bGUgVVJMIHRocm91Z2ggU2VydmljZVdvcmtlciBoYW5kbGUgZmV0Y2ggYWxnb3Jp
dGhtIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2
NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXItPmZyYW1lKCks
IHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJz
LmZyYW1lSUQudG9VSW50NjQoKSwgaWRlbnRpZmllcik7Ci0gICAgICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKFtyZXNvdXJjZUxvYWRlciA9IFdURk1vdmUocmVzb3VyY2VMb2FkZXIpXSB7Ci0gICAg
ICAgICAgICAgICAgYXV0byBlcnJvciA9IGludGVybmFsRXJyb3IocmVzb3VyY2VMb2FkZXItPnJl
cXVlc3QoKS51cmwoKSk7Ci0gICAgICAgICAgICAgICAgZXJyb3Iuc2V0VHlwZShSZXNvdXJjZUVy
cm9yOjpUeXBlOjpDYW5jZWxsYXRpb24pOwotICAgICAgICAgICAgICAgIHJlc291cmNlTG9hZGVy
LT5kaWRGYWlsKGVycm9yKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJMb2Fk
ZXJTdHJhdGVneSgpLnRyeUxvYWRpbmdVc2luZ1VSTFNjaGVtZUhhbmRsZXIocmVzb3VyY2VMb2Fk
ZXIpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzY2hlZHVsZUxvYWQ6
IFVSTCB3aWxsIGJlIHNjaGVkdWxlZCB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyAoZnJhbWUgPSAl
cCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLT5mcmFtZSgpLCB0cmFja2luZ1BhcmFt
ZXRlcnMucGFnZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELnRvVUlu
dDY0KCksIGlkZW50aWZpZXIpOwotICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
d2ViTG9hZGVyU3RyYXRlZ3koKS5zY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MocmVzb3Vy
Y2VMb2FkZXIuZ2V0KCksIHJlc291cmNlTG9hZGVyLT5yZXF1ZXN0KCksIHRyYWNraW5nUGFyYW1l
dGVycywgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgbWF4aW11bUJ1
ZmZlcmluZ1RpbWUpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic2NoZWR1bGVMb2FkOiBVUkwgbm90IGhhbmRsZWQgYnkg
YW55IGhhbmRsZXJzIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIt
PmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQ
YXJhbWV0ZXJzLmZyYW1lSUQudG9VSW50NjQoKSwgaWRlbnRpZmllcik7Ci0gICAgfSk7CisgICAg
aWYgKChyZXNvdXJjZUxvYWRlci5vcHRpb25zKCkuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIgJiYgcmVzb3VyY2VMb2FkZXIub3B0aW9ucygpLnNlcnZpY2VXb3JrZXJzTW9kZSAh
PSBTZXJ2aWNlV29ya2Vyc01vZGU6Ok5vbmUpIHx8ICF0cnlMb2FkaW5nVXNpbmdVUkxTY2hlbWVI
YW5kbGVyKHJlc291cmNlTG9hZGVyKSkgewogI2Vsc2UKICAgICBpZiAoIXRyeUxvYWRpbmdVc2lu
Z1VSTFNjaGVtZUhhbmRsZXIocmVzb3VyY2VMb2FkZXIpKSB7CisjZW5kaWYKICAgICAgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRCgic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBzY2hlZHVsZWQg
d2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAi
LCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNv
dXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCks
IHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELnRvVUludDY0KCksIGlkZW50aWZpZXIpOwogICAg
ICAgICBzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MocmVzb3VyY2VMb2FkZXIsIHJlc291
cmNlTG9hZGVyLnJlcXVlc3QoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLCBzaG91bGRDbGVhclJlZmVy
cmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBtYXhpbXVtQnVmZmVyaW5nVGltZShyZXNvdXJjZSkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInNj
aGVkdWxlTG9hZDogVVJMIG5vdCBoYW5kbGVkIGJ5IGFueSBoYW5kbGVycyAoZnJhbWUgPSAlcCwg
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9
ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVy
cy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQudG9VSW50NjQo
KSwgaWRlbnRpZmllcik7Ci0jZW5kaWYKIH0KIAogYm9vbCBXZWJMb2FkZXJTdHJhdGVneTo6dHJ5
TG9hZGluZ1VzaW5nVVJMU2NoZW1lSGFuZGxlcihSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2Fk
ZXIpCkBAIC0yNzEsNiArMjUwLDEwIEBAIGJvb2wgV2ViTG9hZGVyU3RyYXRlZ3k6OnRyeUxvYWRp
bmdVc2luZ1VSTFNjaGVtZUhhbmRsZXIoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlCiAKIHZvaWQg
V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhSZXNvdXJj
ZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgV2ViUmVzb3VyY2VMb2FkZXI6OlRyYWNraW5nUGFyYW1ldGVycyYgdHJhY2tpbmdQYXJh
bWV0ZXJzLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFNl
Y29uZHMgbWF4aW11bUJ1ZmZlcmluZ1RpbWUpCiB7CisgICAgYXV0byogd2ViRnJhbWVMb2FkZXJD
bGllbnQgPSB0b1dlYkZyYW1lTG9hZGVyQ2xpZW50KHJlc291cmNlTG9hZGVyLmZyYW1lTG9hZGVy
KCktPmNsaWVudCgpKTsKKyAgICBhdXRvKiB3ZWJGcmFtZSA9IHdlYkZyYW1lTG9hZGVyQ2xpZW50
ID8gd2ViRnJhbWVMb2FkZXJDbGllbnQtPndlYkZyYW1lKCkgOiBudWxscHRyOworICAgIGF1dG8q
IHdlYlBhZ2UgPSB3ZWJGcmFtZSA/IHdlYkZyYW1lLT5wYWdlKCkgOiBudWxscHRyOworCiAgICAg
UmVzb3VyY2VMb2FkSWRlbnRpZmllciBpZGVudGlmaWVyID0gcmVzb3VyY2VMb2FkZXIuaWRlbnRp
ZmllcigpOwogICAgIEFTU0VSVChpZGVudGlmaWVyKTsKIApAQCAtMzAyLDYgKzI4NSwxNyBAQCB2
b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MoUmVz
b3VyY2VMb2FkZXImIHJlc291cmNlTAogICAgIGxvYWRQYXJhbWV0ZXJzLnByZWZsaWdodFBvbGlj
eSA9IHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5wcmVmbGlnaHRQb2xpY3k7CiAgICAgbG9hZFBh
cmFtZXRlcnMuaXNIVFRQU1VwZ3JhZGVFbmFibGVkID0gcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSA/
IHJlc291cmNlTG9hZGVyLmZyYW1lKCktPnNldHRpbmdzKCkuSFRUUFNVcGdyYWRlRW5hYmxlZCgp
IDogZmFsc2U7CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgLy8gSW4gY2FzZSBv
ZiBVUkwgc2NoZW1lIGhhbmRsZXIsIHdlIHdpbGwgdHJ5IHRvIGxvYWQgb24gc2VydmljZSB3b3Jr
ZXJzIGFuZCBpZiB1bmhhbmRsZWQsIGZhbGxiYWNrIHRvIFVSTCBzY2hlbWUgaGFuZGxlci4KKyAg
ICBpZiAocmVzb3VyY2VMb2FkZXIub3B0aW9ucygpLnNlcnZpY2VXb3JrZXJzTW9kZSA9PSBTZXJ2
aWNlV29ya2Vyc01vZGU6OkFsbCAmJiB3ZWJQYWdlICYmICB3ZWJQYWdlLT51cmxTY2hlbWVIYW5k
bGVyRm9yU2NoZW1lKHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS51cmwoKS5wcm90b2NvbCgpLnRv
U3RyaW5nV2l0aG91dENvcHlpbmcoKSkpCisgICAgICAgIGxvYWRQYXJhbWV0ZXJzLnNlcnZpY2VX
b3JrZXJzTW9kZSA9IFNlcnZpY2VXb3JrZXJzTW9kZTo6T25seTsKKyAgICBlbHNlCisgICAgICAg
IGxvYWRQYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJzTW9kZSA9IHJlc291cmNlTG9hZGVyLm9wdGlv
bnMoKS5zZXJ2aWNlV29ya2Vyc01vZGU7CisKKyAgICBsb2FkUGFyYW1ldGVycy5zZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciA9IHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5zZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcjsKKyAgICBsb2FkUGFyYW1ldGVycy5odHRw
SGVhZGVyc1RvS2VlcCA9IHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5odHRwSGVhZGVyc1RvS2Vl
cDsKKyNlbmRpZgorCiAgICAgYXV0byogZG9jdW1lbnQgPSByZXNvdXJjZUxvYWRlci5mcmFtZSgp
ID8gcmVzb3VyY2VMb2FkZXIuZnJhbWUoKS0+ZG9jdW1lbnQoKSA6IG51bGxwdHI7CiAgICAgaWYg
KHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5jc3BSZXNwb25zZUhlYWRlcnMpCiAgICAgICAgIGxv
YWRQYXJhbWV0ZXJzLmNzcFJlc3BvbnNlSGVhZGVycyA9IHJlc291cmNlTG9hZGVyLm9wdGlvbnMo
KS5jc3BSZXNwb25zZUhlYWRlcnM7CkBAIC00MzgsMTEgKzQzMiw2IEBAIHZvaWQgV2ViTG9hZGVy
U3RyYXRlZ3k6OnJlbW92ZShSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIpCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKFdl
YlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuY2FuY2VsRmV0Y2gobWFrZU9iamVj
dElkZW50aWZpZXI8RmV0Y2hJZGVudGlmaWVyVHlwZT4oaWRlbnRpZmllcikpKQotICAgICAgICBy
ZXR1cm47Ci0jZW5kaWYKLQogICAgIFJlZlB0cjxXZWJSZXNvdXJjZUxvYWRlcj4gbG9hZGVyID0g
bV93ZWJSZXNvdXJjZUxvYWRlcnMudGFrZShpZGVudGlmaWVyKTsKICAgICAvLyBMb2FkZXIgbWF5
IG5vdCBiZSByZWdpc3RlcmVkIGlmIHdlIGNyZWF0ZWQgaXQsIGJ1dCBoYXZlbid0IHNjaGVkdWxl
ZCB5ZXQgKGEgYnVuZGxlIGNsaWVudCBjYW4gZGVjaWRlIHRvIGNhbmNlbCBzdWNoIHJlcXVlc3Qg
dmlhIHdpbGxTZW5kUmVxdWVzdCkuCiAgICAgaWYgKCFsb2FkZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXgg
YTM5MjQxYWNhMzBmZTc5NjgxMTAyNzQzMjAxN2NhNDQ5YmZiMWYyZi4uYjRjYTQ1MTVmMWMxYmRm
ZjA3YWExZTI0NDc0MjFkYTNjYTE4ZjkxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcApAQCAtMzIsNiArMzIsMTAg
QEAKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgorI2luY2x1
ZGUgIldlYkZyYW1lLmgiCisjaW5jbHVkZSAiV2ViRnJhbWVMb2FkZXJDbGllbnQuaCIKKyNpbmNs
dWRlICJXZWJMb2FkZXJTdHJhdGVneS5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZvLmg+CkBAIC0zOSw2ICs0Myw4IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0RvY3VtZW50TG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9h
ZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25X
ZWJLaXQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtMb2FkTWV0cmljcy5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUGFnZS5oPgpAQCAtMjE4LDYgKzIyNCw0NyBAQCB2b2lkIFdlYlJlc291cmNl
TG9hZGVyOjpkaWRGaW5pc2hSZXNvdXJjZUxvYWQoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBu
ZXR3b3JrTAogICAgIG1fY29yZUxvYWRlci0+ZGlkRmluaXNoTG9hZGluZyhuZXR3b3JrTG9hZE1l
dHJpY3MpOwogfQogCit2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRGYWlsU2VydmljZVdvcmtl
ckxvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCit7CisgICAgaWYgKGF1dG8qIGRvY3Vt
ZW50ID0gbV9jb3JlTG9hZGVyLT5mcmFtZSgpID8gbV9jb3JlTG9hZGVyLT5mcmFtZSgpLT5kb2N1
bWVudCgpIDogbnVsbHB0cikgeworICAgICAgICBpZiAobV9jb3JlTG9hZGVyLT5vcHRpb25zKCku
ZGVzdGluYXRpb24gIT0gRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6RW1wdHlTdHJpbmcgfHwg
ZXJyb3IuaXNHZW5lcmFsKCkpCisgICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yLmxvY2FsaXpl
ZERlc2NyaXB0aW9uKCkpOworICAgICAgICBpZiAobV9jb3JlTG9hZGVyLT5vcHRpb25zKCkuZGVz
dGluYXRpb24gIT0gRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6RW1wdHlTdHJpbmcpCisgICAg
ICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1l
c3NhZ2VMZXZlbDo6RXJyb3IsIG1ha2VTdHJpbmcoIkNhbm5vdCBsb2FkICIsIGVycm9yLmZhaWxp
bmdVUkwoKS5zdHJpbmcoKSwgIi4iKSk7CisgICAgfQorCisgICAgZGlkRmFpbFJlc291cmNlTG9h
ZChlcnJvcik7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OnNlcnZpY2VXb3JrZXJEaWRO
b3RIYW5kbGUoKQoreworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJzZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlOiAocGFnZUlEID0gJSIgUFJJ
dTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIs
IG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1l
dGVycy5mcmFtZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQp
OworCisgICAgaWYgKG1fY29yZUxvYWRlci0+b3B0aW9ucygpLnNlcnZpY2VXb3JrZXJzTW9kZSAh
PSBTZXJ2aWNlV29ya2Vyc01vZGU6Ok9ubHkpIHsKKyAgICAgICAgYXV0byogd2ViRnJhbWVMb2Fk
ZXJDbGllbnQgPSB0b1dlYkZyYW1lTG9hZGVyQ2xpZW50KG1fY29yZUxvYWRlci0+ZnJhbWVMb2Fk
ZXIoKS0+Y2xpZW50KCkpOworICAgICAgICBhdXRvKiB3ZWJGcmFtZSA9IHdlYkZyYW1lTG9hZGVy
Q2xpZW50ID8gd2ViRnJhbWVMb2FkZXJDbGllbnQtPndlYkZyYW1lKCkgOiBudWxscHRyOworICAg
ICAgICBhdXRvKiB3ZWJQYWdlID0gd2ViRnJhbWUgPyB3ZWJGcmFtZS0+cGFnZSgpIDogbnVsbHB0
cjsKKworICAgICAgICBpZiAoYXV0byogaGFuZGxlciA9IHdlYlBhZ2UtPnVybFNjaGVtZUhhbmRs
ZXJGb3JTY2hlbWUobV9jb3JlTG9hZGVyLT5yZXF1ZXN0KCkudXJsKCkucHJvdG9jb2woKS50b1N0
cmluZ1dpdGhvdXRDb3B5aW5nKCkpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJyZXNvdXJjZSBsb2FkZWQgYnkgVVJMIHNjaGVtZSBoYW5kbGVyOiAocGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
KSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFy
YW1ldGVycy5mcmFtZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNl
SUQpOworCisgICAgICAgICAgICBhdXRvIGxvYWRlciA9IG1fY29yZUxvYWRlcjsKKyAgICAgICAg
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkxvYWRlclN0cmF0ZWd5KCkucmVtb3ZlKG1f
Y29yZUxvYWRlci5nZXQoKSk7CisKKyAgICAgICAgICAgIGhhbmRsZXItPnN0YXJ0TmV3VGFzaygq
bG9hZGVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGF1
dG8gZXJyb3IgPSBpbnRlcm5hbEVycm9yKG1fY29yZUxvYWRlci0+cmVxdWVzdCgpLnVybCgpKTsK
KyAgICBlcnJvci5zZXRUeXBlKFJlc291cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxhdGlvbik7Cisg
ICAgbV9jb3JlTG9hZGVyLT5kaWRGYWlsKGVycm9yKTsKKyNlbHNlCisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisjZW5kaWYKK30KKwogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbFJl
c291cmNlTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICAgICBMT0coTmV0d29y
aywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbFJlc291cmNlTG9hZCBm
b3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5oCmluZGV4IDhlYTFhZWRiZWI5ZjU5NjQ5N2FiNjc0YWY0MzYyMTY3YTFjZjI5YWEuLjdj
MjExMWQ0OGIyOTUxN2I1OTczMWUzNGJkZWQ2ZjkzYmM3ZDU2MzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaApAQCAtODUs
NiArODUsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgdm9pZCBkaWRG
aW5pc2hSZXNvdXJjZUxvYWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7CiAg
ICAgdm9pZCBkaWRGYWlsUmVzb3VyY2VMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
KTsKKyAgICB2b2lkIGRpZEZhaWxTZXJ2aWNlV29ya2VyTG9hZChjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJik7CisgICAgdm9pZCBzZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlKCk7CiAgICAg
dm9pZCBkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCk7CiAKICAgICB2b2lkIHN0b3BM
b2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lEZW5pZWQoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5p
bgppbmRleCA3YjkzMjU2ZjAzNmRkMDQyZjQ0YmE4M2EzMThiYjdiNjYzNmQ0MWFhLi44YzBmMjFh
ODM2MjJjZjhhYjBkMzY3ZTIxZjg2YzcxYTdlZDA1ZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNz
YWdlcy5pbgpAQCAtMjcsNiArMjcsOCBAQCBtZXNzYWdlcyAtPiBXZWJSZXNvdXJjZUxvYWRlciBM
ZWdhY3lSZWNlaXZlciB7CiAgICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiAgICAgRGlkRmluaXNo
UmVzb3VyY2VMb2FkKFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyBuZXR3b3JrTG9hZE1ldHJp
Y3MpCiAgICAgRGlkRmFpbFJlc291cmNlTG9hZChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9y
KQorICAgIERpZEZhaWxTZXJ2aWNlV29ya2VyTG9hZChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVy
cm9yKQorICAgIFNlcnZpY2VXb3JrZXJEaWROb3RIYW5kbGUoKQogICAgIERpZEJsb2NrQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoKQogCiAgICAgU3RvcExvYWRpbmdBZnRlclhGcmFtZU9wdGlvbnNP
ckNvbnRlbnRTZWN1cml0eVBvbGljeURlbmllZChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJl
c3BvbnNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2Vy
dmljZVdvcmtlckNsaWVudEZldGNoLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDMyNDQ2NmE4ZDRkODVjODMzMDk1OWE1MGY3N2Q1ODkxNDYxMDYxMjEuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDIwMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5oIgotCi0jaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQotCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgIldlYlNXQ2xp
ZW50Q29ubmVjdGlvbi5oIgotI2luY2x1ZGUgIldlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oIgot
I2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9Eb2N1bWVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVy
cm9yLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KLQotbmFtZXNwYWNlIFdl
YktpdCB7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotUmVmPFNlcnZpY2VXb3JrZXJDbGll
bnRGZXRjaD4gU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpjcmVhdGUoV2ViU2VydmljZVdvcmtl
clByb3ZpZGVyJiBzZXJ2aWNlV29ya2VyUHJvdmlkZXIsIFJlZjxXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlcj4mJiBsb2FkZXIsIEZldGNoSWRlbnRpZmllciBpZGVudGlmaWVyLCBSZWY8V2ViU1dDbGll
bnRDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRU
UFNUb0hUVFBSZWRpcmVjdCwgQ2FsbGJhY2smJiBjYWxsYmFjaykKLXsKLSAgICBhdXRvIGZldGNo
ID0gYWRvcHRSZWYoKm5ldyBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2ggeyBzZXJ2aWNlV29ya2Vy
UHJvdmlkZXIsIFdURk1vdmUobG9hZGVyKSwgaWRlbnRpZmllciwgV1RGTW92ZShjb25uZWN0aW9u
KSwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgV1RGTW92ZShjYWxs
YmFjaykgfSk7Ci0gICAgZmV0Y2gtPnN0YXJ0KCk7Ci0gICAgcmV0dXJuIGZldGNoOwotfQotCi1T
ZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6On5TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2goKQotewot
fQotCi1TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaChX
ZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXImIHNlcnZpY2VXb3JrZXJQcm92aWRlciwgUmVmPFdlYkNv
cmU6OlJlc291cmNlTG9hZGVyPiYmIGxvYWRlciwgRmV0Y2hJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFJlZjxXZWJTV0NsaWVudENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgYm9vbCBzaG91bGRDbGVh
clJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBDYWxsYmFjayYmIGNhbGxiYWNrKQotICAg
IDogbV9zZXJ2aWNlV29ya2VyUHJvdmlkZXIoc2VydmljZVdvcmtlclByb3ZpZGVyKQotICAgICwg
bV9sb2FkZXIoV1RGTW92ZShsb2FkZXIpKQotICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIp
Ci0gICAgLCBtX2Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKLSAgICAsIG1fY2FsbGJh
Y2soV1RGTW92ZShjYWxsYmFjaykpCi0gICAgLCBtX3Nob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBT
VG9IVFRQUmVkaXJlY3Qoc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCkK
LXsKLX0KLQotdm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OnN0YXJ0KCkKLXsKLSAgICBh
dXRvIHJlcXVlc3QgPSBtX2xvYWRlci0+cmVxdWVzdCgpOwotICAgIGF1dG8mIG9wdGlvbnMgPSBt
X2xvYWRlci0+b3B0aW9ucygpOwotCi0gICAgYXV0byByZWZlcnJlciA9IHJlcXVlc3QuaHR0cFJl
ZmVycmVyKCk7Ci0KLSAgICAvLyBXZSBhcmUgaW50ZXJjZXB0aW5nIGZldGNoIGNhbGxzIGFmdGVy
IGdvaW5nIHRocm91Z2ggdGhlIEhUVFAgbGF5ZXIsIHdoaWNoIG1heSBhZGQgc29tZSBzcGVjaWZp
YyBoZWFkZXJzLgotICAgIGNsZWFuSFRUUFJlcXVlc3RIZWFkZXJzRm9yQWNjZXNzQ29udHJvbChy
ZXF1ZXN0LCBvcHRpb25zLmh0dHBIZWFkZXJzVG9LZWVwKTsKLQotICAgIEFTU0VSVChvcHRpb25z
LnNlcnZpY2VXb3JrZXJzTW9kZSAhPSBTZXJ2aWNlV29ya2Vyc01vZGU6Ok5vbmUpOwotICAgIG1f
c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgPSBvcHRpb25zLnNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLnZhbHVlKCk7Ci0gICAgbV9jb25uZWN0aW9uLT5zdGFy
dEZldGNoKG1faWRlbnRpZmllciwgbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
ciwgcmVxdWVzdCwgb3B0aW9ucywgcmVmZXJyZXIpOwotfQotCi12b2lkIFNlcnZpY2VXb3JrZXJD
bGllbnRGZXRjaDo6ZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYm
IHJlc3BvbnNlKQotewotICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKV0oKSBtdXRhYmxl
IHsKLSAgICAgICAgaWYgKCFtX2xvYWRlcikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICByZXNwb25zZS5zZXRTb3VyY2UoUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpTZXJ2aWNlV29y
a2VyKTsKLQotICAgICAgICBtX2xvYWRlci0+d2lsbFNlbmRSZXF1ZXN0KG1fbG9hZGVyLT5yZXF1
ZXN0KCkucmVkaXJlY3RlZFJlcXVlc3QocmVzcG9uc2UsIG1fc2hvdWxkQ2xlYXJSZWZlcnJlck9u
SFRUUFNUb0hUVFBSZWRpcmVjdCksIHJlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IHBy
b3RlY3RlZFRoaXMuY29weVJlZigpXShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KSB7Ci0gICAg
ICAgICAgICBpZiAoIW1fbG9hZGVyIHx8IHJlcXVlc3QuaXNOdWxsKCkpIHsKLSAgICAgICAgICAg
ICAgICBpZiAoYXV0byBjYWxsYmFjayA9IFdURk1vdmUobV9jYWxsYmFjaykpCi0gICAgICAgICAg
ICAgICAgICAgIGNhbGxiYWNrKFJlc3VsdDo6U3VjY2VlZGVkKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBBU1NFUlQocmVxdWVzdCA9PSBtX2xv
YWRlci0+cmVxdWVzdCgpKTsKLSAgICAgICAgICAgIHN0YXJ0KCk7Ci0gICAgICAgIH0pOwotICAg
IH0pOwotfQotCi12b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVj
ZWl2ZVJlc3BvbnNlTWVzc2FnZSkKLXsKLSAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSks
IG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlXSgpIG11dGFibGUgewotICAg
ICAgICBpZiAoIW1fbG9hZGVyKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChh
dXRvIGNhbGxiYWNrID0gV1RGTW92ZShtX2NhbGxiYWNrKSkKLSAgICAgICAgICAgIGNhbGxiYWNr
KFJlc3VsdDo6U3VjY2VlZGVkKTsKLQotICAgICAgICBBU1NFUlQoIXJlc3BvbnNlLmlzUmVkaXJl
Y3Rpb24oKSB8fCAhcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygpLmNvbnRhaW5zKEhUVFBIZWFk
ZXJOYW1lOjpMb2NhdGlvbikpOwotCi0gICAgICAgIGlmICghbmVlZHNDb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZU1lc3NhZ2UpIHsKLSAgICAgICAgICAgIG1fbG9hZGVyLT5kaWRSZWNlaXZlUmVz
cG9uc2UocmVzcG9uc2UsIFtdIHsgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LQotICAgICAgICBtX2xvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyldIHsKLSAgICAgICAgICAgIGlm
ICghbV9sb2FkZXIpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBtX2Nv
bm5lY3Rpb24tPmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UobV9pZGVudGlmaWVyLCBt
X3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKLSAgICAgICAgfSk7Ci0gICAg
fSk7Ci19Ci0KLXZvaWQgU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpkaWRSZWNlaXZlRGF0YShj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UsIGludDY0X3QgZW5jb2RlZERh
dGFMZW5ndGgpCi17Ci0gICAgYXV0byogZGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGRhdGFSZWZlcmVuY2UuZGF0YSgpKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGVuY29kZWREYXRhTGVuZ3RoLCBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBkYXRhUmVmZXJlbmNlLnNpemUoKSldKCkgbXV0
YWJsZSB7Ci0gICAgICAgIGlmICghbV9sb2FkZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgbV9lbmNvZGVkRGF0YUxlbmd0aCArPSBlbmNvZGVkRGF0YUxlbmd0aDsKLQotICAgICAg
ICBtX2xvYWRlci0+ZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlciksIG1fZW5jb2RlZERh
dGFMZW5ndGgsIERhdGFQYXlsb2FkQnl0ZXMpOwotICAgIH0pOwotfQotCi12b2lkIFNlcnZpY2VX
b3JrZXJDbGllbnRGZXRjaDo6ZGlkUmVjZWl2ZUZvcm1EYXRhKGNvbnN0IElQQzo6Rm9ybURhdGFS
ZWZlcmVuY2UmKQotewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9ybSBkYXRhIHJlYWRpbmcu
Ci19Ci0KLXZvaWQgU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpkaWRGaW5pc2goKQotewotICAg
IGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0g
ewotICAgICAgICBpZiAoIW1fbG9hZGVyKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg
IEFTU0VSVCghbV9jYWxsYmFjayk7Ci0KLSAgICAgICAgbV9sb2FkZXItPmRpZEZpbmlzaExvYWRp
bmcoTmV0d29ya0xvYWRNZXRyaWNzIHsgfSk7Ci0gICAgICAgIG1fc2VydmljZVdvcmtlclByb3Zp
ZGVyLmZldGNoRmluaXNoZWQobV9pZGVudGlmaWVyKTsKLSAgICB9KTsKLX0KLQotdm9pZCBTZXJ2
aWNlV29ya2VyQ2xpZW50RmV0Y2g6OmRpZEZhaWwoUmVzb3VyY2VFcnJvciYmIGVycm9yKQotewot
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgZXJyb3IgPSBXVEZNb3ZlKGVycm9yKV0gewotICAgICAgICBpZiAoIW1fbG9hZGVyKQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGF1dG8qIGRvY3VtZW50ID0gbV9sb2FkZXItPmZy
YW1lKCkgPyBtX2xvYWRlci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKSA6IG51bGxwdHI7Ci0gICAgICAg
IGlmIChkb2N1bWVudCkgewotICAgICAgICAgICAgaWYgKG1fbG9hZGVyLT5vcHRpb25zKCkuZGVz
dGluYXRpb24gIT0gRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6RW1wdHlTdHJpbmcgfHwgZXJy
b3IuaXNHZW5lcmFsKCkpCi0gICAgICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNz
YWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvci5sb2NhbGl6
ZWREZXNjcmlwdGlvbigpKTsKLSAgICAgICAgICAgIGlmIChtX2xvYWRlci0+b3B0aW9ucygpLmRl
c3RpbmF0aW9uICE9IEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OkVtcHR5U3RyaW5nKQotICAg
ICAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpK
UywgTWVzc2FnZUxldmVsOjpFcnJvciwgbWFrZVN0cmluZygiQ2Fubm90IGxvYWQgIiwgZXJyb3Iu
ZmFpbGluZ1VSTCgpLnN0cmluZygpLCAiLiIpKTsKLSAgICAgICAgfQotCi0gICAgICAgIG1fbG9h
ZGVyLT5kaWRGYWlsKGVycm9yKTsKLQotICAgICAgICBpZiAoYXV0byBjYWxsYmFjayA9IFdURk1v
dmUobV9jYWxsYmFjaykpCi0gICAgICAgICAgICBjYWxsYmFjayhSZXN1bHQ6OlN1Y2NlZWRlZCk7
Ci0KLSAgICAgICAgbV9zZXJ2aWNlV29ya2VyUHJvdmlkZXIuZmV0Y2hGaW5pc2hlZChtX2lkZW50
aWZpZXIpOwotICAgIH0pOwotfQotCi12b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6ZGlk
Tm90SGFuZGxlKCkKLXsKLSAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyldIHsKLSAgICAgICAgaWYgKCFtX2xvYWRlcikKLSAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICBpZiAoYXV0byBjYWxsYmFjayA9IFdURk1vdmUobV9jYWxsYmFj
aykpCi0gICAgICAgICAgICBjYWxsYmFjayhSZXN1bHQ6OlVuaGFuZGxlZCk7Ci0KLSAgICAgICAg
bV9zZXJ2aWNlV29ya2VyUHJvdmlkZXIuZmV0Y2hGaW5pc2hlZChtX2lkZW50aWZpZXIpOwotICAg
IH0pOwotfQotCi12b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6Y2FuY2VsKCkKLXsKLSAg
ICBpZiAoYXV0byBjYWxsYmFjayA9IFdURk1vdmUobV9jYWxsYmFjaykpCi0gICAgICAgIGNhbGxi
YWNrKFJlc3VsdDo6Q2FuY2VsbGVkKTsKLQotICAgIG1fY29ubmVjdGlvbi0+Y2FuY2VsRmV0Y2go
bV9pZGVudGlmaWVyLCBtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKLSAg
ICBtX2xvYWRlciA9IG51bGxwdHI7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5k
aWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzY2N2FjNzU3ZmRkNzEwODg4YjhiMmQ0ZWVlOTQ0OTkw
ZjBiMGQwMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gu
aAorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLQotI2luY2x1ZGUgIkRhdGFSZWZlcmVu
Y2UuaCIKLSNpbmNsdWRlICJGb3JtRGF0YVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgIk1lc3NhZ2VS
ZWNlaXZlci5oIgotI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKLSNpbmNsdWRlIDxXZWJDb3Jl
L0ZldGNoSWRlbnRpZmllci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXIuaD4KLSNpbmNsdWRlIDx3dGYvQ29tcGxl
dGlvbkhhbmRsZXIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYlNXQ2xpZW50
Q29ubmVjdGlvbjsKLWNsYXNzIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjsKLQotY2xhc3MgU2Vy
dmljZVdvcmtlckNsaWVudEZldGNoIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8U2VydmljZVdv
cmtlckNsaWVudEZldGNoPiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKLXB1YmxpYzoK
LSAgICBlbnVtIGNsYXNzIFJlc3VsdCB7IFN1Y2NlZWRlZCwgQ2FuY2VsbGVkLCBVbmhhbmRsZWQg
fTsKLSAgICB1c2luZyBDYWxsYmFjayA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXN1
bHQpPjsKLQotICAgIHN0YXRpYyBSZWY8U2VydmljZVdvcmtlckNsaWVudEZldGNoPiBjcmVhdGUo
V2ViU2VydmljZVdvcmtlclByb3ZpZGVyJiwgUmVmPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyPiYm
LCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIsIFJlZjxXZWJTV0NsaWVudENvbm5lY3Rpb24+JiYs
IGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgQ2FsbGJhY2sm
Jik7Ci0gICAgflNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaCgpOwotCi0gICAgdm9pZCBzdGFydCgp
OwotCi0gICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImKSBmaW5hbDsKLSAgICB2b2lkIGNhbmNlbCgpOwotCi0gICAgYm9vbCBpc09uZ29pbmco
KSBjb25zdCB7IHJldHVybiAhIW1fY2FsbGJhY2s7IH0KLQotcHJpdmF0ZToKLSAgICBTZXJ2aWNl
V29ya2VyQ2xpZW50RmV0Y2goV2ViU2VydmljZVdvcmtlclByb3ZpZGVyJiwgUmVmPFdlYkNvcmU6
OlJlc291cmNlTG9hZGVyPiYmLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIsIFJlZjxXZWJTV0Ns
aWVudENvbm5lY3Rpb24+JiYsIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBS
ZWRpcmVjdCwgQ2FsbGJhY2smJik7Ci0KLSAgICBPcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yPiB2YWxpZGF0ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsK
LQotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSk7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYp
OwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgaW50
NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRm9ybURhdGEoY29u
c3QgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYpOwotICAgIHZvaWQgZGlkRmluaXNoKCk7Ci0gICAg
dm9pZCBkaWRGYWlsKFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik7Ci0gICAgdm9pZCBkaWROb3RI
YW5kbGUoKTsKLQotICAgIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlciYgbV9zZXJ2aWNlV29ya2Vy
UHJvdmlkZXI7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyPiBtX2xvYWRlcjsK
LSAgICBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIgbV9pZGVudGlmaWVyOwotICAgIFJlZjxXZWJT
V0NsaWVudENvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKLSAgICBDYWxsYmFjayBtX2NhbGxiYWNr
OwotICAgIGJvb2wgbV9zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0IHsg
dHJ1ZSB9OwotICAgIGludDY0X3QgbV9lbmNvZGVkRGF0YUxlbmd0aCB7IDAgfTsKLSAgICBib29s
IG1fZGlkRmFpbCB7IGZhbHNlIH07Ci0gICAgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbklkZW50aWZpZXIgbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcjsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLm1lc3NhZ2VzLmluCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAzZDNiYzc0MDRiZmI0N2Q2MWUwZDE1ODhlMWE1ZjJhOWMwNmEx
NjYxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5tZXNz
YWdlcy5pbgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLQotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLQotbWVz
c2FnZXMgLT4gU2VydmljZVdvcmtlckNsaWVudEZldGNoIHsKLSAgICBEaWRSZWNlaXZlUmVzcG9u
c2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgYm9vbCBuZWVkc0NvbnRpbnVl
RGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkKLSAgICBEaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25z
ZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKQotICAgIERpZFJlY2VpdmVEYXRh
KElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQotICAg
IERpZFJlY2VpdmVGb3JtRGF0YShJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIGRhdGEpCi0gICAgRGlk
RmluaXNoKCkKLSAgICBEaWRGYWlsKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCi0gICAg
RGlkTm90SGFuZGxlKCkKLX0KLQotI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVu
dENvbm5lY3Rpb24uY3BwCmluZGV4IDA2YTRjYzdkYjdhMThjMTE4N2JhZmM2NTg4NTU0MzJjNDVl
YjJhZTIuLmQwMDg5YmY1OGI2NTQ1NjVhOGUxZTkxMmQxYmRhNjIyYTdkOWVmYzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRD
b25uZWN0aW9uLmNwcApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCi0jaW5jbHVkZSAi
U2VydmljZVdvcmtlckNsaWVudEZldGNoLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29s
TWVzc2FnZXMuaCIKQEAgLTIwMywyMSArMjAyLDYgQEAgdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rp
b246OmdldFJlZ2lzdHJhdGlvbnMoU2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBjb24K
ICAgICB9KTsKIH0KIAotdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnN0YXJ0RmV0Y2goRmV0
Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBT
dHJpbmcmIHJlZmVycmVyKQotewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVj
dGlvbjo6U3RhcnRGZXRjaCB7IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBm
ZXRjaElkZW50aWZpZXIsIHJlcXVlc3QsIG9wdGlvbnMsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2Ug
eyByZXF1ZXN0Lmh0dHBCb2R5KCkgfSwgcmVmZXJyZXIgfSk7Ci19Ci0KLXZvaWQgV2ViU1dDbGll
bnRDb25uZWN0aW9uOjpjYW5jZWxGZXRjaChGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVy
LCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uSWRlbnRpZmllcikKLXsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5l
Y3Rpb246OkNhbmNlbEZldGNoIHsgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIs
IGZldGNoSWRlbnRpZmllciB9KTsKLX0KLQotdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmNv
bnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoRmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRp
ZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgc2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbklkZW50aWZpZXIpCi17Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpDb250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlIHsgc2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIGZldGNoSWRlbnRpZmllciB9KTsKLX0KLQogdm9pZCBX
ZWJTV0NsaWVudENvbm5lY3Rpb246OmNvbm5lY3Rpb25Ub1NlcnZlckxvc3QoKQogewogICAgIGNs
ZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ2xpZW50Q29ubmVjdGlvbi5oCmluZGV4IDI3ZmVhMmMxYjI0YjhjMmE5NjRjNGU5NjdkM2Y3
ZWNhMzhkMDM3MmYuLjllNDQ1ZjU1Yzk2ODA5Y2E5Y2Q2MzU2MzFmNTU1NDc5OTFlY2E1MzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29u
bmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xp
ZW50Q29ubmVjdGlvbi5oCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIu
aCIKLSNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guaCIKICNpbmNsdWRlICJTaGFy
ZWRNZW1vcnkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TV0NsaWVudENvbm5lY3Rpb24uaD4KQEAgLTYwLDkgKzU5LDYg
QEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJikgZmluYWw7CiAKICAgICBib29sIG1heUhhdmVTZXJ2aWNlV29ya2VyUmVn
aXN0ZXJlZEZvck9yaWdpbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmKSBjb25z
dCBmaW5hbDsKLSAgICB2b2lkIHN0YXJ0RmV0Y2goV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyLCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiwgY29uc3Qg
U3RyaW5nJiByZWZlcnJlcik7Ci0gICAgdm9pZCBjYW5jZWxGZXRjaChXZWJDb3JlOjpGZXRjaElk
ZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsK
LSAgICB2b2lkIGNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoV2ViQ29yZTo6RmV0Y2hJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7
CiAKICAgICB2b2lkIGNvbm5lY3Rpb25Ub1NlcnZlckxvc3QoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92
aWRlci5jcHAKaW5kZXggNjJhMzliMjVmZGZhZDE3ZTExNTc2MzMwMDI4MjQyYjMwOWYxOTI4NS4u
N2RjZDE4ZWJhZDMwNmRhZTQ3NWIwMDdiNTdlN2UxNjVmNmJiMzUwMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2Vy
UHJvdmlkZXIuY3BwCkBAIC02Niw0OCArNjYsNiBAQCBXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rp
b24qIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6ZXhpc3RpbmdTZXJ2aWNlV29ya2VyQ29ubgog
ICAgIHJldHVybiBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24tPmV4aXN0aW5nU2VydmljZVdvcmtl
ckNvbm5lY3Rpb24oKTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIHNob3VsZEhhbmRsZUZldGNo
KGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKLXsKLSAgICBpZiAob3B0aW9u
cy5zZXJ2aWNlV29ya2Vyc01vZGUgPT0gU2VydmljZVdvcmtlcnNNb2RlOjpOb25lKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoaXNQb3RlbnRpYWxOYXZpZ2F0aW9uT3JTdWJyZXNv
dXJjZVJlcXVlc3Qob3B0aW9ucy5kZXN0aW5hdGlvbikpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIHJldHVybiAhIW9wdGlvbnMuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXI7Ci19Ci0KLXZvaWQgV2ViU2VydmljZVdvcmtlclByb3ZpZGVyOjpoYW5kbGVGZXRjaChSZXNv
dXJjZUxvYWRlciYgbG9hZGVyLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQ
UmVkaXJlY3QsIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6Q2FsbGJhY2smJiBjYWxsYmFjaykK
LXsKLSAgICBpZiAoIUxlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpjYW5TZXJ2aWNlV29ya2Vyc0hhbmRs
ZVVSTFNjaGVtZShsb2FkZXIucmVxdWVzdCgpLnVybCgpLnByb3RvY29sKCkudG9TdHJpbmdXaXRo
b3V0Q29weWluZygpKSB8fCAhc2hvdWxkSGFuZGxlRmV0Y2gobG9hZGVyLm9wdGlvbnMoKSkpIHsK
LSAgICAgICAgY2FsbGJhY2soU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpSZXN1bHQ6OlVuaGFu
ZGxlZCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRvJiBjb25uZWN0aW9uID0g
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCku
c2VydmljZVdvcmtlckNvbm5lY3Rpb24oKTsKLSAgICBhdXRvIGZldGNoSWRlbnRpZmllciA9IG1h
a2VPYmplY3RJZGVudGlmaWVyPEZldGNoSWRlbnRpZmllclR5cGU+KGxvYWRlci5pZGVudGlmaWVy
KCkpOwotICAgIG1fb25nb2luZ0ZldGNoVGFza3MuYWRkKGZldGNoSWRlbnRpZmllciwgU2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoOjpjcmVhdGUoKnRoaXMsIGxvYWRlciwgZmV0Y2hJZGVudGlmaWVy
LCBjb25uZWN0aW9uLCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBX
VEZNb3ZlKGNhbGxiYWNrKSkpOwotfQotCi1ib29sIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6
Y2FuY2VsRmV0Y2goRmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllcikKLXsKLSAgICBhdXRv
IGZldGNoID0gbV9vbmdvaW5nRmV0Y2hUYXNrcy50YWtlKGZldGNoSWRlbnRpZmllcik7Ci0gICAg
aWYgKGZldGNoKQotICAgICAgICAoKmZldGNoKS0+Y2FuY2VsKCk7Ci0gICAgcmV0dXJuICEhZmV0
Y2g7Ci19Ci0KLXZvaWQgV2ViU2VydmljZVdvcmtlclByb3ZpZGVyOjpmZXRjaEZpbmlzaGVkKEZl
dGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIpCi17Ci0gICAgbV9vbmdvaW5nRmV0Y2hUYXNr
cy50YWtlKGZldGNoSWRlbnRpZmllcik7Ci19Ci0KLXZvaWQgV2ViU2VydmljZVdvcmtlclByb3Zp
ZGVyOjpkaWRSZWNlaXZlU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKLXsKLSAgICBpZiAoYXV0
byBmZXRjaCA9IG1fb25nb2luZ0ZldGNoVGFza3MuZ2V0KG1ha2VPYmplY3RJZGVudGlmaWVyPEZl
dGNoSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCi0gICAgICAgIGZl
dGNoLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKLX0KLQogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2Vy
UHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VX
b3JrZXJQcm92aWRlci5oCmluZGV4IDA4OGFlZDk1NGU5YTlkNGVlNTkyZjVkNzU1MjcyNzE0NGEw
NTBhMjIuLmMwMGMwNDc5MzEyN2EwNjlmYWU5NTIzMDEyNWRiYjk1NTU0Y2Q3MzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92
aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VX
b3JrZXJQcm92aWRlci5oCkBAIC0yNyw3ICsyNyw2IEBACiAKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiAKLSNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guaCIKICNpbmNsdWRl
IDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJQcm92aWRlci5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogCkBAIC00MSwxMSArNDAsNiBAQCBjbGFzcyBXZWJTZXJ2aWNlV29ya2VyUHJv
dmlkZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U2VydmljZVdvcmtlclByb3ZpZGVyIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgV2ViU2VydmljZVdvcmtlclByb3ZpZGVyJiBzaW5nbGV0b24oKTsK
IAotICAgIHZvaWQgaGFuZGxlRmV0Y2goV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXImLCBib29sIHNo
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFNlcnZpY2VXb3JrZXJDbGll
bnRGZXRjaDo6Q2FsbGJhY2smJik7Ci0gICAgYm9vbCBjYW5jZWxGZXRjaChXZWJDb3JlOjpGZXRj
aElkZW50aWZpZXIpOwotICAgIHZvaWQgZmV0Y2hGaW5pc2hlZChXZWJDb3JlOjpGZXRjaElkZW50
aWZpZXIpOwotCi0gICAgdm9pZCBkaWRSZWNlaXZlU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKICAgICB2b2lkIGRpZFJlY2Vp
dmVTZXJ2aWNlV29ya2VyQ2xpZW50UmVnaXN0cmF0aW9uTWF0Y2goSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJik7CiAKIHByaXZhdGU6CkBAIC01NCw4ICs0OCw2IEBAIHByaXZhdGU6CiAK
ICAgICBXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb24qIGV4aXN0aW5nU2VydmljZVdvcmtlckNv
bm5lY3Rpb24oKSBmaW5hbDsKICAgICBXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb24mIHNlcnZp
Y2VXb3JrZXJDb25uZWN0aW9uKCkgZmluYWw7Ci0KLSAgICBIYXNoTWFwPFdlYkNvcmU6OkZldGNo
SWRlbnRpZmllciwgUmVmPFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaD4+IG1fb25nb2luZ0ZldGNo
VGFza3M7CiB9OyAvLyBjbGFzcyBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCAwMTdiNDdmMzIw
N2Q5OWU1YmI1ZTc3YzBhYzY1YjE3MTk3MmZkZTllLi44NjY2OGNiYTc1ZDVlNDhkZjRkYzlkNzJm
ZDEzYzQ3OThiNjkzOTE3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMiBAQAorMjAxOS0xMC0xMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisK
KyAgICAgICAgSGFuZGxlIHNlcnZpY2Ugd29ya2VyIGxvYWRzIHRocm91Z2ggTmV0d29ya1Jlc291
cmNlTG9hZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDIzMDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0
Y2gtcmVxdWVzdC14aHIuaHR0cHMtZXhwZWN0ZWQudHh0OgorCiAyMDE5LTEwLTEwICBDYXJsb3Mg
QWxiZXJ0byBMb3BleiBQZXJleiAgPGNsb3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIEltcG9y
dCBjc3MvY3NzLWltYWdlcyBXUFQgdGVzdHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vy
L2ZldGNoLXJlcXVlc3QteGhyLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vy
L2ZldGNoLXJlcXVlc3QteGhyLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCA0ZmI2YmI1M2IzMTY1
NTJmNDFkMGE5N2ZhOTNhZGQ3ZjY4NmE2NTIzLi44NWFhMDBiMGFlOGVkY2MxNjgxNDU2NWQ5OTlk
YWQ3ZTQxYTkzYzk0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9mZXRjaC1yZXF1ZXN0
LXhoci5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0Y2gtcmVx
dWVzdC14aHIuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC04LDcgKzgsNyBAQCBQQVNTIEZldGNoRXZl
bnQjcmVxdWVzdC5ib2R5IGNvbnRhaW5zIFhIUiByZXF1ZXN0IGRhdGEgKHN0cmluZykKIFBBU1Mg
RmV0Y2hFdmVudCNyZXF1ZXN0LmJvZHkgY29udGFpbnMgWEhSIHJlcXVlc3QgZGF0YSAoYmxvYikg
CiBQQVNTIEZldGNoRXZlbnQjcmVxdWVzdC5tZXRob2QgaXMgc2V0IHRvIFhIUiBtZXRob2QgCiBQ
QVNTIFhIUiB1c2luZyBPUFRJT05TIG1ldGhvZCAKLUZBSUwgWEhSIHdpdGggZm9ybSBkYXRhIHBy
b21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIkVycm9y
OiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAoc3RyaW5nKSAiUE9TVCIgYnV0IGdvdCAodW5kZWZp
bmVkKSB1bmRlZmluZWQiCitQQVNTIFhIUiB3aXRoIGZvcm0gZGF0YSAKIFBBU1MgWEhSIHdpdGgg
bW9kZS9jcmVkZW50aWFscyBzZXQgCiBQQVNTIFhIUiB0byBkYXRhIFVSTCAKIFBBU1MgcmVzdG9y
ZSBnbG9iYWwgc3RhdGUgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380751</attachid>
            <date>2019-10-11 07:11:29 -0700</date>
            <delta_ts>2019-10-14 01:08:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202309-20191011161125.patch</filename>
            <type>text/plain</type>
            <size>107643</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMDAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNmMDc4MDEwMzI2NTYy
M2ZiNmRhNjE0NGZhNmU2ZjU4NjRjNWVmNy4uNzk5N2QzNDE5ZGQ3Y2UyOTFjOTkxOWI0ZmE0OGVh
MDIxZDlhYTVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTEwLTEwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBIYW5kbGUgc2VydmljZSB3
b3JrZXIgbG9hZHMgdGhyb3VnaCBOZXR3b3JrUmVzb3VyY2VMb2FkZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjMwOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IHRvIHNlcmlhbGl6ZSBIVFRQ
IGhlYWRlciBuYW1lcyBhcyBlbnVtZXJhdGlvbi4KKyAgICAgICAgVXBkYXRlZCBTV1NlcnZlciBh
YmlsaXR5IHRvIGhhbmRsZSBzY2hlbWVzIGJ5IGFkZGluZyBidWlsdC1pbiBzdXBwb3J0IGZvciBI
VFRQIGFuZCBIVFRQUyBhcyBkb25lIGluIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5LgorCisgICAgICAg
IENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VM
b2FkZXJPcHRpb25zLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jcmVhdGUtaHR0cC1o
ZWFkZXItbmFtZS10YWJsZToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpjYW5IYW5kbGVTY2hlbWUgY29u
c3QpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2IpOgorCiAyMDE5LTEw
LTEwICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRleC5ydT4KIAogICAgICAgICBH
dWFyZCBHQ3J5cHQtc3BlY2lmaWMgY29kZSB3aXRoIFVTRShHQ1JZUFQpIGluc3RlYWQgb2YgUExB
VEZPUk0gbWFjcm9zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQ1MTcyNzA4YWNhM2JiYmJkNDljODMzZTdiN2Q2MTFk
MGM5MTAzYWMuLjcxYzNkMTVlYjJkODNlYTg4MmNjYzNhNGFiOWIxNGRlNDM4ODU0ODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsOTkgQEAKKzIwMTktMTAtMTAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgorCisgICAgICAgIEhhbmRsZSBzZXJ2aWNlIHdvcmtlciBsb2FkcyB0aHJvdWdo
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjAyMzA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVtb3ZlIFNlcnZpY2VXb3JrZXJGZXRjaENsaWVudC4KKyAgICAgICAg
SW5zdGVhZCB3ZSB1c2UgdGhlIG5vcm1hbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXIvV2ViUmVzb3Vy
Y2VMb2FkZXIgY29tbXVuaWNhdGlvbiBjaGFubmVsLgorICAgICAgICBXZSBwYXNzIGFkZGl0aW9u
YWwgcGFyYW1ldGVycywgaW4gcGFydGljdWxhciBzZXJ2aWNlIHdvcmtlciBtb2RlIGFuZCByZWdp
c3RyYXRpb24gaWRlbnRpZmllci4KKworICAgICAgICBCYXNlZCBvbiB0aGF0IGluZm9ybWF0aW9u
LCBuZXR3b3JrIHByb2Nlc3Mgd2lsbCBkZWNpZGUgd2hldGhlciB0byBsb2FkIGZyb20gc2Vydmlj
ZSB3b3JrZXIgb3IgbmV0d29yay4KKyAgICAgICAgVGhlIGZpcnN0IGFkdmFudGFnZSBpcyB0aGF0
IGluIGNhc2Ugb2Ygc2VydmljZSB3b3JrZXIgbm90IGhhbmRsaW5nIHRoZSBsb2FkLCBnb2luZyB0
byB0aGUgbmV0d29yayBpcyBmYXN0ZXIuCisgICAgICAgIFRoaXMgd2lsbCBhbHNvIGFsbG93IHVz
IHRvIGRvIHRoZSByZWdpc3RyYXRpb24gbWF0Y2hpbmcgaW4gbmV0d29yayBwcm9jZXNzIHdoZW4g
cmVjZWl2aW5nIGEgbmF2aWdhdGlvbiByZXF1ZXN0LgorCisgICAgICAgIFNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2sgaXMgbm93IGJlZWZlZCB1cCB0byBkbyB0aGUgbGluayBiZXR3ZWVuIHNlcnZpY2Ug
d29ya2VyIGFuZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXIvV2ViUmVzb3VyY2VMb2FkZXIuCisgICAg
ICAgIFRvIHN1cHBvcnQgdGhlIHNhbWUgY29uc29sZSBsb2dnaW5nLCB3ZSBhZGQgYSBuZXcgbWVz
c2FnZSBjYWxsZWQgRGlkRmFpbFNlcnZpY2VXb3JrZXJMb2FkLgorCisgICAgICAgIFRvIHN1cHBv
cnQgQVBJIHRlc3RzLCB3ZSBjb250aW51ZSB0byBnbyB0byB0aGUgc2VydmljZSB3b3JrZXIgYmVm
b3JlIHRyeWluZyB0byBnbyB0byBVUkwgc2NoZW1lIGhhbmRsZXJzLgorICAgICAgICBUaGlzIGFk
ZHMgc29tZSBidXJkZW4gYXMgd2UgbmVlZCB0byBnbyB0byBuZXR3b3JrIHByb2Nlc3Mvc2Vydmlj
ZSB3b3JrZXIgcHJvY2VzcyBhbmQsIGluIGNhc2UgbG9hZCBpcyBub3QgaGFuZGxlZAorICAgICAg
ICBieSBzZXJ2aWNlIHdvcmtlciwgd2UgZ28gYmFjayB0byB0aGUgd2ViIHByb2Nlc3MgdG8gZG8g
dGhlIGxvYWQgdGhyb3VnaCBVUkwgc2NoZW1lIGhhbmRsZXJzLgorICAgICAgICBGb3IgdGhhdCBw
dXJwb3NlIHdlIHVzZSBTZXJ2aWNlV29ya2Vyc01vZGU6Ok9ubHkuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0Ogor
ICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6c2NoZWR1bGVSZXNvdXJjZUxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjphYm9ydCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRXaXRo
U2VydmljZVdvcmtlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
c2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2Vydmlj
ZVdvcmtlckZldGNoVGFzazo6U2VydmljZVdvcmtlckZldGNoVGFzayk6CisgICAgICAgIChXZWJL
aXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6On5TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKToKKyAg
ICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6c2VuZFRvU2VydmljZVdvcmtl
cik6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnNlbmRUb0NsaWVu
dCk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnN0YXJ0KToKKyAg
ICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6c3RhcnRGZXRjaCk6CisgICAg
ICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZWRpcmVjdFJl
c3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6
ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
OjpkaWRSZWNlaXZlRm9ybURhdGEpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrOjpkaWRGaW5pc2gpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrOjpkaWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6
ZGlkTm90SGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6
Y2FuY2VsRnJvbUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s6OmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpjb250aW51ZUZldGNoVGFza1dpdGgpOgorICAgICAgICAo
V2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjp0aW1lb3V0VGltZXJGaXJlZCk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Lmg6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmZldGNoSWRlbnRp
ZmllciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y2FuY2VsRmV0Y2gpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTV1NlcnZlckNvbm5lY3Rpb246OmNyZWF0ZUZldGNoVGFzayk6CisgICAgICAgIChXZWJLaXQ6
OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaCk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6c3RhcnRGZXRjaCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZGlkUmVj
ZWl2ZUZldGNoVGFza01lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246OnJlZ2lzdGVyRmV0Y2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246OnVucmVnaXN0ZXJGZXRjaCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZmV0Y2hUYXNrVGltZWRPdXQpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6aXBjQ29ubmVjdGlvbiBjb25zdCk6CisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlJlc291cmNlTG9hZGVyOjpkaWRGYWlsU2VydmljZVdvcmtlckxvYWQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6c2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50
RmV0Y2guaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdv
cmtlckNsaWVudEZldGNoLm1lc3NhZ2VzLmluOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwOgorICAgICAgICAqIFdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmg6CisKIDIwMTktMTAtMTAgIEJh
c3VrZSBTdXp1a2kgIDxCYXN1a2UuU3V6dWtpQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5DYWly
b10gTW92ZSByZW1vdGUgY29tbXVuaWNhdGlvbiBoYW5kbGluZyBmcm9tIFJlbW90ZUluc3BlY3Rv
clNlcnZlciB0byBSZW1vdGVJbnNwZWN0b3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkZXJPcHRpb25zLmgKaW5kZXggOWUzMDc0ZGEzMjExZDBlZTk3YjhlYjJlZGY0OTE2
OWVjNWRmMmE0YS4uYWVjZjk0NDFkMzIxZWQ5OTZiOGU0ZDIwMjEwMGI2NWZmYzBhZTEzNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaApAQCAtMTc1
LDMgKzE3NSwxNiBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zIDogcHVibGljIEZldGNo
T3B0aW9ucyB7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYg
eworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJz
TW9kZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJzTW9kZSwKKyAgICAgICAgV2ViQ29yZTo6U2VydmljZVdvcmtlcnNNb2Rl
OjpBbGwsCisgICAgICAgIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJzTW9kZTo6Tm9uZSwKKyAgICAg
ICAgV2ViQ29yZTo6U2VydmljZVdvcmtlcnNNb2RlOjpPbmx5CisgICAgPjsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jcmVhdGUtaHR0cC1oZWFkZXItbmFtZS10YWJsZSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3JlYXRlLWh0dHAtaGVhZGVyLW5hbWUtdGFibGUKaW5kZXggNjQ3Y2RkODI0MmZh
Zjc4NWUwMjMxNDM0ZDAwOTBlNmMzOTc3M2RhZC4uNDM5ZGI2OGMzMmM0M2UwODNiMDAwNjc4ZDcy
Y2UzNTlkYWQzZTI5ZiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jcmVhdGUtaHR0cC1oZWFkZXItbmFtZS10YWJsZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NyZWF0ZS1odHRwLWhlYWRlci1uYW1lLXRhYmxlCkBAIC0yMzMsNiArMjMz
LDI4IEBAIFdFQkNPUkVfRVhQT1JUIFN0cmluZ1ZpZXcgaHR0cEhlYWRlck5hbWVTdHJpbmcoSFRU
UEhlYWRlck5hbWUpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK25hbWVzcGFjZSBXVEYg
eworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkhUVFBIZWFkZXJOYW1l
PiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6SFRU
UEhlYWRlck5hbWUsCisnJycpCisKK2lzX2ZpcnN0ID0gVHJ1ZQorZm9yIGh0dHBfaGVhZGVyX25h
bWUgaW4gaHR0cF9oZWFkZXJfbmFtZXM6CisgICAgaWYgaXNfZmlyc3Q6CisgICAgICAgIGlzX2Zp
cnN0ID0gRmFsc2UKKyAgICBlbHNlOgorICAgIAloZWFkZXJfZmlsZS53cml0ZSgnLFxuJykKKwor
ICAgIGhlYWRlcl9maWxlLndyaXRlKCcgICAgICAgIFdlYkNvcmU6OkhUVFBIZWFkZXJOYW1lOjol
cycgJSBodHRwX2hlYWRlcl9uYW1lX3RvX2lkW2h0dHBfaGVhZGVyX25hbWVdKQorCitoZWFkZXJf
ZmlsZS53cml0ZSgnJycKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKICNlbmRp
ZiAvLyBIVFRQSGVhZGVyTmFtZXNfaAogJycnKQogaGVhZGVyX2ZpbGUuY2xvc2UoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRl
eCA5YmI2NmFiMjhlMDc1ZTA3MDBjZjNjNzY5Y2UzY2ViMmYzNmI4NjAwLi4xMzdjNjYyNTUyZTFj
YWU2MGM1NTIwMjAyZGU3OGNmNDhmZWIxZDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtOTc0LDYgKzk3NCwyMSBAQCB2
b2lkIFNXU2VydmVyOjpjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgcmVnaXN0cmFibGVEb21haQogICAgIG1fY3JlYXRlQ29udGV4dENvbm5lY3Rpb25DYWxs
YmFjayhyZWdpc3RyYWJsZURvbWFpbik7CiB9CiAKK2Jvb2wgU1dTZXJ2ZXI6OmNhbkhhbmRsZVNj
aGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkgY29uc3QKK3sKKyAgICBpZiAoc2NoZW1lLmlzTnVs
bCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoc2NoZW1lLnN0YXJ0c1dpdGhJ
Z25vcmluZ0FTQ0lJQ2FzZSgiaHR0cCJfcykpIHsKKyAgICAgICAgaWYgKHNjaGVtZS5sZW5ndGgo
KSA9PSA0KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChzY2hlbWUubGVu
Z3RoKCkgPT0gNSAmJiBpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKHNjaGVtZVs0XSwgJ3MnKSkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBtX3JlZ2lzdGVy
ZWRTY2hlbWVzLmNvbnRhaW5zKHNjaGVtZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRleCA0NjAxMzE3NjE2YzgxNjc0
OGQyMDgwMGYyNjBiMzUyODU3NDg4MTcwLi4zMTNkNWU5MWUzYTFjZmQzYmMwOGY5ZDc4NjFhZjE5
ODk3YjlhMDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlci5oCkBAIC0xNjQsNyArMTY0LDcgQEAgcHVibGljOgogICAgIENvbm5lY3Rpb24q
IGNvbm5lY3Rpb24oU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKSBjb25z
dCB7IHJldHVybiBtX2Nvbm5lY3Rpb25zLmdldChpZGVudGlmaWVyKTsgfQogCiAgICAgY29uc3Qg
SGFzaE1hcDxTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8Q29u
bmVjdGlvbj4+JiBjb25uZWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbnM7IH0K
LSAgICBjb25zdCBIYXNoU2V0PFN0cmluZz4gcmVnaXN0ZXJlZFNjaGVtZXMoKSBjb25zdCB7IHJl
dHVybiBtX3JlZ2lzdGVyZWRTY2hlbWVzOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjYW5I
YW5kbGVTY2hlbWUoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAKICAgICBTV09yaWdpblN0b3JlJiBv
cmlnaW5TdG9yZSgpIHsgcmV0dXJuIG1fb3JpZ2luU3RvcmU7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5j
cHAKaW5kZXggNzc4YWU3ZDZjODMzNzdlN2QxZTQyZmVkNzIwYzMzYzc1N2ZlMmQxZi4uOGM0YTAw
NWQxMzFlZDJiMDNiMWRlODRmYTMxNDIzMzZhMWVjZTFkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3Bw
CkBAIC0yNTksNyArMjU5LDcgQEAgdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpydW5SZWdpc3Rlckpv
Yihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iKQogewogICAgIEFTU0VSVChqb2IudHlw
ZSA9PSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6UmVnaXN0ZXIpOwogCi0gICAgaWYgKCFzaG91bGRU
cmVhdEFzUG90ZW50aWFsbHlUcnVzdHdvcnRoeShqb2Iuc2NyaXB0VVJMKSAmJiAhbV9zZXJ2ZXIu
cmVnaXN0ZXJlZFNjaGVtZXMoKS5jb250YWlucyhqb2Iuc2NyaXB0VVJMLnByb3RvY29sKCkudG9T
dHJpbmdXaXRob3V0Q29weWluZygpKSkKKyAgICBpZiAoIXNob3VsZFRyZWF0QXNQb3RlbnRpYWxs
eVRydXN0d29ydGh5KGpvYi5zY3JpcHRVUkwpICYmICFtX3NlcnZlci5jYW5IYW5kbGVTY2hlbWUo
am9iLnNjcmlwdFVSTC5wcm90b2NvbCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkpCiAgICAg
ICAgIHJldHVybiByZWplY3RDdXJyZW50Sm9iKEV4Y2VwdGlvbkRhdGEgeyBTZWN1cml0eUVycm9y
LCAiU2NyaXB0IFVSTCBpcyBub3QgcG90ZW50aWFsbHkgdHJ1c3R3b3J0aHkiX3MgfSk7CiAKICAg
ICAvLyBJZiB0aGUgb3JpZ2luIG9mIGpvYidzIHNjcmlwdCB1cmwgaXMgbm90IGpvYidzIHJlZmVy
cmVyJ3Mgb3JpZ2luLCB0aGVuOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3Rz
LnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXggZjdjZDE4YmQyOTIzM2I4
NThmZTdjN2RkMzc1YTlhOTk2M2E2OTI2ZS4uMWUwNmU2MjYwY2QyZDk0ZTI0ODA4ZWI1N2YwNDI3
MGYxMzUzYTQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC0xOTAsNyArMTkwLDYgQEAgc2V0KFdl
YktpdF9NRVNTQUdFU19JTl9GSUxFUwogICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KICAgICBXZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJveHkubWVzc2FnZXMuaW4KIAotICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNl
V29ya2VyQ2xpZW50RmV0Y2gubWVzc2FnZXMuaW4KICAgICBXZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDbGllbnRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAgICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCAyZTQ3NjYwODU0MDNkNDIw
N2YyYmYxNzJlOTljNzg0NjkwYTljY2UxLi5mMWFkYWQ2MjY5ZDAxMmNhYjFkZDcyYjU5MDUyNThl
ZjkwOWY5NWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLWlucHV0
LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2Zp
bGVsaXN0CkBAIC0xMDUsNyArMTA1LDYgQEAgJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9E
SVIpL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5p
bgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0
aW9uTWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb3h5Lm1lc3NhZ2VzLmluCi0kKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1N0b3Jh
Z2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLm1lc3NhZ2VzLmluCiAkKFBST0pFQ1RfRElSKS9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAkKFBS
T0pFQ1RfRElSKS9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYktpdC9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCBiZDlkZDdmNjMzYzE3YmNmMjk5MDg3
N2YxZGUzYWFlNGE4ZmI0N2FjLi4xYzVkMjE0ZDAwNzFkMjY4NGZkY2M4YjhlNGFjOWM2NWJkOTdk
YjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QKQEAgLTgwLDggKzgwLDYgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvUmVtb3RlV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZVdlYkluc3BlY3RvclVJTWVz
c2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvU2Vj
SXRlbVNoaW1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1NlY0l0ZW1TaGltUHJveHlNZXNzYWdlcy5oCi0kKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TZXJ2aWNlV29ya2VyQ2xpZW50
RmV0Y2hNZXNzYWdlUmVjZWl2ZXIuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlcy5oCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYktpdDIvU2VydmljZVdvcmtlckZldGNoVGFza01lc3NhZ2VzLmgKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRy
b2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2
ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXgg
OWRlNzA0MjY2YWZlZTUxMzZlNjVlODQ3ODFiNWEwMjUyNTE1N2FjOS4uYmFlN2MzMTllNDc2NDQ1
YTljZTM2ZTYyZDc2ZWZlZGRmNjZhYjEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJp
dmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpA
QCAtMTMyLDcgKzEzMiw2IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFJlbW90ZVdlYklu
c3BlY3RvclByb3h5IFwKICAgICBSZW1vdGVXZWJJbnNwZWN0b3JVSSBcCiAgICAgU2VjSXRlbVNo
aW1Qcm94eSBcCi0gICAgU2VydmljZVdvcmtlckNsaWVudEZldGNoIFwKICAgICBTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrIFwKICAgICBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyIFwKICAgICBT
dG9yYWdlQXJlYU1hcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDYyMThhNmU5
MGZhYmZmNDQxOTM1ZWUwMWE3NWZkOWY1ZDlkMGE0NjYuLmNiNTBlYmFjMTBiOTAzMmFlMjU1MzQ5
ODVlNTBjNzdjNzgyOWZkMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC00MDYs
OSArNDA2LDEzIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNjaGVkdWxl
UmVzb3VyY2VMb2FkKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhCiAgICAgUkVMRUFTRV9BU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwogICAgIEFTU0VSVCghbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJz
LmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKIAotICAgIGF1dG8gbG9hZGVyID0gTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpjcmVhdGUoV1RGTW92ZShsb2FkUGFyYW1ldGVycyksICp0aGlzKTsKLSAgICBt
X25ldHdvcmtSZXNvdXJjZUxvYWRlcnMuYWRkKGlkZW50aWZpZXIsIGxvYWRlci5jb3B5UmVmKCkp
OworICAgIGF1dG8mIGxvYWRlciA9IG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5hZGQoaWRlbnRp
ZmllciwgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjcmVhdGUoV1RGTW92ZShsb2FkUGFyYW1ldGVy
cyksICp0aGlzKSkuaXRlcmF0b3ItPnZhbHVlOworCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQorICAgIGxvYWRlci0+c3RhcnRXaXRoU2VydmljZVdvcmtlcihtX3N3Q29ubmVjdGlvbi5nZXQo
KSk7CisjZWxzZQogICAgIGxvYWRlci0+c3RhcnQoKTsKKyNlbmRpZgogfQogCiB2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwZXJmb3JtU3luY2hyb25vdXNMb2FkKE5ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMsIE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJl
cGx5JiYgcmVwbHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4IGUyOGM3ZDE0YmQx
MGE0Yzc0YTc0YzU0ZjE0NjJkYjU5NDIzMDEzYzUuLmNmYTU0OTI0OWMxODMzZWY2NDQ1OTdjZDQw
YzY1NWI4MTUxZDIwNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCkBAIC0xMDcsNiAr
MTA3LDEyIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZShJUEM6
OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBmcmFtZUFuY2VzdG9yT3Jp
Z2luczsKICAgICBlbmNvZGVyIDw8IGlzSFRUUFNVcGdyYWRlRW5hYmxlZDsKIAorI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKKyAgICBlbmNvZGVyIDw8IHNlcnZpY2VXb3JrZXJzTW9kZTsKKyAg
ICBlbmNvZGVyIDw8IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOworICAgIGVu
Y29kZXIgPDwgaHR0cEhlYWRlcnNUb0tlZXA7CisjZW5kaWYKKwogI2lmIEVOQUJMRShDT05URU5U
X0VYVEVOU0lPTlMpCiAgICAgZW5jb2RlciA8PCBtYWluRG9jdW1lbnRVUkw7CiAgICAgZW5jb2Rl
ciA8PCB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwpAQCAtMjQyLDcgKzI0OCwyNyBA
QCBPcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycz4gTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnM6OmRlY29kZShJUAogICAgIGlmICghaXNIVFRQU1VwZ3JhZGVFbmFibGVk
KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIHJlc3VsdC5pc0hUVFBTVXBncmFk
ZUVuYWJsZWQgPSAqaXNIVFRQU1VwZ3JhZGVFbmFibGVkOwotICAgIAorCisjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQorICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJzTW9kZT4gc2VydmljZVdv
cmtlcnNNb2RlOworICAgIGRlY29kZXIgPj4gc2VydmljZVdvcmtlcnNNb2RlOworICAgIGlmICgh
c2VydmljZVdvcmtlcnNNb2RlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJl
c3VsdC5zZXJ2aWNlV29ya2Vyc01vZGUgPSAqc2VydmljZVdvcmtlcnNNb2RlOworCisgICAgT3B0
aW9uYWw8T3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+PiBzZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+IHNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOworICAgIGlmICghc2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbklkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmVz
dWx0LnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyID0gKnNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyOworCisgICAgT3B0aW9uYWw8SGFzaFNldDxIVFRQSGVhZGVy
TmFtZSwgV1RGOjpJbnRIYXNoPEhUVFBIZWFkZXJOYW1lPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRy
YWl0czxIVFRQSGVhZGVyTmFtZT4+PiBodHRwSGVhZGVyc1RvS2VlcDsKKyAgICBkZWNvZGVyID4+
IGh0dHBIZWFkZXJzVG9LZWVwOworICAgIGlmICghaHR0cEhlYWRlcnNUb0tlZXApCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmVzdWx0Lmh0dHBIZWFkZXJzVG9LZWVwID0gV1RG
TW92ZSgqaHR0cEhlYWRlcnNUb0tlZXApOworI2VuZGlmCisKICNpZiBFTkFCTEUoQ09OVEVOVF9F
WFRFTlNJT05TKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1haW5Eb2N1bWVudFVS
TCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgK
aW5kZXggMTIwMzQ3MDRkYTkyN2I1YTJmYzFiNWNlZmU5OWJiZjgyYmZkZjU3NC4uOWNkNWI0NTVj
NzI1NTczNDlhMDAzOWQ4ZmQxYzI3NDVhNGI1NzMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMu
aApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNl
SGVhZGVycy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hPcHRpb25zLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9IVFRQSGVhZGVyTmFtZXMuaD4KICNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogCiBu
YW1lc3BhY2UgSVBDIHsKQEAgLTYwLDYgKzYxLDEyIEBAIHB1YmxpYzoKICAgICBWZWN0b3I8UmVm
UHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4gZnJhbWVBbmNlc3Rvck9yaWdpbnM7CiAgICAg
Ym9vbCBpc0hUVFBTVXBncmFkZUVuYWJsZWQgeyBmYWxzZSB9OwogCisjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQorICAgIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJzTW9kZSBzZXJ2aWNlV29ya2Vy
c01vZGUgeyBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vyc01vZGU6Ok5vbmUgfTsKKyAgICBPcHRpb25h
bDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4gc2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI7CisgICAgSGFzaFNldDxXZWJDb3JlOjpIVFRQSGVh
ZGVyTmFtZSwgV1RGOjpJbnRIYXNoPFdlYkNvcmU6OkhUVFBIZWFkZXJOYW1lPiwgV1RGOjpTdHJv
bmdFbnVtSGFzaFRyYWl0czxXZWJDb3JlOjpIVFRQSGVhZGVyTmFtZT4+IGh0dHBIZWFkZXJzVG9L
ZWVwOworI2VuZGlmCisKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIFVSTCBt
YWluRG9jdW1lbnRVUkw7CiAgICAgT3B0aW9uYWw8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRp
Zmllcj4gdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBm
YjM3MmQ3OWRlY2I5NmNlYTUxYjdjZTQzMTNmZjQ2ODExYzE5ZGJkLi45MmFmNzFlMTQ3MDNjNTg0
NTdhOWMzZDQ0ODk5ZDVlYThlMTZhZDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0zNzksNiArMzc5LDEx
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjphYm9ydCgpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgaWYgKGF1dG8gdGFzayA9
IFdURk1vdmUobV9zZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKSkKKyAgICAgICAgdGFzay0+Y2FuY2Vs
RnJvbUNsaWVudCgpOworI2VuZGlmCisKICAgICBpZiAobV9uZXR3b3JrTG9hZCkgewogICAgICAg
ICBpZiAoY2FuVXNlQ2FjaGUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVlc3QoKSkpIHsKICAg
ICAgICAgICAgIC8vIFdlIG1pZ2h0IGFscmVhZHkgaGF2ZSB1c2VkIGRhdGEgZnJvbSB0aGlzIGlu
Y29tcGxldGUgbG9hZC4gRW5zdXJlIG9sZGVyIHZlcnNpb25zIGRvbid0IHJlbWFpbiBpbiB0aGUg
Y2FjaGUgYWZ0ZXIgY2FuY2VsLgpAQCAtNjEyLDggKzYxNywxNiBAQCB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6ZGlkRmFpbExvYWRpbmcoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAg
ICAgaWYgKGlzU3luY2hyb25vdXMoKSkgewogICAgICAgICBtX3N5bmNocm9ub3VzTG9hZERhdGEt
PmVycm9yID0gZXJyb3I7CiAgICAgICAgIHNlbmRSZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KCpt
X3N5bmNocm9ub3VzTG9hZERhdGEsIG51bGxwdHIpOwotICAgIH0gZWxzZSBpZiAoYXV0byogY29u
bmVjdGlvbiA9IG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkpCisgICAgfSBlbHNlIGlmIChhdXRv
KiBjb25uZWN0aW9uID0gbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSkgeworI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKKyAgICAgICAgaWYgKG1fc2VydmljZVdvcmtlckZldGNoVGFzaykKKyAg
ICAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpE
aWRGYWlsU2VydmljZVdvcmtlckxvYWQoZXJyb3IpLCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25J
RCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZhaWxSZXNvdXJjZUxvYWQoZXJyb3IpLCBtZXNzYWdl
U2VuZGVyRGVzdGluYXRpb25JRCgpKTsKKyNlbHNlCiAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGYWlsUmVzb3VyY2VMb2FkKGVycm9yKSwg
bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSk7CisjZW5kaWYKKyAgICB9CiAKICAgICBjbGVh
bnVwKExvYWRSZXN1bHQ6OkZhaWx1cmUpOwogfQpAQCAtNzQ3LDYgKzc2MCwxMCBAQCB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6cmVzdGFydE5ldHdvcmtMb2FkKFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmIG5ld1JlcQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVX
aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgYm9vbCBpc0FsbG93
ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscykKIHsKKyAgICBpZiAobV9zZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrKSB7CisgICAgICAgIG1fc2VydmljZVdvcmtlckZldGNoVGFzay0+Y29udGludWVGZXRj
aFRhc2tXaXRoKFdURk1vdmUobmV3UmVxdWVzdCkpOworICAgICAgICByZXR1cm47CisgICAgfQog
ICAgIGlmIChtX3Nob3VsZFJlc3RhcnRMb2FkKSB7CiAgICAgICAgIG1fc2hvdWxkUmVzdGFydExv
YWQgPSBmYWxzZTsKIApAQCAtNzkyLDYgKzgwOSwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVz
dAogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2UoKQogeworICAgIGlmIChtX3NlcnZpY2VXb3JrZXJGZXRjaFRhc2spIHsKKyAgICAgICAgbV9z
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLT5jb250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAobV9jYWNoZUVudHJ5V2FpdGluZ0Zv
ckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKSB7CiAgICAgICAgIHNlbmRSZXN1bHRGb3JDYWNo
ZUVudHJ5KFdURk1vdmUobV9jYWNoZUVudHJ5V2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlKSk7CiAgICAgICAgIGNsZWFudXAoTG9hZFJlc3VsdDo6U3VjY2Vzcyk7CkBAIC0xMTk2
LDYgKzEyMTgsMzAgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmlzQ3Jvc3NPcmlnaW5Q
cmVmZXRjaCgpIGNvbnN0CiAgICAgcmV0dXJuIHJlcXVlc3QuaHR0cEhlYWRlckZpZWxkKEhUVFBI
ZWFkZXJOYW1lOjpQdXJwb3NlKSA9PSAicHJlZmV0Y2giICYmICFtX3BhcmFtZXRlcnMuc291cmNl
T3JpZ2luLT5jYW5SZXF1ZXN0KHJlcXVlc3QudXJsKCkpOwogfQogCisjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0V2l0aFNlcnZpY2VX
b3JrZXIoV2ViU1dTZXJ2ZXJDb25uZWN0aW9uKiBzd0Nvbm5lY3Rpb24pCit7CisgICAgQVNTRVJU
KCFtX3NlcnZpY2VXb3JrZXJGZXRjaFRhc2spOworICAgIG1fc2VydmljZVdvcmtlckZldGNoVGFz
ayA9IHN3Q29ubmVjdGlvbiA/IHN3Q29ubmVjdGlvbi0+Y3JlYXRlRmV0Y2hUYXNrKCp0aGlzKSA6
IG51bGxwdHI7CisgICAgaWYgKG1fc2VydmljZVdvcmtlckZldGNoVGFzaykKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKG1fcGFyYW1ldGVycy5zZXJ2aWNlV29ya2Vyc01vZGUgPT0gU2Vydmlj
ZVdvcmtlcnNNb2RlOjpPbmx5KSB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNl
TG9hZGVyOjpTZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlIHsgfSwgaWRlbnRpZmllcigpKTsKKyAg
ICAgICAgYWJvcnQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBzdGFydCgpOworfQor
Cit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSgp
Cit7CisgICAgbV9zZXJ2aWNlV29ya2VyRmV0Y2hUYXNrID0gbnVsbHB0cjsKKyAgICBzdGFydCgp
OworfQorCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBSRUxFQVNF
X0xPR19JRl9BTExPV0VECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCBkNjUwNzJiNzJiZDQxMzE0MWEwNmIyODdjNDUy
NjliZTQyYWYwNzc2Li43MWY4MWJiNDYyNWQ4MzQ1YzY0ODA3MjdmOGE2NTRjMzY3Y2Y3ZGVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmgKQEAgLTUxLDYgKzUxLDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKIGNsYXNzIE5ldHdvcmtMb2FkOwogY2xhc3MgTmV0
d29ya0xvYWRDaGVja2VyOworY2xhc3MgU2VydmljZVdvcmtlckZldGNoVGFzazsKK2NsYXNzIFdl
YlNXU2VydmVyQ29ubmVjdGlvbjsKIAogbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiBjbGFzcyBF
bnRyeTsKQEAgLTg4LDcgKzkwLDggQEAgcHVibGljOgogICAgIFJlc291cmNlTG9hZElkZW50aWZp
ZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyOyB9
CiAgICAgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQoKSBjb25zdCB7IHJldHVybiBt
X3BhcmFtZXRlcnMud2ViRnJhbWVJRDsgfQogICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQ7IH0KLSAgICAKKyAg
ICBjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYgcGFyYW1ldGVycygpIGNvbnN0
IHsgcmV0dXJuIG1fcGFyYW1ldGVyczsgfQorCiAgICAgTmV0d29ya0NhY2hlOjpHbG9iYWxGcmFt
ZUlEIGdsb2JhbEZyYW1lSUQoKSB7IHJldHVybiB7IG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJ
RCwgcGFnZUlEKCksIGZyYW1lSUQoKSB9OyB9CiAKICAgICBzdHJ1Y3QgU3luY2hyb25vdXNMb2Fk
RGF0YTsKQEAgLTEyMiw2ICsxMjUsMTEgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0tlcHRBbGl2
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNLZXB0QWxpdmU7IH0KIAorI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKKyAgICB2b2lkIHN0YXJ0V2l0aFNlcnZpY2VXb3JrZXIoV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uKik7CisgICAgdm9pZCBzZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlKCk7CisjZW5kaWYK
KwogcHJpdmF0ZToKICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMmJiwgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRl
bGF5ZWRSZXBseSYmKTsKIApAQCAtMjIwLDYgKzIyOCw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X2lzS2VwdEFsaXZlIHsgZmFsc2UgfTsKIAogICAgIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRy
YWNrZXI+IG1fbmV0d29ya0FjdGl2aXR5VHJhY2tlcjsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCisgICAgc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+IG1fc2Vydmlj
ZVdvcmtlckZldGNoVGFzazsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlckZldGNoVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKaW5kZXggODM0YjU2OWU0MjI3
NWYxMzQ4N2VjNzdkZWExNWUwYmMzZjBhYTI1Zi4uMjU2MDI4N2U5YWYyM2ZlYjVmZjAxNTQ0OTVh
OGY2ZDQxMjZjMzFlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNw
cApAQCAtMzIsMTAgKzMyLDE0IEBACiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1
ZGUgIkZvcm1EYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUg
IlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3MuaCIKKyNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJT
aGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgiCi0jaW5jbHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2Vi
UmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oPgog
CiAjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lG
KG1fc2Vzc2lvbklELmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBTZXJ2aWNlV29ya2VyLCAi
JXAgLSBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykK
ICNkZWZpbmUgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9M
T0dfRVJST1JfSUYobV9zZXNzaW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFNlcnZp
Y2VXb3JrZXIsICIlcCAtIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OiIgZm10LCB0aGlzLCAjI19f
VkFfQVJHU19fKQpAQCAtNDQsODAgKzQ4LDEzOSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2soUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJTV1NlcnZlckNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4
dENvbm5lY3Rpb24sIEZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIsIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTZWNvbmRzIHRpbWVvdXQpCitT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgTmV0d29ya1Jlc291cmNlTG9hZGVyJiBsb2FkZXIsIFNXU2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQogICAgIDogbV9zZXNzaW9uSUQo
c2Vzc2lvbklEKQotICAgICwgbV9jb25uZWN0aW9uKG1ha2VXZWFrUHRyKGNvbm5lY3Rpb24pKQot
ICAgICwgbV9jb250ZXh0Q29ubmVjdGlvbihjb250ZXh0Q29ubmVjdGlvbikKLSAgICAsIG1faWRl
bnRpZmllciB7IGNvbm5lY3Rpb24uaWRlbnRpZmllcigpLCBmZXRjaElkZW50aWZpZXIgfQorICAg
ICwgbV9sb2FkZXIobG9hZGVyKQorICAgICwgbV9mZXRjaElkZW50aWZpZXIoV2ViQ29yZTo6RmV0
Y2hJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQorICAgICwgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllcihzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikKICAgICAsIG1fc2VydmljZVdvcmtlcklk
ZW50aWZpZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIpCi0gICAgLCBtX3RpbWVvdXQodGltZW91
dCkKICAgICAsIG1fdGltZW91dFRpbWVyKCp0aGlzLCAmU2VydmljZVdvcmtlckZldGNoVGFzazo6
dGltZW91dFRpbWVyRmlyZWQpCiB7Ci0gICAgbV90aW1lb3V0VGltZXIuc3RhcnRPbmVTaG90KG1f
dGltZW91dCk7CisgICAgbV90aW1lb3V0VGltZXIuc3RhcnRPbmVTaG90KGxvYWRlci5jb25uZWN0
aW9uVG9XZWJQcm9jZXNzKCkubmV0d29ya1Byb2Nlc3MoKS5zZXJ2aWNlV29ya2VyRmV0Y2hUaW1l
b3V0KCkpOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZWRp
cmVjdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorU2VydmljZVdv
cmtlckZldGNoVGFzazo6flNlcnZpY2VXb3JrZXJGZXRjaFRhc2soKQogewotICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlOiAlcyIsIG1faWRlbnRp
Zmllci5mZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAg
IG1fdGltZW91dFRpbWVyLnN0b3AoKTsKKyAgICBpZiAobV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlv
bikKKyAgICAgICAgbV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbi0+dW5yZWdpc3RlckZldGNoKCp0
aGlzKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgTWVzc2FnZT4gYm9vbCBTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOjpzZW5kVG9TZXJ2aWNlV29ya2VyKE1lc3NhZ2UmJiBtZXNzYWdlKQoreworICAg
IHJldHVybiBtX3NlcnZpY2VXb3JrZXJDb25uZWN0aW9uID8gbV9zZXJ2aWNlV29ya2VyQ29ubmVj
dGlvbi0+aXBjQ29ubmVjdGlvbigpLnNlbmQoc3RkOjpmb3J3YXJkPE1lc3NhZ2U+KG1lc3NhZ2Up
LCAwKSA6IGZhbHNlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBNZXNzYWdlPiBib29sIFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OnNlbmRUb0NsaWVudChNZXNzYWdlJiYgbWVzc2FnZSkKK3sKKyAg
ICByZXR1cm4gbV9sb2FkZXIuY29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNvbm5lY3Rpb24oKS5z
ZW5kKHN0ZDo6Zm9yd2FyZDxNZXNzYWdlPihtZXNzYWdlKSwgbV9sb2FkZXIuaWRlbnRpZmllcigp
KTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpzdGFydChXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24mIHNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKQoreworICAgIG1fc2Vy
dmljZVdvcmtlckNvbm5lY3Rpb24gPSBtYWtlV2Vha1B0cihzZXJ2aWNlV29ya2VyQ29ubmVjdGlv
bik7CisgICAgc2VydmljZVdvcmtlckNvbm5lY3Rpb24ucmVnaXN0ZXJGZXRjaCgqdGhpcyk7CisK
KyAgICBzdGFydEZldGNoKFJlc291cmNlUmVxdWVzdCB7IG1fbG9hZGVyLm9yaWdpbmFsUmVxdWVz
dCgpIH0sIHNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOjpzdGFydEZldGNoKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgc2VydmljZVdvcmtlckNvbm5lY3Rpb24pCit7CisgICAg
bV9jdXJyZW50UmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCk7CisKKyAgICBhdXRvJiBvcHRpb25z
ID0gbV9sb2FkZXIucGFyYW1ldGVycygpLm9wdGlvbnM7CisgICAgYXV0byByZWZlcnJlciA9IG1f
Y3VycmVudFJlcXVlc3QuaHR0cFJlZmVycmVyKCk7CisKKyAgICAvLyBXZSBhcmUgaW50ZXJjZXB0
aW5nIGZldGNoIGNhbGxzIGFmdGVyIGdvaW5nIHRocm91Z2ggdGhlIEhUVFAgbGF5ZXIsIHdoaWNo
IG1heSBhZGQgc29tZSBzcGVjaWZpYyBoZWFkZXJzLgorICAgIGNsZWFuSFRUUFJlcXVlc3RIZWFk
ZXJzRm9yQWNjZXNzQ29udHJvbChtX2N1cnJlbnRSZXF1ZXN0LCBtX2xvYWRlci5wYXJhbWV0ZXJz
KCkuaHR0cEhlYWRlcnNUb0tlZXApOworCisgICAgYm9vbCBpc1NlbnQgPSBzZW5kVG9TZXJ2aWNl
V29ya2VyKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U3RhcnRGZXRj
aCB7IG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIG1fc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIG1fZmV0Y2hJZGVudGlmaWVyLCBtX2N1cnJlbnRSZXF1ZXN0LCBvcHRpb25zLCBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlIHsgbV9jdXJyZW50UmVxdWVzdC5odHRwQm9keSgpIH0sIHJlZmVycmVy
IH0pOworICAgIEFTU0VSVF9VTlVTRUQoaXNTZW50LCBpc1NlbnQpOworfQorCit2b2lkIFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKFJlc291cmNlUmVz
cG9uc2UmJiByZXNwb25zZSkKK3sKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNl
aXZlUmVkaXJlY3RSZXNwb25zZTogJXMiLCBtX2ZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CiAgICAgbV93YXNIYW5kbGVkID0gdHJ1ZTsKLSAgICBpZiAobV9j
b25uZWN0aW9uKQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VX
b3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgeyByZXNwb25zZSB9
LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKKworICAgIHJlc3BvbnNlLnNldFNvdXJj
ZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OlNlcnZpY2VXb3JrZXIpOworICAgIGF1dG8gbmV3
UmVxdWVzdCA9IG1fY3VycmVudFJlcXVlc3QucmVkaXJlY3RlZFJlcXVlc3QocmVzcG9uc2UsIG1f
bG9hZGVyLnBhcmFtZXRlcnMoKS5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGly
ZWN0KTsKKworICAgIHNlbmRUb0NsaWVudChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6Oldp
bGxTZW5kUmVxdWVzdCB7IG5ld1JlcXVlc3QsIHJlc3BvbnNlIH0pOwogfQogCi12b2lkIFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2Fn
ZSkKK3ZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291
cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlTWVzc2FnZSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVz
cG9uc2U6ICVzIiwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJl
c3BvbnNlOiAlcyIsIG1fZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKICAgICBtX3RpbWVvdXRUaW1lci5zdG9wKCk7CiAgICAgbV93YXNIYW5kbGVkID0gdHJ1
ZTsKLSAgICBpZiAobV9jb25uZWN0aW9uKQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVz
cG9uc2UsIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0sIG1faWRlbnRp
Zmllci5mZXRjaElkZW50aWZpZXIpOworICAgIHJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJl
c3BvbnNlOjpTb3VyY2U6OlNlcnZpY2VXb3JrZXIpOworCisgICAgc2VuZFRvQ2xpZW50KE1lc3Nh
Z2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG5l
ZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0pOwogfQogCiB2b2lkIFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIW1fdGlt
ZW91dFRpbWVyLmlzQWN0aXZlKCkpOwotICAgIGlmIChtX2Nvbm5lY3Rpb24pCi0gICAgICAgIG1f
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRS
ZWNlaXZlRGF0YSB7IGRhdGEsIGVuY29kZWREYXRhTGVuZ3RoIH0sIG1faWRlbnRpZmllci5mZXRj
aElkZW50aWZpZXIpOworICAgIHNlbmRUb0NsaWVudChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2Fk
ZXI6OkRpZFJlY2VpdmVEYXRhIHsgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHsgZGF0
YS5kYXRhKCksIGRhdGEuc2l6ZSgpIH0sIGVuY29kZWREYXRhTGVuZ3RoIH0pOwogfQogCiB2b2lk
IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVGb3JtRGF0YShjb25zdCBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlJiBmb3JtRGF0YSkKIHsKICAgICBBU1NFUlQoIW1fdGltZW91dFRpbWVy
LmlzQWN0aXZlKCkpOwotICAgIGlmIChtX2Nvbm5lY3Rpb24pCi0gICAgICAgIG1fY29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRSZWNlaXZlRm9y
bURhdGEgeyBmb3JtRGF0YSB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKKyAgICAv
LyBGSVhNRTogQWxsb3cgV2ViUmVzb3VyY2VMb2FkZXIgdG8gcmVjZWl2ZSBmb3JtIGRhdGEuCiB9
CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkRmluaXNoKCkKIHsKICAgICBBU1NF
UlQoIW1fdGltZW91dFRpbWVyLmlzQWN0aXZlKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoImRpZEZpbmlzaEZldGNoOiBmZXRjaElkZW50aWZpZXI6ICVzIiwgbV9pZGVudGlmaWVyLmZl
dGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgiZGlkRmluaXNoRmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMiLCBt
X2ZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgbV90
aW1lb3V0VGltZXIuc3RvcCgpOwotICAgIGlmIChtX2Nvbm5lY3Rpb24pCi0gICAgICAgIG1fY29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRGaW5p
c2ggeyB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKKyAgICBzZW5kVG9DbGllbnQo
TWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJjZUxvYWQgeyB7IH0g
fSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkRmFpbChjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJk
aWRGYWlsRmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMiLCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVu
dGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBtX3RpbWVvdXRUaW1l
ci5zdG9wKCk7Ci0gICAgaWYgKG1fY29ubmVjdGlvbikKLSAgICAgICAgbV9jb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZEZhaWwgeyBlcnJvciB9
LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9J
Rl9BTExPV0VEKCJkaWRGYWlsRmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMiLCBtX2ZldGNoSWRl
bnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgbV9sb2FkZXIuZGlk
RmFpbExvYWRpbmcoZXJyb3IpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRp
ZE5vdEhhbmRsZSgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkTm90SGFuZGxl
RmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMiLCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVy
LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJkaWROb3RIYW5kbGVGZXRjaDogZmV0Y2hJZGVudGlmaWVyOiAlcyIsIG1fZmV0Y2hJZGVu
dGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBtX3RpbWVvdXRUaW1l
ci5zdG9wKCk7Ci0gICAgaWYgKG1fY29ubmVjdGlvbikKLSAgICAgICAgbV9jb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZE5vdEhhbmRsZSB7IH0s
IG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOworICAgIGlmIChtX2xvYWRlci5wYXJhbWV0
ZXJzKCkuc2VydmljZVdvcmtlcnNNb2RlID09IFNlcnZpY2VXb3JrZXJzTW9kZTo6T25seSkgewor
ICAgICAgICBzZW5kVG9DbGllbnQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpTZXJ2aWNl
V29ya2VyRGlkTm90SGFuZGxlIHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9s
b2FkZXIuc2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSgpOworfQorCit2b2lkIFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OmNhbmNlbEZyb21DbGllbnQoKQoreworICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoImNhbmNlbEZyb21DbGllbnQ6IGZldGNoSWRlbnRpZmllcjogJXMiLCBtX2ZldGNoSWRl
bnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgc2VuZFRvU2Vydmlj
ZVdvcmtlcihNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkNhbmNlbEZl
dGNoIHsgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgbV9zZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgbV9mZXRjaElkZW50aWZpZXIgfSk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlckZldGNo
VGFzazo6Y29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSgpCit7CisgICAgc2VuZFRvU2Vy
dmljZVdvcmtlcihNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkNvbnRp
bnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UgeyBtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
LCBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBtX2ZldGNoSWRlbnRpZmllciB9KTsKK30KKwor
dm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpjb250aW51ZUZldGNoVGFza1dpdGgoUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCkKK3sKKyAgICBpZiAoIW1fc2VydmljZVdvcmtlckNvbm5lY3Rp
b24pIHsKKyAgICAgICAgbV9sb2FkZXIuc2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIHN0YXJ0RmV0Y2goV1RGTW92ZShyZXF1ZXN0KSwgKm1f
c2VydmljZVdvcmtlckNvbm5lY3Rpb24pOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s6OnRpbWVvdXRUaW1lckZpcmVkKCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ0
aW1lb3V0VGltZXJGaXJlZDogZmV0Y2hJZGVudGlmaWVyOiAlcyIsIG1faWRlbnRpZmllci5mZXRj
aElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIGRpZE5vdEhh
bmRsZSgpOwotICAgIG1fY29udGV4dENvbm5lY3Rpb24uZmV0Y2hUYXNrVGltZWRPdXQoKnRoaXMp
OworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInRpbWVvdXRUaW1lckZpcmVkOiBmZXRjaElk
ZW50aWZpZXI6ICVzIiwgbV9mZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOworICAgIGlmIChtX3NlcnZpY2VXb3JrZXJDb25uZWN0aW9uKQorICAgICAgICBtX3Nl
cnZpY2VXb3JrZXJDb25uZWN0aW9uLT5mZXRjaFRhc2tUaW1lZE91dChzZXJ2aWNlV29ya2VySWRl
bnRpZmllcigpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNo
VGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJGZXRjaFRhc2suaAppbmRleCBkOGI5ZDZmMjU2NjM4MzY3NzJmMjliOWY5Yjk5ZTBh
MGUyNjM5NDVjLi5iZGZkNWU2OTM1OThkYzgwM2ZlZjM4NjRmMjY4ZWZiMWQ2NWFmZjFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlckZldGNoVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKQEAgLTI4LDEyICsyOCwxNSBAQAog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hJZGVu
dGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIu
aD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKK2NsYXNzIFJlc291
cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiB9CiAKQEAgLTQ2LDgyICs0OSw1
OSBAQCBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNs
YXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKK2NsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjsK
IGNsYXNzIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjsKIAotY2xhc3MgU2VydmljZVdv
cmtlckZldGNoVGFzayB7CitjbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2FkZXI7CitjbGFzcyBXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CisKK2NsYXNzIFNlcnZpY2VXb3JrZXJGZXRjaFRh
c2sgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U2VydmljZVdvcmtlckZldGNoVGFzaz4gewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFNlcnZpY2VXb3JrZXJGZXRj
aFRhc2soUEFMOjpTZXNzaW9uSUQsIFdlYlNXU2VydmVyQ29ubmVjdGlvbiYsIFdlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbiYsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNlY29uZHMgdGltZW91dCk7CisgICAgU2VydmljZVdv
cmtlckZldGNoVGFzayhQQUw6OlNlc3Npb25JRCwgTmV0d29ya1Jlc291cmNlTG9hZGVyJiwgV2Vi
Q29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIpOworICAgIH5TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKCk7CiAKLSAgICB2b2lk
IGRpZE5vdEhhbmRsZSgpOworICAgIHZvaWQgc3RhcnQoV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uJik7CisgICAgdm9pZCBjYW5jZWxGcm9tQ2xpZW50KCk7CiAgICAgdm9pZCBmYWlsKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKSB7IGRpZEZhaWwoZXJyb3IpOyB9CiAg
ICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KTsKIAotICAgIHN0cnVjdCBJZGVudGlmaWVyIHsKLSAgICAgICAgV2ViQ29yZTo6U1dTZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcjsKLSAgICAgICAgV2ViQ29y
ZTo6RmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllcjsKLSAgICAgICAgCi0gICAgICAgIHVu
c2lnbmVkIGhhc2goKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBoYXNo
ZXNbMl07Ci0gICAgICAgICAgICBoYXNoZXNbMF0gPSBXVEY6OmludEhhc2goY29ubmVjdGlvbklk
ZW50aWZpZXIudG9VSW50NjQoKSk7Ci0gICAgICAgICAgICBoYXNoZXNbMV0gPSBXVEY6OmludEhh
c2goZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOwotICAgICAgICAgICAgcmV0dXJuIFN0cmlu
Z0hhc2hlcjo6aGFzaE1lbW9yeShoYXNoZXMsIHNpemVvZihoYXNoZXMpKTsKLSAgICAgICAgfQot
ICAgIH07Ci0KLSAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1
cm4gbV9pZGVudGlmaWVyOyB9Ci0gICAgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXImIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNl
V29ya2VySWRlbnRpZmllcjsgfQorICAgIHZvaWQgY29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNw
b25zZSgpOworICAgIHZvaWQgY29udGludWVGZXRjaFRhc2tXaXRoKFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmKTsKKworICAgIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZp
ZXIoKSBjb25zdCB7IHJldHVybiBtX2ZldGNoSWRlbnRpZmllcjsgfQorICAgIFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZXJ2aWNlV29ya2VySWRlbnRpZmllcjsgfQorCisgICAgdm9pZCBkaWROb3RIYW5k
bGUoKTsKKwogICAgIGJvb2wgd2FzSGFuZGxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzSGFuZGxl
ZDsgfQogCiBwcml2YXRlOgotICAgIHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBib29sIG5lZWRzQ29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZWRpcmVjdFJl
c3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CisgICAgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBib29sIG5lZWRzQ29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZv
aWQgZGlkUmVjZWl2ZUZvcm1EYXRhKGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmKTsKICAg
ICB2b2lkIGRpZEZpbmlzaCgpOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJik7CisKKyAgICB2b2lkIHN0YXJ0RmV0Y2goV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpOworCiAgICAgdm9pZCB0aW1l
b3V0VGltZXJGaXJlZCgpOwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWVzc2FnZT4gYm9vbCBz
ZW5kVG9TZXJ2aWNlV29ya2VyKE1lc3NhZ2UmJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWVz
c2FnZT4gYm9vbCBzZW5kVG9DbGllbnQoTWVzc2FnZSYmKTsKKwogICAgIFBBTDo6U2Vzc2lvbklE
IG1fc2Vzc2lvbklEOwotICAgIFdlYWtQdHI8V2ViU1dTZXJ2ZXJDb25uZWN0aW9uPiBtX2Nvbm5l
Y3Rpb247Ci0gICAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBtX2NvbnRleHRDb25u
ZWN0aW9uOwotICAgIElkZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAgIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlciYgbV9sb2FkZXI7CisgICAgV2Vha1B0cjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24+IG1fc2VydmljZVdvcmtlckNvbm5lY3Rpb247CisgICAgV2ViQ29yZTo6RmV0Y2hJZGVu
dGlmaWVyIG1fZmV0Y2hJZGVudGlmaWVyOworICAgIFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcjsKICAgICBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyOwotICAgIFNl
Y29uZHMgbV90aW1lb3V0OworICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX2N1cnJlbnRS
ZXF1ZXN0OwogICAgIFdlYkNvcmU6OlRpbWVyIG1fdGltZW91dFRpbWVyOwogICAgIGJvb2wgbV93
YXNIYW5kbGVkIHsgZmFsc2UgfTsKIH07CiAKLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3Qg
U2VydmljZVdvcmtlckZldGNoVGFzazo6SWRlbnRpZmllciYgYSwgY29uc3QgU2VydmljZVdvcmtl
ckZldGNoVGFzazo6SWRlbnRpZmllciYgYikKLXsKLSAgICByZXR1cm4gYS5jb25uZWN0aW9uSWRl
bnRpZmllciA9PSBiLmNvbm5lY3Rpb25JZGVudGlmaWVyICYmICBhLmZldGNoSWRlbnRpZmllciA9
PSBiLmZldGNoSWRlbnRpZmllcjsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLQotbmFt
ZXNwYWNlIFdURiB7Ci0KLXN0cnVjdCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrSWRlbnRpZmllckhh
c2ggewotICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFdlYktpdDo6U2VydmljZVdvcmtl
ckZldGNoVGFzazo6SWRlbnRpZmllciYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9Ci0gICAg
c3RhdGljIGJvb2wgZXF1YWwoY29uc3QgV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpJ
ZGVudGlmaWVyJiBhLCBjb25zdCBXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OklkZW50
aWZpZXImIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVU
b0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0
IEhhc2hUcmFpdHM8V2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpJZGVudGlmaWVyPiA6
IEdlbmVyaWNIYXNoVHJhaXRzPFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6SWRlbnRp
Zmllcj4gewotICAgIHN0YXRpYyBXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OklkZW50
aWZpZXIgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIHsgfTsgfQotICAgIAotICAgIHN0YXRpYyB2b2lk
IGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6Oklk
ZW50aWZpZXImIHNsb3QpIHsgc2xvdC5jb25uZWN0aW9uSWRlbnRpZmllciA9IG1ha2VPYmplY3RJ
ZGVudGlmaWVyPFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXJUeXBlPihzdGQ6
Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkpOyB9Ci0gICAgCi0gICAgc3RhdGljIGJv
b2wgaXNEZWxldGVkVmFsdWUoY29uc3QgV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpJ
ZGVudGlmaWVyJiBzbG90KSB7IHJldHVybiBzbG90LmNvbm5lY3Rpb25JZGVudGlmaWVyLnRvVUlu
dDY0KCkgPT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpOyB9Ci19OwotCi10
ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s6OklkZW50aWZpZXI+IHsKLSAgICB1c2luZyBIYXNoID0gU2VydmljZVdvcmtlckZldGNoVGFz
a0lkZW50aWZpZXJIYXNoOwotfTsKLQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCA3OWUzMjY1
Y2VkMWVhMjRlODc1YmU1MjBiNzkzMmU4NWI2NDAzMTNmLi5kZDllY2I0YzFjMjhkMjI1MjA0MmI1
Mjk3MDk1OTRlOGMxODE0ODFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
LmNwcApAQCAtMzMsMTYgKzMzLDE4IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUg
Ik5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3
b3JrUHJvY2Vzcy5oIgotI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZGVyTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJXZWJTV0NsaWVudENvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUg
IldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJT
V1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRJZGVudGlmaWVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25EYXRhLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9M
ZWdhY3lTY2hlbWVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1NXU2VydmVyUmVnaXN0cmF0aW9uLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgpAQCAtMTI2LDE4ICsxMjgsOCBAQCB2b2lkIFdlYlNX
U2VydmVyQ29ubmVjdGlvbjo6dXBkYXRlV29ya2VyU3RhdGVJbkNsaWVudChTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciB3bwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6
VXBkYXRlV29ya2VyU3RhdGUod29ya2VyLCBzdGF0ZSkpOwogfQogCi12b2lkIFdlYlNXU2VydmVy
Q29ubmVjdGlvbjo6Y2FuY2VsRmV0Y2goU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIEZldGNoSWRlbnRpZmllciBm
ZXRjaElkZW50aWZpZXIpCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y2FuY2VsRmV0Y2go
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIEZldGNoSWRlbnRpZmllcikKIHsK
LSAgICBTV1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY2FuY2VsRmV0
Y2g6ICVzIiwgZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
LSAgICBhdXRvKiB3b3JrZXIgPSBzZXJ2ZXIoKS5hY3RpdmVXb3JrZXJGcm9tUmVnaXN0cmF0aW9u
SUQoc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpOwotICAgIGlmICghd29ya2Vy
IHx8ICF3b3JrZXItPmlzUnVubmluZygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyID0gd29ya2VyLT5pZGVudGlmaWVyKCk7Ci0gICAgc2VydmVy
KCkucnVuU2VydmljZVdvcmtlcklmTmVjZXNzYXJ5KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBb
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgdGhpcywgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIGZldGNoSWRlbnRpZmllcl0oYXV0byogY29udGV4dENvbm5lY3Rpb24pIG11dGFibGUgewot
ICAgICAgICBpZiAod2Vha1RoaXMgJiYgY29udGV4dENvbm5lY3Rpb24pCi0gICAgICAgICAgICBz
dGF0aWNfY2FzdDxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mPigqY29udGV4dENvbm5l
Y3Rpb24pLmNhbmNlbEZldGNoKHRoaXMtPmlkZW50aWZpZXIoKSwgZmV0Y2hJZGVudGlmaWVyLCBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgfSk7CiB9CiAKIHZvaWQgV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpjb250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
LCBGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyKQpAQCAtMTUzLDU5ICsxNDUsODkgQEAg
dm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9u
c2UoU2VydmljZVdvcmtlclJlZ2lzdHIKICAgICB9KTsKIH0KIAotdm9pZCBXZWJTV1NlcnZlckNv
bm5lY3Rpb246OnN0YXJ0RmV0Y2goU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIg
c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIEZldGNoSWRlbnRpZmllciBmZXRj
aElkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZldGNoT3B0aW9ucyYmIG9w
dGlvbnMsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiBmb3JtRGF0YSwgU3RyaW5nJiYgcmVmZXJy
ZXIpCitzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckZldGNoVGFzaz4gV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpjcmVhdGVGZXRjaFRhc2soTmV0d29ya1Jlc291cmNlTG9hZGVyJiBsb2FkZXIp
CiB7Ci0gICAgYXV0byogd29ya2VyID0gc2VydmVyKCkuYWN0aXZlV29ya2VyRnJvbVJlZ2lzdHJh
dGlvbklEKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKKyAgICBpZiAoIWxv
YWRlci5wYXJhbWV0ZXJzKCkuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKGxvYWRlci5wYXJhbWV0ZXJzKCkuc2Vy
dmljZVdvcmtlcnNNb2RlID09IFNlcnZpY2VXb3JrZXJzTW9kZTo6Tm9uZSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBpZiAoaXNQb3RlbnRpYWxOYXZpZ2F0aW9uT3JTdWJyZXNvdXJj
ZVJlcXVlc3QobG9hZGVyLnBhcmFtZXRlcnMoKS5vcHRpb25zLmRlc3RpbmF0aW9uKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpZiAoIXNlcnZlcigpLmNhbkhhbmRsZVNjaGVtZShs
b2FkZXIub3JpZ2luYWxSZXF1ZXN0KCkudXJsKCkucHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRD
b3B5aW5nKCkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8qIHdvcmtlciA9
IHNlcnZlcigpLmFjdGl2ZVdvcmtlckZyb21SZWdpc3RyYXRpb25JRCgqbG9hZGVyLnBhcmFtZXRl
cnMoKS5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CiAgICAgaWYgKCF3b3Jr
ZXIpIHsKLSAgICAgICAgU1dTRVJWRVJDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SX0lGX0FM
TE9XRUQoInN0YXJ0RmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMgLT4gRGlkTm90SGFuZGxlIGJl
Y2F1c2Ugbm8gYWN0aXZlIHdvcmtlciIsIGZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVu
dGlmaWVyKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBTV1NFUlZFUkNPTk5FQ1RJT05fUkVM
RUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgic3RhcnRGZXRjaDogRGlkTm90SGFuZGxlIGJlY2F1
c2Ugbm8gYWN0aXZlIHdvcmtlciAlcyIsIGxvYWRlci5wYXJhbWV0ZXJzKCkuc2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXItPmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIGF1dG8gc2VydmljZVdvcmtlcklk
ZW50aWZpZXIgPSB3b3JrZXItPmlkZW50aWZpZXIoKTsKIAotICAgIGF1dG8gcnVuU2VydmVyV29y
a2VyQW5kU3RhcnRGZXRjaCA9IFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCB0aGlzLCBm
ZXRjaElkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCByZXF1ZXN0ID0gV1RGTW92
ZShyZXF1ZXN0KSwgb3B0aW9ucyA9IFdURk1vdmUob3B0aW9ucyksIGZvcm1EYXRhID0gV1RGTW92
ZShmb3JtRGF0YSksIHJlZmVycmVyID0gV1RGTW92ZShyZWZlcnJlcildKGJvb2wgc3VjY2Vzcykg
bXV0YWJsZSB7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgaWYgKHdvcmtlci0+c2hvdWxk
U2tpcEZldGNoRXZlbnQoKSkgeworICAgICAgICBhdXRvKiByZWdpc3RyYXRpb24gPSBzZXJ2ZXIo
KS5nZXRSZWdpc3RyYXRpb24od29ya2VyLT5yZWdpc3RyYXRpb25LZXkoKSk7CisgICAgICAgIGlm
IChyZWdpc3RyYXRpb24gJiYgcmVnaXN0cmF0aW9uLT5zaG91bGRTb2Z0VXBkYXRlKGxvYWRlci5w
YXJhbWV0ZXJzKCkub3B0aW9ucykpCisgICAgICAgICAgICByZWdpc3RyYXRpb24tPnNvZnRVcGRh
dGUoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgYXV0byB0YXNrID0g
bWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPihzZXNzaW9uSUQoKSwgbG9hZGVyLCBp
ZGVudGlmaWVyKCksIHdvcmtlci0+aWRlbnRpZmllcigpKTsKKyAgICBzdGFydEZldGNoKCp0YXNr
LCAqd29ya2VyKTsKKyAgICByZXR1cm4gdGFzazsKK30KKwordm9pZCBXZWJTV1NlcnZlckNvbm5l
Y3Rpb246OnN0YXJ0RmV0Y2goU2VydmljZVdvcmtlckZldGNoVGFzayYgdGFzaywgU1dTZXJ2ZXJX
b3JrZXImIHdvcmtlcikKK3sKKyAgICBhdXRvIHJ1blNlcnZlcldvcmtlckFuZFN0YXJ0RmV0Y2gg
PSBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgdGhpcywgdGFzayA9IG1ha2VXZWFrUHRy
KHRhc2spXShib29sIHN1Y2Nlc3MpIG11dGFibGUgeworICAgICAgICBpZiAoIXRhc2spCiAgICAg
ICAgICAgICByZXR1cm47CiAKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykgeworICAgICAgICAgICAg
dGFzay0+ZGlkTm90SGFuZGxlKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwog
ICAgICAgICBpZiAoIXN1Y2Nlc3MpIHsKLSAgICAgICAgICAgIFNXU0VSVkVSQ09OTkVDVElPTl9S
RUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJzdGFydEZldGNoOiBmZXRjaElkZW50aWZpZXI6
ICVzIERpZE5vdEhhbmRsZSBiZWNhdXNlIHdvcmtlciBkaWQgbm90IGJlY29tZSBhY3RpdmF0ZWQi
LCBmZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAg
ICAgICAgbV9jb250ZW50Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNs
aWVudEZldGNoOjpEaWROb3RIYW5kbGUgeyB9LCBmZXRjaElkZW50aWZpZXIpOworICAgICAgICAg
ICAgU1dTRVJWRVJDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoInN0YXJ0
RmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMgRGlkTm90SGFuZGxlIGJlY2F1c2Ugd29ya2VyIGRp
ZCBub3QgYmVjb21lIGFjdGl2YXRlZCIsIHRhc2stPmZldGNoSWRlbnRpZmllcigpLmxvZ2dpbmdT
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHRhc2stPmRpZE5vdEhhbmRsZSgp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byogd29ya2Vy
ID0gc2VydmVyKCkud29ya2VyQnlJRChzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CisgICAgICAg
IGF1dG8qIHdvcmtlciA9IHNlcnZlcigpLndvcmtlckJ5SUQodGFzay0+c2VydmljZVdvcmtlcklk
ZW50aWZpZXIoKSk7CiAgICAgICAgIGlmICghd29ya2VyIHx8IHdvcmtlci0+aGFzVGltZWRPdXRB
bnlGZXRjaFRhc2tzKCkpIHsKLSAgICAgICAgICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0
Y2hJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIHRhc2stPmRpZE5vdEhhbmRsZSgpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgc2VydmVyKCkucnVuU2VydmljZVdv
cmtlcklmTmVjZXNzYXJ5KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBbd2Vha1RoaXMgPSBXVEZN
b3ZlKHdlYWtUaGlzKSwgdGhpcywgZmV0Y2hJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMgPSBXVEZNb3ZlKG9wdGlv
bnMpLCBmb3JtRGF0YSA9IFdURk1vdmUoZm9ybURhdGEpLCByZWZlcnJlciA9IFdURk1vdmUocmVm
ZXJyZXIpLCBzaG91bGRTa2lwRmV0Y2hFdmVudCA9IHdvcmtlci0+c2hvdWxkU2tpcEZldGNoRXZl
bnQoKV0oYXV0byogY29udGV4dENvbm5lY3Rpb24pIHsKLSAgICAgICAgICAgIGlmICghd2Vha1Ro
aXMpCisgICAgICAgIGlmICghd29ya2VyLT5jb250ZXh0Q29ubmVjdGlvbigpKQorICAgICAgICAg
ICAgc2VydmVyKCkuY3JlYXRlQ29udGV4dENvbm5lY3Rpb24od29ya2VyLT5yZWdpc3RyYWJsZURv
bWFpbigpKTsKKworICAgICAgICBzZXJ2ZXIoKS5ydW5TZXJ2aWNlV29ya2VySWZOZWNlc3Nhcnko
dGFzay0+c2VydmljZVdvcmtlcklkZW50aWZpZXIoKSwgW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFr
VGhpcyksIHRoaXMsIHRhc2sgPSBXVEZNb3ZlKHRhc2spXShhdXRvKiBjb250ZXh0Q29ubmVjdGlv
bikgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXRhc2spCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKSB7CisgICAgICAg
ICAgICAgICAgdGFzay0+ZGlkTm90SGFuZGxlKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoY29udGV4dENvbm5lY3Rpb24pIHsKLSAg
ICAgICAgICAgICAgICBTV1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
c3RhcnRGZXRjaDogU3RhcnRpbmcgZmV0Y2ggJXMgdmlhIHNlcnZpY2Ugd29ya2VyICVzIiwgZmV0
Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJj4oKmNvbnRleHRD
b25uZWN0aW9uKS5zdGFydEZldGNoKHNlc3Npb25JRCgpLCAqdGhpcywgZmV0Y2hJZGVudGlmaWVy
LCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9ucywgZm9ybURhdGEsIHJl
ZmVycmVyKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgU1dTRVJWRVJD
T05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoInN0YXJ0RmV0Y2g6IGZldGNo
SWRlbnRpZmllcjogJXMgRGlkTm90SGFuZGxlIGJlY2F1c2UgZmFpbGVkIHRvIHJ1biBzZXJ2aWNl
IHdvcmtlciwgb3Igc2VydmljZSB3b3JrZXIgaGFzIGhhZCB0aW1lZCBvdXQgZmV0Y2ggdGFza3Mi
LCBmZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAg
ICAgICAgICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3Jr
ZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyKTsKKyAgICAg
ICAgICAgIGlmICghY29udGV4dENvbm5lY3Rpb24pIHsKKyAgICAgICAgICAgICAgICBTV1NFUlZF
UkNPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgic3RhcnRGZXRjaDogZmV0
Y2hJZGVudGlmaWVyOiAlcyBEaWROb3RIYW5kbGUgYmVjYXVzZSBmYWlsZWQgdG8gcnVuIHNlcnZp
Y2Ugd29ya2VyIiwgdGFzay0+ZmV0Y2hJZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOworICAgICAgICAgICAgICAgIHRhc2stPmRpZE5vdEhhbmRsZSgpOworICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFNXU0VSVkVSQ09O
TkVDVElPTl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydEZldGNoOiBTdGFydGluZyBmZXRj
aCAlcyB2aWEgc2VydmljZSB3b3JrZXIgJXMiLCB0YXNrLT5mZXRjaElkZW50aWZpZXIoKS5sb2dn
aW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgdGFzay0+c2VydmljZVdvcmtlcklkZW50aWZpZXIo
KS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mPigqY29udGV4dENvbm5lY3Rpb24pLnN0
YXJ0RmV0Y2goKnRhc2spOwogICAgICAgICB9KTsKICAgICB9OwotCi0gICAgaWYgKHdvcmtlci0+
c2hvdWxkU2tpcEZldGNoRXZlbnQoKSkgewotICAgICAgICBtX2NvbnRlbnRDb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZE5vdEhhbmRsZSB7IH0s
IGZldGNoSWRlbnRpZmllcik7Ci0gICAgICAgIGF1dG8qIHJlZ2lzdHJhdGlvbiA9IHNlcnZlcigp
LmdldFJlZ2lzdHJhdGlvbih3b3JrZXItPnJlZ2lzdHJhdGlvbktleSgpKTsKLSAgICAgICAgaWYg
KHJlZ2lzdHJhdGlvbiAmJiByZWdpc3RyYXRpb24tPnNob3VsZFNvZnRVcGRhdGUob3B0aW9ucykp
Ci0gICAgICAgICAgICByZWdpc3RyYXRpb24tPnNvZnRVcGRhdGUoKTsKKyAgICAKKyAgICBpZiAo
d29ya2VyLnN0YXRlKCkgPT0gU2VydmljZVdvcmtlclN0YXRlOjpBY3RpdmF0aW5nKSB7CisgICAg
ICAgIHdvcmtlci53aGVuQWN0aXZhdGVkKFdURk1vdmUocnVuU2VydmVyV29ya2VyQW5kU3RhcnRG
ZXRjaCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKHdvcmtlci0+c3RhdGUo
KSA9PSBTZXJ2aWNlV29ya2VyU3RhdGU6OkFjdGl2YXRpbmcpIHsKLSAgICAgICAgd29ya2VyLT53
aGVuQWN0aXZhdGVkKFdURk1vdmUocnVuU2VydmVyV29ya2VyQW5kU3RhcnRGZXRjaCkpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIEFTU0VSVCh3b3JrZXItPnN0YXRlKCkgPT0gU2Vydmlj
ZVdvcmtlclN0YXRlOjpBY3RpdmF0ZWQpOworICAgIEFTU0VSVCh3b3JrZXIuc3RhdGUoKSA9PSBT
ZXJ2aWNlV29ya2VyU3RhdGU6OkFjdGl2YXRlZCk7CiAgICAgcnVuU2VydmVyV29ya2VyQW5kU3Rh
cnRGZXRjaCh0cnVlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCmlu
ZGV4IDdiZDJhMzNjYjU4YTMwNzcwZTM5OGJkMDQ5ZTUzZTIyNDIzYTNkMjYuLjk2Nzk2OGMyNmJh
MzNlNDU2MTY0OTY3YTA3OTFiMDI5ZWY0ODk3NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmgKQEAgLTUyLDYgKzUyLDggQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnRE
YXRhOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIE5ldHdvcmtQcm9jZXNzOworY2xhc3Mg
TmV0d29ya1Jlc291cmNlTG9hZGVyOworY2xhc3MgU2VydmljZVdvcmtlckZldGNoVGFzazsKIAog
Y2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uIDogcHVibGljIFdlYkNvcmU6OlNXU2VydmVyOjpD
b25uZWN0aW9uLCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdl
UmVjZWl2ZXIgewogcHVibGljOgpAQCAtNjYsNiArNjgsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAg
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3Q7CiAKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
U2VydmljZVdvcmtlckZldGNoVGFzaz4gY3JlYXRlRmV0Y2hUYXNrKE5ldHdvcmtSZXNvdXJjZUxv
YWRlciYpOworCiBwcml2YXRlOgogICAgIC8vIEltcGxlbWVudCBTV1NlcnZlcjo6Q29ubmVjdGlv
biAoTWVzc2FnZXMgdG8gdGhlIGNsaWVudCBXZWJQcm9jZXNzKQogICAgIHZvaWQgcmVqZWN0Sm9i
SW5DbGllbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYklkZW50aWZpZXIsIGNvbnN0IFdlYkNv
cmU6OkV4Y2VwdGlvbkRhdGEmKSBmaW5hbDsKQEAgLTgyLDcgKzg2LDkgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgc2NoZWR1bGVKb2JJblNlcnZlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0
YSYmKTsKIAotICAgIHZvaWQgc3RhcnRGZXRjaChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiYsIElQQzo6Rm9ybURhdGFSZWZl
cmVuY2UmJiwgU3RyaW5nJiYgcmVmZXJyZXIpOworICAgIGJvb2wgaGFuZGxlRmV0Y2goTmV0d29y
a1Jlc291cmNlTG9hZGVyJik7CisKKyAgICB2b2lkIHN0YXJ0RmV0Y2goU2VydmljZVdvcmtlckZl
dGNoVGFzayYsIFdlYkNvcmU6OlNXU2VydmVyV29ya2VyJik7CiAgICAgdm9pZCBjYW5jZWxGZXRj
aChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6
RmV0Y2hJZGVudGlmaWVyKTsKICAgICB2b2lkIGNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9u
c2UoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6
OkZldGNoSWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IGFiMjQ2OGU4Y2UzY2I1YzZkZGZjODI4Y2U3NWJmZDhj
MWY2MjdlZDcuLjNkYTY0ZDk4NzRlYzFkN2Y3ZWIyOWQ0YzdmZGU1NjdhMmVjNTQxYTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAt
MjksMTAgKzI5LDYgQEAgbWVzc2FnZXMgLT4gV2ViU1dTZXJ2ZXJDb25uZWN0aW9uIHsKICAgICBB
ZGRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIoV2ViQ29yZTo6U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBSZW1vdmVTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bklkZW50aWZpZXIgaWRlbnRpZmllcikKIAotICAgIFN0YXJ0RmV0Y2goV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBzdHJ1Y3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25z
IG9wdGlvbnMsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVzdEJvZHksIFN0cmluZyByZWZl
cnJlcikKLSAgICBDYW5jZWxGZXRjaChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6
RmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllcikKLSAgICBDb250aW51ZURpZFJlY2VpdmVG
ZXRjaFJlc3BvbnNlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50
aWZpZXIgZmV0Y2hJZGVudGlmaWVyKQotCiAgICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIo
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRpb24sIHN0cnVjdCBXZWJD
b3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBtZXNzYWdlLCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyT3JDbGllbnRJZGVudGlmaWVyIHNvdXJjZSkKIAogICAgIERpZFJlc29sdmVSZWdpc3RyYXRp
b25Qcm9taXNlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkga2V5KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRl
eCA4NWQ5ZTk1NWFhNDJlYjkyNmIwODNkMjA0MTVkMzQ3YjMyNTVkNjUyLi5mYWQ2ZWU5ZWViN2Q3
YmM5NzAyMjU5YzYxODBlN2MyYjJmMjRkMTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMTUyLDM5ICsxNTIsMTQgQEAgdm9p
ZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnRlcm1pbmF0ZSgpCiAgICAgc2VuZChN
ZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlRlcm1pbmF0ZVByb2Nlc3Mo
KSk7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzdGFydEZldGNo
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBjb250ZW50
Q29ubmVjdGlvbiwgRmV0Y2hJZGVudGlmaWVyIGNvbnRlbnRGZXRjaElkZW50aWZpZXIsIFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSVBD
OjpGb3JtRGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKK3ZvaWQg
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzdGFydEZldGNoKFNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2smIHRhc2spCiB7Ci0gICAgYXV0byBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciA9
IGNvbnRlbnRDb25uZWN0aW9uLmlkZW50aWZpZXIoKTsKLSAgICBhdXRvIGZldGNoSWRlbnRpZmll
ciA9IEZldGNoSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKLQotICAgIGF1dG8gcmVzdWx0ID0gbV9v
bmdvaW5nRmV0Y2hlcy5hZGQoZmV0Y2hJZGVudGlmaWVyLCBtYWtlVW5pcXVlPFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s+KHNlc3Npb25JRCwgY29udGVudENvbm5lY3Rpb24sICp0aGlzLCBjb250ZW50
RmV0Y2hJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgbV9uZXR3b3JrUHJvY2Vz
cy0+c2VydmljZVdvcmtlckZldGNoVGltZW91dCgpKSk7Ci0KLSAgICBBU1NFUlQoIW1fb25nb2lu
Z0ZldGNoSWRlbnRpZmllcnMuY29udGFpbnMoeyBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwg
Y29udGVudEZldGNoSWRlbnRpZmllciB9KSk7Ci0gICAgbV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVy
cy5hZGQoeyBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29udGVudEZldGNoSWRlbnRpZmll
ciB9LCBmZXRjaElkZW50aWZpZXIpOwotCi0gICAgaWYgKCFzZW5kKE1lc3NhZ2VzOjpXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U3RhcnRGZXRjaCB7IHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyLCByZXF1ZXN0
LCBvcHRpb25zLCBkYXRhLCByZWZlcnJlciB9KSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZS0+ZGlkTm90SGFuZGxlKCk7CisgICAgdGFzay5zdGFydCgqdGhpcyk7CiB9CiAKLXZvaWQg
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjYW5jZWxGZXRjaChXZWJDb3JlOjpTV1Nl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBGZXRj
aElkZW50aWZpZXIgY29udGVudEZldGNoSWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZp
ZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIpCit2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6Y29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZShXZWJDb3JlOjpTV1NlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCBGZXRjaElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKQogewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX29uZ29pbmdGZXRjaElkZW50aWZpZXJz
LmZpbmQoeyBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29udGVudEZldGNoSWRlbnRpZmll
ciB9KTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVycy5lbmQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb246OkNhbmNlbEZldGNoIHsgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIs
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBpdGVyYXRvci0+dmFsdWUgfSk7Ci0KLSAgICBtX29u
Z29pbmdGZXRjaGVzLnJlbW92ZShpdGVyYXRvci0+dmFsdWUpOwotICAgIG1fb25nb2luZ0ZldGNo
SWRlbnRpZmllcnMucmVtb3ZlKGl0ZXJhdG9yKTsKLX0KLQotdm9pZCBXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246OmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoV2ViQ29yZTo6
U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwg
RmV0Y2hJZGVudGlmaWVyIGNvbnRlbnRGZXRjaElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQotewotICAgIGF1dG8gaXRlcmF0b3IgPSBt
X29uZ29pbmdGZXRjaElkZW50aWZpZXJzLmZpbmQoeyBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciwgY29udGVudEZldGNoSWRlbnRpZmllciB9KTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vbmdv
aW5nRmV0Y2hJZGVudGlmaWVycy5lbmQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIHNl
bmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpDb250aW51ZURpZFJl
Y2VpdmVGZXRjaFJlc3BvbnNlIHsgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBpdGVyYXRvci0+dmFsdWUgfSk7CisgICAgLy8gRklYTUU6IFRvIGJl
IGRvbmUgdGhyb3VnaCBOZXR3b3JrUmVzb3VyY2VMb2FkZXIKIH0KIAogdm9pZCBXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb246OmRpZFJlY2VpdmVGZXRjaFRhc2tNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQpAQCAtMTkyLDUxICsx
NjcsNDEgQEAgdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmRpZFJlY2VpdmVG
ZXRjaFRhc2tNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYKICAgICBhdXRvIGl0ZXJhdG9yID0gbV9v
bmdvaW5nRmV0Y2hlcy5maW5kKG1ha2VPYmplY3RJZGVudGlmaWVyPEZldGNoSWRlbnRpZmllclR5
cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSk7CiAgICAgaWYgKGl0ZXJhdG9yID09IG1fb25n
b2luZ0ZldGNoZXMuZW5kKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBib29sIHNob3Vs
ZFJlbW92ZSA9IGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6U2VydmljZVdvcmtl
ckZldGNoVGFzazo6RGlkRmFpbDo6bmFtZSgpCi0gICAgICAgIHx8IGRlY29kZXIubWVzc2FnZU5h
bWUoKSA9PSBNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkTm90SGFuZGxlOjpu
YW1lKCkKLSAgICAgICAgfHwgZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRGaW5pc2g6Om5hbWUoKQotICAgICAgICB8fCBkZWNvZGVy
Lm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJl
Y2VpdmVSZWRpcmVjdFJlc3BvbnNlOjpuYW1lKCk7CiAKICAgICBpdGVyYXRvci0+dmFsdWUtPmRp
ZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwotCi0gICAgaWYgKHNob3VsZFJl
bW92ZSkgewotICAgICAgICBBU1NFUlQobV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVycy5jb250YWlu
cyhpdGVyYXRvci0+dmFsdWUtPmlkZW50aWZpZXIoKSkpOwotICAgICAgICBtX29uZ29pbmdGZXRj
aElkZW50aWZpZXJzLnJlbW92ZShpdGVyYXRvci0+dmFsdWUtPmlkZW50aWZpZXIoKSk7Ci0gICAg
ICAgIG1fb25nb2luZ0ZldGNoZXMucmVtb3ZlKGl0ZXJhdG9yKTsKLSAgICB9CiB9CiAKLXZvaWQg
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmZXRjaFRhc2tUaW1lZE91dChTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrJiB0YXNrKQordm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OnJlZ2lzdGVyRmV0Y2goU2VydmljZVdvcmtlckZldGNoVGFzayYgdGFzaykKIHsKLSAgICBB
U1NFUlQobV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVycy5jb250YWlucyh0YXNrLmlkZW50aWZpZXIo
KSkpOwotICAgIGF1dG8gdGFrZW5JZGVudGlmaWVyID0gbV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVy
cy50YWtlKHRhc2suaWRlbnRpZmllcigpKTsKKyAgICBBU1NFUlQoIW1fb25nb2luZ0ZldGNoZXMu
Y29udGFpbnModGFzay5mZXRjaElkZW50aWZpZXIoKSkpOworICAgIG1fb25nb2luZ0ZldGNoZXMu
YWRkKHRhc2suZmV0Y2hJZGVudGlmaWVyKCksIG1ha2VXZWFrUHRyKHRhc2spKTsKK30KIAotICAg
IEFTU0VSVChtX29uZ29pbmdGZXRjaGVzLmNvbnRhaW5zKHRha2VuSWRlbnRpZmllcikpOwotICAg
IGF1dG8gdGFrZW5UYXNrID0gbV9vbmdvaW5nRmV0Y2hlcy50YWtlKHRha2VuSWRlbnRpZmllcik7
Ci0gICAgQVNTRVJUKHRha2VuVGFzayk7Ci0gICAgQVNTRVJUKHRha2VuVGFzay5nZXQoKSA9PSAm
dGFzayk7Cit2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6dW5yZWdpc3RlckZl
dGNoKFNlcnZpY2VXb3JrZXJGZXRjaFRhc2smIHRhc2spCit7CisgICAgQVNTRVJUKG1fb25nb2lu
Z0ZldGNoZXMuY29udGFpbnModGFzay5mZXRjaElkZW50aWZpZXIoKSkpOworICAgIG1fb25nb2lu
Z0ZldGNoZXMucmVtb3ZlKHRhc2suZmV0Y2hJZGVudGlmaWVyKCkpOworfQogCi0gICAgLy8gR2F0
aGVyIGFsbCBvdGhlciBmZXRjaGVzIGluIHRoaXMgc2VydmljZSB3b3JrZXIKLSAgICBWZWN0b3I8
U2VydmljZVdvcmtlckZldGNoVGFzayo+IG90aGVyRmV0Y2hlczsKK3ZvaWQgV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjpmZXRjaFRhc2tUaW1lZE91dChTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKK3sKKyAgICAvLyBHYXRoZXIgYWxsIGZldGNo
ZXMgaW4gdGhpcyBzZXJ2aWNlIHdvcmtlcgorICAgIFZlY3RvcjxTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrKj4gZmV0Y2hlczsKICAgICBmb3IgKGF1dG8mIGZldGNoVGFzayA6IG1fb25nb2luZ0ZldGNo
ZXMudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKGZldGNoVGFzay0+c2VydmljZVdvcmtlcklkZW50
aWZpZXIoKSA9PSB0YXNrLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICBv
dGhlckZldGNoZXMuYXBwZW5kKGZldGNoVGFzay5nZXQoKSk7CisgICAgICAgIGlmIChmZXRjaFRh
c2stPnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCkgPT0gc2VydmljZVdvcmtlcklkZW50aWZpZXIp
CisgICAgICAgICAgICBmZXRjaGVzLmFwcGVuZChmZXRjaFRhc2suZ2V0KCkpOwogICAgIH0KIAog
ICAgIC8vIFNpZ25hbCBsb2FkIGZhaWx1cmUgZm9yIHRoZW0KLSAgICBmb3IgKGF1dG8qIGZldGNo
VGFzayA6IG90aGVyRmV0Y2hlcykgeworICAgIGZvciAoYXV0byogZmV0Y2hUYXNrIDogZmV0Y2hl
cykgewogICAgICAgICBpZiAoZmV0Y2hUYXNrLT53YXNIYW5kbGVkKCkpCiAgICAgICAgICAgICBm
ZXRjaFRhc2stPmZhaWwoeyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB7IH0sICJTZXJ2
aWNlIFdvcmtlciBjb250ZXh0IGNsb3NlZCJfcyB9KTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgZmV0Y2hUYXNrLT5kaWROb3RIYW5kbGUoKTsKLQotICAgICAgICBhdXRvIGlkZW50aWZpZXIg
PSBtX29uZ29pbmdGZXRjaElkZW50aWZpZXJzLnRha2UoZmV0Y2hUYXNrLT5pZGVudGlmaWVyKCkp
OwotICAgICAgICBtX29uZ29pbmdGZXRjaGVzLnJlbW92ZShpZGVudGlmaWVyKTsKICAgICB9CiAK
ICAgICBpZiAobV9zZXJ2ZXIpIHsKLSAgICAgICAgaWYgKGF1dG8qIHdvcmtlciA9IG1fc2VydmVy
LT53b3JrZXJCeUlEKHRhc2suc2VydmljZVdvcmtlcklkZW50aWZpZXIoKSkpIHsKKyAgICAgICAg
aWYgKGF1dG8qIHdvcmtlciA9IG1fc2VydmVyLT53b3JrZXJCeUlEKHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKSkgewogICAgICAgICAgICAgd29ya2VyLT5zZXRIYXNUaW1lZE91dEFueUZldGNoVGFz
a3MoKTsKICAgICAgICAgICAgIGlmICh3b3JrZXItPmlzUnVubmluZygpKQogICAgICAgICAgICAg
ICAgIG1fc2VydmVyLT5zeW5jVGVybWluYXRlV29ya2VyKCp3b3JrZXIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4IGUzMGYzNDFlMTdi
ZTE4NjA4Y2VlYzlhMjAzMmJkYTAyOWE0Y2E1ZjYuLjdlZDMxNDhmNjdlODM4NDJlNDg4MTllYzU3
Mzc2ZDI1MGEzNzY5NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmgKQEAgLTUyLDIwICs1MiwxOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNs
YXNzIE5ldHdvcmtQcm9jZXNzOwogY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOwogCi1jbGFz
cyBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gOiBwdWJsaWMgV2ViQ29yZTo6U1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bj4sIHB1YmxpYyBXZWJDb3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24sIHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6
CiAgICAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgV2ViQ29yZTo6U1dTZXJ2ZXImLCBSZWY8SVBDOjpD
b25uZWN0aW9uPiYmKTsKICAgICB+V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCk7CiAK
LSAgICBJUEM6OkNvbm5lY3Rpb24qIGlwY0Nvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lw
Y0Nvbm5lY3Rpb24ucHRyKCk7IH0KKyAgICBJUEM6OkNvbm5lY3Rpb24mIGlwY0Nvbm5lY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX2lwY0Nvbm5lY3Rpb24uZ2V0KCk7IH0KIAogICAgIC8vIElQQzo6
TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKIAogICAgIHZvaWQgdGVybWluYXRlKCk7CiAKLSAg
ICB2b2lkIHN0YXJ0RmV0Y2goUEFMOjpTZXNzaW9uSUQsIFdlYlNXU2VydmVyQ29ubmVjdGlvbiYs
IFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OkZldGNo
T3B0aW9ucyYsIGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmKTsK
LSAgICB2b2lkIGNhbmNlbEZldGNoKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIpOworICAgIHZvaWQgc3RhcnRGZXRjaChTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrJik7CiAg
ICAgdm9pZCBjb250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKFdlYkNvcmU6OlNXU2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlRmV0Y2hUYXNr
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKQEAgLTczLDcgKzcyLDEw
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRocm90dGxlU3RhdGUoYm9vbCBpc1Rocm90dGxlYWJs
ZSk7CiAgICAgYm9vbCBpc1Rocm90dGxlYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNUaHJvdHRs
ZWFibGU7IH0KIAotICAgIHZvaWQgZmV0Y2hUYXNrVGltZWRPdXQoU2VydmljZVdvcmtlckZldGNo
VGFzayYpOworICAgIHZvaWQgZmV0Y2hUYXNrVGltZWRPdXQoV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIpOworCisgICAgdm9pZCByZWdpc3RlckZldGNoKFNlcnZpY2VXb3JrZXJGZXRj
aFRhc2smKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJGZXRjaChTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Jik7CiAKIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyCkBAIC05OCwxMiArMTAw
LDEzIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNvbm5lY3Rpb25DbG9zZWQoKTsKIAorICAgIHZv
aWQgdGltZW91dFRpbWVyRmlyZWQoKTsKKwogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1faXBj
Q29ubmVjdGlvbjsKICAgICBSZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29ya1Byb2Nlc3M7CiAg
ICAgV2Vha1B0cjxXZWJDb3JlOjpTV1NlcnZlcj4gbV9zZXJ2ZXI7CiAKLSAgICBIYXNoTWFwPFNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s6OklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmll
cj4gbV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVyczsKLSAgICBIYXNoTWFwPFdlYkNvcmU6OkZldGNo
SWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+PiBtX29u
Z29pbmdGZXRjaGVzOworICAgIEhhc2hNYXA8V2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyLCBXZWFr
UHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+PiBtX29uZ29pbmdGZXRjaGVzOwogICAgIGJvb2wg
bV9pc1Rocm90dGxlYWJsZSB7IHRydWUgfTsKIH07IC8vIGNsYXNzIFdlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA5MzZjMGNmNTVhZDAzZmJiYjNhZGM4NDM5
MjAxM2E5MGUzNDhiNWVkLi42MzI3OGIxYmJlZTA4YTcyNTg5YjQzMzdkNTgzYmVmMzczZTIyMmFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKQEAgLTUyNSw3ICs1MjUsNiBAQCBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwIEBuby11bmlmeQogV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcCBAbm8tdW5pZnkKIFdlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAgQG5vLXVuaWZ5CiAKLVdlYlBy
b2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guY3BwCiBXZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXT3Jp
Z2luVGFibGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA2MzhlYmVkNTg1M2ZkN2FkNDc0OTkzNTEzZTZhZmEwMWIwODcwYjdiLi45
YTk1NzNiNjU3MjI0NDg4MmEzOTYxNzZlNmRmNjBiNWQ3ZTdhYjU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExNDMsNyArMTE0Myw2
IEBACiAJCTVDRTkxMjEyMjI5M0MyNzgwMDVCRUM3OCAvKiBBdXhpbGlhcnlQcm9jZXNzTWFpbi5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0U5MTIw
RjIyOTNDMjVGMDA1QkVDNzggLyogQXV4aWxpYXJ5UHJvY2Vzc01haW4uY3BwICovOyB9OwogCQk1
Q0U5MTIxMzIyOTNDMjc5MDA1QkVDNzggLyogQXV4aWxpYXJ5UHJvY2Vzc01haW4uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNFOTEyMEYyMjkzQzI1
RjAwNUJFQzc4IC8qIEF1eGlsaWFyeVByb2Nlc3NNYWluLmNwcCAqLzsgfTsKIAkJNUNFOTEyMTQy
MjkzQzI4MDAwNUJFQzc4IC8qIFdLTWFpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNUNFOTEyMEIyMjkzQzFFMDAwNUJFQzc4IC8qIFdLTWFpbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTYxN0E1MkQ4
MUY0M0E5REEwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjE3
QTUyRDcxRjQzQTlCNjAwRENEQzBBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi87IH07CiAJCTYzMTA4Rjk2MUY5NjcxOUMwMEEwREI4NCAvKiBfV0tBcHBs
aWNhdGlvbk1hbmlmZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2MzEwOEY5NDFGOTY3MTlDMDBBMERCODQgLyogX1dLQXBwbGljYXRpb25NYW5pZmVz
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTYz
MTA4Rjk5MUY5NjcxRjcwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzMTA4Rjk4
MUY5NjcxRjcwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwuaCAqLzsg
fTsKIAkJNjM0ODQyNTExRkIyNkU3MTAwOTQ2RTNDIC8qIEFQSUFwcGxpY2F0aW9uTWFuaWZlc3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzNDg0MjRG
MUZCMjZFNzEwMDk0NkUzQyAvKiBBUElBcHBsaWNhdGlvbk1hbmlmZXN0LmggKi87IH07CkBAIC0z
MTI5LDkgKzMxMjgsNiBAQAogCQk0MTMwNzVBNjFERTg1RUU3MDAzOUVDNjkgLyogTGliV2ViUlRD
U29ja2V0RmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJXZWJS
VENTb2NrZXRGYWN0b3J5Lmg7IHBhdGggPSBOZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRG
YWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzA3NUE3MURFODVFRTcw
MDM5RUM2OSAvKiBMaWJXZWJSVENQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IGxpbmVFbmRpbmcgPSAwOyBuYW1lID0gTGliV2ViUlRDUHJvdmlkZXIuY3BwOyBwYXRo
ID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLmNw
cDsgfTsKIAkJNDEzMDc1QTgxREU4NUVFNzAwMzlFQzY5IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbGluZUVuZGluZyA9IDA7IG5hbWUgPSBMaWJXZWJS
VENQcm92aWRlci5oOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVy
ID0geGNvZGUubGFuZy5vYmpjcHA7IH07Ci0JCTQxMzFGM0NFMUY5NkE0OTUwMDU5OTk1QSAvKiBT
ZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2VydmljZVdvcmtlckNsaWVudEZldGNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTQxMzFGM0NGMUY5NkE5MzYwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gu
bWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2VydmljZVdvcmtlckNsaWVudEZl
dGNoLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTMxRjNEMDFG
OTZCQ0M4MDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzFGM0UwMUY5ODcxMkMwMDU5OTk1QSAv
KiBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTM1RkJDRjFGNEZCN0YyMDA3NEM0N0IgLyog
Q2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxMzVGQkQwMUY0RkI3RjIwMDc0QzQ3QiAvKiBDYWNoZVN0b3JhZ2VFbmdp
bmVDYWNoZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVTdG9yYWdl
RW5naW5lQ2FjaGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNzA4LDcgKzM3
MDQsNiBAQAogCQk1Q0VBQkEyQjIzMzMyNTE0MDA3OTc3OTcgLyogTGVnYWN5R2xvYmFsU2V0dGlu
Z3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGVnYWN5R2xvYmFs
U2V0dGluZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0ZFQ0IwMzFFMUVE
MUM4MDBGODg1MDQgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEQUQ3M0YxMTE2RkY5MEMwMEVFNTM5
NiAvKiBCYXNlVGFyZ2V0LnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9
IEJhc2VUYXJnZXQueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTYxN0E1
MkQ3MUY0M0E5QjYwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU2VydmljZVdv
cmtlckNsaWVudEZldGNoTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2Vz
L1dlYktpdDIvU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291
cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNjMxMDhGOTQxRjk2NzE5QzAwQTBE
Qjg0IC8qIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLQXBwbGlj
YXRpb25NYW5pZmVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2MzEwOEY5NTFG
OTY3MTlDMDBBMERCODQgLyogX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTYzMTA4Rjk4MUY5NjcxRjcwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlm
ZXN0SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLQXBwbGljYXRpb25NYW5pZmVzdEludGVy
bmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02ODM5LDkgKzY4MzQsNiBAQAog
CQk1MTE4RTk5ODFGMjk1MjU5MDAzRUY5RjUgLyogU3RvcmFnZSAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJNDEzMUYzRDAxRjk2QkNDODAwNTk5OTVBIC8q
IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5jcHAgKi8sCi0JCQkJNDEzMUYzQ0UxRjk2QTQ5NTAw
NTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5oICovLAotCQkJCTQxMzFGM0NGMUY5
NkE5MzYwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gubWVzc2FnZXMuaW4gKi8s
CiAJCQkJNDEzMUYzRTAxRjk4NzEyQzAwNTk5OTVBIC8qIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2tDbGllbnQuY3BwICovLAogCQkJCTQxOUFDRjlCMUY5ODFEMjYwMDlGMUE4MyAvKiBXZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmggKi8sCiAJCQkJNTFCRUI2MjkxRjNBNUFDRDAwNTAy
OUI5IC8qIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAgKi8sCkBAIC04ODc0LDcgKzg4NjYs
NiBAQAogCQkJCTFCQkJFNDlFMTlCNjZDNTMwMDZCN0Q4MSAvKiBSZW1vdGVXZWJJbnNwZWN0b3JV
SU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJRTE4RTY5MTMxNjlCNjY3QjAwOUI2NjcwIC8q
IFNlY0l0ZW1TaGltUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCUUxOEU2OTE0MTY5
QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5TWVzc2FnZXMuaCAqLywKLQkJCQk2MTdB
NTJENzFGNDNBOUI2MDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLywKIAkJCQkyREU2OTQzQjE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWdu
aWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMkRFNjk0M0Mx
OEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5o
ICovLAogCQkJCTFBMzM0REVCMTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3Nh
Z2VSZWNlaXZlci5jcHAgKi8sCkBAIC0xMTMxMyw3ICsxMTMwNCw2IEBACiAJCQkJQTU1QkE4MjYx
QkEyNUNGRDAwN0NEMzNEIC8qIFJlbW90ZVdlYkluc3BlY3RvclByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFCQkJFNEEwMTlCNjZDNTMwMDZCN0Q4MSAvKiBSZW1v
dGVXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlF
MThFNjkxNzE2OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk2MTdBNTJEODFGNDNBOURBMDBEQ0RDMEEgLyogU2Vy
dmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTQxREU3QzZDMjIyNzhGMUUwMDUzMkI2NSAvKiBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzg3MjEyQjZBQjEwMEY0OTNGRCAvKiBTaGFyZWFi
bGVCaXRtYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRFNjk0M0QxOEJEMkE2ODAwNUMxNUU1
IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCBmMGI0ZmRmYTZhMzExNzA0
OTk2ZDc4NWExYzk2Mjc3MzYwMTE5ODAxLi4zMDgzMzU3NzMwMWQwZjI2NDUzMmI0YTMyYmE4NmVm
NmVmNWI5YjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTI5LDcgKzI5LDYgQEAK
ICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDTmV0d29yay5o
IgogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKLSNp
bmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlN0
b3JhZ2VBcmVhTWFwLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIldlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgiCkBAIC0xNDEsMTAgKzE0MCw2IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIElQCiAgICAgICAgICAgICBtX3N3Q29ubmVjdGlvbi0+ZGlkUmVj
ZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpTZXJ2
aWNlV29ya2VyQ2xpZW50RmV0Y2g6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewotICAgICAgICBX
ZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVTZXJ2aWNlV29y
a2VyQ2xpZW50RmV0Y2hNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNz
YWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSkgewogICAgICAgICBBU1NFUlQoU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVj
dGlvbigpKTsKICAgICAgICAgaWYgKGF1dG8qIGNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiA9IFNX
Q29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRl
eCBhZmEzYzcyNDE0OGRhMTI3NWEyNzcwZGZjN2U4M2Q3Mjk2ZGE1MDQ0Li5hOWZjMDRkNTM4ZmVi
OWI3ZjRkOTRlNjQ4MjEzM2JmOTI1ZjNkNDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC0yMTUsNDEgKzIx
NSwyMCBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2Fk
ZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCi0gICAgaWYgKCEhcmVzb3VyY2VMb2FkZXIub3B0aW9ucygpLnNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKQotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIHNjaGVkdWxlZCB0aHJvdWdoIFNlcnZpY2VX
b3JrZXIgb3IgTmV0d29yayBQcm9jZXNzIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVz
b3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgp
LCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRC50b1VJbnQ2NCgpLCBpZGVudGlmaWVyKTsKKyAg
ICBhdXRvIHVybCA9IHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS51cmwoKTsKKyAgICBhdXRvKiBk
YXRhID0gdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCk7CisgICAgaWYgKGRhdGEpCisgICAgICAg
IHVybC5zdHJpbmcoKTsKIAotICAgIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9u
KCkuaGFuZGxlRmV0Y2gocmVzb3VyY2VMb2FkZXIsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBT
VG9IVFRQUmVkaXJlY3QsIFt0aGlzLCB0cmFja2luZ1BhcmFtZXRlcnMsIGlkZW50aWZpZXIsIHNo
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIG1heGltdW1CdWZmZXJpbmdU
aW1lID0gbWF4aW11bUJ1ZmZlcmluZ1RpbWUocmVzb3VyY2UpLCByZXNvdXJjZUxvYWRlciA9IG1h
a2VSZWYocmVzb3VyY2VMb2FkZXIpXSAoU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpSZXN1bHQg
cmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKHJlc3VsdCAhPSBTZXJ2aWNlV29ya2VyQ2xp
ZW50RmV0Y2g6OlJlc3VsdDo6VW5oYW5kbGVkKSB7Ci0gICAgICAgICAgICBMT0coTmV0d29ya1Nj
aGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwg
dXJsICclcycgd2lsbCBiZSBzY2hlZHVsZWQgdGhyb3VnaCBTZXJ2aWNlV29ya2VyIGhhbmRsZSBm
ZXRjaCBhbGdvcml0aG0iLCByZXNvdXJjZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCku
ZGF0YSgpKTsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInNjaGVkdWxlTG9h
ZDogVVJMIHdpbGwgYmUgc2NoZWR1bGVkIHRocm91Z2ggU2VydmljZVdvcmtlciBoYW5kbGUgZmV0
Y2ggYWxnb3JpdGhtIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIt
PmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQ
YXJhbWV0ZXJzLmZyYW1lSUQudG9VSW50NjQoKSwgaWRlbnRpZmllcik7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHJlc291cmNlTG9hZGVyLT5vcHRpb25zKCku
c2VydmljZVdvcmtlcnNNb2RlID09IFNlcnZpY2VXb3JrZXJzTW9kZTo6T25seSkgewotICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgic2NoZWR1bGVMb2FkOiB1bmFibGUg
dG8gc2NoZWR1bGUgVVJMIHRocm91Z2ggU2VydmljZVdvcmtlciBoYW5kbGUgZmV0Y2ggYWxnb3Jp
dGhtIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2
NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXItPmZyYW1lKCks
IHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJz
LmZyYW1lSUQudG9VSW50NjQoKSwgaWRlbnRpZmllcik7Ci0gICAgICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKFtyZXNvdXJjZUxvYWRlciA9IFdURk1vdmUocmVzb3VyY2VMb2FkZXIpXSB7Ci0gICAg
ICAgICAgICAgICAgYXV0byBlcnJvciA9IGludGVybmFsRXJyb3IocmVzb3VyY2VMb2FkZXItPnJl
cXVlc3QoKS51cmwoKSk7Ci0gICAgICAgICAgICAgICAgZXJyb3Iuc2V0VHlwZShSZXNvdXJjZUVy
cm9yOjpUeXBlOjpDYW5jZWxsYXRpb24pOwotICAgICAgICAgICAgICAgIHJlc291cmNlTG9hZGVy
LT5kaWRGYWlsKGVycm9yKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJMb2Fk
ZXJTdHJhdGVneSgpLnRyeUxvYWRpbmdVc2luZ1VSTFNjaGVtZUhhbmRsZXIocmVzb3VyY2VMb2Fk
ZXIpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzY2hlZHVsZUxvYWQ6
IFVSTCB3aWxsIGJlIHNjaGVkdWxlZCB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyAoZnJhbWUgPSAl
cCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLT5mcmFtZSgpLCB0cmFja2luZ1BhcmFt
ZXRlcnMucGFnZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELnRvVUlu
dDY0KCksIGlkZW50aWZpZXIpOwotICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
d2ViTG9hZGVyU3RyYXRlZ3koKS5zY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MocmVzb3Vy
Y2VMb2FkZXIuZ2V0KCksIHJlc291cmNlTG9hZGVyLT5yZXF1ZXN0KCksIHRyYWNraW5nUGFyYW1l
dGVycywgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgbWF4aW11bUJ1
ZmZlcmluZ1RpbWUpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic2NoZWR1bGVMb2FkOiBVUkwgbm90IGhhbmRsZWQgYnkg
YW55IGhhbmRsZXJzIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIt
PmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQ
YXJhbWV0ZXJzLmZyYW1lSUQudG9VSW50NjQoKSwgaWRlbnRpZmllcik7Ci0gICAgfSk7CisgICAg
aWYgKChyZXNvdXJjZUxvYWRlci5vcHRpb25zKCkuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIgJiYgcmVzb3VyY2VMb2FkZXIub3B0aW9ucygpLnNlcnZpY2VXb3JrZXJzTW9kZSAh
PSBTZXJ2aWNlV29ya2Vyc01vZGU6Ok5vbmUpIHx8ICF0cnlMb2FkaW5nVXNpbmdVUkxTY2hlbWVI
YW5kbGVyKHJlc291cmNlTG9hZGVyKSkgewogI2Vsc2UKICAgICBpZiAoIXRyeUxvYWRpbmdVc2lu
Z1VSTFNjaGVtZUhhbmRsZXIocmVzb3VyY2VMb2FkZXIpKSB7CisjZW5kaWYKICAgICAgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRCgic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBzY2hlZHVsZWQg
d2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAi
LCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNv
dXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCks
IHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELnRvVUludDY0KCksIGlkZW50aWZpZXIpOwogICAg
ICAgICBzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MocmVzb3VyY2VMb2FkZXIsIHJlc291
cmNlTG9hZGVyLnJlcXVlc3QoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLCBzaG91bGRDbGVhclJlZmVy
cmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBtYXhpbXVtQnVmZmVyaW5nVGltZShyZXNvdXJjZSkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInNj
aGVkdWxlTG9hZDogVVJMIG5vdCBoYW5kbGVkIGJ5IGFueSBoYW5kbGVycyAoZnJhbWUgPSAlcCwg
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9
ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVy
cy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQudG9VSW50NjQo
KSwgaWRlbnRpZmllcik7Ci0jZW5kaWYKIH0KIAogYm9vbCBXZWJMb2FkZXJTdHJhdGVneTo6dHJ5
TG9hZGluZ1VzaW5nVVJMU2NoZW1lSGFuZGxlcihSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2Fk
ZXIpCkBAIC0yNzEsNiArMjUwLDEwIEBAIGJvb2wgV2ViTG9hZGVyU3RyYXRlZ3k6OnRyeUxvYWRp
bmdVc2luZ1VSTFNjaGVtZUhhbmRsZXIoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlCiAKIHZvaWQg
V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhSZXNvdXJj
ZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgV2ViUmVzb3VyY2VMb2FkZXI6OlRyYWNraW5nUGFyYW1ldGVycyYgdHJhY2tpbmdQYXJh
bWV0ZXJzLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFNl
Y29uZHMgbWF4aW11bUJ1ZmZlcmluZ1RpbWUpCiB7CisgICAgYXV0byogd2ViRnJhbWVMb2FkZXJD
bGllbnQgPSB0b1dlYkZyYW1lTG9hZGVyQ2xpZW50KHJlc291cmNlTG9hZGVyLmZyYW1lTG9hZGVy
KCktPmNsaWVudCgpKTsKKyAgICBhdXRvKiB3ZWJGcmFtZSA9IHdlYkZyYW1lTG9hZGVyQ2xpZW50
ID8gd2ViRnJhbWVMb2FkZXJDbGllbnQtPndlYkZyYW1lKCkgOiBudWxscHRyOworICAgIGF1dG8q
IHdlYlBhZ2UgPSB3ZWJGcmFtZSA/IHdlYkZyYW1lLT5wYWdlKCkgOiBudWxscHRyOworCiAgICAg
UmVzb3VyY2VMb2FkSWRlbnRpZmllciBpZGVudGlmaWVyID0gcmVzb3VyY2VMb2FkZXIuaWRlbnRp
ZmllcigpOwogICAgIEFTU0VSVChpZGVudGlmaWVyKTsKIApAQCAtMzAyLDYgKzI4NSwxNyBAQCB2
b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MoUmVz
b3VyY2VMb2FkZXImIHJlc291cmNlTAogICAgIGxvYWRQYXJhbWV0ZXJzLnByZWZsaWdodFBvbGlj
eSA9IHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5wcmVmbGlnaHRQb2xpY3k7CiAgICAgbG9hZFBh
cmFtZXRlcnMuaXNIVFRQU1VwZ3JhZGVFbmFibGVkID0gcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSA/
IHJlc291cmNlTG9hZGVyLmZyYW1lKCktPnNldHRpbmdzKCkuSFRUUFNVcGdyYWRlRW5hYmxlZCgp
IDogZmFsc2U7CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgLy8gSW4gY2FzZSBv
ZiBVUkwgc2NoZW1lIGhhbmRsZXIsIHdlIHdpbGwgdHJ5IHRvIGxvYWQgb24gc2VydmljZSB3b3Jr
ZXJzIGFuZCBpZiB1bmhhbmRsZWQsIGZhbGxiYWNrIHRvIFVSTCBzY2hlbWUgaGFuZGxlci4KKyAg
ICBpZiAocmVzb3VyY2VMb2FkZXIub3B0aW9ucygpLnNlcnZpY2VXb3JrZXJzTW9kZSA9PSBTZXJ2
aWNlV29ya2Vyc01vZGU6OkFsbCAmJiB3ZWJQYWdlICYmICB3ZWJQYWdlLT51cmxTY2hlbWVIYW5k
bGVyRm9yU2NoZW1lKHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS51cmwoKS5wcm90b2NvbCgpLnRv
U3RyaW5nV2l0aG91dENvcHlpbmcoKSkpCisgICAgICAgIGxvYWRQYXJhbWV0ZXJzLnNlcnZpY2VX
b3JrZXJzTW9kZSA9IFNlcnZpY2VXb3JrZXJzTW9kZTo6T25seTsKKyAgICBlbHNlCisgICAgICAg
IGxvYWRQYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJzTW9kZSA9IHJlc291cmNlTG9hZGVyLm9wdGlv
bnMoKS5zZXJ2aWNlV29ya2Vyc01vZGU7CisKKyAgICBsb2FkUGFyYW1ldGVycy5zZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciA9IHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5zZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcjsKKyAgICBsb2FkUGFyYW1ldGVycy5odHRw
SGVhZGVyc1RvS2VlcCA9IHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5odHRwSGVhZGVyc1RvS2Vl
cDsKKyNlbmRpZgorCiAgICAgYXV0byogZG9jdW1lbnQgPSByZXNvdXJjZUxvYWRlci5mcmFtZSgp
ID8gcmVzb3VyY2VMb2FkZXIuZnJhbWUoKS0+ZG9jdW1lbnQoKSA6IG51bGxwdHI7CiAgICAgaWYg
KHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5jc3BSZXNwb25zZUhlYWRlcnMpCiAgICAgICAgIGxv
YWRQYXJhbWV0ZXJzLmNzcFJlc3BvbnNlSGVhZGVycyA9IHJlc291cmNlTG9hZGVyLm9wdGlvbnMo
KS5jc3BSZXNwb25zZUhlYWRlcnM7CkBAIC00MzgsMTEgKzQzMiw2IEBAIHZvaWQgV2ViTG9hZGVy
U3RyYXRlZ3k6OnJlbW92ZShSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIpCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKFdl
YlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuY2FuY2VsRmV0Y2gobWFrZU9iamVj
dElkZW50aWZpZXI8RmV0Y2hJZGVudGlmaWVyVHlwZT4oaWRlbnRpZmllcikpKQotICAgICAgICBy
ZXR1cm47Ci0jZW5kaWYKLQogICAgIFJlZlB0cjxXZWJSZXNvdXJjZUxvYWRlcj4gbG9hZGVyID0g
bV93ZWJSZXNvdXJjZUxvYWRlcnMudGFrZShpZGVudGlmaWVyKTsKICAgICAvLyBMb2FkZXIgbWF5
IG5vdCBiZSByZWdpc3RlcmVkIGlmIHdlIGNyZWF0ZWQgaXQsIGJ1dCBoYXZlbid0IHNjaGVkdWxl
ZCB5ZXQgKGEgYnVuZGxlIGNsaWVudCBjYW4gZGVjaWRlIHRvIGNhbmNlbCBzdWNoIHJlcXVlc3Qg
dmlhIHdpbGxTZW5kUmVxdWVzdCkuCiAgICAgaWYgKCFsb2FkZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXgg
YTM5MjQxYWNhMzBmZTc5NjgxMTAyNzQzMjAxN2NhNDQ5YmZiMWYyZi4uNWIzZWYyMzlhZGQ2OWU0
ZWFmY2I5ZmQxNTBjZjE1NzI0YmQxZTUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcApAQCAtMzIsMTMgKzMyLDIw
IEBACiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZGVyTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKKyNpbmNs
dWRlICJXZWJGcmFtZS5oIgorI2luY2x1ZGUgIldlYkZyYW1lTG9hZGVyQ2xpZW50LmgiCisjaW5j
bHVkZSAiV2ViTG9hZGVyU3RyYXRlZ3kuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZUhvc3QuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0NlcnRpZmljYXRlSW5mby5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dp
bmdDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zy
YW1lLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvRnJhbWVMb2FkZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbldlYktpdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRNZXRyaWNz
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CkBAIC0yMTgsNiArMjI1LDQ3IEBAIHZvaWQg
V2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaFJlc291cmNlTG9hZChjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmIG5ldHdvcmtMCiAgICAgbV9jb3JlTG9hZGVyLT5kaWRGaW5pc2hMb2FkaW5nKG5l
dHdvcmtMb2FkTWV0cmljcyk7CiB9CiAKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxT
ZXJ2aWNlV29ya2VyTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBpZiAo
YXV0byogZG9jdW1lbnQgPSBtX2NvcmVMb2FkZXItPmZyYW1lKCkgPyBtX2NvcmVMb2FkZXItPmZy
YW1lKCktPmRvY3VtZW50KCkgOiBudWxscHRyKSB7CisgICAgICAgIGlmIChtX2NvcmVMb2FkZXIt
Pm9wdGlvbnMoKS5kZXN0aW5hdGlvbiAhPSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpFbXB0
eVN0cmluZyB8fCBlcnJvci5pc0dlbmVyYWwoKSkKKyAgICAgICAgICAgIGRvY3VtZW50LT5hZGRD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJy
b3IubG9jYWxpemVkRGVzY3JpcHRpb24oKSk7CisgICAgICAgIGlmIChtX2NvcmVMb2FkZXItPm9w
dGlvbnMoKS5kZXN0aW5hdGlvbiAhPSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpFbXB0eVN0
cmluZykKKyAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291
cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgbWFrZVN0cmluZygiQ2Fubm90IGxvYWQgIiwg
ZXJyb3IuZmFpbGluZ1VSTCgpLnN0cmluZygpLCAiLiIpKTsKKyAgICB9CisKKyAgICBkaWRGYWls
UmVzb3VyY2VMb2FkKGVycm9yKTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6c2Vydmlj
ZVdvcmtlckRpZE5vdEhhbmRsZSgpCit7CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInNlcnZpY2VXb3JrZXJEaWROb3RIYW5kbGU6IChwYWdl
SUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIg
UFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJh
Y2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMu
cmVzb3VyY2VJRCk7CisKKyAgICBpZiAobV9jb3JlTG9hZGVyLT5vcHRpb25zKCkuc2VydmljZVdv
cmtlcnNNb2RlICE9IFNlcnZpY2VXb3JrZXJzTW9kZTo6T25seSkgeworICAgICAgICBhdXRvKiB3
ZWJGcmFtZUxvYWRlckNsaWVudCA9IHRvV2ViRnJhbWVMb2FkZXJDbGllbnQobV9jb3JlTG9hZGVy
LT5mcmFtZUxvYWRlcigpLT5jbGllbnQoKSk7CisgICAgICAgIGF1dG8qIHdlYkZyYW1lID0gd2Vi
RnJhbWVMb2FkZXJDbGllbnQgPyB3ZWJGcmFtZUxvYWRlckNsaWVudC0+d2ViRnJhbWUoKSA6IG51
bGxwdHI7CisgICAgICAgIGF1dG8qIHdlYlBhZ2UgPSB3ZWJGcmFtZSA/IHdlYkZyYW1lLT5wYWdl
KCkgOiBudWxscHRyOworCisgICAgICAgIGlmIChhdXRvKiBoYW5kbGVyID0gd2ViUGFnZS0+dXJs
U2NoZW1lSGFuZGxlckZvclNjaGVtZShtX2NvcmVMb2FkZXItPnJlcXVlc3QoKS51cmwoKS5wcm90
b2NvbCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkpIHsKKyAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoInJlc291cmNlIGxvYWRlZCBieSBVUkwgc2NoZW1lIGhhbmRsZXI6IChw
YWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0g
JSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1f
dHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRl
cnMucmVzb3VyY2VJRCk7CisKKyAgICAgICAgICAgIGF1dG8gbG9hZGVyID0gbV9jb3JlTG9hZGVy
OworICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViTG9hZGVyU3RyYXRlZ3ko
KS5yZW1vdmUobV9jb3JlTG9hZGVyLmdldCgpKTsKKworICAgICAgICAgICAgaGFuZGxlci0+c3Rh
cnROZXdUYXNrKCpsb2FkZXIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
fQorCisgICAgYXV0byBlcnJvciA9IGludGVybmFsRXJyb3IobV9jb3JlTG9hZGVyLT5yZXF1ZXN0
KCkudXJsKCkpOworICAgIGVycm9yLnNldFR5cGUoUmVzb3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2Vs
bGF0aW9uKTsKKyAgICBtX2NvcmVMb2FkZXItPmRpZEZhaWwoZXJyb3IpOworI2Vsc2UKKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorfQorCiB2b2lkIFdlYlJlc291cmNlTG9hZGVy
OjpkaWRGYWlsUmVzb3VyY2VMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAg
IExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRGYWlsUmVz
b3VyY2VMb2FkIGZvciAnJXMnIiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEo
KS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLmgKaW5kZXggOGVhMWFlZGJlYjlmNTk2NDk3YWI2NzRhZjQzNjIxNjdh
MWNmMjlhYS4uN2MyMTExZDQ4YjI5NTE3YjU5NzMxZTM0YmRlZDZmOTNiYzdkNTYzNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5oCkBAIC04NSw2ICs4NSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKICAg
ICB2b2lkIGRpZEZpbmlzaFJlc291cmNlTG9hZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1l
dHJpY3MmKTsKICAgICB2b2lkIGRpZEZhaWxSZXNvdXJjZUxvYWQoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpOworICAgIHZvaWQgZGlkRmFpbFNlcnZpY2VXb3JrZXJMb2FkKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImKTsKKyAgICB2b2lkIHNlcnZpY2VXb3JrZXJEaWROb3RIYW5k
bGUoKTsKICAgICB2b2lkIGRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKTsKIAogICAg
IHZvaWQgc3RvcExvYWRpbmdBZnRlclhGcmFtZU9wdGlvbnNPckNvbnRlbnRTZWN1cml0eVBvbGlj
eURlbmllZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
Lm1lc3NhZ2VzLmluCmluZGV4IDdiOTMyNTZmMDM2ZGQwNDJmNDRiYTgzYTMxOGJiN2I2NjM2ZDQx
YWEuLjhjMGYyMWE4MzYyMmNmOGFiMGQzNjdlMjFmODZjNzFhN2VkMDVkNjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLm1lc3NhZ2VzLmluCkBAIC0yNyw2ICsyNyw4IEBAIG1lc3NhZ2VzIC0+IFdlYlJlc291
cmNlTG9hZGVyIExlZ2FjeVJlY2VpdmVyIHsKICAgICBEaWRSZWNlaXZlRGF0YShJUEM6OlNoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKICAg
ICBEaWRGaW5pc2hSZXNvdXJjZUxvYWQoV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzIG5ldHdv
cmtMb2FkTWV0cmljcykKICAgICBEaWRGYWlsUmVzb3VyY2VMb2FkKFdlYkNvcmU6OlJlc291cmNl
RXJyb3IgZXJyb3IpCisgICAgRGlkRmFpbFNlcnZpY2VXb3JrZXJMb2FkKFdlYkNvcmU6OlJlc291
cmNlRXJyb3IgZXJyb3IpCisgICAgU2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSgpCiAgICAgRGlk
QmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpCiAKICAgICBTdG9wTG9hZGluZ0FmdGVyWEZy
YW1lT3B0aW9uc09yQ29udGVudFNlY3VyaXR5UG9saWN5RGVuaWVkKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMzI0NDY2YThkNGQ4NWM4MzMwOTU5YTUwZjc3ZDU4OTE0NjEwNjEy
MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsMjAzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudEZldGNoLmgiCi0KLSNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCi0KLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCi0jaW5jbHVk
ZSAiV2ViU1dDbGllbnRDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAiV2ViU2VydmljZVdvcmtlclBy
b3ZpZGVyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlRXJyb3IuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgotCi1u
YW1lc3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1SZWY8U2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoPiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OmNyZWF0ZShXZWJT
ZXJ2aWNlV29ya2VyUHJvdmlkZXImIHNlcnZpY2VXb3JrZXJQcm92aWRlciwgUmVmPFdlYkNvcmU6
OlJlc291cmNlTG9hZGVyPiYmIGxvYWRlciwgRmV0Y2hJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJl
ZjxXZWJTV0NsaWVudENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgYm9vbCBzaG91bGRDbGVhclJl
ZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBDYWxsYmFjayYmIGNhbGxiYWNrKQotewotICAg
IGF1dG8gZmV0Y2ggPSBhZG9wdFJlZigqbmV3IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaCB7IHNl
cnZpY2VXb3JrZXJQcm92aWRlciwgV1RGTW92ZShsb2FkZXIpLCBpZGVudGlmaWVyLCBXVEZNb3Zl
KGNvbm5lY3Rpb24pLCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBX
VEZNb3ZlKGNhbGxiYWNrKSB9KTsKLSAgICBmZXRjaC0+c3RhcnQoKTsKLSAgICByZXR1cm4gZmV0
Y2g7Ci19Ci0KLVNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6flNlcnZpY2VXb3JrZXJDbGllbnRG
ZXRjaCgpCi17Ci19Ci0KLVNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6U2VydmljZVdvcmtlckNs
aWVudEZldGNoKFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlciYgc2VydmljZVdvcmtlclByb3ZpZGVy
LCBSZWY8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI+JiYgbG9hZGVyLCBGZXRjaElkZW50aWZpZXIg
aWRlbnRpZmllciwgUmVmPFdlYlNXQ2xpZW50Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBib29s
IHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIENhbGxiYWNrJiYgY2Fs
bGJhY2spCi0gICAgOiBtX3NlcnZpY2VXb3JrZXJQcm92aWRlcihzZXJ2aWNlV29ya2VyUHJvdmlk
ZXIpCi0gICAgLCBtX2xvYWRlcihXVEZNb3ZlKGxvYWRlcikpCi0gICAgLCBtX2lkZW50aWZpZXIo
aWRlbnRpZmllcikKLSAgICAsIG1fY29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQotICAg
ICwgbV9jYWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkKLSAgICAsIG1fc2hvdWxkQ2xlYXJSZWZl
cnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdChzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRU
UFJlZGlyZWN0KQotewotfQotCi12b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6c3RhcnQo
KQotewotICAgIGF1dG8gcmVxdWVzdCA9IG1fbG9hZGVyLT5yZXF1ZXN0KCk7Ci0gICAgYXV0byYg
b3B0aW9ucyA9IG1fbG9hZGVyLT5vcHRpb25zKCk7Ci0KLSAgICBhdXRvIHJlZmVycmVyID0gcmVx
dWVzdC5odHRwUmVmZXJyZXIoKTsKLQotICAgIC8vIFdlIGFyZSBpbnRlcmNlcHRpbmcgZmV0Y2gg
Y2FsbHMgYWZ0ZXIgZ29pbmcgdGhyb3VnaCB0aGUgSFRUUCBsYXllciwgd2hpY2ggbWF5IGFkZCBz
b21lIHNwZWNpZmljIGhlYWRlcnMuCi0gICAgY2xlYW5IVFRQUmVxdWVzdEhlYWRlcnNGb3JBY2Nl
c3NDb250cm9sKHJlcXVlc3QsIG9wdGlvbnMuaHR0cEhlYWRlcnNUb0tlZXApOwotCi0gICAgQVNT
RVJUKG9wdGlvbnMuc2VydmljZVdvcmtlcnNNb2RlICE9IFNlcnZpY2VXb3JrZXJzTW9kZTo6Tm9u
ZSk7Ci0gICAgbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciA9IG9wdGlvbnMu
c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIudmFsdWUoKTsKLSAgICBtX2Nvbm5l
Y3Rpb24tPnN0YXJ0RmV0Y2gobV9pZGVudGlmaWVyLCBtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25JZGVudGlmaWVyLCByZXF1ZXN0LCBvcHRpb25zLCByZWZlcnJlcik7Ci19Ci0KLXZvaWQgU2Vy
dmljZVdvcmtlckNsaWVudEZldGNoOjpkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZShSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVzcG9uc2UpCi17Ci0gICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2Up
XSgpIG11dGFibGUgewotICAgICAgICBpZiAoIW1fbG9hZGVyKQotICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgIHJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6
OlNlcnZpY2VXb3JrZXIpOwotCi0gICAgICAgIG1fbG9hZGVyLT53aWxsU2VuZFJlcXVlc3QobV9s
b2FkZXItPnJlcXVlc3QoKS5yZWRpcmVjdGVkUmVxdWVzdChyZXNwb25zZSwgbV9zaG91bGRDbGVh
clJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KSwgcmVzcG9uc2UsIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gcHJvdGVjdGVkVGhpcy5jb3B5UmVmKCldKFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QpIHsKLSAgICAgICAgICAgIGlmICghbV9sb2FkZXIgfHwgcmVxdWVzdC5pc051bGwoKSkgewot
ICAgICAgICAgICAgICAgIGlmIChhdXRvIGNhbGxiYWNrID0gV1RGTW92ZShtX2NhbGxiYWNrKSkK
LSAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soUmVzdWx0OjpTdWNjZWVkZWQpOwotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEFTU0VSVChyZXF1
ZXN0ID09IG1fbG9hZGVyLT5yZXF1ZXN0KCkpOwotICAgICAgICAgICAgc3RhcnQoKTsKLSAgICAg
ICAgfSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBib29sIG5lZWRzQ29u
dGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQotewotICAgIGNhbGxPbk1haW5UaHJlYWQo
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVzcG9uc2UgPSBXVEZNb3Zl
KHJlc3BvbnNlKSwgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2VdKCkgbXV0
YWJsZSB7Ci0gICAgICAgIGlmICghbV9sb2FkZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBXVEZNb3ZlKG1fY2FsbGJhY2spKQotICAgICAgICAg
ICAgY2FsbGJhY2soUmVzdWx0OjpTdWNjZWVkZWQpOwotCi0gICAgICAgIEFTU0VSVCghcmVzcG9u
c2UuaXNSZWRpcmVjdGlvbigpIHx8ICFyZXNwb25zZS5odHRwSGVhZGVyRmllbGRzKCkuY29udGFp
bnMoSFRUUEhlYWRlck5hbWU6OkxvY2F0aW9uKSk7Ci0KLSAgICAgICAgaWYgKCFuZWVkc0NvbnRp
bnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkgewotICAgICAgICAgICAgbV9sb2FkZXItPmRp
ZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwgW10geyB9KTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotCi0gICAgICAgIG1fbG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9u
c2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0gewotICAg
ICAgICAgICAgaWYgKCFtX2xvYWRlcikKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgICAgIG1fY29ubmVjdGlvbi0+Y29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZShtX2lk
ZW50aWZpZXIsIG1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpOwotICAgICAg
ICB9KTsKLSAgICB9KTsKLX0KLQotdm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OmRpZFJl
Y2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSwgaW50NjRf
dCBlbmNvZGVkRGF0YUxlbmd0aCkKLXsKLSAgICBhdXRvKiBkYXRhID0gcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4oZGF0YVJlZmVyZW5jZS5kYXRhKCkpOwotICAgIGNhbGxPbk1haW5UaHJl
YWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZW5jb2RlZERhdGFMZW5n
dGgsIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFSZWZlcmVuY2Uuc2l6
ZSgpKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFtX2xvYWRlcikKLSAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICBtX2VuY29kZWREYXRhTGVuZ3RoICs9IGVuY29kZWREYXRhTGVuZ3Ro
OwotCi0gICAgICAgIG1fbG9hZGVyLT5kaWRSZWNlaXZlQnVmZmVyKFdURk1vdmUoYnVmZmVyKSwg
bV9lbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7Ci0gICAgfSk7Ci19Ci0KLXZv
aWQgU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpkaWRSZWNlaXZlRm9ybURhdGEoY29uc3QgSVBD
OjpGb3JtRGF0YVJlZmVyZW5jZSYpCi17Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3JtIGRh
dGEgcmVhZGluZy4KLX0KLQotdm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OmRpZEZpbmlz
aCgpCi17Ci0gICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpXSB7Ci0gICAgICAgIGlmICghbV9sb2FkZXIpCi0gICAgICAgICAgICByZXR1cm47
Ci0KLSAgICAgICAgQVNTRVJUKCFtX2NhbGxiYWNrKTsKLQotICAgICAgICBtX2xvYWRlci0+ZGlk
RmluaXNoTG9hZGluZyhOZXR3b3JrTG9hZE1ldHJpY3MgeyB9KTsKLSAgICAgICAgbV9zZXJ2aWNl
V29ya2VyUHJvdmlkZXIuZmV0Y2hGaW5pc2hlZChtX2lkZW50aWZpZXIpOwotICAgIH0pOwotfQot
Ci12b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6ZGlkRmFpbChSZXNvdXJjZUVycm9yJiYg
ZXJyb3IpCi17Ci0gICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBlcnJvciA9IFdURk1vdmUoZXJyb3IpXSB7Ci0gICAgICAgIGlmICghbV9s
b2FkZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgYXV0byogZG9jdW1lbnQgPSBt
X2xvYWRlci0+ZnJhbWUoKSA/IG1fbG9hZGVyLT5mcmFtZSgpLT5kb2N1bWVudCgpIDogbnVsbHB0
cjsKLSAgICAgICAgaWYgKGRvY3VtZW50KSB7Ci0gICAgICAgICAgICBpZiAobV9sb2FkZXItPm9w
dGlvbnMoKS5kZXN0aW5hdGlvbiAhPSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpFbXB0eVN0
cmluZyB8fCBlcnJvci5pc0dlbmVyYWwoKSkKLSAgICAgICAgICAgICAgICBkb2N1bWVudC0+YWRk
Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVy
cm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkpOwotICAgICAgICAgICAgaWYgKG1fbG9hZGVyLT5v
cHRpb25zKCkuZGVzdGluYXRpb24gIT0gRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6RW1wdHlT
dHJpbmcpCi0gICAgICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtYWtlU3RyaW5nKCJDYW5ub3QgbG9h
ZCAiLCBlcnJvci5mYWlsaW5nVVJMKCkuc3RyaW5nKCksICIuIikpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgbV9sb2FkZXItPmRpZEZhaWwoZXJyb3IpOwotCi0gICAgICAgIGlmIChhdXRvIGNhbGxi
YWNrID0gV1RGTW92ZShtX2NhbGxiYWNrKSkKLSAgICAgICAgICAgIGNhbGxiYWNrKFJlc3VsdDo6
U3VjY2VlZGVkKTsKLQotICAgICAgICBtX3NlcnZpY2VXb3JrZXJQcm92aWRlci5mZXRjaEZpbmlz
aGVkKG1faWRlbnRpZmllcik7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU2VydmljZVdvcmtlckNsaWVu
dEZldGNoOjpkaWROb3RIYW5kbGUoKQotewotICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gewotICAgICAgICBpZiAoIW1fbG9hZGVyKQot
ICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChhdXRvIGNhbGxiYWNrID0gV1RGTW92
ZShtX2NhbGxiYWNrKSkKLSAgICAgICAgICAgIGNhbGxiYWNrKFJlc3VsdDo6VW5oYW5kbGVkKTsK
LQotICAgICAgICBtX3NlcnZpY2VXb3JrZXJQcm92aWRlci5mZXRjaEZpbmlzaGVkKG1faWRlbnRp
Zmllcik7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpjYW5j
ZWwoKQotewotICAgIGlmIChhdXRvIGNhbGxiYWNrID0gV1RGTW92ZShtX2NhbGxiYWNrKSkKLSAg
ICAgICAgY2FsbGJhY2soUmVzdWx0OjpDYW5jZWxsZWQpOwotCi0gICAgbV9jb25uZWN0aW9uLT5j
YW5jZWxGZXRjaChtX2lkZW50aWZpZXIsIG1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50
aWZpZXIpOwotICAgIG1fbG9hZGVyID0gbnVsbHB0cjsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRj
aC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNjY3YWM3NTdmZGQ3MTA4ODhiOGIy
ZDRlZWU5NDQ5OTBmMGIwZDAzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJD
bGllbnRGZXRjaC5oCisrKyAvZGV2L251bGwKQEAgLTEsODUgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotCi0jaW5jbHVkZSAi
RGF0YVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgIkZvcm1EYXRhUmVmZXJlbmNlLmgiCi0jaW5jbHVk
ZSAiTWVzc2FnZVJlY2VpdmVyLmgiCi0jaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgotI2luY2x1
ZGUgPFdlYkNvcmUvRmV0Y2hJZGVudGlmaWVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZUVycm9yLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRlci5oPgotI2luY2x1ZGUg
PHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3Mg
V2ViU1dDbGllbnRDb25uZWN0aW9uOwotY2xhc3MgV2ViU2VydmljZVdvcmtlclByb3ZpZGVyOwot
Ci1jbGFzcyBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2ggZmluYWwgOiBwdWJsaWMgUmVmQ291bnRl
ZDxTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g+LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIg
ewotcHVibGljOgotICAgIGVudW0gY2xhc3MgUmVzdWx0IHsgU3VjY2VlZGVkLCBDYW5jZWxsZWQs
IFVuaGFuZGxlZCB9OwotICAgIHVzaW5nIENhbGxiYWNrID0gV1RGOjpDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlc3VsdCk+OwotCi0gICAgc3RhdGljIFJlZjxTZXJ2aWNlV29ya2VyQ2xpZW50RmV0
Y2g+IGNyZWF0ZShXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXImLCBSZWY8V2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI+JiYsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgUmVmPFdlYlNXQ2xpZW50Q29u
bmVjdGlvbj4mJiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0
LCBDYWxsYmFjayYmKTsKLSAgICB+U2VydmljZVdvcmtlckNsaWVudEZldGNoKCk7Ci0KLSAgICB2
b2lkIHN0YXJ0KCk7Ci0KLSAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwotICAgIHZvaWQgY2FuY2VsKCk7Ci0KLSAgICBib29s
IGlzT25nb2luZygpIGNvbnN0IHsgcmV0dXJuICEhbV9jYWxsYmFjazsgfQotCi1wcml2YXRlOgot
ICAgIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaChXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXImLCBS
ZWY8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI+JiYsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwg
UmVmPFdlYlNXQ2xpZW50Q29ubmVjdGlvbj4mJiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25I
VFRQU1RvSFRUUFJlZGlyZWN0LCBDYWxsYmFjayYmKTsKLQotICAgIE9wdGlvbmFsPFdlYkNvcmU6
OlJlc291cmNlRXJyb3I+IHZhbGlkYXRlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYpOwotCi0gICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdl
KTsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVG
b3JtRGF0YShjb25zdCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJik7Ci0gICAgdm9pZCBkaWRGaW5p
c2goKTsKLSAgICB2b2lkIGRpZEZhaWwoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKTsKLSAgICB2
b2lkIGRpZE5vdEhhbmRsZSgpOwotCi0gICAgV2ViU2VydmljZVdvcmtlclByb3ZpZGVyJiBtX3Nl
cnZpY2VXb3JrZXJQcm92aWRlcjsKLSAgICBSZWZQdHI8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI+
IG1fbG9hZGVyOwotICAgIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciBtX2lkZW50aWZpZXI7Ci0g
ICAgUmVmPFdlYlNXQ2xpZW50Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwotICAgIENhbGxiYWNr
IG1fY2FsbGJhY2s7Ci0gICAgYm9vbCBtX3Nob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQ
UmVkaXJlY3QgeyB0cnVlIH07Ci0gICAgaW50NjRfdCBtX2VuY29kZWREYXRhTGVuZ3RoIHsgMCB9
OwotICAgIGJvb2wgbV9kaWRGYWlsIHsgZmFsc2UgfTsKLSAgICBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVu
dGlmaWVyOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gubWVzc2FnZXMuaW4K
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkM2JjNzQwNGJmYjQ3ZDYxZTBkMTU4OGUx
YTVmMmE5YzA2YTE2NjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNsaWVu
dEZldGNoLm1lc3NhZ2VzLmluCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotIyBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
IyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0j
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQotCi1tZXNzYWdlcyAtPiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2ggewotICAgIERpZFJl
Y2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBib29sIG5l
ZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQotICAgIERpZFJlY2VpdmVSZWRp
cmVjdFJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UpCi0gICAgRGlk
UmVjZWl2ZURhdGEoSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFM
ZW5ndGgpCi0gICAgRGlkUmVjZWl2ZUZvcm1EYXRhKElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgZGF0
YSkKLSAgICBEaWRGaW5pc2goKQotICAgIERpZEZhaWwoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBl
cnJvcikKLSAgICBEaWROb3RIYW5kbGUoKQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDbGllbnRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKaW5kZXggMDZhNGNjN2RiN2ExOGMxMTg3YmFmYzY1
ODg1NTQzMmM0NWViMmFlMi4uZDAwODliZjU4YjY1NDU2NWE4ZTFlOTEyZDFiZGE2MjJhN2Q5ZWZj
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGll
bnRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAiTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIK
LSNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guaCIKICNpbmNsdWRlICJXZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzc1Bvb2xNZXNzYWdlcy5oIgpAQCAtMjAzLDIxICsyMDIsNiBAQCB2b2lkIFdlYlNXQ2xp
ZW50Q29ubmVjdGlvbjo6Z2V0UmVnaXN0cmF0aW9ucyhTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BP
cmlnaW4sIGNvbgogICAgIH0pOwogfQogCi12b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6c3Rh
cnRGZXRjaChGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlv
bnMsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpCi17Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uOjpTdGFydEZldGNoIHsgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIsIGZldGNoSWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9ucywgSVBDOjpGb3JtRGF0
YVJlZmVyZW5jZSB7IHJlcXVlc3QuaHR0cEJvZHkoKSB9LCByZWZlcnJlciB9KTsKLX0KLQotdm9p
ZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmNhbmNlbEZldGNoKEZldGNoSWRlbnRpZmllciBmZXRj
aElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIHNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKQotewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNX
U2VydmVyQ29ubmVjdGlvbjo6Q2FuY2VsRmV0Y2ggeyBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyIH0pOwotfQotCi12b2lkIFdlYlNXQ2xpZW50Q29u
bmVjdGlvbjo6Y29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZShGZXRjaElkZW50aWZpZXIg
ZmV0Y2hJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBzZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcikKLXsKLSAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJTV1NlcnZlckNvbm5lY3Rpb246OkNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UgeyBz
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyIH0pOwot
fQotCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Y29ubmVjdGlvblRvU2VydmVyTG9zdCgp
CiB7CiAgICAgY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKaW5kZXggMjdmZWEyYzFiMjRiOGMyYTk2
NGM0ZTk2N2QzZjdlY2EzOGQwMzcyZi4uOWU0NDVmNTVjOTY4MDljYTljZDYzNTYzMWY1NTU0Nzk5
MWVjYTUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDbGllbnRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJD
b25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVNlbmRlci5oIgotI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5oIgogI2lu
Y2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTWVzc2FnZVdpdGhNZXNz
YWdlUG9ydHMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NXQ2xpZW50Q29ubmVjdGlvbi5oPgpAQCAt
NjAsOSArNTksNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKIAogICAgIGJvb2wgbWF5SGF2ZVNlcnZp
Y2VXb3JrZXJSZWdpc3RlcmVkRm9yT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgc3RhcnRGZXRjaChXZWJDb3JlOjpGZXRjaElk
ZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlv
bnMmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKTsKLSAgICB2b2lkIGNhbmNlbEZldGNoKFdlYkNv
cmU6OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIpOwotICAgIHZvaWQgY29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZShXZWJD
b3JlOjpGZXRjaElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyKTsKIAogICAgIHZvaWQgY29ubmVjdGlvblRvU2VydmVyTG9zdCgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2Vy
UHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vydmlj
ZVdvcmtlclByb3ZpZGVyLmNwcAppbmRleCA2MmEzOWIyNWZkZmFkMTdlMTE1NzYzMzAwMjgyNDJi
MzA5ZjE5Mjg1Li43ZGNkMThlYmFkMzA2ZGFlNDc1YjAwN2I1N2U3ZTE2NWY2YmIzNTAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2Vy
UHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNl
cnZpY2VXb3JrZXJQcm92aWRlci5jcHAKQEAgLTY2LDQ4ICs2Niw2IEBAIFdlYkNvcmU6OlNXQ2xp
ZW50Q29ubmVjdGlvbiogV2ViU2VydmljZVdvcmtlclByb3ZpZGVyOjpleGlzdGluZ1NlcnZpY2VX
b3JrZXJDb25uCiAgICAgcmV0dXJuIG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi0+ZXhpc3RpbmdT
ZXJ2aWNlV29ya2VyQ29ubmVjdGlvbigpOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxk
SGFuZGxlRmV0Y2goY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKQotewotICAg
IGlmIChvcHRpb25zLnNlcnZpY2VXb3JrZXJzTW9kZSA9PSBTZXJ2aWNlV29ya2Vyc01vZGU6Ok5v
bmUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChpc1BvdGVudGlhbE5hdmlnYXRp
b25PclN1YnJlc291cmNlUmVxdWVzdChvcHRpb25zLmRlc3RpbmF0aW9uKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuICEhb3B0aW9ucy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uSWRlbnRpZmllcjsKLX0KLQotdm9pZCBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OmhhbmRs
ZUZldGNoKFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9u
SFRUUFNUb0hUVFBSZWRpcmVjdCwgU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpDYWxsYmFjayYm
IGNhbGxiYWNrKQotewotICAgIGlmICghTGVnYWN5U2NoZW1lUmVnaXN0cnk6OmNhblNlcnZpY2VX
b3JrZXJzSGFuZGxlVVJMU2NoZW1lKGxvYWRlci5yZXF1ZXN0KCkudXJsKCkucHJvdG9jb2woKS50
b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpIHx8ICFzaG91bGRIYW5kbGVGZXRjaChsb2FkZXIub3B0
aW9ucygpKSkgewotICAgICAgICBjYWxsYmFjayhTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OlJl
c3VsdDo6VW5oYW5kbGVkKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8mIGNv
bm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oKS5zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbigpOwotICAgIGF1dG8gZmV0Y2hJZGVu
dGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8RmV0Y2hJZGVudGlmaWVyVHlwZT4obG9hZGVy
LmlkZW50aWZpZXIoKSk7Ci0gICAgbV9vbmdvaW5nRmV0Y2hUYXNrcy5hZGQoZmV0Y2hJZGVudGlm
aWVyLCBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OmNyZWF0ZSgqdGhpcywgbG9hZGVyLCBmZXRj
aElkZW50aWZpZXIsIGNvbm5lY3Rpb24sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQ
UmVkaXJlY3QsIFdURk1vdmUoY2FsbGJhY2spKSk7Ci19Ci0KLWJvb2wgV2ViU2VydmljZVdvcmtl
clByb3ZpZGVyOjpjYW5jZWxGZXRjaChGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyKQot
ewotICAgIGF1dG8gZmV0Y2ggPSBtX29uZ29pbmdGZXRjaFRhc2tzLnRha2UoZmV0Y2hJZGVudGlm
aWVyKTsKLSAgICBpZiAoZmV0Y2gpCi0gICAgICAgICgqZmV0Y2gpLT5jYW5jZWwoKTsKLSAgICBy
ZXR1cm4gISFmZXRjaDsKLX0KLQotdm9pZCBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OmZldGNo
RmluaXNoZWQoRmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllcikKLXsKLSAgICBtX29uZ29p
bmdGZXRjaFRhc2tzLnRha2UoZmV0Y2hJZGVudGlmaWVyKTsKLX0KLQotdm9pZCBXZWJTZXJ2aWNl
V29ya2VyUHJvdmlkZXI6OmRpZFJlY2VpdmVTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQotewot
ICAgIGlmIChhdXRvIGZldGNoID0gbV9vbmdvaW5nRmV0Y2hUYXNrcy5nZXQobWFrZU9iamVjdElk
ZW50aWZpZXI8RmV0Y2hJZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkK
LSAgICAgICAgZmV0Y2gtPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwot
fQotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNl
cnZpY2VXb3JrZXJQcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmgKaW5kZXggMDg4YWVkOTU0ZTlhOWQ0ZWU1OTJmNWQ3
NTUyNzI3MTQ0YTA1MGEyMi4uYzAwYzA0NzkzMTI3YTA2OWZhZTk1MjMwMTI1ZGJiOTU1NTRjZDcz
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vydmlj
ZVdvcmtlclByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmgKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKIAotI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclByb3ZpZGVyLmg+CiAjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAgLTQxLDExICs0MCw2IEBAIGNsYXNzIFdlYlNlcnZp
Y2VXb3JrZXJQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUHJv
dmlkZXIgewogcHVibGljOgogICAgIHN0YXRpYyBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXImIHNp
bmdsZXRvbigpOwogCi0gICAgdm9pZCBoYW5kbGVGZXRjaChXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
ciYsIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgU2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoOjpDYWxsYmFjayYmKTsKLSAgICBib29sIGNhbmNlbEZldGNoKFdl
YkNvcmU6OkZldGNoSWRlbnRpZmllcik7Ci0gICAgdm9pZCBmZXRjaEZpbmlzaGVkKFdlYkNvcmU6
OkZldGNoSWRlbnRpZmllcik7Ci0KLSAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2aWNlV29ya2VyQ2xp
ZW50RmV0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogICAgIHZv
aWQgZGlkUmVjZWl2ZVNlcnZpY2VXb3JrZXJDbGllbnRSZWdpc3RyYXRpb25NYXRjaChJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKIAogcHJpdmF0ZToKQEAgLTU0LDggKzQ4LDYgQEAg
cHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OlNXQ2xpZW50Q29ubmVjdGlvbiogZXhpc3RpbmdTZXJ2
aWNlV29ya2VyQ29ubmVjdGlvbigpIGZpbmFsOwogICAgIFdlYkNvcmU6OlNXQ2xpZW50Q29ubmVj
dGlvbiYgc2VydmljZVdvcmtlckNvbm5lY3Rpb24oKSBmaW5hbDsKLQotICAgIEhhc2hNYXA8V2Vi
Q29yZTo6RmV0Y2hJZGVudGlmaWVyLCBSZWY8U2VydmljZVdvcmtlckNsaWVudEZldGNoPj4gbV9v
bmdvaW5nRmV0Y2hUYXNrczsKIH07IC8vIGNsYXNzIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcgog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4
IDAxN2I0N2YzMjA3ZDk5ZTViYjVlNzdjMGFjNjViMTcxOTcyZmRlOWUuLjg2NjY4Y2JhNzVkNWU0
OGRmNGRjOWQ3MmZkMTNjNDc5OGI2OTM5MTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEyIEBACisyMDE5LTEwLTEwICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KKworICAgICAgICBIYW5kbGUgc2VydmljZSB3b3JrZXIgbG9hZHMgdGhyb3VnaCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMjMwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNl
LXdvcmtlci9mZXRjaC1yZXF1ZXN0LXhoci5odHRwcy1leHBlY3RlZC50eHQ6CisKIDIwMTktMTAt
MTAgIENhcmxvcyBBbGJlcnRvIExvcGV6IFBlcmV6ICA8Y2xvcGV6QGlnYWxpYS5jb20+CiAKICAg
ICAgICAgSW1wb3J0IGNzcy9jc3MtaW1hZ2VzIFdQVCB0ZXN0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2Vy
dmljZS13b3JrZXIvZmV0Y2gtcmVxdWVzdC14aHIuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2Vy
dmljZS13b3JrZXIvZmV0Y2gtcmVxdWVzdC14aHIuaHR0cHMtZXhwZWN0ZWQudHh0CmluZGV4IDRm
YjZiYjUzYjMxNjU1MmY0MWQwYTk3ZmE5M2FkZDdmNjg2YTY1MjMuLjg1YWEwMGIwYWU4ZWRjYzE2
ODE0NTY1ZDk5OWRhZDdlNDFhOTNjOTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2Zl
dGNoLXJlcXVlc3QteGhyLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtl
ci9mZXRjaC1yZXF1ZXN0LXhoci5odHRwcy1leHBlY3RlZC50eHQKQEAgLTgsNyArOCw3IEBAIFBB
U1MgRmV0Y2hFdmVudCNyZXF1ZXN0LmJvZHkgY29udGFpbnMgWEhSIHJlcXVlc3QgZGF0YSAoc3Ry
aW5nKQogUEFTUyBGZXRjaEV2ZW50I3JlcXVlc3QuYm9keSBjb250YWlucyBYSFIgcmVxdWVzdCBk
YXRhIChibG9iKSAKIFBBU1MgRmV0Y2hFdmVudCNyZXF1ZXN0Lm1ldGhvZCBpcyBzZXQgdG8gWEhS
IG1ldGhvZCAKIFBBU1MgWEhSIHVzaW5nIE9QVElPTlMgbWV0aG9kIAotRkFJTCBYSFIgd2l0aCBm
b3JtIGRhdGEgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9i
amVjdCAiRXJyb3I6IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIChzdHJpbmcpICJQT1NUIiBidXQg
Z290ICh1bmRlZmluZWQpIHVuZGVmaW5lZCIKK1BBU1MgWEhSIHdpdGggZm9ybSBkYXRhIAogUEFT
UyBYSFIgd2l0aCBtb2RlL2NyZWRlbnRpYWxzIHNldCAKIFBBU1MgWEhSIHRvIGRhdGEgVVJMIAog
UEFTUyByZXN0b3JlIGdsb2JhbCBzdGF0ZSAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380860</attachid>
            <date>2019-10-14 01:08:44 -0700</date>
            <delta_ts>2019-10-14 02:35:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202309-20191014100841.patch</filename>
            <type>text/plain</type>
            <size>108880</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWZjYTE4Nzg3YmVkOWEz
ZDQxZjVlNzQ1NDcxY2Q5NjljODVkZjdlYS4uM2RlNzNhMjZiZTg2NmJmZmQyYjlmYjg4MmJmMTBm
MDE1MzRiY2VjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTEwLTEzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBIYW5kbGUgc2VydmljZSB3
b3JrZXIgbG9hZHMgdGhyb3VnaCBOZXR3b3JrUmVzb3VyY2VMb2FkZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjMwOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IHRvIHNlcmlhbGl6ZSBIVFRQ
IGhlYWRlciBuYW1lcyBhcyBlbnVtZXJhdGlvbi4KKyAgICAgICAgVXBkYXRlZCBTV1NlcnZlciBh
YmlsaXR5IHRvIGhhbmRsZSBzY2hlbWVzIGJ5IGFkZGluZyBidWlsdC1pbiBzdXBwb3J0IGZvciBI
VFRQIGFuZCBIVFRQUyBhcyBkb25lIGluIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5LgorCisgICAgICAg
IENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VM
b2FkZXJPcHRpb25zLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jcmVhdGUtaHR0cC1o
ZWFkZXItbmFtZS10YWJsZToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpjYW5IYW5kbGVTY2hlbWUgY29u
c3QpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2IpOgorCiAyMDE5LTEw
LTEzICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXVzZSBl
eGlzdGluZyB3ZWIgcHJvY2Vzc2VzIGZvciBydW5uaW5nIHNlcnZpY2Ugd29ya2VycwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCA5Nzk1MTk3OGU5NzJjYWM4M2U4NTQ4ODA1MjViYjMyOGM4ZTU4NGI3Li43NmFiNjcwMTQ4
MDBjY2YyYzljYTgwY2FkYmYzMDU1YjQ1N2ZkN2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBA
CisyMDE5LTEwLTEzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAg
ICBIYW5kbGUgc2VydmljZSB3b3JrZXIgbG9hZHMgdGhyb3VnaCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjMw
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92
ZSBTZXJ2aWNlV29ya2VyRmV0Y2hDbGllbnQuCisgICAgICAgIEluc3RlYWQgd2UgdXNlIHRoZSBu
b3JtYWwgTmV0d29ya1Jlc291cmNlTG9hZGVyL1dlYlJlc291cmNlTG9hZGVyIGNvbW11bmljYXRp
b24gY2hhbm5lbC4KKyAgICAgICAgV2UgcGFzcyBhZGRpdGlvbmFsIHBhcmFtZXRlcnMsIGluIHBh
cnRpY3VsYXIgc2VydmljZSB3b3JrZXIgbW9kZSBhbmQgcmVnaXN0cmF0aW9uIGlkZW50aWZpZXIu
CisKKyAgICAgICAgQmFzZWQgb24gdGhhdCBpbmZvcm1hdGlvbiwgbmV0d29yayBwcm9jZXNzIHdp
bGwgZGVjaWRlIHdoZXRoZXIgdG8gbG9hZCBmcm9tIHNlcnZpY2Ugd29ya2VyIG9yIG5ldHdvcmsu
CisgICAgICAgIFRoZSBmaXJzdCBhZHZhbnRhZ2UgaXMgdGhhdCBpbiBjYXNlIG9mIHNlcnZpY2Ug
d29ya2VyIG5vdCBoYW5kbGluZyB0aGUgbG9hZCwgZ29pbmcgdG8gdGhlIG5ldHdvcmsgaXMgZmFz
dGVyLgorICAgICAgICBUaGlzIHdpbGwgYWxzbyBhbGxvdyB1cyB0byBkbyB0aGUgcmVnaXN0cmF0
aW9uIG1hdGNoaW5nIGluIG5ldHdvcmsgcHJvY2VzcyB3aGVuIHJlY2VpdmluZyBhIG5hdmlnYXRp
b24gcmVxdWVzdC4KKworICAgICAgICBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrIGlzIG5vdyBiZWVm
ZWQgdXAgdG8gZG8gdGhlIGxpbmsgYmV0d2VlbiBzZXJ2aWNlIHdvcmtlciBhbmQgTmV0d29ya1Jl
c291cmNlTG9hZGVyL1dlYlJlc291cmNlTG9hZGVyLgorICAgICAgICBUbyBzdXBwb3J0IHRoZSBz
YW1lIGNvbnNvbGUgbG9nZ2luZywgd2UgYWRkIGEgbmV3IG1lc3NhZ2UgY2FsbGVkIERpZEZhaWxT
ZXJ2aWNlV29ya2VyTG9hZC4KKworICAgICAgICBUbyBzdXBwb3J0IEFQSSB0ZXN0cywgd2UgY29u
dGludWUgdG8gZ28gdG8gdGhlIHNlcnZpY2Ugd29ya2VyIGJlZm9yZSB0cnlpbmcgdG8gZ28gdG8g
VVJMIHNjaGVtZSBoYW5kbGVycy4KKyAgICAgICAgVGhpcyBhZGRzIHNvbWUgYnVyZGVuIGFzIHdl
IG5lZWQgdG8gZ28gdG8gbmV0d29yayBwcm9jZXNzL3NlcnZpY2Ugd29ya2VyIHByb2Nlc3MgYW5k
LCBpbiBjYXNlIGxvYWQgaXMgbm90IGhhbmRsZWQKKyAgICAgICAgYnkgc2VydmljZSB3b3JrZXIs
IHdlIGdvIGJhY2sgdG8gdGhlIHdlYiBwcm9jZXNzIHRvIGRvIHRoZSBsb2FkIHRocm91Z2ggVVJM
IHNjaGVtZSBoYW5kbGVycy4KKyAgICAgICAgRm9yIHRoYXQgcHVycG9zZSB3ZSB1c2UgU2Vydmlj
ZVdvcmtlcnNNb2RlOjpPbmx5LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291
cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNjaGVk
dWxlUmVzb3VyY2VMb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6YWJvcnQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmRpZEZhaWxMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0V2l0aFNlcnZpY2VXb3JrZXIpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlcnZpY2VXb3JrZXJEaWROb3RI
YW5kbGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZl
dGNoVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2spOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrOjp+U2VydmljZVdvcmtlckZldGNoVGFzayk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OnNlbmRUb1NlcnZpY2VXb3JrZXIpOgorICAgICAgICAoV2ViS2l0
OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpzZW5kVG9DbGllbnQpOgorICAgICAgICAoV2ViS2l0
OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpzdGFydCk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OnN0YXJ0RmV0Y2gpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSk6CisgICAgICAgIChX
ZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAg
ICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZUZvcm1EYXRh
KToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkRmluaXNoKToK
KyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkRmFpbCk6CisgICAg
ICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZE5vdEhhbmRsZSk6CisgICAg
ICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmNhbmNlbEZyb21DbGllbnQpOgor
ICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpjb250aW51ZURpZFJlY2Vp
dmVGZXRjaFJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFz
azo6Y29udGludWVGZXRjaFRhc2tXaXRoKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtl
ckZldGNoVGFzazo6dGltZW91dFRpbWVyRmlyZWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oOgorICAgICAgICAoV2ViS2l0
OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpmZXRjaElkZW50aWZpZXIgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpzZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlckNvbm5lY3Rp
b246OmNhbmNlbEZldGNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9u
OjpjcmVhdGVGZXRjaFRhc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlckNvbm5lY3Rp
b246OnN0YXJ0RmV0Y2gpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnN0
YXJ0RmV0Y2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmRpZFJlY2VpdmVGZXRjaFRhc2tNZXNzYWdl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpyZWdp
c3RlckZldGNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjp1bnJlZ2lzdGVyRmV0Y2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246OmZldGNoVGFza1RpbWVkT3V0KToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmlwY0Nvbm5lY3Rp
b24gY29uc3QpOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJT
dHJhdGVneTo6c2NoZWR1bGVMb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6
ZGlkRmFpbFNlcnZpY2VXb3JrZXJMb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkZXI6OnNlcnZpY2VXb3JrZXJEaWROb3RIYW5kbGUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0
b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLmg6IFJlbW92ZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5tZXNz
YWdlcy5pbjogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGll
bnRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGll
bnRDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VX
b3JrZXJQcm92aWRlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZp
Y2VXb3JrZXJQcm92aWRlci5oOgorCiAyMDE5LTEwLTEzICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5u
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXVzZSBleGlzdGluZyB3ZWIgcHJvY2Vzc2VzIGZvciBy
dW5uaW5nIHNlcnZpY2Ugd29ya2VycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyT3B0aW9ucy5oCmluZGV4IDllMzA3NGRhMzIxMWQwZWU5N2I4ZWIyZWRmNDkxNjllYzVk
ZjJhNGEuLmRiZWExYmZhYTNlYzQ3ZmE3ODRmYTdmZThjODY3M2U2Njk0MTUzNGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgKQEAgLTMxLDYgKzMx
LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5UmVz
cG9uc2VIZWFkZXJzLmgiCisjaW5jbHVkZSAiQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmgiCiAj
aW5jbHVkZSAiRmV0Y2hPcHRpb25zLmgiCiAjaW5jbHVkZSAiSFRUUEhlYWRlck5hbWVzLmgiCiAj
aW5jbHVkZSAiU2VydmljZVdvcmtlclR5cGVzLmgiCkBAIC0xNTEsNyArMTUyLDcgQEAgc3RydWN0
IFJlc291cmNlTG9hZGVyT3B0aW9ucyA6IHB1YmxpYyBGZXRjaE9wdGlvbnMgewogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKICAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI7CiAjZW5kaWYK
LSAgICBIYXNoU2V0PEhUVFBIZWFkZXJOYW1lLCBXVEY6OkludEhhc2g8SFRUUEhlYWRlck5hbWU+
LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPEhUVFBIZWFkZXJOYW1lPj4gaHR0cEhlYWRlcnNU
b0tlZXA7CisgICAgSFRUUEhlYWRlck5hbWVTZXQgaHR0cEhlYWRlcnNUb0tlZXA7CiAgICAgT3B0
aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzPiBjc3BSZXNwb25zZUhl
YWRlcnM7CiAgICAgdW5zaWduZWQgbWF4UmVkaXJlY3RDb3VudCB7IDIwIH07CiAKQEAgLTE3NSwz
ICsxNzYsMTYgQEAgc3RydWN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyA6IHB1YmxpYyBGZXRjaE9w
dGlvbnMgewogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsK
KwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpTZXJ2aWNlV29ya2Vyc01v
ZGU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2Vyc01vZGUsCisgICAgICAgIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJzTW9kZTo6
QWxsLAorICAgICAgICBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vyc01vZGU6Ok5vbmUsCisgICAgICAg
IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJzTW9kZTo6T25seQorICAgID47Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3JlYXRlLWh0dHAtaGVhZGVyLW5hbWUtdGFibGUgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NyZWF0ZS1odHRwLWhlYWRlci1uYW1lLXRhYmxlCmluZGV4IDY0N2NkZDgyNDJmYWY3
ODVlMDIzMTQzNGQwMDkwZTZjMzk3NzNkYWQuLjQzOWRiNjhjMzJjNDNlMDgzYjAwMDY3OGQ3MmNl
MzU5ZGFkM2UyOWYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3JlYXRlLWh0dHAtaGVhZGVyLW5hbWUtdGFibGUKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jcmVhdGUtaHR0cC1oZWFkZXItbmFtZS10YWJsZQpAQCAtMjMzLDYgKzIzMywy
OCBAQCBXRUJDT1JFX0VYUE9SVCBTdHJpbmdWaWV3IGh0dHBIZWFkZXJOYW1lU3RyaW5nKEhUVFBI
ZWFkZXJOYW1lKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCituYW1lc3BhY2UgV1RGIHsK
KwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpIVFRQSGVhZGVyTmFtZT4g
eworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OkhUVFBI
ZWFkZXJOYW1lLAorJycnKQorCitpc19maXJzdCA9IFRydWUKK2ZvciBodHRwX2hlYWRlcl9uYW1l
IGluIGh0dHBfaGVhZGVyX25hbWVzOgorICAgIGlmIGlzX2ZpcnN0OgorICAgICAgICBpc19maXJz
dCA9IEZhbHNlCisgICAgZWxzZToKKyAgICAJaGVhZGVyX2ZpbGUud3JpdGUoJyxcbicpCisKKyAg
ICBoZWFkZXJfZmlsZS53cml0ZSgnICAgICAgICBXZWJDb3JlOjpIVFRQSGVhZGVyTmFtZTo6JXMn
ICUgaHR0cF9oZWFkZXJfbmFtZV90b19pZFtodHRwX2hlYWRlcl9uYW1lXSkKKworaGVhZGVyX2Zp
bGUud3JpdGUoJycnCisgICAgPjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCiAjZW5kaWYg
Ly8gSFRUUEhlYWRlck5hbWVzX2gKICcnJykKIGhlYWRlcl9maWxlLmNsb3NlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXgg
OWJiNjZhYjI4ZTA3NWUwNzAwY2YzYzc2OWNlM2NlYjJmMzZiODYwMC4uMzcxODg2MGUzMTg2OWM4
YWQ0Y2NiNWZiOGE0NzdiZmU0M2E3OGE1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTk3NCw2ICs5NzQsMjEgQEAgdm9p
ZCBTV1NlcnZlcjo6Y3JlYXRlQ29udGV4dENvbm5lY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHJlZ2lzdHJhYmxlRG9tYWkKICAgICBtX2NyZWF0ZUNvbnRleHRDb25uZWN0aW9uQ2FsbGJh
Y2socmVnaXN0cmFibGVEb21haW4pOwogfQogCitib29sIFNXU2VydmVyOjpjYW5IYW5kbGVTY2hl
bWUoU3RyaW5nVmlldyBzY2hlbWUpIGNvbnN0Cit7CisgICAgaWYgKHNjaGVtZS5pc051bGwoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKHNjaGVtZS5zdWJzdHJpbmcoMCwgNCksICJodHRwIikpIHsKKyAgICAgICAgaWYgKHNj
aGVtZS5sZW5ndGgoKSA9PSA0KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlm
IChzY2hlbWUubGVuZ3RoKCkgPT0gNSAmJiBpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKHNjaGVt
ZVs0XSwgJ3MnKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVy
biBtX3JlZ2lzdGVyZWRTY2hlbWVzLmNvbnRhaW5zKHNjaGVtZS50b1N0cmluZ1dpdGhvdXRDb3B5
aW5nKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmgKaW5kZXggNDYwMTMxNzYxNmM4MTY3NDhkMjA4MDBmMjYwYjM1Mjg1NzQ4
ODE3MC4uZTNlYzFiZWI0NjJkMWM0ZWQwZDcwMDMyZWNmMmFjMmUxNjZkZWI1MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaApAQCAtMTY0
LDcgKzE2NCw3IEBAIHB1YmxpYzoKICAgICBDb25uZWN0aW9uKiBjb25uZWN0aW9uKFNXU2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0
aW9ucy5nZXQoaWRlbnRpZmllcik7IH0KIAogICAgIGNvbnN0IEhhc2hNYXA8U1dTZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPENvbm5lY3Rpb24+PiYgY29ubmVjdGlv
bnMoKSBjb25zdCB7IHJldHVybiBtX2Nvbm5lY3Rpb25zOyB9Ci0gICAgY29uc3QgSGFzaFNldDxT
dHJpbmc+IHJlZ2lzdGVyZWRTY2hlbWVzKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RlcmVkU2No
ZW1lczsgfQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY2FuSGFuZGxlU2NoZW1lKFN0cmluZ1Zp
ZXcpIGNvbnN0OwogCiAgICAgU1dPcmlnaW5TdG9yZSYgb3JpZ2luU3RvcmUoKSB7IHJldHVybiBt
X29yaWdpblN0b3JlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCmluZGV4IDc3OGFlN2Q2YzgzMzc3
ZTdkMWU0MmZlZDcyMGMzM2M3NTdmZTJkMWYuLjZkN2NkYTA1ZmY3OTI2Njg5MTRhZThjNGRjYmY3
MGFkMzllODg5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcApAQCAtMjU5LDcgKzI1OSw3IEBAIHZv
aWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2IoY29uc3QgU2VydmljZVdvcmtlckpv
YkRhdGEmIGpvYikKIHsKICAgICBBU1NFUlQoam9iLnR5cGUgPT0gU2VydmljZVdvcmtlckpvYlR5
cGU6OlJlZ2lzdGVyKTsKIAotICAgIGlmICghc2hvdWxkVHJlYXRBc1BvdGVudGlhbGx5VHJ1c3R3
b3J0aHkoam9iLnNjcmlwdFVSTCkgJiYgIW1fc2VydmVyLnJlZ2lzdGVyZWRTY2hlbWVzKCkuY29u
dGFpbnMoam9iLnNjcmlwdFVSTC5wcm90b2NvbCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkp
CisgICAgaWYgKCFzaG91bGRUcmVhdEFzUG90ZW50aWFsbHlUcnVzdHdvcnRoeShqb2Iuc2NyaXB0
VVJMKSAmJiAhbV9zZXJ2ZXIuY2FuSGFuZGxlU2NoZW1lKGpvYi5zY3JpcHRVUkwucHJvdG9jb2wo
KSkpCiAgICAgICAgIHJldHVybiByZWplY3RDdXJyZW50Sm9iKEV4Y2VwdGlvbkRhdGEgeyBTZWN1
cml0eUVycm9yLCAiU2NyaXB0IFVSTCBpcyBub3QgcG90ZW50aWFsbHkgdHJ1c3R3b3J0aHkiX3Mg
fSk7CiAKICAgICAvLyBJZiB0aGUgb3JpZ2luIG9mIGpvYidzIHNjcmlwdCB1cmwgaXMgbm90IGpv
YidzIHJlZmVycmVyJ3Mgb3JpZ2luLCB0aGVuOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
TWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXggZjdjZDE4
YmQyOTIzM2I4NThmZTdjN2RkMzc1YTlhOTk2M2E2OTI2ZS4uMWUwNmU2MjYwY2QyZDk0ZTI0ODA4
ZWI1N2YwNDI3MGYxMzUzYTQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC0xOTAsNyArMTkwLDYg
QEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KICAgICBXZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJveHkubWVzc2FnZXMuaW4KIAotICAgIFdlYlByb2Nlc3MvU3RvcmFn
ZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gubWVzc2FnZXMuaW4KICAgICBXZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAgICAgV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCAyZTQ3NjYw
ODU0MDNkNDIwN2YyYmYxNzJlOTljNzg0NjkwYTljY2UxLi5mMWFkYWQ2MjY5ZDAxMmNhYjFkZDcy
YjU5MDUyNThlZjkwOWY5NWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3Vy
Y2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1p
bnB1dC54Y2ZpbGVsaXN0CkBAIC0xMDUsNyArMTA1LDYgQEAgJChQUk9KRUNUX0RJUikvV2ViUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nl
c3NDb25uZWN0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5Lm1lc3NhZ2VzLmluCi0kKFBST0pFQ1RfRElSKS9XZWJQcm9j
ZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLm1lc3NhZ2VzLmluCiAkKFBST0pF
Q1RfRElSKS9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvVXNlckNv
bnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCBiZDlkZDdmNjMzYzE3
YmNmMjk5MDg3N2YxZGUzYWFlNGE4ZmI0N2FjLi4xYzVkMjE0ZDAwNzFkMjY4NGZkY2M4YjhlNGFj
OWM2NWJkOTdkYjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0
LnhjZmlsZWxpc3QKQEAgLTgwLDggKzgwLDYgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZVdlYkluc3Bl
Y3RvclVJTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvU2VjSXRlbVNoaW1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1NlY0l0ZW1TaGltUHJveHlNZXNzYWdlcy5o
Ci0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TZXJ2aWNlV29y
a2VyQ2xpZW50RmV0Y2hNZXNzYWdlUmVjZWl2ZXIuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlcy5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvU2VydmljZVdvcmtlckZldGNoVGFza01lc3NhZ2VzLmgKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1NtYXJ0TWFnbmlmaWNh
dGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1h
a2UKaW5kZXggOWRlNzA0MjY2YWZlZTUxMzZlNjVlODQ3ODFiNWEwMjUyNTE1N2FjOS4uYmFlN2Mz
MTllNDc2NDQ1YTljZTM2ZTYyZDc2ZWZlZGRmNjZhYjEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMubWFrZQpAQCAtMTMyLDcgKzEzMiw2IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFJl
bW90ZVdlYkluc3BlY3RvclByb3h5IFwKICAgICBSZW1vdGVXZWJJbnNwZWN0b3JVSSBcCiAgICAg
U2VjSXRlbVNoaW1Qcm94eSBcCi0gICAgU2VydmljZVdvcmtlckNsaWVudEZldGNoIFwKICAgICBT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrIFwKICAgICBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVy
IFwKICAgICBTdG9yYWdlQXJlYU1hcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4
IDI0N2M3MWFlZWE4MWZkMjAzM2FhNjc3MDIwZDI0YmY0N2YzM2QyYTkuLmM4YTA3NjY3OTYyOWFi
YzI0ZGY1ZjY1M2E0ODMxNzMxZGIzYzc5OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CkBAIC00MDUsOSArNDA1LDEzIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OnNjaGVkdWxlUmVzb3VyY2VMb2FkKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhCiAgICAgUkVMRUFT
RV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIEFTU0VSVCghbV9uZXR3b3JrUmVzb3Vy
Y2VMb2FkZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKIAotICAgIGF1dG8gbG9hZGVyID0gTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpjcmVhdGUoV1RGTW92ZShsb2FkUGFyYW1ldGVycyksICp0aGlz
KTsKLSAgICBtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMuYWRkKGlkZW50aWZpZXIsIGxvYWRlci5j
b3B5UmVmKCkpOworICAgIGF1dG8mIGxvYWRlciA9IG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5h
ZGQoaWRlbnRpZmllciwgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjcmVhdGUoV1RGTW92ZShsb2Fk
UGFyYW1ldGVycyksICp0aGlzKSkuaXRlcmF0b3ItPnZhbHVlOworCisjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQorICAgIGxvYWRlci0+c3RhcnRXaXRoU2VydmljZVdvcmtlcihtX3N3Q29ubmVj
dGlvbi5nZXQoKSk7CisjZWxzZQogICAgIGxvYWRlci0+c3RhcnQoKTsKKyNlbmRpZgogfQogCiB2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwZXJmb3JtU3luY2hyb25vdXNMb2Fk
KE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMsIE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6
RGVsYXllZFJlcGx5JiYgcmVwbHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4IGUy
OGM3ZDE0YmQxMGE0Yzc0YTc0YzU0ZjE0NjJkYjU5NDIzMDEzYzUuLjhkYmQyNWU2ZTYwNjM4MmFh
MGRhYzAxZjFlODBiOWYxNzhkOTM0NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCkBA
IC0xMDcsNiArMTA3LDEyIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVu
Y29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBmcmFtZUFu
Y2VzdG9yT3JpZ2luczsKICAgICBlbmNvZGVyIDw8IGlzSFRUUFNVcGdyYWRlRW5hYmxlZDsKIAor
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBlbmNvZGVyIDw8IHNlcnZpY2VXb3JrZXJz
TW9kZTsKKyAgICBlbmNvZGVyIDw8IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
OworICAgIGVuY29kZXIgPDwgaHR0cEhlYWRlcnNUb0tlZXA7CisjZW5kaWYKKwogI2lmIEVOQUJM
RShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgZW5jb2RlciA8PCBtYWluRG9jdW1lbnRVUkw7CiAg
ICAgZW5jb2RlciA8PCB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwpAQCAtMjQyLDcg
KzI0OCwyNyBAQCBPcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycz4gTmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29kZShJUAogICAgIGlmICghaXNIVFRQU1VwZ3Jh
ZGVFbmFibGVkKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIHJlc3VsdC5pc0hU
VFBTVXBncmFkZUVuYWJsZWQgPSAqaXNIVFRQU1VwZ3JhZGVFbmFibGVkOwotICAgIAorCisjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJzTW9kZT4g
c2VydmljZVdvcmtlcnNNb2RlOworICAgIGRlY29kZXIgPj4gc2VydmljZVdvcmtlcnNNb2RlOwor
ICAgIGlmICghc2VydmljZVdvcmtlcnNNb2RlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIHJlc3VsdC5zZXJ2aWNlV29ya2Vyc01vZGUgPSAqc2VydmljZVdvcmtlcnNNb2RlOwor
CisgICAgT3B0aW9uYWw8T3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXI+PiBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+
IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOworICAgIGlmICghc2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgcmVzdWx0LnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyID0gKnNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOworCisgICAgT3B0aW9uYWw8SFRUUEhlYWRl
ck5hbWVTZXQ+IGh0dHBIZWFkZXJzVG9LZWVwOworICAgIGRlY29kZXIgPj4gaHR0cEhlYWRlcnNU
b0tlZXA7CisgICAgaWYgKCFodHRwSGVhZGVyc1RvS2VlcCkKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXN1bHQuaHR0cEhlYWRlcnNUb0tlZXAgPSBXVEZNb3ZlKCpodHRwSGVh
ZGVyc1RvS2VlcCk7CisjZW5kaWYKKwogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubWFpbkRvY3VtZW50VVJMKSkKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaAppbmRleCAxMjAzNDcw
NGRhOTI3YjVhMmZjMWI1Y2VmZTk5YmJmODJiZmRmNTc0Li5lODdkYzdhY2FmNTEzN2VhYWE1NTcz
MThlNDVhZDQ5MjI5YjA4ZTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCkBAIC0yOSw2ICsy
OSw3IEBACiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIlVzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRTZWN1
cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmln
aW5BY2Nlc3NDb250cm9sLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GZXRjaE9wdGlvbnMuaD4KICNp
bmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogCkBAIC02MCw2ICs2MSwxMiBAQCBwdWJsaWM6CiAgICAg
VmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+IGZyYW1lQW5jZXN0b3JPcmln
aW5zOwogICAgIGJvb2wgaXNIVFRQU1VwZ3JhZGVFbmFibGVkIHsgZmFsc2UgfTsKIAorI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vyc01vZGUgc2Vy
dmljZVdvcmtlcnNNb2RlIHsgV2ViQ29yZTo6U2VydmljZVdvcmtlcnNNb2RlOjpOb25lIH07Cisg
ICAgT3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+
IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOworICAgIFdlYkNvcmU6OkhUVFBI
ZWFkZXJOYW1lU2V0IGh0dHBIZWFkZXJzVG9LZWVwOworI2VuZGlmCisKICNpZiBFTkFCTEUoQ09O
VEVOVF9FWFRFTlNJT05TKQogICAgIFVSTCBtYWluRG9jdW1lbnRVUkw7CiAgICAgT3B0aW9uYWw8
VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcj4gdXNlckNvbnRlbnRDb250cm9sbGVySWRl
bnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBmYjM3MmQ3OWRlY2I5NmNlYTUxYjdjZTQzMTNmZjQ2
ODExYzE5ZGJkLi45MmFmNzFlMTQ3MDNjNTg0NTdhOWMzZDQ0ODk5ZDVlYThlMTZhZDgwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwCkBAIC0zNzksNiArMzc5LDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
OjphYm9ydCgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCisgICAgaWYgKGF1dG8gdGFzayA9IFdURk1vdmUobV9zZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrKSkKKyAgICAgICAgdGFzay0+Y2FuY2VsRnJvbUNsaWVudCgpOworI2VuZGlmCisKICAgICBp
ZiAobV9uZXR3b3JrTG9hZCkgewogICAgICAgICBpZiAoY2FuVXNlQ2FjaGUobV9uZXR3b3JrTG9h
ZC0+Y3VycmVudFJlcXVlc3QoKSkpIHsKICAgICAgICAgICAgIC8vIFdlIG1pZ2h0IGFscmVhZHkg
aGF2ZSB1c2VkIGRhdGEgZnJvbSB0aGlzIGluY29tcGxldGUgbG9hZC4gRW5zdXJlIG9sZGVyIHZl
cnNpb25zIGRvbid0IHJlbWFpbiBpbiB0aGUgY2FjaGUgYWZ0ZXIgY2FuY2VsLgpAQCAtNjEyLDgg
KzYxNywxNiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbExvYWRpbmcoY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAgICAgaWYgKGlzU3luY2hyb25vdXMoKSkgewogICAg
ICAgICBtX3N5bmNocm9ub3VzTG9hZERhdGEtPmVycm9yID0gZXJyb3I7CiAgICAgICAgIHNlbmRS
ZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KCptX3N5bmNocm9ub3VzTG9hZERhdGEsIG51bGxwdHIp
OwotICAgIH0gZWxzZSBpZiAoYXV0byogY29ubmVjdGlvbiA9IG1lc3NhZ2VTZW5kZXJDb25uZWN0
aW9uKCkpCisgICAgfSBlbHNlIGlmIChhdXRvKiBjb25uZWN0aW9uID0gbWVzc2FnZVNlbmRlckNv
bm5lY3Rpb24oKSkgeworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICAgICAgaWYgKG1f
c2VydmljZVdvcmtlckZldGNoVGFzaykKKyAgICAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGYWlsU2VydmljZVdvcmtlckxvYWQoZXJyb3Ip
LCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZhaWxS
ZXNvdXJjZUxvYWQoZXJyb3IpLCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpKTsKKyNlbHNl
CiAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpE
aWRGYWlsUmVzb3VyY2VMb2FkKGVycm9yKSwgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSk7
CisjZW5kaWYKKyAgICB9CiAKICAgICBjbGVhbnVwKExvYWRSZXN1bHQ6OkZhaWx1cmUpOwogfQpA
QCAtNzQ3LDYgKzc2MCwxMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmVzdGFydE5l
dHdvcmtMb2FkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIG5ld1JlcQogCiB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
JiYgbmV3UmVxdWVzdCwgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscykKIHsK
KyAgICBpZiAobV9zZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKSB7CisgICAgICAgIG1fc2VydmljZVdv
cmtlckZldGNoVGFzay0+Y29udGludWVGZXRjaFRhc2tXaXRoKFdURk1vdmUobmV3UmVxdWVzdCkp
OworICAgICAgICByZXR1cm47CisgICAgfQogICAgIGlmIChtX3Nob3VsZFJlc3RhcnRMb2FkKSB7
CiAgICAgICAgIG1fc2hvdWxkUmVzdGFydExvYWQgPSBmYWxzZTsKIApAQCAtNzkyLDYgKzgwOSwx
MSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVXaWxsU2VuZFJlcXVlc3Qo
UmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdAogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKQogeworICAgIGlmIChtX3NlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2spIHsKKyAgICAgICAgbV9zZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLT5jb250aW51
ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAg
ICBpZiAobV9jYWNoZUVudHJ5V2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKSB7
CiAgICAgICAgIHNlbmRSZXN1bHRGb3JDYWNoZUVudHJ5KFdURk1vdmUobV9jYWNoZUVudHJ5V2Fp
dGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKSk7CiAgICAgICAgIGNsZWFudXAoTG9h
ZFJlc3VsdDo6U3VjY2Vzcyk7CkBAIC0xMTk2LDYgKzEyMTgsMzAgQEAgYm9vbCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmlzQ3Jvc3NPcmlnaW5QcmVmZXRjaCgpIGNvbnN0CiAgICAgcmV0dXJuIHJl
cXVlc3QuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpQdXJwb3NlKSA9PSAicHJlZmV0
Y2giICYmICFtX3BhcmFtZXRlcnMuc291cmNlT3JpZ2luLT5jYW5SZXF1ZXN0KHJlcXVlc3QudXJs
KCkpOwogfQogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQordm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OnN0YXJ0V2l0aFNlcnZpY2VXb3JrZXIoV2ViU1dTZXJ2ZXJDb25uZWN0aW9uKiBz
d0Nvbm5lY3Rpb24pCit7CisgICAgQVNTRVJUKCFtX3NlcnZpY2VXb3JrZXJGZXRjaFRhc2spOwor
ICAgIG1fc2VydmljZVdvcmtlckZldGNoVGFzayA9IHN3Q29ubmVjdGlvbiA/IHN3Q29ubmVjdGlv
bi0+Y3JlYXRlRmV0Y2hUYXNrKCp0aGlzKSA6IG51bGxwdHI7CisgICAgaWYgKG1fc2VydmljZVdv
cmtlckZldGNoVGFzaykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fcGFyYW1ldGVycy5z
ZXJ2aWNlV29ya2Vyc01vZGUgPT0gU2VydmljZVdvcmtlcnNNb2RlOjpPbmx5KSB7CisgICAgICAg
IHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpTZXJ2aWNlV29ya2VyRGlkTm90SGFu
ZGxlIHsgfSwgaWRlbnRpZmllcigpKTsKKyAgICAgICAgYWJvcnQoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICBzdGFydCgpOworfQorCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
c2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSgpCit7CisgICAgbV9zZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrID0gbnVsbHB0cjsKKyAgICBzdGFydCgpOworfQorCisjZW5kaWYKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CiAKICN1bmRlZiBSRUxFQVNFX0xPR19JRl9BTExPV0VECmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCBk
NjUwNzJiNzJiZDQxMzE0MWEwNmIyODdjNDUyNjliZTQyYWYwNzc2Li43MWY4MWJiNDYyNWQ4MzQ1
YzY0ODA3MjdmOGE2NTRjMzY3Y2Y3ZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKQEAgLTUxLDYgKzUxLDggQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKIGNs
YXNzIE5ldHdvcmtMb2FkOwogY2xhc3MgTmV0d29ya0xvYWRDaGVja2VyOworY2xhc3MgU2Vydmlj
ZVdvcmtlckZldGNoVGFzazsKK2NsYXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKIAogbmFtZXNw
YWNlIE5ldHdvcmtDYWNoZSB7CiBjbGFzcyBFbnRyeTsKQEAgLTg4LDcgKzkwLDggQEAgcHVibGlj
OgogICAgIFJlc291cmNlTG9hZElkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJu
IG1fcGFyYW1ldGVycy5pZGVudGlmaWVyOyB9CiAgICAgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRDsgfQogICAg
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1l
dGVycy53ZWJQYWdlSUQ7IH0KLSAgICAKKyAgICBjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycyYgcGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVyczsgfQorCiAg
ICAgTmV0d29ya0NhY2hlOjpHbG9iYWxGcmFtZUlEIGdsb2JhbEZyYW1lSUQoKSB7IHJldHVybiB7
IG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCwgcGFnZUlEKCksIGZyYW1lSUQoKSB9OyB9CiAK
ICAgICBzdHJ1Y3QgU3luY2hyb25vdXNMb2FkRGF0YTsKQEAgLTEyMiw2ICsxMjUsMTEgQEAgcHVi
bGljOgogCiAgICAgYm9vbCBpc0tlcHRBbGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNLZXB0QWxp
dmU7IH0KIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICB2b2lkIHN0YXJ0V2l0aFNl
cnZpY2VXb3JrZXIoV2ViU1dTZXJ2ZXJDb25uZWN0aW9uKik7CisgICAgdm9pZCBzZXJ2aWNlV29y
a2VyRGlkTm90SGFuZGxlKCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiwgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MmLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OkRlbGF5ZWRSZXBseSYmKTsKIApAQCAtMjIwLDYgKzIy
OCw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzS2VwdEFsaXZlIHsgZmFsc2UgfTsKIAogICAg
IE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IG1fbmV0d29ya0FjdGl2aXR5VHJhY2tl
cjsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgc3RkOjp1bmlxdWVfcHRyPFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s+IG1fc2VydmljZVdvcmtlckZldGNoVGFzazsKKyNlbmRpZgogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNo
VGFzay5jcHAKaW5kZXggODM0YjU2OWU0MjI3NWYxMzQ4N2VjNzdkZWExNWUwYmMzZjBhYTI1Zi4u
MGU1Zjc3OGEzMWRjMDFiZjNjMjFlNjI3NTgwYjM4ODBmZjA2Mjc1OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRj
aFRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcApAQCAtMzIsMTAgKzMyLDE0IEBACiAjaW5jbHVk
ZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkZvcm1EYXRhUmVmZXJlbmNlLmgiCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3Nh
Z2VzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbmNsdWRlICJOZXR3b3JrUmVz
b3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAj
aW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCi0jaW5jbHVkZSAiV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Ny
b3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oPgogCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKG1fc2Vzc2lvbklELmlzQWx3YXlzT25Mb2dnaW5n
QWxsb3dlZCgpLCBTZXJ2aWNlV29ya2VyLCAiJXAgLSBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjoi
IGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKICNkZWZpbmUgUkVMRUFTRV9MT0dfRVJST1JfSUZf
QUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1JfSUYobV9zZXNzaW9uSUQuaXNBbHdh
eXNPbkxvZ2dpbmdBbGxvd2VkKCksIFNlcnZpY2VXb3JrZXIsICIlcCAtIFNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2s6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQpAQCAtNDQsODAgKzQ4LDEzOSBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2soUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJTV1NlcnZlckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENvbm5lY3Rpb24sIEZldGNoSWRlbnRpZmllciBm
ZXRjaElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBTZWNvbmRzIHRpbWVvdXQpCitTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgTmV0d29ya1Jlc291cmNl
TG9hZGVyJiBsb2FkZXIsIFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKQogICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQotICAgICwgbV9jb25uZWN0aW9u
KG1ha2VXZWFrUHRyKGNvbm5lY3Rpb24pKQotICAgICwgbV9jb250ZXh0Q29ubmVjdGlvbihjb250
ZXh0Q29ubmVjdGlvbikKLSAgICAsIG1faWRlbnRpZmllciB7IGNvbm5lY3Rpb24uaWRlbnRpZmll
cigpLCBmZXRjaElkZW50aWZpZXIgfQorICAgICwgbV9sb2FkZXIobG9hZGVyKQorICAgICwgbV9m
ZXRjaElkZW50aWZpZXIoV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQorICAg
ICwgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcihzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
cikKICAgICAsIG1fc2VydmljZVdvcmtlcklkZW50aWZpZXIoc2VydmljZVdvcmtlcklkZW50aWZp
ZXIpCi0gICAgLCBtX3RpbWVvdXQodGltZW91dCkKICAgICAsIG1fdGltZW91dFRpbWVyKCp0aGlz
LCAmU2VydmljZVdvcmtlckZldGNoVGFzazo6dGltZW91dFRpbWVyRmlyZWQpCiB7Ci0gICAgbV90
aW1lb3V0VGltZXIuc3RhcnRPbmVTaG90KG1fdGltZW91dCk7CisgICAgbV90aW1lb3V0VGltZXIu
c3RhcnRPbmVTaG90KGxvYWRlci5jb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkubmV0d29ya1Byb2Nl
c3MoKS5zZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0KCkpOwogfQogCi12b2lkIFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKQorU2VydmljZVdvcmtlckZldGNoVGFzazo6flNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2soKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZWRp
cmVjdFJlc3BvbnNlOiAlcyIsIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIG1fdGltZW91dFRpbWVyLnN0b3AoKTsKKyAgICBp
ZiAobV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbikKKyAgICAgICAgbV9zZXJ2aWNlV29ya2VyQ29u
bmVjdGlvbi0+dW5yZWdpc3RlckZldGNoKCp0aGlzKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
TWVzc2FnZT4gYm9vbCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpzZW5kVG9TZXJ2aWNlV29ya2Vy
KE1lc3NhZ2UmJiBtZXNzYWdlKQoreworICAgIHJldHVybiBtX3NlcnZpY2VXb3JrZXJDb25uZWN0
aW9uID8gbV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbi0+aXBjQ29ubmVjdGlvbigpLnNlbmQoc3Rk
Ojpmb3J3YXJkPE1lc3NhZ2U+KG1lc3NhZ2UpLCAwKSA6IGZhbHNlOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBNZXNzYWdlPiBib29sIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnNlbmRUb0NsaWVu
dChNZXNzYWdlJiYgbWVzc2FnZSkKK3sKKyAgICByZXR1cm4gbV9sb2FkZXIuY29ubmVjdGlvblRv
V2ViUHJvY2VzcygpLmNvbm5lY3Rpb24oKS5zZW5kKHN0ZDo6Zm9yd2FyZDxNZXNzYWdlPihtZXNz
YWdlKSwgbV9sb2FkZXIuaWRlbnRpZmllcigpKTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrOjpzdGFydChXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIHNlcnZpY2VXb3Jr
ZXJDb25uZWN0aW9uKQoreworICAgIG1fc2VydmljZVdvcmtlckNvbm5lY3Rpb24gPSBtYWtlV2Vh
a1B0cihzZXJ2aWNlV29ya2VyQ29ubmVjdGlvbik7CisgICAgc2VydmljZVdvcmtlckNvbm5lY3Rp
b24ucmVnaXN0ZXJGZXRjaCgqdGhpcyk7CisKKyAgICBzdGFydEZldGNoKFJlc291cmNlUmVxdWVz
dCB7IG1fbG9hZGVyLm9yaWdpbmFsUmVxdWVzdCgpIH0sIHNlcnZpY2VXb3JrZXJDb25uZWN0aW9u
KTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpzdGFydEZldGNoKFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgc2Vydmlj
ZVdvcmtlckNvbm5lY3Rpb24pCit7CisgICAgbV9jdXJyZW50UmVxdWVzdCA9IFdURk1vdmUocmVx
dWVzdCk7CisKKyAgICBhdXRvJiBvcHRpb25zID0gbV9sb2FkZXIucGFyYW1ldGVycygpLm9wdGlv
bnM7CisgICAgYXV0byByZWZlcnJlciA9IG1fY3VycmVudFJlcXVlc3QuaHR0cFJlZmVycmVyKCk7
CisKKyAgICAvLyBXZSBhcmUgaW50ZXJjZXB0aW5nIGZldGNoIGNhbGxzIGFmdGVyIGdvaW5nIHRo
cm91Z2ggdGhlIEhUVFAgbGF5ZXIsIHdoaWNoIG1heSBhZGQgc29tZSBzcGVjaWZpYyBoZWFkZXJz
LgorICAgIGNsZWFuSFRUUFJlcXVlc3RIZWFkZXJzRm9yQWNjZXNzQ29udHJvbChtX2N1cnJlbnRS
ZXF1ZXN0LCBtX2xvYWRlci5wYXJhbWV0ZXJzKCkuaHR0cEhlYWRlcnNUb0tlZXApOworCisgICAg
Ym9vbCBpc1NlbnQgPSBzZW5kVG9TZXJ2aWNlV29ya2VyKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbjo6U3RhcnRGZXRjaCB7IG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIsIG1fc2VydmljZVdvcmtlcklkZW50aWZpZXIsIG1fZmV0Y2hJZGVudGlmaWVyLCBtX2N1cnJl
bnRSZXF1ZXN0LCBvcHRpb25zLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHsgbV9jdXJyZW50UmVx
dWVzdC5odHRwQm9keSgpIH0sIHJlZmVycmVyIH0pOworICAgIEFTU0VSVF9VTlVTRUQoaXNTZW50
LCBpc1NlbnQpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVS
ZWRpcmVjdFJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkKK3sKKyAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZTogJXMiLCBtX2Zl
dGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgbV93YXNI
YW5kbGVkID0gdHJ1ZTsKLSAgICBpZiAobV9jb25uZWN0aW9uKQotICAgICAgICBtX2Nvbm5lY3Rp
b24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZVJl
ZGlyZWN0UmVzcG9uc2UgeyByZXNwb25zZSB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVy
KTsKKworICAgIHJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OlNl
cnZpY2VXb3JrZXIpOworICAgIGF1dG8gbmV3UmVxdWVzdCA9IG1fY3VycmVudFJlcXVlc3QucmVk
aXJlY3RlZFJlcXVlc3QocmVzcG9uc2UsIG1fbG9hZGVyLnBhcmFtZXRlcnMoKS5zaG91bGRDbGVh
clJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KTsKKworICAgIHNlbmRUb0NsaWVudChNZXNz
YWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OldpbGxTZW5kUmVxdWVzdCB7IG5ld1JlcXVlc3QsIHJl
c3BvbnNlIH0pOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVS
ZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9vbCBuZWVkc0NvbnRp
bnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkKK3ZvaWQgU2VydmljZVdvcmtlckZldGNoVGFz
azo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgYm9vbCBu
ZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkKIHsKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6ICVzIiwgbV9pZGVudGlmaWVyLmZldGNo
SWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlOiAlcyIsIG1fZmV0Y2hJZGVudGlmaWVy
LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBtX3RpbWVvdXRUaW1lci5zdG9w
KCk7CiAgICAgbV93YXNIYW5kbGVkID0gdHJ1ZTsKLSAgICBpZiAobV9jb25uZWN0aW9uKQotICAg
ICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRj
aDo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG5lZWRzQ29udGludWVEaWRSZWNlaXZl
UmVzcG9uc2VNZXNzYWdlIH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOworCisgICAg
cmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6U2VydmljZVdvcmtl
cik7CisgICAgc2VuZFRvQ2xpZW50KE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVj
ZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VN
ZXNzYWdlIH0pOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxl
bmd0aCkKIHsKICAgICBBU1NFUlQoIW1fdGltZW91dFRpbWVyLmlzQWN0aXZlKCkpOwotICAgIGlm
IChtX2Nvbm5lY3Rpb24pCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2Vy
dmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRSZWNlaXZlRGF0YSB7IGRhdGEsIGVuY29kZWREYXRh
TGVuZ3RoIH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOworICAgIHNlbmRUb0NsaWVu
dChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVEYXRhIHsgSVBDOjpTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlIHsgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpIH0sIGVuY29k
ZWREYXRhTGVuZ3RoIH0pOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJl
Y2VpdmVGb3JtRGF0YShjb25zdCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiBmb3JtRGF0YSkKIHsK
ICAgICBBU1NFUlQoIW1fdGltZW91dFRpbWVyLmlzQWN0aXZlKCkpOwotICAgIGlmIChtX2Nvbm5l
Y3Rpb24pCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtl
ckNsaWVudEZldGNoOjpEaWRSZWNlaXZlRm9ybURhdGEgeyBmb3JtRGF0YSB9LCBtX2lkZW50aWZp
ZXIuZmV0Y2hJZGVudGlmaWVyKTsKKyAgICAvLyBGSVhNRTogQWxsb3cgV2ViUmVzb3VyY2VMb2Fk
ZXIgdG8gcmVjZWl2ZSBmb3JtIGRhdGEuCiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFz
azo6ZGlkRmluaXNoKCkKIHsKICAgICBBU1NFUlQoIW1fdGltZW91dFRpbWVyLmlzQWN0aXZlKCkp
OwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZpbmlzaEZldGNoOiBmZXRjaElkZW50
aWZpZXI6ICVzIiwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmluaXNoRmV0
Y2g6IGZldGNoSWRlbnRpZmllcjogJXMiLCBtX2ZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CiAgICAgbV90aW1lb3V0VGltZXIuc3RvcCgpOwotICAgIGlmICht
X2Nvbm5lY3Rpb24pCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoOjpEaWRGaW5pc2ggeyB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVu
dGlmaWVyKTsKKyAgICBzZW5kVG9DbGllbnQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpE
aWRGaW5pc2hSZXNvdXJjZUxvYWQgeyB7IH0gfSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckZl
dGNoVGFzazo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICBSRUxF
QVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJkaWRGYWlsRmV0Y2g6IGZldGNoSWRlbnRpZmllcjog
JXMiLCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKICAgICBtX3RpbWVvdXRUaW1lci5zdG9wKCk7Ci0gICAgaWYgKG1fY29ubmVjdGlv
bikKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xp
ZW50RmV0Y2g6OkRpZEZhaWwgeyBlcnJvciB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVy
KTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJkaWRGYWlsRmV0Y2g6IGZldGNo
SWRlbnRpZmllcjogJXMiLCBtX2ZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CisgICAgbV9sb2FkZXIuZGlkRmFpbExvYWRpbmcoZXJyb3IpOwogfQogCiB2b2lk
IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZE5vdEhhbmRsZSgpCiB7Ci0gICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgiZGlkTm90SGFuZGxlRmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMiLCBt
X2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWROb3RIYW5kbGVGZXRjaDogZmV0Y2hJ
ZGVudGlmaWVyOiAlcyIsIG1fZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKICAgICBtX3RpbWVvdXRUaW1lci5zdG9wKCk7Ci0gICAgaWYgKG1fY29ubmVjdGlv
bikKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xp
ZW50RmV0Y2g6OkRpZE5vdEhhbmRsZSB7IH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIp
OworICAgIGlmIChtX2xvYWRlci5wYXJhbWV0ZXJzKCkuc2VydmljZVdvcmtlcnNNb2RlID09IFNl
cnZpY2VXb3JrZXJzTW9kZTo6T25seSkgeworICAgICAgICBzZW5kVG9DbGllbnQoTWVzc2FnZXM6
OldlYlJlc291cmNlTG9hZGVyOjpTZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlIHsgfSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgbV9sb2FkZXIuc2VydmljZVdvcmtlckRpZE5vdEhhbmRs
ZSgpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmNhbmNlbEZyb21DbGllbnQo
KQoreworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNhbmNlbEZyb21DbGllbnQ6IGZldGNo
SWRlbnRpZmllcjogJXMiLCBtX2ZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CisgICAgc2VuZFRvU2VydmljZVdvcmtlcihNZXNzYWdlczo6V2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb246OkNhbmNlbEZldGNoIHsgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciwgbV9zZXJ2aWNlV29ya2VySWRlbnRpZmllciwgbV9mZXRjaElkZW50aWZpZXIgfSk7Cit9
CisKK3ZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6Y29udGludWVEaWRSZWNlaXZlRmV0Y2hS
ZXNwb25zZSgpCit7CisgICAgc2VuZFRvU2VydmljZVdvcmtlcihNZXNzYWdlczo6V2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb246OkNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UgeyBt
X3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBt
X2ZldGNoSWRlbnRpZmllciB9KTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpj
b250aW51ZUZldGNoVGFza1dpdGgoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKK3sKKyAgICBp
ZiAoIW1fc2VydmljZVdvcmtlckNvbm5lY3Rpb24pIHsKKyAgICAgICAgbV9sb2FkZXIuc2Vydmlj
ZVdvcmtlckRpZE5vdEhhbmRsZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHN0YXJ0
RmV0Y2goV1RGTW92ZShyZXF1ZXN0KSwgKm1fc2VydmljZVdvcmtlckNvbm5lY3Rpb24pOwogfQog
CiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnRpbWVvdXRUaW1lckZpcmVkKCkKIHsKLSAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ0aW1lb3V0VGltZXJGaXJlZDogZmV0Y2hJZGVudGlm
aWVyOiAlcyIsIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOwotICAgIGRpZE5vdEhhbmRsZSgpOwotICAgIG1fY29udGV4dENvbm5lY3Rp
b24uZmV0Y2hUYXNrVGltZWRPdXQoKnRoaXMpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
InRpbWVvdXRUaW1lckZpcmVkOiBmZXRjaElkZW50aWZpZXI6ICVzIiwgbV9mZXRjaElkZW50aWZp
ZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIGlmIChtX3NlcnZpY2VXb3Jr
ZXJDb25uZWN0aW9uKQorICAgICAgICBtX3NlcnZpY2VXb3JrZXJDb25uZWN0aW9uLT5mZXRjaFRh
c2tUaW1lZE91dChzZXJ2aWNlV29ya2VySWRlbnRpZmllcigpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaAppbmRleCBkOGI5
ZDZmMjU2NjM4MzY3NzJmMjliOWY5Yjk5ZTBhMGUyNjM5NDVjLi5iZGZkNWU2OTM1OThkYzgwM2Zl
ZjM4NjRmMjY4ZWZiMWQ2NWFmZjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrLmgKQEAgLTI4LDEyICsyOCwxNSBAQAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAog
I2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+
CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
UmVzb3VyY2VFcnJvcjsKK2NsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVz
cG9uc2U7CiB9CiAKQEAgLTQ2LDgyICs0OSw1OSBAQCBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKK2Ns
YXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFdlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjsKIAotY2xhc3MgU2VydmljZVdvcmtlckZldGNoVGFzayB7CitjbGFzcyBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI7CitjbGFzcyBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CisK
K2NsYXNzIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2sgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U2Vy
dmljZVdvcmtlckZldGNoVGFzaz4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2soUEFMOjpTZXNzaW9uSUQsIFdlYlNXU2Vy
dmVyQ29ubmVjdGlvbiYsIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYsIFdlYkNvcmU6
OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNlY29u
ZHMgdGltZW91dCk7CisgICAgU2VydmljZVdvcmtlckZldGNoVGFzayhQQUw6OlNlc3Npb25JRCwg
TmV0d29ya1Jlc291cmNlTG9hZGVyJiwgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAgIH5TZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrKCk7CiAKLSAgICB2b2lkIGRpZE5vdEhhbmRsZSgpOworICAgIHZvaWQgc3Rh
cnQoV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7CisgICAgdm9pZCBjYW5jZWxGcm9t
Q2xpZW50KCk7CiAgICAgdm9pZCBmYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVy
cm9yKSB7IGRpZEZhaWwoZXJyb3IpOyB9CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKIAotICAgIHN0cnVjdCBJZGVudGlmaWVyIHsK
LSAgICAgICAgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBjb25uZWN0aW9u
SWRlbnRpZmllcjsKLSAgICAgICAgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRp
ZmllcjsKLSAgICAgICAgCi0gICAgICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAotICAgICAgICB7
Ci0gICAgICAgICAgICB1bnNpZ25lZCBoYXNoZXNbMl07Ci0gICAgICAgICAgICBoYXNoZXNbMF0g
PSBXVEY6OmludEhhc2goY29ubmVjdGlvbklkZW50aWZpZXIudG9VSW50NjQoKSk7Ci0gICAgICAg
ICAgICBoYXNoZXNbMV0gPSBXVEY6OmludEhhc2goZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkp
OwotICAgICAgICAgICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeShoYXNoZXMsIHNp
emVvZihoYXNoZXMpKTsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICBjb25zdCBJZGVudGlmaWVy
JiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9Ci0gICAgY29uc3Qg
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXImIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VySWRlbnRpZmllcjsgfQorICAgIHZvaWQg
Y29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSgpOworICAgIHZvaWQgY29udGludWVGZXRj
aFRhc2tXaXRoKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsKKworICAgIFdlYkNvcmU6OkZl
dGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2ZldGNoSWRl
bnRpZmllcjsgfQorICAgIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VySWRlbnRpZmll
cjsgfQorCisgICAgdm9pZCBkaWROb3RIYW5kbGUoKTsKKwogICAgIGJvb2wgd2FzSGFuZGxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fd2FzSGFuZGxlZDsgfQogCiBwcml2YXRlOgotICAgIHZvaWQgZGlk
UmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYp
OwotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJik7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsKICAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGludDY0X3Qg
ZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUZvcm1EYXRhKGNvbnN0IElQ
Qzo6Rm9ybURhdGFSZWZlcmVuY2UmKTsKICAgICB2b2lkIGRpZEZpbmlzaCgpOwogICAgIHZvaWQg
ZGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CisKKyAgICB2b2lkIHN0YXJ0
RmV0Y2goV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbiYpOworCiAgICAgdm9pZCB0aW1lb3V0VGltZXJGaXJlZCgpOwogCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgTWVzc2FnZT4gYm9vbCBzZW5kVG9TZXJ2aWNlV29ya2VyKE1lc3NhZ2UmJik7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWVzc2FnZT4gYm9vbCBzZW5kVG9DbGllbnQoTWVzc2Fn
ZSYmKTsKKwogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwotICAgIFdlYWtQdHI8V2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247Ci0gICAgV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uJiBtX2NvbnRleHRDb25uZWN0aW9uOwotICAgIElkZW50aWZpZXIgbV9pZGVu
dGlmaWVyOworICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlciYgbV9sb2FkZXI7CisgICAgV2Vha1B0
cjxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+IG1fc2VydmljZVdvcmtlckNvbm5lY3Rp
b247CisgICAgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyIG1fZmV0Y2hJZGVudGlmaWVyOworICAg
IFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgbV9zZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllcjsKICAgICBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBtX3NlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyOwotICAgIFNlY29uZHMgbV90aW1lb3V0OworICAgIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCBtX2N1cnJlbnRSZXF1ZXN0OwogICAgIFdlYkNvcmU6OlRpbWVyIG1f
dGltZW91dFRpbWVyOwogICAgIGJvb2wgbV93YXNIYW5kbGVkIHsgZmFsc2UgfTsKIH07CiAKLWlu
bGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU2VydmljZVdvcmtlckZldGNoVGFzazo6SWRlbnRp
ZmllciYgYSwgY29uc3QgU2VydmljZVdvcmtlckZldGNoVGFzazo6SWRlbnRpZmllciYgYikKLXsK
LSAgICByZXR1cm4gYS5jb25uZWN0aW9uSWRlbnRpZmllciA9PSBiLmNvbm5lY3Rpb25JZGVudGlm
aWVyICYmICBhLmZldGNoSWRlbnRpZmllciA9PSBiLmZldGNoSWRlbnRpZmllcjsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViS2l0Ci0KLQotbmFtZXNwYWNlIFdURiB7Ci0KLXN0cnVjdCBTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrSWRlbnRpZmllckhhc2ggewotICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNo
KGNvbnN0IFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6SWRlbnRpZmllciYga2V5KSB7
IHJldHVybiBrZXkuaGFzaCgpOyB9Ci0gICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgV2ViS2l0
OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpJZGVudGlmaWVyJiBhLCBjb25zdCBXZWJLaXQ6OlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s6OklkZW50aWZpZXImIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQot
ICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1
ZTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViS2l0OjpTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrOjpJZGVudGlmaWVyPiA6IEdlbmVyaWNIYXNoVHJhaXRzPFdlYktpdDo6U2Vy
dmljZVdvcmtlckZldGNoVGFzazo6SWRlbnRpZmllcj4gewotICAgIHN0YXRpYyBXZWJLaXQ6OlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s6OklkZW50aWZpZXIgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIHsg
fTsgfQotICAgIAotICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJLaXQ6
OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OklkZW50aWZpZXImIHNsb3QpIHsgc2xvdC5jb25uZWN0
aW9uSWRlbnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFdlYkNvcmU6OlNXU2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXJUeXBlPihzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4
KCkpOyB9Ci0gICAgCi0gICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgV2ViS2l0
OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpJZGVudGlmaWVyJiBzbG90KSB7IHJldHVybiBzbG90
LmNvbm5lY3Rpb25JZGVudGlmaWVyLnRvVUludDY0KCkgPT0gc3RkOjpudW1lcmljX2xpbWl0czx1
aW50NjRfdD46Om1heCgpOyB9Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxX
ZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OklkZW50aWZpZXI+IHsKLSAgICB1c2luZyBI
YXNoID0gU2VydmljZVdvcmtlckZldGNoVGFza0lkZW50aWZpZXJIYXNoOwotfTsKLQogfQogCiAj
ZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmNwcAppbmRleCA3OWUzMjY1Y2VkMWVhMjRlODc1YmU1MjBiNzkzMmU4NWI2NDAz
MTNmLi5jNmI3MjU4MmUwY2E4MjZiMWY0ZWJmYzgxOWZjMzljYWZlZGI4M2I0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMzMsMTYgKzMzLDE4IEBACiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgotI2luY2x1ZGUgIlNlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNl
TG9hZGVyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUg
IldlYlJlc291cmNlTG9hZGVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTV0NsaWVudENvbm5l
Y3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgog
I2luY2x1ZGUgIldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvRG9jdW1lbnRJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25E
YXRhLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lTY2hlbWVSZWdpc3RyeS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NXU2VydmVy
UmVnaXN0cmF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgpAQCAt
MTI2LDg2ICsxMjgsODkgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnVwZGF0ZVdvcmtl
clN0YXRlSW5DbGllbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgd28KICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJTV0NsaWVudENvbm5lY3Rpb246OlVwZGF0ZVdvcmtlclN0YXRlKHdvcmtlciwgc3Rh
dGUpKTsKIH0KIAotdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmNhbmNlbEZldGNoKFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyLCBGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyKQorc3RkOjp1bmlxdWVf
cHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+IFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y3JlYXRl
RmV0Y2hUYXNrKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYgbG9hZGVyKQogewotICAgIFNXU0VSVkVS
Q09OTkVDVElPTl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjYW5jZWxGZXRjaDogJXMiLCBmZXRj
aElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIGF1dG8qIHdv
cmtlciA9IHNlcnZlcigpLmFjdGl2ZVdvcmtlckZyb21SZWdpc3RyYXRpb25JRChzZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7Ci0gICAgaWYgKCF3b3JrZXIgfHwgIXdvcmtlci0+
aXNSdW5uaW5nKCkpCi0gICAgICAgIHJldHVybjsKKyAgICBpZiAoIWxvYWRlci5wYXJhbWV0ZXJz
KCkuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgYXV0byBzZXJ2aWNlV29ya2VySWRlbnRpZmllciA9IHdvcmtlci0+aWRl
bnRpZmllcigpOwotICAgIHNlcnZlcigpLnJ1blNlcnZpY2VXb3JrZXJJZk5lY2Vzc2FyeShzZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHRoaXMs
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXJdKGF1dG8qIGNvbnRleHRD
b25uZWN0aW9uKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKHdlYWtUaGlzICYmIGNvbnRleHRDb25u
ZWN0aW9uKQotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uJj4oKmNvbnRleHRDb25uZWN0aW9uKS5jYW5jZWxGZXRjaCh0aGlzLT5pZGVudGlmaWVy
KCksIGZldGNoSWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwotICAgIH0pOwot
fQorICAgIGlmIChsb2FkZXIucGFyYW1ldGVycygpLnNlcnZpY2VXb3JrZXJzTW9kZSA9PSBTZXJ2
aWNlV29ya2Vyc01vZGU6Ok5vbmUpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCi12b2lkIFdl
YlNXU2VydmVyQ29ubmVjdGlvbjo6Y29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZShTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllciwgRmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllcikKLXsKLSAgICBhdXRv
KiB3b3JrZXIgPSBzZXJ2ZXIoKS5hY3RpdmVXb3JrZXJGcm9tUmVnaXN0cmF0aW9uSUQoc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpOwotICAgIGlmICghd29ya2VyIHx8ICF3b3Jr
ZXItPmlzUnVubmluZygpKQotICAgICAgICByZXR1cm47CisgICAgaWYgKGlzUG90ZW50aWFsTmF2
aWdhdGlvbk9yU3VicmVzb3VyY2VSZXF1ZXN0KGxvYWRlci5wYXJhbWV0ZXJzKCkub3B0aW9ucy5k
ZXN0aW5hdGlvbikpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBzZXJ2aWNl
V29ya2VySWRlbnRpZmllciA9IHdvcmtlci0+aWRlbnRpZmllcigpOwotICAgIHNlcnZlcigpLnJ1
blNlcnZpY2VXb3JrZXJJZk5lY2Vzc2FyeShzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgW3dlYWtU
aGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHRoaXMsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBm
ZXRjaElkZW50aWZpZXJdKGF1dG8qIGNvbnRleHRDb25uZWN0aW9uKSBtdXRhYmxlIHsKLSAgICAg
ICAgaWYgKHdlYWtUaGlzICYmIGNvbnRleHRDb25uZWN0aW9uKQotICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJj4oKmNvbnRleHRDb25uZWN0aW9u
KS5jb250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKHRoaXMtPmlkZW50aWZpZXIoKSwgZmV0
Y2hJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgfSk7Ci19CisgICAg
aWYgKCFzZXJ2ZXIoKS5jYW5IYW5kbGVTY2hlbWUobG9hZGVyLm9yaWdpbmFsUmVxdWVzdCgpLnVy
bCgpLnByb3RvY29sKCkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotdm9pZCBXZWJTV1Nl
cnZlckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2goU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50
aWZpZXIgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIEZldGNoSWRlbnRpZmll
ciBmZXRjaElkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZldGNoT3B0aW9u
cyYmIG9wdGlvbnMsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiBmb3JtRGF0YSwgU3RyaW5nJiYg
cmVmZXJyZXIpCi17Ci0gICAgYXV0byogd29ya2VyID0gc2VydmVyKCkuYWN0aXZlV29ya2VyRnJv
bVJlZ2lzdHJhdGlvbklEKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKKyAg
ICBhdXRvKiB3b3JrZXIgPSBzZXJ2ZXIoKS5hY3RpdmVXb3JrZXJGcm9tUmVnaXN0cmF0aW9uSUQo
KmxvYWRlci5wYXJhbWV0ZXJzKCkuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIp
OwogICAgIGlmICghd29ya2VyKSB7Ci0gICAgICAgIFNXU0VSVkVSQ09OTkVDVElPTl9SRUxFQVNF
X0xPR19FUlJPUl9JRl9BTExPV0VEKCJzdGFydEZldGNoOiBmZXRjaElkZW50aWZpZXI6ICVzIC0+
IERpZE5vdEhhbmRsZSBiZWNhdXNlIG5vIGFjdGl2ZSB3b3JrZXIiLCBmZXRjaElkZW50aWZpZXIu
bG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBtX2NvbnRlbnRDb25uZWN0
aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZE5vdEhhbmRs
ZSB7IH0sIGZldGNoSWRlbnRpZmllcik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgU1dTRVJW
RVJDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoInN0YXJ0RmV0Y2g6IERp
ZE5vdEhhbmRsZSBiZWNhdXNlIG5vIGFjdGl2ZSB3b3JrZXIgJXMiLCBsb2FkZXIucGFyYW1ldGVy
cygpLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLT5sb2dnaW5nU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGlm
ICh3b3JrZXItPnNob3VsZFNraXBGZXRjaEV2ZW50KCkpIHsKKyAgICAgICAgYXV0byogcmVnaXN0
cmF0aW9uID0gc2VydmVyKCkuZ2V0UmVnaXN0cmF0aW9uKHdvcmtlci0+cmVnaXN0cmF0aW9uS2V5
KCkpOworICAgICAgICBpZiAocmVnaXN0cmF0aW9uICYmIHJlZ2lzdHJhdGlvbi0+c2hvdWxkU29m
dFVwZGF0ZShsb2FkZXIucGFyYW1ldGVycygpLm9wdGlvbnMpKQorICAgICAgICAgICAgcmVnaXN0
cmF0aW9uLT5zb2Z0VXBkYXRlKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAg
ICBhdXRvIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gd29ya2VyLT5pZGVudGlmaWVyKCk7CiAK
LSAgICBhdXRvIHJ1blNlcnZlcldvcmtlckFuZFN0YXJ0RmV0Y2ggPSBbd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cih0aGlzKSwgdGhpcywgZmV0Y2hJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMgPSBXVEZNb3ZlKG9wdGlv
bnMpLCBmb3JtRGF0YSA9IFdURk1vdmUoZm9ybURhdGEpLCByZWZlcnJlciA9IFdURk1vdmUocmVm
ZXJyZXIpXShib29sIHN1Y2Nlc3MpIG11dGFibGUgewotICAgICAgICBpZiAoIXdlYWtUaGlzKQor
ICAgIGF1dG8gdGFzayA9IG1ha2VVbmlxdWU8U2VydmljZVdvcmtlckZldGNoVGFzaz4oc2Vzc2lv
bklEKCksIGxvYWRlciwgaWRlbnRpZmllcigpLCB3b3JrZXItPmlkZW50aWZpZXIoKSk7CisgICAg
c3RhcnRGZXRjaCgqdGFzaywgKndvcmtlcik7CisgICAgcmV0dXJuIHRhc2s7Cit9CisKK3ZvaWQg
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzdGFydEZldGNoKFNlcnZpY2VXb3JrZXJGZXRjaFRhc2sm
IHRhc2ssIFNXU2VydmVyV29ya2VyJiB3b3JrZXIpCit7CisgICAgYXV0byBydW5TZXJ2ZXJXb3Jr
ZXJBbmRTdGFydEZldGNoID0gW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIHRoaXMsIHRh
c2sgPSBtYWtlV2Vha1B0cih0YXNrKV0oYm9vbCBzdWNjZXNzKSBtdXRhYmxlIHsKKyAgICAgICAg
aWYgKCF0YXNrKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICghd2Vha1RoaXMp
IHsKKyAgICAgICAgICAgIHRhc2stPmRpZE5vdEhhbmRsZSgpOwogICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CiAKICAgICAgICAgaWYgKCFzdWNjZXNzKSB7Ci0gICAgICAgICAgICBTV1NF
UlZFUkNPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgic3RhcnRGZXRjaDog
ZmV0Y2hJZGVudGlmaWVyOiAlcyBEaWROb3RIYW5kbGUgYmVjYXVzZSB3b3JrZXIgZGlkIG5vdCBi
ZWNvbWUgYWN0aXZhdGVkIiwgZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKLSAgICAgICAgICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6
OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlm
aWVyKTsKKyAgICAgICAgICAgIFNXU0VSVkVSQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUl9J
Rl9BTExPV0VEKCJzdGFydEZldGNoOiBmZXRjaElkZW50aWZpZXI6ICVzIERpZE5vdEhhbmRsZSBi
ZWNhdXNlIHdvcmtlciBkaWQgbm90IGJlY29tZSBhY3RpdmF0ZWQiLCB0YXNrLT5mZXRjaElkZW50
aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICB0YXNr
LT5kaWROb3RIYW5kbGUoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAg
ICAgIGF1dG8qIHdvcmtlciA9IHNlcnZlcigpLndvcmtlckJ5SUQoc2VydmljZVdvcmtlcklkZW50
aWZpZXIpOworICAgICAgICBhdXRvKiB3b3JrZXIgPSBzZXJ2ZXIoKS53b3JrZXJCeUlEKHRhc2st
PnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCkpOwogICAgICAgICBpZiAoIXdvcmtlciB8fCB3b3Jr
ZXItPmhhc1RpbWVkT3V0QW55RmV0Y2hUYXNrcygpKSB7Ci0gICAgICAgICAgICBtX2NvbnRlbnRD
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZE5v
dEhhbmRsZSB7IH0sIGZldGNoSWRlbnRpZmllcik7CisgICAgICAgICAgICB0YXNrLT5kaWROb3RI
YW5kbGUoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHNlcnZl
cigpLnJ1blNlcnZpY2VXb3JrZXJJZk5lY2Vzc2FyeShzZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
W3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHRoaXMsIGZldGNoSWRlbnRpZmllciwgc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25z
ID0gV1RGTW92ZShvcHRpb25zKSwgZm9ybURhdGEgPSBXVEZNb3ZlKGZvcm1EYXRhKSwgcmVmZXJy
ZXIgPSBXVEZNb3ZlKHJlZmVycmVyKSwgc2hvdWxkU2tpcEZldGNoRXZlbnQgPSB3b3JrZXItPnNo
b3VsZFNraXBGZXRjaEV2ZW50KCldKGF1dG8qIGNvbnRleHRDb25uZWN0aW9uKSB7Ci0gICAgICAg
ICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICBpZiAoIXdvcmtlci0+Y29udGV4dENvbm5lY3Rp
b24oKSkKKyAgICAgICAgICAgIHNlcnZlcigpLmNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHdvcmtl
ci0+cmVnaXN0cmFibGVEb21haW4oKSk7CisKKyAgICAgICAgc2VydmVyKCkucnVuU2VydmljZVdv
cmtlcklmTmVjZXNzYXJ5KHRhc2stPnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCksIFt3ZWFrVGhp
cyA9IFdURk1vdmUod2Vha1RoaXMpLCB0aGlzLCB0YXNrID0gV1RGTW92ZSh0YXNrKV0oYXV0byog
Y29udGV4dENvbm5lY3Rpb24pIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCF0YXNrKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCF3ZWFr
VGhpcykgeworICAgICAgICAgICAgICAgIHRhc2stPmRpZE5vdEhhbmRsZSgpOwogICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKGNvbnRleHRD
b25uZWN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgU1dTRVJWRVJDT05ORUNUSU9OX1JFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoInN0YXJ0RmV0Y2g6IFN0YXJ0aW5nIGZldGNoICVzIHZpYSBzZXJ2aWNl
IHdvcmtlciAlcyIsIGZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwotICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbiY+KCpjb250ZXh0Q29ubmVjdGlvbikuc3RhcnRGZXRjaChzZXNzaW9uSUQoKSwgKnRoaXMs
IGZldGNoSWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHJlcXVlc3QsIG9wdGlv
bnMsIGZvcm1EYXRhLCByZWZlcnJlcik7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgIFNXU0VSVkVSQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJz
dGFydEZldGNoOiBmZXRjaElkZW50aWZpZXI6ICVzIERpZE5vdEhhbmRsZSBiZWNhdXNlIGZhaWxl
ZCB0byBydW4gc2VydmljZSB3b3JrZXIsIG9yIHNlcnZpY2Ugd29ya2VyIGhhcyBoYWQgdGltZWQg
b3V0IGZldGNoIHRhc2tzIiwgZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKLSAgICAgICAgICAgICAgICBtX2NvbnRlbnRDb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZE5vdEhhbmRsZSB7IH0sIGZldGNoSWRl
bnRpZmllcik7CisgICAgICAgICAgICBpZiAoIWNvbnRleHRDb25uZWN0aW9uKSB7CisgICAgICAg
ICAgICAgICAgU1dTRVJWRVJDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQo
InN0YXJ0RmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMgRGlkTm90SGFuZGxlIGJlY2F1c2UgZmFp
bGVkIHRvIHJ1biBzZXJ2aWNlIHdvcmtlciIsIHRhc2stPmZldGNoSWRlbnRpZmllcigpLmxvZ2dp
bmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICB0YXNrLT5kaWROb3RI
YW5kbGUoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CisgICAgICAg
ICAgICBTV1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnRGZXRj
aDogU3RhcnRpbmcgZmV0Y2ggJXMgdmlhIHNlcnZpY2Ugd29ya2VyICVzIiwgdGFzay0+ZmV0Y2hJ
ZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHRhc2stPnNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJj4oKmNvbnRl
eHRDb25uZWN0aW9uKS5zdGFydEZldGNoKCp0YXNrKTsKICAgICAgICAgfSk7CiAgICAgfTsKLQot
ICAgIGlmICh3b3JrZXItPnNob3VsZFNraXBGZXRjaEV2ZW50KCkpIHsKLSAgICAgICAgbV9jb250
ZW50Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpE
aWROb3RIYW5kbGUgeyB9LCBmZXRjaElkZW50aWZpZXIpOwotICAgICAgICBhdXRvKiByZWdpc3Ry
YXRpb24gPSBzZXJ2ZXIoKS5nZXRSZWdpc3RyYXRpb24od29ya2VyLT5yZWdpc3RyYXRpb25LZXko
KSk7Ci0gICAgICAgIGlmIChyZWdpc3RyYXRpb24gJiYgcmVnaXN0cmF0aW9uLT5zaG91bGRTb2Z0
VXBkYXRlKG9wdGlvbnMpKQotICAgICAgICAgICAgcmVnaXN0cmF0aW9uLT5zb2Z0VXBkYXRlKCk7
CisgICAgCisgICAgaWYgKHdvcmtlci5zdGF0ZSgpID09IFNlcnZpY2VXb3JrZXJTdGF0ZTo6QWN0
aXZhdGluZykgeworICAgICAgICB3b3JrZXIud2hlbkFjdGl2YXRlZChXVEZNb3ZlKHJ1blNlcnZl
cldvcmtlckFuZFN0YXJ0RmV0Y2gpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlm
ICh3b3JrZXItPnN0YXRlKCkgPT0gU2VydmljZVdvcmtlclN0YXRlOjpBY3RpdmF0aW5nKSB7Ci0g
ICAgICAgIHdvcmtlci0+d2hlbkFjdGl2YXRlZChXVEZNb3ZlKHJ1blNlcnZlcldvcmtlckFuZFN0
YXJ0RmV0Y2gpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBBU1NFUlQod29ya2VyLT5z
dGF0ZSgpID09IFNlcnZpY2VXb3JrZXJTdGF0ZTo6QWN0aXZhdGVkKTsKKyAgICBBU1NFUlQod29y
a2VyLnN0YXRlKCkgPT0gU2VydmljZVdvcmtlclN0YXRlOjpBY3RpdmF0ZWQpOwogICAgIHJ1blNl
cnZlcldvcmtlckFuZFN0YXJ0RmV0Y2godHJ1ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24u
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
ckNvbm5lY3Rpb24uaAppbmRleCA3YmQyYTMzY2I1OGEzMDc3MGUzOThiZDA0OWU1M2UyMjQyM2Ez
ZDI2Li40ZWQyMDFlN2UwOWJkZWYyZDQ0MzIwOThiMzcxNGU4ZTMzOTRmNjNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCkBAIC01Miw2ICs1Miw4IEBAIHN0cnVjdCBTZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YTsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBOZXR3b3Jr
UHJvY2VzczsKK2NsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjsKK2NsYXNzIFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s7CiAKIGNsYXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbiA6IHB1YmxpYyBXZWJD
b3JlOjpTV1NlcnZlcjo6Q29ubmVjdGlvbiwgcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVi
bGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKQEAgLTY2LDYgKzY4LDggQEAgcHVi
bGljOgogICAgIAogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0OwogCisgICAg
c3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+IGNyZWF0ZUZldGNoVGFzayhO
ZXR3b3JrUmVzb3VyY2VMb2FkZXImKTsKKwogcHJpdmF0ZToKICAgICAvLyBJbXBsZW1lbnQgU1dT
ZXJ2ZXI6OkNvbm5lY3Rpb24gKE1lc3NhZ2VzIHRvIHRoZSBjbGllbnQgV2ViUHJvY2VzcykKICAg
ICB2b2lkIHJlamVjdEpvYkluQ2xpZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JJZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJikgZmluYWw7CkBAIC04Miw5ICs4Niw5
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNjaGVkdWxlSm9iSW5TZXJ2ZXIoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlckpvYkRhdGEmJik7CiAKLSAgICB2b2lkIHN0YXJ0RmV0Y2goV2ViQ29yZTo6U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmll
ciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OkZldGNoT3B0aW9ucyYmLCBJ
UEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYsIFN0cmluZyYmIHJlZmVycmVyKTsKLSAgICB2b2lkIGNh
bmNlbEZldGNoKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBX
ZWJDb3JlOjpGZXRjaElkZW50aWZpZXIpOwotICAgIHZvaWQgY29udGludWVEaWRSZWNlaXZlRmV0
Y2hSZXNwb25zZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwg
V2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyKTsKKyAgICBib29sIGhhbmRsZUZldGNoKE5ldHdvcmtS
ZXNvdXJjZUxvYWRlciYpOworCisgICAgdm9pZCBzdGFydEZldGNoKFNlcnZpY2VXb3JrZXJGZXRj
aFRhc2smLCBXZWJDb3JlOjpTV1NlcnZlcldvcmtlciYpOwogCiAgICAgdm9pZCBtYXRjaFJlZ2lz
dHJhdGlvbih1aW50NjRfdCByZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBjb25z
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGll
bnRVUkwpOwogICAgIHZvaWQgZ2V0UmVnaXN0cmF0aW9ucyh1aW50NjRfdCByZWdpc3RyYXRpb25N
YXRjaFJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
IHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggYWIyNDY4ZThjZTNjYjVjNmRk
ZmM4MjhjZTc1YmZkOGMxZjYyN2VkNy4uM2RhNjRkOTg3NGVjMWQ3ZjdlYjI5ZDRjN2ZkZTU2N2Ey
ZWM1NDFhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1l
c3NhZ2VzLmluCkBAIC0yOSwxMCArMjksNiBAQCBtZXNzYWdlcyAtPiBXZWJTV1NlcnZlckNvbm5l
Y3Rpb24gewogICAgIEFkZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcihXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIFJl
bW92ZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcihXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQogCi0gICAgU3RhcnRGZXRjaChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBzZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyIGZldGNoSWRl
bnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHN0cnVjdCBXZWJDb3Jl
OjpGZXRjaE9wdGlvbnMgb3B0aW9ucywgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9k
eSwgU3RyaW5nIHJlZmVycmVyKQotICAgIENhbmNlbEZldGNoKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlm
aWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyKQotICAgIENvbnRp
bnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbklkZW50aWZpZXIgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFdlYkNv
cmU6OkZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIpCi0KICAgICBQb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlv
biwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2UsIFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXIgc291cmNlKQogCiAgICAgRGlkUmVz
b2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleSBrZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uY3BwCmluZGV4IDZjMTRlNmRhNTI0MzA2MGU2YjhmMDM0NTJlZTQ4NmM2MGY0ZWJhMTQu
LmM4NTBhOTMwNTM3ZjdiZjE2ZTI1MjhlYjBiMzlkODJhNTUxOTBkZGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC02MSw5ICs2
MSwxNCBAQCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246On5XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24oKQogICAgICAgICBtX3NlcnZlci0+cmVtb3ZlQ29udGV4dENvbm5lY3Rp
b24oKnRoaXMpOwogfQogCitJUEM6OkNvbm5lY3Rpb24mIFdlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6aXBjQ29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29ubmVjdGlv
bi5jb25uZWN0aW9uKCk7Cit9CisKIElQQzo6Q29ubmVjdGlvbiogV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuICZtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpOworICAgIHJldHVybiAmaXBjQ29ubmVjdGlv
bigpOwogfQogCiB1aW50NjRfdCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1lc3Nh
Z2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKQEAgLTE0MSwzOSArMTQ2LDkgQEAgdm9pZCBX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnNldFRocm90dGxlU3RhdGUoYm9vbCBpc1Ro
cm90dGxlYWJsZSkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6U2V0VGhyb3R0bGVTdGF0ZSB7IGlzVGhyb3R0bGVhYmxlIH0pOwogfQogCi12b2lkIFdl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c3RhcnRGZXRjaChQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFdlYlNXU2VydmVyQ29ubmVjdGlvbiYgY29udGVudENvbm5lY3Rpb24sIEZldGNo
SWRlbnRpZmllciBjb250ZW50RmV0Y2hJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVu
Y2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpCi17Ci0gICAgYXV0byBzZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciA9IGNvbnRlbnRDb25uZWN0aW9uLmlkZW50aWZpZXIoKTsKLSAgICBh
dXRvIGZldGNoSWRlbnRpZmllciA9IEZldGNoSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKLQotICAg
IGF1dG8gcmVzdWx0ID0gbV9vbmdvaW5nRmV0Y2hlcy5hZGQoZmV0Y2hJZGVudGlmaWVyLCBtYWtl
VW5pcXVlPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+KHNlc3Npb25JRCwgY29udGVudENvbm5lY3Rp
b24sICp0aGlzLCBjb250ZW50RmV0Y2hJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgbV9jb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCkuc2VydmljZVdvcmtlckZldGNoVGltZW91
dCgpKSk7Ci0KLSAgICBBU1NFUlQoIW1fb25nb2luZ0ZldGNoSWRlbnRpZmllcnMuY29udGFpbnMo
eyBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29udGVudEZldGNoSWRlbnRpZmllciB9KSk7
Ci0gICAgbV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVycy5hZGQoeyBzZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciwgY29udGVudEZldGNoSWRlbnRpZmllciB9LCBmZXRjaElkZW50aWZpZXIpOwotCi0g
ICAgaWYgKCFzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U3Rh
cnRGZXRjaCB7IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgZmV0Y2hJZGVudGlmaWVyLCByZXF1ZXN0LCBvcHRpb25zLCBkYXRhLCByZWZlcnJlciB9
KSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+ZGlkTm90SGFuZGxlKCk7Ci19Ci0K
LXZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjYW5jZWxGZXRjaChXZWJDb3Jl
OjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
LCBGZXRjaElkZW50aWZpZXIgY29udGVudEZldGNoSWRlbnRpZmllciwgU2VydmljZVdvcmtlcklk
ZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIpCit2b2lkIFdlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjo6c3RhcnRGZXRjaChTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrJiB0YXNrKQog
ewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX29uZ29pbmdGZXRjaElkZW50aWZpZXJzLmZpbmQoeyBz
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29udGVudEZldGNoSWRlbnRpZmllciB9KTsKLSAg
ICBpZiAoaXRlcmF0b3IgPT0gbV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVycy5lbmQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OkNhbmNlbEZldGNoIHsgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBpdGVyYXRvci0+dmFsdWUgfSk7Ci0KLSAgICBtX29uZ29pbmdGZXRj
aGVzLnJlbW92ZShpdGVyYXRvci0+dmFsdWUpOwotICAgIG1fb25nb2luZ0ZldGNoSWRlbnRpZmll
cnMucmVtb3ZlKGl0ZXJhdG9yKTsKLX0KLQotdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246OmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoV2ViQ29yZTo6U1dTZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgRmV0Y2hJZGVu
dGlmaWVyIGNvbnRlbnRGZXRjaElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKQotewotICAgIGF1dG8gaXRlcmF0b3IgPSBtX29uZ29pbmdG
ZXRjaElkZW50aWZpZXJzLmZpbmQoeyBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29udGVu
dEZldGNoSWRlbnRpZmllciB9KTsKLSAgICBpZiAoaXRlcmF0b3IgPT0gbV9vbmdvaW5nRmV0Y2hJ
ZGVudGlmaWVycy5lbmQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpDb250aW51ZURpZFJlY2VpdmVGZXRj
aFJlc3BvbnNlIHsgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBpdGVyYXRvci0+dmFsdWUgfSk7CisgICAgdGFzay5zdGFydCgqdGhpcyk7CiB9CiAK
IHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpkaWRSZWNlaXZlRmV0Y2hUYXNr
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rl
cikKQEAgLTE4MSw1MSArMTU2LDQxIEBAIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjpkaWRSZWNlaXZlRmV0Y2hUYXNrTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mCiAgICAgYXV0
byBpdGVyYXRvciA9IG1fb25nb2luZ0ZldGNoZXMuZmluZChtYWtlT2JqZWN0SWRlbnRpZmllcjxG
ZXRjaElkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpOwogICAgIGlmIChp
dGVyYXRvciA9PSBtX29uZ29pbmdGZXRjaGVzLmVuZCgpKQogICAgICAgICByZXR1cm47Ci0gICAg
Ci0gICAgYm9vbCBzaG91bGRSZW1vdmUgPSBkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2Fn
ZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZEZhaWw6Om5hbWUoKQotICAgICAgICB8fCBk
ZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6
OkRpZE5vdEhhbmRsZTo6bmFtZSgpCi0gICAgICAgIHx8IGRlY29kZXIubWVzc2FnZU5hbWUoKSA9
PSBNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkRmluaXNoOjpuYW1lKCkKLSAg
ICAgICAgfHwgZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOjpEaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZTo6bmFtZSgpOwogCiAgICAgaXRl
cmF0b3ItPnZhbHVlLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKLQot
ICAgIGlmIChzaG91bGRSZW1vdmUpIHsKLSAgICAgICAgQVNTRVJUKG1fb25nb2luZ0ZldGNoSWRl
bnRpZmllcnMuY29udGFpbnMoaXRlcmF0b3ItPnZhbHVlLT5pZGVudGlmaWVyKCkpKTsKLSAgICAg
ICAgbV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVycy5yZW1vdmUoaXRlcmF0b3ItPnZhbHVlLT5pZGVu
dGlmaWVyKCkpOwotICAgICAgICBtX29uZ29pbmdGZXRjaGVzLnJlbW92ZShpdGVyYXRvcik7Ci0g
ICAgfQogfQogCi12b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZmV0Y2hUYXNr
VGltZWRPdXQoU2VydmljZVdvcmtlckZldGNoVGFzayYgdGFzaykKK3ZvaWQgV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjpyZWdpc3RlckZldGNoKFNlcnZpY2VXb3JrZXJGZXRjaFRhc2sm
IHRhc2spCiB7Ci0gICAgQVNTRVJUKG1fb25nb2luZ0ZldGNoSWRlbnRpZmllcnMuY29udGFpbnMo
dGFzay5pZGVudGlmaWVyKCkpKTsKLSAgICBhdXRvIHRha2VuSWRlbnRpZmllciA9IG1fb25nb2lu
Z0ZldGNoSWRlbnRpZmllcnMudGFrZSh0YXNrLmlkZW50aWZpZXIoKSk7CisgICAgQVNTRVJUKCFt
X29uZ29pbmdGZXRjaGVzLmNvbnRhaW5zKHRhc2suZmV0Y2hJZGVudGlmaWVyKCkpKTsKKyAgICBt
X29uZ29pbmdGZXRjaGVzLmFkZCh0YXNrLmZldGNoSWRlbnRpZmllcigpLCBtYWtlV2Vha1B0cih0
YXNrKSk7Cit9CiAKLSAgICBBU1NFUlQobV9vbmdvaW5nRmV0Y2hlcy5jb250YWlucyh0YWtlbklk
ZW50aWZpZXIpKTsKLSAgICBhdXRvIHRha2VuVGFzayA9IG1fb25nb2luZ0ZldGNoZXMudGFrZSh0
YWtlbklkZW50aWZpZXIpOwotICAgIEFTU0VSVCh0YWtlblRhc2spOwotICAgIEFTU0VSVCh0YWtl
blRhc2suZ2V0KCkgPT0gJnRhc2spOwordm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OnVucmVnaXN0ZXJGZXRjaChTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrJiB0YXNrKQoreworICAg
IEFTU0VSVChtX29uZ29pbmdGZXRjaGVzLmNvbnRhaW5zKHRhc2suZmV0Y2hJZGVudGlmaWVyKCkp
KTsKKyAgICBtX29uZ29pbmdGZXRjaGVzLnJlbW92ZSh0YXNrLmZldGNoSWRlbnRpZmllcigpKTsK
K30KIAotICAgIC8vIEdhdGhlciBhbGwgb3RoZXIgZmV0Y2hlcyBpbiB0aGlzIHNlcnZpY2Ugd29y
a2VyCi0gICAgVmVjdG9yPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2sqPiBvdGhlckZldGNoZXM7Cit2
b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZmV0Y2hUYXNrVGltZWRPdXQoU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIpCit7CisgICAgLy8g
R2F0aGVyIGFsbCBmZXRjaGVzIGluIHRoaXMgc2VydmljZSB3b3JrZXIKKyAgICBWZWN0b3I8U2Vy
dmljZVdvcmtlckZldGNoVGFzayo+IGZldGNoZXM7CiAgICAgZm9yIChhdXRvJiBmZXRjaFRhc2sg
OiBtX29uZ29pbmdGZXRjaGVzLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChmZXRjaFRhc2stPnNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKCkgPT0gdGFzay5zZXJ2aWNlV29ya2VySWRlbnRpZmllcigp
KQotICAgICAgICAgICAgb3RoZXJGZXRjaGVzLmFwcGVuZChmZXRjaFRhc2suZ2V0KCkpOworICAg
ICAgICBpZiAoZmV0Y2hUYXNrLT5zZXJ2aWNlV29ya2VySWRlbnRpZmllcigpID09IHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKQorICAgICAgICAgICAgZmV0Y2hlcy5hcHBlbmQoZmV0Y2hUYXNrLmdl
dCgpKTsKICAgICB9CiAKICAgICAvLyBTaWduYWwgbG9hZCBmYWlsdXJlIGZvciB0aGVtCi0gICAg
Zm9yIChhdXRvKiBmZXRjaFRhc2sgOiBvdGhlckZldGNoZXMpIHsKKyAgICBmb3IgKGF1dG8qIGZl
dGNoVGFzayA6IGZldGNoZXMpIHsKICAgICAgICAgaWYgKGZldGNoVGFzay0+d2FzSGFuZGxlZCgp
KQogICAgICAgICAgICAgZmV0Y2hUYXNrLT5mYWlsKHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5h
bCwgMCwgeyB9LCAiU2VydmljZSBXb3JrZXIgY29udGV4dCBjbG9zZWQiX3MgfSk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIGZldGNoVGFzay0+ZGlkTm90SGFuZGxlKCk7Ci0KLSAgICAgICAg
YXV0byBpZGVudGlmaWVyID0gbV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVycy50YWtlKGZldGNoVGFz
ay0+aWRlbnRpZmllcigpKTsKLSAgICAgICAgbV9vbmdvaW5nRmV0Y2hlcy5yZW1vdmUoaWRlbnRp
Zmllcik7CiAgICAgfQogCiAgICAgaWYgKG1fc2VydmVyKSB7Ci0gICAgICAgIGlmIChhdXRvKiB3
b3JrZXIgPSBtX3NlcnZlci0+d29ya2VyQnlJRCh0YXNrLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KCkpKSB7CisgICAgICAgIGlmIChhdXRvKiB3b3JrZXIgPSBtX3NlcnZlci0+d29ya2VyQnlJRChz
ZXJ2aWNlV29ya2VySWRlbnRpZmllcikpIHsKICAgICAgICAgICAgIHdvcmtlci0+c2V0SGFzVGlt
ZWRPdXRBbnlGZXRjaFRhc2tzKCk7CiAgICAgICAgICAgICBpZiAod29ya2VyLT5pc1J1bm5pbmco
KSkKICAgICAgICAgICAgICAgICBtX3NlcnZlci0+c3luY1Rlcm1pbmF0ZVdvcmtlcigqd29ya2Vy
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApp
bmRleCBkZDk1MzFkZGUzZmRhMWViYjI0ZTY5NzMxMjgxOTA2Y2IwMzA0NTMyLi4yYzAwZmY3NzY1
M2Y4NzE1MDAwZTliM2MyNjU0OTBlMmYxYTYzMDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC01MiwyNCArNTIsMjggQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiBjbGFzcyBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKIGNsYXNz
IFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKIAotY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uIDogcHVibGljIFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiwgcHVi
bGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK2Ns
YXNzIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjogcHVibGljIENhbk1ha2VXZWFrUHRy
PFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4sIHB1YmxpYyBXZWJDb3JlOjpTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6CiAgICAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mJiwgV2ViQ29yZTo6U1dTZXJ2ZXImKTsKICAgICB+V2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uKCk7CiAKKyAgICBJUEM6OkNvbm5lY3Rpb24mIGlwY0Nvbm5lY3Rpb24o
KSBjb25zdDsKKwogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKIAotICAg
IHZvaWQgc3RhcnRGZXRjaChQQUw6OlNlc3Npb25JRCwgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiwg
V2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6RmV0Y2hP
cHRpb25zJiwgY29uc3QgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYpOwor
ICAgIHZvaWQgc3RhcnRGZXRjaChTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrJik7CiAgICAgdm9pZCBj
YW5jZWxGZXRjaChXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3Jl
OjpGZXRjaElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKLSAg
ICB2b2lkIGNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoV2ViQ29yZTo6U1dTZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVGZXRjaFRhc2tN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogCiAgICAgdm9pZCBzZXRU
aHJvdHRsZVN0YXRlKGJvb2wgaXNUaHJvdHRsZWFibGUpOwogICAgIGJvb2wgaXNUaHJvdHRsZWFi
bGUoKSBjb25zdCB7IHJldHVybiBtX2lzVGhyb3R0bGVhYmxlOyB9CiAKLSAgICB2b2lkIGZldGNo
VGFza1RpbWVkT3V0KFNlcnZpY2VXb3JrZXJGZXRjaFRhc2smKTsKKyAgICB2b2lkIGZldGNoVGFz
a1RpbWVkT3V0KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKworICAgIHZvaWQg
cmVnaXN0ZXJGZXRjaChTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrJik7CisgICAgdm9pZCB1bnJlZ2lz
dGVyRmV0Y2goU2VydmljZVdvcmtlckZldGNoVGFzayYpOwogCiBwcml2YXRlOgogICAgIC8vIElQ
Qzo6TWVzc2FnZVNlbmRlcgpAQCAtOTYsOSArMTAwLDcgQEAgcHJpdmF0ZToKIAogICAgIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2Nvbm5lY3Rpb247CiAgICAgV2Vha1B0cjxXZWJD
b3JlOjpTV1NlcnZlcj4gbV9zZXJ2ZXI7Ci0KLSAgICBIYXNoTWFwPFNlcnZpY2VXb3JrZXJGZXRj
aFRhc2s6OklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllcj4gbV9vbmdvaW5nRmV0
Y2hJZGVudGlmaWVyczsKLSAgICBIYXNoTWFwPFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgc3Rk
Ojp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+PiBtX29uZ29pbmdGZXRjaGVzOwor
ICAgIEhhc2hNYXA8V2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyLCBXZWFrUHRyPFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s+PiBtX29uZ29pbmdGZXRjaGVzOwogICAgIGJvb2wgbV9pc1Rocm90dGxlYWJs
ZSB7IHRydWUgfTsKIH07IC8vIGNsYXNzIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9T
b3VyY2VzLnR4dAppbmRleCBkN2Q4OTkxZWQ2Y2VlOTg3ZjMyYzU4NGIwZGUzZmE4MGNjMGY5MDkw
Li4zNTUxOTdhMTA5ZTVhMzkxYWExODRiMGNmODcxZmI3MzdjMzEyMDU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQK
QEAgLTUyNiw3ICs1MjYsNiBAQCBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVC
cm93c2VyRnVuY3MuY3BwIEBuby11bmlmeQogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luLmNwcCBAbm8tdW5pZnkKIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAgQG5vLXVuaWZ5CiAKLVdlYlByb2Nlc3MvU3RvcmFnZS9T
ZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guY3BwCiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGll
bnRDb25uZWN0aW9uLmNwcAogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLmNwcAogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXT3JpZ2luVGFibGUuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBk
YTIxNzQxMDQyNzQ5NWJkMzhiNWVjN2Y4NzgwN2E3ZDM5NzMzYTljLi44NjYzMDk4ZTc2Y2I4MThl
NzIwM2JiNjU2OTdkMDliNzY4MTg4NDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExNDMsNyArMTE0Myw2IEBACiAJCTVDRTkxMjEy
MjI5M0MyNzgwMDVCRUM3OCAvKiBBdXhpbGlhcnlQcm9jZXNzTWFpbi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0U5MTIwRjIyOTNDMjVGMDA1QkVD
NzggLyogQXV4aWxpYXJ5UHJvY2Vzc01haW4uY3BwICovOyB9OwogCQk1Q0U5MTIxMzIyOTNDMjc5
MDA1QkVDNzggLyogQXV4aWxpYXJ5UHJvY2Vzc01haW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNFOTEyMEYyMjkzQzI1RjAwNUJFQzc4IC8qIEF1
eGlsaWFyeVByb2Nlc3NNYWluLmNwcCAqLzsgfTsKIAkJNUNFOTEyMTQyMjkzQzI4MDAwNUJFQzc4
IC8qIFdLTWFpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNUNFOTEyMEIyMjkzQzFFMDAwNUJFQzc4IC8qIFdLTWFpbi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTYxN0E1MkQ4MUY0M0E5REEwMERDREMw
QSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjE3QTUyRDcxRjQzQTlCNjAw
RENEQzBBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VSZWNlaXZlci5jcHAgKi87
IH07CiAJCTYzMTA4Rjk2MUY5NjcxOUMwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MzEwOEY5
NDFGOTY3MTlDMDBBMERCODQgLyogX1dLQXBwbGljYXRpb25NYW5pZmVzdC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTYzMTA4Rjk5MUY5NjcxRjcw
MEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzMTA4Rjk4MUY5NjcxRjcwMEEwREI4
NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwuaCAqLzsgfTsKIAkJNjM0ODQyNTEx
RkIyNkU3MTAwOTQ2RTNDIC8qIEFQSUFwcGxpY2F0aW9uTWFuaWZlc3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzNDg0MjRGMUZCMjZFNzEwMDk0NkUz
QyAvKiBBUElBcHBsaWNhdGlvbk1hbmlmZXN0LmggKi87IH07CkBAIC0zMTI5LDkgKzMxMjgsNiBA
QAogCQk0MTMwNzVBNjFERTg1RUU3MDAzOUVDNjkgLyogTGliV2ViUlRDU29ja2V0RmFjdG9yeS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJXZWJSVENTb2NrZXRGYWN0b3J5
Lmg7IHBhdGggPSBOZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRGYWN0b3J5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzA3NUE3MURFODVFRTcwMDM5RUM2OSAvKiBMaWJX
ZWJSVENQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IGxpbmVFbmRp
bmcgPSAwOyBuYW1lID0gTGliV2ViUlRDUHJvdmlkZXIuY3BwOyBwYXRoID0gTmV0d29yay93ZWJy
dGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1
YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLmNwcDsgfTsKIAkJNDEzMDc1
QTgxREU4NUVFNzAwMzlFQzY5IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbGluZUVuZGluZyA9IDA7IG5hbWUgPSBMaWJXZWJSVENQcm92aWRlci5oOyBw
YXRoID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFuZy5v
YmpjcHA7IH07Ci0JCTQxMzFGM0NFMUY5NkE0OTUwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ2xp
ZW50RmV0Y2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZVdvcmtl
ckNsaWVudEZldGNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxMzFGM0NGMUY5
NkE5MzYwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gubWVzc2FnZXMuaW4gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2VydmljZVdvcmtlckNsaWVudEZldGNoLm1lc3NhZ2VzLmlu
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTMxRjNEMDFGOTZCQ0M4MDA1OTk5NUEg
LyogU2VydmljZVdvcmtlckNsaWVudEZldGNoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxMzFGM0UwMUY5ODcxMkMwMDU5OTk1QSAvKiBXZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTM1RkJDRjFGNEZCN0YyMDA3NEM0N0IgLyogQ2FjaGVTdG9yYWdlRW5n
aW5lQ2FjaGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hl
U3RvcmFnZUVuZ2luZUNhY2hlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
MzVGQkQwMUY0RkI3RjIwMDc0QzQ3QiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNzEwLDcgKzM3MDYsNiBAQAogCQk1Q0VB
QkEyQjIzMzMyNTE0MDA3OTc3OTcgLyogTGVnYWN5R2xvYmFsU2V0dGluZ3MuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGVnYWN5R2xvYmFsU2V0dGluZ3MuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0ZFQ0IwMzFFMUVEMUM4MDBGODg1MDQgLyog
TGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTVEQUQ3M0YxMTE2RkY5MEMwMEVFNTM5NiAvKiBCYXNlVGFyZ2V0
LnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEJhc2VUYXJnZXQueGNj
b25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTYxN0E1MkQ3MUY0M0E5QjYwMERD
REMwQSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU2VydmljZVdvcmtlckNsaWVudEZldGNo
TWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvU2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKIAkJNjMxMDhGOTQxRjk2NzE5QzAwQTBEQjg0IC8qIF9XS0FwcGxp
Y2F0aW9uTWFuaWZlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLQXBwbGljYXRpb25NYW5pZmVzdC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2MzEwOEY5NTFGOTY3MTlDMDBBMERCODQg
LyogX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS0Fw
cGxpY2F0aW9uTWFuaWZlc3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTYzMTA4
Rjk4MUY5NjcxRjcwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gX1dLQXBwbGljYXRpb25NYW5pZmVzdEludGVybmFsLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02ODQxLDkgKzY4MzYsNiBAQAogCQk1MTE4RTk5ODFGMjk1
MjU5MDAzRUY5RjUgLyogU3RvcmFnZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCi0JCQkJNDEzMUYzRDAxRjk2QkNDODAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJD
bGllbnRGZXRjaC5jcHAgKi8sCi0JCQkJNDEzMUYzQ0UxRjk2QTQ5NTAwNTk5OTVBIC8qIFNlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaC5oICovLAotCQkJCTQxMzFGM0NGMUY5NkE5MzYwMDU5OTk1QSAv
KiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gubWVzc2FnZXMuaW4gKi8sCiAJCQkJNDEzMUYzRTAx
Rjk4NzEyQzAwNTk5OTVBIC8qIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwICov
LAogCQkJCTQxOUFDRjlCMUY5ODFEMjYwMDlGMUE4MyAvKiBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50LmggKi8sCiAJCQkJNTFCRUI2MjkxRjNBNUFDRDAwNTAyOUI5IC8qIFdlYlNlcnZp
Y2VXb3JrZXJQcm92aWRlci5jcHAgKi8sCkBAIC04ODc4LDcgKzg4NzAsNiBAQAogCQkJCTFCQkJF
NDlFMTlCNjZDNTMwMDZCN0Q4MSAvKiBSZW1vdGVXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi8sCiAJCQkJRTE4RTY5MTMxNjlCNjY3QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCUUxOEU2OTE0MTY5QjY2N0IwMDlCNjY3MCAv
KiBTZWNJdGVtU2hpbVByb3h5TWVzc2FnZXMuaCAqLywKLQkJCQk2MTdBNTJENzFGNDNBOUI2MDBE
Q0RDMEEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywK
IAkJCQkyREU2OTQzQjE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJv
bGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMkRFNjk0M0MxOEJEMkE2ODAwNUMxNUU1
IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oICovLAogCQkJCTFBMzM0
REVCMTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki8sCkBAIC0xMTMxNyw3ICsxMTMwOCw2IEBACiAJCQkJQTU1QkE4MjYxQkEyNUNGRDAwN0NEMzNE
IC8qIFJlbW90ZVdlYkluc3BlY3RvclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFCQkJFNEEwMTlCNjZDNTMwMDZCN0Q4MSAvKiBSZW1vdGVXZWJJbnNwZWN0b3JV
SU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMThFNjkxNzE2OUI2NjdC
MDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKLQkJCQk2MTdBNTJEODFGNDNBOURBMDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckNsaWVu
dEZldGNoTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxREU3QzZDMjIy
NzhGMUUwMDUzMkI2NSAvKiBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTJEOTJBNzg3MjEyQjZBQjEwMEY0OTNGRCAvKiBTaGFyZWFibGVCaXRtYXAuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMkRFNjk0M0QxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlm
aWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCBmMGI0ZmRmYTZhMzExNzA0OTk2ZDc4NWExYzk2Mjc3
MzYwMTE5ODAxLi4zMDgzMzU3NzMwMWQwZjI2NDUzMmI0YTMyYmE4NmVmNmVmNWI5YjRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJEYXRh
UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDTmV0d29yay5oIgogI2luY2x1ZGUgIk5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJTZXJ2aWNl
V29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhTWFwLmgi
CiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNhY2hl
U3RvcmFnZVByb3ZpZGVyLmgiCkBAIC0xNDEsMTAgKzE0MCw2IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQCiAgICAgICAgICAgICBtX3N3Q29ubmVjdGlvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2Rlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKGRlY29k
ZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50
RmV0Y2g6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewotICAgICAgICBXZWJTZXJ2aWNlV29ya2Vy
UHJvdmlkZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQogICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewogICAgICAgICBB
U1NFUlQoU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKTsKICAgICAg
ICAgaWYgKGF1dG8qIGNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiA9IFNXQ29udGV4dE1hbmFnZXI6
OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCBhZmEzYzcyNDE0OGRh
MTI3NWEyNzcwZGZjN2U4M2Q3Mjk2ZGE1MDQ0Li5hOWZjMDRkNTM4ZmViOWI3ZjRkOTRlNjQ4MjEz
M2JmOTI1ZjNkNDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC0yMTUsNDEgKzIxNSwyMCBAQCB2b2lkIFdl
YkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9h
ZGVyLCBDYWNoZWRSZXNvdQogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0g
ICAgaWYgKCEhcmVzb3VyY2VMb2FkZXIub3B0aW9ucygpLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25JZGVudGlmaWVyKQotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzY2hlZHVsZUxv
YWQ6IFVSTCB3aWxsIGJlIHNjaGVkdWxlZCB0aHJvdWdoIFNlcnZpY2VXb3JrZXIgb3IgTmV0d29y
ayBQcm9jZXNzIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUi
IFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJh
bWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFt
ZXRlcnMuZnJhbWVJRC50b1VJbnQ2NCgpLCBpZGVudGlmaWVyKTsKKyAgICBhdXRvIHVybCA9IHJl
c291cmNlTG9hZGVyLnJlcXVlc3QoKS51cmwoKTsKKyAgICBhdXRvKiBkYXRhID0gdXJsLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCk7CisgICAgaWYgKGRhdGEpCisgICAgICAgIHVybC5zdHJpbmcoKTsK
IAotICAgIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuaGFuZGxlRmV0Y2go
cmVzb3VyY2VMb2FkZXIsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3Qs
IFt0aGlzLCB0cmFja2luZ1BhcmFtZXRlcnMsIGlkZW50aWZpZXIsIHNob3VsZENsZWFyUmVmZXJy
ZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIG1heGltdW1CdWZmZXJpbmdUaW1lID0gbWF4aW11bUJ1
ZmZlcmluZ1RpbWUocmVzb3VyY2UpLCByZXNvdXJjZUxvYWRlciA9IG1ha2VSZWYocmVzb3VyY2VM
b2FkZXIpXSAoU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpSZXN1bHQgcmVzdWx0KSBtdXRhYmxl
IHsKLSAgICAgICAgaWYgKHJlc3VsdCAhPSBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OlJlc3Vs
dDo6VW5oYW5kbGVkKSB7Ci0gICAgICAgICAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcsICIoV2Vi
UHJvY2VzcykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwgdXJsICclcycgd2lsbCBi
ZSBzY2hlZHVsZWQgdGhyb3VnaCBTZXJ2aWNlV29ya2VyIGhhbmRsZSBmZXRjaCBhbGdvcml0aG0i
LCByZXNvdXJjZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKLSAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUg
c2NoZWR1bGVkIHRocm91Z2ggU2VydmljZVdvcmtlciBoYW5kbGUgZmV0Y2ggYWxnb3JpdGhtIChm
cmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXItPmZyYW1lKCksIHRyYWNr
aW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1l
SUQudG9VSW50NjQoKSwgaWRlbnRpZmllcik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLSAgICAgICAgaWYgKHJlc291cmNlTG9hZGVyLT5vcHRpb25zKCkuc2VydmljZVdvcmtlcnNN
b2RlID09IFNlcnZpY2VXb3JrZXJzTW9kZTo6T25seSkgewotICAgICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1JfSUZfQUxMT1dFRCgic2NoZWR1bGVMb2FkOiB1bmFibGUgdG8gc2NoZWR1bGUgVVJM
IHRocm91Z2ggU2VydmljZVdvcmtlciBoYW5kbGUgZmV0Y2ggYWxnb3JpdGhtIChmcmFtZSA9ICVw
LCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXItPmZyYW1lKCksIHRyYWNraW5nUGFyYW1l
dGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQudG9VSW50
NjQoKSwgaWRlbnRpZmllcik7Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtyZXNvdXJj
ZUxvYWRlciA9IFdURk1vdmUocmVzb3VyY2VMb2FkZXIpXSB7Ci0gICAgICAgICAgICAgICAgYXV0
byBlcnJvciA9IGludGVybmFsRXJyb3IocmVzb3VyY2VMb2FkZXItPnJlcXVlc3QoKS51cmwoKSk7
Ci0gICAgICAgICAgICAgICAgZXJyb3Iuc2V0VHlwZShSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5j
ZWxsYXRpb24pOwotICAgICAgICAgICAgICAgIHJlc291cmNlTG9hZGVyLT5kaWRGYWlsKGVycm9y
KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAg
ICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJMb2FkZXJTdHJhdGVneSgpLnRy
eUxvYWRpbmdVc2luZ1VSTFNjaGVtZUhhbmRsZXIocmVzb3VyY2VMb2FkZXIpKSB7Ci0gICAgICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIHNj
aGVkdWxlZCB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
KSIsIHJlc291cmNlTG9hZGVyLT5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRv
VUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELnRvVUludDY0KCksIGlkZW50aWZp
ZXIpOwotICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViTG9hZGVyU3RyYXRl
Z3koKS5zY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MocmVzb3VyY2VMb2FkZXIuZ2V0KCks
IHJlc291cmNlTG9hZGVyLT5yZXF1ZXN0KCksIHRyYWNraW5nUGFyYW1ldGVycywgc2hvdWxkQ2xl
YXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgbWF4aW11bUJ1ZmZlcmluZ1RpbWUpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgic2NoZWR1bGVMb2FkOiBVUkwgbm90IGhhbmRsZWQgYnkgYW55IGhhbmRsZXJzIChm
cmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXItPmZyYW1lKCksIHRyYWNr
aW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1l
SUQudG9VSW50NjQoKSwgaWRlbnRpZmllcik7Ci0gICAgfSk7CisgICAgaWYgKChyZXNvdXJjZUxv
YWRlci5vcHRpb25zKCkuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgJiYgcmVz
b3VyY2VMb2FkZXIub3B0aW9ucygpLnNlcnZpY2VXb3JrZXJzTW9kZSAhPSBTZXJ2aWNlV29ya2Vy
c01vZGU6Ok5vbmUpIHx8ICF0cnlMb2FkaW5nVXNpbmdVUkxTY2hlbWVIYW5kbGVyKHJlc291cmNl
TG9hZGVyKSkgewogI2Vsc2UKICAgICBpZiAoIXRyeUxvYWRpbmdVc2luZ1VSTFNjaGVtZUhhbmRs
ZXIocmVzb3VyY2VMb2FkZXIpKSB7CisjZW5kaWYKICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBzY2hlZHVsZWQgd2l0aCB0aGUgTmV0d29y
a1Byb2Nlc3MgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIg
UFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFt
ZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFyYW1l
dGVycy5mcmFtZUlELnRvVUludDY0KCksIGlkZW50aWZpZXIpOwogICAgICAgICBzY2hlZHVsZUxv
YWRGcm9tTmV0d29ya1Byb2Nlc3MocmVzb3VyY2VMb2FkZXIsIHJlc291cmNlTG9hZGVyLnJlcXVl
c3QoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRU
UFJlZGlyZWN0LCBtYXhpbXVtQnVmZmVyaW5nVGltZShyZXNvdXJjZSkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInNjaGVkdWxlTG9hZDogVVJM
IG5vdCBoYW5kbGVkIGJ5IGFueSBoYW5kbGVycyAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJ
dTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIs
IHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50
NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQudG9VSW50NjQoKSwgaWRlbnRpZmllcik7
Ci0jZW5kaWYKIH0KIAogYm9vbCBXZWJMb2FkZXJTdHJhdGVneTo6dHJ5TG9hZGluZ1VzaW5nVVJM
U2NoZW1lSGFuZGxlcihSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIpCkBAIC0yNzEsNiAr
MjUwLDEwIEBAIGJvb2wgV2ViTG9hZGVyU3RyYXRlZ3k6OnRyeUxvYWRpbmdVc2luZ1VSTFNjaGVt
ZUhhbmRsZXIoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlCiAKIHZvaWQgV2ViTG9hZGVyU3RyYXRl
Z3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhSZXNvdXJjZUxvYWRlciYgcmVzb3Vy
Y2VMb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViUmVzb3Vy
Y2VMb2FkZXI6OlRyYWNraW5nUGFyYW1ldGVycyYgdHJhY2tpbmdQYXJhbWV0ZXJzLCBib29sIHNo
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFNlY29uZHMgbWF4aW11bUJ1
ZmZlcmluZ1RpbWUpCiB7CisgICAgYXV0byogd2ViRnJhbWVMb2FkZXJDbGllbnQgPSB0b1dlYkZy
YW1lTG9hZGVyQ2xpZW50KHJlc291cmNlTG9hZGVyLmZyYW1lTG9hZGVyKCktPmNsaWVudCgpKTsK
KyAgICBhdXRvKiB3ZWJGcmFtZSA9IHdlYkZyYW1lTG9hZGVyQ2xpZW50ID8gd2ViRnJhbWVMb2Fk
ZXJDbGllbnQtPndlYkZyYW1lKCkgOiBudWxscHRyOworICAgIGF1dG8qIHdlYlBhZ2UgPSB3ZWJG
cmFtZSA/IHdlYkZyYW1lLT5wYWdlKCkgOiBudWxscHRyOworCiAgICAgUmVzb3VyY2VMb2FkSWRl
bnRpZmllciBpZGVudGlmaWVyID0gcmVzb3VyY2VMb2FkZXIuaWRlbnRpZmllcigpOwogICAgIEFT
U0VSVChpZGVudGlmaWVyKTsKIApAQCAtMzAyLDYgKzI4NSwxNyBAQCB2b2lkIFdlYkxvYWRlclN0
cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MoUmVzb3VyY2VMb2FkZXImIHJl
c291cmNlTAogICAgIGxvYWRQYXJhbWV0ZXJzLnByZWZsaWdodFBvbGljeSA9IHJlc291cmNlTG9h
ZGVyLm9wdGlvbnMoKS5wcmVmbGlnaHRQb2xpY3k7CiAgICAgbG9hZFBhcmFtZXRlcnMuaXNIVFRQ
U1VwZ3JhZGVFbmFibGVkID0gcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSA/IHJlc291cmNlTG9hZGVy
LmZyYW1lKCktPnNldHRpbmdzKCkuSFRUUFNVcGdyYWRlRW5hYmxlZCgpIDogZmFsc2U7CiAKKyNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgLy8gSW4gY2FzZSBvZiBVUkwgc2NoZW1lIGhh
bmRsZXIsIHdlIHdpbGwgdHJ5IHRvIGxvYWQgb24gc2VydmljZSB3b3JrZXJzIGFuZCBpZiB1bmhh
bmRsZWQsIGZhbGxiYWNrIHRvIFVSTCBzY2hlbWUgaGFuZGxlci4KKyAgICBpZiAocmVzb3VyY2VM
b2FkZXIub3B0aW9ucygpLnNlcnZpY2VXb3JrZXJzTW9kZSA9PSBTZXJ2aWNlV29ya2Vyc01vZGU6
OkFsbCAmJiB3ZWJQYWdlICYmICB3ZWJQYWdlLT51cmxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKHJl
c291cmNlTG9hZGVyLnJlcXVlc3QoKS51cmwoKS5wcm90b2NvbCgpLnRvU3RyaW5nV2l0aG91dENv
cHlpbmcoKSkpCisgICAgICAgIGxvYWRQYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJzTW9kZSA9IFNl
cnZpY2VXb3JrZXJzTW9kZTo6T25seTsKKyAgICBlbHNlCisgICAgICAgIGxvYWRQYXJhbWV0ZXJz
LnNlcnZpY2VXb3JrZXJzTW9kZSA9IHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5zZXJ2aWNlV29y
a2Vyc01vZGU7CisKKyAgICBsb2FkUGFyYW1ldGVycy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllciA9IHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5zZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uSWRlbnRpZmllcjsKKyAgICBsb2FkUGFyYW1ldGVycy5odHRwSGVhZGVyc1RvS2VlcCA9
IHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5odHRwSGVhZGVyc1RvS2VlcDsKKyNlbmRpZgorCiAg
ICAgYXV0byogZG9jdW1lbnQgPSByZXNvdXJjZUxvYWRlci5mcmFtZSgpID8gcmVzb3VyY2VMb2Fk
ZXIuZnJhbWUoKS0+ZG9jdW1lbnQoKSA6IG51bGxwdHI7CiAgICAgaWYgKHJlc291cmNlTG9hZGVy
Lm9wdGlvbnMoKS5jc3BSZXNwb25zZUhlYWRlcnMpCiAgICAgICAgIGxvYWRQYXJhbWV0ZXJzLmNz
cFJlc3BvbnNlSGVhZGVycyA9IHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5jc3BSZXNwb25zZUhl
YWRlcnM7CkBAIC00MzgsMTEgKzQzMiw2IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnJlbW92
ZShSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIpCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKFdlYlNlcnZpY2VXb3JrZXJQ
cm92aWRlcjo6c2luZ2xldG9uKCkuY2FuY2VsRmV0Y2gobWFrZU9iamVjdElkZW50aWZpZXI8RmV0
Y2hJZGVudGlmaWVyVHlwZT4oaWRlbnRpZmllcikpKQotICAgICAgICByZXR1cm47Ci0jZW5kaWYK
LQogICAgIFJlZlB0cjxXZWJSZXNvdXJjZUxvYWRlcj4gbG9hZGVyID0gbV93ZWJSZXNvdXJjZUxv
YWRlcnMudGFrZShpZGVudGlmaWVyKTsKICAgICAvLyBMb2FkZXIgbWF5IG5vdCBiZSByZWdpc3Rl
cmVkIGlmIHdlIGNyZWF0ZWQgaXQsIGJ1dCBoYXZlbid0IHNjaGVkdWxlZCB5ZXQgKGEgYnVuZGxl
IGNsaWVudCBjYW4gZGVjaWRlIHRvIGNhbmNlbCBzdWNoIHJlcXVlc3QgdmlhIHdpbGxTZW5kUmVx
dWVzdCkuCiAgICAgaWYgKCFsb2FkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggYTM5MjQxYWNhMzBmZTc5
NjgxMTAyNzQzMjAxN2NhNDQ5YmZiMWYyZi4uNWIzZWYyMzlhZGQ2OWU0ZWFmY2I5ZmQxNTBjZjE1
NzI0YmQxZTUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcApAQCAtMzIsMTMgKzMyLDIwIEBACiAjaW5jbHVkZSAi
TmV0d29ya1Jlc291cmNlTG9hZGVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1l
bnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKKyNpbmNsdWRlICJXZWJGcmFtZS5o
IgorI2luY2x1ZGUgIldlYkZyYW1lTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViTG9hZGVy
U3RyYXRlZ3kuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5o
IgorI2luY2x1ZGUgIldlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvQXBwbGljYXRpb25DYWNoZUhvc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NlcnRpZmljYXRl
SW5mby5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5nS2V5cy5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRG9jdW1lbnRMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJD
bGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktp
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRNZXRyaWNzLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlLmg+CkBAIC0yMTgsNiArMjI1LDQ3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
ZXI6OmRpZEZpbmlzaFJlc291cmNlTG9hZChjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdv
cmtMCiAgICAgbV9jb3JlTG9hZGVyLT5kaWRGaW5pc2hMb2FkaW5nKG5ldHdvcmtMb2FkTWV0cmlj
cyk7CiB9CiAKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxTZXJ2aWNlV29ya2VyTG9h
ZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBpZiAoYXV0byogZG9jdW1lbnQg
PSBtX2NvcmVMb2FkZXItPmZyYW1lKCkgPyBtX2NvcmVMb2FkZXItPmZyYW1lKCktPmRvY3VtZW50
KCkgOiBudWxscHRyKSB7CisgICAgICAgIGlmIChtX2NvcmVMb2FkZXItPm9wdGlvbnMoKS5kZXN0
aW5hdGlvbiAhPSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpFbXB0eVN0cmluZyB8fCBlcnJv
ci5pc0dlbmVyYWwoKSkKKyAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShN
ZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3IubG9jYWxpemVkRGVz
Y3JpcHRpb24oKSk7CisgICAgICAgIGlmIChtX2NvcmVMb2FkZXItPm9wdGlvbnMoKS5kZXN0aW5h
dGlvbiAhPSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpFbXB0eVN0cmluZykKKyAgICAgICAg
ICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgbWFrZVN0cmluZygiQ2Fubm90IGxvYWQgIiwgZXJyb3IuZmFpbGluZ1VS
TCgpLnN0cmluZygpLCAiLiIpKTsKKyAgICB9CisKKyAgICBkaWRGYWlsUmVzb3VyY2VMb2FkKGVy
cm9yKTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6c2VydmljZVdvcmtlckRpZE5vdEhh
bmRsZSgpCit7CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoInNlcnZpY2VXb3JrZXJEaWROb3RIYW5kbGU6IChwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90
cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJz
LmZyYW1lSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CisK
KyAgICBpZiAobV9jb3JlTG9hZGVyLT5vcHRpb25zKCkuc2VydmljZVdvcmtlcnNNb2RlICE9IFNl
cnZpY2VXb3JrZXJzTW9kZTo6T25seSkgeworICAgICAgICBhdXRvKiB3ZWJGcmFtZUxvYWRlckNs
aWVudCA9IHRvV2ViRnJhbWVMb2FkZXJDbGllbnQobV9jb3JlTG9hZGVyLT5mcmFtZUxvYWRlcigp
LT5jbGllbnQoKSk7CisgICAgICAgIGF1dG8qIHdlYkZyYW1lID0gd2ViRnJhbWVMb2FkZXJDbGll
bnQgPyB3ZWJGcmFtZUxvYWRlckNsaWVudC0+d2ViRnJhbWUoKSA6IG51bGxwdHI7CisgICAgICAg
IGF1dG8qIHdlYlBhZ2UgPSB3ZWJGcmFtZSA/IHdlYkZyYW1lLT5wYWdlKCkgOiBudWxscHRyOwor
CisgICAgICAgIGlmIChhdXRvKiBoYW5kbGVyID0gd2ViUGFnZS0+dXJsU2NoZW1lSGFuZGxlckZv
clNjaGVtZShtX2NvcmVMb2FkZXItPnJlcXVlc3QoKS51cmwoKS5wcm90b2NvbCgpLnRvU3RyaW5n
V2l0aG91dENvcHlpbmcoKSkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
InJlc291cmNlIGxvYWRlZCBieSBVUkwgc2NoZW1lIGhhbmRsZXI6IChwYWdlSUQgPSAlIiBQUkl1
NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwg
bV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0
ZXJzLmZyYW1lSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7
CisKKyAgICAgICAgICAgIGF1dG8gbG9hZGVyID0gbV9jb3JlTG9hZGVyOworICAgICAgICAgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViTG9hZGVyU3RyYXRlZ3koKS5yZW1vdmUobV9jb3Jl
TG9hZGVyLmdldCgpKTsKKworICAgICAgICAgICAgaGFuZGxlci0+c3RhcnROZXdUYXNrKCpsb2Fk
ZXIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgYXV0byBl
cnJvciA9IGludGVybmFsRXJyb3IobV9jb3JlTG9hZGVyLT5yZXF1ZXN0KCkudXJsKCkpOworICAg
IGVycm9yLnNldFR5cGUoUmVzb3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2VsbGF0aW9uKTsKKyAgICBt
X2NvcmVMb2FkZXItPmRpZEZhaWwoZXJyb3IpOworI2Vsc2UKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyNlbmRpZgorfQorCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRGYWlsUmVzb3Vy
Y2VMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIExPRyhOZXR3b3JrLCAi
KFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRGYWlsUmVzb3VyY2VMb2FkIGZvciAn
JXMnIiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmgKaW5kZXggOGVhMWFlZGJlYjlmNTk2NDk3YWI2NzRhZjQzNjIxNjdhMWNmMjlhYS4uN2MyMTEx
ZDQ4YjI5NTE3YjU5NzMxZTM0YmRlZDZmOTNiYzdkNTYzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCkBAIC04NSw2ICs4
NSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpZEZpbmlz
aFJlc291cmNlTG9hZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2
b2lkIGRpZEZhaWxSZXNvdXJjZUxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwor
ICAgIHZvaWQgZGlkRmFpbFNlcnZpY2VXb3JrZXJMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKTsKKyAgICB2b2lkIHNlcnZpY2VXb3JrZXJEaWROb3RIYW5kbGUoKTsKICAgICB2b2lk
IGRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKTsKIAogICAgIHZvaWQgc3RvcExvYWRp
bmdBZnRlclhGcmFtZU9wdGlvbnNPckNvbnRlbnRTZWN1cml0eVBvbGljeURlbmllZChjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCmlu
ZGV4IDdiOTMyNTZmMDM2ZGQwNDJmNDRiYTgzYTMxOGJiN2I2NjM2ZDQxYWEuLjhjMGYyMWE4MzYy
MmNmOGFiMGQzNjdlMjFmODZjNzFhN2VkMDVkNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2Vz
LmluCkBAIC0yNyw2ICsyNyw4IEBAIG1lc3NhZ2VzIC0+IFdlYlJlc291cmNlTG9hZGVyIExlZ2Fj
eVJlY2VpdmVyIHsKICAgICBEaWRSZWNlaXZlRGF0YShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKICAgICBEaWRGaW5pc2hSZXNv
dXJjZUxvYWQoV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzIG5ldHdvcmtMb2FkTWV0cmljcykK
ICAgICBEaWRGYWlsUmVzb3VyY2VMb2FkKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCisg
ICAgRGlkRmFpbFNlcnZpY2VXb3JrZXJMb2FkKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3Ip
CisgICAgU2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSgpCiAgICAgRGlkQmxvY2tBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSgpCiAKICAgICBTdG9wTG9hZGluZ0FmdGVyWEZyYW1lT3B0aW9uc09yQ29u
dGVudFNlY3VyaXR5UG9saWN5RGVuaWVkKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9u
c2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNl
V29ya2VyQ2xpZW50RmV0Y2guY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
U2VydmljZVdvcmtlckNsaWVudEZldGNoLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMzI0NDY2YThkNGQ4NWM4MzMwOTU5YTUwZjc3ZDU4OTE0NjEwNjEyMS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsMjAzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiU2VydmljZVdvcmtlckNsaWVudEZldGNoLmgiCi0KLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCi0KLSNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCi0jaW5jbHVkZSAiV2ViU1dDbGllbnRD
b25uZWN0aW9uLmgiCi0jaW5jbHVkZSAiV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmgiCi0jaW5j
bHVkZSA8V2ViQ29yZS9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL0RvY3VtZW50Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgotI2luY2x1ZGUgPFdl
YkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3Iu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgotCi1uYW1lc3BhY2UgV2ViS2l0
IHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1SZWY8U2VydmljZVdvcmtlckNsaWVudEZl
dGNoPiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OmNyZWF0ZShXZWJTZXJ2aWNlV29ya2VyUHJv
dmlkZXImIHNlcnZpY2VXb3JrZXJQcm92aWRlciwgUmVmPFdlYkNvcmU6OlJlc291cmNlTG9hZGVy
PiYmIGxvYWRlciwgRmV0Y2hJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlZjxXZWJTV0NsaWVudENv
bm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1Rv
SFRUUFJlZGlyZWN0LCBDYWxsYmFjayYmIGNhbGxiYWNrKQotewotICAgIGF1dG8gZmV0Y2ggPSBh
ZG9wdFJlZigqbmV3IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaCB7IHNlcnZpY2VXb3JrZXJQcm92
aWRlciwgV1RGTW92ZShsb2FkZXIpLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGNvbm5lY3Rpb24pLCBz
aG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBXVEZNb3ZlKGNhbGxiYWNr
KSB9KTsKLSAgICBmZXRjaC0+c3RhcnQoKTsKLSAgICByZXR1cm4gZmV0Y2g7Ci19Ci0KLVNlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaDo6flNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaCgpCi17Ci19Ci0K
LVNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6U2VydmljZVdvcmtlckNsaWVudEZldGNoKFdlYlNl
cnZpY2VXb3JrZXJQcm92aWRlciYgc2VydmljZVdvcmtlclByb3ZpZGVyLCBSZWY8V2ViQ29yZTo6
UmVzb3VyY2VMb2FkZXI+JiYgbG9hZGVyLCBGZXRjaElkZW50aWZpZXIgaWRlbnRpZmllciwgUmVm
PFdlYlNXQ2xpZW50Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBib29sIHNob3VsZENsZWFyUmVm
ZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIENhbGxiYWNrJiYgY2FsbGJhY2spCi0gICAgOiBt
X3NlcnZpY2VXb3JrZXJQcm92aWRlcihzZXJ2aWNlV29ya2VyUHJvdmlkZXIpCi0gICAgLCBtX2xv
YWRlcihXVEZNb3ZlKGxvYWRlcikpCi0gICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKLSAg
ICAsIG1fY29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQotICAgICwgbV9jYWxsYmFjayhX
VEZNb3ZlKGNhbGxiYWNrKSkKLSAgICAsIG1fc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hU
VFBSZWRpcmVjdChzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KQotewot
fQotCi12b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6c3RhcnQoKQotewotICAgIGF1dG8g
cmVxdWVzdCA9IG1fbG9hZGVyLT5yZXF1ZXN0KCk7Ci0gICAgYXV0byYgb3B0aW9ucyA9IG1fbG9h
ZGVyLT5vcHRpb25zKCk7Ci0KLSAgICBhdXRvIHJlZmVycmVyID0gcmVxdWVzdC5odHRwUmVmZXJy
ZXIoKTsKLQotICAgIC8vIFdlIGFyZSBpbnRlcmNlcHRpbmcgZmV0Y2ggY2FsbHMgYWZ0ZXIgZ29p
bmcgdGhyb3VnaCB0aGUgSFRUUCBsYXllciwgd2hpY2ggbWF5IGFkZCBzb21lIHNwZWNpZmljIGhl
YWRlcnMuCi0gICAgY2xlYW5IVFRQUmVxdWVzdEhlYWRlcnNGb3JBY2Nlc3NDb250cm9sKHJlcXVl
c3QsIG9wdGlvbnMuaHR0cEhlYWRlcnNUb0tlZXApOwotCi0gICAgQVNTRVJUKG9wdGlvbnMuc2Vy
dmljZVdvcmtlcnNNb2RlICE9IFNlcnZpY2VXb3JrZXJzTW9kZTo6Tm9uZSk7Ci0gICAgbV9zZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciA9IG9wdGlvbnMuc2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbklkZW50aWZpZXIudmFsdWUoKTsKLSAgICBtX2Nvbm5lY3Rpb24tPnN0YXJ0RmV0
Y2gobV9pZGVudGlmaWVyLCBtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBy
ZXF1ZXN0LCBvcHRpb25zLCByZWZlcnJlcik7Ci19Ci0KLXZvaWQgU2VydmljZVdvcmtlckNsaWVu
dEZldGNoOjpkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVz
cG9uc2UpCi17Ci0gICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCByZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpXSgpIG11dGFibGUgewot
ICAgICAgICBpZiAoIW1fbG9hZGVyKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHJl
c3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OlNlcnZpY2VXb3JrZXIp
OwotCi0gICAgICAgIG1fbG9hZGVyLT53aWxsU2VuZFJlcXVlc3QobV9sb2FkZXItPnJlcXVlc3Qo
KS5yZWRpcmVjdGVkUmVxdWVzdChyZXNwb25zZSwgbV9zaG91bGRDbGVhclJlZmVycmVyT25IVFRQ
U1RvSFRUUFJlZGlyZWN0KSwgcmVzcG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gcHJvdGVj
dGVkVGhpcy5jb3B5UmVmKCldKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpIHsKLSAgICAgICAg
ICAgIGlmICghbV9sb2FkZXIgfHwgcmVxdWVzdC5pc051bGwoKSkgewotICAgICAgICAgICAgICAg
IGlmIChhdXRvIGNhbGxiYWNrID0gV1RGTW92ZShtX2NhbGxiYWNrKSkKLSAgICAgICAgICAgICAg
ICAgICAgY2FsbGJhY2soUmVzdWx0OjpTdWNjZWVkZWQpOwotICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEFTU0VSVChyZXF1ZXN0ID09IG1fbG9hZGVy
LT5yZXF1ZXN0KCkpOwotICAgICAgICAgICAgc3RhcnQoKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7
Ci19Ci0KLXZvaWQgU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZl
UmVzcG9uc2VNZXNzYWdlKQotewotICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgbmVl
ZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2VdKCkgbXV0YWJsZSB7Ci0gICAgICAg
IGlmICghbV9sb2FkZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKGF1dG8g
Y2FsbGJhY2sgPSBXVEZNb3ZlKG1fY2FsbGJhY2spKQotICAgICAgICAgICAgY2FsbGJhY2soUmVz
dWx0OjpTdWNjZWVkZWQpOwotCi0gICAgICAgIEFTU0VSVCghcmVzcG9uc2UuaXNSZWRpcmVjdGlv
bigpIHx8ICFyZXNwb25zZS5odHRwSGVhZGVyRmllbGRzKCkuY29udGFpbnMoSFRUUEhlYWRlck5h
bWU6OkxvY2F0aW9uKSk7Ci0KLSAgICAgICAgaWYgKCFuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlTWVzc2FnZSkgewotICAgICAgICAgICAgbV9sb2FkZXItPmRpZFJlY2VpdmVSZXNwb25z
ZShyZXNwb25zZSwgW10geyB9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0g
ICAgICAgIG1fbG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0gewotICAgICAgICAgICAgaWYgKCFt
X2xvYWRlcikKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIG1fY29ubmVj
dGlvbi0+Y29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZShtX2lkZW50aWZpZXIsIG1fc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpOwotICAgICAgICB9KTsKLSAgICB9KTsK
LX0KLQotdm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSwgaW50NjRfdCBlbmNvZGVkRGF0YUxl
bmd0aCkKLXsKLSAgICBhdXRvKiBkYXRhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
ZGF0YVJlZmVyZW5jZS5kYXRhKCkpOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZW5jb2RlZERhdGFMZW5ndGgsIGJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKV0oKSBtdXRhYmxl
IHsKLSAgICAgICAgaWYgKCFtX2xvYWRlcikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICBtX2VuY29kZWREYXRhTGVuZ3RoICs9IGVuY29kZWREYXRhTGVuZ3RoOwotCi0gICAgICAgIG1f
bG9hZGVyLT5kaWRSZWNlaXZlQnVmZmVyKFdURk1vdmUoYnVmZmVyKSwgbV9lbmNvZGVkRGF0YUxl
bmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU2VydmljZVdvcmtl
ckNsaWVudEZldGNoOjpkaWRSZWNlaXZlRm9ybURhdGEoY29uc3QgSVBDOjpGb3JtRGF0YVJlZmVy
ZW5jZSYpCi17Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3JtIGRhdGEgcmVhZGluZy4KLX0K
LQotdm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OmRpZEZpbmlzaCgpCi17Ci0gICAgY2Fs
bE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7Ci0g
ICAgICAgIGlmICghbV9sb2FkZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgQVNT
RVJUKCFtX2NhbGxiYWNrKTsKLQotICAgICAgICBtX2xvYWRlci0+ZGlkRmluaXNoTG9hZGluZyhO
ZXR3b3JrTG9hZE1ldHJpY3MgeyB9KTsKLSAgICAgICAgbV9zZXJ2aWNlV29ya2VyUHJvdmlkZXIu
ZmV0Y2hGaW5pc2hlZChtX2lkZW50aWZpZXIpOwotICAgIH0pOwotfQotCi12b2lkIFNlcnZpY2VX
b3JrZXJDbGllbnRGZXRjaDo6ZGlkRmFpbChSZXNvdXJjZUVycm9yJiYgZXJyb3IpCi17Ci0gICAg
Y2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBl
cnJvciA9IFdURk1vdmUoZXJyb3IpXSB7Ci0gICAgICAgIGlmICghbV9sb2FkZXIpCi0gICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgYXV0byogZG9jdW1lbnQgPSBtX2xvYWRlci0+ZnJhbWUo
KSA/IG1fbG9hZGVyLT5mcmFtZSgpLT5kb2N1bWVudCgpIDogbnVsbHB0cjsKLSAgICAgICAgaWYg
KGRvY3VtZW50KSB7Ci0gICAgICAgICAgICBpZiAobV9sb2FkZXItPm9wdGlvbnMoKS5kZXN0aW5h
dGlvbiAhPSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpFbXB0eVN0cmluZyB8fCBlcnJvci5p
c0dlbmVyYWwoKSkKLSAgICAgICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yLmxvY2FsaXplZERl
c2NyaXB0aW9uKCkpOwotICAgICAgICAgICAgaWYgKG1fbG9hZGVyLT5vcHRpb25zKCkuZGVzdGlu
YXRpb24gIT0gRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6RW1wdHlTdHJpbmcpCi0gICAgICAg
ICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBN
ZXNzYWdlTGV2ZWw6OkVycm9yLCBtYWtlU3RyaW5nKCJDYW5ub3QgbG9hZCAiLCBlcnJvci5mYWls
aW5nVVJMKCkuc3RyaW5nKCksICIuIikpOwotICAgICAgICB9Ci0KLSAgICAgICAgbV9sb2FkZXIt
PmRpZEZhaWwoZXJyb3IpOwotCi0gICAgICAgIGlmIChhdXRvIGNhbGxiYWNrID0gV1RGTW92ZSht
X2NhbGxiYWNrKSkKLSAgICAgICAgICAgIGNhbGxiYWNrKFJlc3VsdDo6U3VjY2VlZGVkKTsKLQot
ICAgICAgICBtX3NlcnZpY2VXb3JrZXJQcm92aWRlci5mZXRjaEZpbmlzaGVkKG1faWRlbnRpZmll
cik7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpkaWROb3RI
YW5kbGUoKQotewotICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKV0gewotICAgICAgICBpZiAoIW1fbG9hZGVyKQotICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgIGlmIChhdXRvIGNhbGxiYWNrID0gV1RGTW92ZShtX2NhbGxiYWNrKSkK
LSAgICAgICAgICAgIGNhbGxiYWNrKFJlc3VsdDo6VW5oYW5kbGVkKTsKLQotICAgICAgICBtX3Nl
cnZpY2VXb3JrZXJQcm92aWRlci5mZXRjaEZpbmlzaGVkKG1faWRlbnRpZmllcik7Ci0gICAgfSk7
Ci19Ci0KLXZvaWQgU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpjYW5jZWwoKQotewotICAgIGlm
IChhdXRvIGNhbGxiYWNrID0gV1RGTW92ZShtX2NhbGxiYWNrKSkKLSAgICAgICAgY2FsbGJhY2so
UmVzdWx0OjpDYW5jZWxsZWQpOwotCi0gICAgbV9jb25uZWN0aW9uLT5jYW5jZWxGZXRjaChtX2lk
ZW50aWZpZXIsIG1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpOwotICAgIG1f
bG9hZGVyID0gbnVsbHB0cjsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAv
LyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBjNjY3YWM3NTdmZGQ3MTA4ODhiOGIyZDRlZWU5NDQ5OTBmMGIw
ZDAzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5oCisr
KyAvZGV2L251bGwKQEAgLTEsODUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotCi0jaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5o
IgotI2luY2x1ZGUgIkZvcm1EYXRhUmVmZXJlbmNlLmgiCi0jaW5jbHVkZSAiTWVzc2FnZVJlY2Vp
dmVyLmgiCi0jaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRmV0
Y2hJZGVudGlmaWVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRlci5oPgotI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9u
SGFuZGxlci5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViU1dDbGllbnRDb25u
ZWN0aW9uOwotY2xhc3MgV2ViU2VydmljZVdvcmtlclByb3ZpZGVyOwotCi1jbGFzcyBTZXJ2aWNl
V29ya2VyQ2xpZW50RmV0Y2ggZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxTZXJ2aWNlV29ya2Vy
Q2xpZW50RmV0Y2g+LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewotcHVibGljOgotICAg
IGVudW0gY2xhc3MgUmVzdWx0IHsgU3VjY2VlZGVkLCBDYW5jZWxsZWQsIFVuaGFuZGxlZCB9Owot
ICAgIHVzaW5nIENhbGxiYWNrID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc3VsdCk+
OwotCi0gICAgc3RhdGljIFJlZjxTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g+IGNyZWF0ZShXZWJT
ZXJ2aWNlV29ya2VyUHJvdmlkZXImLCBSZWY8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI+JiYsIFdl
YkNvcmU6OkZldGNoSWRlbnRpZmllciwgUmVmPFdlYlNXQ2xpZW50Q29ubmVjdGlvbj4mJiwgYm9v
bCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBDYWxsYmFjayYmKTsK
LSAgICB+U2VydmljZVdvcmtlckNsaWVudEZldGNoKCk7Ci0KLSAgICB2b2lkIHN0YXJ0KCk7Ci0K
LSAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYpIGZpbmFsOwotICAgIHZvaWQgY2FuY2VsKCk7Ci0KLSAgICBib29sIGlzT25nb2luZygpIGNv
bnN0IHsgcmV0dXJuICEhbV9jYWxsYmFjazsgfQotCi1wcml2YXRlOgotICAgIFNlcnZpY2VXb3Jr
ZXJDbGllbnRGZXRjaChXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXImLCBSZWY8V2ViQ29yZTo6UmVz
b3VyY2VMb2FkZXI+JiYsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgUmVmPFdlYlNXQ2xpZW50
Q29ubmVjdGlvbj4mJiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGly
ZWN0LCBDYWxsYmFjayYmKTsKLQotICAgIE9wdGlvbmFsPFdlYkNvcmU6OlJlc291cmNlRXJyb3I+
IHZhbGlkYXRlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotCi0g
ICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBi
b29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsKLSAgICB2b2lkIGRp
ZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBpbnQ2NF90
IGVuY29kZWREYXRhTGVuZ3RoKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVGb3JtRGF0YShjb25zdCBJ
UEM6OkZvcm1EYXRhUmVmZXJlbmNlJik7Ci0gICAgdm9pZCBkaWRGaW5pc2goKTsKLSAgICB2b2lk
IGRpZEZhaWwoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKTsKLSAgICB2b2lkIGRpZE5vdEhhbmRs
ZSgpOwotCi0gICAgV2ViU2VydmljZVdvcmtlclByb3ZpZGVyJiBtX3NlcnZpY2VXb3JrZXJQcm92
aWRlcjsKLSAgICBSZWZQdHI8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI+IG1fbG9hZGVyOwotICAg
IFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciBtX2lkZW50aWZpZXI7Ci0gICAgUmVmPFdlYlNXQ2xp
ZW50Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwotICAgIENhbGxiYWNrIG1fY2FsbGJhY2s7Ci0g
ICAgYm9vbCBtX3Nob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QgeyB0cnVl
IH07Ci0gICAgaW50NjRfdCBtX2VuY29kZWREYXRhTGVuZ3RoIHsgMCB9OwotICAgIGJvb2wgbV9k
aWRGYWlsIHsgZmFsc2UgfTsKLSAgICBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllciBtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29y
a2VyQ2xpZW50RmV0Y2gubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gubWVzc2FnZXMuaW4KZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDNkM2JjNzQwNGJmYjQ3ZDYxZTBkMTU4OGUxYTVmMmE5YzA2YTE2NjEu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLm1lc3NhZ2Vz
LmluCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotCi1tZXNzYWdl
cyAtPiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2ggewotICAgIERpZFJlY2VpdmVSZXNwb25zZShX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBib29sIG5lZWRzQ29udGludWVEaWRS
ZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQotICAgIERpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UpCi0gICAgRGlkUmVjZWl2ZURhdGEoSVBD
OjpEYXRhUmVmZXJlbmNlIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCi0gICAgRGlk
UmVjZWl2ZUZvcm1EYXRhKElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgZGF0YSkKLSAgICBEaWRGaW5p
c2goKQotICAgIERpZEZhaWwoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKLSAgICBEaWRO
b3RIYW5kbGUoKQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29u
bmVjdGlvbi5jcHAKaW5kZXggMDZhNGNjN2RiN2ExOGMxMTg3YmFmYzY1ODg1NTQzMmM0NWViMmFl
Mi4uZDAwODliZjU4YjY1NDU2NWE4ZTFlOTEyZDFiZGE2MjJhN2Q5ZWZjOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5l
Y3Rpb24uY3BwCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJTZXJ2
aWNlV29ya2VyQ2xpZW50RmV0Y2guaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2xNZXNz
YWdlcy5oIgpAQCAtMjAzLDIxICsyMDIsNiBAQCB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6
Z2V0UmVnaXN0cmF0aW9ucyhTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BPcmlnaW4sIGNvbgogICAg
IH0pOwogfQogCi12b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6c3RhcnRGZXRjaChGZXRjaElk
ZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRp
ZmllciBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmlu
ZyYgcmVmZXJyZXIpCi17Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9u
OjpTdGFydEZldGNoIHsgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIGZldGNo
SWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9ucywgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSB7IHJl
cXVlc3QuaHR0cEJvZHkoKSB9LCByZWZlcnJlciB9KTsKLX0KLQotdm9pZCBXZWJTV0NsaWVudENv
bm5lY3Rpb246OmNhbmNlbEZldGNoKEZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIsIFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25JZGVudGlmaWVyKQotewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlv
bjo6Q2FuY2VsRmV0Y2ggeyBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgZmV0
Y2hJZGVudGlmaWVyIH0pOwotfQotCi12b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6Y29udGlu
dWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZShGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVy
LCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uSWRlbnRpZmllcikKLXsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5l
Y3Rpb246OkNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UgeyBzZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyIH0pOwotfQotCiB2b2lkIFdlYlNX
Q2xpZW50Q29ubmVjdGlvbjo6Y29ubmVjdGlvblRvU2VydmVyTG9zdCgpCiB7CiAgICAgY2xlYXIo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xp
ZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
bGllbnRDb25uZWN0aW9uLmgKaW5kZXggMjdmZWEyYzFiMjRiOGMyYTk2NGM0ZTk2N2QzZjdlY2Ez
OGQwMzcyZi4uOWU0NDVmNTVjOTY4MDljYTljZDYzNTYzMWY1NTU0Nzk5MWVjYTUzMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRD
b25uZWN0aW9uLmgKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAj
aW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgot
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5oIgogI2luY2x1ZGUgIlNoYXJlZE1l
bW9yeS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NXQ2xpZW50Q29ubmVjdGlvbi5oPgpAQCAtNjAsOSArNTksNiBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImKSBmaW5hbDsKIAogICAgIGJvb2wgbWF5SGF2ZVNlcnZpY2VXb3JrZXJSZWdpc3Rl
cmVkRm9yT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpIGNvbnN0IGZp
bmFsOwotICAgIHZvaWQgc3RhcnRGZXRjaChXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIsIFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmLCBjb25zdCBTdHJp
bmcmIHJlZmVycmVyKTsKLSAgICB2b2lkIGNhbmNlbEZldGNoKFdlYkNvcmU6OkZldGNoSWRlbnRp
ZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpOwotICAg
IHZvaWQgY29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZShXZWJDb3JlOjpGZXRjaElkZW50
aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKIAog
ICAgIHZvaWQgY29ubmVjdGlvblRvU2VydmVyTG9zdCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVy
LmNwcAppbmRleCA2MmEzOWIyNWZkZmFkMTdlMTE1NzYzMzAwMjgyNDJiMzA5ZjE5Mjg1Li43ZGNk
MThlYmFkMzA2ZGFlNDc1YjAwN2I1N2U3ZTE2NWY2YmIzNTAwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92
aWRlci5jcHAKQEAgLTY2LDQ4ICs2Niw2IEBAIFdlYkNvcmU6OlNXQ2xpZW50Q29ubmVjdGlvbiog
V2ViU2VydmljZVdvcmtlclByb3ZpZGVyOjpleGlzdGluZ1NlcnZpY2VXb3JrZXJDb25uCiAgICAg
cmV0dXJuIG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi0+ZXhpc3RpbmdTZXJ2aWNlV29ya2VyQ29u
bmVjdGlvbigpOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkSGFuZGxlRmV0Y2goY29u
c3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKQotewotICAgIGlmIChvcHRpb25zLnNl
cnZpY2VXb3JrZXJzTW9kZSA9PSBTZXJ2aWNlV29ya2Vyc01vZGU6Ok5vbmUpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIGlmIChpc1BvdGVudGlhbE5hdmlnYXRpb25PclN1YnJlc291cmNl
UmVxdWVzdChvcHRpb25zLmRlc3RpbmF0aW9uKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgcmV0dXJuICEhb3B0aW9ucy5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcjsK
LX0KLQotdm9pZCBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OmhhbmRsZUZldGNoKFJlc291cmNl
TG9hZGVyJiBsb2FkZXIsIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRp
cmVjdCwgU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpDYWxsYmFjayYmIGNhbGxiYWNrKQotewot
ICAgIGlmICghTGVnYWN5U2NoZW1lUmVnaXN0cnk6OmNhblNlcnZpY2VXb3JrZXJzSGFuZGxlVVJM
U2NoZW1lKGxvYWRlci5yZXF1ZXN0KCkudXJsKCkucHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRD
b3B5aW5nKCkpIHx8ICFzaG91bGRIYW5kbGVGZXRjaChsb2FkZXIub3B0aW9ucygpKSkgewotICAg
ICAgICBjYWxsYmFjayhTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OlJlc3VsdDo6VW5oYW5kbGVk
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZXJ2
aWNlV29ya2VyQ29ubmVjdGlvbigpOwotICAgIGF1dG8gZmV0Y2hJZGVudGlmaWVyID0gbWFrZU9i
amVjdElkZW50aWZpZXI8RmV0Y2hJZGVudGlmaWVyVHlwZT4obG9hZGVyLmlkZW50aWZpZXIoKSk7
Ci0gICAgbV9vbmdvaW5nRmV0Y2hUYXNrcy5hZGQoZmV0Y2hJZGVudGlmaWVyLCBTZXJ2aWNlV29y
a2VyQ2xpZW50RmV0Y2g6OmNyZWF0ZSgqdGhpcywgbG9hZGVyLCBmZXRjaElkZW50aWZpZXIsIGNv
bm5lY3Rpb24sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFdURk1v
dmUoY2FsbGJhY2spKSk7Ci19Ci0KLWJvb2wgV2ViU2VydmljZVdvcmtlclByb3ZpZGVyOjpjYW5j
ZWxGZXRjaChGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyKQotewotICAgIGF1dG8gZmV0
Y2ggPSBtX29uZ29pbmdGZXRjaFRhc2tzLnRha2UoZmV0Y2hJZGVudGlmaWVyKTsKLSAgICBpZiAo
ZmV0Y2gpCi0gICAgICAgICgqZmV0Y2gpLT5jYW5jZWwoKTsKLSAgICByZXR1cm4gISFmZXRjaDsK
LX0KLQotdm9pZCBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OmZldGNoRmluaXNoZWQoRmV0Y2hJ
ZGVudGlmaWVyIGZldGNoSWRlbnRpZmllcikKLXsKLSAgICBtX29uZ29pbmdGZXRjaFRhc2tzLnRh
a2UoZmV0Y2hJZGVudGlmaWVyKTsKLX0KLQotdm9pZCBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6
OmRpZFJlY2VpdmVTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQotewotICAgIGlmIChhdXRvIGZl
dGNoID0gbV9vbmdvaW5nRmV0Y2hUYXNrcy5nZXQobWFrZU9iamVjdElkZW50aWZpZXI8RmV0Y2hJ
ZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKLSAgICAgICAgZmV0Y2gt
PmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwotfQotCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92
aWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtl
clByb3ZpZGVyLmgKaW5kZXggMDg4YWVkOTU0ZTlhOWQ0ZWU1OTJmNWQ3NTUyNzI3MTQ0YTA1MGEy
Mi4uYzAwYzA0NzkzMTI3YTA2OWZhZTk1MjMwMTI1ZGJiOTU1NTRjZDczMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVy
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtl
clByb3ZpZGVyLmgKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKIAotI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvU2VydmljZVdvcmtlclByb3ZpZGVyLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAKQEAgLTQxLDExICs0MCw2IEBAIGNsYXNzIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRl
ciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUHJvdmlkZXIgewogcHVibGlj
OgogICAgIHN0YXRpYyBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXImIHNpbmdsZXRvbigpOwogCi0g
ICAgdm9pZCBoYW5kbGVGZXRjaChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYsIGJvb2wgc2hvdWxk
Q2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgU2VydmljZVdvcmtlckNsaWVudEZl
dGNoOjpDYWxsYmFjayYmKTsKLSAgICBib29sIGNhbmNlbEZldGNoKFdlYkNvcmU6OkZldGNoSWRl
bnRpZmllcik7Ci0gICAgdm9pZCBmZXRjaEZpbmlzaGVkKFdlYkNvcmU6OkZldGNoSWRlbnRpZmll
cik7Ci0KLSAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVNl
cnZpY2VXb3JrZXJDbGllbnRSZWdpc3RyYXRpb25NYXRjaChJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImKTsKIAogcHJpdmF0ZToKQEAgLTU0LDggKzQ4LDYgQEAgcHJpdmF0ZToKIAogICAg
IFdlYkNvcmU6OlNXQ2xpZW50Q29ubmVjdGlvbiogZXhpc3RpbmdTZXJ2aWNlV29ya2VyQ29ubmVj
dGlvbigpIGZpbmFsOwogICAgIFdlYkNvcmU6OlNXQ2xpZW50Q29ubmVjdGlvbiYgc2VydmljZVdv
cmtlckNvbm5lY3Rpb24oKSBmaW5hbDsKLQotICAgIEhhc2hNYXA8V2ViQ29yZTo6RmV0Y2hJZGVu
dGlmaWVyLCBSZWY8U2VydmljZVdvcmtlckNsaWVudEZldGNoPj4gbV9vbmdvaW5nRmV0Y2hUYXNr
czsKIH07IC8vIGNsYXNzIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcgogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDI4NWJmMDZhNTgzZTg1
N2E0NzUyZjdlY2Q2NTM1ODBkNzAzZTk4MjIuLmZiNGM0ODVhNTY5NjYxYzM3MGViMDJiOWNhZDEx
ZGQ2YTNlMGNkOGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEy
IEBACisyMDE5LTEwLTEzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAg
ICAgICBIYW5kbGUgc2VydmljZSB3b3JrZXIgbG9hZHMgdGhyb3VnaCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MjMwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9mZXRjaC1y
ZXF1ZXN0LXhoci5odHRwcy1leHBlY3RlZC50eHQ6CisKIDIwMTktMTAtMTEgIFJ5b3N1a2UgTml3
YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIHRoZSBzdXBwb3J0IGZvciBTaGFk
b3dSb290LmRlbGVnYXRlRm9jdXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2ZldGNo
LXJlcXVlc3QteGhyLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2ZldGNo
LXJlcXVlc3QteGhyLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCA0ZmI2YmI1M2IzMTY1NTJmNDFk
MGE5N2ZhOTNhZGQ3ZjY4NmE2NTIzLi44NWFhMDBiMGFlOGVkY2MxNjgxNDU2NWQ5OTlkYWQ3ZTQx
YTkzYzk0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9mZXRjaC1yZXF1ZXN0LXhoci5o
dHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZmV0Y2gtcmVxdWVzdC14
aHIuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC04LDcgKzgsNyBAQCBQQVNTIEZldGNoRXZlbnQjcmVx
dWVzdC5ib2R5IGNvbnRhaW5zIFhIUiByZXF1ZXN0IGRhdGEgKHN0cmluZykKIFBBU1MgRmV0Y2hF
dmVudCNyZXF1ZXN0LmJvZHkgY29udGFpbnMgWEhSIHJlcXVlc3QgZGF0YSAoYmxvYikgCiBQQVNT
IEZldGNoRXZlbnQjcmVxdWVzdC5tZXRob2QgaXMgc2V0IHRvIFhIUiBtZXRob2QgCiBQQVNTIFhI
UiB1c2luZyBPUFRJT05TIG1ldGhvZCAKLUZBSUwgWEhSIHdpdGggZm9ybSBkYXRhIHByb21pc2Vf
dGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIkVycm9yOiBhc3Nl
cnRfZXF1YWxzOiBleHBlY3RlZCAoc3RyaW5nKSAiUE9TVCIgYnV0IGdvdCAodW5kZWZpbmVkKSB1
bmRlZmluZWQiCitQQVNTIFhIUiB3aXRoIGZvcm0gZGF0YSAKIFBBU1MgWEhSIHdpdGggbW9kZS9j
cmVkZW50aWFscyBzZXQgCiBQQVNTIFhIUiB0byBkYXRhIFVSTCAKIFBBU1MgcmVzdG9yZSBnbG9i
YWwgc3RhdGUgCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380863</attachid>
            <date>2019-10-14 02:35:12 -0700</date>
            <delta_ts>2019-12-13 15:22:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202309-20191014113509.patch</filename>
            <type>text/plain</type>
            <size>108714</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWZjYTE4Nzg3YmVkOWEz
ZDQxZjVlNzQ1NDcxY2Q5NjljODVkZjdlYS4uM2RlNzNhMjZiZTg2NmJmZmQyYjlmYjg4MmJmMTBm
MDE1MzRiY2VjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTEwLTEzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBIYW5kbGUgc2VydmljZSB3
b3JrZXIgbG9hZHMgdGhyb3VnaCBOZXR3b3JrUmVzb3VyY2VMb2FkZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjMwOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbG93IHRvIHNlcmlhbGl6ZSBIVFRQ
IGhlYWRlciBuYW1lcyBhcyBlbnVtZXJhdGlvbi4KKyAgICAgICAgVXBkYXRlZCBTV1NlcnZlciBh
YmlsaXR5IHRvIGhhbmRsZSBzY2hlbWVzIGJ5IGFkZGluZyBidWlsdC1pbiBzdXBwb3J0IGZvciBI
VFRQIGFuZCBIVFRQUyBhcyBkb25lIGluIExlZ2FjeVNjaGVtZVJlZ2lzdHJ5LgorCisgICAgICAg
IENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VM
b2FkZXJPcHRpb25zLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jcmVhdGUtaHR0cC1o
ZWFkZXItbmFtZS10YWJsZToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpjYW5IYW5kbGVTY2hlbWUgY29u
c3QpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2IpOgorCiAyMDE5LTEw
LTEzICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXVzZSBl
eGlzdGluZyB3ZWIgcHJvY2Vzc2VzIGZvciBydW5uaW5nIHNlcnZpY2Ugd29ya2VycwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCA5Nzk1MTk3OGU5NzJjYWM4M2U4NTQ4ODA1MjViYjMyOGM4ZTU4NGI3Li43NmFiNjcwMTQ4
MDBjY2YyYzljYTgwY2FkYmYzMDU1YjQ1N2ZkN2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBA
CisyMDE5LTEwLTEzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAg
ICBIYW5kbGUgc2VydmljZSB3b3JrZXIgbG9hZHMgdGhyb3VnaCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjMw
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92
ZSBTZXJ2aWNlV29ya2VyRmV0Y2hDbGllbnQuCisgICAgICAgIEluc3RlYWQgd2UgdXNlIHRoZSBu
b3JtYWwgTmV0d29ya1Jlc291cmNlTG9hZGVyL1dlYlJlc291cmNlTG9hZGVyIGNvbW11bmljYXRp
b24gY2hhbm5lbC4KKyAgICAgICAgV2UgcGFzcyBhZGRpdGlvbmFsIHBhcmFtZXRlcnMsIGluIHBh
cnRpY3VsYXIgc2VydmljZSB3b3JrZXIgbW9kZSBhbmQgcmVnaXN0cmF0aW9uIGlkZW50aWZpZXIu
CisKKyAgICAgICAgQmFzZWQgb24gdGhhdCBpbmZvcm1hdGlvbiwgbmV0d29yayBwcm9jZXNzIHdp
bGwgZGVjaWRlIHdoZXRoZXIgdG8gbG9hZCBmcm9tIHNlcnZpY2Ugd29ya2VyIG9yIG5ldHdvcmsu
CisgICAgICAgIFRoZSBmaXJzdCBhZHZhbnRhZ2UgaXMgdGhhdCBpbiBjYXNlIG9mIHNlcnZpY2Ug
d29ya2VyIG5vdCBoYW5kbGluZyB0aGUgbG9hZCwgZ29pbmcgdG8gdGhlIG5ldHdvcmsgaXMgZmFz
dGVyLgorICAgICAgICBUaGlzIHdpbGwgYWxzbyBhbGxvdyB1cyB0byBkbyB0aGUgcmVnaXN0cmF0
aW9uIG1hdGNoaW5nIGluIG5ldHdvcmsgcHJvY2VzcyB3aGVuIHJlY2VpdmluZyBhIG5hdmlnYXRp
b24gcmVxdWVzdC4KKworICAgICAgICBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrIGlzIG5vdyBiZWVm
ZWQgdXAgdG8gZG8gdGhlIGxpbmsgYmV0d2VlbiBzZXJ2aWNlIHdvcmtlciBhbmQgTmV0d29ya1Jl
c291cmNlTG9hZGVyL1dlYlJlc291cmNlTG9hZGVyLgorICAgICAgICBUbyBzdXBwb3J0IHRoZSBz
YW1lIGNvbnNvbGUgbG9nZ2luZywgd2UgYWRkIGEgbmV3IG1lc3NhZ2UgY2FsbGVkIERpZEZhaWxT
ZXJ2aWNlV29ya2VyTG9hZC4KKworICAgICAgICBUbyBzdXBwb3J0IEFQSSB0ZXN0cywgd2UgY29u
dGludWUgdG8gZ28gdG8gdGhlIHNlcnZpY2Ugd29ya2VyIGJlZm9yZSB0cnlpbmcgdG8gZ28gdG8g
VVJMIHNjaGVtZSBoYW5kbGVycy4KKyAgICAgICAgVGhpcyBhZGRzIHNvbWUgYnVyZGVuIGFzIHdl
IG5lZWQgdG8gZ28gdG8gbmV0d29yayBwcm9jZXNzL3NlcnZpY2Ugd29ya2VyIHByb2Nlc3MgYW5k
LCBpbiBjYXNlIGxvYWQgaXMgbm90IGhhbmRsZWQKKyAgICAgICAgYnkgc2VydmljZSB3b3JrZXIs
IHdlIGdvIGJhY2sgdG8gdGhlIHdlYiBwcm9jZXNzIHRvIGRvIHRoZSBsb2FkIHRocm91Z2ggVVJM
IHNjaGVtZSBoYW5kbGVycy4KKyAgICAgICAgRm9yIHRoYXQgcHVycG9zZSB3ZSB1c2UgU2Vydmlj
ZVdvcmtlcnNNb2RlOjpPbmx5LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291
cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNjaGVk
dWxlUmVzb3VyY2VMb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6YWJvcnQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmRpZEZhaWxMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0V2l0aFNlcnZpY2VXb3JrZXIpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlcnZpY2VXb3JrZXJEaWROb3RI
YW5kbGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZl
dGNoVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2spOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrOjp+U2VydmljZVdvcmtlckZldGNoVGFzayk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OnNlbmRUb1NlcnZpY2VXb3JrZXIpOgorICAgICAgICAoV2ViS2l0
OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpzZW5kVG9DbGllbnQpOgorICAgICAgICAoV2ViS2l0
OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpzdGFydCk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OnN0YXJ0RmV0Y2gpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSk6CisgICAgICAgIChX
ZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAg
ICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZUZvcm1EYXRh
KToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkRmluaXNoKToK
KyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkRmFpbCk6CisgICAg
ICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZE5vdEhhbmRsZSk6CisgICAg
ICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmNhbmNlbEZyb21DbGllbnQpOgor
ICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpjb250aW51ZURpZFJlY2Vp
dmVGZXRjaFJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFz
azo6Y29udGludWVGZXRjaFRhc2tXaXRoKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtl
ckZldGNoVGFzazo6dGltZW91dFRpbWVyRmlyZWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oOgorICAgICAgICAoV2ViS2l0
OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpmZXRjaElkZW50aWZpZXIgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpzZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlckNvbm5lY3Rp
b246OmNhbmNlbEZldGNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9u
OjpjcmVhdGVGZXRjaFRhc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlckNvbm5lY3Rp
b246OnN0YXJ0RmV0Y2gpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnN0
YXJ0RmV0Y2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmRpZFJlY2VpdmVGZXRjaFRhc2tNZXNzYWdl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpyZWdp
c3RlckZldGNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjp1bnJlZ2lzdGVyRmV0Y2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246OmZldGNoVGFza1RpbWVkT3V0KToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmlwY0Nvbm5lY3Rp
b24gY29uc3QpOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJT
dHJhdGVneTo6c2NoZWR1bGVMb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6
ZGlkRmFpbFNlcnZpY2VXb3JrZXJMb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkZXI6OnNlcnZpY2VXb3JrZXJEaWROb3RIYW5kbGUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0
b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLmg6IFJlbW92ZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5tZXNz
YWdlcy5pbjogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGll
bnRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGll
bnRDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VX
b3JrZXJQcm92aWRlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZp
Y2VXb3JrZXJQcm92aWRlci5oOgorCiAyMDE5LTEwLTEzICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5u
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXVzZSBleGlzdGluZyB3ZWIgcHJvY2Vzc2VzIGZvciBy
dW5uaW5nIHNlcnZpY2Ugd29ya2VycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyT3B0aW9ucy5oCmluZGV4IDllMzA3NGRhMzIxMWQwZWU5N2I4ZWIyZWRmNDkxNjllYzVk
ZjJhNGEuLmRiZWExYmZhYTNlYzQ3ZmE3ODRmYTdmZThjODY3M2U2Njk0MTUzNGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgKQEAgLTMxLDYgKzMx
LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5UmVz
cG9uc2VIZWFkZXJzLmgiCisjaW5jbHVkZSAiQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmgiCiAj
aW5jbHVkZSAiRmV0Y2hPcHRpb25zLmgiCiAjaW5jbHVkZSAiSFRUUEhlYWRlck5hbWVzLmgiCiAj
aW5jbHVkZSAiU2VydmljZVdvcmtlclR5cGVzLmgiCkBAIC0xNTEsNyArMTUyLDcgQEAgc3RydWN0
IFJlc291cmNlTG9hZGVyT3B0aW9ucyA6IHB1YmxpYyBGZXRjaE9wdGlvbnMgewogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKICAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI7CiAjZW5kaWYK
LSAgICBIYXNoU2V0PEhUVFBIZWFkZXJOYW1lLCBXVEY6OkludEhhc2g8SFRUUEhlYWRlck5hbWU+
LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPEhUVFBIZWFkZXJOYW1lPj4gaHR0cEhlYWRlcnNU
b0tlZXA7CisgICAgSFRUUEhlYWRlck5hbWVTZXQgaHR0cEhlYWRlcnNUb0tlZXA7CiAgICAgT3B0
aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzPiBjc3BSZXNwb25zZUhl
YWRlcnM7CiAgICAgdW5zaWduZWQgbWF4UmVkaXJlY3RDb3VudCB7IDIwIH07CiAKQEAgLTE3NSwz
ICsxNzYsMTYgQEAgc3RydWN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyA6IHB1YmxpYyBGZXRjaE9w
dGlvbnMgewogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsK
KwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpTZXJ2aWNlV29ya2Vyc01v
ZGU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2Vyc01vZGUsCisgICAgICAgIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJzTW9kZTo6
QWxsLAorICAgICAgICBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vyc01vZGU6Ok5vbmUsCisgICAgICAg
IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJzTW9kZTo6T25seQorICAgID47Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3JlYXRlLWh0dHAtaGVhZGVyLW5hbWUtdGFibGUgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NyZWF0ZS1odHRwLWhlYWRlci1uYW1lLXRhYmxlCmluZGV4IDY0N2NkZDgyNDJmYWY3
ODVlMDIzMTQzNGQwMDkwZTZjMzk3NzNkYWQuLjQzOWRiNjhjMzJjNDNlMDgzYjAwMDY3OGQ3MmNl
MzU5ZGFkM2UyOWYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3JlYXRlLWh0dHAtaGVhZGVyLW5hbWUtdGFibGUKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jcmVhdGUtaHR0cC1oZWFkZXItbmFtZS10YWJsZQpAQCAtMjMzLDYgKzIzMywy
OCBAQCBXRUJDT1JFX0VYUE9SVCBTdHJpbmdWaWV3IGh0dHBIZWFkZXJOYW1lU3RyaW5nKEhUVFBI
ZWFkZXJOYW1lKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCituYW1lc3BhY2UgV1RGIHsK
KwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpIVFRQSGVhZGVyTmFtZT4g
eworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OkhUVFBI
ZWFkZXJOYW1lLAorJycnKQorCitpc19maXJzdCA9IFRydWUKK2ZvciBodHRwX2hlYWRlcl9uYW1l
IGluIGh0dHBfaGVhZGVyX25hbWVzOgorICAgIGlmIGlzX2ZpcnN0OgorICAgICAgICBpc19maXJz
dCA9IEZhbHNlCisgICAgZWxzZToKKyAgICAJaGVhZGVyX2ZpbGUud3JpdGUoJyxcbicpCisKKyAg
ICBoZWFkZXJfZmlsZS53cml0ZSgnICAgICAgICBXZWJDb3JlOjpIVFRQSGVhZGVyTmFtZTo6JXMn
ICUgaHR0cF9oZWFkZXJfbmFtZV90b19pZFtodHRwX2hlYWRlcl9uYW1lXSkKKworaGVhZGVyX2Zp
bGUud3JpdGUoJycnCisgICAgPjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCiAjZW5kaWYg
Ly8gSFRUUEhlYWRlck5hbWVzX2gKICcnJykKIGhlYWRlcl9maWxlLmNsb3NlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXgg
OWJiNjZhYjI4ZTA3NWUwNzAwY2YzYzc2OWNlM2NlYjJmMzZiODYwMC4uMzcxODg2MGUzMTg2OWM4
YWQ0Y2NiNWZiOGE0NzdiZmU0M2E3OGE1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTk3NCw2ICs5NzQsMjEgQEAgdm9p
ZCBTV1NlcnZlcjo6Y3JlYXRlQ29udGV4dENvbm5lY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHJlZ2lzdHJhYmxlRG9tYWkKICAgICBtX2NyZWF0ZUNvbnRleHRDb25uZWN0aW9uQ2FsbGJh
Y2socmVnaXN0cmFibGVEb21haW4pOwogfQogCitib29sIFNXU2VydmVyOjpjYW5IYW5kbGVTY2hl
bWUoU3RyaW5nVmlldyBzY2hlbWUpIGNvbnN0Cit7CisgICAgaWYgKHNjaGVtZS5pc051bGwoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKHNjaGVtZS5zdWJzdHJpbmcoMCwgNCksICJodHRwIikpIHsKKyAgICAgICAgaWYgKHNj
aGVtZS5sZW5ndGgoKSA9PSA0KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlm
IChzY2hlbWUubGVuZ3RoKCkgPT0gNSAmJiBpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKHNjaGVt
ZVs0XSwgJ3MnKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVy
biBtX3JlZ2lzdGVyZWRTY2hlbWVzLmNvbnRhaW5zKHNjaGVtZS50b1N0cmluZ1dpdGhvdXRDb3B5
aW5nKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmgKaW5kZXggNDYwMTMxNzYxNmM4MTY3NDhkMjA4MDBmMjYwYjM1Mjg1NzQ4
ODE3MC4uZTNlYzFiZWI0NjJkMWM0ZWQwZDcwMDMyZWNmMmFjMmUxNjZkZWI1MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaApAQCAtMTY0
LDcgKzE2NCw3IEBAIHB1YmxpYzoKICAgICBDb25uZWN0aW9uKiBjb25uZWN0aW9uKFNXU2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0
aW9ucy5nZXQoaWRlbnRpZmllcik7IH0KIAogICAgIGNvbnN0IEhhc2hNYXA8U1dTZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPENvbm5lY3Rpb24+PiYgY29ubmVjdGlv
bnMoKSBjb25zdCB7IHJldHVybiBtX2Nvbm5lY3Rpb25zOyB9Ci0gICAgY29uc3QgSGFzaFNldDxT
dHJpbmc+IHJlZ2lzdGVyZWRTY2hlbWVzKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RlcmVkU2No
ZW1lczsgfQorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY2FuSGFuZGxlU2NoZW1lKFN0cmluZ1Zp
ZXcpIGNvbnN0OwogCiAgICAgU1dPcmlnaW5TdG9yZSYgb3JpZ2luU3RvcmUoKSB7IHJldHVybiBt
X29yaWdpblN0b3JlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCmluZGV4IDc3OGFlN2Q2YzgzMzc3
ZTdkMWU0MmZlZDcyMGMzM2M3NTdmZTJkMWYuLjZkN2NkYTA1ZmY3OTI2Njg5MTRhZThjNGRjYmY3
MGFkMzllODg5MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcApAQCAtMjU5LDcgKzI1OSw3IEBAIHZv
aWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2IoY29uc3QgU2VydmljZVdvcmtlckpv
YkRhdGEmIGpvYikKIHsKICAgICBBU1NFUlQoam9iLnR5cGUgPT0gU2VydmljZVdvcmtlckpvYlR5
cGU6OlJlZ2lzdGVyKTsKIAotICAgIGlmICghc2hvdWxkVHJlYXRBc1BvdGVudGlhbGx5VHJ1c3R3
b3J0aHkoam9iLnNjcmlwdFVSTCkgJiYgIW1fc2VydmVyLnJlZ2lzdGVyZWRTY2hlbWVzKCkuY29u
dGFpbnMoam9iLnNjcmlwdFVSTC5wcm90b2NvbCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkp
CisgICAgaWYgKCFzaG91bGRUcmVhdEFzUG90ZW50aWFsbHlUcnVzdHdvcnRoeShqb2Iuc2NyaXB0
VVJMKSAmJiAhbV9zZXJ2ZXIuY2FuSGFuZGxlU2NoZW1lKGpvYi5zY3JpcHRVUkwucHJvdG9jb2wo
KSkpCiAgICAgICAgIHJldHVybiByZWplY3RDdXJyZW50Sm9iKEV4Y2VwdGlvbkRhdGEgeyBTZWN1
cml0eUVycm9yLCAiU2NyaXB0IFVSTCBpcyBub3QgcG90ZW50aWFsbHkgdHJ1c3R3b3J0aHkiX3Mg
fSk7CiAKICAgICAvLyBJZiB0aGUgb3JpZ2luIG9mIGpvYidzIHNjcmlwdCB1cmwgaXMgbm90IGpv
YidzIHJlZmVycmVyJ3Mgb3JpZ2luLCB0aGVuOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
TWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXggZjdjZDE4
YmQyOTIzM2I4NThmZTdjN2RkMzc1YTlhOTk2M2E2OTI2ZS4uMWUwNmU2MjYwY2QyZDk0ZTI0ODA4
ZWI1N2YwNDI3MGYxMzUzYTQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC0xOTAsNyArMTkwLDYg
QEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KICAgICBXZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJveHkubWVzc2FnZXMuaW4KIAotICAgIFdlYlByb2Nlc3MvU3RvcmFn
ZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gubWVzc2FnZXMuaW4KICAgICBXZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAgICAgV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1Nv
dXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCAyZTQ3NjYw
ODU0MDNkNDIwN2YyYmYxNzJlOTljNzg0NjkwYTljY2UxLi5mMWFkYWQ2MjY5ZDAxMmNhYjFkZDcy
YjU5MDUyNThlZjkwOWY5NWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3Vy
Y2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy1p
bnB1dC54Y2ZpbGVsaXN0CkBAIC0xMDUsNyArMTA1LDYgQEAgJChQUk9KRUNUX0RJUikvV2ViUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KICQo
UFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nl
c3NDb25uZWN0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgogJChQUk9KRUNUX0RJUikvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5Lm1lc3NhZ2VzLmluCi0kKFBST0pFQ1RfRElSKS9XZWJQcm9j
ZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLm1lc3NhZ2VzLmluCiAkKFBST0pF
Q1RfRElSKS9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCiAkKFBST0pFQ1RfRElSKS9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KICQoUFJPSkVDVF9ESVIpL1dlYlByb2Nlc3MvVXNlckNv
bnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCBiZDlkZDdmNjMzYzE3
YmNmMjk5MDg3N2YxZGUzYWFlNGE4ZmI0N2FjLi4xYzVkMjE0ZDAwNzFkMjY4NGZkY2M4YjhlNGFj
OWM2NWJkOTdkYjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLW91
dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMtb3V0cHV0
LnhjZmlsZWxpc3QKQEAgLTgwLDggKzgwLDYgQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYktpdDIvUmVtb3RlV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2ZXIKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1JlbW90ZVdlYkluc3Bl
Y3RvclVJTWVzc2FnZXMuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dl
YktpdDIvU2VjSXRlbVNoaW1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1NlY0l0ZW1TaGltUHJveHlNZXNzYWdlcy5o
Ci0kKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TZXJ2aWNlV29y
a2VyQ2xpZW50RmV0Y2hNZXNzYWdlUmVjZWl2ZXIuY3BwCi0kKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlcy5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9TZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrTWVzc2FnZVJlY2VpdmVyLmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYktpdDIvU2VydmljZVdvcmtlckZldGNoVGFza01lc3NhZ2VzLmgKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL1NtYXJ0TWFnbmlmaWNh
dGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1h
a2UKaW5kZXggOWRlNzA0MjY2YWZlZTUxMzZlNjVlODQ3ODFiNWEwMjUyNTE1N2FjOS4uYmFlN2Mz
MTllNDc2NDQ1YTljZTM2ZTYyZDc2ZWZlZGRmNjZhYjEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMubWFrZQpAQCAtMTMyLDcgKzEzMiw2IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFJl
bW90ZVdlYkluc3BlY3RvclByb3h5IFwKICAgICBSZW1vdGVXZWJJbnNwZWN0b3JVSSBcCiAgICAg
U2VjSXRlbVNoaW1Qcm94eSBcCi0gICAgU2VydmljZVdvcmtlckNsaWVudEZldGNoIFwKICAgICBT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrIFwKICAgICBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVy
IFwKICAgICBTdG9yYWdlQXJlYU1hcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4
IDI0N2M3MWFlZWE4MWZkMjAzM2FhNjc3MDIwZDI0YmY0N2YzM2QyYTkuLmM4YTA3NjY3OTYyOWFi
YzI0ZGY1ZjY1M2E0ODMxNzMxZGIzYzc5OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CkBAIC00MDUsOSArNDA1LDEzIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OnNjaGVkdWxlUmVzb3VyY2VMb2FkKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhCiAgICAgUkVMRUFT
RV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIEFTU0VSVCghbV9uZXR3b3JrUmVzb3Vy
Y2VMb2FkZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKIAotICAgIGF1dG8gbG9hZGVyID0gTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpjcmVhdGUoV1RGTW92ZShsb2FkUGFyYW1ldGVycyksICp0aGlz
KTsKLSAgICBtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMuYWRkKGlkZW50aWZpZXIsIGxvYWRlci5j
b3B5UmVmKCkpOworICAgIGF1dG8mIGxvYWRlciA9IG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5h
ZGQoaWRlbnRpZmllciwgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjcmVhdGUoV1RGTW92ZShsb2Fk
UGFyYW1ldGVycyksICp0aGlzKSkuaXRlcmF0b3ItPnZhbHVlOworCisjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQorICAgIGxvYWRlci0+c3RhcnRXaXRoU2VydmljZVdvcmtlcihtX3N3Q29ubmVj
dGlvbi5nZXQoKSk7CisjZWxzZQogICAgIGxvYWRlci0+c3RhcnQoKTsKKyNlbmRpZgogfQogCiB2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwZXJmb3JtU3luY2hyb25vdXNMb2Fk
KE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMsIE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6
RGVsYXllZFJlcGx5JiYgcmVwbHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4IGUy
OGM3ZDE0YmQxMGE0Yzc0YTc0YzU0ZjE0NjJkYjU5NDIzMDEzYzUuLjhkYmQyNWU2ZTYwNjM4MmFh
MGRhYzAxZjFlODBiOWYxNzhkOTM0NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCkBA
IC0xMDcsNiArMTA3LDEyIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVu
Y29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBmcmFtZUFu
Y2VzdG9yT3JpZ2luczsKICAgICBlbmNvZGVyIDw8IGlzSFRUUFNVcGdyYWRlRW5hYmxlZDsKIAor
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBlbmNvZGVyIDw8IHNlcnZpY2VXb3JrZXJz
TW9kZTsKKyAgICBlbmNvZGVyIDw8IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
OworICAgIGVuY29kZXIgPDwgaHR0cEhlYWRlcnNUb0tlZXA7CisjZW5kaWYKKwogI2lmIEVOQUJM
RShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgZW5jb2RlciA8PCBtYWluRG9jdW1lbnRVUkw7CiAg
ICAgZW5jb2RlciA8PCB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwpAQCAtMjQyLDcg
KzI0OCwyNyBAQCBPcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycz4gTmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29kZShJUAogICAgIGlmICghaXNIVFRQU1VwZ3Jh
ZGVFbmFibGVkKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIHJlc3VsdC5pc0hU
VFBTVXBncmFkZUVuYWJsZWQgPSAqaXNIVFRQU1VwZ3JhZGVFbmFibGVkOwotICAgIAorCisjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJzTW9kZT4g
c2VydmljZVdvcmtlcnNNb2RlOworICAgIGRlY29kZXIgPj4gc2VydmljZVdvcmtlcnNNb2RlOwor
ICAgIGlmICghc2VydmljZVdvcmtlcnNNb2RlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIHJlc3VsdC5zZXJ2aWNlV29ya2Vyc01vZGUgPSAqc2VydmljZVdvcmtlcnNNb2RlOwor
CisgICAgT3B0aW9uYWw8T3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXI+PiBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+
IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOworICAgIGlmICghc2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgcmVzdWx0LnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyID0gKnNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOworCisgICAgT3B0aW9uYWw8SFRUUEhlYWRl
ck5hbWVTZXQ+IGh0dHBIZWFkZXJzVG9LZWVwOworICAgIGRlY29kZXIgPj4gaHR0cEhlYWRlcnNU
b0tlZXA7CisgICAgaWYgKCFodHRwSGVhZGVyc1RvS2VlcCkKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXN1bHQuaHR0cEhlYWRlcnNUb0tlZXAgPSBXVEZNb3ZlKCpodHRwSGVh
ZGVyc1RvS2VlcCk7CisjZW5kaWYKKwogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubWFpbkRvY3VtZW50VVJMKSkKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaAppbmRleCAxMjAzNDcw
NGRhOTI3YjVhMmZjMWI1Y2VmZTk5YmJmODJiZmRmNTc0Li5lODdkYzdhY2FmNTEzN2VhYWE1NTcz
MThlNDVhZDQ5MjI5YjA4ZTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCkBAIC0yOSw2ICsy
OSw3IEBACiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIlVzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRTZWN1
cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmln
aW5BY2Nlc3NDb250cm9sLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GZXRjaE9wdGlvbnMuaD4KICNp
bmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogCkBAIC02MCw2ICs2MSwxMiBAQCBwdWJsaWM6CiAgICAg
VmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+IGZyYW1lQW5jZXN0b3JPcmln
aW5zOwogICAgIGJvb2wgaXNIVFRQU1VwZ3JhZGVFbmFibGVkIHsgZmFsc2UgfTsKIAorI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vyc01vZGUgc2Vy
dmljZVdvcmtlcnNNb2RlIHsgV2ViQ29yZTo6U2VydmljZVdvcmtlcnNNb2RlOjpOb25lIH07Cisg
ICAgT3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+
IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOworICAgIFdlYkNvcmU6OkhUVFBI
ZWFkZXJOYW1lU2V0IGh0dHBIZWFkZXJzVG9LZWVwOworI2VuZGlmCisKICNpZiBFTkFCTEUoQ09O
VEVOVF9FWFRFTlNJT05TKQogICAgIFVSTCBtYWluRG9jdW1lbnRVUkw7CiAgICAgT3B0aW9uYWw8
VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcj4gdXNlckNvbnRlbnRDb250cm9sbGVySWRl
bnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBmYjM3MmQ3OWRlY2I5NmNlYTUxYjdjZTQzMTNmZjQ2
ODExYzE5ZGJkLi44Nzk3OTM5MzdjMzNkZmRiNTJlYjIxNjFlMjRkZTdlM2UyMzEzYTYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwCkBAIC0zNzksNiArMzc5LDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
OjphYm9ydCgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCisgICAgaWYgKGF1dG8gdGFzayA9IFdURk1vdmUobV9zZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrKSkKKyAgICAgICAgdGFzay0+Y2FuY2VsRnJvbUNsaWVudCgpOworI2VuZGlmCisKICAgICBp
ZiAobV9uZXR3b3JrTG9hZCkgewogICAgICAgICBpZiAoY2FuVXNlQ2FjaGUobV9uZXR3b3JrTG9h
ZC0+Y3VycmVudFJlcXVlc3QoKSkpIHsKICAgICAgICAgICAgIC8vIFdlIG1pZ2h0IGFscmVhZHkg
aGF2ZSB1c2VkIGRhdGEgZnJvbSB0aGlzIGluY29tcGxldGUgbG9hZC4gRW5zdXJlIG9sZGVyIHZl
cnNpb25zIGRvbid0IHJlbWFpbiBpbiB0aGUgY2FjaGUgYWZ0ZXIgY2FuY2VsLgpAQCAtNjEyLDgg
KzYxNywxNiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbExvYWRpbmcoY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAgICAgaWYgKGlzU3luY2hyb25vdXMoKSkgewogICAg
ICAgICBtX3N5bmNocm9ub3VzTG9hZERhdGEtPmVycm9yID0gZXJyb3I7CiAgICAgICAgIHNlbmRS
ZXBseVRvU3luY2hyb25vdXNSZXF1ZXN0KCptX3N5bmNocm9ub3VzTG9hZERhdGEsIG51bGxwdHIp
OwotICAgIH0gZWxzZSBpZiAoYXV0byogY29ubmVjdGlvbiA9IG1lc3NhZ2VTZW5kZXJDb25uZWN0
aW9uKCkpCisgICAgfSBlbHNlIGlmIChhdXRvKiBjb25uZWN0aW9uID0gbWVzc2FnZVNlbmRlckNv
bm5lY3Rpb24oKSkgeworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICAgICAgaWYgKG1f
c2VydmljZVdvcmtlckZldGNoVGFzaykKKyAgICAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGYWlsU2VydmljZVdvcmtlckxvYWQoZXJyb3Ip
LCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZhaWxS
ZXNvdXJjZUxvYWQoZXJyb3IpLCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpKTsKKyNlbHNl
CiAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpE
aWRGYWlsUmVzb3VyY2VMb2FkKGVycm9yKSwgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSk7
CisjZW5kaWYKKyAgICB9CiAKICAgICBjbGVhbnVwKExvYWRSZXN1bHQ6OkZhaWx1cmUpOwogfQpA
QCAtNzQ3LDYgKzc2MCwxMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmVzdGFydE5l
dHdvcmtMb2FkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIG5ld1JlcQogCiB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
JiYgbmV3UmVxdWVzdCwgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscykKIHsK
KyAgICBpZiAobV9zZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKSB7CisgICAgICAgIG1fc2VydmljZVdv
cmtlckZldGNoVGFzay0+Y29udGludWVGZXRjaFRhc2tXaXRoKFdURk1vdmUobmV3UmVxdWVzdCkp
OworICAgICAgICByZXR1cm47CisgICAgfQogICAgIGlmIChtX3Nob3VsZFJlc3RhcnRMb2FkKSB7
CiAgICAgICAgIG1fc2hvdWxkUmVzdGFydExvYWQgPSBmYWxzZTsKIApAQCAtNzkyLDYgKzgwOSwx
MSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVXaWxsU2VuZFJlcXVlc3Qo
UmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdAogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKQogeworICAgIGlmIChtX3NlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2spIHsKKyAgICAgICAgbV9zZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLT5jb250aW51
ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAg
ICBpZiAobV9jYWNoZUVudHJ5V2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKSB7
CiAgICAgICAgIHNlbmRSZXN1bHRGb3JDYWNoZUVudHJ5KFdURk1vdmUobV9jYWNoZUVudHJ5V2Fp
dGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKSk7CiAgICAgICAgIGNsZWFudXAoTG9h
ZFJlc3VsdDo6U3VjY2Vzcyk7CkBAIC0xMTk2LDYgKzEyMTgsMzEgQEAgYm9vbCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmlzQ3Jvc3NPcmlnaW5QcmVmZXRjaCgpIGNvbnN0CiAgICAgcmV0dXJuIHJl
cXVlc3QuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpQdXJwb3NlKSA9PSAicHJlZmV0
Y2giICYmICFtX3BhcmFtZXRlcnMuc291cmNlT3JpZ2luLT5jYW5SZXF1ZXN0KHJlcXVlc3QudXJs
KCkpOwogfQogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQordm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OnN0YXJ0V2l0aFNlcnZpY2VXb3JrZXIoV2ViU1dTZXJ2ZXJDb25uZWN0aW9uKiBz
d0Nvbm5lY3Rpb24pCit7CisgICAgQVNTRVJUKCFtX3NlcnZpY2VXb3JrZXJGZXRjaFRhc2spOwor
ICAgIG1fc2VydmljZVdvcmtlckZldGNoVGFzayA9IHN3Q29ubmVjdGlvbiA/IHN3Q29ubmVjdGlv
bi0+Y3JlYXRlRmV0Y2hUYXNrKCp0aGlzKSA6IG51bGxwdHI7CisgICAgaWYgKG1fc2VydmljZVdv
cmtlckZldGNoVGFzaykKKyAgICAgICAgcmV0dXJuOworCisgICAgc2VydmljZVdvcmtlckRpZE5v
dEhhbmRsZSgpOworfQorCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VydmljZVdvcmtl
ckRpZE5vdEhhbmRsZSgpCit7CisgICAgaWYgKG1fcGFyYW1ldGVycy5zZXJ2aWNlV29ya2Vyc01v
ZGUgPT0gU2VydmljZVdvcmtlcnNNb2RlOjpPbmx5KSB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6
OldlYlJlc291cmNlTG9hZGVyOjpTZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlIHsgfSwgaWRlbnRp
ZmllcigpKTsKKyAgICAgICAgYWJvcnQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IG1fc2VydmljZVdvcmtlckZldGNoVGFzayA9IG51bGxwdHI7CisgICAgc3RhcnQoKTsKK30KKwor
I2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmgKaW5kZXggZDY1MDcyYjcyYmQ0MTMxNDFhMDZiMjg3YzQ1MjY5YmU0MmFm
MDc3Ni4uNzFmODFiYjQ2MjVkODM0NWM2NDgwNzI3ZjhhNjU0YzM2N2NmN2RlYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5o
CkBAIC01MSw2ICs1MSw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M7CiBjbGFzcyBOZXR3b3JrTG9hZDsKIGNsYXNzIE5ldHdvcmtMb2Fk
Q2hlY2tlcjsKK2NsYXNzIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s7CitjbGFzcyBXZWJTV1NlcnZl
ckNvbm5lY3Rpb247CiAKIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewogY2xhc3MgRW50cnk7CkBA
IC04OCw3ICs5MCw4IEBAIHB1YmxpYzoKICAgICBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGlkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMuaWRlbnRpZmllcjsgfQogICAgIFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0
ZXJzLndlYkZyYW1lSUQ7IH0KICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQoKSBj
b25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMud2ViUGFnZUlEOyB9Ci0gICAgCisgICAgY29uc3Qg
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVy
biBtX3BhcmFtZXRlcnM7IH0KKwogICAgIE5ldHdvcmtDYWNoZTo6R2xvYmFsRnJhbWVJRCBnbG9i
YWxGcmFtZUlEKCkgeyByZXR1cm4geyBtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIHBhZ2VJ
RCgpLCBmcmFtZUlEKCkgfTsgfQogCiAgICAgc3RydWN0IFN5bmNocm9ub3VzTG9hZERhdGE7CkBA
IC0xMjIsNiArMTI1LDExIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNLZXB0QWxpdmUoKSBjb25z
dCB7IHJldHVybiBtX2lzS2VwdEFsaXZlOyB9CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CisgICAgdm9pZCBzdGFydFdpdGhTZXJ2aWNlV29ya2VyKFdlYlNXU2VydmVyQ29ubmVjdGlvbiop
OworICAgIHZvaWQgc2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSgpOworI2VuZGlmCisKIHByaXZh
dGU6CiAgICAgTmV0d29ya1Jlc291cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzJiYsIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVw
bHkmJik7CiAKQEAgLTIyMCw2ICsyMjgsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0tlcHRB
bGl2ZSB7IGZhbHNlIH07CiAKICAgICBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBt
X25ldHdvcmtBY3Rpdml0eVRyYWNrZXI7CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAg
IHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBtX3NlcnZpY2VXb3JrZXJG
ZXRjaFRhc2s7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCmluZGV4IDgzNGI1NjllNDIyNzVmMTM0ODdl
Yzc3ZGVhMTVlMGJjM2YwYWEyNWYuLmQ0NTdlMjFmOWVjN2I1ZGU0MGZkMjliNjU5YTRiODIyZDcw
NTRiNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKQEAgLTMy
LDEwICszMiwxNCBAQAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJGb3Jt
RGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJTZXJ2aWNl
V29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgi
CisjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZGVyLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgot
I2luY2x1ZGUgIldlYlNXU2VydmVyQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlJlc291cmNl
TG9hZGVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaD4KIAogI2RlZmlu
ZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihtX3Nlc3Np
b25JRC5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgU2VydmljZVdvcmtlciwgIiVwIC0gU2Vy
dmljZVdvcmtlckZldGNoVGFzazo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCiAjZGVmaW5l
IFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9S
X0lGKG1fc2Vzc2lvbklELmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBTZXJ2aWNlV29ya2Vy
LCAiJXAgLSBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1Nf
XykKQEAgLTQ0LDgwICs0OCwxMzUgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi1TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNvbnRleHRDb25uZWN0
aW9uLCBGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2Vjb25kcyB0aW1lb3V0KQorU2VydmljZVdv
cmtlckZldGNoVGFzazo6U2VydmljZVdvcmtlckZldGNoVGFzayhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIE5ldHdvcmtSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBTV1NlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKICAgICA6IG1fc2Vzc2lvbklEKHNlc3Npb25J
RCkKLSAgICAsIG1fY29ubmVjdGlvbihtYWtlV2Vha1B0cihjb25uZWN0aW9uKSkKLSAgICAsIG1f
Y29udGV4dENvbm5lY3Rpb24oY29udGV4dENvbm5lY3Rpb24pCi0gICAgLCBtX2lkZW50aWZpZXIg
eyBjb25uZWN0aW9uLmlkZW50aWZpZXIoKSwgZmV0Y2hJZGVudGlmaWVyIH0KKyAgICAsIG1fbG9h
ZGVyKGxvYWRlcikKKyAgICAsIG1fZmV0Y2hJZGVudGlmaWVyKFdlYkNvcmU6OkZldGNoSWRlbnRp
Zmllcjo6Z2VuZXJhdGUoKSkKKyAgICAsIG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIpCiAgICAgLCBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQotICAgICwgbV90aW1lb3V0KHRpbWVvdXQpCiAgICAg
LCBtX3RpbWVvdXRUaW1lcigqdGhpcywgJlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnRpbWVvdXRU
aW1lckZpcmVkKQogewotICAgIG1fdGltZW91dFRpbWVyLnN0YXJ0T25lU2hvdChtX3RpbWVvdXQp
OworICAgIG1fdGltZW91dFRpbWVyLnN0YXJ0T25lU2hvdChsb2FkZXIuY29ubmVjdGlvblRvV2Vi
UHJvY2VzcygpLm5ldHdvcmtQcm9jZXNzKCkuc2VydmljZVdvcmtlckZldGNoVGltZW91dCgpKTsK
IH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlUmVkaXJlY3RSZXNw
b25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK1NlcnZpY2VXb3JrZXJGZXRj
aFRhc2s6On5TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZTogJXMiLCBtX2lkZW50aWZpZXIuZmV0
Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBtX3RpbWVv
dXRUaW1lci5zdG9wKCk7CisgICAgaWYgKG1fc2VydmljZVdvcmtlckNvbm5lY3Rpb24pCisgICAg
ICAgIG1fc2VydmljZVdvcmtlckNvbm5lY3Rpb24tPnVucmVnaXN0ZXJGZXRjaCgqdGhpcyk7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIE1lc3NhZ2U+IGJvb2wgU2VydmljZVdvcmtlckZldGNoVGFz
azo6c2VuZFRvU2VydmljZVdvcmtlcihNZXNzYWdlJiYgbWVzc2FnZSkKK3sKKyAgICByZXR1cm4g
bV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbiA/IG1fc2VydmljZVdvcmtlckNvbm5lY3Rpb24tPmlw
Y0Nvbm5lY3Rpb24oKS5zZW5kKHN0ZDo6Zm9yd2FyZDxNZXNzYWdlPihtZXNzYWdlKSwgMCkgOiBm
YWxzZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgTWVzc2FnZT4gYm9vbCBTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOjpzZW5kVG9DbGllbnQoTWVzc2FnZSYmIG1lc3NhZ2UpCit7CisgICAgcmV0dXJu
IG1fbG9hZGVyLmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5jb25uZWN0aW9uKCkuc2VuZChzdGQ6
OmZvcndhcmQ8TWVzc2FnZT4obWVzc2FnZSksIG1fbG9hZGVyLmlkZW50aWZpZXIoKSk7Cit9CisK
K3ZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6c3RhcnQoV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uJiBzZXJ2aWNlV29ya2VyQ29ubmVjdGlvbikKK3sKKyAgICBtX3NlcnZpY2VXb3Jr
ZXJDb25uZWN0aW9uID0gbWFrZVdlYWtQdHIoc2VydmljZVdvcmtlckNvbm5lY3Rpb24pOworICAg
IHNlcnZpY2VXb3JrZXJDb25uZWN0aW9uLnJlZ2lzdGVyRmV0Y2goKnRoaXMpOworCisgICAgc3Rh
cnRGZXRjaChSZXNvdXJjZVJlcXVlc3QgeyBtX2xvYWRlci5vcmlnaW5hbFJlcXVlc3QoKSB9LCBz
ZXJ2aWNlV29ya2VyQ29ubmVjdGlvbik7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlckZldGNoVGFz
azo6c3RhcnRGZXRjaChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24mIHNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKQoreworICAgIG1fY3VycmVu
dFJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpOworCisgICAgYXV0byYgb3B0aW9ucyA9IG1fbG9h
ZGVyLnBhcmFtZXRlcnMoKS5vcHRpb25zOworICAgIGF1dG8gcmVmZXJyZXIgPSBtX2N1cnJlbnRS
ZXF1ZXN0Lmh0dHBSZWZlcnJlcigpOworCisgICAgLy8gV2UgYXJlIGludGVyY2VwdGluZyBmZXRj
aCBjYWxscyBhZnRlciBnb2luZyB0aHJvdWdoIHRoZSBIVFRQIGxheWVyLCB3aGljaCBtYXkgYWRk
IHNvbWUgc3BlY2lmaWMgaGVhZGVycy4KKyAgICBjbGVhbkhUVFBSZXF1ZXN0SGVhZGVyc0ZvckFj
Y2Vzc0NvbnRyb2wobV9jdXJyZW50UmVxdWVzdCwgbV9sb2FkZXIucGFyYW1ldGVycygpLmh0dHBI
ZWFkZXJzVG9LZWVwKTsKKworICAgIGJvb2wgaXNTZW50ID0gc2VuZFRvU2VydmljZVdvcmtlcihN
ZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlN0YXJ0RmV0Y2ggeyBtX3Nl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBtX2Zl
dGNoSWRlbnRpZmllciwgbV9jdXJyZW50UmVxdWVzdCwgb3B0aW9ucywgSVBDOjpGb3JtRGF0YVJl
ZmVyZW5jZSB7IG1fY3VycmVudFJlcXVlc3QuaHR0cEJvZHkoKSB9LCByZWZlcnJlciB9KTsKKyAg
ICBBU1NFUlRfVU5VU0VEKGlzU2VudCwgaXNTZW50KTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOjpkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYg
cmVzcG9uc2UpCit7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlZGly
ZWN0UmVzcG9uc2U6ICVzIiwgbV9mZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwogICAgIG1fd2FzSGFuZGxlZCA9IHRydWU7Ci0gICAgaWYgKG1fY29ubmVjdGlv
bikKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xp
ZW50RmV0Y2g6OkRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlIHsgcmVzcG9uc2UgfSwgbV9pZGVu
dGlmaWVyLmZldGNoSWRlbnRpZmllcik7CisKKyAgICByZXNwb25zZS5zZXRTb3VyY2UoUmVzb3Vy
Y2VSZXNwb25zZTo6U291cmNlOjpTZXJ2aWNlV29ya2VyKTsKKyAgICBhdXRvIG5ld1JlcXVlc3Qg
PSBtX2N1cnJlbnRSZXF1ZXN0LnJlZGlyZWN0ZWRSZXF1ZXN0KHJlc3BvbnNlLCBtX2xvYWRlci5w
YXJhbWV0ZXJzKCkuc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCk7CisK
KyAgICBzZW5kVG9DbGllbnQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpXaWxsU2VuZFJl
cXVlc3QgeyBuZXdSZXF1ZXN0LCByZXNwb25zZSB9KTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCit2b2lk
IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVzcG9uc2UsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3Nh
Z2UpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlOiAl
cyIsIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTog
JXMiLCBtX2ZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAg
ICAgbV90aW1lb3V0VGltZXIuc3RvcCgpOwogICAgIG1fd2FzSGFuZGxlZCA9IHRydWU7Ci0gICAg
aWYgKG1fY29ubmVjdGlvbikKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpT
ZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJlc3BvbnNlLCBu
ZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB9LCBtX2lkZW50aWZpZXIuZmV0
Y2hJZGVudGlmaWVyKTsKKworICAgIHJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNl
OjpTb3VyY2U6OlNlcnZpY2VXb3JrZXIpOworICAgIHNlbmRUb0NsaWVudChNZXNzYWdlczo6V2Vi
UmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJlc3BvbnNlLCBuZWVkc0NvbnRp
bnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB9KTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEs
IGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFtX3RpbWVvdXRUaW1l
ci5pc0FjdGl2ZSgpKTsKLSAgICBpZiAobV9jb25uZWN0aW9uKQotICAgICAgICBtX2Nvbm5lY3Rp
b24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZURh
dGEgeyBkYXRhLCBlbmNvZGVkRGF0YUxlbmd0aCB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlm
aWVyKTsKKyAgICBzZW5kVG9DbGllbnQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRS
ZWNlaXZlRGF0YSB7IElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSB7IGRhdGEuZGF0YSgp
LCBkYXRhLnNpemUoKSB9LCBlbmNvZGVkRGF0YUxlbmd0aCB9KTsKIH0KIAogdm9pZCBTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlRm9ybURhdGEoY29uc3QgSVBDOjpGb3JtRGF0YVJl
ZmVyZW5jZSYgZm9ybURhdGEpCiB7CiAgICAgQVNTRVJUKCFtX3RpbWVvdXRUaW1lci5pc0FjdGl2
ZSgpKTsKLSAgICBpZiAobV9jb25uZWN0aW9uKQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZUZvcm1EYXRhIHsg
Zm9ybURhdGEgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllcik7CisgICAgLy8gRklYTUU6
IEFsbG93IFdlYlJlc291cmNlTG9hZGVyIHRvIHJlY2VpdmUgZm9ybSBkYXRhLgogfQogCiB2b2lk
IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZEZpbmlzaCgpCiB7CiAgICAgQVNTRVJUKCFtX3Rp
bWVvdXRUaW1lci5pc0FjdGl2ZSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRG
aW5pc2hGZXRjaDogZmV0Y2hJZGVudGlmaWVyOiAlcyIsIG1faWRlbnRpZmllci5mZXRjaElkZW50
aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoImRpZEZpbmlzaEZldGNoOiBmZXRjaElkZW50aWZpZXI6ICVzIiwgbV9mZXRjaElk
ZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgIG1fdGltZW91dFRp
bWVyLnN0b3AoKTsKLSAgICBpZiAobV9jb25uZWN0aW9uKQotICAgICAgICBtX2Nvbm5lY3Rpb24t
PnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkRmluaXNoIHsgfSwg
bV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllcik7CisgICAgc2VuZFRvQ2xpZW50KE1lc3NhZ2Vz
OjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkRmluaXNoUmVzb3VyY2VMb2FkIHsgeyB9IH0pOwogfQog
CiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJv
ciYgZXJyb3IpCiB7Ci0gICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgiZGlkRmFpbEZl
dGNoOiBmZXRjaElkZW50aWZpZXI6ICVzIiwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci5s
b2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgbV90aW1lb3V0VGltZXIuc3RvcCgp
OwotICAgIGlmIChtX2Nvbm5lY3Rpb24pCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRGYWlsIHsgZXJyb3IgfSwgbV9pZGVu
dGlmaWVyLmZldGNoSWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dF
RCgiZGlkRmFpbEZldGNoOiBmZXRjaElkZW50aWZpZXI6ICVzIiwgbV9mZXRjaElkZW50aWZpZXIu
bG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIG1fbG9hZGVyLmRpZEZhaWxMb2Fk
aW5nKGVycm9yKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWROb3RIYW5k
bGUoKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZE5vdEhhbmRsZUZldGNoOiBm
ZXRjaElkZW50aWZpZXI6ICVzIiwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci5sb2dnaW5n
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlk
Tm90SGFuZGxlRmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMiLCBtX2ZldGNoSWRlbnRpZmllci5s
b2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgbV90aW1lb3V0VGltZXIuc3RvcCgp
OwotICAgIGlmIChtX2Nvbm5lY3Rpb24pCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWROb3RIYW5kbGUgeyB9LCBtX2lkZW50
aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKKyAgICBtX2xvYWRlci5zZXJ2aWNlV29ya2VyRGlkTm90
SGFuZGxlKCk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6Y2FuY2VsRnJvbUNs
aWVudCgpCit7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY2FuY2VsRnJvbUNsaWVudDog
ZmV0Y2hJZGVudGlmaWVyOiAlcyIsIG1fZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKKyAgICBzZW5kVG9TZXJ2aWNlV29ya2VyKE1lc3NhZ2VzOjpXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Q2FuY2VsRmV0Y2ggeyBtX3NlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyLCBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBtX2ZldGNoSWRlbnRpZmllciB9
KTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpjb250aW51ZURpZFJlY2VpdmVG
ZXRjaFJlc3BvbnNlKCkKK3sKKyAgICBzZW5kVG9TZXJ2aWNlV29ya2VyKE1lc3NhZ2VzOjpXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Q29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25z
ZSB7IG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIG1fc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIG1fZmV0Y2hJZGVudGlmaWVyIH0pOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s6OmNvbnRpbnVlRmV0Y2hUYXNrV2l0aChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQorewor
ICAgIGlmICghbV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbikgeworICAgICAgICBtX2xvYWRlci5z
ZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
c3RhcnRGZXRjaChXVEZNb3ZlKHJlcXVlc3QpLCAqbV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbik7
CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6dGltZW91dFRpbWVyRmlyZWQoKQog
ewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInRpbWVvdXRUaW1lckZpcmVkOiBmZXRjaElk
ZW50aWZpZXI6ICVzIiwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgZGlkTm90SGFuZGxlKCk7Ci0gICAgbV9jb250ZXh0Q29u
bmVjdGlvbi5mZXRjaFRhc2tUaW1lZE91dCgqdGhpcyk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgidGltZW91dFRpbWVyRmlyZWQ6IGZldGNoSWRlbnRpZmllcjogJXMiLCBtX2ZldGNoSWRl
bnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgaWYgKG1fc2Vydmlj
ZVdvcmtlckNvbm5lY3Rpb24pCisgICAgICAgIG1fc2VydmljZVdvcmtlckNvbm5lY3Rpb24tPmZl
dGNoVGFza1RpbWVkT3V0KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCkpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCmluZGV4
IGQ4YjlkNmYyNTY2MzgzNjc3MmYyOWI5ZjliOTllMGEwZTI2Mzk0NWMuLmJkZmQ1ZTY5MzU5OGRj
ODAzZmVmMzg2NGYyNjhlZmIxZDY1YWZmMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJG
ZXRjaFRhc2suaApAQCAtMjgsMTIgKzI4LDE1IEBACiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQogCiAjaW5jbHVkZSA8V2ViQ29yZS9GZXRjaElkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5
cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9u
SUQuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBSZXNvdXJjZUVycm9yOworY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3Vy
Y2VSZXNwb25zZTsKIH0KIApAQCAtNDYsODIgKzQ5LDU5IEBAIGNsYXNzIEZvcm1EYXRhUmVmZXJl
bmNlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
OworY2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZGVyOwogY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOwogCi1jbGFzcyBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrIHsKK2NsYXNzIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjsKK2NsYXNzIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bjsKKworY2xhc3MgU2VydmljZVdvcmtlckZldGNoVGFzayA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6Ci0gICAgU2VydmljZVdvcmtlckZldGNoVGFzayhQQUw6OlNlc3Npb25JRCwgV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uJiwgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiwgV2Vi
Q29yZTo6RmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
U2Vjb25kcyB0aW1lb3V0KTsKKyAgICBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKFBBTDo6U2Vzc2lv
bklELCBOZXR3b3JrUmVzb3VyY2VMb2FkZXImLCBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CisgICAgflNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2soKTsKIAotICAgIHZvaWQgZGlkTm90SGFuZGxlKCk7CisgICAgdm9p
ZCBzdGFydChXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mKTsKKyAgICB2b2lkIGNhbmNl
bEZyb21DbGllbnQoKTsKICAgICB2b2lkIGZhaWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYgZXJyb3IpIHsgZGlkRmFpbChlcnJvcik7IH0KICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogCi0gICAgc3RydWN0IElkZW50aWZp
ZXIgewotICAgICAgICBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIGNvbm5l
Y3Rpb25JZGVudGlmaWVyOwotICAgICAgICBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIgZmV0Y2hJ
ZGVudGlmaWVyOwotICAgICAgICAKLSAgICAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0Ci0gICAg
ICAgIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGhhc2hlc1syXTsKLSAgICAgICAgICAgIGhhc2hl
c1swXSA9IFdURjo6aW50SGFzaChjb25uZWN0aW9uSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKLSAg
ICAgICAgICAgIGhhc2hlc1sxXSA9IFdURjo6aW50SGFzaChmZXRjaElkZW50aWZpZXIudG9VSW50
NjQoKSk7Ci0gICAgICAgICAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5KGhhc2hl
cywgc2l6ZW9mKGhhc2hlcykpOwotICAgICAgICB9Ci0gICAgfTsKLQotICAgIGNvbnN0IElkZW50
aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KLSAgICBj
b25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciYgc2VydmljZVdvcmtlcklkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyOyB9CisgICAg
dm9pZCBjb250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKCk7CisgICAgdm9pZCBjb250aW51
ZUZldGNoVGFza1dpdGgoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOworCisgICAgV2ViQ29y
ZTo6RmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fZmV0
Y2hJZGVudGlmaWVyOyB9CisgICAgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyOyB9CisKKyAgICB2b2lkIGRpZE5vdEhhbmRsZSgpOworCiAgICAgYm9vbCB3YXNIYW5k
bGVkKCkgY29uc3QgeyByZXR1cm4gbV93YXNIYW5kbGVkOyB9CiAKIHByaXZhdGU6Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2Up
OworICAgIHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2Up
OwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgaW50
NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlRm9ybURhdGEoY29u
c3QgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYpOwogICAgIHZvaWQgZGlkRmluaXNoKCk7CiAgICAg
dm9pZCBkaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKKworICAgIHZvaWQg
c3RhcnRGZXRjaChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uJik7CisKICAgICB2b2lkIHRpbWVvdXRUaW1lckZpcmVkKCk7CiAKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBNZXNzYWdlPiBib29sIHNlbmRUb1NlcnZpY2VXb3JrZXIoTWVzc2Fn
ZSYmKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNZXNzYWdlPiBib29sIHNlbmRUb0NsaWVudChN
ZXNzYWdlJiYpOworCiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7Ci0gICAgV2Vha1B0
cjxXZWJTV1NlcnZlckNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKLSAgICBXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24mIG1fY29udGV4dENvbm5lY3Rpb247Ci0gICAgSWRlbnRpZmllciBt
X2lkZW50aWZpZXI7CisgICAgTmV0d29ya1Jlc291cmNlTG9hZGVyJiBtX2xvYWRlcjsKKyAgICBX
ZWFrUHRyPFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4gbV9zZXJ2aWNlV29ya2VyQ29u
bmVjdGlvbjsKKyAgICBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIgbV9mZXRjaElkZW50aWZpZXI7
CisgICAgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBtX3NlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyOwogICAgIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIG1f
c2VydmljZVdvcmtlcklkZW50aWZpZXI7Ci0gICAgU2Vjb25kcyBtX3RpbWVvdXQ7CisgICAgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fY3VycmVudFJlcXVlc3Q7CiAgICAgV2ViQ29yZTo6VGlt
ZXIgbV90aW1lb3V0VGltZXI7CiAgICAgYm9vbCBtX3dhc0hhbmRsZWQgeyBmYWxzZSB9OwogfTsK
IAotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpJ
ZGVudGlmaWVyJiBhLCBjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpJZGVudGlmaWVyJiBi
KQotewotICAgIHJldHVybiBhLmNvbm5lY3Rpb25JZGVudGlmaWVyID09IGIuY29ubmVjdGlvbklk
ZW50aWZpZXIgJiYgIGEuZmV0Y2hJZGVudGlmaWVyID09IGIuZmV0Y2hJZGVudGlmaWVyOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotCi1uYW1lc3BhY2UgV1RGIHsKLQotc3RydWN0IFNl
cnZpY2VXb3JrZXJGZXRjaFRhc2tJZGVudGlmaWVySGFzaCB7Ci0gICAgc3RhdGljIHVuc2lnbmVk
IGhhc2goY29uc3QgV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpJZGVudGlmaWVyJiBr
ZXkpIHsgcmV0dXJuIGtleS5oYXNoKCk7IH0KLSAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBX
ZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OklkZW50aWZpZXImIGEsIGNvbnN0IFdlYktp
dDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6SWRlbnRpZmllciYgYikgeyByZXR1cm4gYSA9PSBi
OyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQg
PSB0cnVlOwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJLaXQ6OlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OklkZW50aWZpZXI+IDogR2VuZXJpY0hhc2hUcmFpdHM8V2ViS2l0
OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpJZGVudGlmaWVyPiB7Ci0gICAgc3RhdGljIFdlYktp
dDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6SWRlbnRpZmllciBlbXB0eVZhbHVlKCkgeyByZXR1
cm4geyB9OyB9Ci0gICAgCi0gICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFdl
YktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6SWRlbnRpZmllciYgc2xvdCkgeyBzbG90LmNv
bm5lY3Rpb25JZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8V2ViQ29yZTo6U1dTZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllclR5cGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+
OjptYXgoKSk7IH0KLSAgICAKLSAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBX
ZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OklkZW50aWZpZXImIHNsb3QpIHsgcmV0dXJu
IHNsb3QuY29ubmVjdGlvbklkZW50aWZpZXIudG9VSW50NjQoKSA9PSBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVpbnQ2NF90Pjo6bWF4KCk7IH0KLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRI
YXNoPFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6SWRlbnRpZmllcj4gewotICAgIHVz
aW5nIEhhc2ggPSBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrSWRlbnRpZmllckhhc2g7Ci19OwotCiB9
CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IDc5ZTMyNjVjZWQxZWEyNGU4NzViZTUyMGI3OTMyZTg1
YjY0MDMxM2YuLmM2YjcyNTgyZTBjYTgyNmIxZjRlYmZjODE5ZmMzOWNhZmVkYjgzYjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0zMywxNiArMzMsMTggQEAK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCi0jaW5jbHVkZSAi
U2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJOZXR3b3JrUmVz
b3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5j
bHVkZSAiV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNXQ2xpZW50
Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9Eb2N1bWVudElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0V4Y2Vw
dGlvbkRhdGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1dT
ZXJ2ZXJSZWdpc3RyYXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+
CkBAIC0xMjYsODYgKzEyOCw4OSBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6dXBkYXRl
V29ya2VyU3RhdGVJbkNsaWVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllciB3bwogICAgIHNlbmQo
TWVzc2FnZXM6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6VXBkYXRlV29ya2VyU3RhdGUod29ya2Vy
LCBzdGF0ZSkpOwogfQogCi12b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y2FuY2VsRmV0Y2go
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbklkZW50aWZpZXIsIEZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIpCitzdGQ6OnVu
aXF1ZV9wdHI8U2VydmljZVdvcmtlckZldGNoVGFzaz4gV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpj
cmVhdGVGZXRjaFRhc2soTmV0d29ya1Jlc291cmNlTG9hZGVyJiBsb2FkZXIpCiB7Ci0gICAgU1dT
RVJWRVJDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNhbmNlbEZldGNoOiAlcyIs
IGZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgYXV0
byogd29ya2VyID0gc2VydmVyKCkuYWN0aXZlV29ya2VyRnJvbVJlZ2lzdHJhdGlvbklEKHNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKLSAgICBpZiAoIXdvcmtlciB8fCAhd29y
a2VyLT5pc1J1bm5pbmcoKSkKLSAgICAgICAgcmV0dXJuOworICAgIGlmICghbG9hZGVyLnBhcmFt
ZXRlcnMoKS5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcikKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gd29ya2Vy
LT5pZGVudGlmaWVyKCk7Ci0gICAgc2VydmVyKCkucnVuU2VydmljZVdvcmtlcklmTmVjZXNzYXJ5
KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwg
dGhpcywgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGZldGNoSWRlbnRpZmllcl0oYXV0byogY29u
dGV4dENvbm5lY3Rpb24pIG11dGFibGUgewotICAgICAgICBpZiAod2Vha1RoaXMgJiYgY29udGV4
dENvbm5lY3Rpb24pCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24mPigqY29udGV4dENvbm5lY3Rpb24pLmNhbmNlbEZldGNoKHRoaXMtPmlkZW50
aWZpZXIoKSwgZmV0Y2hJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAg
fSk7Ci19CisgICAgaWYgKGxvYWRlci5wYXJhbWV0ZXJzKCkuc2VydmljZVdvcmtlcnNNb2RlID09
IFNlcnZpY2VXb3JrZXJzTW9kZTo6Tm9uZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLXZv
aWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpjb250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNl
KFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25JZGVudGlmaWVyLCBGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyKQotewotICAg
IGF1dG8qIHdvcmtlciA9IHNlcnZlcigpLmFjdGl2ZVdvcmtlckZyb21SZWdpc3RyYXRpb25JRChz
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7Ci0gICAgaWYgKCF3b3JrZXIgfHwg
IXdvcmtlci0+aXNSdW5uaW5nKCkpCi0gICAgICAgIHJldHVybjsKKyAgICBpZiAoaXNQb3RlbnRp
YWxOYXZpZ2F0aW9uT3JTdWJyZXNvdXJjZVJlcXVlc3QobG9hZGVyLnBhcmFtZXRlcnMoKS5vcHRp
b25zLmRlc3RpbmF0aW9uKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyID0gd29ya2VyLT5pZGVudGlmaWVyKCk7Ci0gICAgc2VydmVy
KCkucnVuU2VydmljZVdvcmtlcklmTmVjZXNzYXJ5KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBb
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgdGhpcywgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIGZldGNoSWRlbnRpZmllcl0oYXV0byogY29udGV4dENvbm5lY3Rpb24pIG11dGFibGUgewot
ICAgICAgICBpZiAod2Vha1RoaXMgJiYgY29udGV4dENvbm5lY3Rpb24pCi0gICAgICAgICAgICBz
dGF0aWNfY2FzdDxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mPigqY29udGV4dENvbm5l
Y3Rpb24pLmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UodGhpcy0+aWRlbnRpZmllcigp
LCBmZXRjaElkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKLSAgICB9KTsKLX0K
KyAgICBpZiAoIXNlcnZlcigpLmNhbkhhbmRsZVNjaGVtZShsb2FkZXIub3JpZ2luYWxSZXF1ZXN0
KCkudXJsKCkucHJvdG9jb2woKSkpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCi12b2lkIFdl
YlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgRmV0Y2hJZGVu
dGlmaWVyIGZldGNoSWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmV0Y2hP
cHRpb25zJiYgb3B0aW9ucywgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIGZvcm1EYXRhLCBTdHJp
bmcmJiByZWZlcnJlcikKLXsKLSAgICBhdXRvKiB3b3JrZXIgPSBzZXJ2ZXIoKS5hY3RpdmVXb3Jr
ZXJGcm9tUmVnaXN0cmF0aW9uSUQoc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIp
OworICAgIGF1dG8qIHdvcmtlciA9IHNlcnZlcigpLmFjdGl2ZVdvcmtlckZyb21SZWdpc3RyYXRp
b25JRCgqbG9hZGVyLnBhcmFtZXRlcnMoKS5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRp
Zmllcik7CiAgICAgaWYgKCF3b3JrZXIpIHsKLSAgICAgICAgU1dTRVJWRVJDT05ORUNUSU9OX1JF
TEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoInN0YXJ0RmV0Y2g6IGZldGNoSWRlbnRpZmllcjog
JXMgLT4gRGlkTm90SGFuZGxlIGJlY2F1c2Ugbm8gYWN0aXZlIHdvcmtlciIsIGZldGNoSWRlbnRp
Zmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIG1fY29udGVudENv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90
SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBT
V1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgic3RhcnRGZXRj
aDogRGlkTm90SGFuZGxlIGJlY2F1c2Ugbm8gYWN0aXZlIHdvcmtlciAlcyIsIGxvYWRlci5wYXJh
bWV0ZXJzKCkuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXItPmxvZ2dpbmdTdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisg
ICAgaWYgKHdvcmtlci0+c2hvdWxkU2tpcEZldGNoRXZlbnQoKSkgeworICAgICAgICBhdXRvKiBy
ZWdpc3RyYXRpb24gPSBzZXJ2ZXIoKS5nZXRSZWdpc3RyYXRpb24od29ya2VyLT5yZWdpc3RyYXRp
b25LZXkoKSk7CisgICAgICAgIGlmIChyZWdpc3RyYXRpb24gJiYgcmVnaXN0cmF0aW9uLT5zaG91
bGRTb2Z0VXBkYXRlKGxvYWRlci5wYXJhbWV0ZXJzKCkub3B0aW9ucykpCisgICAgICAgICAgICBy
ZWdpc3RyYXRpb24tPnNvZnRVcGRhdGUoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQotICAgIGF1dG8gc2VydmljZVdvcmtlcklkZW50aWZpZXIgPSB3b3JrZXItPmlkZW50aWZpZXIo
KTsKIAotICAgIGF1dG8gcnVuU2VydmVyV29ya2VyQW5kU3RhcnRGZXRjaCA9IFt3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKHRoaXMpLCB0aGlzLCBmZXRjaElkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucyA9IFdURk1vdmUo
b3B0aW9ucyksIGZvcm1EYXRhID0gV1RGTW92ZShmb3JtRGF0YSksIHJlZmVycmVyID0gV1RGTW92
ZShyZWZlcnJlcildKGJvb2wgc3VjY2VzcykgbXV0YWJsZSB7Ci0gICAgICAgIGlmICghd2Vha1Ro
aXMpCisgICAgYXV0byB0YXNrID0gbWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPihz
ZXNzaW9uSUQoKSwgbG9hZGVyLCBpZGVudGlmaWVyKCksIHdvcmtlci0+aWRlbnRpZmllcigpKTsK
KyAgICBzdGFydEZldGNoKCp0YXNrLCAqd29ya2VyKTsKKyAgICByZXR1cm4gdGFzazsKK30KKwor
dm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2goU2VydmljZVdvcmtlckZldGNo
VGFzayYgdGFzaywgU1dTZXJ2ZXJXb3JrZXImIHdvcmtlcikKK3sKKyAgICBhdXRvIHJ1blNlcnZl
cldvcmtlckFuZFN0YXJ0RmV0Y2ggPSBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgdGhp
cywgdGFzayA9IG1ha2VXZWFrUHRyKHRhc2spXShib29sIHN1Y2Nlc3MpIG11dGFibGUgeworICAg
ICAgICBpZiAoIXRhc2spCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKCF3ZWFr
VGhpcykgeworICAgICAgICAgICAgdGFzay0+ZGlkTm90SGFuZGxlKCk7CiAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KIAogICAgICAgICBpZiAoIXN1Y2Nlc3MpIHsKLSAgICAgICAgICAg
IFNXU0VSVkVSQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJzdGFydEZl
dGNoOiBmZXRjaElkZW50aWZpZXI6ICVzIERpZE5vdEhhbmRsZSBiZWNhdXNlIHdvcmtlciBkaWQg
bm90IGJlY29tZSBhY3RpdmF0ZWQiLCBmZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOwotICAgICAgICAgICAgbV9jb250ZW50Q29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWROb3RIYW5kbGUgeyB9LCBmZXRjaElk
ZW50aWZpZXIpOworICAgICAgICAgICAgU1dTRVJWRVJDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VS
Uk9SX0lGX0FMTE9XRUQoInN0YXJ0RmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMgRGlkTm90SGFu
ZGxlIGJlY2F1c2Ugd29ya2VyIGRpZCBub3QgYmVjb21lIGFjdGl2YXRlZCIsIHRhc2stPmZldGNo
SWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAg
IHRhc2stPmRpZE5vdEhhbmRsZSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgYXV0byogd29ya2VyID0gc2VydmVyKCkud29ya2VyQnlJRChzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllcik7CisgICAgICAgIGF1dG8qIHdvcmtlciA9IHNlcnZlcigpLndvcmtlckJ5SUQo
dGFzay0+c2VydmljZVdvcmtlcklkZW50aWZpZXIoKSk7CiAgICAgICAgIGlmICghd29ya2VyIHx8
IHdvcmtlci0+aGFzVGltZWRPdXRBbnlGZXRjaFRhc2tzKCkpIHsKLSAgICAgICAgICAgIG1fY29u
dGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6
RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIHRhc2stPmRp
ZE5vdEhhbmRsZSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAg
c2VydmVyKCkucnVuU2VydmljZVdvcmtlcklmTmVjZXNzYXJ5KHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgdGhpcywgZmV0Y2hJZGVudGlmaWVy
LCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIG9w
dGlvbnMgPSBXVEZNb3ZlKG9wdGlvbnMpLCBmb3JtRGF0YSA9IFdURk1vdmUoZm9ybURhdGEpLCBy
ZWZlcnJlciA9IFdURk1vdmUocmVmZXJyZXIpLCBzaG91bGRTa2lwRmV0Y2hFdmVudCA9IHdvcmtl
ci0+c2hvdWxkU2tpcEZldGNoRXZlbnQoKV0oYXV0byogY29udGV4dENvbm5lY3Rpb24pIHsKLSAg
ICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgIGlmICghd29ya2VyLT5jb250ZXh0Q29u
bmVjdGlvbigpKQorICAgICAgICAgICAgc2VydmVyKCkuY3JlYXRlQ29udGV4dENvbm5lY3Rpb24o
d29ya2VyLT5yZWdpc3RyYWJsZURvbWFpbigpKTsKKworICAgICAgICBzZXJ2ZXIoKS5ydW5TZXJ2
aWNlV29ya2VySWZOZWNlc3NhcnkodGFzay0+c2VydmljZVdvcmtlcklkZW50aWZpZXIoKSwgW3dl
YWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHRoaXMsIHRhc2sgPSBXVEZNb3ZlKHRhc2spXShh
dXRvKiBjb250ZXh0Q29ubmVjdGlvbikgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXRhc2sp
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAo
IXdlYWtUaGlzKSB7CisgICAgICAgICAgICAgICAgdGFzay0+ZGlkTm90SGFuZGxlKCk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoY29u
dGV4dENvbm5lY3Rpb24pIHsKLSAgICAgICAgICAgICAgICBTV1NFUlZFUkNPTk5FQ1RJT05fUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnRGZXRjaDogU3RhcnRpbmcgZmV0Y2ggJXMgdmlhIHNl
cnZpY2Ugd29ya2VyICVzIiwgZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCku
ZGF0YSgpLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7Ci0gICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8V2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uJj4oKmNvbnRleHRDb25uZWN0aW9uKS5zdGFydEZldGNoKHNlc3Npb25JRCgpLCAq
dGhpcywgZmV0Y2hJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcmVxdWVzdCwg
b3B0aW9ucywgZm9ybURhdGEsIHJlZmVycmVyKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgU1dTRVJWRVJDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9X
RUQoInN0YXJ0RmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMgRGlkTm90SGFuZGxlIGJlY2F1c2Ug
ZmFpbGVkIHRvIHJ1biBzZXJ2aWNlIHdvcmtlciwgb3Igc2VydmljZSB3b3JrZXIgaGFzIGhhZCB0
aW1lZCBvdXQgZmV0Y2ggdGFza3MiLCBmZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOwotICAgICAgICAgICAgICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0
Y2hJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIGlmICghY29udGV4dENvbm5lY3Rpb24pIHsKKyAg
ICAgICAgICAgICAgICBTV1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxM
T1dFRCgic3RhcnRGZXRjaDogZmV0Y2hJZGVudGlmaWVyOiAlcyBEaWROb3RIYW5kbGUgYmVjYXVz
ZSBmYWlsZWQgdG8gcnVuIHNlcnZpY2Ugd29ya2VyIiwgdGFzay0+ZmV0Y2hJZGVudGlmaWVyKCku
bG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgICAgIHRhc2stPmRp
ZE5vdEhhbmRsZSgpOworICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIFNXU0VSVkVSQ09OTkVDVElPTl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFy
dEZldGNoOiBTdGFydGluZyBmZXRjaCAlcyB2aWEgc2VydmljZSB3b3JrZXIgJXMiLCB0YXNrLT5m
ZXRjaElkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgdGFzay0+c2Vy
dmljZVdvcmtlcklkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Cisg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mPigq
Y29udGV4dENvbm5lY3Rpb24pLnN0YXJ0RmV0Y2goKnRhc2spOwogICAgICAgICB9KTsKICAgICB9
OwotCi0gICAgaWYgKHdvcmtlci0+c2hvdWxkU2tpcEZldGNoRXZlbnQoKSkgewotICAgICAgICBt
X2NvbnRlbnRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0
Y2g6OkRpZE5vdEhhbmRsZSB7IH0sIGZldGNoSWRlbnRpZmllcik7Ci0gICAgICAgIGF1dG8qIHJl
Z2lzdHJhdGlvbiA9IHNlcnZlcigpLmdldFJlZ2lzdHJhdGlvbih3b3JrZXItPnJlZ2lzdHJhdGlv
bktleSgpKTsKLSAgICAgICAgaWYgKHJlZ2lzdHJhdGlvbiAmJiByZWdpc3RyYXRpb24tPnNob3Vs
ZFNvZnRVcGRhdGUob3B0aW9ucykpCi0gICAgICAgICAgICByZWdpc3RyYXRpb24tPnNvZnRVcGRh
dGUoKTsKKyAgICAKKyAgICBpZiAod29ya2VyLnN0YXRlKCkgPT0gU2VydmljZVdvcmtlclN0YXRl
OjpBY3RpdmF0aW5nKSB7CisgICAgICAgIHdvcmtlci53aGVuQWN0aXZhdGVkKFdURk1vdmUocnVu
U2VydmVyV29ya2VyQW5kU3RhcnRGZXRjaCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgaWYgKHdvcmtlci0+c3RhdGUoKSA9PSBTZXJ2aWNlV29ya2VyU3RhdGU6OkFjdGl2YXRpbmcp
IHsKLSAgICAgICAgd29ya2VyLT53aGVuQWN0aXZhdGVkKFdURk1vdmUocnVuU2VydmVyV29ya2Vy
QW5kU3RhcnRGZXRjaCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIEFTU0VSVCh3b3Jr
ZXItPnN0YXRlKCkgPT0gU2VydmljZVdvcmtlclN0YXRlOjpBY3RpdmF0ZWQpOworICAgIEFTU0VS
VCh3b3JrZXIuc3RhdGUoKSA9PSBTZXJ2aWNlV29ya2VyU3RhdGU6OkFjdGl2YXRlZCk7CiAgICAg
cnVuU2VydmVyV29ya2VyQW5kU3RhcnRGZXRjaCh0cnVlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVj
dGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyQ29ubmVjdGlvbi5oCmluZGV4IDdiZDJhMzNjYjU4YTMwNzcwZTM5OGJkMDQ5ZTUzZTIy
NDIzYTNkMjYuLjRlZDIwMWU3ZTA5YmRlZjJkNDQzMjA5OGIzNzE0ZThlMzM5NGY2M2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTUyLDYgKzUyLDggQEAgc3RydWN0
IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIE5l
dHdvcmtQcm9jZXNzOworY2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZGVyOworY2xhc3MgU2Vydmlj
ZVdvcmtlckZldGNoVGFzazsKIAogY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uIDogcHVibGlj
IFdlYkNvcmU6OlNXU2VydmVyOjpDb25uZWN0aW9uLCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVy
LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgpAQCAtNjYsNiArNjgsOCBA
QCBwdWJsaWM6CiAgICAgCiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3Q7CiAK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckZldGNoVGFzaz4gY3JlYXRlRmV0Y2hU
YXNrKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYpOworCiBwcml2YXRlOgogICAgIC8vIEltcGxlbWVu
dCBTV1NlcnZlcjo6Q29ubmVjdGlvbiAoTWVzc2FnZXMgdG8gdGhlIGNsaWVudCBXZWJQcm9jZXNz
KQogICAgIHZvaWQgcmVqZWN0Sm9iSW5DbGllbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYklk
ZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmKSBmaW5hbDsKQEAgLTgyLDkg
Kzg2LDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2NoZWR1bGVKb2JJblNlcnZlcihXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySm9iRGF0YSYmKTsKIAotICAgIHZvaWQgc3RhcnRGZXRjaChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6RmV0Y2hPcHRpb25z
JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiwgU3RyaW5nJiYgcmVmZXJyZXIpOwotICAgIHZv
aWQgY2FuY2VsRmV0Y2goV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllcik7Ci0gICAgdm9pZCBjb250aW51ZURpZFJlY2Vp
dmVGZXRjaFJlc3BvbnNlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlm
aWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIpOworICAgIGJvb2wgaGFuZGxlRmV0Y2goTmV0
d29ya1Jlc291cmNlTG9hZGVyJik7CisKKyAgICB2b2lkIHN0YXJ0RmV0Y2goU2VydmljZVdvcmtl
ckZldGNoVGFzayYsIFdlYkNvcmU6OlNXU2VydmVyV29ya2VyJik7CiAKICAgICB2b2lkIG1hdGNo
UmVnaXN0cmF0aW9uKHVpbnQ2NF90IHJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdElkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBVUkwm
IGNsaWVudFVSTCk7CiAgICAgdm9pZCBnZXRSZWdpc3RyYXRpb25zKHVpbnQ2NF90IHJlZ2lzdHJh
dGlvbk1hdGNoUmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYgdG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCBhYjI0NjhlOGNlM2Ni
NWM2ZGRmYzgyOGNlNzViZmQ4YzFmNjI3ZWQ3Li4zZGE2NGQ5ODc0ZWMxZDdmN2ViMjlkNGM3ZmRl
NTY3YTJlYzU0MWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KQEAgLTI5LDEwICsyOSw2IEBAIG1lc3NhZ2VzIC0+IFdlYlNXU2VydmVy
Q29ubmVjdGlvbiB7CiAgICAgQWRkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVyKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpCiAg
ICAgUmVtb3ZlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVyKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpCiAKLSAgICBTdGFydEZl
dGNoKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIHNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIgZmV0
Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgc3RydWN0IFdl
YkNvcmU6OkZldGNoT3B0aW9ucyBvcHRpb25zLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVl
c3RCb2R5LCBTdHJpbmcgcmVmZXJyZXIpCi0gICAgQ2FuY2VsRmV0Y2goV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIpCi0gICAg
Q29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwg
V2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllcikKLQogICAgIFBvc3RNZXNz
YWdlVG9TZXJ2aWNlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRlc3Rp
bmF0aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMgbWVzc2FnZSwg
V2ViQ29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllciBzb3VyY2UpCiAKICAgICBE
aWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uS2V5IGtleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5jcHAKaW5kZXggNmMxNGU2ZGE1MjQzMDYwZTZiOGYwMzQ1MmVlNDg2YzYwZjRl
YmExNC4uYzg1MGE5MzA1MzdmN2JmMTZlMjUyOGViMGIzOWQ4MmE1NTE5MGRkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTYx
LDkgKzYxLDE0IEBAIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6fldlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbigpCiAgICAgICAgIG1fc2VydmVyLT5yZW1vdmVDb250ZXh0Q29u
bmVjdGlvbigqdGhpcyk7CiB9CiAKK0lQQzo6Q29ubmVjdGlvbiYgV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjppcGNDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb25u
ZWN0aW9uLmNvbm5lY3Rpb24oKTsKK30KKwogSVBDOjpDb25uZWN0aW9uKiBXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gJm1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCk7CisgICAgcmV0dXJuICZpcGNDb25u
ZWN0aW9uKCk7CiB9CiAKIHVpbnQ2NF90IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdApAQCAtMTQxLDM5ICsxNDYsOSBAQCB2
b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2V0VGhyb3R0bGVTdGF0ZShib29s
IGlzVGhyb3R0bGVhYmxlKQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uOjpTZXRUaHJvdHRsZVN0YXRlIHsgaXNUaHJvdHRsZWFibGUgfSk7CiB9CiAKLXZv
aWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzdGFydEZldGNoKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBjb250ZW50Q29ubmVjdGlvbiwg
RmV0Y2hJZGVudGlmaWVyIGNvbnRlbnRGZXRjaElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSVBDOjpGb3JtRGF0YVJl
ZmVyZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKLXsKLSAgICBhdXRvIHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyID0gY29udGVudENvbm5lY3Rpb24uaWRlbnRpZmllcigpOwot
ICAgIGF1dG8gZmV0Y2hJZGVudGlmaWVyID0gRmV0Y2hJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwot
Ci0gICAgYXV0byByZXN1bHQgPSBtX29uZ29pbmdGZXRjaGVzLmFkZChmZXRjaElkZW50aWZpZXIs
IG1ha2VVbmlxdWU8U2VydmljZVdvcmtlckZldGNoVGFzaz4oc2Vzc2lvbklELCBjb250ZW50Q29u
bmVjdGlvbiwgKnRoaXMsIGNvbnRlbnRGZXRjaElkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBtX2Nvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKS5zZXJ2aWNlV29ya2VyRmV0Y2hU
aW1lb3V0KCkpKTsKLQotICAgIEFTU0VSVCghbV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVycy5jb250
YWlucyh7IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb250ZW50RmV0Y2hJZGVudGlmaWVy
IH0pKTsKLSAgICBtX29uZ29pbmdGZXRjaElkZW50aWZpZXJzLmFkZCh7IHNlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyLCBjb250ZW50RmV0Y2hJZGVudGlmaWVyIH0sIGZldGNoSWRlbnRpZmllcik7
Ci0KLSAgICBpZiAoIXNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
OjpTdGFydEZldGNoIHsgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIsIHJlcXVlc3QsIG9wdGlvbnMsIGRhdGEsIHJlZmVy
cmVyIH0pKQotICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5kaWROb3RIYW5kbGUoKTsK
LX0KLQotdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNhbmNlbEZldGNoKFdl
YkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIsIEZldGNoSWRlbnRpZmllciBjb250ZW50RmV0Y2hJZGVudGlmaWVyLCBTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKK3ZvaWQgV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjpzdGFydEZldGNoKFNlcnZpY2VXb3JrZXJGZXRjaFRhc2smIHRh
c2spCiB7Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fb25nb2luZ0ZldGNoSWRlbnRpZmllcnMuZmlu
ZCh7IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb250ZW50RmV0Y2hJZGVudGlmaWVyIH0p
OwotICAgIGlmIChpdGVyYXRvciA9PSBtX29uZ29pbmdGZXRjaElkZW50aWZpZXJzLmVuZCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbjo6Q2FuY2VsRmV0Y2ggeyBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIGl0ZXJhdG9yLT52YWx1ZSB9KTsKLQotICAgIG1fb25nb2lu
Z0ZldGNoZXMucmVtb3ZlKGl0ZXJhdG9yLT52YWx1ZSk7Ci0gICAgbV9vbmdvaW5nRmV0Y2hJZGVu
dGlmaWVycy5yZW1vdmUoaXRlcmF0b3IpOwotfQotCi12b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6Y29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZShXZWJDb3JlOjpTV1Nl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBGZXRj
aElkZW50aWZpZXIgY29udGVudEZldGNoSWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZp
ZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIpCi17Ci0gICAgYXV0byBpdGVyYXRvciA9IG1fb25n
b2luZ0ZldGNoSWRlbnRpZmllcnMuZmluZCh7IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBj
b250ZW50RmV0Y2hJZGVudGlmaWVyIH0pOwotICAgIGlmIChpdGVyYXRvciA9PSBtX29uZ29pbmdG
ZXRjaElkZW50aWZpZXJzLmVuZCgpKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgc2VuZChN
ZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkNvbnRpbnVlRGlkUmVjZWl2
ZUZldGNoUmVzcG9uc2UgeyBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIGl0ZXJhdG9yLT52YWx1ZSB9KTsKKyAgICB0YXNrLnN0YXJ0KCp0aGlzKTsK
IH0KIAogdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmRpZFJlY2VpdmVGZXRj
aFRhc2tNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBk
ZWNvZGVyKQpAQCAtMTgxLDUxICsxNTYsNDEgQEAgdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb246OmRpZFJlY2VpdmVGZXRjaFRhc2tNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYKICAg
ICBhdXRvIGl0ZXJhdG9yID0gbV9vbmdvaW5nRmV0Y2hlcy5maW5kKG1ha2VPYmplY3RJZGVudGlm
aWVyPEZldGNoSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSk7CiAgICAg
aWYgKGl0ZXJhdG9yID09IG1fb25nb2luZ0ZldGNoZXMuZW5kKCkpCiAgICAgICAgIHJldHVybjsK
LSAgICAKLSAgICBib29sIHNob3VsZFJlbW92ZSA9IGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBN
ZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkRmFpbDo6bmFtZSgpCi0gICAgICAg
IHx8IGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNo
VGFzazo6RGlkTm90SGFuZGxlOjpuYW1lKCkKLSAgICAgICAgfHwgZGVjb2Rlci5tZXNzYWdlTmFt
ZSgpID09IE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRGaW5pc2g6Om5hbWUo
KQotICAgICAgICB8fCBkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlOjpuYW1lKCk7CiAKICAg
ICBpdGVyYXRvci0+dmFsdWUtPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIp
OwotCi0gICAgaWYgKHNob3VsZFJlbW92ZSkgewotICAgICAgICBBU1NFUlQobV9vbmdvaW5nRmV0
Y2hJZGVudGlmaWVycy5jb250YWlucyhpdGVyYXRvci0+dmFsdWUtPmlkZW50aWZpZXIoKSkpOwot
ICAgICAgICBtX29uZ29pbmdGZXRjaElkZW50aWZpZXJzLnJlbW92ZShpdGVyYXRvci0+dmFsdWUt
PmlkZW50aWZpZXIoKSk7Ci0gICAgICAgIG1fb25nb2luZ0ZldGNoZXMucmVtb3ZlKGl0ZXJhdG9y
KTsKLSAgICB9CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmZXRj
aFRhc2tUaW1lZE91dChTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrJiB0YXNrKQordm9pZCBXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246OnJlZ2lzdGVyRmV0Y2goU2VydmljZVdvcmtlckZldGNo
VGFzayYgdGFzaykKIHsKLSAgICBBU1NFUlQobV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVycy5jb250
YWlucyh0YXNrLmlkZW50aWZpZXIoKSkpOwotICAgIGF1dG8gdGFrZW5JZGVudGlmaWVyID0gbV9v
bmdvaW5nRmV0Y2hJZGVudGlmaWVycy50YWtlKHRhc2suaWRlbnRpZmllcigpKTsKKyAgICBBU1NF
UlQoIW1fb25nb2luZ0ZldGNoZXMuY29udGFpbnModGFzay5mZXRjaElkZW50aWZpZXIoKSkpOwor
ICAgIG1fb25nb2luZ0ZldGNoZXMuYWRkKHRhc2suZmV0Y2hJZGVudGlmaWVyKCksIG1ha2VXZWFr
UHRyKHRhc2spKTsKK30KIAotICAgIEFTU0VSVChtX29uZ29pbmdGZXRjaGVzLmNvbnRhaW5zKHRh
a2VuSWRlbnRpZmllcikpOwotICAgIGF1dG8gdGFrZW5UYXNrID0gbV9vbmdvaW5nRmV0Y2hlcy50
YWtlKHRha2VuSWRlbnRpZmllcik7Ci0gICAgQVNTRVJUKHRha2VuVGFzayk7Ci0gICAgQVNTRVJU
KHRha2VuVGFzay5nZXQoKSA9PSAmdGFzayk7Cit2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6dW5yZWdpc3RlckZldGNoKFNlcnZpY2VXb3JrZXJGZXRjaFRhc2smIHRhc2spCit7
CisgICAgQVNTRVJUKG1fb25nb2luZ0ZldGNoZXMuY29udGFpbnModGFzay5mZXRjaElkZW50aWZp
ZXIoKSkpOworICAgIG1fb25nb2luZ0ZldGNoZXMucmVtb3ZlKHRhc2suZmV0Y2hJZGVudGlmaWVy
KCkpOworfQogCi0gICAgLy8gR2F0aGVyIGFsbCBvdGhlciBmZXRjaGVzIGluIHRoaXMgc2Vydmlj
ZSB3b3JrZXIKLSAgICBWZWN0b3I8U2VydmljZVdvcmtlckZldGNoVGFzayo+IG90aGVyRmV0Y2hl
czsKK3ZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmZXRjaFRhc2tUaW1lZE91
dChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKK3sKKyAg
ICAvLyBHYXRoZXIgYWxsIGZldGNoZXMgaW4gdGhpcyBzZXJ2aWNlIHdvcmtlcgorICAgIFZlY3Rv
cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKj4gZmV0Y2hlczsKICAgICBmb3IgKGF1dG8mIGZldGNo
VGFzayA6IG1fb25nb2luZ0ZldGNoZXMudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKGZldGNoVGFz
ay0+c2VydmljZVdvcmtlcklkZW50aWZpZXIoKSA9PSB0YXNrLnNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKCkpCi0gICAgICAgICAgICBvdGhlckZldGNoZXMuYXBwZW5kKGZldGNoVGFzay5nZXQoKSk7
CisgICAgICAgIGlmIChmZXRjaFRhc2stPnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCkgPT0gc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIpCisgICAgICAgICAgICBmZXRjaGVzLmFwcGVuZChmZXRjaFRh
c2suZ2V0KCkpOwogICAgIH0KIAogICAgIC8vIFNpZ25hbCBsb2FkIGZhaWx1cmUgZm9yIHRoZW0K
LSAgICBmb3IgKGF1dG8qIGZldGNoVGFzayA6IG90aGVyRmV0Y2hlcykgeworICAgIGZvciAoYXV0
byogZmV0Y2hUYXNrIDogZmV0Y2hlcykgewogICAgICAgICBpZiAoZmV0Y2hUYXNrLT53YXNIYW5k
bGVkKCkpCiAgICAgICAgICAgICBmZXRjaFRhc2stPmZhaWwoeyBlcnJvckRvbWFpbldlYktpdElu
dGVybmFsLCAwLCB7IH0sICJTZXJ2aWNlIFdvcmtlciBjb250ZXh0IGNsb3NlZCJfcyB9KTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgZmV0Y2hUYXNrLT5kaWROb3RIYW5kbGUoKTsKLQotICAg
ICAgICBhdXRvIGlkZW50aWZpZXIgPSBtX29uZ29pbmdGZXRjaElkZW50aWZpZXJzLnRha2UoZmV0
Y2hUYXNrLT5pZGVudGlmaWVyKCkpOwotICAgICAgICBtX29uZ29pbmdGZXRjaGVzLnJlbW92ZShp
ZGVudGlmaWVyKTsKICAgICB9CiAKICAgICBpZiAobV9zZXJ2ZXIpIHsKLSAgICAgICAgaWYgKGF1
dG8qIHdvcmtlciA9IG1fc2VydmVyLT53b3JrZXJCeUlEKHRhc2suc2VydmljZVdvcmtlcklkZW50
aWZpZXIoKSkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHdvcmtlciA9IG1fc2VydmVyLT53b3JrZXJC
eUlEKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSkgewogICAgICAgICAgICAgd29ya2VyLT5zZXRI
YXNUaW1lZE91dEFueUZldGNoVGFza3MoKTsKICAgICAgICAgICAgIGlmICh3b3JrZXItPmlzUnVu
bmluZygpKQogICAgICAgICAgICAgICAgIG1fc2VydmVyLT5zeW5jVGVybWluYXRlV29ya2VyKCp3
b3JrZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5oCmluZGV4IGRkOTUzMWRkZTNmZGExZWJiMjRlNjk3MzEyODE5MDZjYjAzMDQ1MzIuLjJjMDBm
Zjc3NjUzZjg3MTUwMDBlOWIzYzI2NTQ5MGUyZjFhNjMwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTUyLDI0ICs1MiwyOCBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwog
Y2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOwogCi1jbGFzcyBXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24gOiBwdWJsaWMgV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIg
eworY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOiBwdWJsaWMgQ2FuTWFrZVdl
YWtQdHI8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPiwgcHVibGljIFdlYkNvcmU6OlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiwgcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVi
bGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKICAgICBXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiYmLCBXZWJDb3JlOjpTV1NlcnZlciYpOwogICAgIH5XZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24oKTsKIAorICAgIElQQzo6Q29ubmVjdGlvbiYgaXBjQ29ubmVj
dGlvbigpIGNvbnN0OworCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwog
Ci0gICAgdm9pZCBzdGFydEZldGNoKFBBTDo6U2Vzc2lvbklELCBXZWJTV1NlcnZlckNvbm5lY3Rp
b24mLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpG
ZXRjaE9wdGlvbnMmLCBjb25zdCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5n
Jik7CisgICAgdm9pZCBzdGFydEZldGNoKFNlcnZpY2VXb3JrZXJGZXRjaFRhc2smKTsKICAgICB2
b2lkIGNhbmNlbEZldGNoKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdl
YkNvcmU6OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIp
OwotICAgIHZvaWQgY29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZShXZWJDb3JlOjpTV1Nl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIsIFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZUZldGNo
VGFza01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAKICAgICB2b2lk
IHNldFRocm90dGxlU3RhdGUoYm9vbCBpc1Rocm90dGxlYWJsZSk7CiAgICAgYm9vbCBpc1Rocm90
dGxlYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNUaHJvdHRsZWFibGU7IH0KIAotICAgIHZvaWQg
ZmV0Y2hUYXNrVGltZWRPdXQoU2VydmljZVdvcmtlckZldGNoVGFzayYpOworICAgIHZvaWQgZmV0
Y2hUYXNrVGltZWRPdXQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOworCisgICAg
dm9pZCByZWdpc3RlckZldGNoKFNlcnZpY2VXb3JrZXJGZXRjaFRhc2smKTsKKyAgICB2b2lkIHVu
cmVnaXN0ZXJGZXRjaChTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrJik7CiAKIHByaXZhdGU6CiAgICAg
Ly8gSVBDOjpNZXNzYWdlU2VuZGVyCkBAIC05Niw5ICsxMDAsNyBAQCBwcml2YXRlOgogCiAgICAg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fY29ubmVjdGlvbjsKICAgICBXZWFrUHRy
PFdlYkNvcmU6OlNXU2VydmVyPiBtX3NlcnZlcjsKLQotICAgIEhhc2hNYXA8U2VydmljZVdvcmtl
ckZldGNoVGFzazo6SWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyPiBtX29uZ29p
bmdGZXRjaElkZW50aWZpZXJzOwotICAgIEhhc2hNYXA8V2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVy
LCBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckZldGNoVGFzaz4+IG1fb25nb2luZ0ZldGNo
ZXM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIsIFdlYWtQdHI8U2Vydmlj
ZVdvcmtlckZldGNoVGFzaz4+IG1fb25nb2luZ0ZldGNoZXM7CiAgICAgYm9vbCBtX2lzVGhyb3R0
bGVhYmxlIHsgdHJ1ZSB9OwogfTsgLy8gY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CmluZGV4IGQ3ZDg5OTFlZDZjZWU5ODdmMzJjNTg0YjBkZTNmYTgwY2Mw
ZjkwOTAuLjM1NTE5N2ExMDllNWEzOTFhYTE4NGIwY2Y4NzFmYjczN2MzMTIwNTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
LnR4dApAQCAtNTI2LDcgKzUyNiw2IEBAIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZUJyb3dzZXJGdW5jcy5jcHAgQG5vLXVuaWZ5CiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW4uY3BwIEBuby11bmlmeQogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcCBAbm8tdW5pZnkKIAotV2ViUHJvY2Vzcy9TdG9y
YWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5jcHAKIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NsaWVudENvbm5lY3Rpb24uY3BwCiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uY3BwCiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dPcmlnaW5UYWJsZS5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGRhMjE3NDEwNDI3NDk1YmQzOGI1ZWM3Zjg3ODA3YTdkMzk3MzNhOWMuLjg2NjMwOThlNzZj
YjgxOGU3MjAzYmI2NTY5N2QwOWI3NjgxODg0MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTE0Myw3ICsxMTQzLDYgQEAKIAkJNUNF
OTEyMTIyMjkzQzI3ODAwNUJFQzc4IC8qIEF1eGlsaWFyeVByb2Nlc3NNYWluLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDRTkxMjBGMjI5M0MyNUYw
MDVCRUM3OCAvKiBBdXhpbGlhcnlQcm9jZXNzTWFpbi5jcHAgKi87IH07CiAJCTVDRTkxMjEzMjI5
M0MyNzkwMDVCRUM3OCAvKiBBdXhpbGlhcnlQcm9jZXNzTWFpbi5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0U5MTIwRjIyOTNDMjVGMDA1QkVDNzgg
LyogQXV4aWxpYXJ5UHJvY2Vzc01haW4uY3BwICovOyB9OwogCQk1Q0U5MTIxNDIyOTNDMjgwMDA1
QkVDNzggLyogV0tNYWluLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1Q0U5MTIwQjIyOTNDMUUwMDA1QkVDNzggLyogV0tNYWluLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNjE3QTUyRDgxRjQzQTlEQTAw
RENEQzBBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MTdBNTJENzFGNDNB
OUI2MDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZVJlY2VpdmVyLmNw
cCAqLzsgfTsKIAkJNjMxMDhGOTYxRjk2NzE5QzAwQTBEQjg0IC8qIF9XS0FwcGxpY2F0aW9uTWFu
aWZlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYz
MTA4Rjk0MUY5NjcxOUMwMEEwREI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjMxMDhGOTkxRjk2
NzFGNzAwQTBEQjg0IC8qIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3RJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjMxMDhGOTgxRjk2NzFGNzAw
QTBEQjg0IC8qIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3RJbnRlcm5hbC5oICovOyB9OwogCQk2MzQ4
NDI1MTFGQjI2RTcxMDA5NDZFM0MgLyogQVBJQXBwbGljYXRpb25NYW5pZmVzdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjM0ODQyNEYxRkIyNkU3MTAw
OTQ2RTNDIC8qIEFQSUFwcGxpY2F0aW9uTWFuaWZlc3QuaCAqLzsgfTsKQEAgLTMxMjksOSArMzEy
OCw2IEBACiAJCTQxMzA3NUE2MURFODVFRTcwMDM5RUM2OSAvKiBMaWJXZWJSVENTb2NrZXRGYWN0
b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJUQ1NvY2tldEZh
Y3RvcnkuaDsgcGF0aCA9IE5ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldEZhY3RvcnkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzMDc1QTcxREU4NUVFNzAwMzlFQzY5IC8q
IExpYldlYlJUQ1Byb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbGlu
ZUVuZGluZyA9IDA7IG5hbWUgPSBMaWJXZWJSVENQcm92aWRlci5jcHA7IHBhdGggPSBOZXR3b3Jr
L3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhj
TGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcuY3BwOyB9OwogCQk0
MTMwNzVBODFERTg1RUU3MDAzOUVDNjkgLyogTGliV2ViUlRDUHJvdmlkZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBsaW5lRW5kaW5nID0gMDsgbmFtZSA9IExpYldlYlJUQ1Byb3ZpZGVy
Lmg7IHBhdGggPSBOZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5s
YW5nLm9iamNwcDsgfTsKLQkJNDEzMUYzQ0UxRjk2QTQ5NTAwNTk5OTVBIC8qIFNlcnZpY2VXb3Jr
ZXJDbGllbnRGZXRjaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNl
V29ya2VyQ2xpZW50RmV0Y2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDEzMUYz
Q0YxRjk2QTkzNjAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5tZXNzYWdlcy5p
biAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gubWVzc2Fn
ZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQxMzFGM0QwMUY5NkJDQzgwMDU5
OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtlckNsaWVudEZldGNoLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzMUYzRTAxRjk4NzEyQzAwNTk5OTVBIC8qIFdlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxMzVGQkNGMUY0RkI3RjIwMDc0QzQ3QiAvKiBDYWNoZVN0b3Jh
Z2VFbmdpbmVDYWNoZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDEzNUZCRDAxRjRGQjdGMjAwNzRDNDdCIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNo
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM3MTAsNyArMzcwNiw2IEBACiAJ
CTVDRUFCQTJCMjMzMzI1MTQwMDc5Nzc5NyAvKiBMZWdhY3lHbG9iYWxTZXR0aW5ncy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMZWdhY3lHbG9iYWxTZXR0aW5ncy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDRkVDQjAzMUUxRUQxQzgwMEY4ODUw
NCAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNURBRDczRjExMTZGRjkwQzAwRUU1Mzk2IC8qIEJhc2VU
YXJnZXQueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQmFzZVRhcmdl
dC54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNjE3QTUyRDcxRjQzQTlC
NjAwRENEQzBBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTZXJ2aWNlV29ya2VyQ2xpZW50
RmV0Y2hNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9T
ZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0g
QlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk2MzEwOEY5NDFGOTY3MTlDMDBBMERCODQgLyogX1dL
QXBwbGljYXRpb25NYW5pZmVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tBcHBsaWNhdGlvbk1hbmlm
ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTYzMTA4Rjk1MUY5NjcxOUMwMEEw
REI4NCAvKiBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
X1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NjMxMDhGOTgxRjk2NzFGNzAwQTBEQjg0IC8qIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3RJbnRlcm5h
bC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0SW50ZXJuYWwuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY4NDEsOSArNjgzNiw2IEBACiAJCTUxMThFOTk4
MUYyOTUyNTkwMDNFRjlGNSAvKiBTdG9yYWdlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKLQkJCQk0MTMxRjNEMDFGOTZCQ0M4MDA1OTk5NUEgLyogU2VydmljZVdv
cmtlckNsaWVudEZldGNoLmNwcCAqLywKLQkJCQk0MTMxRjNDRTFGOTZBNDk1MDA1OTk5NUEgLyog
U2VydmljZVdvcmtlckNsaWVudEZldGNoLmggKi8sCi0JCQkJNDEzMUYzQ0YxRjk2QTkzNjAwNTk5
OTVBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5tZXNzYWdlcy5pbiAqLywKIAkJCQk0MTMx
RjNFMDFGOTg3MTJDMDA1OTk5NUEgLyogV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5j
cHAgKi8sCiAJCQkJNDE5QUNGOUIxRjk4MUQyNjAwOUYxQTgzIC8qIFdlYlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2tDbGllbnQuaCAqLywKIAkJCQk1MUJFQjYyOTFGM0E1QUNEMDA1MDI5QjkgLyogV2Vi
U2VydmljZVdvcmtlclByb3ZpZGVyLmNwcCAqLywKQEAgLTg4NzgsNyArODg3MCw2IEBACiAJCQkJ
MUJCQkU0OUUxOUI2NkM1MzAwNkI3RDgxIC8qIFJlbW90ZVdlYkluc3BlY3RvclVJTWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLywKIAkJCQlFMThFNjkxMzE2OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRlbVNo
aW1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJRTE4RTY5MTQxNjlCNjY3QjAwOUI2
NjcwIC8qIFNlY0l0ZW1TaGltUHJveHlNZXNzYWdlcy5oICovLAotCQkJCTYxN0E1MkQ3MUY0M0E5
QjYwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovLAogCQkJCTJERTY5NDNCMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25D
b250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkyREU2OTQzQzE4QkQyQTY4MDA1
QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VzLmggKi8sCiAJCQkJ
MUEzMzRERUIxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVzc2FnZVJlY2VpdmVy
LmNwcCAqLywKQEAgLTExMzE3LDcgKzExMzA4LDYgQEAKIAkJCQlBNTVCQTgyNjFCQTI1Q0ZEMDA3
Q0QzM0QgLyogUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUJCQkU0QTAxOUI2NkM1MzAwNkI3RDgxIC8qIFJlbW90ZVdlYkluc3Bl
Y3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxOEU2OTE3MTY5
QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCTYxN0E1MkQ4MUY0M0E5REEwMERDREMwQSAvKiBTZXJ2aWNlV29ya2Vy
Q2xpZW50RmV0Y2hNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFERTdD
NkMyMjI3OEYxRTAwNTMyQjY1IC8qIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMkQ5MkE3ODcyMTJCNkFCMTAwRjQ5M0ZEIC8qIFNoYXJlYWJsZUJpdG1hcC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkyREU2OTQzRDE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRN
YWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IGYwYjRmZGZhNmEzMTE3MDQ5OTZkNzg1YTFj
OTYyNzczNjAxMTk4MDEuLjMwODMzNTc3MzAxZDBmMjY0NTMyYjRhMzJiYTg2ZWY2ZWY1YjliNGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUg
IkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJMaWJXZWJSVENOZXR3b3JrLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgotI2luY2x1ZGUgIlNl
cnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFN
YXAuaCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2Vi
Q2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKQEAgLTE0MSwxMCArMTQwLDYgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgSVAKICAgICAgICAgICAgIG1fc3dDb25uZWN0aW9uLT5kaWRSZWNlaXZlTWVzc2Fn
ZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJD
bGllbnRGZXRjaDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIFdlYlNlcnZpY2VX
b3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZVNlcnZpY2VXb3JrZXJDbGllbnRG
ZXRjaE1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CiAgICAg
ICAgIEFTU0VSVChTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpOwog
ICAgICAgICBpZiAoYXV0byogY29udGV4dE1hbmFnZXJDb25uZWN0aW9uID0gU1dDb250ZXh0TWFu
YWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IGFmYTNjNzI0
MTQ4ZGExMjc1YTI3NzBkZmM3ZTgzZDcyOTZkYTUwNDQuLmE5ZmMwNGQ1MzhmZWI5YjdmNGQ5NGU2
NDgyMTMzYmY5MjVmM2Q0N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTIxNSw0MSArMjE1LDIwIEBAIHZv
aWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciYgcmVzb3Vy
Y2VMb2FkZXIsIENhY2hlZFJlc291CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKLSAgICBpZiAoISFyZXNvdXJjZUxvYWRlci5vcHRpb25zKCkuc2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbklkZW50aWZpZXIpCi0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInNjaGVk
dWxlTG9hZDogVVJMIHdpbGwgYmUgc2NoZWR1bGVkIHRocm91Z2ggU2VydmljZVdvcmtlciBvciBO
ZXR3b3JrIFByb2Nlc3MgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRl
ci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIHRyYWNraW5n
UGFyYW1ldGVycy5mcmFtZUlELnRvVUludDY0KCksIGlkZW50aWZpZXIpOworICAgIGF1dG8gdXJs
ID0gcmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnVybCgpOworICAgIGF1dG8qIGRhdGEgPSB1cmwu
c3RyaW5nKCkudXRmOCgpLmRhdGEoKTsKKyAgICBpZiAoZGF0YSkKKyAgICAgICAgdXJsLnN0cmlu
ZygpOwogCi0gICAgV2ViU2VydmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKS5oYW5kbGVG
ZXRjaChyZXNvdXJjZUxvYWRlciwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRp
cmVjdCwgW3RoaXMsIHRyYWNraW5nUGFyYW1ldGVycywgaWRlbnRpZmllciwgc2hvdWxkQ2xlYXJS
ZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgbWF4aW11bUJ1ZmZlcmluZ1RpbWUgPSBtYXhp
bXVtQnVmZmVyaW5nVGltZShyZXNvdXJjZSksIHJlc291cmNlTG9hZGVyID0gbWFrZVJlZihyZXNv
dXJjZUxvYWRlcildIChTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OlJlc3VsdCByZXN1bHQpIG11
dGFibGUgewotICAgICAgICBpZiAocmVzdWx0ICE9IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6
UmVzdWx0OjpVbmhhbmRsZWQpIHsKLSAgICAgICAgICAgIExPRyhOZXR3b3JrU2NoZWR1bGluZywg
IihXZWJQcm9jZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkLCB1cmwgJyVzJyB3
aWxsIGJlIHNjaGVkdWxlZCB0aHJvdWdoIFNlcnZpY2VXb3JrZXIgaGFuZGxlIGZldGNoIGFsZ29y
aXRobSIsIHJlc291cmNlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwot
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic2NoZWR1bGVMb2FkOiBVUkwgd2ls
bCBiZSBzY2hlZHVsZWQgdGhyb3VnaCBTZXJ2aWNlV29ya2VyIGhhbmRsZSBmZXRjaCBhbGdvcml0
aG0gKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0
ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSwg
dHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMu
ZnJhbWVJRC50b1VJbnQ2NCgpLCBpZGVudGlmaWVyKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotICAgICAgICBpZiAocmVzb3VyY2VMb2FkZXItPm9wdGlvbnMoKS5zZXJ2aWNlV29y
a2Vyc01vZGUgPT0gU2VydmljZVdvcmtlcnNNb2RlOjpPbmx5KSB7Ci0gICAgICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJzY2hlZHVsZUxvYWQ6IHVuYWJsZSB0byBzY2hlZHVs
ZSBVUkwgdGhyb3VnaCBTZXJ2aWNlV29ya2VyIGhhbmRsZSBmZXRjaCBhbGdvcml0aG0gKGZyYW1l
ID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291
cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSwgdHJhY2tpbmdQ
YXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRC50
b1VJbnQ2NCgpLCBpZGVudGlmaWVyKTsKLSAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Jl
c291cmNlTG9hZGVyID0gV1RGTW92ZShyZXNvdXJjZUxvYWRlcildIHsKLSAgICAgICAgICAgICAg
ICBhdXRvIGVycm9yID0gaW50ZXJuYWxFcnJvcihyZXNvdXJjZUxvYWRlci0+cmVxdWVzdCgpLnVy
bCgpKTsKLSAgICAgICAgICAgICAgICBlcnJvci5zZXRUeXBlKFJlc291cmNlRXJyb3I6OlR5cGU6
OkNhbmNlbGxhdGlvbik7Ci0gICAgICAgICAgICAgICAgcmVzb3VyY2VMb2FkZXItPmRpZEZhaWwo
ZXJyb3IpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LQotICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkxvYWRlclN0cmF0ZWd5
KCkudHJ5TG9hZGluZ1VzaW5nVVJMU2NoZW1lSGFuZGxlcihyZXNvdXJjZUxvYWRlcikpIHsKLSAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInNjaGVkdWxlTG9hZDogVVJMIHdpbGwg
YmUgc2NoZWR1bGVkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIChmcmFtZSA9ICVwLCBwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJ
dTY0ICIpIiwgcmVzb3VyY2VMb2FkZXItPmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdl
SUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQudG9VSW50NjQoKSwgaWRl
bnRpZmllcik7Ci0gICAgICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJMb2FkZXJT
dHJhdGVneSgpLnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhyZXNvdXJjZUxvYWRlci5n
ZXQoKSwgcmVzb3VyY2VMb2FkZXItPnJlcXVlc3QoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLCBzaG91
bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBtYXhpbXVtQnVmZmVyaW5nVGlt
ZSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJzY2hlZHVsZUxvYWQ6IFVSTCBub3QgaGFuZGxlZCBieSBhbnkgaGFuZGxl
cnMgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0
ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSwg
dHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMu
ZnJhbWVJRC50b1VJbnQ2NCgpLCBpZGVudGlmaWVyKTsKLSAgICB9KTsKKyAgICBpZiAoKHJlc291
cmNlTG9hZGVyLm9wdGlvbnMoKS5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciAm
JiByZXNvdXJjZUxvYWRlci5vcHRpb25zKCkuc2VydmljZVdvcmtlcnNNb2RlICE9IFNlcnZpY2VX
b3JrZXJzTW9kZTo6Tm9uZSkgfHwgIXRyeUxvYWRpbmdVc2luZ1VSTFNjaGVtZUhhbmRsZXIocmVz
b3VyY2VMb2FkZXIpKSB7CiAjZWxzZQogICAgIGlmICghdHJ5TG9hZGluZ1VzaW5nVVJMU2NoZW1l
SGFuZGxlcihyZXNvdXJjZUxvYWRlcikpIHsKKyNlbmRpZgogICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIHNjaGVkdWxlZCB3aXRoIHRoZSBO
ZXR3b3JrUHJvY2VzcyAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVy
LmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQ
YXJhbWV0ZXJzLmZyYW1lSUQudG9VSW50NjQoKSwgaWRlbnRpZmllcik7CiAgICAgICAgIHNjaGVk
dWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhyZXNvdXJjZUxvYWRlciwgcmVzb3VyY2VMb2FkZXIu
cmVxdWVzdCgpLCB0cmFja2luZ1BhcmFtZXRlcnMsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBT
VG9IVFRQUmVkaXJlY3QsIG1heGltdW1CdWZmZXJpbmdUaW1lKHJlc291cmNlKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic2NoZWR1bGVMb2Fk
OiBVUkwgbm90IGhhbmRsZWQgYnkgYW55IGhhbmRsZXJzIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0
ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50
b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRC50b1VJbnQ2NCgpLCBpZGVudGlm
aWVyKTsKLSNlbmRpZgogfQogCiBib29sIFdlYkxvYWRlclN0cmF0ZWd5Ojp0cnlMb2FkaW5nVXNp
bmdVUkxTY2hlbWVIYW5kbGVyKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlcikKQEAgLTI3
MSw2ICsyNTAsMTAgQEAgYm9vbCBXZWJMb2FkZXJTdHJhdGVneTo6dHJ5TG9hZGluZ1VzaW5nVVJM
U2NoZW1lSGFuZGxlcihSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2UKIAogdm9pZCBXZWJMb2FkZXJT
dHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKFJlc291cmNlTG9hZGVyJiBy
ZXNvdXJjZUxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJS
ZXNvdXJjZUxvYWRlcjo6VHJhY2tpbmdQYXJhbWV0ZXJzJiB0cmFja2luZ1BhcmFtZXRlcnMsIGJv
b2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgU2Vjb25kcyBtYXhp
bXVtQnVmZmVyaW5nVGltZSkKIHsKKyAgICBhdXRvKiB3ZWJGcmFtZUxvYWRlckNsaWVudCA9IHRv
V2ViRnJhbWVMb2FkZXJDbGllbnQocmVzb3VyY2VMb2FkZXIuZnJhbWVMb2FkZXIoKS0+Y2xpZW50
KCkpOworICAgIGF1dG8qIHdlYkZyYW1lID0gd2ViRnJhbWVMb2FkZXJDbGllbnQgPyB3ZWJGcmFt
ZUxvYWRlckNsaWVudC0+d2ViRnJhbWUoKSA6IG51bGxwdHI7CisgICAgYXV0byogd2ViUGFnZSA9
IHdlYkZyYW1lID8gd2ViRnJhbWUtPnBhZ2UoKSA6IG51bGxwdHI7CisKICAgICBSZXNvdXJjZUxv
YWRJZGVudGlmaWVyIGlkZW50aWZpZXIgPSByZXNvdXJjZUxvYWRlci5pZGVudGlmaWVyKCk7CiAg
ICAgQVNTRVJUKGlkZW50aWZpZXIpOwogCkBAIC0zMDIsNiArMjg1LDE3IEBAIHZvaWQgV2ViTG9h
ZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhSZXNvdXJjZUxvYWRl
ciYgcmVzb3VyY2VMCiAgICAgbG9hZFBhcmFtZXRlcnMucHJlZmxpZ2h0UG9saWN5ID0gcmVzb3Vy
Y2VMb2FkZXIub3B0aW9ucygpLnByZWZsaWdodFBvbGljeTsKICAgICBsb2FkUGFyYW1ldGVycy5p
c0hUVFBTVXBncmFkZUVuYWJsZWQgPSByZXNvdXJjZUxvYWRlci5mcmFtZSgpID8gcmVzb3VyY2VM
b2FkZXIuZnJhbWUoKS0+c2V0dGluZ3MoKS5IVFRQU1VwZ3JhZGVFbmFibGVkKCkgOiBmYWxzZTsK
IAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICAvLyBJbiBjYXNlIG9mIFVSTCBzY2hl
bWUgaGFuZGxlciwgd2Ugd2lsbCB0cnkgdG8gbG9hZCBvbiBzZXJ2aWNlIHdvcmtlcnMgYW5kIGlm
IHVuaGFuZGxlZCwgZmFsbGJhY2sgdG8gVVJMIHNjaGVtZSBoYW5kbGVyLgorICAgIGlmIChyZXNv
dXJjZUxvYWRlci5vcHRpb25zKCkuc2VydmljZVdvcmtlcnNNb2RlID09IFNlcnZpY2VXb3JrZXJz
TW9kZTo6QWxsICYmIHdlYlBhZ2UgJiYgIHdlYlBhZ2UtPnVybFNjaGVtZUhhbmRsZXJGb3JTY2hl
bWUocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnVybCgpLnByb3RvY29sKCkudG9TdHJpbmdXaXRo
b3V0Q29weWluZygpKSkKKyAgICAgICAgbG9hZFBhcmFtZXRlcnMuc2VydmljZVdvcmtlcnNNb2Rl
ID0gU2VydmljZVdvcmtlcnNNb2RlOjpPbmx5OworICAgIGVsc2UKKyAgICAgICAgbG9hZFBhcmFt
ZXRlcnMuc2VydmljZVdvcmtlcnNNb2RlID0gcmVzb3VyY2VMb2FkZXIub3B0aW9ucygpLnNlcnZp
Y2VXb3JrZXJzTW9kZTsKKworICAgIGxvYWRQYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25JZGVudGlmaWVyID0gcmVzb3VyY2VMb2FkZXIub3B0aW9ucygpLnNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyOworICAgIGxvYWRQYXJhbWV0ZXJzLmh0dHBIZWFkZXJzVG9L
ZWVwID0gcmVzb3VyY2VMb2FkZXIub3B0aW9ucygpLmh0dHBIZWFkZXJzVG9LZWVwOworI2VuZGlm
CisKICAgICBhdXRvKiBkb2N1bWVudCA9IHJlc291cmNlTG9hZGVyLmZyYW1lKCkgPyByZXNvdXJj
ZUxvYWRlci5mcmFtZSgpLT5kb2N1bWVudCgpIDogbnVsbHB0cjsKICAgICBpZiAocmVzb3VyY2VM
b2FkZXIub3B0aW9ucygpLmNzcFJlc3BvbnNlSGVhZGVycykKICAgICAgICAgbG9hZFBhcmFtZXRl
cnMuY3NwUmVzcG9uc2VIZWFkZXJzID0gcmVzb3VyY2VMb2FkZXIub3B0aW9ucygpLmNzcFJlc3Bv
bnNlSGVhZGVyczsKQEAgLTQzOCwxMSArNDMyLDYgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6
cmVtb3ZlKFJlc291cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlcikKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBpZiAoV2ViU2VydmljZVdv
cmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKS5jYW5jZWxGZXRjaChtYWtlT2JqZWN0SWRlbnRpZmll
cjxGZXRjaElkZW50aWZpZXJUeXBlPihpZGVudGlmaWVyKSkpCi0gICAgICAgIHJldHVybjsKLSNl
bmRpZgotCiAgICAgUmVmUHRyPFdlYlJlc291cmNlTG9hZGVyPiBsb2FkZXIgPSBtX3dlYlJlc291
cmNlTG9hZGVycy50YWtlKGlkZW50aWZpZXIpOwogICAgIC8vIExvYWRlciBtYXkgbm90IGJlIHJl
Z2lzdGVyZWQgaWYgd2UgY3JlYXRlZCBpdCwgYnV0IGhhdmVuJ3Qgc2NoZWR1bGVkIHlldCAoYSBi
dW5kbGUgY2xpZW50IGNhbiBkZWNpZGUgdG8gY2FuY2VsIHN1Y2ggcmVxdWVzdCB2aWEgd2lsbFNl
bmRSZXF1ZXN0KS4KICAgICBpZiAoIWxvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCBhMzkyNDFhY2Ez
MGZlNzk2ODExMDI3NDMyMDE3Y2E0NDliZmIxZjJmLi41YjNlZjIzOWFkZDY5ZTRlYWZjYjlmZDE1
MGNmMTU3MjRiZDFlNTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0zMiwxMyArMzIsMjAgQEAKICNpbmNs
dWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvcmVB
cmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgorI2luY2x1ZGUgIldlYkZy
YW1lLmgiCisjaW5jbHVkZSAiV2ViRnJhbWVMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJM
b2FkZXJTdHJhdGVneS5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzLmgiCisjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ2VydGlm
aWNhdGVJbmZvLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Eb2N1bWVudExvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxv
YWRlckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
V2ViS2l0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrTG9hZE1ldHJpY3MuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1BhZ2UuaD4KQEAgLTIxOCw2ICsyMjUsNDcgQEAgdm9pZCBXZWJSZXNvdXJj
ZUxvYWRlcjo6ZGlkRmluaXNoUmVzb3VyY2VMb2FkKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYg
bmV0d29ya0wKICAgICBtX2NvcmVMb2FkZXItPmRpZEZpbmlzaExvYWRpbmcobmV0d29ya0xvYWRN
ZXRyaWNzKTsKIH0KIAordm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbFNlcnZpY2VXb3Jr
ZXJMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQoreworICAgIGlmIChhdXRvKiBkb2N1
bWVudCA9IG1fY29yZUxvYWRlci0+ZnJhbWUoKSA/IG1fY29yZUxvYWRlci0+ZnJhbWUoKS0+ZG9j
dW1lbnQoKSA6IG51bGxwdHIpIHsKKyAgICAgICAgaWYgKG1fY29yZUxvYWRlci0+b3B0aW9ucygp
LmRlc3RpbmF0aW9uICE9IEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OkVtcHR5U3RyaW5nIHx8
IGVycm9yLmlzR2VuZXJhbCgpKQorICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNz
YWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvci5sb2NhbGl6
ZWREZXNjcmlwdGlvbigpKTsKKyAgICAgICAgaWYgKG1fY29yZUxvYWRlci0+b3B0aW9ucygpLmRl
c3RpbmF0aW9uICE9IEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OkVtcHR5U3RyaW5nKQorICAg
ICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBN
ZXNzYWdlTGV2ZWw6OkVycm9yLCBtYWtlU3RyaW5nKCJDYW5ub3QgbG9hZCAiLCBlcnJvci5mYWls
aW5nVVJMKCkuc3RyaW5nKCksICIuIikpOworICAgIH0KKworICAgIGRpZEZhaWxSZXNvdXJjZUxv
YWQoZXJyb3IpOworfQorCit2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpzZXJ2aWNlV29ya2VyRGlk
Tm90SGFuZGxlKCkKK3sKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgic2VydmljZVdvcmtlckRpZE5vdEhhbmRsZTogKHBhZ2VJRCA9ICUiIFBS
SXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiki
LCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFt
ZXRlcnMuZnJhbWVJRC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlE
KTsKKworICAgIGlmIChtX2NvcmVMb2FkZXItPm9wdGlvbnMoKS5zZXJ2aWNlV29ya2Vyc01vZGUg
IT0gU2VydmljZVdvcmtlcnNNb2RlOjpPbmx5KSB7CisgICAgICAgIGF1dG8qIHdlYkZyYW1lTG9h
ZGVyQ2xpZW50ID0gdG9XZWJGcmFtZUxvYWRlckNsaWVudChtX2NvcmVMb2FkZXItPmZyYW1lTG9h
ZGVyKCktPmNsaWVudCgpKTsKKyAgICAgICAgYXV0byogd2ViRnJhbWUgPSB3ZWJGcmFtZUxvYWRl
ckNsaWVudCA/IHdlYkZyYW1lTG9hZGVyQ2xpZW50LT53ZWJGcmFtZSgpIDogbnVsbHB0cjsKKyAg
ICAgICAgYXV0byogd2ViUGFnZSA9IHdlYkZyYW1lID8gd2ViRnJhbWUtPnBhZ2UoKSA6IG51bGxw
dHI7CisKKyAgICAgICAgaWYgKGF1dG8qIGhhbmRsZXIgPSB3ZWJQYWdlLT51cmxTY2hlbWVIYW5k
bGVyRm9yU2NoZW1lKG1fY29yZUxvYWRlci0+cmVxdWVzdCgpLnVybCgpLnByb3RvY29sKCkudG9T
dHJpbmdXaXRob3V0Q29weWluZygpKSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgicmVzb3VyY2UgbG9hZGVkIGJ5IFVSTCBzY2hlbWUgaGFuZGxlcjogKHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQg
IikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1Bh
cmFtZXRlcnMuZnJhbWVJRC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJj
ZUlEKTsKKworICAgICAgICAgICAgYXV0byBsb2FkZXIgPSBtX2NvcmVMb2FkZXI7CisgICAgICAg
ICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJMb2FkZXJTdHJhdGVneSgpLnJlbW92ZSht
X2NvcmVMb2FkZXIuZ2V0KCkpOworCisgICAgICAgICAgICBoYW5kbGVyLT5zdGFydE5ld1Rhc2so
KmxvYWRlcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBh
dXRvIGVycm9yID0gaW50ZXJuYWxFcnJvcihtX2NvcmVMb2FkZXItPnJlcXVlc3QoKS51cmwoKSk7
CisgICAgZXJyb3Iuc2V0VHlwZShSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRpb24pOwor
ICAgIG1fY29yZUxvYWRlci0+ZGlkRmFpbChlcnJvcik7CisjZWxzZQorICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworI2VuZGlmCit9CisKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxS
ZXNvdXJjZUxvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgTE9HKE5ldHdv
cmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxSZXNvdXJjZUxvYWQg
Zm9yICclcyciLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIuaAppbmRleCA4ZWExYWVkYmViOWY1OTY0OTdhYjY3NGFmNDM2MjE2N2ExY2YyOWFhLi43
YzIxMTFkNDhiMjk1MTdiNTk3MzFlMzRiZGVkNmY5M2JjN2Q1NjM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKQEAgLTg1
LDYgKzg1LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlk
RmluaXNoUmVzb3VyY2VMb2FkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwog
ICAgIHZvaWQgZGlkRmFpbFJlc291cmNlTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
Jik7CisgICAgdm9pZCBkaWRGYWlsU2VydmljZVdvcmtlckxvYWQoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpOworICAgIHZvaWQgc2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSgpOwogICAg
IHZvaWQgZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpOwogCiAgICAgdm9pZCBzdG9w
TG9hZGluZ0FmdGVyWEZyYW1lT3B0aW9uc09yQ29udGVudFNlY3VyaXR5UG9saWN5RGVuaWVkKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMu
aW4KaW5kZXggN2I5MzI1NmYwMzZkZDA0MmY0NGJhODNhMzE4YmI3YjY2MzZkNDFhYS4uOGMwZjIx
YTgzNjIyY2Y4YWIwZDM2N2UyMWY4NmM3MWE3ZWQwNWQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVz
c2FnZXMuaW4KQEAgLTI3LDYgKzI3LDggQEAgbWVzc2FnZXMgLT4gV2ViUmVzb3VyY2VMb2FkZXIg
TGVnYWN5UmVjZWl2ZXIgewogICAgIERpZFJlY2VpdmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZSBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQogICAgIERpZEZpbmlz
aFJlc291cmNlTG9hZChXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MgbmV0d29ya0xvYWRNZXRy
aWNzKQogICAgIERpZEZhaWxSZXNvdXJjZUxvYWQoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJv
cikKKyAgICBEaWRGYWlsU2VydmljZVdvcmtlckxvYWQoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBl
cnJvcikKKyAgICBTZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlKCkKICAgICBEaWRCbG9ja0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKCkKIAogICAgIFN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25z
T3JDb250ZW50U2VjdXJpdHlQb2xpY3lEZW5pZWQoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBy
ZXNwb25zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1Nl
cnZpY2VXb3JrZXJDbGllbnRGZXRjaC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAzMjQ0NjZhOGQ0ZDg1YzgzMzA5NTlhNTBmNzdkNTg5MTQ2MTA2MTIxLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSwyMDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guaCIKLQotI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKLQotI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJXZWJTV0Ns
aWVudENvbm5lY3Rpb24uaCIKLSNpbmNsdWRlICJXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCIK
LSNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvRG9jdW1lbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VF
cnJvci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJLaXQgewotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLVJlZjxTZXJ2aWNlV29ya2VyQ2xp
ZW50RmV0Y2g+IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6Y3JlYXRlKFdlYlNlcnZpY2VXb3Jr
ZXJQcm92aWRlciYgc2VydmljZVdvcmtlclByb3ZpZGVyLCBSZWY8V2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXI+JiYgbG9hZGVyLCBGZXRjaElkZW50aWZpZXIgaWRlbnRpZmllciwgUmVmPFdlYlNXQ2xp
ZW50Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhU
VFBTVG9IVFRQUmVkaXJlY3QsIENhbGxiYWNrJiYgY2FsbGJhY2spCi17Ci0gICAgYXV0byBmZXRj
aCA9IGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtlckNsaWVudEZldGNoIHsgc2VydmljZVdvcmtl
clByb3ZpZGVyLCBXVEZNb3ZlKGxvYWRlciksIGlkZW50aWZpZXIsIFdURk1vdmUoY29ubmVjdGlv
biksIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFdURk1vdmUoY2Fs
bGJhY2spIH0pOwotICAgIGZldGNoLT5zdGFydCgpOwotICAgIHJldHVybiBmZXRjaDsKLX0KLQot
U2VydmljZVdvcmtlckNsaWVudEZldGNoOjp+U2VydmljZVdvcmtlckNsaWVudEZldGNoKCkKLXsK
LX0KLQotU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2go
V2ViU2VydmljZVdvcmtlclByb3ZpZGVyJiBzZXJ2aWNlV29ya2VyUHJvdmlkZXIsIFJlZjxXZWJD
b3JlOjpSZXNvdXJjZUxvYWRlcj4mJiBsb2FkZXIsIEZldGNoSWRlbnRpZmllciBpZGVudGlmaWVy
LCBSZWY8V2ViU1dDbGllbnRDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIGJvb2wgc2hvdWxkQ2xl
YXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgQ2FsbGJhY2smJiBjYWxsYmFjaykKLSAg
ICA6IG1fc2VydmljZVdvcmtlclByb3ZpZGVyKHNlcnZpY2VXb3JrZXJQcm92aWRlcikKLSAgICAs
IG1fbG9hZGVyKFdURk1vdmUobG9hZGVyKSkKLSAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVy
KQotICAgICwgbV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCi0gICAgLCBtX2NhbGxi
YWNrKFdURk1vdmUoY2FsbGJhY2spKQotICAgICwgbV9zaG91bGRDbGVhclJlZmVycmVyT25IVFRQ
U1RvSFRUUFJlZGlyZWN0KHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3Qp
Ci17Ci19Ci0KLXZvaWQgU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpzdGFydCgpCi17Ci0gICAg
YXV0byByZXF1ZXN0ID0gbV9sb2FkZXItPnJlcXVlc3QoKTsKLSAgICBhdXRvJiBvcHRpb25zID0g
bV9sb2FkZXItPm9wdGlvbnMoKTsKLQotICAgIGF1dG8gcmVmZXJyZXIgPSByZXF1ZXN0Lmh0dHBS
ZWZlcnJlcigpOwotCi0gICAgLy8gV2UgYXJlIGludGVyY2VwdGluZyBmZXRjaCBjYWxscyBhZnRl
ciBnb2luZyB0aHJvdWdoIHRoZSBIVFRQIGxheWVyLCB3aGljaCBtYXkgYWRkIHNvbWUgc3BlY2lm
aWMgaGVhZGVycy4KLSAgICBjbGVhbkhUVFBSZXF1ZXN0SGVhZGVyc0ZvckFjY2Vzc0NvbnRyb2wo
cmVxdWVzdCwgb3B0aW9ucy5odHRwSGVhZGVyc1RvS2VlcCk7Ci0KLSAgICBBU1NFUlQob3B0aW9u
cy5zZXJ2aWNlV29ya2Vyc01vZGUgIT0gU2VydmljZVdvcmtlcnNNb2RlOjpOb25lKTsKLSAgICBt
X3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyID0gb3B0aW9ucy5zZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllci52YWx1ZSgpOwotICAgIG1fY29ubmVjdGlvbi0+c3Rh
cnRGZXRjaChtX2lkZW50aWZpZXIsIG1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIsIHJlcXVlc3QsIG9wdGlvbnMsIHJlZmVycmVyKTsKLX0KLQotdm9pZCBTZXJ2aWNlV29ya2Vy
Q2xpZW50RmV0Y2g6OmRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2Um
JiByZXNwb25zZSkKLXsKLSAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgIGlmICghbV9sb2FkZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6U2VydmljZVdv
cmtlcik7Ci0KLSAgICAgICAgbV9sb2FkZXItPndpbGxTZW5kUmVxdWVzdChtX2xvYWRlci0+cmVx
dWVzdCgpLnJlZGlyZWN0ZWRSZXF1ZXN0KHJlc3BvbnNlLCBtX3Nob3VsZENsZWFyUmVmZXJyZXJP
bkhUVFBTVG9IVFRQUmVkaXJlY3QpLCByZXNwb25zZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBw
cm90ZWN0ZWRUaGlzLmNvcHlSZWYoKV0oUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkgewotICAg
ICAgICAgICAgaWYgKCFtX2xvYWRlciB8fCByZXF1ZXN0LmlzTnVsbCgpKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBXVEZNb3ZlKG1fY2FsbGJhY2spKQotICAgICAgICAg
ICAgICAgICAgICBjYWxsYmFjayhSZXN1bHQ6OlN1Y2NlZWRlZCk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgQVNTRVJUKHJlcXVlc3QgPT0gbV9s
b2FkZXItPnJlcXVlc3QoKSk7Ci0gICAgICAgICAgICBzdGFydCgpOwotICAgICAgICB9KTsKLSAg
ICB9KTsKLX0KLQotdm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OmRpZFJlY2VpdmVSZXNw
b25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIGJvb2wgbmVlZHNDb250aW51ZURpZFJl
Y2VpdmVSZXNwb25zZU1lc3NhZ2UpCi17Ci0gICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCByZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2Up
LCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZV0oKSBtdXRhYmxlIHsKLSAg
ICAgICAgaWYgKCFtX2xvYWRlcikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAo
YXV0byBjYWxsYmFjayA9IFdURk1vdmUobV9jYWxsYmFjaykpCi0gICAgICAgICAgICBjYWxsYmFj
ayhSZXN1bHQ6OlN1Y2NlZWRlZCk7Ci0KLSAgICAgICAgQVNTRVJUKCFyZXNwb25zZS5pc1JlZGly
ZWN0aW9uKCkgfHwgIXJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKS5jb250YWlucyhIVFRQSGVh
ZGVyTmFtZTo6TG9jYXRpb24pKTsKLQotICAgICAgICBpZiAoIW5lZWRzQ29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2VNZXNzYWdlKSB7Ci0gICAgICAgICAgICBtX2xvYWRlci0+ZGlkUmVjZWl2ZVJl
c3BvbnNlKHJlc3BvbnNlLCBbXSB7IH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0KLSAgICAgICAgbV9sb2FkZXItPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSB7Ci0gICAgICAgICAgICBp
ZiAoIW1fbG9hZGVyKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgbV9j
b25uZWN0aW9uLT5jb250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKG1faWRlbnRpZmllciwg
bV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7Ci0gICAgICAgIH0pOwotICAg
IH0pOwotfQotCi12b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6ZGlkUmVjZWl2ZURhdGEo
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCBpbnQ2NF90IGVuY29kZWRE
YXRhTGVuZ3RoKQotewotICAgIGF1dG8qIGRhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihkYXRhUmVmZXJlbmNlLmRhdGEoKSk7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBlbmNvZGVkRGF0YUxlbmd0aCwgYnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgZGF0YVJlZmVyZW5jZS5zaXplKCkpXSgpIG11
dGFibGUgewotICAgICAgICBpZiAoIW1fbG9hZGVyKQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIG1fZW5jb2RlZERhdGFMZW5ndGggKz0gZW5jb2RlZERhdGFMZW5ndGg7Ci0KLSAgICAg
ICAgbV9sb2FkZXItPmRpZFJlY2VpdmVCdWZmZXIoV1RGTW92ZShidWZmZXIpLCBtX2VuY29kZWRE
YXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKLSAgICB9KTsKLX0KLQotdm9pZCBTZXJ2aWNl
V29ya2VyQ2xpZW50RmV0Y2g6OmRpZFJlY2VpdmVGb3JtRGF0YShjb25zdCBJUEM6OkZvcm1EYXRh
UmVmZXJlbmNlJikKLXsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvcm0gZGF0YSByZWFkaW5n
LgotfQotCi12b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6ZGlkRmluaXNoKCkKLXsKLSAg
ICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyld
IHsKLSAgICAgICAgaWYgKCFtX2xvYWRlcikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICBBU1NFUlQoIW1fY2FsbGJhY2spOwotCi0gICAgICAgIG1fbG9hZGVyLT5kaWRGaW5pc2hMb2Fk
aW5nKE5ldHdvcmtMb2FkTWV0cmljcyB7IH0pOwotICAgICAgICBtX3NlcnZpY2VXb3JrZXJQcm92
aWRlci5mZXRjaEZpbmlzaGVkKG1faWRlbnRpZmllcik7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU2Vy
dmljZVdvcmtlckNsaWVudEZldGNoOjpkaWRGYWlsKFJlc291cmNlRXJyb3ImJiBlcnJvcikKLXsK
LSAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGVycm9yID0gV1RGTW92ZShlcnJvcildIHsKLSAgICAgICAgaWYgKCFtX2xvYWRlcikKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBhdXRvKiBkb2N1bWVudCA9IG1fbG9hZGVyLT5m
cmFtZSgpID8gbV9sb2FkZXItPmZyYW1lKCktPmRvY3VtZW50KCkgOiBudWxscHRyOwotICAgICAg
ICBpZiAoZG9jdW1lbnQpIHsKLSAgICAgICAgICAgIGlmIChtX2xvYWRlci0+b3B0aW9ucygpLmRl
c3RpbmF0aW9uICE9IEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OkVtcHR5U3RyaW5nIHx8IGVy
cm9yLmlzR2VuZXJhbCgpKQotICAgICAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3IubG9jYWxp
emVkRGVzY3JpcHRpb24oKSk7Ci0gICAgICAgICAgICBpZiAobV9sb2FkZXItPm9wdGlvbnMoKS5k
ZXN0aW5hdGlvbiAhPSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpFbXB0eVN0cmluZykKLSAg
ICAgICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6
SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1ha2VTdHJpbmcoIkNhbm5vdCBsb2FkICIsIGVycm9y
LmZhaWxpbmdVUkwoKS5zdHJpbmcoKSwgIi4iKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBtX2xv
YWRlci0+ZGlkRmFpbChlcnJvcik7Ci0KLSAgICAgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBXVEZN
b3ZlKG1fY2FsbGJhY2spKQotICAgICAgICAgICAgY2FsbGJhY2soUmVzdWx0OjpTdWNjZWVkZWQp
OwotCi0gICAgICAgIG1fc2VydmljZVdvcmtlclByb3ZpZGVyLmZldGNoRmluaXNoZWQobV9pZGVu
dGlmaWVyKTsKLSAgICB9KTsKLX0KLQotdm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OmRp
ZE5vdEhhbmRsZSgpCi17Ci0gICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpXSB7Ci0gICAgICAgIGlmICghbV9sb2FkZXIpCi0gICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBXVEZNb3ZlKG1fY2FsbGJh
Y2spKQotICAgICAgICAgICAgY2FsbGJhY2soUmVzdWx0OjpVbmhhbmRsZWQpOwotCi0gICAgICAg
IG1fc2VydmljZVdvcmtlclByb3ZpZGVyLmZldGNoRmluaXNoZWQobV9pZGVudGlmaWVyKTsKLSAg
ICB9KTsKLX0KLQotdm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OmNhbmNlbCgpCi17Ci0g
ICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBXVEZNb3ZlKG1fY2FsbGJhY2spKQotICAgICAgICBjYWxs
YmFjayhSZXN1bHQ6OkNhbmNlbGxlZCk7Ci0KLSAgICBtX2Nvbm5lY3Rpb24tPmNhbmNlbEZldGNo
KG1faWRlbnRpZmllciwgbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7Ci0g
ICAgbV9sb2FkZXIgPSBudWxscHRyOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2Vu
ZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2NjdhYzc1N2ZkZDcxMDg4OGI4YjJkNGVlZTk0NDk5
MGYwYjBkMDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZldGNo
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0KLSNpbmNsdWRlICJEYXRhUmVmZXJl
bmNlLmgiCi0jaW5jbHVkZSAiRm9ybURhdGFSZWZlcmVuY2UuaCIKLSNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZXIuaCIKLSNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCi0jaW5jbHVkZSA8V2ViQ29y
ZS9GZXRjaElkZW50aWZpZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZGVyLmg+Ci0jaW5jbHVkZSA8d3RmL0NvbXBs
ZXRpb25IYW5kbGVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJTV0NsaWVu
dENvbm5lY3Rpb247Ci1jbGFzcyBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI7Ci0KLWNsYXNzIFNl
cnZpY2VXb3JrZXJDbGllbnRGZXRjaCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFNlcnZpY2VX
b3JrZXJDbGllbnRGZXRjaD4sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7Ci1wdWJsaWM6
Ci0gICAgZW51bSBjbGFzcyBSZXN1bHQgeyBTdWNjZWVkZWQsIENhbmNlbGxlZCwgVW5oYW5kbGVk
IH07Ci0gICAgdXNpbmcgQ2FsbGJhY2sgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVz
dWx0KT47Ci0KLSAgICBzdGF0aWMgUmVmPFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaD4gY3JlYXRl
KFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlciYsIFJlZjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcj4m
JiwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyLCBSZWY8V2ViU1dDbGllbnRDb25uZWN0aW9uPiYm
LCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIENhbGxiYWNr
JiYpOwotICAgIH5TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2goKTsKLQotICAgIHZvaWQgc3RhcnQo
KTsKLQotICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJikgZmluYWw7Ci0gICAgdm9pZCBjYW5jZWwoKTsKLQotICAgIGJvb2wgaXNPbmdvaW5n
KCkgY29uc3QgeyByZXR1cm4gISFtX2NhbGxiYWNrOyB9Ci0KLXByaXZhdGU6Ci0gICAgU2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoKFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlciYsIFJlZjxXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRlcj4mJiwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyLCBSZWY8V2ViU1dD
bGllbnRDb25uZWN0aW9uPiYmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQ
UmVkaXJlY3QsIENhbGxiYWNrJiYpOwotCi0gICAgT3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VF
cnJvcj4gdmFsaWRhdGVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7
Ci0KLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpOwotICAgIHZv
aWQgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
KTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGlu
dDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOwotICAgIHZvaWQgZGlkUmVjZWl2ZUZvcm1EYXRhKGNv
bnN0IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmKTsKLSAgICB2b2lkIGRpZEZpbmlzaCgpOwotICAg
IHZvaWQgZGlkRmFpbChXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpOwotICAgIHZvaWQgZGlkTm90
SGFuZGxlKCk7Ci0KLSAgICBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXImIG1fc2VydmljZVdvcmtl
clByb3ZpZGVyOwotICAgIFJlZlB0cjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcj4gbV9sb2FkZXI7
Ci0gICAgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKLSAgICBSZWY8V2Vi
U1dDbGllbnRDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247Ci0gICAgQ2FsbGJhY2sgbV9jYWxsYmFj
azsKLSAgICBib29sIG1fc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCB7
IHRydWUgfTsKLSAgICBpbnQ2NF90IG1fZW5jb2RlZERhdGFMZW5ndGggeyAwIH07Ci0gICAgYm9v
bCBtX2RpZEZhaWwgeyBmYWxzZSB9OwotICAgIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25JZGVudGlmaWVyIG1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5tZXNzYWdlcy5pbgpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggM2QzYmM3NDA0YmZiNDdkNjFlMGQxNTg4ZTFhNWYyYTljMDZh
MTY2MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gubWVz
c2FnZXMuaW4KKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0jIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0KLW1l
c3NhZ2VzIC0+IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaCB7Ci0gICAgRGlkUmVjZWl2ZVJlc3Bv
bnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIGJvb2wgbmVlZHNDb250aW51
ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCi0gICAgRGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9u
c2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKLSAgICBEaWRSZWNlaXZlRGF0
YShJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKLSAg
ICBEaWRSZWNlaXZlRm9ybURhdGEoSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSBkYXRhKQotICAgIERp
ZEZpbmlzaCgpCi0gICAgRGlkRmFpbChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQotICAg
IERpZE5vdEhhbmRsZSgpCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENv
bm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGll
bnRDb25uZWN0aW9uLmNwcAppbmRleCAwNmE0Y2M3ZGI3YTE4YzExODdiYWZjNjU4ODU1NDMyYzQ1
ZWIyYWUyLi5kMDA4OWJmNThiNjU0NTY1YThlMWU5MTJkMWJkYTYyMmE3ZDllZmM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50
Q29ubmVjdGlvbi5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgotI2luY2x1ZGUg
IlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENv
ZGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9v
bE1lc3NhZ2VzLmgiCkBAIC0yMDMsMjEgKzIwMiw2IEBAIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0
aW9uOjpnZXRSZWdpc3RyYXRpb25zKFNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcE9yaWdpbiwgY29u
CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpzdGFydEZldGNoKEZl
dGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3Qg
U3RyaW5nJiByZWZlcnJlcikKLXsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5l
Y3Rpb246OlN0YXJ0RmV0Y2ggeyBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwg
ZmV0Y2hJZGVudGlmaWVyLCByZXF1ZXN0LCBvcHRpb25zLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNl
IHsgcmVxdWVzdC5odHRwQm9keSgpIH0sIHJlZmVycmVyIH0pOwotfQotCi12b2lkIFdlYlNXQ2xp
ZW50Q29ubmVjdGlvbjo6Y2FuY2VsRmV0Y2goRmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmll
ciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgc2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbklkZW50aWZpZXIpCi17Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uOjpDYW5jZWxGZXRjaCB7IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
LCBmZXRjaElkZW50aWZpZXIgfSk7Ci19Ci0KLXZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpj
b250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKEZldGNoSWRlbnRpZmllciBmZXRjaElkZW50
aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyKQotewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVy
Q29ubmVjdGlvbjo6Q29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSB7IHNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIgfSk7Ci19Ci0KIHZvaWQg
V2ViU1dDbGllbnRDb25uZWN0aW9uOjpjb25uZWN0aW9uVG9TZXJ2ZXJMb3N0KCkKIHsKICAgICBj
bGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NsaWVudENvbm5lY3Rpb24uaAppbmRleCAyN2ZlYTJjMWIyNGI4YzJhOTY0YzRlOTY3ZDNm
N2VjYTM4ZDAzNzJmLi45ZTQ0NWY1NWM5NjgwOWNhOWNkNjM1NjMxZjU1NTQ3OTkxZWNhNTMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENv
bm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Ns
aWVudENvbm5lY3Rpb24uaApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24u
aCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVy
LmgiCi0jaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudEZldGNoLmgiCiAjaW5jbHVkZSAiU2hh
cmVkTWVtb3J5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9NZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU1dDbGllbnRDb25uZWN0aW9uLmg+CkBAIC02MCw5ICs1OSw2
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYpIGZpbmFsOwogCiAgICAgYm9vbCBtYXlIYXZlU2VydmljZVdvcmtlclJl
Z2lzdGVyZWRGb3JPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJikgY29u
c3QgZmluYWw7Ci0gICAgdm9pZCBzdGFydEZldGNoKFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwg
V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OkZldGNoT3B0aW9ucyYsIGNvbnN0
IFN0cmluZyYgcmVmZXJyZXIpOwotICAgIHZvaWQgY2FuY2VsRmV0Y2goV2ViQ29yZTo6RmV0Y2hJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7
Ci0gICAgdm9pZCBjb250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKFdlYkNvcmU6OkZldGNo
SWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIp
OwogCiAgICAgdm9pZCBjb25uZWN0aW9uVG9TZXJ2ZXJMb3N0KCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJv
dmlkZXIuY3BwCmluZGV4IDYyYTM5YjI1ZmRmYWQxN2UxMTU3NjMzMDAyODI0MmIzMDlmMTkyODUu
LjdkY2QxOGViYWQzMDZkYWU0NzViMDA3YjU3ZTdlMTY1ZjZiYjM1MDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtl
clByb3ZpZGVyLmNwcApAQCAtNjYsNDggKzY2LDYgQEAgV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0
aW9uKiBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OmV4aXN0aW5nU2VydmljZVdvcmtlckNvbm4K
ICAgICByZXR1cm4gbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLT5leGlzdGluZ1NlcnZpY2VXb3Jr
ZXJDb25uZWN0aW9uKCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRIYW5kbGVGZXRj
aChjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCi17Ci0gICAgaWYgKG9wdGlv
bnMuc2VydmljZVdvcmtlcnNNb2RlID09IFNlcnZpY2VXb3JrZXJzTW9kZTo6Tm9uZSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGlzUG90ZW50aWFsTmF2aWdhdGlvbk9yU3VicmVz
b3VyY2VSZXF1ZXN0KG9wdGlvbnMuZGVzdGluYXRpb24pKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICByZXR1cm4gISFvcHRpb25zLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlm
aWVyOwotfQotCi12b2lkIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6aGFuZGxlRmV0Y2goUmVz
b3VyY2VMb2FkZXImIGxvYWRlciwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRU
UFJlZGlyZWN0LCBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkNhbGxiYWNrJiYgY2FsbGJhY2sp
Ci17Ci0gICAgaWYgKCFMZWdhY3lTY2hlbWVSZWdpc3RyeTo6Y2FuU2VydmljZVdvcmtlcnNIYW5k
bGVVUkxTY2hlbWUobG9hZGVyLnJlcXVlc3QoKS51cmwoKS5wcm90b2NvbCgpLnRvU3RyaW5nV2l0
aG91dENvcHlpbmcoKSkgfHwgIXNob3VsZEhhbmRsZUZldGNoKGxvYWRlci5vcHRpb25zKCkpKSB7
Ci0gICAgICAgIGNhbGxiYWNrKFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6UmVzdWx0OjpVbmhh
bmRsZWQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byYgY29ubmVjdGlvbiA9
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigp
LnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKCk7Ci0gICAgYXV0byBmZXRjaElkZW50aWZpZXIgPSBt
YWtlT2JqZWN0SWRlbnRpZmllcjxGZXRjaElkZW50aWZpZXJUeXBlPihsb2FkZXIuaWRlbnRpZmll
cigpKTsKLSAgICBtX29uZ29pbmdGZXRjaFRhc2tzLmFkZChmZXRjaElkZW50aWZpZXIsIFNlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaDo6Y3JlYXRlKCp0aGlzLCBsb2FkZXIsIGZldGNoSWRlbnRpZmll
ciwgY29ubmVjdGlvbiwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwg
V1RGTW92ZShjYWxsYmFjaykpKTsKLX0KLQotYm9vbCBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6
OmNhbmNlbEZldGNoKEZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIpCi17Ci0gICAgYXV0
byBmZXRjaCA9IG1fb25nb2luZ0ZldGNoVGFza3MudGFrZShmZXRjaElkZW50aWZpZXIpOwotICAg
IGlmIChmZXRjaCkKLSAgICAgICAgKCpmZXRjaCktPmNhbmNlbCgpOwotICAgIHJldHVybiAhIWZl
dGNoOwotfQotCi12b2lkIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6ZmV0Y2hGaW5pc2hlZChG
ZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyKQotewotICAgIG1fb25nb2luZ0ZldGNoVGFz
a3MudGFrZShmZXRjaElkZW50aWZpZXIpOwotfQotCi12b2lkIFdlYlNlcnZpY2VXb3JrZXJQcm92
aWRlcjo6ZGlkUmVjZWl2ZVNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCi17Ci0gICAgaWYgKGF1
dG8gZmV0Y2ggPSBtX29uZ29pbmdGZXRjaFRhc2tzLmdldChtYWtlT2JqZWN0SWRlbnRpZmllcjxG
ZXRjaElkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQotICAgICAgICBm
ZXRjaC0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7Ci19Ci0KIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtl
clByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNl
V29ya2VyUHJvdmlkZXIuaAppbmRleCAwODhhZWQ5NTRlOWE5ZDRlZTU5MmY1ZDc1NTI3MjcxNDRh
MDUwYTIyLi5jMDBjMDQ3OTMxMjdhMDY5ZmFlOTUyMzAxMjVkYmI5NTU1NGNkNzMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJv
dmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNl
V29ya2VyUHJvdmlkZXIuaApAQCAtMjcsNyArMjcsNiBAQAogCiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQogCi0jaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudEZldGNoLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyUHJvdmlkZXIuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KIApAQCAtNDEsMTEgKzQwLDYgQEAgY2xhc3MgV2ViU2VydmljZVdvcmtlclBy
b3ZpZGVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJQcm92aWRlciB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlciYgc2luZ2xldG9uKCk7
CiAKLSAgICB2b2lkIGhhbmRsZUZldGNoKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJiwgYm9vbCBz
aG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBTZXJ2aWNlV29ya2VyQ2xp
ZW50RmV0Y2g6OkNhbGxiYWNrJiYpOwotICAgIGJvb2wgY2FuY2VsRmV0Y2goV2ViQ29yZTo6RmV0
Y2hJZGVudGlmaWVyKTsKLSAgICB2b2lkIGZldGNoRmluaXNoZWQoV2ViQ29yZTo6RmV0Y2hJZGVu
dGlmaWVyKTsKLQotICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAgICAgdm9pZCBkaWRSZWNl
aXZlU2VydmljZVdvcmtlckNsaWVudFJlZ2lzdHJhdGlvbk1hdGNoKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYpOwogCiBwcml2YXRlOgpAQCAtNTQsOCArNDgsNiBAQCBwcml2YXRlOgog
CiAgICAgV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uKiBleGlzdGluZ1NlcnZpY2VXb3JrZXJD
b25uZWN0aW9uKCkgZmluYWw7CiAgICAgV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uJiBzZXJ2
aWNlV29ya2VyQ29ubmVjdGlvbigpIGZpbmFsOwotCi0gICAgSGFzaE1hcDxXZWJDb3JlOjpGZXRj
aElkZW50aWZpZXIsIFJlZjxTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g+PiBtX29uZ29pbmdGZXRj
aFRhc2tzOwogfTsgLy8gY2xhc3MgV2ViU2VydmljZVdvcmtlclByb3ZpZGVyCiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggMjg1YmYwNmE1
ODNlODU3YTQ3NTJmN2VjZDY1MzU4MGQ3MDNlOTgyMi4uZmI0YzQ4NWE1Njk2NjFjMzcwZWIwMmI5
Y2FkMTFkZDZhM2UwY2Q4YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTIgQEAKKzIwMTktMTAtMTMgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgor
CisgICAgICAgIEhhbmRsZSBzZXJ2aWNlIHdvcmtlciBsb2FkcyB0aHJvdWdoIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjAyMzA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2Zl
dGNoLXJlcXVlc3QteGhyLmh0dHBzLWV4cGVjdGVkLnR4dDoKKwogMjAxOS0xMC0xMSAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgdGhlIHN1cHBvcnQgZm9y
IFNoYWRvd1Jvb3QuZGVsZWdhdGVGb2N1cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIv
ZmV0Y2gtcmVxdWVzdC14aHIuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIv
ZmV0Y2gtcmVxdWVzdC14aHIuaHR0cHMtZXhwZWN0ZWQudHh0CmluZGV4IDRmYjZiYjUzYjMxNjU1
MmY0MWQwYTk3ZmE5M2FkZDdmNjg2YTY1MjMuLjg1YWEwMGIwYWU4ZWRjYzE2ODE0NTY1ZDk5OWRh
ZDdlNDFhOTNjOTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2ZldGNoLXJlcXVlc3Qt
eGhyLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9mZXRjaC1yZXF1
ZXN0LXhoci5odHRwcy1leHBlY3RlZC50eHQKQEAgLTgsNyArOCw3IEBAIFBBU1MgRmV0Y2hFdmVu
dCNyZXF1ZXN0LmJvZHkgY29udGFpbnMgWEhSIHJlcXVlc3QgZGF0YSAoc3RyaW5nKQogUEFTUyBG
ZXRjaEV2ZW50I3JlcXVlc3QuYm9keSBjb250YWlucyBYSFIgcmVxdWVzdCBkYXRhIChibG9iKSAK
IFBBU1MgRmV0Y2hFdmVudCNyZXF1ZXN0Lm1ldGhvZCBpcyBzZXQgdG8gWEhSIG1ldGhvZCAKIFBB
U1MgWEhSIHVzaW5nIE9QVElPTlMgbWV0aG9kIAotRkFJTCBYSFIgd2l0aCBmb3JtIGRhdGEgcHJv
bWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiRXJyb3I6
IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIChzdHJpbmcpICJQT1NUIiBidXQgZ290ICh1bmRlZmlu
ZWQpIHVuZGVmaW5lZCIKK1BBU1MgWEhSIHdpdGggZm9ybSBkYXRhIAogUEFTUyBYSFIgd2l0aCBt
b2RlL2NyZWRlbnRpYWxzIHNldCAKIFBBU1MgWEhSIHRvIGRhdGEgVVJMIAogUEFTUyByZXN0b3Jl
IGdsb2JhbCBzdGF0ZSAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380968</attachid>
            <date>2019-10-15 01:16:21 -0700</date>
            <delta_ts>2019-10-15 01:59:18 -0700</delta_ts>
            <desc>GTK build fix</desc>
            <filename>bug-202309-20191015101619.patch</filename>
            <type>text/plain</type>
            <size>2368</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDE5NzE4NWMxNjFlMTEyYjk4
NDkyNzI2Nzc5Y2JmOTcyMGM3MzhhMGUuLmM4ZWUyMWYxMDE4M2JkOWZiMGU1OWQ0NTQ2MTNhM2Q2
MDIwODU1NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMTAtMTUgIHlvdWVubiBm
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEhhbmRsZSBzZXJ2aWNlIHdvcmtl
ciBsb2FkcyB0aHJvdWdoIE5ldHdvcmtSZXNvdXJjZUxvYWRlcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMzA5CisKKyAgICAgICAgVW5yZXZpZXdl
ZC4KKyAgICAgICAgRml4ICFFTkFCTEUoU0VSVklDRV9XT1JLRVIpIGJ1aWxkcy4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlRGlkUmVjZWl2
ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZXJ2
aWNlV29ya2VyRGlkTm90SGFuZGxlKToKKwogMjAxOS0xMC0xNSAgeW91ZW5uIGZhYmxldCAgPHlv
dWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBoZWFkZXJzIHRvIGtlZXAgZnJvbSBhIEhU
VFBIZWFkZXJOYW1lU2V0IHRvIGFuIE9wdGlvblNldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDY3M2YyYTQ0
ZTI3NGU5OTc2OTU2NmJkYzY4ZTY0ZWZiY2JlMTdiNzIuLmJhZjlkYzNiNWNkNjAzMTdjYTRjMDc4
Mjc4YmFmNDExMWE4YzRjZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTc2MCwxMCArNzYwLDEyIEBAIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpyZXN0YXJ0TmV0d29ya0xvYWQoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYgbmV3UmVxCiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250
aW51ZVdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBib29sIGlz
QWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKQogeworI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKICAgICBpZiAobV9zZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKSB7CiAgICAgICAgIG1fc2Vy
dmljZVdvcmtlckZldGNoVGFzay0+Y29udGludWVGZXRjaFRhc2tXaXRoKFdURk1vdmUobmV3UmVx
dWVzdCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQorI2VuZGlmCiAgICAgaWYgKG1fc2hvdWxk
UmVzdGFydExvYWQpIHsKICAgICAgICAgbV9zaG91bGRSZXN0YXJ0TG9hZCA9IGZhbHNlOwogCkBA
IC04MDksMTAgKzgxMSwxMiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVX
aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdAogCiB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKQogeworI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAobV9zZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKSB7
CiAgICAgICAgIG1fc2VydmljZVdvcmtlckZldGNoVGFzay0+Y29udGludWVEaWRSZWNlaXZlRmV0
Y2hSZXNwb25zZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQorI2VuZGlmCiAKICAgICBpZiAo
bV9jYWNoZUVudHJ5V2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKSB7CiAgICAg
ICAgIHNlbmRSZXN1bHRGb3JDYWNoZUVudHJ5KFdURk1vdmUobV9jYWNoZUVudHJ5V2FpdGluZ0Zv
ckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKSk7CkBAIC0xMjQwLDcgKzEyNDQsNiBAQCB2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSgpCiAgICAg
bV9zZXJ2aWNlV29ya2VyRmV0Y2hUYXNrID0gbnVsbHB0cjsKICAgICBzdGFydCgpOwogfQotCiAj
ZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>