<?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>238738</bug_id>
          
          <creation_ts>2022-04-04 07:53:25 -0700</creation_ts>
          <short_desc>Implement ServiceWorkerWindowClient.navigate</short_desc>
          <delta_ts>2025-07-25 00:28:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>238800</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>dpino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>kangil.han</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1857853</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-04-04 07:53:25 -0700</bug_when>
    <thetext>Implement ServiceWorkerWindowClient.navigate</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857873</commentid>
    <comment_count>1</comment_count>
      <attachid>456577</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-04-04 08:55:43 -0700</bug_when>
    <thetext>Created attachment 456577
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857975</commentid>
    <comment_count>2</comment_count>
      <attachid>456601</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-04-04 11:50:36 -0700</bug_when>
    <thetext>Created attachment 456601
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858356</commentid>
    <comment_count>3</comment_count>
      <attachid>456695</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-04-05 05:49:52 -0700</bug_when>
    <thetext>Created attachment 456695
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858357</commentid>
    <comment_count>4</comment_count>
      <attachid>456696</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-04-05 06:01:40 -0700</bug_when>
    <thetext>Created attachment 456696
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858380</commentid>
    <comment_count>5</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-04-05 08:07:14 -0700</bug_when>
    <thetext>@kal, any idea why gtk tests are failing? The bots do not provide the diff results sadly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858386</commentid>
    <comment_count>6</comment_count>
      <attachid>456702</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-04-05 08:39:19 -0700</bug_when>
    <thetext>Created attachment 456702
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858403</commentid>
    <comment_count>7</comment_count>
      <attachid>456702</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-05 09:22:51 -0700</bug_when>
    <thetext>Comment on attachment 456702
Patch

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

r=me

&gt; Source/WebCore/dom/Document.cpp:8790
&gt; +    postTask([weakThis = WeakPtr { *this }, url, callback = WTFMove(callback)](auto&amp;) mutable {

This should likely be using the HTML event loop instead of the legacy postTask().

&gt; Source/WebCore/workers/service/ServiceWorkerWindowClient.cpp:79
&gt; +        promise-&gt;reject(Exception { TypeError, makeString(&quot;URL string &quot;, urlString, &quot; cannot successfully be parsed&quot;_s) });

You may or may not use _s for string literals inside makeString(). It doesn&apos;t impact perf in any way as far as I know. However, you should be consistent. Your first literal uses &quot;&quot; and the second one uses &quot;&quot;_s. Please align one way or another.

&gt; Source/WebCore/workers/service/ServiceWorkerWindowClient.cpp:107
&gt; +#if ASSERT_ENABLED

Aren&apos;t you missing an assertion?

It is unclear to me what this code does unless you missed some kind of assertion relying on the ClientOrigin.

&gt; Source/WebCore/workers/service/server/SWServerWorker.cpp:427
&gt; +    return registrationIdentifier &amp;&amp; *registrationIdentifier == m_data.registrationIdentifier;

Can be written as `registrationIdentifier == m_data.registrationIdentifier`.

std::optional&apos;s operator == will do the right thing for you.

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:1807
&gt; +void NetworkProcessProxy::openWindowFromServiceWorker(PAL::SessionID sessionID, const String&amp; urlString, const WebCore::SecurityOriginData&amp; serviceWorkerOrigin, CompletionHandler&lt;void(std::optional&lt;PageIdentifier&gt;&amp;&amp;)&gt;&amp;&amp; callback)

I am a bit concerned you dropped WebCore:: from PageIdentifier but not from SecurityOriginData.

Also, I understand we use the WebCore namespace in this file. However, my understanding is that we were trying to be explicit about namespaces in new code (I think because of Unified builds). Therefore, this change may be going in the wrong direction?

&gt; Source/WebKit/UIProcess/WebFrameProxy.cpp:87
&gt; +std::optional&lt;PageIdentifier&gt; WebFrameProxy::pageIdentifier()

Why isn&apos;t this const?

&gt; Source/WebKit/UIProcess/WebFrameProxy.cpp:91
&gt; +    return m_page-&gt;webPageID();

nit: I would have used a ternary.

&gt; Source/WebKit/UIProcess/WebFrameProxy.h:133
&gt; +    void transferNavigationCallbackToFrame(WebFrameProxy&amp; frame) { std::exchange(frame.m_navigateCallback, WTFMove(m_navigateCallback)); }

This doesn&apos;t return anything so this shouldn&apos;t be using std::exchange(). Just do:
`frame.m_navigateCallback = WTFMove(m_navigateCallback);`

&gt; Source/WebKit/UIProcess/WebFrameProxy.h:138
&gt; +    std::optional&lt;WebCore::PageIdentifier&gt; pageIdentifier();

Should be const.

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:6445
&gt; +    auto* document = Document::allDocumentsMap().get(documentIdentifier);

To be safe, I&apos;d use `RefPtr document` here.

Also, we could write this function with a little less lines:
```
#if ENABLE(SERVICE_WORKER)
    if (RefPtr document = Document::allDocumentsMap().get(documentIdentifier)) {
        document-&gt;navigateFromServiceWorker(url, WTFMove(callback));
        return;
    }
#else
    UNUSED_PARAM(documentIdentifier);
    UNUSED_PARAM(url);
#endif
    callback(false);
```

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:2999
&gt; +&quot;&lt;/script&gt;&quot;_s;

Thank you for using ASCIILiteral.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858715</commentid>
    <comment_count>8</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-04-06 01:03:34 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #7)
&gt; Comment on attachment 456702 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=456702&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:8790
&gt; &gt; +    postTask([weakThis = WeakPtr { *this }, url, callback = WTFMove(callback)](auto&amp;) mutable {
&gt; 
&gt; This should likely be using the HTML event loop instead of the legacy
&gt; postTask().

Right.

&gt; &gt; Source/WebCore/workers/service/ServiceWorkerWindowClient.cpp:79
&gt; &gt; +        promise-&gt;reject(Exception { TypeError, makeString(&quot;URL string &quot;, urlString, &quot; cannot successfully be parsed&quot;_s) });
&gt; 
&gt; You may or may not use _s for string literals inside makeString(). It
&gt; doesn&apos;t impact perf in any way as far as I know. However, you should be
&gt; consistent. Your first literal uses &quot;&quot; and the second one uses &quot;&quot;_s. Please
&gt; align one way or another.

OK

&gt; &gt; Source/WebCore/workers/service/ServiceWorkerWindowClient.cpp:107
&gt; &gt; +#if ASSERT_ENABLED
&gt; 
&gt; Aren&apos;t you missing an assertion?
&gt; 
&gt; It is unclear to me what this code does unless you missed some kind of
&gt; assertion relying on the ClientOrigin.

Yes, same assertion as added in openWindow patch that introduces WorkerGlobalScope::clientOrigin. will add it.

&gt; &gt; Source/WebCore/workers/service/server/SWServerWorker.cpp:427
&gt; &gt; +    return registrationIdentifier &amp;&amp; *registrationIdentifier == m_data.registrationIdentifier;
&gt; 
&gt; Can be written as `registrationIdentifier == m_data.registrationIdentifier`.
&gt; 
&gt; std::optional&apos;s operator == will do the right thing for you.

OK

&gt; &gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:1807
&gt; &gt; +void NetworkProcessProxy::openWindowFromServiceWorker(PAL::SessionID sessionID, const String&amp; urlString, const WebCore::SecurityOriginData&amp; serviceWorkerOrigin, CompletionHandler&lt;void(std::optional&lt;PageIdentifier&gt;&amp;&amp;)&gt;&amp;&amp; callback)
&gt; 
&gt; I am a bit concerned you dropped WebCore:: from PageIdentifier but not from
&gt; SecurityOriginData.
&gt; 
&gt; Also, I understand we use the WebCore namespace in this file. However, my
&gt; understanding is that we were trying to be explicit about namespaces in new
&gt; code (I think because of Unified builds). Therefore, this change may be
&gt; going in the wrong direction?

I reverted the change but I am not quite sure here.
Isn&apos;t it that if we do using namespace WebCore inside the namespace WebKit, we are good with unified builds?

&gt; &gt; Source/WebKit/UIProcess/WebFrameProxy.h:133
&gt; &gt; +    void transferNavigationCallbackToFrame(WebFrameProxy&amp; frame) { std::exchange(frame.m_navigateCallback, WTFMove(m_navigateCallback)); }
&gt; 
&gt; This doesn&apos;t return anything so this shouldn&apos;t be using std::exchange().
&gt; Just do:
&gt; `frame.m_navigateCallback = WTFMove(m_navigateCallback);`

I thought using std::exchange was usually better whenever we reuse variables (here m_navigateCallback).
Given these are completion handlers, this does not change anything in practice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858733</commentid>
    <comment_count>9</comment_count>
      <attachid>456793</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-04-06 01:57:06 -0700</bug_when>
    <thetext>Created attachment 456793
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858734</commentid>
    <comment_count>10</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-04-06 01:57:14 -0700</bug_when>
    <thetext>hmm, I can&apos;t see the diff in the test results, it seems there&apos;s a bug in the generated html for test results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858746</commentid>
    <comment_count>11</comment_count>
      <attachid>456797</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-04-06 03:12:22 -0700</bug_when>
    <thetext>Created attachment 456797
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858747</commentid>
    <comment_count>12</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-04-06 03:13:23 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #10)
&gt; hmm, I can&apos;t see the diff in the test results, it seems there&apos;s a bug in the
&gt; generated html for test results.

I marked the tests as failing for now in glib.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858778</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-04-06 04:18:37 -0700</bug_when>
    <thetext>Committed r292459 (249310@main): &lt;https://commits.webkit.org/249310@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 456797.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858779</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-06 04:19:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/91346404&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2132460</commentid>
    <comment_count>15</comment_count>
    <who name="Diego Pino">dpino</who>
    <bug_when>2025-07-25 00:25:40 -0700</bug_when>
    <thetext>There are only 2 tests filed under this bug (both in GLIB TestExpectations):

```
LayoutTests/platform/glib/TestExpectations:1987:webkit.org/b/238738 http/wpt/service-workers/navigate-iframes-window-client.https.html [ Failure ]
LayoutTests/platform/glib/TestExpectations:1988:webkit.org/b/238738 imported/w3c/web-platform-tests/service-workers/service-worker/windowclient-navigate.https.html [ Failure ]
```

Test &apos;http/wpt/service-workers/navigate-iframes-window-client.https.html&apos; was fixed by 296976@main:

  - https://results.webkit.org/?platform=GTK&amp;platform=WPE&amp;&amp;suite=layout-tests&amp;test=http%2Fwpt%2Fservice-workers%2Fnavigate-iframes-window-client.https.html

Perhaps is worth to close this bug and file &apos;imported/w3c/web-platform-tests/service-workers/service-worker/windowclient-navigate.https.html&apos; under a different bug. Notice this test is marked as flaky for iOS and Mac, although results.webkit.org show this test is consistently failing under those platforms:

https://results.webkit.org/?platform=GTK&amp;platform=WPE&amp;platform=ios&amp;platform=mac&amp;&amp;suite=layout-tests&amp;test=imported%2Fw3c%2Fweb-platform-tests%2Fservice-workers%2Fservice-worker%2Fwindowclient-navigate.https.html&amp;limit=4000</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2132462</commentid>
    <comment_count>16</comment_count>
    <who name="Diego Pino">dpino</who>
    <bug_when>2025-07-25 00:28:55 -0700</bug_when>
    <thetext>I just noticed this bug was actually already closed. Ideally, test failures in TestExpectations should not point to closed bugs. So I just going to go ahead and file &apos;imported/w3c/web-platform-tests/service-workers/service-worker/windowclient-navigate.https.html&apos; under a new bug for GLIB ports.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456577</attachid>
            <date>2022-04-04 08:55:43 -0700</date>
            <delta_ts>2022-04-04 11:50:30 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-238738-20220404175540.patch</filename>
            <type>text/plain</type>
            <size>52703</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGU0NjQ4YWFlM2VkYmU4
NTVkYmJiMzRhOWQ5M2QyNzc5NjVmY2YwOC4uNDU0YmE3ZWE5NGNjYTI5ZTZhZTdiYjI0YmRhM2Qy
YWI4NjE1MjJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIyLTA0LTA0ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgU2Vydmlj
ZVdvcmtlcldpbmRvd0NsaWVudC5uYXZpZ2F0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NzM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIGEgcm91dGluZSB0byBuYXZpZ2F0ZSBhIERv
Y3VtZW50LgorICAgICAgICBTZW5kIEZyYW1lSWRlbnRpZmllciBhcyBwYXJ0IG9mIFNlcnZpY2VX
b3JrZXJDbGllbnREYXRhLgorICAgICAgICBJbXBsZW1lbnQgU2VydmljZVdvcmtlcldpbmRvd0Ns
aWVudDo6bmF2aWdhdGUgYnkgc2VuZGluZyBJUEMgdG8gbmV0d29yayBwcm9jZXNzLgorCisgICAg
ICAgIENvdmVyZWQgYnkgcmViYXNlZCB0ZXN0cy4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5j
cHA6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudERhdGEuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlcldpbmRvd0NsaWVudC5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU1dDb250ZXh0TWFuYWdlci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNw
cDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmg6CisK
IDIwMjItMDQtMDQgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAg
IENPUlM6IEFsbG93IHBhcnRpY3VsYXIgUmFuZ2UgaGVhZGVyIHZhbHVlcyB3aXRob3V0IGEgcHJl
ZmxpZ2h0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDVlMmMyN2U2YWFjMTYwNTI5NzY0YzZlN2NlZDdlMzczOGI1ZDlm
M2MuLmUzYjQ4MDA2ZjczMjIwOWYzMTU1ODA0MGUxZjE0ZGQ2MjVmNDI0NjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzQgQEAKKzIwMjItMDQtMDQgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgorCisgICAgICAgIEltcGxlbWVudCBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50Lm5hdmln
YXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg3
MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVu
IHJlY2VpdmluZyBhIHJlcXVlc3QgdG8gbmF2aWdhdGUgYSBjbGllbnQsIHNlbmQgbWVzc2FnZSB0
byBVSVByb2Nlc3MuCisgICAgICAgIFVJUHJvY2VzcyBsb2NhdGVzIHRoZSBXZWJGcmFtZVByb3h5
IHdoaWNoIHdpbGwgc2VuZCBhbiBJUEMgbWVzc2FnZSB0byB0aGUgV2ViUHJvY2VzcyB0byBkbyBu
YXZpZ2F0aW9uLgorICAgICAgICBXZSBrZWVwIHRyYWNrIG9mIHRoZSBuYXZpZ2F0aW9uIHdpdGhp
biBXZWJGcmFtZVByb3h5LgorICAgICAgICBJbiBjYXNlIG9mIHByb2Nlc3Mgc3dhcHBpbmcsIHdl
IG1ha2Ugc3VyZSB0byByZXNldCB0aGUgV2ViRnJhbWVQcm94eS4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
Y3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluOgorCiAyMDIyLTA0LTA0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KIAogICAgICAgICBTZXJ2aWNlLVdvcmtlci1OYXZpZ2F0aW9uLVByZWxvYWQgaGVhZGVyIG5v
dCBiZWluZyBzZW50IHdoZW4gTmF2aWdhdGlvbiBQcmVsb2FkIGlzIGVuYWJsZWQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAppbmRleCBkMTYyMThkNjYyNTYxZTY3ZDJkYzY2YjViYzY2MjJhYjg5ZTE2
YTBmLi42YmI3YzRjNGIyNzdiMmM1YTFhMTA4ZjU2YjM2N2YzMTU1MTE1NTgxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKQEAgLTc2LDYgKzc2LDcgQEAKICNpbmNsdWRlICJFZGl0b3IuaCIKICNp
bmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKKyNp
bmNsdWRlICJFeGNlcHRpb25EYXRhLmgiCiAjaW5jbHVkZSAiRXh0ZW5zaW9uU3R5bGVTaGVldHMu
aCIKICNpbmNsdWRlICJGb2N1c0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJGb2N1c0V2ZW50Lmgi
CkBAIC04NzgwLDYgKzg3ODEsMjQgQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlU2VydmljZVdvcmtl
ckNsaWVudERhdGEoKQogICAgIGF1dG8gY29udHJvbGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uSWRlbnRpZmllciA9IGFjdGl2ZVNlcnZpY2VXb3JrZXIoKSA/IHN0ZDo6bWFrZV9vcHRpb25h
bDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4oYWN0aXZlU2VydmljZVdvcmtl
cigpLT5yZWdpc3RyYXRpb25JZGVudGlmaWVyKCkpIDogc3RkOjpudWxsb3B0OwogICAgIG1fc2Vy
dmljZVdvcmtlckNvbm5lY3Rpb24tPnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudCh0b3BPcmln
aW4oKSwgU2VydmljZVdvcmtlckNsaWVudERhdGE6OmZyb20oKnRoaXMpLCBjb250cm9sbGluZ1Nl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCB1c2VyQWdlbnQodXJsKCkpKTsKIH0K
Kwordm9pZCBEb2N1bWVudDo6bmF2aWdhdGVGcm9tU2VydmljZVdvcmtlcihjb25zdCBVUkwmIHVy
bCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKK3sKKyAgICBpZiAo
YWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpIHx8IGFjdGl2ZURPTU9iamVjdHNBcmVTdG9w
cGVkKCkpIHsKKyAgICAgICAgY2FsbGJhY2soZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIHBvc3RUYXNrKFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB1cmwsIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byog
ZnJhbWUgPSB3ZWFrVGhpcyA/IHdlYWtUaGlzLT5mcmFtZSgpIDogbnVsbHB0cjsKKyAgICAgICAg
aWYgKCFmcmFtZSkgeworICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIGZyYW1lLT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCku
c2NoZWR1bGVMb2NhdGlvbkNoYW5nZSgqd2Vha1RoaXMsIHdlYWtUaGlzLT5zZWN1cml0eU9yaWdp
bigpLCB1cmwsIGZyYW1lLT5sb2FkZXIoKS5vdXRnb2luZ1JlZmVycmVyKCksIExvY2tIaXN0b3J5
OjpZZXMsIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKHRydWUpOworICAgICAgICB9
KTsKKyAgICB9KTsKK30KICNlbmRpZgogCiBTdHJpbmcgRG9jdW1lbnQ6OnNpZ25lZFB1YmxpY0tl
eUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYg
Y2hhbGxlbmdlU3RyaW5nLCBjb25zdCBVUkwmIHVybCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXgg
OTVkZGI2ZGRhYjIxNTY3NDhhMDRiMjkyY2Y2OTc5NDdkN2ZmZTU1NS4uZDNjYmE4ZDcwNGY0YTI4
Mjg1M2QzNjNjOTFmOGI3ZTJlMzg0OTU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTE1Njgs
NiArMTU2OCw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9p
ZCBzZXRTZXJ2aWNlV29ya2VyQ29ubmVjdGlvbihTV0NsaWVudENvbm5lY3Rpb24qKTsKICAgICB2
b2lkIHVwZGF0ZVNlcnZpY2VXb3JrZXJDbGllbnREYXRhKCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBuYXZpZ2F0ZUZyb21TZXJ2aWNlV29ya2VyKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoVklERU8pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERh
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGll
bnREYXRhLmNwcAppbmRleCA1OTE2YmIwNGQ2Y2QyOTUwYmVhMWZjY2EyNWQxZTYyNmViN2U2ZTUy
Li4xZjFjYzBmM2Q0OWYxYTAyZjZjZTg4MDU3MGQ3OTM2NTI1YzJiMjBiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50
RGF0YS5jcHAKQEAgLTU5LDEyICs1OSwxMiBAQCBzdGF0aWMgU2VydmljZVdvcmtlckNsaWVudEZy
YW1lVHlwZSB0b1NlcnZpY2VXb3JrZXJDbGllbnRGcmFtZVR5cGUoU2NyaXB0RXhlY3V0aQogCiBT
ZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6aXNvbGF0ZWRD
b3B5KCkgY29uc3QgJgogewotICAgIHJldHVybiB7IGlkZW50aWZpZXIsIHR5cGUsIGZyYW1lVHlw
ZSwgdXJsLmlzb2xhdGVkQ29weSgpLCBwYWdlSWRlbnRpZmllciwgbGFzdE5hdmlnYXRpb25XYXNB
cHBJbml0aWF0ZWQsIGlzVmlzaWJsZSwgaXNGb2N1c2VkLCBmb2N1c09yZGVyLCBjcm9zc1RocmVh
ZENvcHkoYW5jZXN0b3JPcmlnaW5zKSB9OworICAgIHJldHVybiB7IGlkZW50aWZpZXIsIHR5cGUs
IGZyYW1lVHlwZSwgdXJsLmlzb2xhdGVkQ29weSgpLCBwYWdlSWRlbnRpZmllciwgZnJhbWVJZGVu
dGlmaWVyLCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCwgaXNWaXNpYmxlLCBpc0ZvY3Vz
ZWQsIGZvY3VzT3JkZXIsIGNyb3NzVGhyZWFkQ29weShhbmNlc3Rvck9yaWdpbnMpIH07CiB9CiAK
IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjppc29sYXRl
ZENvcHkoKSAmJgogewotICAgIHJldHVybiB7IGlkZW50aWZpZXIsIHR5cGUsIGZyYW1lVHlwZSwg
V1RGTW92ZSh1cmwpLmlzb2xhdGVkQ29weSgpLCBwYWdlSWRlbnRpZmllciwgbGFzdE5hdmlnYXRp
b25XYXNBcHBJbml0aWF0ZWQsIGlzVmlzaWJsZSwgaXNGb2N1c2VkLCBmb2N1c09yZGVyLCBjcm9z
c1RocmVhZENvcHkoV1RGTW92ZShhbmNlc3Rvck9yaWdpbnMpKSB9OworICAgIHJldHVybiB7IGlk
ZW50aWZpZXIsIHR5cGUsIGZyYW1lVHlwZSwgV1RGTW92ZSh1cmwpLmlzb2xhdGVkQ29weSgpLCBw
YWdlSWRlbnRpZmllciwgZnJhbWVJZGVudGlmaWVyLCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRp
YXRlZCwgaXNWaXNpYmxlLCBpc0ZvY3VzZWQsIGZvY3VzT3JkZXIsIGNyb3NzVGhyZWFkQ29weShX
VEZNb3ZlKGFuY2VzdG9yT3JpZ2lucykpIH07CiB9CiAKIFNlcnZpY2VXb3JrZXJDbGllbnREYXRh
IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjpmcm9tKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpCkBAIC04Nyw2ICs4Nyw3IEBAIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIFNlcnZpY2VX
b3JrZXJDbGllbnREYXRhOjpmcm9tKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvCiAgICAgICAg
IHRvU2VydmljZVdvcmtlckNsaWVudEZyYW1lVHlwZShjb250ZXh0KSwKICAgICAgICAgZG9jdW1l
bnQuY3JlYXRpb25VUkwoKSwKICAgICAgICAgZG9jdW1lbnQucGFnZUlEKCksCisgICAgICAgIGRv
Y3VtZW50LmZyYW1lSUQoKSwKICAgICAgICAgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQs
CiAgICAgICAgICFkb2N1bWVudC5oaWRkZW4oKSwKICAgICAgICAgZG9jdW1lbnQuaGFzRm9jdXMo
KSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDbGllbnREYXRhLmgKaW5kZXggMjY0YWE5ZTY4YmZkODQyYTE5NWM0MTM4YzgxYmNmMGQ3
ZDIzODc5Ny4uYjhhZjE4MDVhMTMyMTU2NGQ3MDM1MzEwZjAwZWI1ZTU5Yzc5Yzg2MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRE
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
bGllbnREYXRhLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKIAorI2luY2x1ZGUgIkZyYW1lSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlBhZ2VJZGVudGlm
aWVyLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc1F1YWxpZmllZC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLmgiCkBAIC00OSw2ICs1MCw3IEBAIHN0cnVjdCBTZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YSB7CiAgICAgU2VydmljZVdvcmtlckNsaWVudEZyYW1lVHlwZSBm
cmFtZVR5cGU7CiAgICAgVVJMIHVybDsKICAgICBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiBwYWdlSWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJh
bWVJZGVudGlmaWVyOwogICAgIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIGxhc3ROYXZp
Z2F0aW9uV2FzQXBwSW5pdGlhdGVkOwogICAgIGJvb2wgaXNWaXNpYmxlIHsgZmFsc2UgfTsKICAg
ICBib29sIGlzRm9jdXNlZCB7IGZhbHNlIH07CkBAIC02Nyw3ICs2OSw3IEBAIHN0cnVjdCBTZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YSB7CiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBTZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0g
ICAgZW5jb2RlciA8PCBpZGVudGlmaWVyIDw8IHR5cGUgPDwgZnJhbWVUeXBlIDw8IHVybCA8PCBw
YWdlSWRlbnRpZmllciA8PCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCA8PCBpc1Zpc2li
bGUgPDwgaXNGb2N1c2VkIDw8IGZvY3VzT3JkZXIgPDwgYW5jZXN0b3JPcmlnaW5zOworICAgIGVu
Y29kZXIgPDwgaWRlbnRpZmllciA8PCB0eXBlIDw8IGZyYW1lVHlwZSA8PCB1cmwgPDwgcGFnZUlk
ZW50aWZpZXIgPDwgZnJhbWVJZGVudGlmaWVyIDw8IGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlh
dGVkIDw8IGlzVmlzaWJsZSA8PCBpc0ZvY3VzZWQgPDwgZm9jdXNPcmRlciA8PCBhbmNlc3Rvck9y
aWdpbnM7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC05OCw2ICsxMDAsMTEgQEAg
c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gU2VydmljZVdvcmtlckNsaWVu
dERhdGE6OmRlY29kZShEZWNvZGVyJgogICAgIGlmICghcGFnZUlkZW50aWZpZXIpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8
RnJhbWVJZGVudGlmaWVyPj4gZnJhbWVJZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gZnJhbWVJ
ZGVudGlmaWVyOworICAgIGlmICghZnJhbWVJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworCiAgICAgc3RkOjpvcHRpb25hbDxMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRp
YXRlZD4gbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ7CiAgICAgZGVjb2RlciA+PiBsYXN0
TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDsKICAgICBpZiAoIWxhc3ROYXZpZ2F0aW9uV2FzQXBw
SW5pdGlhdGVkKQpAQCAtMTIzLDcgKzEzMCw3IEBAIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtl
ckNsaWVudERhdGE+IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjpkZWNvZGUoRGVjb2RlciYKICAg
ICBpZiAoIWFuY2VzdG9yT3JpZ2lucykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgIHJldHVybiB7IHsgV1RGTW92ZSgqaWRlbnRpZmllciksIFdURk1vdmUoKnR5cGUpLCBXVEZN
b3ZlKCpmcmFtZVR5cGUpLCBXVEZNb3ZlKCp1cmwpLCBXVEZNb3ZlKCpwYWdlSWRlbnRpZmllciks
IFdURk1vdmUoKmxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKSwgV1RGTW92ZSgqaXNWaXNp
YmxlKSwgV1RGTW92ZSgqaXNGb2N1c2VkKSwgV1RGTW92ZSgqZm9jdXNPcmRlciksIFdURk1vdmUo
KmFuY2VzdG9yT3JpZ2lucykgfSB9OworICAgIHJldHVybiB7IHsgV1RGTW92ZSgqaWRlbnRpZmll
ciksIFdURk1vdmUoKnR5cGUpLCBXVEZNb3ZlKCpmcmFtZVR5cGUpLCBXVEZNb3ZlKCp1cmwpLCBX
VEZNb3ZlKCpwYWdlSWRlbnRpZmllciksIFdURk1vdmUoKmZyYW1lSWRlbnRpZmllciksIFdURk1v
dmUoKmxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKSwgV1RGTW92ZSgqaXNWaXNpYmxlKSwg
V1RGTW92ZSgqaXNGb2N1c2VkKSwgV1RGTW92ZSgqZm9jdXNPcmRlciksIFdURk1vdmUoKmFuY2Vz
dG9yT3JpZ2lucykgfSB9OwogfQogCiB1c2luZyBTZXJ2aWNlV29ya2VyQ2xpZW50c01hdGNoQWxs
Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTZXJ2aWNlV29ya2VyQ2xp
ZW50RGF0YT4mJik+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuY3BwCmluZGV4IGRmNzdjYzQ5MTU5ZDk2
MWJmMmEyMTUzYzA3N2NhZjk4OTJlOTI3M2QuLjY1YTBlYzZkZTMwOGM2ZTA5MmMwMDM5MDQ1Y2Y4
Zjk4M2RlY2MxMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5jcHAKQEAgLTcxLDEwICs3MSw0NyBA
QCB2b2lkIFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQ6OmZvY3VzKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIFJlZjxEZWZlcgogICAgIH0pOwogfQogCi12b2lkIFNlcnZpY2VXb3Jr
ZXJXaW5kb3dDbGllbnQ6Om5hdmlnYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBT
dHJpbmcmIHVybCwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQordm9pZCBTZXJ2aWNl
V29ya2VyV2luZG93Q2xpZW50OjpuYXZpZ2F0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9t
aXNlKQogewotICAgIFVOVVNFRF9QQVJBTSh1cmwpOwotICAgIHByb21pc2UtPnJlamVjdChFeGNl
cHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIndpbmRvd0NsaWVudC5uYXZpZ2F0ZSgpIGlzIG5v
dCB5ZXQgc3VwcG9ydGVkIl9zIH0pOworICAgIGF1dG8gdXJsID0gY29udGV4dC5jb21wbGV0ZVVS
TCh1cmxTdHJpbmcpOworCisgICAgaWYgKCF1cmwuaXNWYWxpZCgpKSB7CisgICAgICAgIHByb21p
c2UtPnJlamVjdChFeGNlcHRpb24geyBUeXBlRXJyb3IsIG1ha2VTdHJpbmcoIlVSTCBzdHJpbmcg
IiwgdXJsU3RyaW5nLCAiIGNhbm5vdCBzdWNjZXNzZnVsbHkgYmUgcGFyc2VkIl9zKSB9KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICh1cmwucHJvdG9jb2xJc0Fib3V0KCkpIHsK
KyAgICAgICAgcHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgbWFrZVN0cmlu
ZygiU2VydmljZVdvcmtlckNsaWVudHMubmF2aWdhdGUoKSBjYW5ub3QgYmUgY2FsbGVkIHdpdGgg
VVJMICJfcywgdXJsLnN0cmluZygpKSB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IC8vIFdlIGltcGxlbWVudCBzdGVwIDQgKGNoZWNraW5nIG9mIGNsaWVudCdzIGFjdGl2ZSBzZXJ2
aWNlIHdvcmtlcikgaW4gbmV0d29yayBwcm9jZXNzIGFzIHdlIGNhbm5vdCBkbyBpdCBzeW5jaHJv
bm91c2x5LgorICAgIGF1dG8mIHNlcnZpY2VXb3JrZXJDb250ZXh0ID0gZG93bmNhc3Q8U2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KTsKKyAgICBhdXRvIHByb21pc2VJZGVudGlmaWVy
ID0gc2VydmljZVdvcmtlckNvbnRleHQuY2xpZW50cygpLmFkZFBlbmRpbmdQcm9taXNlKFdURk1v
dmUocHJvbWlzZSkpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW2NsaWVudElkZW50aWZpZXIgPSBp
ZGVudGlmaWVyKCksIHByb21pc2VJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciA9
IHNlcnZpY2VXb3JrZXJDb250ZXh0LnRocmVhZCgpLmlkZW50aWZpZXIoKSwgdXJsID0gV1RGTW92
ZSh1cmwpLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgeworICAgICAgICBTV0NvbnRleHRNYW5h
Z2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCktPm5hdmlnYXRlKGNsaWVudElkZW50aWZpZXIs
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCB1cmwsIFtwcm9taXNlSWRlbnRpZmllciwgc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXJdKGF1dG8gcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIFNX
Q29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnBvc3RUYXNrVG9TZXJ2aWNlV29ya2VyKHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBbcHJvbWlzZUlkZW50aWZpZXIsIHJlc3VsdCA9IGNyb3NzVGhy
ZWFkQ29weShXVEZNb3ZlKHJlc3VsdCkpXShhdXRvJiBzZXJ2aWNlV29ya2VyQ29udGV4dCkgbXV0
YWJsZSB7CisgICAgICAgICAgICAgICAgYXV0byBwcm9taXNlID0gc2VydmljZVdvcmtlckNvbnRl
eHQuY2xpZW50cygpLnRha2VQZW5kaW5nUHJvbWlzZShwcm9taXNlSWRlbnRpZmllcik7CisgICAg
ICAgICAgICAgICAgaWYgKCFwcm9taXNlKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgICAg
ICAgICAgICAgIHByb21pc2UtPnJlamVjdChyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBhdXRvIGNsaWVudERhdGEgPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CisgICAg
ICAgICAgICAgICAgaWYgKCFjbGllbnREYXRhKSB7CisgICAgICAgICAgICAgICAgICAgIHByb21p
c2UtPnJlc29sdmVXaXRoSlNWYWx1ZShKU0M6OmpzTnVsbCgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgICAg
ICAgICAgICAgIGF1dG8gb3JpZ2luRGF0YSA9IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVVSTChj
bGllbnREYXRhLT51cmwpOworICAgICAgICAgICAgICAgIENsaWVudE9yaWdpbiBjbGllbnRPcmln
aW4geyBvcmlnaW5EYXRhLCBvcmlnaW5EYXRhIH07CisjZW5kaWYKKyAgICAgICAgICAgICAgICBw
cm9taXNlLT50ZW1wbGF0ZSByZXNvbHZlPElETEludGVyZmFjZTxTZXJ2aWNlV29ya2VyV2luZG93
Q2xpZW50Pj4oU2VydmljZVdvcmtlcldpbmRvd0NsaWVudDo6Y3JlYXRlKHNlcnZpY2VXb3JrZXJD
b250ZXh0LCBXVEZNb3ZlKCpjbGllbnREYXRhKSkpOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0pOworICAgIH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2Vy
LmgKaW5kZXggOWEyM2M1YWQwMzY2ODBlOWQ4ZWE4ODNiNmEwOTZjNWI0YTg1OTgxZS4uNjVlNDQw
NWFkNDhjYTFmMTllZDA3NGEyZDg0MWQ4YTg0ZDEyZGJkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaApA
QCAtNzAsNiArNzAsOSBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBmb2N1cyhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmKT4mJikgPSAwOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgb3BlbldpbmRvdyhTZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4mJik+JiYpID0gMDsKIAorICAgICAgICB1c2luZyBOYXZpZ2F0ZUNhbGxi
YWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPj4mJik+OworICAgICAgICB2aXJ0dWFsIHZv
aWQgbmF2aWdhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIsIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBOYXZpZ2F0ZUNhbGxiYWNrJiYpID0gMDsKKwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbEhlYXJ0QmVhdENoZWNrKFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRBc0luc3BlY3RlZChTZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgYm9vbCkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmluZGV4IGM4MDcyYjkxZDQ4NGY5YmY0
MGMyYjBiNTk4OWM3MmJlYWMwMThlMWQuLjNlZDVmNjM1OGEzOTgzYjZjZTU4Nzg4Njk4YTdlZDdm
NmQzMTlmOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuY3BwCkBAIC0xMDc3LDYgKzEwNzcsMTQgQEAgdm9pZCBTV1NlcnZlcjo6dW5y
ZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmln
aW4sIFMKICAgICBtX2NsaWVudFRvQ29udHJvbGxpbmdSZWdpc3RyYXRpb24ucmVtb3ZlKHJlZ2lz
dHJhdGlvbkl0ZXJhdG9yKTsKIH0KIAorc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uSWRlbnRpZmllcj4gU1dTZXJ2ZXI6OmNsaWVudElkZW50aWZpZXJUb0NvbnRyb2xsaW5n
UmVnaXN0cmF0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGNsaWVudElkZW50
aWZpZXIpIGNvbnN0Cit7CisgICAgYXV0byByZWdpc3RyYXRpb25JdGVyYXRvciA9IG1fY2xpZW50
VG9Db250cm9sbGluZ1JlZ2lzdHJhdGlvbi5maW5kKGNsaWVudElkZW50aWZpZXIpOworICAgIGlm
IChyZWdpc3RyYXRpb25JdGVyYXRvciA9PSBtX2NsaWVudFRvQ29udHJvbGxpbmdSZWdpc3RyYXRp
b24uZW5kKCkpCisgICAgICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIHJlZ2lzdHJhdGlvbkl0
ZXJhdG9yLT52YWx1ZTsKK30KKwogU1dTZXJ2ZXI6OlNob3VsZERlbGF5UmVtb3ZhbCBTV1NlcnZl
cjo6cmVtb3ZlQ29udGV4dENvbm5lY3Rpb25JZlBvc3NpYmxlKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBkb21haW4pCiB7CiAgICAgaWYgKG1fY2xpZW50c0J5UmVnaXN0cmFibGVEb21haW4uY29u
dGFpbnMoZG9tYWluKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuaAppbmRleCBhNGJiNzUzZmVjNDAyMzAwMzg5NTU1M2ZmMjgyYmRjOWNlOWI1
MGIzLi5jZDI0MjAzZDFjOTY2ZDFhZmNkMGU5OWEzMWRmMjg5ZTY4OWE5MDgxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCkBAIC0yNDAs
NiArMjQwLDkgQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgU2hvdWxkRGVsYXlSZW1vdmFsIDog
Ym9vbCB7IE5vLCBZZXMgfTsKICAgICBTaG91bGREZWxheVJlbW92YWwgcmVtb3ZlQ29udGV4dENv
bm5lY3Rpb25JZlBvc3NpYmxlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CiAKKyAgICBzdGQ6
Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiBjbGllbnRJZGVu
dGlmaWVyVG9Db250cm9sbGluZ1JlZ2lzdHJhdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRl
bnRpZmllcikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmb3JFYWNoQ2xpZW50Rm9y
T3JpZ2luKGNvbnN0IENsaWVudE9yaWdpbiYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoU2VydmljZVdv
cmtlckNsaWVudERhdGEmKT4mKTsKKwogcHJpdmF0ZToKICAgICB2b2lkIHZhbGlkYXRlUmVnaXN0
cmF0aW9uRG9tYWluKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBTZXJ2aWNlV29ya2VySm9i
VHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAKQEAgLTI1OSw3ICsyNjIs
NiBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5zdGFsbENvbnRleHREYXRhKGNvbnN0IFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YSYpOwogCiAgICAgU1dTZXJ2ZXJSZWdpc3RyYXRpb24qIHJlZ2lzdHJh
dGlvbkZyb21TZXJ2aWNlV29ya2VySWRlbnRpZmllcihTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7
Ci0gICAgdm9pZCBmb3JFYWNoQ2xpZW50Rm9yT3JpZ2luKGNvbnN0IENsaWVudE9yaWdpbiYsIGNv
bnN0IEZ1bmN0aW9uPHZvaWQoU2VydmljZVdvcmtlckNsaWVudERhdGEmKT4mKTsKIAogICAgIHZv
aWQgcGVyZm9ybUdldE9yaWdpbnNXaXRoUmVnaXN0cmF0aW9uc0NhbGxiYWNrcygpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29y
a2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJX
b3JrZXIuY3BwCmluZGV4IDA4ODFiYzYyMzczNzEzYWFlMjFmZWIxOGI2MjYyNGI1YmE2ZTk5OTIu
LjkxZDBlOWY5MTU4ZWY1MTVmNGJlOTBiNmVmNWJkOWIyNmE0NzExMWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIu
Y3BwCkBAIC00MTksNiArNDE5LDE0IEBAIHZvaWQgU1dTZXJ2ZXJXb3JrZXI6OnRlcm1pbmF0ZUlm
UG9zc2libGUoKQogICAgIG1fc2VydmVyLT5yZW1vdmVDb250ZXh0Q29ubmVjdGlvbklmUG9zc2li
bGUocmVnaXN0cmFibGVEb21haW4oKSk7CiB9CiAKK2Jvb2wgU1dTZXJ2ZXJXb3JrZXI6OmlzQ2xp
ZW50QWN0aXZlU2VydmljZVdvcmtlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBj
bGllbnRJZGVudGlmaWVyKSBjb25zdAoreworICAgIGlmICghbV9zZXJ2ZXIpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBhdXRvIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIgPSBtX3NlcnZlci0+
Y2xpZW50SWRlbnRpZmllclRvQ29udHJvbGxpbmdSZWdpc3RyYXRpb24oY2xpZW50SWRlbnRpZmll
cik7CisgICAgcmV0dXJuIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIgJiYgKnJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIgPT0gbV9kYXRhLnJlZ2lzdHJhdGlvbklkZW50aWZpZXI7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3Jr
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3Jr
ZXIuaAppbmRleCA1NGRmMzg0MjIwODFhYWU0ZDgyYmE2MjRmYmE2MjkwYThmNjM3YmI2Li43MTdk
NTU5ZWRiZjM4MWIwNWM1NzIwZTU4ZTZjNDllYjZjNmQwN2M1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCkBAIC0x
NDEsNiArMTQxLDggQEAgcHVibGljOgogCiAgICAgYm9vbCBzaG91bGRDb250aW51ZSgpIGNvbnN0
IHsgcmV0dXJuICEhbV9mdW5jdGlvbmFsRXZlbnRDb3VudGVyIHx8IG1faXNJbnNwZWN0ZWQ7IH0K
IAorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNDbGllbnRBY3RpdmVTZXJ2aWNlV29ya2VyKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBT
V1NlcnZlcldvcmtlcihTV1NlcnZlciYsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiwgY29uc3QgVVJM
JiwgY29uc3QgU2NyaXB0QnVmZmVyJiwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiwgY29uc3QgQ29u
dGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgY29uc3QgQ3Jvc3NPcmlnaW5FbWJl
ZGRlclBvbGljeSYsIFN0cmluZyYmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlLCBTZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6
SW1wb3J0ZWRTY3JpcHQ+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24u
Y3BwCmluZGV4IDZmYThkYWE0MmQ0NzhkYWM0YzNlN2U4ZTZmY2ZlNmJhZjU4YjY4NmIuLjU2YjE4
MDQ2OTZhNTY1NGExZjM2YWQ5M2Q3ZGNkZTQxNDMxZDI2YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0xNjQsMTkgKzE2NCwyMCBAQCB2b2lkIFdlYlNXU2Vy
dmVyQ29ubmVjdGlvbjo6dXBkYXRlV29ya2VyU3RhdGVJbkNsaWVudChTZXJ2aWNlV29ya2VySWRl
bnRpZmllciB3bwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6VXBk
YXRlV29ya2VyU3RhdGUod29ya2VyLCBzdGF0ZSkpOwogfQogCi12b2lkIFdlYlNXU2VydmVyQ29u
bmVjdGlvbjo6Y29udHJvbENsaWVudChjb25zdCBWZWN0b3I8UmVmUHRyPFNlY3VyaXR5T3JpZ2lu
Pj4mIGZyYW1lQW5jZXN0b3JPcmlnaW5zLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmll
ciBjbGllbnRJZGVudGlmaWVyLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlv
bjo6Y29udHJvbENsaWVudChjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYgcGFy
YW1ldGVycywgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbiwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KQogeworICAgIGF1dG8gY2xpZW50SWRlbnRpZmllciA9ICpwYXJh
bWV0ZXJzLm9wdGlvbnMuY2xpZW50SWRlbnRpZmllcjsKICAgICAvLyBBcyBwZXIgc3RlcCAxMiBv
ZiBodHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jb24tZmV0Y2gtcmVxdWVzdC1h
bGdvcml0aG0sIHRoZSBhY3RpdmUgc2VydmljZSB3b3JrZXIgc2hvdWxkIGJlIGNvbnRyb2xsaW5n
IHRoZSBkb2N1bWVudC4KLSAgICAvLyBXZSByZWdpc3RlciBhIHRlbXBvcmFyeSBzZXJ2aWNlIHdv
cmtlciBjbGllbnQgdXNpbmcgdGhlIGlkZW50aWZpZXIgcHJvdmlkZWQgYnkgRG9jdW1lbnRMb2Fk
ZXIgYW5kIG5vdGlmeSBEb2N1bWVudExvYWRlciBhYm91dCBpdC4KLSAgICAvLyBJZiBub3RpZmlj
YXRpb24gaXMgc3VjY2Vzc2Z1bCwgRG9jdW1lbnRMb2FkZXIgd2lsbCB1bnJlZ2lzdGVyIHRoZSB0
ZW1wb3Jhcnkgc2VydmljZSB3b3JrZXIgY2xpZW50IGp1c3QgYWZ0ZXIgdGhlIGRvY3VtZW50IGlz
IGNyZWF0ZWQgYW5kIHJlZ2lzdGVyZWQgYXMgYSBjbGllbnQuCisgICAgLy8gV2UgcmVnaXN0ZXIg
dGhlIHNlcnZpY2Ugd29ya2VyIGNsaWVudCB1c2luZyB0aGUgaWRlbnRpZmllciBwcm92aWRlZCBi
eSBEb2N1bWVudExvYWRlciBhbmQgbm90aWZ5IERvY3VtZW50TG9hZGVyIGFib3V0IGl0LgorICAg
IC8vIElmIG5vdGlmaWNhdGlvbiBpcyBzdWNjZXNzZnVsLCBEb2N1bWVudExvYWRlciBpcyByZXNw
b25zaWJsZSB0byB1bnJlZ2lzdGVyIHRoZSBzZXJ2aWNlIHdvcmtlciBjbGllbnQgYXMgbmVlZGVk
LgogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViU1dDbGllbnRDb25uZWN0aW9u
OjpTZXREb2N1bWVudElzQ29udHJvbGxlZCB7IGNsaWVudElkZW50aWZpZXIsIHJlZ2lzdHJhdGlv
bi5kYXRhKCkgfSwgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHRoaXMsIGNsaWVudElk
ZW50aWZpZXJdKGJvb2wgaXNTdWNjZXNzKSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgaXNT
dWNjZXNzKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB1bnJlZ2lzdGVyU2VydmljZVdv
cmtlckNsaWVudChjbGllbnRJZGVudGlmaWVyKTsKICAgICB9KTsKIAotICAgIGF1dG8gYW5jZXN0
b3JPcmlnaW5zID0gbWFwKGZyYW1lQW5jZXN0b3JPcmlnaW5zLCBbXShhdXRvJiBvcmlnaW4pIHsg
cmV0dXJuIG9yaWdpbi0+dG9TdHJpbmcoKTsgfSk7Ci0gICAgU2VydmljZVdvcmtlckNsaWVudERh
dGEgZGF0YSB7IGNsaWVudElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGllbnRUeXBlOjpXaW5k
b3csIFNlcnZpY2VXb3JrZXJDbGllbnRGcmFtZVR5cGU6Ok5vbmUsIHJlcXVlc3QudXJsKCksIHsg
fSwgcmVxdWVzdC5pc0FwcEluaXRpYXRlZCgpID8gV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNB
cHBJbml0aWF0ZWQ6OlllcyA6IFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVk
OjpObywgZmFsc2UsIGZhbHNlLCAwLCBXVEZNb3ZlKGFuY2VzdG9yT3JpZ2lucykgfTsKKyAgICBh
dXRvIGFuY2VzdG9yT3JpZ2lucyA9IG1hcChwYXJhbWV0ZXJzLmZyYW1lQW5jZXN0b3JPcmlnaW5z
LCBbXShhdXRvJiBvcmlnaW4pIHsgcmV0dXJuIG9yaWdpbi0+dG9TdHJpbmcoKTsgfSk7CisgICAg
U2VydmljZVdvcmtlckNsaWVudERhdGEgZGF0YSB7IGNsaWVudElkZW50aWZpZXIsIFNlcnZpY2VX
b3JrZXJDbGllbnRUeXBlOjpXaW5kb3csIFNlcnZpY2VXb3JrZXJDbGllbnRGcmFtZVR5cGU6Ok5v
bmUsIHJlcXVlc3QudXJsKCksIHBhcmFtZXRlcnMud2ViUGFnZUlELCBwYXJhbWV0ZXJzLndlYkZy
YW1lSUQsIHJlcXVlc3QuaXNBcHBJbml0aWF0ZWQoKSA/IFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9u
V2FzQXBwSW5pdGlhdGVkOjpZZXMgOiBXZWJDb3JlOjpMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRp
YXRlZDo6Tm8sIGZhbHNlLCBmYWxzZSwgMCwgV1RGTW92ZShhbmNlc3Rvck9yaWdpbnMpIH07CiAg
ICAgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KFNlY3VyaXR5T3JpZ2luRGF0YSB7IHJlZ2lz
dHJhdGlvbi5rZXkoKS50b3BPcmlnaW4oKSB9LCBXVEZNb3ZlKGRhdGEpLCByZWdpc3RyYXRpb24u
aWRlbnRpZmllcigpLCByZXF1ZXN0Lmh0dHBVc2VyQWdlbnQoKSk7CiB9CiAKQEAgLTIwMSw3ICsy
MDIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckZldGNoVGFzaz4gV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uOjpjcmVhdGVGZXRjaFRhc2soTgogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICAgICAgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgPSByZWdp
c3RyYXRpb24tPmlkZW50aWZpZXIoKTsKLSAgICAgICAgY29udHJvbENsaWVudChsb2FkZXIucGFy
YW1ldGVycygpLmZyYW1lQW5jZXN0b3JPcmlnaW5zLCAqbG9hZGVyLnBhcmFtZXRlcnMoKS5vcHRp
b25zLmNsaWVudElkZW50aWZpZXIsICpyZWdpc3RyYXRpb24sIHJlcXVlc3QpOworICAgICAgICBj
b250cm9sQ2xpZW50KGxvYWRlci5wYXJhbWV0ZXJzKCksICpyZWdpc3RyYXRpb24sIHJlcXVlc3Qp
OwogICAgICAgICBsb2FkZXIuc2V0UmVzdWx0aW5nQ2xpZW50SWRlbnRpZmllcihsb2FkZXIucGFy
YW1ldGVycygpLm9wdGlvbnMuY2xpZW50SWRlbnRpZmllci0+dG9TdHJpbmcoKSk7CiAgICAgfSBl
bHNlIHsKICAgICAgICAgaWYgKCFsb2FkZXIucGFyYW1ldGVycygpLnNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCmlu
ZGV4IGY3N2I5ZjViOTM4N2I5MWYyYjY3MzIwZTM3Y2ZhYmI5Yjc5NWUyNGQuLjRkYzMxNDVjYmZi
OGUzZDVjNWVlY2ZmY2Y5NzUxMDUxNWY0ZjRhYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmgKQEAgLTYxLDYgKzYxLDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnRE
YXRhOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIE5ldHdvcmtQcm9jZXNzOworY2xhc3Mg
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM7CiBjbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI7CiBjbGFzcyBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOwogCkBAIC04Myw4ICs4NCw2IEBAIHB1
YmxpYzoKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckZldGNoVGFzaz4gY3JlYXRl
RmV0Y2hUYXNrKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYpOwogICAgIHZvaWQgZmV0Y2hUYXNrVGltZWRPdXQoV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIpOwogCi0gICAgdm9pZCBmb2N1c1NlcnZpY2VXb3JrZXJDbGllbnQoV2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJik+
JiYpOwotCiBwcml2YXRlOgogICAgIC8vIEltcGxlbWVudCBTV1NlcnZlcjo6Q29ubmVjdGlvbiAo
TWVzc2FnZXMgdG8gdGhlIGNsaWVudCBXZWJQcm9jZXNzKQogICAgIHZvaWQgcmVqZWN0Sm9iSW5D
bGllbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6
OkV4Y2VwdGlvbkRhdGEmKSBmaW5hbDsKQEAgLTk3LDYgKzk2LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHNldFJlZ2lzdHJhdGlvbkxhc3RVcGRhdGVUaW1lKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyLCBXYWxsVGltZSkgZmluYWw7CiAgICAgdm9pZCBzZXRSZWdp
c3RyYXRpb25VcGRhdGVWaWFDYWNoZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlKSBmaW5hbDsK
ICAgICB2b2lkIG5vdGlmeUNsaWVudHNPZkNvbnRyb2xsZXJDaGFuZ2UoY29uc3QgSGFzaFNldDxX
ZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4mIGNvbnRleHRJZGVudGlm
aWVycywgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckRhdGEmIG5ld0NvbnRyb2xsZXIpOwor
ICAgIHZvaWQgZm9jdXNTZXJ2aWNlV29ya2VyQ2xpZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYpPiYmKSBmaW5hbDsKIAogICAgIHZv
aWQgc2NoZWR1bGVKb2JJblNlcnZlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YSYmKTsK
IApAQCAtMTI5LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRQdXNoUGVybWlzc2lv
blN0YXRlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPHVpbnQ4X3QsIFdlYkNvcmU6OkV4Y2VwdGlvbkRh
dGE+JiYpPiYmKTsKIAogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRpb24sIFdlYkNvcmU6Ok1lc3NhZ2VX
aXRoTWVzc2FnZVBvcnRzJiYsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudElk
ZW50aWZpZXImIHNvdXJjZSk7Ci0gICAgdm9pZCBjb250cm9sQ2xpZW50KGNvbnN0IFZlY3RvcjxS
ZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiYsIFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRJZGVudGlmaWVyLCBXZWJDb3JlOjpTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworICAgIHZvaWQgY29udHJvbENsaWVudChjb25z
dCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYsIFdlYkNvcmU6OlNXU2VydmVyUmVnaXN0
cmF0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAKICAgICB1c2luZyBF
eGNlcHRpb25PclZvaWRDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmKT47CiAgICAgdm9pZCBlbmFibGVOYXZpZ2F0
aW9uUHJlbG9hZChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwg
RXhjZXB0aW9uT3JWb2lkQ2FsbGJhY2smJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmluZGV4IDdkZmEwZTE4NjQ5YTBmZTEzZDRmNzI2
MTVjYTI4MzYwMGM5ZjcwZTEuLjA3ODEzZjI0OTRhZWE5NTdiMjAxODUxNmZmOTQ3NTk2ODAwYzZm
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uY3BwCkBAIC0yNjIsNiArMjYyLDQ3IEBAIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOjpmb2N1cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBjbGllCiAgICAg
Y29ubmVjdGlvbi0+Zm9jdXNTZXJ2aWNlV29ya2VyQ2xpZW50KGNsaWVudElkZW50aWZpZXIsIFdU
Rk1vdmUoY2FsbGJhY2spKTsKIH0KIAordm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246Om5hdmlnYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGNsaWVudElkZW50
aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBj
b25zdCBVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxzdGQ6Om9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiwgRXhjZXB0aW9uRGF0YT4mJik+JiYgY2FsbGJh
Y2spCit7CisgICAgYXV0byogd29ya2VyID0gU1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5nV29ya2Vy
Rm9ySWRlbnRpZmllcihzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CisgICAgaWYgKCF3b3JrZXIp
IHsKKyAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGF0YSB7IFR5cGVF
cnJvciwgIm5vIHNlcnZpY2Ugd29ya2VyIl9zIH0pKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmICghd29ya2VyLT5pc0NsaWVudEFjdGl2ZVNlcnZpY2VXb3JrZXIoY2xpZW50SWRl
bnRpZmllcikpIHsKKyAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGF0
YSB7IFR5cGVFcnJvciwgInNlcnZpY2Ugd29ya2VyIGlzIG5vdCB0aGUgY2xpZW50IGFjdGl2ZSBz
ZXJ2aWNlIHdvcmtlciJfcyB9KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAg
YXV0byBkYXRhID0gd29ya2VyLT5maW5kQ2xpZW50QnlJZGVudGlmaWVyKGNsaWVudElkZW50aWZp
ZXIpOworICAgIGlmICghZGF0YSB8fCAhZGF0YS0+cGFnZUlkZW50aWZpZXIgfHwgIWRhdGEtPmZy
YW1lSWRlbnRpZmllcikgeworICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChFeGNlcHRp
b25EYXRhIHsgVHlwZUVycm9yLCAiY2Fubm90IG5hdmlnYXRlIHNlcnZpY2Ugd29ya2VyIGNsaWVu
dCJfcyB9KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHBhZ2VJZGVudGlm
aWVyID0gKmRhdGEtPnBhZ2VJZGVudGlmaWVyOworICAgIGF1dG8gZnJhbWVJZGVudGlmaWVyID0g
KmRhdGEtPmZyYW1lSWRlbnRpZmllcjsKKyAgICBtX2Nvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3Mo
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6Ok5hdmlnYXRlU2VydmljZVdvcmtlckNsaWVudCB7IGZyYW1l
SWRlbnRpZmllciwgY2xpZW50SWRlbnRpZmllciwgdXJsIH0sIFt3ZWFrVGhpcyA9IFdlYWtQdHIg
eyAqdGhpcyB9LCBwYWdlSWRlbnRpZmllciwgZnJhbWVJZGVudGlmaWVyLCB1cmwsIGNsaWVudE9y
aWdpbiA9IHdvcmtlci0+b3JpZ2luKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJv
b2wgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RoaXMt
PnNlcnZlcigpKSB7CisgICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChFeGNlcHRp
b25EYXRhIHsgVHlwZUVycm9yLCAic2VydmljZSB3b3JrZXIgaXMgZ29uZSJfcyB9KSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXJlc3VsdCkgeworICAg
ICAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGF0YSB7IFR5cGVFcnJv
ciwgIm5hdmlnYXRlIGZhaWxlZCJfcyB9KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBjbGll
bnREYXRhOworICAgICAgICB3ZWFrVGhpcy0+c2VydmVyKCktPmZvckVhY2hDbGllbnRGb3JPcmln
aW4oY2xpZW50T3JpZ2luLCBbcGFnZUlkZW50aWZpZXIsIGZyYW1lSWRlbnRpZmllciwgdXJsLCAm
Y2xpZW50RGF0YV0oYXV0byYgZGF0YSkgeworICAgICAgICAgICAgaWYgKCFjbGllbnREYXRhICYm
IGRhdGEucGFnZUlkZW50aWZpZXIgJiYgKmRhdGEucGFnZUlkZW50aWZpZXIgPT0gcGFnZUlkZW50
aWZpZXIgJiYgZGF0YS5mcmFtZUlkZW50aWZpZXIgJiYgKmRhdGEuZnJhbWVJZGVudGlmaWVyID09
IGZyYW1lSWRlbnRpZmllciAmJiBkYXRhLnVybCA9PSB1cmwpCisgICAgICAgICAgICAgICAgY2xp
ZW50RGF0YSA9IGRhdGE7CisgICAgICAgIH0pOworICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNs
aWVudERhdGEpKTsKKyAgICB9LCAwKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNl
bmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKaW5kZXggMDE2YTgyNzUzNTBhYzFlYzM0NzkwMmIy
ZmEzNGY4Mjg2MzA5ZDVjMC4uOTBkNzNjYjgyNTQyZjkyMDdlY2M5MDA5NGExY2I0OTUxNDUzYzll
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aApAQCAtMTAwLDYgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmaXJlTm90aWZpY2F0aW9u
RXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6Ok5v
dGlmaWNhdGlvbkRhdGEmLCBXZWJDb3JlOjpOb3RpZmljYXRpb25FdmVudFR5cGUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2UoKSBmaW5hbDsK
ICAgICB2b2lkIGZvY3VzKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdv
cmtlckNsaWVudERhdGE+JiYpPiYmKTsKKyAgICB2b2lkIG5hdmlnYXRlKFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiwgV2ViQ29yZTo6RXhjZXB0
aW9uRGF0YT4mJik+JiYpOwogCiAgICAgdm9pZCBjb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgp
IGZpbmFsOwogICAgIHZvaWQgdGVybWluYXRlRHVlVG9VbnJlc3BvbnNpdmVuZXNzKCkgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5tZXNzYWdlcy5pbgppbmRleCAyMWQyMzY1NTdjNDM0Mzk5ZGU5ODE4ZDY3OTNhY2I2NWNi
YzFlNmJmLi4xODJmMmJmNWI5MWFlNzM3MjM3ZDFkNzM1NzYxOTJiZTM0Mjc4NDU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
bWVzc2FnZXMuaW4KQEAgLTM2LDYgKzM2LDcgQEAgbWVzc2FnZXMgLT4gV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uIE5vdFJlZkNvdW50ZWQgewogICAgIE1hdGNoQWxsKHVpbnQ2NF90IG1h
dGNoQWxsUmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNs
aWVudFF1ZXJ5T3B0aW9ucyBvcHRpb25zKTsKICAgICBDbGFpbShXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikgLT4gKHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4gcmVzdWx0KQogICAgIEZvY3VzKFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
KSAtPiAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gcmVz
dWx0KQorICAgIE5hdmlnYXRlKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlm
aWVyIGNsaWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBVUkwgdXJsKSAtPiAoRXhwZWN0ZWQ8c3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4sIFdlYkNvcmU6OkV4Y2VwdGlvbkRh
dGE+IHJlc3VsdCkKICAgICBTZXRTY3JpcHRSZXNvdXJjZShXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBpZGVudGlmaWVyLCBVUkwgc2NyaXB0VVJMLCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHNjcmlwdCkKICAgICBQb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlckNsaWVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRp
ZmllciBkZXN0aW5hdGlvbiwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRz
IG1lc3NhZ2UsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZSwgU3RyaW5n
IHNvdXJjZU9yaWdpbikKICAgICBEaWRGYWlsSGVhcnRCZWF0Q2hlY2soV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDVjZjJiZWMx
MmFiOWMwY2YzN2ZmMjNmMTE1ZjBkOWJmOGVjMzI4OTUuLjhhYTdhNzcxYzkzOTY0MjM2ZjUyZTUw
ZTQ3NTYxZjZlYjljMzg2YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTgxNCw2ICsxODE0LDE3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6b3BlbldpbmRvd0Zyb21TZXJ2aWNlV29ya2VyKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwKICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOwogfQog
Cit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Om5hdmlnYXRlU2VydmljZVdvcmtlckNsaWVudChG
cmFtZUlkZW50aWZpZXIgZnJhbWVJZGVudGlmaWVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRl
bnRpZmllciBkb2N1bWVudElkZW50aWZpZXIsIGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQoreworICAgIGF1dG8qIHByb2Nlc3MgPSBXZWJQ
cm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKGRvY3VtZW50SWRlbnRpZmllci5wcm9j
ZXNzSWRlbnRpZmllcigpKTsKKyAgICBhdXRvKiBmcmFtZSA9IHByb2Nlc3MgPyBwcm9jZXNzLT53
ZWJGcmFtZShmcmFtZUlkZW50aWZpZXIpIDogbnVsbHB0cjsKKyAgICBpZiAoIWZyYW1lKSB7Cisg
ICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBmcmFt
ZS0+bmF2aWdhdGVTZXJ2aWNlV29ya2VyQ2xpZW50KGRvY3VtZW50SWRlbnRpZmllciwgdXJsLCBX
VEZNb3ZlKGNhbGxiYWNrKSk7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6YXBwbGlj
YXRpb25EaWRFbnRlckJhY2tncm91bmQoKQogewogICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQ
cm9jZXNzOjpBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCgpLCAwKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5k
ZXggYWZhYjUyZDM2MzNlNWQ0MDRlZmQ5NWVjZTZmYWU5NzFkMWFmYWRkOC4uNWNkMmE4MzhiOTYy
MGJmYWVkYjlkZGVlNDYxZTc1NDZmODgyZmQ3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTMwNCw2ICszMDQs
OCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIG9wZW5XaW5kb3dGcm9tU2VydmljZVdvcmtlcihQQUw6
OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYgc2VydmljZVdvcmtlck9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiYmKT4mJik7CiAKKyAgICB2
b2lkIG5hdmlnYXRlU2VydmljZVdvcmtlckNsaWVudChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNp
dCBOZXR3b3JrUHJvY2Vzc1Byb3h5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpp
bmRleCAwZjdmMTM1OTQzMzQxMzY5YWVhZGI5MGE4ODg5YTIwYzYzYWEwZTdlLi5iMTNiOTE4MDll
MTZlYWI5MGQ5YWU0ZjgzZWM3ZDdkN2IyNTU3YzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3Nh
Z2VzLmluCkBAIC05Myw2ICs5Myw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkg
TGVnYWN5UmVjZWl2ZXIgewogICAgIERhdGFUYXNrRGlkQ29tcGxldGVXaXRoRXJyb3IoV2ViS2l0
OjpEYXRhVGFza0lkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBl
cnJvcikKIAogICAgIE9wZW5XaW5kb3dGcm9tU2VydmljZVdvcmtlcihQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFN0cmluZyB1cmxTdHJpbmcsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEgc2VydmljZVdvcmtlck9yaWdpbikgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXI+IG5ld1BhZ2UpCisgICAgTmF2aWdhdGVTZXJ2aWNlV29ya2VyQ2xpZW50KFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGRvY3VtZW50SWRlbnRpZmllciwgVVJMIHVybCkgLT4g
KGJvb2wgcmVzdWx0KQogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJGcmFtZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJv
eHkuY3BwCmluZGV4IGQ0NGE1ZGJlNmEzZjI2NjMwYjM0OTEzMjQ0ZTdlNDNiMmMxZjE2MzEuLjY0
OGUwMjcxOGVmNzY2ZjMxZjA4ZjQwY2E3YzQ2MTMxOWZiNmM4OWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCkBAIC01OCw2ICs1OCw5IEBAIFdlYkZyYW1lUHJv
eHk6On5XZWJGcmFtZVByb3h5KCkKICNpZiBQTEFURk9STShHVEspCiAgICAgV2ViUGFzdGVib2Fy
ZFByb3h5OjpzaW5nbGV0b24oKS5kaWREZXN0cm95RnJhbWUodGhpcyk7CiAjZW5kaWYKKworICAg
IGlmIChtX25hdmlnYXRlQ2FsbGJhY2spCisgICAgICAgIG1fbmF2aWdhdGVDYWxsYmFjayhmYWxz
ZSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVQcm94eTo6d2ViUHJvY2Vzc1dpbGxTaHV0RG93bigpCkBA
IC02OCw2ICs3MSw5IEBAIHZvaWQgV2ViRnJhbWVQcm94eTo6d2ViUHJvY2Vzc1dpbGxTaHV0RG93
bigpCiAgICAgICAgIG1fYWN0aXZlTGlzdGVuZXItPmlnbm9yZSgpOwogICAgICAgICBtX2FjdGl2
ZUxpc3RlbmVyID0gbnVsbHB0cjsKICAgICB9CisKKyAgICBpZiAobV9uYXZpZ2F0ZUNhbGxiYWNr
KQorICAgICAgICBtX25hdmlnYXRlQ2FsbGJhY2soZmFsc2UpOwogfQogCiBib29sIFdlYkZyYW1l
UHJveHk6OmlzTWFpbkZyYW1lKCkgY29uc3QKQEAgLTc4LDYgKzg0LDMxIEBAIGJvb2wgV2ViRnJh
bWVQcm94eTo6aXNNYWluRnJhbWUoKSBjb25zdAogICAgIHJldHVybiB0aGlzID09IG1fcGFnZS0+
bWFpbkZyYW1lKCkgfHwgKG1fcGFnZS0+cHJvdmlzaW9uYWxQYWdlUHJveHkoKSAmJiB0aGlzID09
IG1fcGFnZS0+cHJvdmlzaW9uYWxQYWdlUHJveHkoKS0+bWFpbkZyYW1lKCkpOwogfQogCit2b2lk
IFdlYkZyYW1lUHJveHk6Om5hdmlnYXRlU2VydmljZVdvcmtlckNsaWVudChXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBkb2N1bWVudElkZW50aWZpZXIsIGNvbnN0IFVS
TCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQoreworICAg
IGlmICghbV9wYWdlKSB7CisgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIG1fcGFnZS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQ
YWdlOjpOYXZpZ2F0ZVNlcnZpY2VXb3JrZXJDbGllbnQgeyBkb2N1bWVudElkZW50aWZpZXIsIHVy
bCB9LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHVybCwgY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCByZXN1bHQpIG11dGFibGUgeworICAgICAgICBpZiAo
IXJlc3VsdCkgeworICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFtX2FjdGl2ZUxpc3RlbmVyKSB7CisgICAg
ICAgICAgICBjYWxsYmFjayhtX2ZyYW1lTG9hZFN0YXRlLnVybCgpID09IHVybCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAobV9uYXZpZ2F0ZUNhbGxiYWNr
KQorICAgICAgICAgICAgbV9uYXZpZ2F0ZUNhbGxiYWNrKGZhbHNlKTsKKworICAgICAgICBtX25h
dmlnYXRlQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKKyAgICB9KTsKK30KKwogdm9pZCBX
ZWJGcmFtZVByb3h5Ojpsb2FkVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVy
cmVyKQogewogICAgIGlmICghbV9wYWdlKQpAQCAtOTUsNyArMTI2LDcgQEAgdm9pZCBXZWJGcmFt
ZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0
cmluZyYgTUlNRVQKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWREYXRh
SW5GcmFtZShkYXRhLCBNSU1FVHlwZSwgZW5jb2RpbmdOYW1lLCBiYXNlVVJMLCBtX2ZyYW1lSUQp
KTsKIH0KIAotdm9pZCBXZWJGcmFtZVByb3h5OjpzdG9wTG9hZGluZygpIGNvbnN0Cit2b2lkIFdl
YkZyYW1lUHJveHk6OnN0b3BMb2FkaW5nKCkKIHsKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMTA0LDYgKzEzNSw4IEBAIHZvaWQgV2ViRnJhbWVQcm94eTo6c3RvcExvYWRp
bmcoKSBjb25zdAogICAgICAgICByZXR1cm47CiAKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlN0b3BMb2FkaW5nRnJhbWUobV9mcmFtZUlEKSk7CisgICAgaWYgKG1fbmF2aWdh
dGVDYWxsYmFjaykKKyAgICAgICAgbV9uYXZpZ2F0ZUNhbGxiYWNrKGZhbHNlKTsKIH0KICAgICAK
IGJvb2wgV2ViRnJhbWVQcm94eTo6Y2FuUHJvdmlkZVNvdXJjZSgpIGNvbnN0CkBAIC0xNjAsNiAr
MTkzLDggQEAgdm9pZCBXZWJGcmFtZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQ
cm92aXNpb25hbExvYWQoY29uc3QgVVJMJiB1cmwpCiB2b2lkIFdlYkZyYW1lUHJveHk6OmRpZEZh
aWxQcm92aXNpb25hbExvYWQoKQogewogICAgIG1fZnJhbWVMb2FkU3RhdGUuZGlkRmFpbFByb3Zp
c2lvbmFsTG9hZCgpOworICAgIGlmIChtX25hdmlnYXRlQ2FsbGJhY2spCisgICAgICAgIG1fbmF2
aWdhdGVDYWxsYmFjayhmYWxzZSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVQcm94eTo6ZGlkQ29tbWl0
TG9hZChjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBXZWJDZXJ0aWZpY2F0ZUluZm8mIGNlcnRp
ZmljYXRlSW5mbywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50KQpAQCAtMTc1LDExICsyMTAs
MTUgQEAgdm9pZCBXZWJGcmFtZVByb3h5OjpkaWRDb21taXRMb2FkKGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUsIFdlYkNlcnRpZmljYXRlSW5mbyYKIHZvaWQgV2ViRnJhbWVQcm94eTo6ZGlkRmlu
aXNoTG9hZCgpCiB7CiAgICAgbV9mcmFtZUxvYWRTdGF0ZS5kaWRGaW5pc2hMb2FkKCk7CisgICAg
aWYgKG1fbmF2aWdhdGVDYWxsYmFjaykKKyAgICAgICAgbV9uYXZpZ2F0ZUNhbGxiYWNrKHRydWUp
OwogfQogCiB2b2lkIFdlYkZyYW1lUHJveHk6OmRpZEZhaWxMb2FkKCkKIHsKICAgICBtX2ZyYW1l
TG9hZFN0YXRlLmRpZEZhaWxMb2FkKCk7CisgICAgaWYgKG1fbmF2aWdhdGVDYWxsYmFjaykKKyAg
ICAgICAgbV9uYXZpZ2F0ZUNhbGxiYWNrKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJGcmFtZVByb3h5
OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKGNvbnN0IFVSTCYgdXJsKQpAQCAtMTk3LDYgKzIz
Niw5IEBAIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSYgV2ViRnJhbWVQcm94eTo6c2V0VXBQ
b2xpY3lMaXN0ZW5lclByb3h5KENvbXBsZXRpb25ICiAgICAgaWYgKG1fYWN0aXZlTGlzdGVuZXIp
CiAgICAgICAgIG1fYWN0aXZlTGlzdGVuZXItPmlnbm9yZSgpOwogICAgIG1fYWN0aXZlTGlzdGVu
ZXIgPSBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk6OmNyZWF0ZShbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildIChQb2xpY3lBY3Rpb24gYWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyog
cG9saWNpZXMsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0
ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5nV2Fy
bmluZywgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbikgbXV0YWJsZSB7CisgICAgICAgIGlmIChhY3Rpb24gIT0gUG9s
aWN5QWN0aW9uOjpVc2UgJiYgbV9uYXZpZ2F0ZUNhbGxiYWNrKQorICAgICAgICAgICAgbV9uYXZp
Z2F0ZUNhbGxiYWNrKGZhbHNlKTsKKwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhY3Rpb24s
IHBvbGljaWVzLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBXVEZNb3ZlKHNhZmVCcm93
c2luZ1dhcm5pbmcpLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKICAgICAgICAgbV9h
Y3RpdmVMaXN0ZW5lciA9IG51bGxwdHI7CiAgICAgfSwgZXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0
LCBleHBlY3RBcHBCb3VuZERvbWFpblJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJG
cmFtZVByb3h5LmgKaW5kZXggMzkxYjAyNzM2MjgzNDFlZGFhODgzMGIzNzRmMGZiMTMxMjQwMTcy
YS4uZDVmODMxNmYwZmFhZjkyYzc4YjhjMzQ3NTU5ZWNlNTExNDU4OTQ0ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaApAQCAtNzcsMTAgKzc3LDEyIEBAIHB1YmxpYzoK
IAogICAgIEZyYW1lTG9hZFN0YXRlJiBmcmFtZUxvYWRTdGF0ZSgpIHsgcmV0dXJuIG1fZnJhbWVM
b2FkU3RhdGU7IH0KIAorICAgIHZvaWQgbmF2aWdhdGVTZXJ2aWNlV29ya2VyQ2xpZW50KFdlYkNv
cmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKwogICAgIHZvaWQgbG9hZFVSTChjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyID0gU3RyaW5nKCkpOwogICAgIC8vIFN1YiBmcmFtZXMg
b25seS4gRm9yIG1haW4gZnJhbWVzLCB1c2UgV2ViUGFnZVByb3h5Ojpsb2FkRGF0YS4KICAgICB2
b2lkIGxvYWREYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgTUlN
RVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIGJhc2VVUkwpOwot
ICAgIHZvaWQgc3RvcExvYWRpbmcoKSBjb25zdDsKKyAgICB2b2lkIHN0b3BMb2FkaW5nKCk7CiAK
ICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVMb2FkU3RhdGUudXJs
KCk7IH0KICAgICBjb25zdCBVUkwmIHByb3Zpc2lvbmFsVVJMKCkgY29uc3QgeyByZXR1cm4gbV9m
cmFtZUxvYWRTdGF0ZS5wcm92aXNpb25hbFVSTCgpOyB9CkBAIC0xMjgsNiArMTMwLDggQEAgcHVi
bGljOgogICAgIHZvaWQgY29sbGFwc2VTZWxlY3Rpb24oKTsKICNlbmRpZgogCisgICAgdm9pZCB0
cmFuc2Zlck5hdmlnYXRpb25DYWxsYmFjayhXZWJGcmFtZVByb3h5JiBmcmFtZSkgeyBzdGQ6OmV4
Y2hhbmdlKGZyYW1lLm1fbmF2aWdhdGVDYWxsYmFjaywgV1RGTW92ZShtX25hdmlnYXRlQ2FsbGJh
Y2spKTsgfQorCiBwcml2YXRlOgogICAgIFdlYkZyYW1lUHJveHkoV2ViUGFnZVByb3h5JiwgV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyKTsKIApAQCAtMTQ0LDYgKzE0OCw3IEBAIHByaXZhdGU6CiAj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlciBtX2NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjsKICNlbmRpZgorICAg
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+IG1fbmF2aWdhdGVDYWxsYmFjazsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKaW5kZXggOTA3MzY5NmEyNWRjOWU5MTViMzI1ZDdkNmMzOWRmMzI5MWUzZjllMy4uNzk5
NWFhZGFlYzRkNjdlNjBiZDM5ODU3YWJhNDk5MWU2Zjk5YjVkNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC04MDI3LDcgKzgwMjcsMTEgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnN0b3BBbGxVUkxTY2hlbWVUYXNrcyhXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3Mp
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRlKFJlc2V0U3RhdGVSZWFzb24gcmVzZXRT
dGF0ZVJlYXNvbikKIHsKLSAgICBtX21haW5GcmFtZSA9IG51bGxwdHI7CisgICAgaWYgKGF1dG8g
bWFpbkZyYW1lID0gc3RkOjpleGNoYW5nZShtX21haW5GcmFtZSwgeyB9KSkgeworICAgICAgICBp
ZiAocmVzZXRTdGF0ZVJlYXNvbiA9PSBSZXNldFN0YXRlUmVhc29uOjpOYXZpZ2F0aW9uU3dhcCAm
JiBtX3Byb3Zpc2lvbmFsUGFnZSAmJiBtX3Byb3Zpc2lvbmFsUGFnZS0+bWFpbkZyYW1lKCkpCisg
ICAgICAgICAgICBtYWluRnJhbWUtPnRyYW5zZmVyTmF2aWdhdGlvbkNhbGxiYWNrKCptX3Byb3Zp
c2lvbmFsUGFnZS0+bWFpbkZyYW1lKCkpOworICAgIH0KKwogICAgIG1fZm9jdXNlZEZyYW1lID0g
bnVsbHB0cjsKICAgICBtX3N1c3BlbmRlZFBhZ2VLZXB0VG9QcmV2ZW50Rmxhc2hpbmcgPSBudWxs
cHRyOwogICAgIG1fbGFzdFN1c3BlbmRlZFBhZ2UgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggMTcwNDUwYTk1YmE2ZThhNDllZTVm
YzgxZTExYjU1MDkxYmI5NGI2Mi4uMzU5M2VmMmEyYWM1NTkyMWE4M2IwNWVmZjM2Njg1MDEyMDhj
ZDI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBA
IC01NTUsNiArNTU1LDE1IEBAIFdlYlBhZ2VQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdl
KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlEKQogICAgIHJldHVybiBnbG9iYWxQYWdlTWFw
KCkuZ2V0KHBhZ2VJRCk7CiB9CiAKK1dlYlBhZ2VQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQ
YWdlRnJvbUlkZW50aWZpZXIoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlkZW50aWZpZXIp
Cit7CisgICAgZm9yIChhdXRvJiBwYWdlIDogZ2xvYmFsUGFnZU1hcCgpKSB7CisgICAgICAgIGlm
IChwYWdlLnZhbHVlLT53ZWJQYWdlSUQoKSA9PSBwYWdlSWRlbnRpZmllcikKKyAgICAgICAgICAg
IHJldHVybiBwYWdlLnZhbHVlOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogI2lm
IEVOQUJMRShJTlRFTExJR0VOVF9UUkFDS0lOR19QUkVWRU5USU9OKQogdm9pZCBXZWJQcm9jZXNz
UHJveHk6Om5vdGlmeVBhZ2VTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNQcm9jZXNzZWQoKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCAwNTU1ZDNkNTc2
MzQ1YmIyNDk2MTA4NThkNjk0NjZlNDkxNTlmMWFjLi4xZGY2ZDYxYjE3NWY3MjU3ZjVhYmMxN2U1
MDIwMTA4MjRjYjYwZTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuaApAQCAtMTc3LDYgKzE3Nyw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBXZWJQcm9jZXNz
UHJveHkqIHByb2Nlc3NGb3JJZGVudGlmaWVyKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsK
ICAgICBzdGF0aWMgV2ViUGFnZVByb3h5KiB3ZWJQYWdlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIp
OworICAgIHN0YXRpYyBXZWJQYWdlUHJveHkqIHdlYlBhZ2VGcm9tSWRlbnRpZmllcihXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcik7CiAgICAgUmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRlV2ViUGFnZShQ
YWdlQ2xpZW50JiwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogCiAgICAgZW51bSBj
bGFzcyBCZWdpbnNVc2luZ0RhdGFTdG9yZSA6IGJvb2wgeyBObywgWWVzIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggNzNlY2RlMjZkOGUwOWM5YmE2MGJkNDUxOGY5
YWQwNTVhMDJiNzYyYS4uOGYwZjgxNDY1MGNiNTk5NTE5MTEzMjI4NmEzYTFlODNkZTljZjM5MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMzQ5LDYgKzM0OSwxNyBA
QCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpjbGFpbShTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBzZXJ2aWNlV29ya2VySQogICAgIH0pOwogfQogCit2b2lkIFdlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjpuYXZpZ2F0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRp
ZmllciBjbGllbnRJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgY29uc3QgVVJMJiB1cmwsIE5hdmlnYXRlQ2FsbGJhY2smJiBjYWxsYmFj
aykKK3sKKyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6TmF2aWdhdGUgeyBj
bGllbnRJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgdXJsIH0sIFtjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAg
aWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUo
cmVzdWx0KS5lcnJvcigpLnRvRXhjZXB0aW9uKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVzdWx0KS52YWx1ZSgpKTsKKyAgICB9
KTsKK30KKwogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Zm9jdXMoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRh
PiYmKT4mJiBjYWxsYmFjaykKIHsKICAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bjo6Rm9jdXMgeyBjbGllbnRJZGVudGlmaWVyIH0sIFdURk1vdmUoY2FsbGJhY2spKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCmluZGV4IDU4NDI4MmMxMDgzZTE0ODZmOWUxZmUyZjgw
YzE2MDY2ZjBkNTFhYzIuLmUyZWUzMDZhNzE0Y2M3NDBiOTNjZTdmODgxMzI3ZjFkODc3ZmMwNjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaApAQCAtODIsNiArODIsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgbWF0Y2hBbGwoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMmLCBXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyQ2xpZW50c01hdGNoQWxsQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9p
ZCBjbGFpbShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJDb3JlOjpFeGNlcHRpb25Pcjx2b2lkPiYmKT4mJikgZmluYWw7CiAgICAgdm9p
ZCBmb2N1cyhXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGll
bnREYXRhPiYmKT4mJikgZmluYWw7CisgICAgdm9pZCBuYXZpZ2F0ZShXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIGNvbnN0IFVSTCYsIE5hdmlnYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBza2lw
V2FpdGluZyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKSBmaW5hbDsKICAgICB2b2lkIHNldFNjcmlwdFJlc291cmNlKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBjb25zdCBXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0JikgZmluYWw7CiAgICAgYm9vbCBp
c1Rocm90dGxlYWJsZSgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBkNmIzMjJhMDk2MGZjMjQyMDQxNjRjYTk5Yzc4Mzlm
NTg3MzkzMjM0Li4wODlmODRhMTUyMjEzN2IzOWFlZGE2OTAwNWI5OWJhZGVlYTIzNzNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNjQzOSw2
ICs2NDM5LDIyIEBAIHZvaWQgV2ViUGFnZTo6aW50ZXJhY3Rpb25SZWdpb25zKEZsb2F0UmVjdCBy
ZWN0SW5Db250ZW50Q29vcmRpbmF0ZXMsIENvbXBsZXRpb25ICiAgICAgY29tcGxldGlvbkhhbmRs
ZXIoV2ViQ29yZTo6aW50ZXJhY3Rpb25SZWdpb25zKCptX3BhZ2UsIHJlY3RJbkNvbnRlbnRDb29y
ZGluYXRlcykpOwogfQogCit2b2lkIFdlYlBhZ2U6Om5hdmlnYXRlU2VydmljZVdvcmtlckNsaWVu
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBkb2N1bWVudElkZW50aWZpZXIsIGNv
bnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQor
eworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBhdXRvKiBkb2N1bWVudCA9IERvY3Vt
ZW50OjphbGxEb2N1bWVudHNNYXAoKS5nZXQoZG9jdW1lbnRJZGVudGlmaWVyKTsKKyAgICBpZiAo
IWRvY3VtZW50KSB7CisgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBkb2N1bWVudC0+bmF2aWdhdGVGcm9tU2VydmljZVdvcmtlcih1cmwsIFdURk1v
dmUoY2FsbGJhY2spKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGRvY3VtZW50SWRlbnRpZmll
cik7CisgICAgVU5VU0VEX1BBUkFNKHVybCk7CisgICAgY2FsbGJhY2soZmFsc2UpOworI2VuZGlm
Cit9CisKIHZvaWQgV2ViUGFnZTo6c2V0QWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIoYm9v
bCBhbHdheXNTaG93c0hvcml6b250YWxTY3JvbGxlcikKIHsKICAgICBpZiAoYWx3YXlzU2hvd3NI
b3Jpem9udGFsU2Nyb2xsZXIgPT0gbV9hbHdheXNTaG93c0hvcml6b250YWxTY3JvbGxlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAxZWU3NGY0ZDky
MzdlYTA4OWMyODlmYzExNGE2MDk3MzhjMzU5MjVjLi44NTFkMzRiNGExODBkNmMzN2RkODZhMTky
NjAxNjZmOWFiOWQ1NWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCkBAIC05NDUsNiArOTQ1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRW5kVXNlclRy
aWdnZXJlZFNlbGVjdGlvbkNoYW5nZXMoKTsKIAogICAgIHZvaWQgaW50ZXJhY3Rpb25SZWdpb25z
KFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0SW5Db250ZW50Q29vcmRpbmF0ZXMsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkludGVyYWN0aW9uUmVnaW9uPik+JiYpOworICAg
IHZvaWQgbmF2aWdhdGVTZXJ2aWNlV29ya2VyQ2xpZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFs
aXplQWNjZXNzaWJpbGl0eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggMmZiZGVjOGI4Y2MyNGVhMjEyYmEyZWFj
MjVjYzllM2RlZGFlNTY2Ni4uZWU4MTEzOGM0YmZhMTVhMzI4ZDlhNmE4NTg1MTg0ZmEyM2EzMzk0
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCkBAIC02ODMsNCArNjgzLDYgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5n
Q29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUK
ICAgICBTY3JvbGxUb1JlY3QoV2ViQ29yZTo6RmxvYXRSZWN0IHRhcmdldFJlY3QsIFdlYkNvcmU6
OkZsb2F0UG9pbnQgb3JpZ2luKQogCiAgICAgSW50ZXJhY3Rpb25SZWdpb25zKFdlYkNvcmU6OkZs
b2F0UmVjdCByZWN0SW5Db250ZW50Q29vcmRpbmF0ZXMpIC0+IChWZWN0b3I8V2ViQ29yZTo6SW50
ZXJhY3Rpb25SZWdpb24+IHJlZ2lvbnMpCisKKyAgICBOYXZpZ2F0ZVNlcnZpY2VXb3JrZXJDbGll
bnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgZG9jdW1lbnRJZGVu
dGlmaWVyLCBVUkwgdXJsKSAtPiAoYm9vbCByZXN1bHQpCiB9CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZGRhYjUyMDg4ZTlj
NmJiYWQwOWUxM2U4MTViOWQ5MDFiMjc3MjA0My4uODRmMmFlMDM3OTUzOWJhMDY3NzVjMDQ5Yzk2
OTBiMzRhZTYwMDc1MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIyLTA0LTA0ICBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgU2VydmljZVdv
cmtlcldpbmRvd0NsaWVudC5uYXZpZ2F0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NzM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisK
IDIwMjItMDQtMDQgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAg
IFNlcnZpY2UtV29ya2VyLU5hdmlnYXRpb24tUHJlbG9hZCBoZWFkZXIgbm90IGJlaW5nIHNlbnQg
d2hlbiBOYXZpZ2F0aW9uIFByZWxvYWQgaXMgZW5hYmxlZC4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hh
bmdlTG9nCmluZGV4IDEzZmI0OWJkNzk2YzkxOTFkZjZmN2YzNDI0YzMxOTY2ODBmYWEyOWQuLmUz
ZWIxNjRlNGM5MWFhOWI5ZWNiZDcwZjA0MjczNGE3NzBjODQyNzIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIyLTA0LTA0ICBZb3Vlbm4gRmFibGV0
ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgU2VydmljZVdvcmtlcldp
bmRvd0NsaWVudC5uYXZpZ2F0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM4NzM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Ut
d29ya2VyL3dpbmRvd2NsaWVudC1uYXZpZ2F0ZS5odHRwcy1leHBlY3RlZC50eHQ6CisKIDIwMjIt
MDQtMDQgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIENPUlM6
IEFsbG93IHBhcnRpY3VsYXIgUmFuZ2UgaGVhZGVyIHZhbHVlcyB3aXRob3V0IGEgcHJlZmxpZ2h0
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci93aW5kb3djbGllbnQtbmF2aWdhdGUuaHR0
cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvd2luZG93Y2xpZW50LW5hdmlnYXRl
Lmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCAxOTI1NDZlZDg3MDAyYzMxMjY2MWZjNDk0NmFhMDUw
NjA3ZTMzYTkyLi41ZDA3OWZkODM2ZmZlMGNjYzM5ZGVjMjU2MTZhNmViMzc5NzM4ZWVhIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZp
Y2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci93aW5kb3djbGllbnQtbmF2aWdhdGUuaHR0cHMtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3dpbmRvd2NsaWVudC1uYXZpZ2F0ZS5o
dHRwcy1leHBlY3RlZC50eHQKQEAgLTEwLDI5ICsxMCwxNSBAQCBQQVNTIGludmFsaWQgdXJsICh2
aWV3LXNvdXJjZTovL2V4YW1wbGUuY29tKQogUEFTUyBpbnZhbGlkIHVybCAoZmlsZTovLy8pCiBQ
QVNTIGludmFsaWQgdXJsIChhYm91dDpibGFuaykKIFBBU1MgbmF2aWdhdGUgb24gYSB0b3AtbGV2
ZWwgd2luZG93IGNsaWVudAotRkFJTCBub3JtYWwgd29ya2VyIHNpZGUgcHJvbWlzZV90ZXN0OiBV
bmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6
IHdpbmRvd0NsaWVudC5uYXZpZ2F0ZSgpIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIgotRkFJTCBibGFu
ayB1cmwgd29ya2VyIHNpZGUgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGgg
dmFsdWU6IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IHdpbmRvd0NsaWVudC5uYXZpZ2F0ZSgp
IGlzIG5vdCB5ZXQgc3VwcG9ydGVkIgotRkFJTCBpbiBzY29wZSBidXQgbm90IGNvbnRyb2xsZWQg
dGVzdCBvbiBpbnN0YWxsaW5nIHdvcmtlciB3b3JrZXIgc2lkZSBwcm9taXNlX3JlamVjdHNfanM6
IGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcgb2JqZWN0ICJOb3RTdXBw
b3J0ZWRFcnJvcjogd2luZG93Q2xpZW50Lm5hdmlnYXRlKCkgaXMgbm90IHlldCBzdXBwb3J0ZWQi
ICgiTm90U3VwcG9ydGVkRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVu
Y3Rpb24gVHlwZUVycm9yKCkgewotICAgIFtuYXRpdmUgY29kZV0KLX0iICgiVHlwZUVycm9yIikK
LUZBSUwgaW4gc2NvcGUgYnV0IG5vdCBjb250cm9sbGVkIHRlc3Qgb24gYWN0aXZlIHdvcmtlciB3
b3JrZXIgc2lkZSBwcm9taXNlX3JlamVjdHNfanM6IGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRo
cm93IGUgfSIgdGhyZXcgb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogd2luZG93Q2xpZW50Lm5h
dmlnYXRlKCkgaXMgbm90IHlldCBzdXBwb3J0ZWQiICgiTm90U3VwcG9ydGVkRXJyb3IiKSBleHBl
Y3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gVHlwZUVycm9yKCkgewotICAgIFtu
YXRpdmUgY29kZV0KLX0iICgiVHlwZUVycm9yIikKLUZBSUwgb3V0IG9mIHNjb3BlIHdvcmtlciBz
aWRlIHByb21pc2VfcmVqZWN0c19qczogZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9
IiB0aHJldyBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiB3aW5kb3dDbGllbnQubmF2aWdhdGUo
KSBpcyBub3QgeWV0IHN1cHBvcnRlZCIgKCJOb3RTdXBwb3J0ZWRFcnJvciIpIGV4cGVjdGVkIGlu
c3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7Ci0gICAgW25hdGl2ZSBj
b2RlXQotfSIgKCJUeXBlRXJyb3IiKQotRkFJTCBjcm9zcyBvcmdpbiB1cmwgd29ya2VyIHNpZGUg
cHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiTm90
U3VwcG9ydGVkRXJyb3I6IHdpbmRvd0NsaWVudC5uYXZpZ2F0ZSgpIGlzIG5vdCB5ZXQgc3VwcG9y
dGVkIgotRkFJTCBpbnZhbGlkIHVybCAoaHR0cDovL1tleGFtcGxlLmNvbV0pIHdvcmtlciBzaWRl
IHByb21pc2VfcmVqZWN0c19qczogZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0
aHJldyBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiB3aW5kb3dDbGllbnQubmF2aWdhdGUoKSBp
cyBub3QgeWV0IHN1cHBvcnRlZCIgKCJOb3RTdXBwb3J0ZWRFcnJvciIpIGV4cGVjdGVkIGluc3Rh
bmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7Ci0gICAgW25hdGl2ZSBjb2Rl
XQotfSIgKCJUeXBlRXJyb3IiKQotRkFJTCBpbnZhbGlkIHVybCAodmlldy1zb3VyY2U6Ly9leGFt
cGxlLmNvbSkgd29ya2VyIHNpZGUgcHJvbWlzZV9yZWplY3RzX2pzOiBmdW5jdGlvbiAiZnVuY3Rp
b24gKCkgeyB0aHJvdyBlIH0iIHRocmV3IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IHdpbmRv
d0NsaWVudC5uYXZpZ2F0ZSgpIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIiAoIk5vdFN1cHBvcnRlZEVy
cm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigp
IHsKLSAgICBbbmF0aXZlIGNvZGVdCi19IiAoIlR5cGVFcnJvciIpCi1GQUlMIGludmFsaWQgdXJs
IChmaWxlOi8vLykgd29ya2VyIHNpZGUgcHJvbWlzZV9yZWplY3RzX2pzOiBmdW5jdGlvbiAiZnVu
Y3Rpb24gKCkgeyB0aHJvdyBlIH0iIHRocmV3IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IHdp
bmRvd0NsaWVudC5uYXZpZ2F0ZSgpIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIiAoIk5vdFN1cHBvcnRl
ZEVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJv
cigpIHsKLSAgICBbbmF0aXZlIGNvZGVdCi19IiAoIlR5cGVFcnJvciIpCi1GQUlMIGludmFsaWQg
dXJsIChhYm91dDpibGFuaykgd29ya2VyIHNpZGUgcHJvbWlzZV9yZWplY3RzX2pzOiBmdW5jdGlv
biAiZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0iIHRocmV3IG9iamVjdCAiTm90U3VwcG9ydGVkRXJy
b3I6IHdpbmRvd0NsaWVudC5uYXZpZ2F0ZSgpIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIiAoIk5vdFN1
cHBvcnRlZEVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIFR5
cGVFcnJvcigpIHsKLSAgICBbbmF0aXZlIGNvZGVdCi19IiAoIlR5cGVFcnJvciIpCitQQVNTIG5v
cm1hbCB3b3JrZXIgc2lkZQorUEFTUyBibGFuayB1cmwgd29ya2VyIHNpZGUKK1BBU1MgaW4gc2Nv
cGUgYnV0IG5vdCBjb250cm9sbGVkIHRlc3Qgb24gaW5zdGFsbGluZyB3b3JrZXIgd29ya2VyIHNp
ZGUKK1BBU1MgaW4gc2NvcGUgYnV0IG5vdCBjb250cm9sbGVkIHRlc3Qgb24gYWN0aXZlIHdvcmtl
ciB3b3JrZXIgc2lkZQorUEFTUyBvdXQgb2Ygc2NvcGUgd29ya2VyIHNpZGUKK1BBU1MgY3Jvc3Mg
b3JnaW4gdXJsIHdvcmtlciBzaWRlCitQQVNTIGludmFsaWQgdXJsIChodHRwOi8vW2V4YW1wbGUu
Y29tXSkgd29ya2VyIHNpZGUKK1BBU1MgaW52YWxpZCB1cmwgKHZpZXctc291cmNlOi8vZXhhbXBs
ZS5jb20pIHdvcmtlciBzaWRlCitQQVNTIGludmFsaWQgdXJsIChmaWxlOi8vLykgd29ya2VyIHNp
ZGUKK1BBU1MgaW52YWxpZCB1cmwgKGFib3V0OmJsYW5rKSB3b3JrZXIgc2lkZQogRkFJTCBuYXZp
Z2F0ZSBvbiBhIHRvcC1sZXZlbCB3aW5kb3cgY2xpZW50IHdvcmtlciBzaWRlIGFzc2VydF9lcXVh
bHM6IGV4cGVjdGVkICJ0b3AtbGV2ZWwiIGJ1dCBnb3QgImF1eGlsaWFyeSIKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDEzZGVmYjQ3NjEx
NTA3YTRlZDgxNDg5MmIzYTJjNjljOTk5ZjAxYWMuLmUxZGZhYmY2ZmNiMmE3YTBmMmRjOTU2NGE1
MjYzYzZlNTEwZWUyODcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIv
VGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RF
eHBlY3RhdGlvbnMKQEAgLTkyNCw3ICs5MjQsNyBAQCB3ZWJraXQub3JnL2IvMTgxODM5IFsgRGVi
dWcgXSBpbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludC1hY3Rpb24tbG9nLmh0bWwgWyBQYQog
CiB3ZWJraXQub3JnL2IvMjMwNDEyIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2Vy
dmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2NsaWVudHMtbWF0Y2hhbGwtY2xpZW50LXR5cGVz
Lmh0dHBzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTc5MzUyIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vy
L3dpbmRvd2NsaWVudC1uYXZpZ2F0ZS5odHRwcy5odG1sIFsgUGFzcyBGYWlsdXJlIFNsb3cgXQor
d2Via2l0Lm9yZy9iLzE3OTM1MiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZp
Y2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci93aW5kb3djbGllbnQtbmF2aWdhdGUuaHR0cHMuaHRt
bCBbIFNsb3cgXQogCiB3ZWJraXQub3JnL2IvMTgzMTY0IGZhc3QvZG9tL1dpbmRvdy93aW5kb3ct
Zm9jdXMtc2VsZi5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456601</attachid>
            <date>2022-04-04 11:50:36 -0700</date>
            <delta_ts>2022-04-05 05:49:46 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-238738-20220404205032.patch</filename>
            <type>text/plain</type>
            <size>53012</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGU0NjQ4YWFlM2VkYmU4
NTVkYmJiMzRhOWQ5M2QyNzc5NjVmY2YwOC4uNDU0YmE3ZWE5NGNjYTI5ZTZhZTdiYjI0YmRhM2Qy
YWI4NjE1MjJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIyLTA0LTA0ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgU2Vydmlj
ZVdvcmtlcldpbmRvd0NsaWVudC5uYXZpZ2F0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NzM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIGEgcm91dGluZSB0byBuYXZpZ2F0ZSBhIERv
Y3VtZW50LgorICAgICAgICBTZW5kIEZyYW1lSWRlbnRpZmllciBhcyBwYXJ0IG9mIFNlcnZpY2VX
b3JrZXJDbGllbnREYXRhLgorICAgICAgICBJbXBsZW1lbnQgU2VydmljZVdvcmtlcldpbmRvd0Ns
aWVudDo6bmF2aWdhdGUgYnkgc2VuZGluZyBJUEMgdG8gbmV0d29yayBwcm9jZXNzLgorCisgICAg
ICAgIENvdmVyZWQgYnkgcmViYXNlZCB0ZXN0cy4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5j
cHA6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudERhdGEuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlcldpbmRvd0NsaWVudC5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU1dDb250ZXh0TWFuYWdlci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNw
cDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmg6CisK
IDIwMjItMDQtMDQgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAg
IENPUlM6IEFsbG93IHBhcnRpY3VsYXIgUmFuZ2UgaGVhZGVyIHZhbHVlcyB3aXRob3V0IGEgcHJl
ZmxpZ2h0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDVlMmMyN2U2YWFjMTYwNTI5NzY0YzZlN2NlZDdlMzczOGI1ZDlm
M2MuLmUzYjQ4MDA2ZjczMjIwOWYzMTU1ODA0MGUxZjE0ZGQ2MjVmNDI0NjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzQgQEAKKzIwMjItMDQtMDQgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgorCisgICAgICAgIEltcGxlbWVudCBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50Lm5hdmln
YXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg3
MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVu
IHJlY2VpdmluZyBhIHJlcXVlc3QgdG8gbmF2aWdhdGUgYSBjbGllbnQsIHNlbmQgbWVzc2FnZSB0
byBVSVByb2Nlc3MuCisgICAgICAgIFVJUHJvY2VzcyBsb2NhdGVzIHRoZSBXZWJGcmFtZVByb3h5
IHdoaWNoIHdpbGwgc2VuZCBhbiBJUEMgbWVzc2FnZSB0byB0aGUgV2ViUHJvY2VzcyB0byBkbyBu
YXZpZ2F0aW9uLgorICAgICAgICBXZSBrZWVwIHRyYWNrIG9mIHRoZSBuYXZpZ2F0aW9uIHdpdGhp
biBXZWJGcmFtZVByb3h5LgorICAgICAgICBJbiBjYXNlIG9mIHByb2Nlc3Mgc3dhcHBpbmcsIHdl
IG1ha2Ugc3VyZSB0byByZXNldCB0aGUgV2ViRnJhbWVQcm94eS4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
Y3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluOgorCiAyMDIyLTA0LTA0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KIAogICAgICAgICBTZXJ2aWNlLVdvcmtlci1OYXZpZ2F0aW9uLVByZWxvYWQgaGVhZGVyIG5v
dCBiZWluZyBzZW50IHdoZW4gTmF2aWdhdGlvbiBQcmVsb2FkIGlzIGVuYWJsZWQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAppbmRleCBkMTYyMThkNjYyNTYxZTY3ZDJkYzY2YjViYzY2MjJhYjg5ZTE2
YTBmLi5mYmQwYTNiMTU0MDMxYmYwODg5YzcxZTE1OTE0N2ZhY2QzNDFjZGUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKQEAgLTc2LDYgKzc2LDcgQEAKICNpbmNsdWRlICJFZGl0b3IuaCIKICNp
bmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKKyNp
bmNsdWRlICJFeGNlcHRpb25EYXRhLmgiCiAjaW5jbHVkZSAiRXh0ZW5zaW9uU3R5bGVTaGVldHMu
aCIKICNpbmNsdWRlICJGb2N1c0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJGb2N1c0V2ZW50Lmgi
CkBAIC04NDE0LDcgKzg0MTUsNyBAQCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBEb2N1
bWVudDo6cGFnZUlEKCkgY29uc3QKIAogc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IERv
Y3VtZW50OjpmcmFtZUlEKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9mcmFtZS0+bG9hZGVyKCku
ZnJhbWVJRCgpOworICAgIHJldHVybiBtX2ZyYW1lID8gbV9mcmFtZS0+bG9hZGVyKCkuZnJhbWVJ
RCgpIDogc3RkOjpudWxsb3B0OwogfQogCiB2b2lkIERvY3VtZW50OjpyZWdpc3RlckFydGljbGVF
bGVtZW50KEVsZW1lbnQmIGFydGljbGUpCkBAIC04NzgwLDYgKzg3ODEsMjQgQEAgdm9pZCBEb2N1
bWVudDo6dXBkYXRlU2VydmljZVdvcmtlckNsaWVudERhdGEoKQogICAgIGF1dG8gY29udHJvbGxp
bmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciA9IGFjdGl2ZVNlcnZpY2VXb3Jr
ZXIoKSA/IHN0ZDo6bWFrZV9vcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRp
Zmllcj4oYWN0aXZlU2VydmljZVdvcmtlcigpLT5yZWdpc3RyYXRpb25JZGVudGlmaWVyKCkpIDog
c3RkOjpudWxsb3B0OwogICAgIG1fc2VydmljZVdvcmtlckNvbm5lY3Rpb24tPnJlZ2lzdGVyU2Vy
dmljZVdvcmtlckNsaWVudCh0b3BPcmlnaW4oKSwgU2VydmljZVdvcmtlckNsaWVudERhdGE6OmZy
b20oKnRoaXMpLCBjb250cm9sbGluZ1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
LCB1c2VyQWdlbnQodXJsKCkpKTsKIH0KKwordm9pZCBEb2N1bWVudDo6bmF2aWdhdGVGcm9tU2Vy
dmljZVdvcmtlcihjb25zdCBVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjYWxsYmFjaykKK3sKKyAgICBpZiAoYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpIHx8
IGFjdGl2ZURPTU9iamVjdHNBcmVTdG9wcGVkKCkpIHsKKyAgICAgICAgY2FsbGJhY2soZmFsc2Up
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHBvc3RUYXNrKFt3ZWFrVGhpcyA9IFdlYWtQ
dHIgeyAqdGhpcyB9LCB1cmwsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mKSBt
dXRhYmxlIHsKKyAgICAgICAgYXV0byogZnJhbWUgPSB3ZWFrVGhpcyA/IHdlYWtUaGlzLT5mcmFt
ZSgpIDogbnVsbHB0cjsKKyAgICAgICAgaWYgKCFmcmFtZSkgeworICAgICAgICAgICAgY2FsbGJh
Y2soZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGZyYW1l
LT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkuc2NoZWR1bGVMb2NhdGlvbkNoYW5nZSgqd2Vha1RoaXMs
IHdlYWtUaGlzLT5zZWN1cml0eU9yaWdpbigpLCB1cmwsIGZyYW1lLT5sb2FkZXIoKS5vdXRnb2lu
Z1JlZmVycmVyKCksIExvY2tIaXN0b3J5OjpZZXMsIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBb
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNh
bGxiYWNrKHRydWUpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KICNlbmRpZgogCiBTdHJpbmcg
RG9jdW1lbnQ6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlT
aXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBVUkwmIHVybCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKaW5kZXggOTVkZGI2ZGRhYjIxNTY3NDhhMDRiMjkyY2Y2OTc5NDdk
N2ZmZTU1NS4uZDNjYmE4ZDcwNGY0YTI4Mjg1M2QzNjNjOTFmOGI3ZTJlMzg0OTU1MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKQEAgLTE1NjgsNiArMTU2OCw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBzZXRTZXJ2aWNlV29ya2VyQ29ubmVjdGlvbihTV0Ns
aWVudENvbm5lY3Rpb24qKTsKICAgICB2b2lkIHVwZGF0ZVNlcnZpY2VXb3JrZXJDbGllbnREYXRh
KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBuYXZpZ2F0ZUZyb21TZXJ2aWNlV29ya2VyKGNv
bnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoVklERU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmNwcAppbmRleCA1OTE2YmIwNGQ2Y2QyOTUw
YmVhMWZjY2EyNWQxZTYyNmViN2U2ZTUyLi4xZjFjYzBmM2Q0OWYxYTAyZjZjZTg4MDU3MGQ3OTM2
NTI1YzJiMjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNsaWVudERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5jcHAKQEAgLTU5LDEyICs1OSwxMiBAQCBzdGF0
aWMgU2VydmljZVdvcmtlckNsaWVudEZyYW1lVHlwZSB0b1NlcnZpY2VXb3JrZXJDbGllbnRGcmFt
ZVR5cGUoU2NyaXB0RXhlY3V0aQogCiBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSBTZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgogewotICAgIHJldHVybiB7IGlk
ZW50aWZpZXIsIHR5cGUsIGZyYW1lVHlwZSwgdXJsLmlzb2xhdGVkQ29weSgpLCBwYWdlSWRlbnRp
ZmllciwgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQsIGlzVmlzaWJsZSwgaXNGb2N1c2Vk
LCBmb2N1c09yZGVyLCBjcm9zc1RocmVhZENvcHkoYW5jZXN0b3JPcmlnaW5zKSB9OworICAgIHJl
dHVybiB7IGlkZW50aWZpZXIsIHR5cGUsIGZyYW1lVHlwZSwgdXJsLmlzb2xhdGVkQ29weSgpLCBw
YWdlSWRlbnRpZmllciwgZnJhbWVJZGVudGlmaWVyLCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRp
YXRlZCwgaXNWaXNpYmxlLCBpc0ZvY3VzZWQsIGZvY3VzT3JkZXIsIGNyb3NzVGhyZWFkQ29weShh
bmNlc3Rvck9yaWdpbnMpIH07CiB9CiAKIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIFNlcnZpY2VX
b3JrZXJDbGllbnREYXRhOjppc29sYXRlZENvcHkoKSAmJgogewotICAgIHJldHVybiB7IGlkZW50
aWZpZXIsIHR5cGUsIGZyYW1lVHlwZSwgV1RGTW92ZSh1cmwpLmlzb2xhdGVkQ29weSgpLCBwYWdl
SWRlbnRpZmllciwgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQsIGlzVmlzaWJsZSwgaXNG
b2N1c2VkLCBmb2N1c09yZGVyLCBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShhbmNlc3Rvck9yaWdp
bnMpKSB9OworICAgIHJldHVybiB7IGlkZW50aWZpZXIsIHR5cGUsIGZyYW1lVHlwZSwgV1RGTW92
ZSh1cmwpLmlzb2xhdGVkQ29weSgpLCBwYWdlSWRlbnRpZmllciwgZnJhbWVJZGVudGlmaWVyLCBs
YXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCwgaXNWaXNpYmxlLCBpc0ZvY3VzZWQsIGZvY3Vz
T3JkZXIsIGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGFuY2VzdG9yT3JpZ2lucykpIH07CiB9CiAK
IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjpmcm9tKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCkBAIC04Nyw2ICs4Nyw3IEBAIFNlcnZpY2VX
b3JrZXJDbGllbnREYXRhIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjpmcm9tKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvCiAgICAgICAgIHRvU2VydmljZVdvcmtlckNsaWVudEZyYW1lVHlwZShj
b250ZXh0KSwKICAgICAgICAgZG9jdW1lbnQuY3JlYXRpb25VUkwoKSwKICAgICAgICAgZG9jdW1l
bnQucGFnZUlEKCksCisgICAgICAgIGRvY3VtZW50LmZyYW1lSUQoKSwKICAgICAgICAgbGFzdE5h
dmlnYXRpb25XYXNBcHBJbml0aWF0ZWQsCiAgICAgICAgICFkb2N1bWVudC5oaWRkZW4oKSwKICAg
ICAgICAgZG9jdW1lbnQuaGFzRm9jdXMoKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmgKaW5kZXggMjY0YWE5ZTY4
YmZkODQyYTE5NWM0MTM4YzgxYmNmMGQ3ZDIzODc5Ny4uYjhhZjE4MDVhMTMyMTU2NGQ3MDM1MzEw
ZjAwZWI1ZTU5Yzc5Yzg2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorI2luY2x1ZGUgIkZyYW1lSWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc1F1YWxpZmll
ZC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLmgiCkBAIC00
OSw2ICs1MCw3IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSB7CiAgICAgU2Vydmlj
ZVdvcmtlckNsaWVudEZyYW1lVHlwZSBmcmFtZVR5cGU7CiAgICAgVVJMIHVybDsKICAgICBzdGQ6
Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlv
bmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJZGVudGlmaWVyOwogICAgIExhc3ROYXZpZ2F0aW9u
V2FzQXBwSW5pdGlhdGVkIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOwogICAgIGJvb2wg
aXNWaXNpYmxlIHsgZmFsc2UgfTsKICAgICBib29sIGlzRm9jdXNlZCB7IGZhbHNlIH07CkBAIC02
Nyw3ICs2OSw3IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSB7CiB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPgogdm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8PCBpZGVudGlmaWVyIDw8IHR5cGUg
PDwgZnJhbWVUeXBlIDw8IHVybCA8PCBwYWdlSWRlbnRpZmllciA8PCBsYXN0TmF2aWdhdGlvbldh
c0FwcEluaXRpYXRlZCA8PCBpc1Zpc2libGUgPDwgaXNGb2N1c2VkIDw8IGZvY3VzT3JkZXIgPDwg
YW5jZXN0b3JPcmlnaW5zOworICAgIGVuY29kZXIgPDwgaWRlbnRpZmllciA8PCB0eXBlIDw8IGZy
YW1lVHlwZSA8PCB1cmwgPDwgcGFnZUlkZW50aWZpZXIgPDwgZnJhbWVJZGVudGlmaWVyIDw8IGxh
c3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIDw8IGlzVmlzaWJsZSA8PCBpc0ZvY3VzZWQgPDwg
Zm9jdXNPcmRlciA8PCBhbmNlc3Rvck9yaWdpbnM7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+CkBAIC05OCw2ICsxMDAsMTEgQEAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50
RGF0YT4gU2VydmljZVdvcmtlckNsaWVudERhdGE6OmRlY29kZShEZWNvZGVyJgogICAgIGlmICgh
cGFnZUlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKKyAgICBzdGQ6
Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPj4gZnJhbWVJZGVudGlmaWVy
OworICAgIGRlY29kZXIgPj4gZnJhbWVJZGVudGlmaWVyOworICAgIGlmICghZnJhbWVJZGVudGlm
aWVyKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCiAgICAgc3RkOjpvcHRpb25hbDxM
YXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZD4gbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0
ZWQ7CiAgICAgZGVjb2RlciA+PiBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDsKICAgICBp
ZiAoIWxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKQpAQCAtMTIzLDcgKzEzMCw3IEBAIHN0
ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IFNlcnZpY2VXb3JrZXJDbGllbnRE
YXRhOjpkZWNvZGUoRGVjb2RlciYKICAgICBpZiAoIWFuY2VzdG9yT3JpZ2lucykKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7IHsgV1RGTW92ZSgqaWRlbnRpZmll
ciksIFdURk1vdmUoKnR5cGUpLCBXVEZNb3ZlKCpmcmFtZVR5cGUpLCBXVEZNb3ZlKCp1cmwpLCBX
VEZNb3ZlKCpwYWdlSWRlbnRpZmllciksIFdURk1vdmUoKmxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5p
dGlhdGVkKSwgV1RGTW92ZSgqaXNWaXNpYmxlKSwgV1RGTW92ZSgqaXNGb2N1c2VkKSwgV1RGTW92
ZSgqZm9jdXNPcmRlciksIFdURk1vdmUoKmFuY2VzdG9yT3JpZ2lucykgfSB9OworICAgIHJldHVy
biB7IHsgV1RGTW92ZSgqaWRlbnRpZmllciksIFdURk1vdmUoKnR5cGUpLCBXVEZNb3ZlKCpmcmFt
ZVR5cGUpLCBXVEZNb3ZlKCp1cmwpLCBXVEZNb3ZlKCpwYWdlSWRlbnRpZmllciksIFdURk1vdmUo
KmZyYW1lSWRlbnRpZmllciksIFdURk1vdmUoKmxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVk
KSwgV1RGTW92ZSgqaXNWaXNpYmxlKSwgV1RGTW92ZSgqaXNGb2N1c2VkKSwgV1RGTW92ZSgqZm9j
dXNPcmRlciksIFdURk1vdmUoKmFuY2VzdG9yT3JpZ2lucykgfSB9OwogfQogCiB1c2luZyBTZXJ2
aWNlV29ya2VyQ2xpZW50c01hdGNoQWxsQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFZlY3RvcjxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJik+OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQu
Y3BwCmluZGV4IGRmNzdjYzQ5MTU5ZDk2MWJmMmEyMTUzYzA3N2NhZjk4OTJlOTI3M2QuLjY1YTBl
YzZkZTMwOGM2ZTA5MmMwMDM5MDQ1Y2Y4Zjk4M2RlY2MxMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlcldpbmRvd0NsaWVu
dC5jcHAKQEAgLTcxLDEwICs3MSw0NyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQ6
OmZvY3VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlZjxEZWZlcgogICAgIH0p
OwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQ6Om5hdmlnYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHVybCwgUmVmPERlZmVycmVkUHJvbWlzZT4m
JiBwcm9taXNlKQordm9pZCBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50OjpuYXZpZ2F0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgUmVm
PERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewotICAgIFVOVVNFRF9QQVJBTSh1cmwpOwot
ICAgIHByb21pc2UtPnJlamVjdChFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgIndpbmRv
d0NsaWVudC5uYXZpZ2F0ZSgpIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIl9zIH0pOworICAgIGF1dG8g
dXJsID0gY29udGV4dC5jb21wbGV0ZVVSTCh1cmxTdHJpbmcpOworCisgICAgaWYgKCF1cmwuaXNW
YWxpZCgpKSB7CisgICAgICAgIHByb21pc2UtPnJlamVjdChFeGNlcHRpb24geyBUeXBlRXJyb3Is
IG1ha2VTdHJpbmcoIlVSTCBzdHJpbmcgIiwgdXJsU3RyaW5nLCAiIGNhbm5vdCBzdWNjZXNzZnVs
bHkgYmUgcGFyc2VkIl9zKSB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICh1
cmwucHJvdG9jb2xJc0Fib3V0KCkpIHsKKyAgICAgICAgcHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlv
biB7IFR5cGVFcnJvciwgbWFrZVN0cmluZygiU2VydmljZVdvcmtlckNsaWVudHMubmF2aWdhdGUo
KSBjYW5ub3QgYmUgY2FsbGVkIHdpdGggVVJMICJfcywgdXJsLnN0cmluZygpKSB9KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFdlIGltcGxlbWVudCBzdGVwIDQgKGNoZWNraW5n
IG9mIGNsaWVudCdzIGFjdGl2ZSBzZXJ2aWNlIHdvcmtlcikgaW4gbmV0d29yayBwcm9jZXNzIGFz
IHdlIGNhbm5vdCBkbyBpdCBzeW5jaHJvbm91c2x5LgorICAgIGF1dG8mIHNlcnZpY2VXb3JrZXJD
b250ZXh0ID0gZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KTsKKyAg
ICBhdXRvIHByb21pc2VJZGVudGlmaWVyID0gc2VydmljZVdvcmtlckNvbnRleHQuY2xpZW50cygp
LmFkZFBlbmRpbmdQcm9taXNlKFdURk1vdmUocHJvbWlzZSkpOworICAgIGNhbGxPbk1haW5UaHJl
YWQoW2NsaWVudElkZW50aWZpZXIgPSBpZGVudGlmaWVyKCksIHByb21pc2VJZGVudGlmaWVyLCBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciA9IHNlcnZpY2VXb3JrZXJDb250ZXh0LnRocmVhZCgpLmlk
ZW50aWZpZXIoKSwgdXJsID0gV1RGTW92ZSh1cmwpLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUg
eworICAgICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCktPm5h
dmlnYXRlKGNsaWVudElkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCB1cmwsIFtw
cm9taXNlSWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50aWZpZXJdKGF1dG8gcmVzdWx0KSBt
dXRhYmxlIHsKKyAgICAgICAgICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnBvc3RU
YXNrVG9TZXJ2aWNlV29ya2VyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBbcHJvbWlzZUlkZW50
aWZpZXIsIHJlc3VsdCA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHJlc3VsdCkpXShhdXRvJiBz
ZXJ2aWNlV29ya2VyQ29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgYXV0byBwcm9t
aXNlID0gc2VydmljZVdvcmtlckNvbnRleHQuY2xpZW50cygpLnRha2VQZW5kaW5nUHJvbWlzZShw
cm9taXNlSWRlbnRpZmllcik7CisgICAgICAgICAgICAgICAgaWYgKCFwcm9taXNlKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4
Y2VwdGlvbigpKSB7CisgICAgICAgICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChyZXN1bHQu
cmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhdXRvIGNsaWVudERhdGEgPSByZXN1bHQucmVs
ZWFzZVJldHVyblZhbHVlKCk7CisgICAgICAgICAgICAgICAgaWYgKCFjbGllbnREYXRhKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmVXaXRoSlNWYWx1ZShKU0M6OmpzTnVs
bCgpKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyNp
ZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICAgICAgICAgIGF1dG8gb3JpZ2luRGF0YSA9IFNlY3Vy
aXR5T3JpZ2luRGF0YTo6ZnJvbVVSTChjbGllbnREYXRhLT51cmwpOworICAgICAgICAgICAgICAg
IENsaWVudE9yaWdpbiBjbGllbnRPcmlnaW4geyBvcmlnaW5EYXRhLCBvcmlnaW5EYXRhIH07Cisj
ZW5kaWYKKyAgICAgICAgICAgICAgICBwcm9taXNlLT50ZW1wbGF0ZSByZXNvbHZlPElETEludGVy
ZmFjZTxTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50Pj4oU2VydmljZVdvcmtlcldpbmRvd0NsaWVu
dDo6Y3JlYXRlKHNlcnZpY2VXb3JrZXJDb250ZXh0LCBXVEZNb3ZlKCpjbGllbnREYXRhKSkpOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TV0NvbnRleHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKaW5kZXggOWEyM2M1YWQwMzY2ODBlOWQ4ZWE4ODNi
NmEwOTZjNWI0YTg1OTgxZS4uNjVlNDQwNWFkNDhjYTFmMTllZDA3NGEyZDg0MWQ4YTg0ZDEyZGJk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dD
b250ZXh0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NXQ29udGV4dE1hbmFnZXIuaApAQCAtNzAsNiArNzAsOSBAQCBwdWJsaWM6CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBmb2N1cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJD
bGllbnREYXRhPiYmKT4mJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgb3BlbldpbmRvdyhT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1cmwsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4mJik+JiYpID0gMDsKIAorICAg
ICAgICB1c2luZyBOYXZpZ2F0ZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNl
cHRpb25PcjxzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPj4m
Jik+OworICAgICAgICB2aXJ0dWFsIHZvaWQgbmF2aWdhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBOYXZpZ2F0
ZUNhbGxiYWNrJiYpID0gMDsKKwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbEhlYXJ0QmVh
dENoZWNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBzZXRBc0luc3BlY3RlZChTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCkgPSAwOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3Bw
CmluZGV4IGM4MDcyYjkxZDQ4NGY5YmY0MGMyYjBiNTk4OWM3MmJlYWMwMThlMWQuLjNlZDVmNjM1
OGEzOTgzYjZjZTU4Nzg4Njk4YTdlZDdmNmQzMTlmOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC0xMDc3LDYgKzEwNzcs
MTQgQEAgdm9pZCBTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3Qg
Q2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIFMKICAgICBtX2NsaWVudFRvQ29udHJvbGxpbmdS
ZWdpc3RyYXRpb24ucmVtb3ZlKHJlZ2lzdHJhdGlvbkl0ZXJhdG9yKTsKIH0KIAorc3RkOjpvcHRp
b25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4gU1dTZXJ2ZXI6OmNsaWVu
dElkZW50aWZpZXJUb0NvbnRyb2xsaW5nUmVnaXN0cmF0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIpIGNvbnN0Cit7CisgICAgYXV0byByZWdpc3Ry
YXRpb25JdGVyYXRvciA9IG1fY2xpZW50VG9Db250cm9sbGluZ1JlZ2lzdHJhdGlvbi5maW5kKGNs
aWVudElkZW50aWZpZXIpOworICAgIGlmIChyZWdpc3RyYXRpb25JdGVyYXRvciA9PSBtX2NsaWVu
dFRvQ29udHJvbGxpbmdSZWdpc3RyYXRpb24uZW5kKCkpCisgICAgICAgIHJldHVybiB7IH07Cisg
ICAgcmV0dXJuIHJlZ2lzdHJhdGlvbkl0ZXJhdG9yLT52YWx1ZTsKK30KKwogU1dTZXJ2ZXI6OlNo
b3VsZERlbGF5UmVtb3ZhbCBTV1NlcnZlcjo6cmVtb3ZlQ29udGV4dENvbm5lY3Rpb25JZlBvc3Np
YmxlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pCiB7CiAgICAgaWYgKG1fY2xpZW50
c0J5UmVnaXN0cmFibGVEb21haW4uY29udGFpbnMoZG9tYWluKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRleCBhNGJiNzUzZmVjNDAy
MzAwMzg5NTU1M2ZmMjgyYmRjOWNlOWI1MGIzLi5jZDI0MjAzZDFjOTY2ZDFhZmNkMGU5OWEzMWRm
Mjg5ZTY4OWE5MDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlci5oCkBAIC0yNDAsNiArMjQwLDkgQEAgcHVibGljOgogICAgIGVudW0gY2xh
c3MgU2hvdWxkRGVsYXlSZW1vdmFsIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICBTaG91bGREZWxh
eVJlbW92YWwgcmVtb3ZlQ29udGV4dENvbm5lY3Rpb25JZlBvc3NpYmxlKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJik7CiAKKyAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25JZGVudGlmaWVyPiBjbGllbnRJZGVudGlmaWVyVG9Db250cm9sbGluZ1JlZ2lzdHJhdGlvbihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBmb3JFYWNoQ2xpZW50Rm9yT3JpZ2luKGNvbnN0IENsaWVudE9yaWdpbiYsIGNvbnN0
IEZ1bmN0aW9uPHZvaWQoU2VydmljZVdvcmtlckNsaWVudERhdGEmKT4mKTsKKwogcHJpdmF0ZToK
ICAgICB2b2lkIHZhbGlkYXRlUmVnaXN0cmF0aW9uRG9tYWluKFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluLCBTZXJ2aWNlV29ya2VySm9iVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJik7CiAKQEAgLTI1OSw3ICsyNjIsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5zdGFsbENv
bnRleHREYXRhKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYpOwogCiAgICAgU1dTZXJ2
ZXJSZWdpc3RyYXRpb24qIHJlZ2lzdHJhdGlvbkZyb21TZXJ2aWNlV29ya2VySWRlbnRpZmllcihT
ZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgdm9pZCBmb3JFYWNoQ2xpZW50Rm9yT3JpZ2lu
KGNvbnN0IENsaWVudE9yaWdpbiYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoU2VydmljZVdvcmtlckNs
aWVudERhdGEmKT4mKTsKIAogICAgIHZvaWQgcGVyZm9ybUdldE9yaWdpbnNXaXRoUmVnaXN0cmF0
aW9uc0NhbGxiYWNrcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCmluZGV4IDA4ODFiYzYyMzczNzEzYWFl
MjFmZWIxOGI2MjYyNGI1YmE2ZTk5OTIuLjkxZDBlOWY5MTU4ZWY1MTVmNGJlOTBiNmVmNWJkOWIy
NmE0NzExMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCkBAIC00MTksNiArNDE5LDE0IEBAIHZvaWQgU1dT
ZXJ2ZXJXb3JrZXI6OnRlcm1pbmF0ZUlmUG9zc2libGUoKQogICAgIG1fc2VydmVyLT5yZW1vdmVD
b250ZXh0Q29ubmVjdGlvbklmUG9zc2libGUocmVnaXN0cmFibGVEb21haW4oKSk7CiB9CiAKK2Jv
b2wgU1dTZXJ2ZXJXb3JrZXI6OmlzQ2xpZW50QWN0aXZlU2VydmljZVdvcmtlcihTY3JpcHRFeGVj
dXRpb25Db250ZXh0SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyKSBjb25zdAoreworICAgIGlm
ICghbV9zZXJ2ZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBhdXRvIHJlZ2lzdHJhdGlv
bklkZW50aWZpZXIgPSBtX3NlcnZlci0+Y2xpZW50SWRlbnRpZmllclRvQ29udHJvbGxpbmdSZWdp
c3RyYXRpb24oY2xpZW50SWRlbnRpZmllcik7CisgICAgcmV0dXJuIHJlZ2lzdHJhdGlvbklkZW50
aWZpZXIgJiYgKnJlZ2lzdHJhdGlvbklkZW50aWZpZXIgPT0gbV9kYXRhLnJlZ2lzdHJhdGlvbklk
ZW50aWZpZXI7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAppbmRleCA1NGRmMzg0MjIwODFhYWU0ZDgyYmE2
MjRmYmE2MjkwYThmNjM3YmI2Li43MTdkNTU5ZWRiZjM4MWIwNWM1NzIwZTU4ZTZjNDllYjZjNmQw
N2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyV29ya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlcldvcmtlci5oCkBAIC0xNDEsNiArMTQxLDggQEAgcHVibGljOgogCiAgICAgYm9v
bCBzaG91bGRDb250aW51ZSgpIGNvbnN0IHsgcmV0dXJuICEhbV9mdW5jdGlvbmFsRXZlbnRDb3Vu
dGVyIHx8IG1faXNJbnNwZWN0ZWQ7IH0KIAorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNDbGll
bnRBY3RpdmVTZXJ2aWNlV29ya2VyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyKSBj
b25zdDsKKwogcHJpdmF0ZToKICAgICBTV1NlcnZlcldvcmtlcihTV1NlcnZlciYsIFNXU2VydmVy
UmVnaXN0cmF0aW9uJiwgY29uc3QgVVJMJiwgY29uc3QgU2NyaXB0QnVmZmVyJiwgY29uc3QgQ2Vy
dGlmaWNhdGVJbmZvJiwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJz
JiwgY29uc3QgQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSYsIFN0cmluZyYmIHJlZmVycmVyUG9s
aWN5LCBXb3JrZXJUeXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgSGFzaE1hcDxVUkwsIFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IDZmYThkYWE0MmQ0NzhkYWM0YzNlN2U4
ZTZmY2ZlNmJhZjU4YjY4NmIuLjU2YjE4MDQ2OTZhNTY1NGExZjM2YWQ5M2Q3ZGNkZTQxNDMxZDI2
YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0xNjQsMTkg
KzE2NCwyMCBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6dXBkYXRlV29ya2VyU3RhdGVJ
bkNsaWVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllciB3bwogICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlNXQ2xpZW50Q29ubmVjdGlvbjo6VXBkYXRlV29ya2VyU3RhdGUod29ya2VyLCBzdGF0ZSkpOwog
fQogCi12b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y29udHJvbENsaWVudChjb25zdCBWZWN0
b3I8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mIGZyYW1lQW5jZXN0b3JPcmlnaW5zLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBTV1NlcnZlclJlZ2lz
dHJhdGlvbiYgcmVnaXN0cmF0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit2
b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y29udHJvbENsaWVudChjb25zdCBOZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycyYgcGFyYW1ldGVycywgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJl
Z2lzdHJhdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogeworICAgIGF1dG8g
Y2xpZW50SWRlbnRpZmllciA9ICpwYXJhbWV0ZXJzLm9wdGlvbnMuY2xpZW50SWRlbnRpZmllcjsK
ICAgICAvLyBBcyBwZXIgc3RlcCAxMiBvZiBodHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdv
cmtlci8jb24tZmV0Y2gtcmVxdWVzdC1hbGdvcml0aG0sIHRoZSBhY3RpdmUgc2VydmljZSB3b3Jr
ZXIgc2hvdWxkIGJlIGNvbnRyb2xsaW5nIHRoZSBkb2N1bWVudC4KLSAgICAvLyBXZSByZWdpc3Rl
ciBhIHRlbXBvcmFyeSBzZXJ2aWNlIHdvcmtlciBjbGllbnQgdXNpbmcgdGhlIGlkZW50aWZpZXIg
cHJvdmlkZWQgYnkgRG9jdW1lbnRMb2FkZXIgYW5kIG5vdGlmeSBEb2N1bWVudExvYWRlciBhYm91
dCBpdC4KLSAgICAvLyBJZiBub3RpZmljYXRpb24gaXMgc3VjY2Vzc2Z1bCwgRG9jdW1lbnRMb2Fk
ZXIgd2lsbCB1bnJlZ2lzdGVyIHRoZSB0ZW1wb3Jhcnkgc2VydmljZSB3b3JrZXIgY2xpZW50IGp1
c3QgYWZ0ZXIgdGhlIGRvY3VtZW50IGlzIGNyZWF0ZWQgYW5kIHJlZ2lzdGVyZWQgYXMgYSBjbGll
bnQuCisgICAgLy8gV2UgcmVnaXN0ZXIgdGhlIHNlcnZpY2Ugd29ya2VyIGNsaWVudCB1c2luZyB0
aGUgaWRlbnRpZmllciBwcm92aWRlZCBieSBEb2N1bWVudExvYWRlciBhbmQgbm90aWZ5IERvY3Vt
ZW50TG9hZGVyIGFib3V0IGl0LgorICAgIC8vIElmIG5vdGlmaWNhdGlvbiBpcyBzdWNjZXNzZnVs
LCBEb2N1bWVudExvYWRlciBpcyByZXNwb25zaWJsZSB0byB1bnJlZ2lzdGVyIHRoZSBzZXJ2aWNl
IHdvcmtlciBjbGllbnQgYXMgbmVlZGVkLgogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpTZXREb2N1bWVudElzQ29udHJvbGxlZCB7IGNsaWVu
dElkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbi5kYXRhKCkgfSwgW3dlYWtUaGlzID0gV2Vha1B0ciB7
ICp0aGlzIH0sIHRoaXMsIGNsaWVudElkZW50aWZpZXJdKGJvb2wgaXNTdWNjZXNzKSB7CiAgICAg
ICAgIGlmICghd2Vha1RoaXMgfHwgaXNTdWNjZXNzKQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjbGllbnRJZGVudGlmaWVyKTsKICAg
ICB9KTsKIAotICAgIGF1dG8gYW5jZXN0b3JPcmlnaW5zID0gbWFwKGZyYW1lQW5jZXN0b3JPcmln
aW5zLCBbXShhdXRvJiBvcmlnaW4pIHsgcmV0dXJuIG9yaWdpbi0+dG9TdHJpbmcoKTsgfSk7Ci0g
ICAgU2VydmljZVdvcmtlckNsaWVudERhdGEgZGF0YSB7IGNsaWVudElkZW50aWZpZXIsIFNlcnZp
Y2VXb3JrZXJDbGllbnRUeXBlOjpXaW5kb3csIFNlcnZpY2VXb3JrZXJDbGllbnRGcmFtZVR5cGU6
Ok5vbmUsIHJlcXVlc3QudXJsKCksIHsgfSwgcmVxdWVzdC5pc0FwcEluaXRpYXRlZCgpID8gV2Vi
Q29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6OlllcyA6IFdlYkNvcmU6Okxhc3RO
YXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpObywgZmFsc2UsIGZhbHNlLCAwLCBXVEZNb3ZlKGFu
Y2VzdG9yT3JpZ2lucykgfTsKKyAgICBhdXRvIGFuY2VzdG9yT3JpZ2lucyA9IG1hcChwYXJhbWV0
ZXJzLmZyYW1lQW5jZXN0b3JPcmlnaW5zLCBbXShhdXRvJiBvcmlnaW4pIHsgcmV0dXJuIG9yaWdp
bi0+dG9TdHJpbmcoKTsgfSk7CisgICAgU2VydmljZVdvcmtlckNsaWVudERhdGEgZGF0YSB7IGNs
aWVudElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGllbnRUeXBlOjpXaW5kb3csIFNlcnZpY2VX
b3JrZXJDbGllbnRGcmFtZVR5cGU6Ok5vbmUsIHJlcXVlc3QudXJsKCksIHBhcmFtZXRlcnMud2Vi
UGFnZUlELCBwYXJhbWV0ZXJzLndlYkZyYW1lSUQsIHJlcXVlc3QuaXNBcHBJbml0aWF0ZWQoKSA/
IFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpZZXMgOiBXZWJDb3JlOjpM
YXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDo6Tm8sIGZhbHNlLCBmYWxzZSwgMCwgV1RGTW92
ZShhbmNlc3Rvck9yaWdpbnMpIH07CiAgICAgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KFNl
Y3VyaXR5T3JpZ2luRGF0YSB7IHJlZ2lzdHJhdGlvbi5rZXkoKS50b3BPcmlnaW4oKSB9LCBXVEZN
b3ZlKGRhdGEpLCByZWdpc3RyYXRpb24uaWRlbnRpZmllcigpLCByZXF1ZXN0Lmh0dHBVc2VyQWdl
bnQoKSk7CiB9CiAKQEAgLTIwMSw3ICsyMDIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdv
cmtlckZldGNoVGFzaz4gV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpjcmVhdGVGZXRjaFRhc2soTgog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgc2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbklkZW50aWZpZXIgPSByZWdpc3RyYXRpb24tPmlkZW50aWZpZXIoKTsKLSAgICAgICAg
Y29udHJvbENsaWVudChsb2FkZXIucGFyYW1ldGVycygpLmZyYW1lQW5jZXN0b3JPcmlnaW5zLCAq
bG9hZGVyLnBhcmFtZXRlcnMoKS5vcHRpb25zLmNsaWVudElkZW50aWZpZXIsICpyZWdpc3RyYXRp
b24sIHJlcXVlc3QpOworICAgICAgICBjb250cm9sQ2xpZW50KGxvYWRlci5wYXJhbWV0ZXJzKCks
ICpyZWdpc3RyYXRpb24sIHJlcXVlc3QpOwogICAgICAgICBsb2FkZXIuc2V0UmVzdWx0aW5nQ2xp
ZW50SWRlbnRpZmllcihsb2FkZXIucGFyYW1ldGVycygpLm9wdGlvbnMuY2xpZW50SWRlbnRpZmll
ci0+dG9TdHJpbmcoKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFsb2FkZXIucGFyYW1l
dGVycygpLnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29u
bmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyQ29ubmVjdGlvbi5oCmluZGV4IGY3N2I5ZjViOTM4N2I5MWYyYjY3MzIwZTM3Y2Zh
YmI5Yjc5NWUyNGQuLjRkYzMxNDVjYmZiOGUzZDVjNWVlY2ZmY2Y5NzUxMDUxNWY0ZjRhYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTYxLDYgKzYxLDcgQEAgc3Ry
dWN0IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNz
IE5ldHdvcmtQcm9jZXNzOworY2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM7CiBj
bGFzcyBOZXR3b3JrUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
OwogCkBAIC04Myw4ICs4NCw2IEBAIHB1YmxpYzoKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Vydmlj
ZVdvcmtlckZldGNoVGFzaz4gY3JlYXRlRmV0Y2hUYXNrKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgZmV0Y2hUYXNrVGlt
ZWRPdXQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogCi0gICAgdm9pZCBmb2N1
c1NlcnZpY2VXb3JrZXJDbGllbnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YT4mJik+JiYpOwotCiBwcml2YXRlOgogICAgIC8vIEltcGxlbWVu
dCBTV1NlcnZlcjo6Q29ubmVjdGlvbiAoTWVzc2FnZXMgdG8gdGhlIGNsaWVudCBXZWJQcm9jZXNz
KQogICAgIHZvaWQgcmVqZWN0Sm9iSW5DbGllbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYklk
ZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmKSBmaW5hbDsKQEAgLTk3LDYg
Kzk2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFJlZ2lzdHJhdGlvbkxhc3RVcGRhdGVUaW1l
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBXYWxsVGltZSkg
ZmluYWw7CiAgICAgdm9pZCBzZXRSZWdpc3RyYXRpb25VcGRhdGVWaWFDYWNoZShXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtl
clVwZGF0ZVZpYUNhY2hlKSBmaW5hbDsKICAgICB2b2lkIG5vdGlmeUNsaWVudHNPZkNvbnRyb2xs
ZXJDaGFuZ2UoY29uc3QgSGFzaFNldDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRl
bnRpZmllcj4mIGNvbnRleHRJZGVudGlmaWVycywgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtl
ckRhdGEmIG5ld0NvbnRyb2xsZXIpOworICAgIHZvaWQgZm9jdXNTZXJ2aWNlV29ya2VyQ2xpZW50
KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+
JiYpPiYmKSBmaW5hbDsKIAogICAgIHZvaWQgc2NoZWR1bGVKb2JJblNlcnZlcihXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySm9iRGF0YSYmKTsKIApAQCAtMTI5LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBnZXRQdXNoUGVybWlzc2lvblN0YXRlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPHVpbnQ4
X3QsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYpPiYmKTsKIAogICAgIHZvaWQgcG9zdE1lc3Nh
Z2VUb1NlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgZGVzdGlu
YXRpb24sIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIGNvbnN0IFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXImIHNvdXJjZSk7Ci0gICAgdm9pZCBjb250
cm9sQ2xpZW50KGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiYs
IFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBXZWJDb3JlOjpTV1Nl
cnZlclJlZ2lzdHJhdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworICAg
IHZvaWQgY29udHJvbENsaWVudChjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYs
IFdlYkNvcmU6OlNXU2VydmVyUmVnaXN0cmF0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0Jik7CiAKICAgICB1c2luZyBFeGNlcHRpb25PclZvaWRDYWxsYmFjayA9IENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmKT47
CiAgICAgdm9pZCBlbmFibGVOYXZpZ2F0aW9uUHJlbG9hZChXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllciwgRXhjZXB0aW9uT3JWb2lkQ2FsbGJhY2smJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmluZGV4
IDdkZmEwZTE4NjQ5YTBmZTEzZDRmNzI2MTVjYTI4MzYwMGM5ZjcwZTEuLjA3ODEzZjI0OTRhZWE5
NTdiMjAxODUxNmZmOTQ3NTk2ODAwYzZmMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0yNjIsNiArMjYyLDQ3IEBAIHZvaWQg
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmb2N1cyhTY3JpcHRFeGVjdXRpb25Db250
ZXh0SWRlbnRpZmllciBjbGllCiAgICAgY29ubmVjdGlvbi0+Zm9jdXNTZXJ2aWNlV29ya2VyQ2xp
ZW50KGNsaWVudElkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAordm9pZCBXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om5hdmlnYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChFeHBlY3RlZDxzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiwgRXhj
ZXB0aW9uRGF0YT4mJik+JiYgY2FsbGJhY2spCit7CisgICAgYXV0byogd29ya2VyID0gU1dTZXJ2
ZXJXb3JrZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihzZXJ2aWNlV29ya2VySWRlbnRp
Zmllcik7CisgICAgaWYgKCF3b3JrZXIpIHsKKyAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0
ZWQoRXhjZXB0aW9uRGF0YSB7IFR5cGVFcnJvciwgIm5vIHNlcnZpY2Ugd29ya2VyIl9zIH0pKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghd29ya2VyLT5pc0NsaWVudEFjdGl2
ZVNlcnZpY2VXb3JrZXIoY2xpZW50SWRlbnRpZmllcikpIHsKKyAgICAgICAgY2FsbGJhY2sobWFr
ZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGF0YSB7IFR5cGVFcnJvciwgInNlcnZpY2Ugd29ya2VyIGlz
IG5vdCB0aGUgY2xpZW50IGFjdGl2ZSBzZXJ2aWNlIHdvcmtlciJfcyB9KSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgCisgICAgYXV0byBkYXRhID0gd29ya2VyLT5maW5kQ2xpZW50QnlJ
ZGVudGlmaWVyKGNsaWVudElkZW50aWZpZXIpOworICAgIGlmICghZGF0YSB8fCAhZGF0YS0+cGFn
ZUlkZW50aWZpZXIgfHwgIWRhdGEtPmZyYW1lSWRlbnRpZmllcikgeworICAgICAgICBjYWxsYmFj
ayhtYWtlVW5leHBlY3RlZChFeGNlcHRpb25EYXRhIHsgVHlwZUVycm9yLCAiY2Fubm90IG5hdmln
YXRlIHNlcnZpY2Ugd29ya2VyIGNsaWVudCJfcyB9KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBhdXRvIHBhZ2VJZGVudGlmaWVyID0gKmRhdGEtPnBhZ2VJZGVudGlmaWVyOworICAg
IGF1dG8gZnJhbWVJZGVudGlmaWVyID0gKmRhdGEtPmZyYW1lSWRlbnRpZmllcjsKKyAgICBtX2Nv
bm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Ok5hdmlnYXRlU2Vy
dmljZVdvcmtlckNsaWVudCB7IGZyYW1lSWRlbnRpZmllciwgY2xpZW50SWRlbnRpZmllciwgdXJs
IH0sIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBwYWdlSWRlbnRpZmllciwgZnJhbWVJ
ZGVudGlmaWVyLCB1cmwsIGNsaWVudE9yaWdpbiA9IHdvcmtlci0+b3JpZ2luKCksIGNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYg
KCF3ZWFrVGhpcyB8fCAhd2Vha1RoaXMtPnNlcnZlcigpKSB7CisgICAgICAgICAgICBjYWxsYmFj
ayhtYWtlVW5leHBlY3RlZChFeGNlcHRpb25EYXRhIHsgVHlwZUVycm9yLCAic2VydmljZSB3b3Jr
ZXIgaXMgZ29uZSJfcyB9KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQo
RXhjZXB0aW9uRGF0YSB7IFR5cGVFcnJvciwgIm5hdmlnYXRlIGZhaWxlZCJfcyB9KSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBzdGQ6Om9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJDbGllbnREYXRhPiBjbGllbnREYXRhOworICAgICAgICB3ZWFrVGhpcy0+c2VydmVy
KCktPmZvckVhY2hDbGllbnRGb3JPcmlnaW4oY2xpZW50T3JpZ2luLCBbcGFnZUlkZW50aWZpZXIs
IGZyYW1lSWRlbnRpZmllciwgdXJsLCAmY2xpZW50RGF0YV0oYXV0byYgZGF0YSkgeworICAgICAg
ICAgICAgaWYgKCFjbGllbnREYXRhICYmIGRhdGEucGFnZUlkZW50aWZpZXIgJiYgKmRhdGEucGFn
ZUlkZW50aWZpZXIgPT0gcGFnZUlkZW50aWZpZXIgJiYgZGF0YS5mcmFtZUlkZW50aWZpZXIgJiYg
KmRhdGEuZnJhbWVJZGVudGlmaWVyID09IGZyYW1lSWRlbnRpZmllciAmJiBkYXRhLnVybCA9PSB1
cmwpCisgICAgICAgICAgICAgICAgY2xpZW50RGF0YSA9IGRhdGE7CisgICAgICAgIH0pOworICAg
ICAgICBjYWxsYmFjayhXVEZNb3ZlKGNsaWVudERhdGEpKTsKKyAgICB9LCAwKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKaW5kZXgg
MDE2YTgyNzUzNTBhYzFlYzM0NzkwMmIyZmEzNGY4Mjg2MzA5ZDVjMC4uOTBkNzNjYjgyNTQyZjky
MDdlY2M5MDA5NGExY2I0OTUxNDUzYzllNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtMTAwLDYgKzEwMCw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBmaXJlTm90aWZpY2F0aW9uRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIsIGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmLCBXZWJDb3JlOjpOb3RpZmlj
YXRpb25FdmVudFR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwog
ICAgIHZvaWQgY2xvc2UoKSBmaW5hbDsKICAgICB2b2lkIGZvY3VzKFdlYkNvcmU6OlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYpPiYmKTsKKyAgICB2b2lk
IG5hdmlnYXRlKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChFeHBlY3RlZDxzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGll
bnREYXRhPiwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJik+JiYpOwogCiAgICAgdm9pZCBjb25u
ZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpIGZpbmFsOwogICAgIHZvaWQgdGVybWluYXRlRHVlVG9V
bnJlc3BvbnNpdmVuZXNzKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCAyMWQyMzY1NTdj
NDM0Mzk5ZGU5ODE4ZDY3OTNhY2I2NWNiYzFlNmJmLi4xODJmMmJmNWI5MWFlNzM3MjM3ZDFkNzM1
NzYxOTJiZTM0Mjc4NDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTM2LDYgKzM2LDcgQEAgbWVz
c2FnZXMgLT4gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIE5vdFJlZkNvdW50ZWQgewog
ICAgIE1hdGNoQWxsKHVpbnQ2NF90IG1hdGNoQWxsUmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBzdHJ1Y3Qg
V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyBvcHRpb25zKTsKICAgICBD
bGFpbShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRp
ZmllcikgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4gcmVzdWx0KQog
ICAgIEZvY3VzKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIHNlcnZp
Y2VXb3JrZXJDbGllbnRJZGVudGlmaWVyKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YT4gcmVzdWx0KQorICAgIE5hdmlnYXRlKFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBVUkwgdXJsKSAt
PiAoRXhwZWN0ZWQ8c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0
YT4sIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+IHJlc3VsdCkKICAgICBTZXRTY3JpcHRSZXNvdXJj
ZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBVUkwgc2NyaXB0
VVJMLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHNj
cmlwdCkKICAgICBQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBkZXN0aW5hdGlvbiwgc3RydWN0IFdlYkNvcmU6
Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2UsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIHNvdXJjZSwgU3RyaW5nIHNvdXJjZU9yaWdpbikKICAgICBEaWRGYWlsSGVhcnRC
ZWF0Q2hlY2soV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwCmluZGV4IDVjZjJiZWMxMmFiOWMwY2YzN2ZmMjNmMTE1ZjBkOWJmOGVjMzI4OTUu
LjhhYTdhNzcxYzkzOTY0MjM2ZjUyZTUwZTQ3NTYxZjZlYjljMzg2YjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cApAQCAtMTgxNCw2ICsxODE0LDE3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6b3Blbldp
bmRvd0Zyb21TZXJ2aWNlV29ya2VyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwKICAgICBjYWxs
YmFjayhzdGQ6Om51bGxvcHQpOwogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Om5hdmln
YXRlU2VydmljZVdvcmtlckNsaWVudChGcmFtZUlkZW50aWZpZXIgZnJhbWVJZGVudGlmaWVyLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBkb2N1bWVudElkZW50aWZpZXIsIGNvbnN0
IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQorewor
ICAgIGF1dG8qIHByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVy
KGRvY3VtZW50SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICBhdXRvKiBmcmFt
ZSA9IHByb2Nlc3MgPyBwcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlkZW50aWZpZXIpIDogbnVsbHB0
cjsKKyAgICBpZiAoIWZyYW1lKSB7CisgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBmcmFtZS0+bmF2aWdhdGVTZXJ2aWNlV29ya2VyQ2xpZW50KGRv
Y3VtZW50SWRlbnRpZmllciwgdXJsLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Cit9CisKIHZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoKQogewogICAg
IHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dy
b3VuZCgpLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggYWZhYjUyZDM2MzNlNWQ0MDRlZmQ5NWVjZTZmYWU5
NzFkMWFmYWRkOC4uNWNkMmE4MzhiOTYyMGJmYWVkYjlkZGVlNDYxZTc1NDZmODgyZmQ3ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmgKQEAgLTMwNCw2ICszMDQsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIG9wZW5XaW5k
b3dGcm9tU2VydmljZVdvcmtlcihQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmcsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VydmljZVdvcmtlck9yaWdp
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyPiYmKT4mJik7CiAKKyAgICB2b2lkIG5hdmlnYXRlU2VydmljZVdvcmtlckNsaWVudChX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJ
ZGVudGlmaWVyLCBjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsK
KwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBOZXR3b3JrUHJvY2Vzc1Byb3h5KCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCAwZjdmMTM1OTQzMzQxMzY5YWVhZGI5MGE4ODg5
YTIwYzYzYWEwZTdlLi5iMTNiOTE4MDllMTZlYWI5MGQ5YWU0ZjgzZWM3ZDdkN2IyNTU3YzA4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC05Myw2ICs5Myw3IEBAIG1lc3NhZ2Vz
IC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIERhdGFUYXNrRGlk
Q29tcGxldGVXaXRoRXJyb3IoV2ViS2l0OjpEYXRhVGFza0lkZW50aWZpZXIgaWRlbnRpZmllciwg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKIAogICAgIE9wZW5XaW5kb3dGcm9tU2Vydmlj
ZVdvcmtlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyB1cmxTdHJpbmcsIHN0cnVj
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgc2VydmljZVdvcmtlck9yaWdpbikgLT4gKHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG5ld1BhZ2UpCisgICAgTmF2aWdh
dGVTZXJ2aWNlV29ya2VyQ2xpZW50KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlkZW50
aWZpZXIsIFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGRvY3VtZW50
SWRlbnRpZmllciwgVVJMIHVybCkgLT4gKGJvb2wgcmVzdWx0KQogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCmluZGV4IGQ0NGE1ZGJlNmEzZjI2NjMwYjM0
OTEzMjQ0ZTdlNDNiMmMxZjE2MzEuLjY0OGUwMjcxOGVmNzY2ZjMxZjA4ZjQwY2E3YzQ2MTMxOWZi
NmM4OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCkBAIC01
OCw2ICs1OCw5IEBAIFdlYkZyYW1lUHJveHk6On5XZWJGcmFtZVByb3h5KCkKICNpZiBQTEFURk9S
TShHVEspCiAgICAgV2ViUGFzdGVib2FyZFByb3h5OjpzaW5nbGV0b24oKS5kaWREZXN0cm95RnJh
bWUodGhpcyk7CiAjZW5kaWYKKworICAgIGlmIChtX25hdmlnYXRlQ2FsbGJhY2spCisgICAgICAg
IG1fbmF2aWdhdGVDYWxsYmFjayhmYWxzZSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVQcm94eTo6d2Vi
UHJvY2Vzc1dpbGxTaHV0RG93bigpCkBAIC02OCw2ICs3MSw5IEBAIHZvaWQgV2ViRnJhbWVQcm94
eTo6d2ViUHJvY2Vzc1dpbGxTaHV0RG93bigpCiAgICAgICAgIG1fYWN0aXZlTGlzdGVuZXItPmln
bm9yZSgpOwogICAgICAgICBtX2FjdGl2ZUxpc3RlbmVyID0gbnVsbHB0cjsKICAgICB9CisKKyAg
ICBpZiAobV9uYXZpZ2F0ZUNhbGxiYWNrKQorICAgICAgICBtX25hdmlnYXRlQ2FsbGJhY2soZmFs
c2UpOwogfQogCiBib29sIFdlYkZyYW1lUHJveHk6OmlzTWFpbkZyYW1lKCkgY29uc3QKQEAgLTc4
LDYgKzg0LDMxIEBAIGJvb2wgV2ViRnJhbWVQcm94eTo6aXNNYWluRnJhbWUoKSBjb25zdAogICAg
IHJldHVybiB0aGlzID09IG1fcGFnZS0+bWFpbkZyYW1lKCkgfHwgKG1fcGFnZS0+cHJvdmlzaW9u
YWxQYWdlUHJveHkoKSAmJiB0aGlzID09IG1fcGFnZS0+cHJvdmlzaW9uYWxQYWdlUHJveHkoKS0+
bWFpbkZyYW1lKCkpOwogfQogCit2b2lkIFdlYkZyYW1lUHJveHk6Om5hdmlnYXRlU2VydmljZVdv
cmtlckNsaWVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBkb2N1
bWVudElkZW50aWZpZXIsIGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNhbGxiYWNrKQoreworICAgIGlmICghbV9wYWdlKSB7CisgICAgICAgIGNhbGxiYWNr
KGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fcGFnZS0+c2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpOYXZpZ2F0ZVNlcnZpY2VXb3JrZXJDbGllbnQg
eyBkb2N1bWVudElkZW50aWZpZXIsIHVybCB9LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7
ICp0aGlzIH0sIHVybCwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCByZXN1bHQp
IG11dGFibGUgeworICAgICAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICAgICAgY2FsbGJhY2so
ZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFt
X2FjdGl2ZUxpc3RlbmVyKSB7CisgICAgICAgICAgICBjYWxsYmFjayhtX2ZyYW1lTG9hZFN0YXRl
LnVybCgpID09IHVybCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBpZiAobV9uYXZpZ2F0ZUNhbGxiYWNrKQorICAgICAgICAgICAgbV9uYXZpZ2F0ZUNhbGxiYWNr
KGZhbHNlKTsKKworICAgICAgICBtX25hdmlnYXRlQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KTsKKyAgICB9KTsKK30KKwogdm9pZCBXZWJGcmFtZVByb3h5Ojpsb2FkVVJMKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQogewogICAgIGlmICghbV9wYWdlKQpAQCAtOTUs
NyArMTI2LDcgQEAgdm9pZCBXZWJGcmFtZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVQKICAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkxvYWREYXRhSW5GcmFtZShkYXRhLCBNSU1FVHlwZSwgZW5jb2RpbmdO
YW1lLCBiYXNlVVJMLCBtX2ZyYW1lSUQpKTsKIH0KIAotdm9pZCBXZWJGcmFtZVByb3h5OjpzdG9w
TG9hZGluZygpIGNvbnN0Cit2b2lkIFdlYkZyYW1lUHJveHk6OnN0b3BMb2FkaW5nKCkKIHsKICAg
ICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTA0LDYgKzEzNSw4IEBAIHZvaWQg
V2ViRnJhbWVQcm94eTo6c3RvcExvYWRpbmcoKSBjb25zdAogICAgICAgICByZXR1cm47CiAKICAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0b3BMb2FkaW5nRnJhbWUobV9mcmFt
ZUlEKSk7CisgICAgaWYgKG1fbmF2aWdhdGVDYWxsYmFjaykKKyAgICAgICAgbV9uYXZpZ2F0ZUNh
bGxiYWNrKGZhbHNlKTsKIH0KICAgICAKIGJvb2wgV2ViRnJhbWVQcm94eTo6Y2FuUHJvdmlkZVNv
dXJjZSgpIGNvbnN0CkBAIC0xNjAsNiArMTkzLDggQEAgdm9pZCBXZWJGcmFtZVByb3h5OjpkaWRS
ZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoY29uc3QgVVJMJiB1cmwpCiB2
b2lkIFdlYkZyYW1lUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWQoKQogewogICAgIG1fZnJh
bWVMb2FkU3RhdGUuZGlkRmFpbFByb3Zpc2lvbmFsTG9hZCgpOworICAgIGlmIChtX25hdmlnYXRl
Q2FsbGJhY2spCisgICAgICAgIG1fbmF2aWdhdGVDYWxsYmFjayhmYWxzZSk7CiB9CiAKIHZvaWQg
V2ViRnJhbWVQcm94eTo6ZGlkQ29tbWl0TG9hZChjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBX
ZWJDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCBjb250YWluc1BsdWdpbkRv
Y3VtZW50KQpAQCAtMTc1LDExICsyMTAsMTUgQEAgdm9pZCBXZWJGcmFtZVByb3h5OjpkaWRDb21t
aXRMb2FkKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFdlYkNlcnRpZmljYXRlSW5mbyYKIHZv
aWQgV2ViRnJhbWVQcm94eTo6ZGlkRmluaXNoTG9hZCgpCiB7CiAgICAgbV9mcmFtZUxvYWRTdGF0
ZS5kaWRGaW5pc2hMb2FkKCk7CisgICAgaWYgKG1fbmF2aWdhdGVDYWxsYmFjaykKKyAgICAgICAg
bV9uYXZpZ2F0ZUNhbGxiYWNrKHRydWUpOwogfQogCiB2b2lkIFdlYkZyYW1lUHJveHk6OmRpZEZh
aWxMb2FkKCkKIHsKICAgICBtX2ZyYW1lTG9hZFN0YXRlLmRpZEZhaWxMb2FkKCk7CisgICAgaWYg
KG1fbmF2aWdhdGVDYWxsYmFjaykKKyAgICAgICAgbV9uYXZpZ2F0ZUNhbGxiYWNrKGZhbHNlKTsK
IH0KIAogdm9pZCBXZWJGcmFtZVByb3h5OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKGNvbnN0
IFVSTCYgdXJsKQpAQCAtMTk3LDYgKzIzNiw5IEBAIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94
eSYgV2ViRnJhbWVQcm94eTo6c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KENvbXBsZXRpb25ICiAg
ICAgaWYgKG1fYWN0aXZlTGlzdGVuZXIpCiAgICAgICAgIG1fYWN0aXZlTGlzdGVuZXItPmlnbm9y
ZSgpOwogICAgIG1fYWN0aXZlTGlzdGVuZXIgPSBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk6
OmNyZWF0ZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChQb2xpY3lBY3Rpb24gYWN0aW9u
LCBBUEk6OldlYnNpdGVQb2xpY2llcyogcG9saWNpZXMsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlD
bGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dh
cm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZywgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikgbXV0YWJsZSB7Cisg
ICAgICAgIGlmIChhY3Rpb24gIT0gUG9saWN5QWN0aW9uOjpVc2UgJiYgbV9uYXZpZ2F0ZUNhbGxi
YWNrKQorICAgICAgICAgICAgbV9uYXZpZ2F0ZUNhbGxiYWNrKGZhbHNlKTsKKwogICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihhY3Rpb24sIHBvbGljaWVzLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5
Q2xpZW50LCBXVEZNb3ZlKHNhZmVCcm93c2luZ1dhcm5pbmcpLCBpc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluKTsKICAgICAgICAgbV9hY3RpdmVMaXN0ZW5lciA9IG51bGxwdHI7CiAgICAgfSwg
ZXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0LCBleHBlY3RBcHBCb3VuZERvbWFpblJlc3VsdCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKaW5kZXggMzkxYjAyNzM2MjgzNDFl
ZGFhODgzMGIzNzRmMGZiMTMxMjQwMTcyYS4uZDVmODMxNmYwZmFhZjkyYzc4YjhjMzQ3NTU5ZWNl
NTExNDU4OTQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaApAQCAt
NzcsMTAgKzc3LDEyIEBAIHB1YmxpYzoKIAogICAgIEZyYW1lTG9hZFN0YXRlJiBmcmFtZUxvYWRT
dGF0ZSgpIHsgcmV0dXJuIG1fZnJhbWVMb2FkU3RhdGU7IH0KIAorICAgIHZvaWQgbmF2aWdhdGVT
ZXJ2aWNlV29ya2VyQ2xpZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlm
aWVyLCBjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKwogICAg
IHZvaWQgbG9hZFVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyID0gU3RyaW5n
KCkpOwogICAgIC8vIFN1YiBmcmFtZXMgb25seS4gRm9yIG1haW4gZnJhbWVzLCB1c2UgV2ViUGFn
ZVByb3h5Ojpsb2FkRGF0YS4KICAgICB2b2lkIGxvYWREYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1l
LCBjb25zdCBVUkwmIGJhc2VVUkwpOwotICAgIHZvaWQgc3RvcExvYWRpbmcoKSBjb25zdDsKKyAg
ICB2b2lkIHN0b3BMb2FkaW5nKCk7CiAKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0
dXJuIG1fZnJhbWVMb2FkU3RhdGUudXJsKCk7IH0KICAgICBjb25zdCBVUkwmIHByb3Zpc2lvbmFs
VVJMKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUxvYWRTdGF0ZS5wcm92aXNpb25hbFVSTCgpOyB9
CkBAIC0xMjgsNiArMTMwLDggQEAgcHVibGljOgogICAgIHZvaWQgY29sbGFwc2VTZWxlY3Rpb24o
KTsKICNlbmRpZgogCisgICAgdm9pZCB0cmFuc2Zlck5hdmlnYXRpb25DYWxsYmFjayhXZWJGcmFt
ZVByb3h5JiBmcmFtZSkgeyBzdGQ6OmV4Y2hhbmdlKGZyYW1lLm1fbmF2aWdhdGVDYWxsYmFjaywg
V1RGTW92ZShtX25hdmlnYXRlQ2FsbGJhY2spKTsgfQorCiBwcml2YXRlOgogICAgIFdlYkZyYW1l
UHJveHkoV2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKIApAQCAtMTQ0
LDYgKzE0OCw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAg
IFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciBtX2NvbnRlbnRGaWx0ZXJVbmJs
b2NrSGFuZGxlcjsKICNlbmRpZgorICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+IG1f
bmF2aWdhdGVDYWxsYmFjazsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggOTA3MzY5NmEyNWRjOWU5MTViMzI1
ZDdkNmMzOWRmMzI5MWUzZjllMy4uNzk5NWFhZGFlYzRkNjdlNjBiZDM5ODU3YWJhNDk5MWU2Zjk5
YjVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC04MDI3
LDcgKzgwMjcsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN0b3BBbGxVUkxTY2hlbWVUYXNrcyhX
ZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRl
KFJlc2V0U3RhdGVSZWFzb24gcmVzZXRTdGF0ZVJlYXNvbikKIHsKLSAgICBtX21haW5GcmFtZSA9
IG51bGxwdHI7CisgICAgaWYgKGF1dG8gbWFpbkZyYW1lID0gc3RkOjpleGNoYW5nZShtX21haW5G
cmFtZSwgeyB9KSkgeworICAgICAgICBpZiAocmVzZXRTdGF0ZVJlYXNvbiA9PSBSZXNldFN0YXRl
UmVhc29uOjpOYXZpZ2F0aW9uU3dhcCAmJiBtX3Byb3Zpc2lvbmFsUGFnZSAmJiBtX3Byb3Zpc2lv
bmFsUGFnZS0+bWFpbkZyYW1lKCkpCisgICAgICAgICAgICBtYWluRnJhbWUtPnRyYW5zZmVyTmF2
aWdhdGlvbkNhbGxiYWNrKCptX3Byb3Zpc2lvbmFsUGFnZS0+bWFpbkZyYW1lKCkpOworICAgIH0K
KwogICAgIG1fZm9jdXNlZEZyYW1lID0gbnVsbHB0cjsKICAgICBtX3N1c3BlbmRlZFBhZ2VLZXB0
VG9QcmV2ZW50Rmxhc2hpbmcgPSBudWxscHRyOwogICAgIG1fbGFzdFN1c3BlbmRlZFBhZ2UgPSBu
dWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5k
ZXggMTcwNDUwYTk1YmE2ZThhNDllZTVmYzgxZTExYjU1MDkxYmI5NGI2Mi4uMzU5M2VmMmEyYWM1
NTkyMWE4M2IwNWVmZjM2Njg1MDEyMDhjZDI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC01NTUsNiArNTU1LDE1IEBAIFdlYlBhZ2VQcm94eSog
V2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlEKQog
ICAgIHJldHVybiBnbG9iYWxQYWdlTWFwKCkuZ2V0KHBhZ2VJRCk7CiB9CiAKK1dlYlBhZ2VQcm94
eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlRnJvbUlkZW50aWZpZXIoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgcGFnZUlkZW50aWZpZXIpCit7CisgICAgZm9yIChhdXRvJiBwYWdlIDogZ2xvYmFs
UGFnZU1hcCgpKSB7CisgICAgICAgIGlmIChwYWdlLnZhbHVlLT53ZWJQYWdlSUQoKSA9PSBwYWdl
SWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVybiBwYWdlLnZhbHVlOworICAgIH0KKyAgICBy
ZXR1cm4gbnVsbHB0cjsKK30KKwogI2lmIEVOQUJMRShJTlRFTExJR0VOVF9UUkFDS0lOR19QUkVW
RU5USU9OKQogdm9pZCBXZWJQcm9jZXNzUHJveHk6Om5vdGlmeVBhZ2VTdGF0aXN0aWNzQW5kRGF0
YVJlY29yZHNQcm9jZXNzZWQoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuaAppbmRleCAwNTU1ZDNkNTc2MzQ1YmIyNDk2MTA4NThkNjk0NjZlNDkxNTlmMWFjLi4x
ZGY2ZDYxYjE3NWY3MjU3ZjVhYmMxN2U1MDIwMTA4MjRjYjYwZTEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtMTc3LDYgKzE3Nyw3IEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyBXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3NGb3JJZGVudGlmaWVyKFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKICAgICBzdGF0aWMgV2ViUGFnZVByb3h5KiB3ZWJQYWdl
KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIpOworICAgIHN0YXRpYyBXZWJQYWdlUHJveHkqIHdlYlBh
Z2VGcm9tSWRlbnRpZmllcihXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAgICAgUmVmPFdlYlBh
Z2VQcm94eT4gY3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiwgUmVmPEFQSTo6UGFnZUNvbmZpZ3Vy
YXRpb24+JiYpOwogCiAgICAgZW51bSBjbGFzcyBCZWdpbnNVc2luZ0RhdGFTdG9yZSA6IGJvb2wg
eyBObywgWWVzIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggNzNl
Y2RlMjZkOGUwOWM5YmE2MGJkNDUxOGY5YWQwNTVhMDJiNzYyYS4uOGYwZjgxNDY1MGNiNTk5NTE5
MTEzMjI4NmEzYTFlODNkZTljZjM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
LmNwcApAQCAtMzQ5LDYgKzM0OSwxNyBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uOjpjbGFpbShTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySQogICAgIH0p
OwogfQogCit2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpuYXZpZ2F0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgVVJMJiB1cmwsIE5h
dmlnYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6TmF2aWdhdGUgeyBjbGllbnRJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgdXJsIH0sIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgcmVz
dWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpIHsKKyAgICAg
ICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVzdWx0KS5lcnJvcigpLnRvRXhjZXB0aW9uKCkpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUo
cmVzdWx0KS52YWx1ZSgpKTsKKyAgICB9KTsKK30KKwogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbjo6Zm9jdXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgY2xpZW50
SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmKT4mJiBjYWxsYmFjaykKIHsKICAgICBtX2Nvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Rm9jdXMgeyBjbGllbnRJZGVudGlmaWVyIH0sIFdU
Rk1vdmUoY2FsbGJhY2spKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCmluZGV4IDU4
NDI4MmMxMDgzZTE0ODZmOWUxZmUyZjgwYzE2MDY2ZjBkNTFhYzIuLmUyZWUzMDZhNzE0Y2M3NDBi
OTNjZTdmODgxMzI3ZjFkODc3ZmMwNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
aApAQCAtODIsNiArODIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbWF0Y2hBbGwoV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGll
bnRRdWVyeU9wdGlvbnMmLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50c01hdGNoQWxsQ2Fs
bGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbGFpbShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpFeGNlcHRpb25Pcjx2b2lk
PiYmKT4mJikgZmluYWw7CiAgICAgdm9pZCBmb2N1cyhXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25D
b250ZXh0SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmKT4mJikgZmluYWw7CisgICAgdm9pZCBu
YXZpZ2F0ZShXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFVSTCYsIE5hdmlnYXRlQ2FsbGJhY2sm
JikgZmluYWw7CiAgICAgdm9pZCBza2lwV2FpdGluZyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKICAgICB2b2lkIHNl
dFNjcmlwdFJlc291cmNlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBV
UkwmLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2Ny
aXB0JikgZmluYWw7CiAgICAgYm9vbCBpc1Rocm90dGxlYWJsZSgpIGNvbnN0IGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBkNmIzMjJh
MDk2MGZjMjQyMDQxNjRjYTk5Yzc4MzlmNTg3MzkzMjM0Li4wODlmODRhMTUyMjEzN2IzOWFlZGE2
OTAwNWI5OWJhZGVlYTIzNzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcApAQCAtNjQzOSw2ICs2NDM5LDIyIEBAIHZvaWQgV2ViUGFnZTo6aW50ZXJh
Y3Rpb25SZWdpb25zKEZsb2F0UmVjdCByZWN0SW5Db250ZW50Q29vcmRpbmF0ZXMsIENvbXBsZXRp
b25ICiAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6aW50ZXJhY3Rpb25SZWdpb25zKCpt
X3BhZ2UsIHJlY3RJbkNvbnRlbnRDb29yZGluYXRlcykpOwogfQogCit2b2lkIFdlYlBhZ2U6Om5h
dmlnYXRlU2VydmljZVdvcmtlckNsaWVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmll
ciBkb2N1bWVudElkZW50aWZpZXIsIGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQoreworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAg
ICBhdXRvKiBkb2N1bWVudCA9IERvY3VtZW50OjphbGxEb2N1bWVudHNNYXAoKS5nZXQoZG9jdW1l
bnRJZGVudGlmaWVyKTsKKyAgICBpZiAoIWRvY3VtZW50KSB7CisgICAgICAgIGNhbGxiYWNrKGZh
bHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBkb2N1bWVudC0+bmF2aWdhdGVGcm9t
U2VydmljZVdvcmtlcih1cmwsIFdURk1vdmUoY2FsbGJhY2spKTsKKyNlbHNlCisgICAgVU5VU0VE
X1BBUkFNKGRvY3VtZW50SWRlbnRpZmllcik7CisgICAgVU5VU0VEX1BBUkFNKHVybCk7CisgICAg
Y2FsbGJhY2soZmFsc2UpOworI2VuZGlmCit9CisKIHZvaWQgV2ViUGFnZTo6c2V0QWx3YXlzU2hv
d3NIb3Jpem9udGFsU2Nyb2xsZXIoYm9vbCBhbHdheXNTaG93c0hvcml6b250YWxTY3JvbGxlcikK
IHsKICAgICBpZiAoYWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIgPT0gbV9hbHdheXNTaG93
c0hvcml6b250YWxTY3JvbGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAppbmRleCAxZWU3NGY0ZDkyMzdlYTA4OWMyODlmYzExNGE2MDk3MzhjMzU5MjVjLi44
NTFkMzRiNGExODBkNmMzN2RkODZhMTkyNjAxNjZmOWFiOWQ1NWIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC05NDUsNiArOTQ1LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgZGlkRW5kVXNlclRyaWdnZXJlZFNlbGVjdGlvbkNoYW5nZXMoKTsKIAogICAg
IHZvaWQgaW50ZXJhY3Rpb25SZWdpb25zKFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0SW5Db250ZW50
Q29vcmRpbmF0ZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkludGVy
YWN0aW9uUmVnaW9uPik+JiYpOworICAgIHZvaWQgbmF2aWdhdGVTZXJ2aWNlV29ya2VyQ2xpZW50
KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplQWNjZXNzaWJpbGl0eSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXgg
MmZiZGVjOGI4Y2MyNGVhMjEyYmEyZWFjMjVjYzllM2RlZGFlNTY2Ni4uZWU4MTEzOGM0YmZhMTVh
MzI4ZDlhNmE4NTg1MTg0ZmEyM2EzMzk0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC02ODMsNCArNjgzLDYgQEAg
R2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50
aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBTY3JvbGxUb1JlY3QoV2ViQ29yZTo6RmxvYXRS
ZWN0IHRhcmdldFJlY3QsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKQogCiAgICAgSW50ZXJh
Y3Rpb25SZWdpb25zKFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0SW5Db250ZW50Q29vcmRpbmF0ZXMp
IC0+IChWZWN0b3I8V2ViQ29yZTo6SW50ZXJhY3Rpb25SZWdpb24+IHJlZ2lvbnMpCisKKyAgICBO
YXZpZ2F0ZVNlcnZpY2VXb3JrZXJDbGllbnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4
dElkZW50aWZpZXIgZG9jdW1lbnRJZGVudGlmaWVyLCBVUkwgdXJsKSAtPiAoYm9vbCByZXN1bHQp
CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggZGRhYjUyMDg4ZTljNmJiYWQwOWUxM2U4MTViOWQ5MDFiMjc3MjA0My4uODRm
MmFlMDM3OTUzOWJhMDY3NzVjMDQ5Yzk2OTBiMzRhZTYwMDc1MCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEy
IEBACisyMDIyLTA0LTA0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAg
ICAgICBJbXBsZW1lbnQgU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5uYXZpZ2F0ZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NzM4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMt
d2syL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjItMDQtMDQgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgogCiAgICAgICAgIFNlcnZpY2UtV29ya2VyLU5hdmlnYXRpb24tUHJlbG9h
ZCBoZWFkZXIgbm90IGJlaW5nIHNlbnQgd2hlbiBOYXZpZ2F0aW9uIFByZWxvYWQgaXMgZW5hYmxl
ZC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDEzZmI0OWJkNzk2YzkxOTFkZjZm
N2YzNDI0YzMxOTY2ODBmYWEyOWQuLmUzZWIxNjRlNGM5MWFhOWI5ZWNiZDcwZjA0MjczNGE3NzBj
ODQyNzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisy
MDIyLTA0LTA0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJ
bXBsZW1lbnQgU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5uYXZpZ2F0ZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NzM4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
c2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3dpbmRvd2NsaWVudC1uYXZpZ2F0ZS5odHRw
cy1leHBlY3RlZC50eHQ6CisKIDIwMjItMDQtMDQgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgogCiAgICAgICAgIENPUlM6IEFsbG93IHBhcnRpY3VsYXIgUmFuZ2UgaGVhZGVyIHZh
bHVlcyB3aXRob3V0IGEgcHJlZmxpZ2h0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci93
aW5kb3djbGllbnQtbmF2aWdhdGUuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3Jr
ZXIvd2luZG93Y2xpZW50LW5hdmlnYXRlLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCAxOTI1NDZl
ZDg3MDAyYzMxMjY2MWZjNDk0NmFhMDUwNjA3ZTMzYTkyLi41ZDA3OWZkODM2ZmZlMGNjYzM5ZGVj
MjU2MTZhNmViMzc5NzM4ZWVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci93aW5kb3dj
bGllbnQtbmF2aWdhdGUuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vy
L3dpbmRvd2NsaWVudC1uYXZpZ2F0ZS5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEwLDI5ICsxMCwx
NSBAQCBQQVNTIGludmFsaWQgdXJsICh2aWV3LXNvdXJjZTovL2V4YW1wbGUuY29tKQogUEFTUyBp
bnZhbGlkIHVybCAoZmlsZTovLy8pCiBQQVNTIGludmFsaWQgdXJsIChhYm91dDpibGFuaykKIFBB
U1MgbmF2aWdhdGUgb24gYSB0b3AtbGV2ZWwgd2luZG93IGNsaWVudAotRkFJTCBub3JtYWwgd29y
a2VyIHNpZGUgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9i
amVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IHdpbmRvd0NsaWVudC5uYXZpZ2F0ZSgpIGlzIG5vdCB5
ZXQgc3VwcG9ydGVkIgotRkFJTCBibGFuayB1cmwgd29ya2VyIHNpZGUgcHJvbWlzZV90ZXN0OiBV
bmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6
IHdpbmRvd0NsaWVudC5uYXZpZ2F0ZSgpIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIgotRkFJTCBpbiBz
Y29wZSBidXQgbm90IGNvbnRyb2xsZWQgdGVzdCBvbiBpbnN0YWxsaW5nIHdvcmtlciB3b3JrZXIg
c2lkZSBwcm9taXNlX3JlamVjdHNfanM6IGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUg
fSIgdGhyZXcgb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogd2luZG93Q2xpZW50Lm5hdmlnYXRl
KCkgaXMgbm90IHlldCBzdXBwb3J0ZWQiICgiTm90U3VwcG9ydGVkRXJyb3IiKSBleHBlY3RlZCBp
bnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gVHlwZUVycm9yKCkgewotICAgIFtuYXRpdmUg
Y29kZV0KLX0iICgiVHlwZUVycm9yIikKLUZBSUwgaW4gc2NvcGUgYnV0IG5vdCBjb250cm9sbGVk
IHRlc3Qgb24gYWN0aXZlIHdvcmtlciB3b3JrZXIgc2lkZSBwcm9taXNlX3JlamVjdHNfanM6IGZ1
bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcgb2JqZWN0ICJOb3RTdXBwb3J0
ZWRFcnJvcjogd2luZG93Q2xpZW50Lm5hdmlnYXRlKCkgaXMgbm90IHlldCBzdXBwb3J0ZWQiICgi
Tm90U3VwcG9ydGVkRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rp
b24gVHlwZUVycm9yKCkgewotICAgIFtuYXRpdmUgY29kZV0KLX0iICgiVHlwZUVycm9yIikKLUZB
SUwgb3V0IG9mIHNjb3BlIHdvcmtlciBzaWRlIHByb21pc2VfcmVqZWN0c19qczogZnVuY3Rpb24g
ImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9y
OiB3aW5kb3dDbGllbnQubmF2aWdhdGUoKSBpcyBub3QgeWV0IHN1cHBvcnRlZCIgKCJOb3RTdXBw
b3J0ZWRFcnJvciIpIGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBl
RXJyb3IoKSB7Ci0gICAgW25hdGl2ZSBjb2RlXQotfSIgKCJUeXBlRXJyb3IiKQotRkFJTCBjcm9z
cyBvcmdpbiB1cmwgd29ya2VyIHNpZGUgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9u
IHdpdGggdmFsdWU6IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IHdpbmRvd0NsaWVudC5uYXZp
Z2F0ZSgpIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIgotRkFJTCBpbnZhbGlkIHVybCAoaHR0cDovL1tl
eGFtcGxlLmNvbV0pIHdvcmtlciBzaWRlIHByb21pc2VfcmVqZWN0c19qczogZnVuY3Rpb24gImZ1
bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiB3
aW5kb3dDbGllbnQubmF2aWdhdGUoKSBpcyBub3QgeWV0IHN1cHBvcnRlZCIgKCJOb3RTdXBwb3J0
ZWRFcnJvciIpIGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJy
b3IoKSB7Ci0gICAgW25hdGl2ZSBjb2RlXQotfSIgKCJUeXBlRXJyb3IiKQotRkFJTCBpbnZhbGlk
IHVybCAodmlldy1zb3VyY2U6Ly9leGFtcGxlLmNvbSkgd29ya2VyIHNpZGUgcHJvbWlzZV9yZWpl
Y3RzX2pzOiBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0iIHRocmV3IG9iamVjdCAi
Tm90U3VwcG9ydGVkRXJyb3I6IHdpbmRvd0NsaWVudC5uYXZpZ2F0ZSgpIGlzIG5vdCB5ZXQgc3Vw
cG9ydGVkIiAoIk5vdFN1cHBvcnRlZEVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rp
b24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKLSAgICBbbmF0aXZlIGNvZGVdCi19IiAoIlR5cGVF
cnJvciIpCi1GQUlMIGludmFsaWQgdXJsIChmaWxlOi8vLykgd29ya2VyIHNpZGUgcHJvbWlzZV9y
ZWplY3RzX2pzOiBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0iIHRocmV3IG9iamVj
dCAiTm90U3VwcG9ydGVkRXJyb3I6IHdpbmRvd0NsaWVudC5uYXZpZ2F0ZSgpIGlzIG5vdCB5ZXQg
c3VwcG9ydGVkIiAoIk5vdFN1cHBvcnRlZEVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVu
Y3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKLSAgICBbbmF0aXZlIGNvZGVdCi19IiAoIlR5
cGVFcnJvciIpCi1GQUlMIGludmFsaWQgdXJsIChhYm91dDpibGFuaykgd29ya2VyIHNpZGUgcHJv
bWlzZV9yZWplY3RzX2pzOiBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0iIHRocmV3
IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IHdpbmRvd0NsaWVudC5uYXZpZ2F0ZSgpIGlzIG5v
dCB5ZXQgc3VwcG9ydGVkIiAoIk5vdFN1cHBvcnRlZEVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ug
b2YgZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKLSAgICBbbmF0aXZlIGNvZGVdCi19
IiAoIlR5cGVFcnJvciIpCitQQVNTIG5vcm1hbCB3b3JrZXIgc2lkZQorUEFTUyBibGFuayB1cmwg
d29ya2VyIHNpZGUKK1BBU1MgaW4gc2NvcGUgYnV0IG5vdCBjb250cm9sbGVkIHRlc3Qgb24gaW5z
dGFsbGluZyB3b3JrZXIgd29ya2VyIHNpZGUKK1BBU1MgaW4gc2NvcGUgYnV0IG5vdCBjb250cm9s
bGVkIHRlc3Qgb24gYWN0aXZlIHdvcmtlciB3b3JrZXIgc2lkZQorUEFTUyBvdXQgb2Ygc2NvcGUg
d29ya2VyIHNpZGUKK1BBU1MgY3Jvc3Mgb3JnaW4gdXJsIHdvcmtlciBzaWRlCitQQVNTIGludmFs
aWQgdXJsIChodHRwOi8vW2V4YW1wbGUuY29tXSkgd29ya2VyIHNpZGUKK1BBU1MgaW52YWxpZCB1
cmwgKHZpZXctc291cmNlOi8vZXhhbXBsZS5jb20pIHdvcmtlciBzaWRlCitQQVNTIGludmFsaWQg
dXJsIChmaWxlOi8vLykgd29ya2VyIHNpZGUKK1BBU1MgaW52YWxpZCB1cmwgKGFib3V0OmJsYW5r
KSB3b3JrZXIgc2lkZQogRkFJTCBuYXZpZ2F0ZSBvbiBhIHRvcC1sZXZlbCB3aW5kb3cgY2xpZW50
IHdvcmtlciBzaWRlIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJ0b3AtbGV2ZWwiIGJ1dCBnb3Qg
ImF1eGlsaWFyeSIKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9U
ZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0
YXRpb25zCmluZGV4IDEzZGVmYjQ3NjExNTA3YTRlZDgxNDg5MmIzYTJjNjljOTk5ZjAxYWMuLmUx
ZGZhYmY2ZmNiMmE3YTBmMmRjOTU2NGE1MjYzYzZlNTEwZWUyODcgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTkyNCw3ICs5MjQsNyBAQCB3
ZWJraXQub3JnL2IvMTgxODM5IFsgRGVidWcgXSBpbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2lu
dC1hY3Rpb24tbG9nLmh0bWwgWyBQYQogCiB3ZWJraXQub3JnL2IvMjMwNDEyIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2NsaWVu
dHMtbWF0Y2hhbGwtY2xpZW50LXR5cGVzLmh0dHBzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi13
ZWJraXQub3JnL2IvMTc5MzUyIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2Vydmlj
ZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3dpbmRvd2NsaWVudC1uYXZpZ2F0ZS5odHRwcy5odG1s
IFsgUGFzcyBGYWlsdXJlIFNsb3cgXQord2Via2l0Lm9yZy9iLzE3OTM1MiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci93aW5kb3dj
bGllbnQtbmF2aWdhdGUuaHR0cHMuaHRtbCBbIFNsb3cgXQogCiB3ZWJraXQub3JnL2IvMTgzMTY0
IGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctZm9jdXMtc2VsZi5odG1sIFsgUGFzcyBGYWlsdXJlIF0K
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456695</attachid>
            <date>2022-04-05 05:49:52 -0700</date>
            <delta_ts>2022-04-05 06:01:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238738-20220405144948.patch</filename>
            <type>text/plain</type>
            <size>73534</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGU0NjQ4YWFlM2VkYmU4
NTVkYmJiMzRhOWQ5M2QyNzc5NjVmY2YwOC4uMmJlM2JlMzgwZGU0N2JiYjhjNDY5YWMxMzRlNTc3
YWJiNWQwM2ZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIyLTA0LTA1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgU2Vydmlj
ZVdvcmtlcldpbmRvd0NsaWVudC5uYXZpZ2F0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NzM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIGEgcm91dGluZSB0byBuYXZpZ2F0ZSBhIERv
Y3VtZW50LgorICAgICAgICBTZW5kIEZyYW1lSWRlbnRpZmllciBhcyBwYXJ0IG9mIFNlcnZpY2VX
b3JrZXJDbGllbnREYXRhLgorICAgICAgICBJbXBsZW1lbnQgU2VydmljZVdvcmtlcldpbmRvd0Ns
aWVudDo6bmF2aWdhdGUgYnkgc2VuZGluZyBJUEMgdG8gbmV0d29yayBwcm9jZXNzLgorCisgICAg
ICAgIFRlc3Q6IGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9uYXZpZ2F0ZS1pZnJhbWVzLXdpbmRv
dy1jbGllbnQuaHR0cHMuaHRtbAorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5jcHA6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmg6CisgICAg
ICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuY3BwOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaDoKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlcldvcmtlci5oOgorCiAyMDIyLTA0LTA0ICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBDT1JTOiBBbGxvdyBwYXJ0aWN1bGFyIFJhbmdlIGhl
YWRlciB2YWx1ZXMgd2l0aG91dCBhIHByZWZsaWdodApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1ZTJjMjdlNmFhYzE2
MDUyOTc2NGM2ZTdjZWQ3ZTM3MzhiNWQ5ZjNjLi43MTYyMTk2MjM4NjY2YmM4OWZiNzJhYzNhZWRl
YzViNDZiYTkzMjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIyLTA0LTA1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgU2Vydmlj
ZVdvcmtlcldpbmRvd0NsaWVudC5uYXZpZ2F0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NzM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2hlbiByZWNlaXZpbmcgYSByZXF1ZXN0IHRvIG5hdmlnYXRl
IGEgY2xpZW50LCBzZW5kIG1lc3NhZ2UgdG8gVUlQcm9jZXNzLgorICAgICAgICBVSVByb2Nlc3Mg
bG9jYXRlcyB0aGUgV2ViRnJhbWVQcm94eSB3aGljaCB3aWxsIHNlbmQgYW4gSVBDIG1lc3NhZ2Ug
dG8gdGhlIFdlYlByb2Nlc3MgdG8gZG8gbmF2aWdhdGlvbi4KKyAgICAgICAgV2Uga2VlcCB0cmFj
ayBvZiB0aGUgbmF2aWdhdGlvbiB3aXRoaW4gV2ViRnJhbWVQcm94eS4KKyAgICAgICAgSW4gY2Fz
ZSBvZiBwcm9jZXNzIHN3YXBwaW5nLCB3ZSBtYWtlIHN1cmUgdG8gdHJhbnNmZXIgdGhlIFdlYkZy
YW1lUHJveHkgY2FsbGJhY2suCisgICAgICAgIEluIGNhc2Ugb2YgcG9saWN5IGRlY2lzaW9uIHRv
IHN0b3AgbG9hZHMsIHdlIHJlc29sdmUgdGhlIHByb21pc2Ugd2l0aCBhbiBlbXB0eSBjbGllbnQu
CisgICAgICAgIEEgZm9sbG93LXVwIHBhdGNoIG1heSByZWplY3QgdGhlIHByb21pc2Ugb25jZSB0
aGUgZXhwZWN0ZWQgYmVoYXZpb3Igd2lsbCBiZSBjbGFyaWZpZWQuCisKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHA6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24u
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNz
YWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViRnJhbWVQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluOgorCiAyMDIyLTA0LTA0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4K
IAogICAgICAgICBTZXJ2aWNlLVdvcmtlci1OYXZpZ2F0aW9uLVByZWxvYWQgaGVhZGVyIG5vdCBi
ZWluZyBzZW50IHdoZW4gTmF2aWdhdGlvbiBQcmVsb2FkIGlzIGVuYWJsZWQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAppbmRleCBkMTYyMThkNjYyNTYxZTY3ZDJkYzY2YjViYzY2MjJhYjg5ZTE2YTBm
Li41NWNmNWJjYjAyZTMyNDY5ODMwMTIwZTUwMTIwYTA1YmRlZGViOGRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKQEAgLTg0MTQsNyArODQxNCw3IEBAIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IERvY3VtZW50OjpwYWdlSUQoKSBjb25zdAogCiBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRl
bnRpZmllcj4gRG9jdW1lbnQ6OmZyYW1lSUQoKSBjb25zdAogewotICAgIHJldHVybiBtX2ZyYW1l
LT5sb2FkZXIoKS5mcmFtZUlEKCk7CisgICAgcmV0dXJuIG1fZnJhbWUgPyBtX2ZyYW1lLT5sb2Fk
ZXIoKS5mcmFtZUlEKCkgOiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnJlZ2lz
dGVyQXJ0aWNsZUVsZW1lbnQoRWxlbWVudCYgYXJ0aWNsZSkKQEAgLTg3ODAsNiArODc4MCwyNCBA
QCB2b2lkIERvY3VtZW50Ojp1cGRhdGVTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSgpCiAgICAgYXV0
byBjb250cm9sbGluZ1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyID0gYWN0aXZl
U2VydmljZVdvcmtlcigpID8gc3RkOjptYWtlX29wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25JZGVudGlmaWVyPihhY3RpdmVTZXJ2aWNlV29ya2VyKCktPnJlZ2lzdHJhdGlvbklkZW50
aWZpZXIoKSkgOiBzdGQ6Om51bGxvcHQ7CiAgICAgbV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbi0+
cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KHRvcE9yaWdpbigpLCBTZXJ2aWNlV29ya2VyQ2xp
ZW50RGF0YTo6ZnJvbSgqdGhpcyksIGNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bklkZW50aWZpZXIsIHVzZXJBZ2VudCh1cmwoKSkpOwogfQorCit2b2lkIERvY3VtZW50OjpuYXZp
Z2F0ZUZyb21TZXJ2aWNlV29ya2VyKGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQoreworICAgIGlmIChhY3RpdmVET01PYmplY3RzQXJlU3Vz
cGVuZGVkKCkgfHwgYWN0aXZlRE9NT2JqZWN0c0FyZVN0b3BwZWQoKSkgeworICAgICAgICBjYWxs
YmFjayhmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgcG9zdFRhc2soW3dlYWtU
aGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHVybCwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0oYXV0byYpIG11dGFibGUgeworICAgICAgICBhdXRvKiBmcmFtZSA9IHdlYWtUaGlzID8gd2Vh
a1RoaXMtPmZyYW1lKCkgOiBudWxscHRyOworICAgICAgICBpZiAoIWZyYW1lKSB7CisgICAgICAg
ICAgICBjYWxsYmFjayhmYWxzZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgZnJhbWUtPm5hdmlnYXRpb25TY2hlZHVsZXIoKS5zY2hlZHVsZUxvY2F0aW9uQ2hhbmdl
KCp3ZWFrVGhpcywgd2Vha1RoaXMtPnNlY3VyaXR5T3JpZ2luKCksIHVybCwgZnJhbWUtPmxvYWRl
cigpLm91dGdvaW5nUmVmZXJyZXIoKSwgTG9ja0hpc3Rvcnk6OlllcywgTG9ja0JhY2tGb3J3YXJk
TGlzdDo6Tm8sIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgeworICAg
ICAgICAgICAgY2FsbGJhY2sodHJ1ZSk7CisgICAgICAgIH0pOworICAgIH0pOworfQogI2VuZGlm
CiAKIFN0cmluZyBEb2N1bWVudDo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVu
c2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgU3RyaW5nJiBjaGFsbGVuZ2VTdHJpbmcsIGNvbnN0
IFVSTCYgdXJsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA5NWRkYjZkZGFiMjE1Njc0OGEwNGIy
OTJjZjY5Nzk0N2Q3ZmZlNTU1Li5kM2NiYThkNzA0ZjRhMjgyODUzZDM2M2M5MWY4YjdlMmUzODQ5
NTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTU2OCw2ICsxNTY4LDcgQEAgcHVibGljOgog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIHNldFNlcnZpY2VXb3JrZXJDb25u
ZWN0aW9uKFNXQ2xpZW50Q29ubmVjdGlvbiopOwogICAgIHZvaWQgdXBkYXRlU2VydmljZVdvcmtl
ckNsaWVudERhdGEoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG5hdmlnYXRlRnJvbVNlcnZp
Y2VXb3JrZXIoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShWSURFTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuY3BwCmluZGV4IDU5MTZi
YjA0ZDZjZDI5NTBiZWExZmNjYTI1ZDFlNjI2ZWI3ZTZlNTIuLjFmMWNjMGYzZDQ5ZjFhMDJmNmNl
ODgwNTcwZDc5MzY1MjVjMmIyMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmNwcApAQCAtNTksMTIgKzU5
LDEyIEBAIHN0YXRpYyBTZXJ2aWNlV29ya2VyQ2xpZW50RnJhbWVUeXBlIHRvU2VydmljZVdvcmtl
ckNsaWVudEZyYW1lVHlwZShTY3JpcHRFeGVjdXRpCiAKIFNlcnZpY2VXb3JrZXJDbGllbnREYXRh
IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjppc29sYXRlZENvcHkoKSBjb25zdCAmCiB7Ci0gICAg
cmV0dXJuIHsgaWRlbnRpZmllciwgdHlwZSwgZnJhbWVUeXBlLCB1cmwuaXNvbGF0ZWRDb3B5KCks
IHBhZ2VJZGVudGlmaWVyLCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCwgaXNWaXNpYmxl
LCBpc0ZvY3VzZWQsIGZvY3VzT3JkZXIsIGNyb3NzVGhyZWFkQ29weShhbmNlc3Rvck9yaWdpbnMp
IH07CisgICAgcmV0dXJuIHsgaWRlbnRpZmllciwgdHlwZSwgZnJhbWVUeXBlLCB1cmwuaXNvbGF0
ZWRDb3B5KCksIHBhZ2VJZGVudGlmaWVyLCBmcmFtZUlkZW50aWZpZXIsIGxhc3ROYXZpZ2F0aW9u
V2FzQXBwSW5pdGlhdGVkLCBpc1Zpc2libGUsIGlzRm9jdXNlZCwgZm9jdXNPcmRlciwgY3Jvc3NU
aHJlYWRDb3B5KGFuY2VzdG9yT3JpZ2lucykgfTsKIH0KIAogU2VydmljZVdvcmtlckNsaWVudERh
dGEgU2VydmljZVdvcmtlckNsaWVudERhdGE6Omlzb2xhdGVkQ29weSgpICYmCiB7Ci0gICAgcmV0
dXJuIHsgaWRlbnRpZmllciwgdHlwZSwgZnJhbWVUeXBlLCBXVEZNb3ZlKHVybCkuaXNvbGF0ZWRD
b3B5KCksIHBhZ2VJZGVudGlmaWVyLCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCwgaXNW
aXNpYmxlLCBpc0ZvY3VzZWQsIGZvY3VzT3JkZXIsIGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGFu
Y2VzdG9yT3JpZ2lucykpIH07CisgICAgcmV0dXJuIHsgaWRlbnRpZmllciwgdHlwZSwgZnJhbWVU
eXBlLCBXVEZNb3ZlKHVybCkuaXNvbGF0ZWRDb3B5KCksIHBhZ2VJZGVudGlmaWVyLCBmcmFtZUlk
ZW50aWZpZXIsIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkLCBpc1Zpc2libGUsIGlzRm9j
dXNlZCwgZm9jdXNPcmRlciwgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoYW5jZXN0b3JPcmlnaW5z
KSkgfTsKIH0KIAogU2VydmljZVdvcmtlckNsaWVudERhdGEgU2VydmljZVdvcmtlckNsaWVudERh
dGE6OmZyb20oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKQEAgLTg3LDYgKzg3LDcg
QEAgU2VydmljZVdvcmtlckNsaWVudERhdGEgU2VydmljZVdvcmtlckNsaWVudERhdGE6OmZyb20o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY28KICAgICAgICAgdG9TZXJ2aWNlV29ya2VyQ2xpZW50
RnJhbWVUeXBlKGNvbnRleHQpLAogICAgICAgICBkb2N1bWVudC5jcmVhdGlvblVSTCgpLAogICAg
ICAgICBkb2N1bWVudC5wYWdlSUQoKSwKKyAgICAgICAgZG9jdW1lbnQuZnJhbWVJRCgpLAogICAg
ICAgICBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCwKICAgICAgICAgIWRvY3VtZW50Lmhp
ZGRlbigpLAogICAgICAgICBkb2N1bWVudC5oYXNGb2N1cygpLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaAppbmRl
eCAyNjRhYTllNjhiZmQ4NDJhMTk1YzQxMzhjODFiY2YwZDdkMjM4Nzk3Li5iOGFmMTgwNWExMzIx
NTY0ZDcwMzUzMTBmMDBlYjVlNTljNzljODYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaApAQCAtMjcsNiAr
MjcsNyBAQAogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCisjaW5jbHVkZSAiRnJhbWVJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJQcm9j
ZXNzUXVhbGlmaWVkLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZp
ZXIuaCIKQEAgLTQ5LDYgKzUwLDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIHsK
ICAgICBTZXJ2aWNlV29ya2VyQ2xpZW50RnJhbWVUeXBlIGZyYW1lVHlwZTsKICAgICBVUkwgdXJs
OwogICAgIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJZGVudGlmaWVyOworICAg
IHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlkZW50aWZpZXI7CiAgICAgTGFz
dE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ7
CiAgICAgYm9vbCBpc1Zpc2libGUgeyBmYWxzZSB9OwogICAgIGJvb2wgaXNGb2N1c2VkIHsgZmFs
c2UgfTsKQEAgLTY3LDcgKzY5LDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIHsK
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IGlkZW50aWZp
ZXIgPDwgdHlwZSA8PCBmcmFtZVR5cGUgPDwgdXJsIDw8IHBhZ2VJZGVudGlmaWVyIDw8IGxhc3RO
YXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIDw8IGlzVmlzaWJsZSA8PCBpc0ZvY3VzZWQgPDwgZm9j
dXNPcmRlciA8PCBhbmNlc3Rvck9yaWdpbnM7CisgICAgZW5jb2RlciA8PCBpZGVudGlmaWVyIDw8
IHR5cGUgPDwgZnJhbWVUeXBlIDw8IHVybCA8PCBwYWdlSWRlbnRpZmllciA8PCBmcmFtZUlkZW50
aWZpZXIgPDwgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgPDwgaXNWaXNpYmxlIDw8IGlz
Rm9jdXNlZCA8PCBmb2N1c09yZGVyIDw8IGFuY2VzdG9yT3JpZ2luczsKIH0KIAogdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4KQEAgLTk4LDYgKzEwMCwxMSBAQCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VX
b3JrZXJDbGllbnREYXRhPiBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZGVjb2RlKERlY29kZXIm
CiAgICAgaWYgKCFwYWdlSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAorICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+PiBmcmFt
ZUlkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiBmcmFtZUlkZW50aWZpZXI7CisgICAgaWYgKCFm
cmFtZUlkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBzdGQ6
Om9wdGlvbmFsPExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkPiBsYXN0TmF2aWdhdGlvbldh
c0FwcEluaXRpYXRlZDsKICAgICBkZWNvZGVyID4+IGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlh
dGVkOwogICAgIGlmICghbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpCkBAIC0xMjMsNyAr
MTMwLDcgQEAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gU2VydmljZVdv
cmtlckNsaWVudERhdGE6OmRlY29kZShEZWNvZGVyJgogICAgIGlmICghYW5jZXN0b3JPcmlnaW5z
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHsgeyBXVEZNb3Zl
KCppZGVudGlmaWVyKSwgV1RGTW92ZSgqdHlwZSksIFdURk1vdmUoKmZyYW1lVHlwZSksIFdURk1v
dmUoKnVybCksIFdURk1vdmUoKnBhZ2VJZGVudGlmaWVyKSwgV1RGTW92ZSgqbGFzdE5hdmlnYXRp
b25XYXNBcHBJbml0aWF0ZWQpLCBXVEZNb3ZlKCppc1Zpc2libGUpLCBXVEZNb3ZlKCppc0ZvY3Vz
ZWQpLCBXVEZNb3ZlKCpmb2N1c09yZGVyKSwgV1RGTW92ZSgqYW5jZXN0b3JPcmlnaW5zKSB9IH07
CisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCppZGVudGlmaWVyKSwgV1RGTW92ZSgqdHlwZSksIFdU
Rk1vdmUoKmZyYW1lVHlwZSksIFdURk1vdmUoKnVybCksIFdURk1vdmUoKnBhZ2VJZGVudGlmaWVy
KSwgV1RGTW92ZSgqZnJhbWVJZGVudGlmaWVyKSwgV1RGTW92ZSgqbGFzdE5hdmlnYXRpb25XYXNB
cHBJbml0aWF0ZWQpLCBXVEZNb3ZlKCppc1Zpc2libGUpLCBXVEZNb3ZlKCppc0ZvY3VzZWQpLCBX
VEZNb3ZlKCpmb2N1c09yZGVyKSwgV1RGTW92ZSgqYW5jZXN0b3JPcmlnaW5zKSB9IH07CiB9CiAK
IHVzaW5nIFNlcnZpY2VXb3JrZXJDbGllbnRzTWF0Y2hBbGxDYWxsYmFjayA9IENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoVmVjdG9yPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmKT47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlcldpbmRvd0Ns
aWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlcldp
bmRvd0NsaWVudC5jcHAKaW5kZXggZGY3N2NjNDkxNTlkOTYxYmYyYTIxNTNjMDc3Y2FmOTg5MmU5
MjczZC4uNjVhMGVjNmRlMzA4YzZlMDkyYzAwMzkwNDVjZjhmOTgzZGVjYzEzNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
V2luZG93Q2xpZW50LmNwcApAQCAtNzEsMTAgKzcxLDQ3IEBAIHZvaWQgU2VydmljZVdvcmtlcldp
bmRvd0NsaWVudDo6Zm9jdXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmPERl
ZmVyCiAgICAgfSk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlcldpbmRvd0NsaWVudDo6bmF2aWdh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgdXJsLCBSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmIHByb21pc2UpCit2b2lkIFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQ6Om5h
dmlnYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJs
U3RyaW5nLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKHVybCk7Ci0gICAgcHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVy
cm9yLCAid2luZG93Q2xpZW50Lm5hdmlnYXRlKCkgaXMgbm90IHlldCBzdXBwb3J0ZWQiX3MgfSk7
CisgICAgYXV0byB1cmwgPSBjb250ZXh0LmNvbXBsZXRlVVJMKHVybFN0cmluZyk7CisKKyAgICBp
ZiAoIXVybC5pc1ZhbGlkKCkpIHsKKyAgICAgICAgcHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7
IFR5cGVFcnJvciwgbWFrZVN0cmluZygiVVJMIHN0cmluZyAiLCB1cmxTdHJpbmcsICIgY2Fubm90
IHN1Y2Nlc3NmdWxseSBiZSBwYXJzZWQiX3MpIH0pOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKHVybC5wcm90b2NvbElzQWJvdXQoKSkgeworICAgICAgICBwcm9taXNlLT5yZWpl
Y3QoRXhjZXB0aW9uIHsgVHlwZUVycm9yLCBtYWtlU3RyaW5nKCJTZXJ2aWNlV29ya2VyQ2xpZW50
cy5uYXZpZ2F0ZSgpIGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBVUkwgIl9zLCB1cmwuc3RyaW5nKCkp
IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gV2UgaW1wbGVtZW50IHN0ZXAg
NCAoY2hlY2tpbmcgb2YgY2xpZW50J3MgYWN0aXZlIHNlcnZpY2Ugd29ya2VyKSBpbiBuZXR3b3Jr
IHByb2Nlc3MgYXMgd2UgY2Fubm90IGRvIGl0IHN5bmNocm9ub3VzbHkuCisgICAgYXV0byYgc2Vy
dmljZVdvcmtlckNvbnRleHQgPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNv
bnRleHQpOworICAgIGF1dG8gcHJvbWlzZUlkZW50aWZpZXIgPSBzZXJ2aWNlV29ya2VyQ29udGV4
dC5jbGllbnRzKCkuYWRkUGVuZGluZ1Byb21pc2UoV1RGTW92ZShwcm9taXNlKSk7CisgICAgY2Fs
bE9uTWFpblRocmVhZChbY2xpZW50SWRlbnRpZmllciA9IGlkZW50aWZpZXIoKSwgcHJvbWlzZUlk
ZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gc2VydmljZVdvcmtlckNvbnRleHQu
dGhyZWFkKCkuaWRlbnRpZmllcigpLCB1cmwgPSBXVEZNb3ZlKHVybCkuaXNvbGF0ZWRDb3B5KCld
KCkgbXV0YWJsZSB7CisgICAgICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5l
Y3Rpb24oKS0+bmF2aWdhdGUoY2xpZW50SWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIHVybCwgW3Byb21pc2VJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllcl0oYXV0
byByZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xl
dG9uKCkucG9zdFRhc2tUb1NlcnZpY2VXb3JrZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFtw
cm9taXNlSWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUocmVzdWx0
KSldKGF1dG8mIHNlcnZpY2VXb3JrZXJDb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAg
ICBhdXRvIHByb21pc2UgPSBzZXJ2aWNlV29ya2VyQ29udGV4dC5jbGllbnRzKCkudGFrZVBlbmRp
bmdQcm9taXNlKHByb21pc2VJZGVudGlmaWVyKTsKKyAgICAgICAgICAgICAgICBpZiAoIXByb21p
c2UpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIGlmIChy
ZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVq
ZWN0KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGF1dG8gY2xpZW50RGF0YSA9
IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICAgICAgICAgICAgICBpZiAoIWNsaWVu
dERhdGEpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZVdpdGhKU1ZhbHVl
KEpTQzo6anNOdWxsKCkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAgICAgfQorI2lmIEFTU0VSVF9FTkFCTEVECisgICAgICAgICAgICAgICAgYXV0byBvcmlnaW5E
YXRhID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKGNsaWVudERhdGEtPnVybCk7CisgICAg
ICAgICAgICAgICAgQ2xpZW50T3JpZ2luIGNsaWVudE9yaWdpbiB7IG9yaWdpbkRhdGEsIG9yaWdp
bkRhdGEgfTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIHByb21pc2UtPnRlbXBsYXRlIHJlc29s
dmU8SURMSW50ZXJmYWNlPFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQ+PihTZXJ2aWNlV29ya2Vy
V2luZG93Q2xpZW50OjpjcmVhdGUoc2VydmljZVdvcmtlckNvbnRleHQsIFdURk1vdmUoKmNsaWVu
dERhdGEpKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAppbmRleCA5YTIzYzVhZDAzNjY4
MGU5ZDhlYTg4M2I2YTA5NmM1YjRhODU5ODFlLi42NWU0NDA1YWQ0OGNhMWYxOWVkMDc0YTJkODQx
ZDhhODRkMTJkYmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCkBAIC03MCw2ICs3MCw5IEBAIHB1Ymxp
YzoKICAgICAgICAgdmlydHVhbCB2b2lkIGZvY3VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Vy
dmljZVdvcmtlckNsaWVudERhdGE+JiYpPiYmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBv
cGVuV2luZG93KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVybCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiYmKT4mJikg
PSAwOwogCisgICAgICAgIHVzaW5nIE5hdmlnYXRlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEV4Y2VwdGlvbk9yPHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNs
aWVudERhdGE+PiYmKT47CisgICAgICAgIHZpcnR1YWwgdm9pZCBuYXZpZ2F0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0SWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFVS
TCYsIE5hdmlnYXRlQ2FsbGJhY2smJikgPSAwOworCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRG
YWlsSGVhcnRCZWF0Q2hlY2soU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKICAgICAgICAg
dmlydHVhbCB2b2lkIHNldEFzSW5zcGVjdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29s
KSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlci5jcHAKaW5kZXggYzgwNzJiOTFkNDg0ZjliZjQwYzJiMGI1OTg5YzcyYmVhYzAxOGUx
ZC4uM2VkNWY2MzU4YTM5ODNiNmNlNTg3ODg2OThhN2VkN2Y2ZDMxOWY5YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTEw
NzcsNiArMTA3NywxNCBAQCB2b2lkIFNXU2VydmVyOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNs
aWVudChjb25zdCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgUwogICAgIG1fY2xpZW50VG9D
b250cm9sbGluZ1JlZ2lzdHJhdGlvbi5yZW1vdmUocmVnaXN0cmF0aW9uSXRlcmF0b3IpOwogfQog
CitzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiBTV1Nl
cnZlcjo6Y2xpZW50SWRlbnRpZmllclRvQ29udHJvbGxpbmdSZWdpc3RyYXRpb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllcikgY29uc3QKK3sKKyAgICBh
dXRvIHJlZ2lzdHJhdGlvbkl0ZXJhdG9yID0gbV9jbGllbnRUb0NvbnRyb2xsaW5nUmVnaXN0cmF0
aW9uLmZpbmQoY2xpZW50SWRlbnRpZmllcik7CisgICAgaWYgKHJlZ2lzdHJhdGlvbkl0ZXJhdG9y
ID09IG1fY2xpZW50VG9Db250cm9sbGluZ1JlZ2lzdHJhdGlvbi5lbmQoKSkKKyAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICByZXR1cm4gcmVnaXN0cmF0aW9uSXRlcmF0b3ItPnZhbHVlOworfQorCiBT
V1NlcnZlcjo6U2hvdWxkRGVsYXlSZW1vdmFsIFNXU2VydmVyOjpyZW1vdmVDb250ZXh0Q29ubmVj
dGlvbklmUG9zc2libGUoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikKIHsKICAgICBp
ZiAobV9jbGllbnRzQnlSZWdpc3RyYWJsZURvbWFpbi5jb250YWlucyhkb21haW4pKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCmluZGV4IGE0
YmI3NTNmZWM0MDIzMDAzODk1NTUzZmYyODJiZGM5Y2U5YjUwYjMuLmNkMjQyMDNkMWM5NjZkMWFm
Y2QwZTk5YTMxZGYyODllNjg5YTkwODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTI0MCw2ICsyNDAsOSBAQCBwdWJsaWM6CiAg
ICAgZW51bSBjbGFzcyBTaG91bGREZWxheVJlbW92YWwgOiBib29sIHsgTm8sIFllcyB9OwogICAg
IFNob3VsZERlbGF5UmVtb3ZhbCByZW1vdmVDb250ZXh0Q29ubmVjdGlvbklmUG9zc2libGUoY29u
c3QgUmVnaXN0cmFibGVEb21haW4mKTsKIAorICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXI+IGNsaWVudElkZW50aWZpZXJUb0NvbnRyb2xsaW5nUmVn
aXN0cmF0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGZvckVhY2hDbGllbnRGb3JPcmlnaW4oY29uc3QgQ2xpZW50T3Jp
Z2luJiwgY29uc3QgRnVuY3Rpb248dm9pZChTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSYpPiYpOwor
CiBwcml2YXRlOgogICAgIHZvaWQgdmFsaWRhdGVSZWdpc3RyYXRpb25Eb21haW4oV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4sIFNlcnZpY2VXb3JrZXJKb2JUeXBlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKTsKIApAQCAtMjU5LDcgKzI2Miw2IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBpbnN0YWxsQ29udGV4dERhdGEoY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJik7CiAK
ICAgICBTV1NlcnZlclJlZ2lzdHJhdGlvbiogcmVnaXN0cmF0aW9uRnJvbVNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKLSAgICB2b2lkIGZvckVhY2hDbGll
bnRGb3JPcmlnaW4oY29uc3QgQ2xpZW50T3JpZ2luJiwgY29uc3QgRnVuY3Rpb248dm9pZChTZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YSYpPiYpOwogCiAgICAgdm9pZCBwZXJmb3JtR2V0T3JpZ2luc1dp
dGhSZWdpc3RyYXRpb25zQ2FsbGJhY2tzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKaW5kZXggMDg4MWJj
NjIzNzM3MTNhYWUyMWZlYjE4YjYyNjI0YjViYTZlOTk5Mi4uOTFkMGU5ZjkxNThlZjUxNWY0YmU5
MGI2ZWY1YmQ5YjI2YTQ3MTExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKQEAgLTQxOSw2ICs0MTksMTQg
QEAgdm9pZCBTV1NlcnZlcldvcmtlcjo6dGVybWluYXRlSWZQb3NzaWJsZSgpCiAgICAgbV9zZXJ2
ZXItPnJlbW92ZUNvbnRleHRDb25uZWN0aW9uSWZQb3NzaWJsZShyZWdpc3RyYWJsZURvbWFpbigp
KTsKIH0KIAorYm9vbCBTV1NlcnZlcldvcmtlcjo6aXNDbGllbnRBY3RpdmVTZXJ2aWNlV29ya2Vy
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIpIGNvbnN0
Cit7CisgICAgaWYgKCFtX3NlcnZlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8g
cmVnaXN0cmF0aW9uSWRlbnRpZmllciA9IG1fc2VydmVyLT5jbGllbnRJZGVudGlmaWVyVG9Db250
cm9sbGluZ1JlZ2lzdHJhdGlvbihjbGllbnRJZGVudGlmaWVyKTsKKyAgICByZXR1cm4gcmVnaXN0
cmF0aW9uSWRlbnRpZmllciAmJiAqcmVnaXN0cmF0aW9uSWRlbnRpZmllciA9PSBtX2RhdGEucmVn
aXN0cmF0aW9uSWRlbnRpZmllcjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCmluZGV4IDU0ZGYzODQyMjA4
MWFhZTRkODJiYTYyNGZiYTYyOTBhOGY2MzdiYjYuLjcxN2Q1NTllZGJmMzgxYjA1YzU3MjBlNThl
NmM0OWViNmM2ZDA3YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKQEAgLTE0MSw2ICsxNDEsOCBAQCBwdWJsaWM6
CiAKICAgICBib29sIHNob3VsZENvbnRpbnVlKCkgY29uc3QgeyByZXR1cm4gISFtX2Z1bmN0aW9u
YWxFdmVudENvdW50ZXIgfHwgbV9pc0luc3BlY3RlZDsgfQogCisgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBpc0NsaWVudEFjdGl2ZVNlcnZpY2VXb3JrZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dElk
ZW50aWZpZXIpIGNvbnN0OworCiBwcml2YXRlOgogICAgIFNXU2VydmVyV29ya2VyKFNXU2VydmVy
JiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBjb25zdCBVUkwmLCBjb25zdCBTY3JpcHRCdWZmZXIm
LCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNw
b25zZUhlYWRlcnMmLCBjb25zdCBDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5JiwgU3RyaW5nJiYg
cmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBIYXNo
TWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKaW5kZXggNmZhOGRhYTQyZDQ3
OGRhYzRjM2U3ZThlNmZjZmU2YmFmNThiNjg2Yi4uNTZiMTgwNDY5NmE1NjU0YTFmMzZhZDkzZDdk
Y2RlNDE0MzFkMjZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAK
QEAgLTE2NCwxOSArMTY0LDIwIEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjp1cGRhdGVX
b3JrZXJTdGF0ZUluQ2xpZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHdvCiAgICAgc2VuZChN
ZXNzYWdlczo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpVcGRhdGVXb3JrZXJTdGF0ZSh3b3JrZXIs
IHN0YXRlKSk7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpjb250cm9sQ2xpZW50
KGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYgZnJhbWVBbmNlc3Rvck9yaWdp
bnMsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIsIFNX
U2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCkKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpjb250cm9sQ2xpZW50KGNvbnN0
IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBTV1NlcnZlclJlZ2lz
dHJhdGlvbiYgcmVnaXN0cmF0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7
CisgICAgYXV0byBjbGllbnRJZGVudGlmaWVyID0gKnBhcmFtZXRlcnMub3B0aW9ucy5jbGllbnRJ
ZGVudGlmaWVyOwogICAgIC8vIEFzIHBlciBzdGVwIDEyIG9mIGh0dHBzOi8vdzNjLmdpdGh1Yi5p
by9TZXJ2aWNlV29ya2VyLyNvbi1mZXRjaC1yZXF1ZXN0LWFsZ29yaXRobSwgdGhlIGFjdGl2ZSBz
ZXJ2aWNlIHdvcmtlciBzaG91bGQgYmUgY29udHJvbGxpbmcgdGhlIGRvY3VtZW50LgotICAgIC8v
IFdlIHJlZ2lzdGVyIGEgdGVtcG9yYXJ5IHNlcnZpY2Ugd29ya2VyIGNsaWVudCB1c2luZyB0aGUg
aWRlbnRpZmllciBwcm92aWRlZCBieSBEb2N1bWVudExvYWRlciBhbmQgbm90aWZ5IERvY3VtZW50
TG9hZGVyIGFib3V0IGl0LgotICAgIC8vIElmIG5vdGlmaWNhdGlvbiBpcyBzdWNjZXNzZnVsLCBE
b2N1bWVudExvYWRlciB3aWxsIHVucmVnaXN0ZXIgdGhlIHRlbXBvcmFyeSBzZXJ2aWNlIHdvcmtl
ciBjbGllbnQganVzdCBhZnRlciB0aGUgZG9jdW1lbnQgaXMgY3JlYXRlZCBhbmQgcmVnaXN0ZXJl
ZCBhcyBhIGNsaWVudC4KKyAgICAvLyBXZSByZWdpc3RlciB0aGUgc2VydmljZSB3b3JrZXIgY2xp
ZW50IHVzaW5nIHRoZSBpZGVudGlmaWVyIHByb3ZpZGVkIGJ5IERvY3VtZW50TG9hZGVyIGFuZCBu
b3RpZnkgRG9jdW1lbnRMb2FkZXIgYWJvdXQgaXQuCisgICAgLy8gSWYgbm90aWZpY2F0aW9uIGlz
IHN1Y2Nlc3NmdWwsIERvY3VtZW50TG9hZGVyIGlzIHJlc3BvbnNpYmxlIHRvIHVucmVnaXN0ZXIg
dGhlIHNlcnZpY2Ugd29ya2VyIGNsaWVudCBhcyBuZWVkZWQuCiAgICAgc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJTV0NsaWVudENvbm5lY3Rpb246OlNldERvY3VtZW50SXNDb250cm9s
bGVkIHsgY2xpZW50SWRlbnRpZmllciwgcmVnaXN0cmF0aW9uLmRhdGEoKSB9LCBbd2Vha1RoaXMg
PSBXZWFrUHRyIHsgKnRoaXMgfSwgdGhpcywgY2xpZW50SWRlbnRpZmllcl0oYm9vbCBpc1N1Y2Nl
c3MpIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCBpc1N1Y2Nlc3MpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIHVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNsaWVudElkZW50
aWZpZXIpOwogICAgIH0pOwogCi0gICAgYXV0byBhbmNlc3Rvck9yaWdpbnMgPSBtYXAoZnJhbWVB
bmNlc3Rvck9yaWdpbnMsIFtdKGF1dG8mIG9yaWdpbikgeyByZXR1cm4gb3JpZ2luLT50b1N0cmlu
ZygpOyB9KTsKLSAgICBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSBkYXRhIHsgY2xpZW50SWRlbnRp
ZmllciwgU2VydmljZVdvcmtlckNsaWVudFR5cGU6OldpbmRvdywgU2VydmljZVdvcmtlckNsaWVu
dEZyYW1lVHlwZTo6Tm9uZSwgcmVxdWVzdC51cmwoKSwgeyB9LCByZXF1ZXN0LmlzQXBwSW5pdGlh
dGVkKCkgPyBXZWJDb3JlOjpMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDo6WWVzIDogV2Vi
Q29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6Ok5vLCBmYWxzZSwgZmFsc2UsIDAs
IFdURk1vdmUoYW5jZXN0b3JPcmlnaW5zKSB9OworICAgIGF1dG8gYW5jZXN0b3JPcmlnaW5zID0g
bWFwKHBhcmFtZXRlcnMuZnJhbWVBbmNlc3Rvck9yaWdpbnMsIFtdKGF1dG8mIG9yaWdpbikgeyBy
ZXR1cm4gb3JpZ2luLT50b1N0cmluZygpOyB9KTsKKyAgICBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0
YSBkYXRhIHsgY2xpZW50SWRlbnRpZmllciwgU2VydmljZVdvcmtlckNsaWVudFR5cGU6OldpbmRv
dywgU2VydmljZVdvcmtlckNsaWVudEZyYW1lVHlwZTo6Tm9uZSwgcmVxdWVzdC51cmwoKSwgcGFy
YW1ldGVycy53ZWJQYWdlSUQsIHBhcmFtZXRlcnMud2ViRnJhbWVJRCwgcmVxdWVzdC5pc0FwcElu
aXRpYXRlZCgpID8gV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6OlllcyA6
IFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpObywgZmFsc2UsIGZhbHNl
LCAwLCBXVEZNb3ZlKGFuY2VzdG9yT3JpZ2lucykgfTsKICAgICByZWdpc3RlclNlcnZpY2VXb3Jr
ZXJDbGllbnQoU2VjdXJpdHlPcmlnaW5EYXRhIHsgcmVnaXN0cmF0aW9uLmtleSgpLnRvcE9yaWdp
bigpIH0sIFdURk1vdmUoZGF0YSksIHJlZ2lzdHJhdGlvbi5pZGVudGlmaWVyKCksIHJlcXVlc3Qu
aHR0cFVzZXJBZ2VudCgpKTsKIH0KIApAQCAtMjAxLDcgKzIwMiw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmNyZWF0ZUZl
dGNoVGFzayhOCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICBzZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciA9IHJlZ2lzdHJhdGlvbi0+aWRlbnRpZmllcigp
OwotICAgICAgICBjb250cm9sQ2xpZW50KGxvYWRlci5wYXJhbWV0ZXJzKCkuZnJhbWVBbmNlc3Rv
ck9yaWdpbnMsICpsb2FkZXIucGFyYW1ldGVycygpLm9wdGlvbnMuY2xpZW50SWRlbnRpZmllciwg
KnJlZ2lzdHJhdGlvbiwgcmVxdWVzdCk7CisgICAgICAgIGNvbnRyb2xDbGllbnQobG9hZGVyLnBh
cmFtZXRlcnMoKSwgKnJlZ2lzdHJhdGlvbiwgcmVxdWVzdCk7CiAgICAgICAgIGxvYWRlci5zZXRS
ZXN1bHRpbmdDbGllbnRJZGVudGlmaWVyKGxvYWRlci5wYXJhbWV0ZXJzKCkub3B0aW9ucy5jbGll
bnRJZGVudGlmaWVyLT50b1N0cmluZygpKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoIWxv
YWRlci5wYXJhbWV0ZXJzKCkuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKaW5kZXggZjc3YjlmNWI5Mzg3YjkxZjJi
NjczMjBlMzdjZmFiYjliNzk1ZTI0ZC4uNGRjMzE0NWNiZmI4ZTNkNWM1ZWVjZmZjZjk3NTEwNTE1
ZjRmNGFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaApAQCAtNjEsNiAr
NjEsNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudERhdGE7CiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogY2xhc3MgTmV0d29ya1Byb2Nlc3M7CitjbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVyczsKIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s7CiAKQEAgLTgzLDggKzg0LDYgQEAgcHVibGljOgogICAgIHN0ZDo6dW5pcXVl
X3B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBjcmVhdGVGZXRjaFRhc2soTmV0d29ya1Jlc291
cmNlTG9hZGVyJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBm
ZXRjaFRhc2tUaW1lZE91dChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAKLSAg
ICB2b2lkIGZvY3VzU2VydmljZVdvcmtlckNsaWVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25D
b250ZXh0SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmKT4mJik7Ci0KIHByaXZhdGU6CiAgICAg
Ly8gSW1wbGVtZW50IFNXU2VydmVyOjpDb25uZWN0aW9uIChNZXNzYWdlcyB0byB0aGUgY2xpZW50
IFdlYlByb2Nlc3MpCiAgICAgdm9pZCByZWplY3RKb2JJbkNsaWVudChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySm9iSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYpIGZpbmFs
OwpAQCAtOTcsNiArOTYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0UmVnaXN0cmF0aW9uTGFz
dFVwZGF0ZVRpbWUoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIs
IFdhbGxUaW1lKSBmaW5hbDsKICAgICB2b2lkIHNldFJlZ2lzdHJhdGlvblVwZGF0ZVZpYUNhY2hl
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUpIGZpbmFsOwogICAgIHZvaWQgbm90aWZ5Q2xpZW50
c09mQ29udHJvbGxlckNoYW5nZShjb25zdCBIYXNoU2V0PFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRJZGVudGlmaWVyPiYgY29udGV4dElkZW50aWZpZXJzLCBjb25zdCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyRGF0YSYgbmV3Q29udHJvbGxlcik7CisgICAgdm9pZCBmb2N1c1NlcnZpY2VX
b3JrZXJDbGllbnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
Q2xpZW50RGF0YT4mJik+JiYpIGZpbmFsOwogCiAgICAgdm9pZCBzY2hlZHVsZUpvYkluU2VydmVy
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhJiYpOwogCkBAIC0xMjksNyArMTI5LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGdldFB1c2hQZXJtaXNzaW9uU3RhdGUoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhw
ZWN0ZWQ8dWludDhfdCwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJik+JiYpOwogCiAgICAgdm9p
ZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBkZXN0aW5hdGlvbiwgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgY29u
c3QgV2ViQ29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllciYgc291cmNlKTsKLSAg
ICB2b2lkIGNvbnRyb2xDbGllbnQoY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbj4+JiwgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIsIFdl
YkNvcmU6OlNXU2VydmVyUmVnaXN0cmF0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0Jik7CisgICAgdm9pZCBjb250cm9sQ2xpZW50KGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzJiwgV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmKTsKIAogICAgIHVzaW5nIEV4Y2VwdGlvbk9yVm9pZENhbGxiYWNr
ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlv
bkRhdGE+JiYpPjsKICAgICB2b2lkIGVuYWJsZU5hdmlnYXRpb25QcmVsb2FkKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBFeGNlcHRpb25PclZvaWRDYWxsYmFj
ayYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5jcHAKaW5kZXggN2RmYTBlMTg2NDlhMGZlMTNkNGY3MjYxNWNhMjgzNjAwYzlmNzBlMS4uY2Ji
YWM4NGZmOWUwNzg2NWUzZDhjNWVmMGNlMTE3NmUxNWI4M2M5MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTI2Miw2ICsyNjIs
NDYgQEAgdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmZvY3VzKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGNsaWUKICAgICBjb25uZWN0aW9uLT5mb2N1c1NlcnZp
Y2VXb3JrZXJDbGllbnQoY2xpZW50SWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOwogfQog
Cit2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bmF2aWdhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwgU2VydmljZVdvcmtlcklk
ZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVu
dERhdGE+LCBFeGNlcHRpb25EYXRhPiYmKT4mJiBjYWxsYmFjaykKK3sKKyAgICBhdXRvKiB3b3Jr
ZXIgPSBTV1NlcnZlcldvcmtlcjo6ZXhpc3RpbmdXb3JrZXJGb3JJZGVudGlmaWVyKHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKTsKKyAgICBpZiAoIXdvcmtlcikgeworICAgICAgICBjYWxsYmFjayht
YWtlVW5leHBlY3RlZChFeGNlcHRpb25EYXRhIHsgVHlwZUVycm9yLCAibm8gc2VydmljZSB3b3Jr
ZXIiX3MgfSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCF3b3JrZXItPmlz
Q2xpZW50QWN0aXZlU2VydmljZVdvcmtlcihjbGllbnRJZGVudGlmaWVyKSkgeworICAgICAgICBj
YWxsYmFjayhtYWtlVW5leHBlY3RlZChFeGNlcHRpb25EYXRhIHsgVHlwZUVycm9yLCAic2Vydmlj
ZSB3b3JrZXIgaXMgbm90IHRoZSBjbGllbnQgYWN0aXZlIHNlcnZpY2Ugd29ya2VyIl9zIH0pKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBhdXRvIGRhdGEgPSB3b3JrZXItPmZp
bmRDbGllbnRCeUlkZW50aWZpZXIoY2xpZW50SWRlbnRpZmllcik7CisgICAgaWYgKCFkYXRhIHx8
ICFkYXRhLT5wYWdlSWRlbnRpZmllciB8fCAhZGF0YS0+ZnJhbWVJZGVudGlmaWVyKSB7CisgICAg
ICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVkKEV4Y2VwdGlvbkRhdGEgeyBUeXBlRXJyb3IsICJj
YW5ub3QgbmF2aWdhdGUgc2VydmljZSB3b3JrZXIgY2xpZW50Il9zIH0pKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGF1dG8gZnJhbWVJZGVudGlmaWVyID0gKmRhdGEtPmZyYW1lSWRl
bnRpZmllcjsKKyAgICBtX2Nvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6Ok5hdmlnYXRlU2VydmljZVdvcmtlckNsaWVudCB7IGZyYW1lSWRlbnRpZmllciwgY2xp
ZW50SWRlbnRpZmllciwgdXJsIH0sIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBmcmFt
ZUlkZW50aWZpZXIsIHVybCwgY2xpZW50T3JpZ2luID0gd29ya2VyLT5vcmlnaW4oKSwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byBwYWdlSWRlbnRpZmllcikgbXV0YWJsZSB7Cisg
ICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUaGlzLT5zZXJ2ZXIoKSkgeworICAgICAgICAg
ICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGF0YSB7IFR5cGVFcnJvciwgInNl
cnZpY2Ugd29ya2VyIGlzIGdvbmUiX3MgfSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKCFwYWdlSWRlbnRpZmllcikgeworICAgICAgICAgICAgY2FsbGJh
Y2sobWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGF0YSB7IFR5cGVFcnJvciwgIm5hdmlnYXRlIGZh
aWxlZCJfcyB9KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBz
dGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBjbGllbnREYXRhOworICAgICAg
ICB3ZWFrVGhpcy0+c2VydmVyKCktPmZvckVhY2hDbGllbnRGb3JPcmlnaW4oY2xpZW50T3JpZ2lu
LCBbcGFnZUlkZW50aWZpZXIsIGZyYW1lSWRlbnRpZmllciwgdXJsLCAmY2xpZW50RGF0YV0oYXV0
byYgZGF0YSkgeworICAgICAgICAgICAgaWYgKCFjbGllbnREYXRhICYmIGRhdGEucGFnZUlkZW50
aWZpZXIgJiYgKmRhdGEucGFnZUlkZW50aWZpZXIgPT0gKnBhZ2VJZGVudGlmaWVyICYmIGRhdGEu
ZnJhbWVJZGVudGlmaWVyICYmICpkYXRhLmZyYW1lSWRlbnRpZmllciA9PSBmcmFtZUlkZW50aWZp
ZXIgJiYgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihkYXRhLnVybCwgdXJsKSkKKyAg
ICAgICAgICAgICAgICBjbGllbnREYXRhID0gZGF0YTsKKyAgICAgICAgfSk7CisgICAgICAgIGNh
bGxiYWNrKFdURk1vdmUoY2xpZW50RGF0YSkpOworICAgIH0sIDApOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCAwMTZhODI3
NTM1MGFjMWVjMzQ3OTAyYjJmYTM0ZjgyODYzMDlkNWMwLi45MGQ3M2NiODI1NDJmOTIwN2VjYzkw
MDk0YTFjYjQ5NTE0NTNjOWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oCkBAIC0xMDAsNiArMTAwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGZpcmVOb3RpZmljYXRpb25FdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYsIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkV2
ZW50VHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CiAgICAgdm9p
ZCBjbG9zZSgpIGZpbmFsOwogICAgIHZvaWQgZm9jdXMoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJik+JiYpOworICAgIHZvaWQgbmF2aWdh
dGUoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIsIFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEV4cGVjdGVkPHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+
LCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmKT4mJik7CiAKICAgICB2b2lkIGNvbm5lY3Rpb25J
c05vTG9uZ2VyTmVlZGVkKCkgZmluYWw7CiAgICAgdm9pZCB0ZXJtaW5hdGVEdWVUb1VucmVzcG9u
c2l2ZW5lc3MoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDIxZDIzNjU1N2M0MzQzOTlk
ZTk4MThkNjc5M2FjYjY1Y2JjMWU2YmYuLjE4MmYyYmY1YjkxYWU3MzcyMzdkMWQ3MzU3NjE5MmJl
MzQyNzg0NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMzYsNiArMzYsNyBAQCBtZXNzYWdlcyAt
PiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CiAgICAgTWF0
Y2hBbGwodWludDY0X3QgbWF0Y2hBbGxSZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zIG9wdGlvbnMpOwogICAgIENsYWltKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSAt
PiAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiByZXN1bHQpCiAgICAgRm9j
dXMoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgc2VydmljZVdvcmtl
ckNsaWVudElkZW50aWZpZXIpIC0+IChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJDbGllbnREYXRhPiByZXN1bHQpCisgICAgTmF2aWdhdGUoV2ViQ29yZTo6U2NyaXB0RXhlY3V0
aW9uQ29udGV4dElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFVSTCB1cmwpIC0+IChFeHBl
Y3RlZDxzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiwgV2Vi
Q29yZTo6RXhjZXB0aW9uRGF0YT4gcmVzdWx0KQogICAgIFNldFNjcmlwdFJlc291cmNlKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFVSTCBzY3JpcHRVUkwsIFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQgc2NyaXB0KQog
ICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRJZGVudGlmaWVyIGRlc3RpbmF0aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2Fn
ZVdpdGhNZXNzYWdlUG9ydHMgbWVzc2FnZSwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIgc291cmNlLCBTdHJpbmcgc291cmNlT3JpZ2luKQogICAgIERpZEZhaWxIZWFydEJlYXRDaGVj
ayhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKaW5kZXggNWNmMmJlYzEyYWI5YzBjZjM3ZmYyM2YxMTVmMGQ5YmY4ZWMzMjg5NS4uZjc3Nzk2
MDlmOTM2MmQyYTI3ZTgyMGFjNTJhMDEzMjdiYTYxYjM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0x
ODA0LDcgKzE4MDQsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnRlcm1pbmF0ZVJlbW90
ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uV2hlblBvc3NpYmxlKFJlbQogICAgIHNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzOjpUZXJtaW5hdGVSZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlv
bldoZW5Qb3NzaWJsZSh3b3JrZXJUeXBlLCBzZXNzaW9uSUQsIHJlZ2lzdHJhYmxlRG9tYWluLCBw
cm9jZXNzSWRlbnRpZmllciksIDApOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Om9w
ZW5XaW5kb3dGcm9tU2VydmljZVdvcmtlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNl
cnZpY2VXb3JrZXJPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mJik+JiYgY2FsbGJhY2spCit2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6Om9wZW5XaW5kb3dGcm9tU2VydmljZVdvcmtlcihQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmIHNlcnZpY2VXb3JrZXJPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3Rk
OjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4mJik+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKGF1
dG8qIHN0b3JlID0gd2Vic2l0ZURhdGFTdG9yZUZyb21TZXNzaW9uSUQoc2Vzc2lvbklEKSkgewog
ICAgICAgICBzdG9yZS0+b3BlbldpbmRvd0Zyb21TZXJ2aWNlV29ya2VyKHVybFN0cmluZywgc2Vy
dmljZVdvcmtlck9yaWdpbiwgV1RGTW92ZShjYWxsYmFjaykpOwpAQCAtMTgxNCw2ICsxODE0LDE3
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6b3BlbldpbmRvd0Zyb21TZXJ2aWNlV29ya2Vy
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwKICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOwog
fQogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Om5hdmlnYXRlU2VydmljZVdvcmtlckNsaWVu
dChGcmFtZUlkZW50aWZpZXIgZnJhbWVJZGVudGlmaWVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
SWRlbnRpZmllciBkb2N1bWVudElkZW50aWZpZXIsIGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+KT4mJiBjYWxsYmFjaykK
K3sKKyAgICBhdXRvKiBwcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRp
Zmllcihkb2N1bWVudElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgYXV0byog
ZnJhbWUgPSBwcm9jZXNzID8gcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJZGVudGlmaWVyKSA6IG51
bGxwdHI7CisgICAgaWYgKCFmcmFtZSkgeworICAgICAgICBjYWxsYmFjayh7IH0pOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIGZyYW1lLT5uYXZpZ2F0ZVNlcnZpY2VXb3JrZXJDbGllbnQo
ZG9jdW1lbnRJZGVudGlmaWVyLCB1cmwsIFdURk1vdmUoY2FsbGJhY2spKTsKK30KKwogdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjphcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCgpCiB7CiAg
ICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkFwcGxpY2F0aW9uRGlkRW50ZXJCYWNr
Z3JvdW5kKCksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCBhZmFiNTJkMzYzM2U1ZDQwNGVmZDk1ZWNlNmZh
ZTk3MWQxYWZhZGQ4Li42ZDk2ZDAyM2Y5Mzk0OGVkZGE1YzZhZGM3MjQzMmRkNmRjNDU0ZTRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaApAQCAtMzA0LDYgKzMwNCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgb3Blbldp
bmRvd0Zyb21TZXJ2aWNlV29ya2VyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHVybFN0
cmluZywgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzZXJ2aWNlV29ya2VyT3Jp
Z2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXI+JiYpPiYmKTsKIAorICAgIHZvaWQgbmF2aWdhdGVTZXJ2aWNlV29ya2VyQ2xpZW50
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4
dElkZW50aWZpZXIsIGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4pPiYmKTsKKwogcHJpdmF0ZToKICAgICBleHBs
aWNpdCBOZXR3b3JrUHJvY2Vzc1Byb3h5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5p
bgppbmRleCAwZjdmMTM1OTQzMzQxMzY5YWVhZGI5MGE4ODg5YTIwYzYzYWEwZTdlLi4wMjFmYjFh
NTMxNDRhNmRmMDMwZWI2Y2RhMzI0ZGQ1MzkxMGM0NmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1l
c3NhZ2VzLmluCkBAIC05Myw2ICs5Myw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJv
eHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIERhdGFUYXNrRGlkQ29tcGxldGVXaXRoRXJyb3IoV2Vi
S2l0OjpEYXRhVGFza0lkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciBlcnJvcikKIAogICAgIE9wZW5XaW5kb3dGcm9tU2VydmljZVdvcmtlcihQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFN0cmluZyB1cmxTdHJpbmcsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEgc2VydmljZVdvcmtlck9yaWdpbikgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
UGFnZUlkZW50aWZpZXI+IG5ld1BhZ2UpCisgICAgTmF2aWdhdGVTZXJ2aWNlV29ya2VyQ2xpZW50
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGRvY3VtZW50SWRlbnRpZmllciwgVVJMIHVybCkg
LT4gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2UpCiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcApp
bmRleCA2MmI4NWI3MjYzZjJhODEyNDQ0NGYwZmUyNWNiMjIwMjIwNDI3YzhhLi44OGIyZWE4Mzg2
NzJhYzcxODY1ZWI2OWJjYWY1ZmIyMmNhMDBhODdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCkBAIC0yMzgsOCArMjM4LDEwIEBAIHZv
aWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZENyZWF0ZU1haW5GcmFtZShGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCkKIAogICAgIC8vIFJlc3RvcmUgdGhlIG1haW4gZnJhbWUncyBjb21taXR0ZWQg
VVJMIGFzIHNvbWUgY2xpZW50cyBtYXkgcmVseSBvbiBpdCB1bnRpbCB0aGUgbmV4dCBsb2FkIGlz
IGNvbW1pdHRlZC4KICAgICBSZWZQdHIgcHJldmlvdXNNYWluRnJhbWUgPSBtX3BhZ2UubWFpbkZy
YW1lKCk7Ci0gICAgaWYgKHByZXZpb3VzTWFpbkZyYW1lKQorICAgIGlmIChwcmV2aW91c01haW5G
cmFtZSkgewogICAgICAgICBtX21haW5GcmFtZS0+ZnJhbWVMb2FkU3RhdGUoKS5zZXRVUkwocHJl
dmlvdXNNYWluRnJhbWUtPnVybCgpKTsKKyAgICAgICAgcHJldmlvdXNNYWluRnJhbWUtPnRyYW5z
ZmVyTmF2aWdhdGlvbkNhbGxiYWNrVG9GcmFtZSgqbV9tYWluRnJhbWUpOworICAgIH0KIAogICAg
IC8vIE5vcm1hbGx5LCBub3RpZmljYXRpb24gb2YgYSBzZXJ2ZXIgcmVkaXJlY3QgY29tZXMgZnJv
bSB0aGUgV2ViQ29udGVudCBwcm9jZXNzLgogICAgIC8vIElmIHdlIGFyZSBwcm9jZXNzIHN3YXBw
aW5nIGluIHJlc3BvbnNlIHRvIGEgc2VydmVyIHJlZGlyZWN0IHRoZW4gdGhhdCBub3RpZmljYXRp
b24gd2lsbCBub3QgY29tZSBmcm9tIHRoZSBuZXcgV2ViQ29udGVudCBwcm9jZXNzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcAppbmRleCBkNDRhNWRiZTZhM2YyNjYz
MGIzNDkxMzI0NGU3ZTQzYjJjMWYxNjMxLi4zZTA0ZWU5YWFlZDA3MzNiYTJkZWNlZDZkZTMxNDg3
NzAwYmIxYmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcApA
QCAtNTgsNiArNTgsOSBAQCBXZWJGcmFtZVByb3h5Ojp+V2ViRnJhbWVQcm94eSgpCiAjaWYgUExB
VEZPUk0oR1RLKQogICAgIFdlYlBhc3RlYm9hcmRQcm94eTo6c2luZ2xldG9uKCkuZGlkRGVzdHJv
eUZyYW1lKHRoaXMpOwogI2VuZGlmCisKKyAgICBpZiAobV9uYXZpZ2F0ZUNhbGxiYWNrKQorICAg
ICAgICBtX25hdmlnYXRlQ2FsbGJhY2soeyB9KTsKIH0KIAogdm9pZCBXZWJGcmFtZVByb3h5Ojp3
ZWJQcm9jZXNzV2lsbFNodXREb3duKCkKQEAgLTY4LDYgKzcxLDkgQEAgdm9pZCBXZWJGcmFtZVBy
b3h5Ojp3ZWJQcm9jZXNzV2lsbFNodXREb3duKCkKICAgICAgICAgbV9hY3RpdmVMaXN0ZW5lci0+
aWdub3JlKCk7CiAgICAgICAgIG1fYWN0aXZlTGlzdGVuZXIgPSBudWxscHRyOwogICAgIH0KKwor
ICAgIGlmIChtX25hdmlnYXRlQ2FsbGJhY2spCisgICAgICAgIG1fbmF2aWdhdGVDYWxsYmFjayh7
IH0pOwogfQogCiBib29sIFdlYkZyYW1lUHJveHk6OmlzTWFpbkZyYW1lKCkgY29uc3QKQEAgLTc4
LDYgKzg0LDM4IEBAIGJvb2wgV2ViRnJhbWVQcm94eTo6aXNNYWluRnJhbWUoKSBjb25zdAogICAg
IHJldHVybiB0aGlzID09IG1fcGFnZS0+bWFpbkZyYW1lKCkgfHwgKG1fcGFnZS0+cHJvdmlzaW9u
YWxQYWdlUHJveHkoKSAmJiB0aGlzID09IG1fcGFnZS0+cHJvdmlzaW9uYWxQYWdlUHJveHkoKS0+
bWFpbkZyYW1lKCkpOwogfQogCitzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBXZWJGcmFt
ZVByb3h5OjpwYWdlSWRlbnRpZmllcigpCit7CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAgIHJl
dHVybiB7IH07CisgICAgcmV0dXJuIG1fcGFnZS0+d2ViUGFnZUlEKCk7Cit9CisKK3ZvaWQgV2Vi
RnJhbWVQcm94eTo6bmF2aWdhdGVTZXJ2aWNlV29ya2VyQ2xpZW50KFdlYkNvcmU6OlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGRvY3VtZW50SWRlbnRpZmllciwgY29uc3QgVVJMJiB1
cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4p
PiYmIGNhbGxiYWNrKQoreworICAgIGlmICghbV9wYWdlKSB7CisgICAgICAgIGNhbGxiYWNrKHsg
fSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3BhZ2UtPnNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6V2ViUGFnZTo6TmF2aWdhdGVTZXJ2aWNlV29ya2VyQ2xpZW50IHsgZG9j
dW1lbnRJZGVudGlmaWVyLCB1cmwgfSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhp
cyB9LCB1cmwsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgcmVzdWx0KSBtdXRh
YmxlIHsKKyAgICAgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKHsgfSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW1fYWN0aXZl
TGlzdGVuZXIpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKHBhZ2VJZGVudGlmaWVyKCkpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1fbmF2aWdhdGVDYWxs
YmFjaykKKyAgICAgICAgICAgIG1fbmF2aWdhdGVDYWxsYmFjayh7IH0pOworCisgICAgICAgIG1f
bmF2aWdhdGVDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOworICAgIH0pOworfQorCiB2b2lk
IFdlYkZyYW1lUHJveHk6OmxvYWRVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVm
ZXJyZXIpCiB7CiAgICAgaWYgKCFtX3BhZ2UpCkBAIC05NSw3ICsxMzMsNyBAQCB2b2lkIFdlYkZy
YW1lUHJveHk6OmxvYWREYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3Qg
U3RyaW5nJiBNSU1FVAogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZERh
dGFJbkZyYW1lKGRhdGEsIE1JTUVUeXBlLCBlbmNvZGluZ05hbWUsIGJhc2VVUkwsIG1fZnJhbWVJ
RCkpOwogfQogCi12b2lkIFdlYkZyYW1lUHJveHk6OnN0b3BMb2FkaW5nKCkgY29uc3QKK3ZvaWQg
V2ViRnJhbWVQcm94eTo6c3RvcExvYWRpbmcoKQogewogICAgIGlmICghbV9wYWdlKQogICAgICAg
ICByZXR1cm47CkBAIC0xMDQsNiArMTQyLDkgQEAgdm9pZCBXZWJGcmFtZVByb3h5OjpzdG9wTG9h
ZGluZygpIGNvbnN0CiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U3RvcExvYWRpbmdGcmFtZShtX2ZyYW1lSUQpKTsKKworICAgIGlmIChtX25h
dmlnYXRlQ2FsbGJhY2spCisgICAgICAgIG1fbmF2aWdhdGVDYWxsYmFjayh7IH0pOwogfQogICAg
IAogYm9vbCBXZWJGcmFtZVByb3h5OjpjYW5Qcm92aWRlU291cmNlKCkgY29uc3QKQEAgLTE2MCw2
ICsyMDEsOSBAQCB2b2lkIFdlYkZyYW1lUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZv
clByb3Zpc2lvbmFsTG9hZChjb25zdCBVUkwmIHVybCkKIHZvaWQgV2ViRnJhbWVQcm94eTo6ZGlk
RmFpbFByb3Zpc2lvbmFsTG9hZCgpCiB7CiAgICAgbV9mcmFtZUxvYWRTdGF0ZS5kaWRGYWlsUHJv
dmlzaW9uYWxMb2FkKCk7CisKKyAgICBpZiAobV9uYXZpZ2F0ZUNhbGxiYWNrKQorICAgICAgICBt
X25hdmlnYXRlQ2FsbGJhY2soeyB9KTsKIH0KIAogdm9pZCBXZWJGcmFtZVByb3h5OjpkaWRDb21t
aXRMb2FkKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFdlYkNlcnRpZmljYXRlSW5mbyYgY2Vy
dGlmaWNhdGVJbmZvLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQpCkBAIC0xNzUsMTEgKzIx
OSwxNyBAQCB2b2lkIFdlYkZyYW1lUHJveHk6OmRpZENvbW1pdExvYWQoY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSwgV2ViQ2VydGlmaWNhdGVJbmZvJgogdm9pZCBXZWJGcmFtZVByb3h5OjpkaWRG
aW5pc2hMb2FkKCkKIHsKICAgICBtX2ZyYW1lTG9hZFN0YXRlLmRpZEZpbmlzaExvYWQoKTsKKwor
ICAgIGlmIChtX25hdmlnYXRlQ2FsbGJhY2spCisgICAgICAgIG1fbmF2aWdhdGVDYWxsYmFjayhw
YWdlSWRlbnRpZmllcigpKTsKIH0KIAogdm9pZCBXZWJGcmFtZVByb3h5OjpkaWRGYWlsTG9hZCgp
CiB7CiAgICAgbV9mcmFtZUxvYWRTdGF0ZS5kaWRGYWlsTG9hZCgpOworCisgICAgaWYgKG1fbmF2
aWdhdGVDYWxsYmFjaykKKyAgICAgICAgbV9uYXZpZ2F0ZUNhbGxiYWNrKHsgfSk7CiB9CiAKIHZv
aWQgV2ViRnJhbWVQcm94eTo6ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbihjb25zdCBVUkwmIHVy
bCkKQEAgLTE5Nyw2ICsyNDcsOSBAQCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkmIFdlYkZy
YW1lUHJveHk6OnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShDb21wbGV0aW9uSAogICAgIGlmICht
X2FjdGl2ZUxpc3RlbmVyKQogICAgICAgICBtX2FjdGl2ZUxpc3RlbmVyLT5pZ25vcmUoKTsKICAg
ICBtX2FjdGl2ZUxpc3RlbmVyID0gV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5OjpjcmVhdGUo
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoUG9saWN5QWN0aW9uIGFjdGlvbiwgQVBJOjpX
ZWJzaXRlUG9saWNpZXMqIHBvbGljaWVzLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHBy
b2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJvd3NpbmdXYXJuaW5nPiYm
IHNhZmVCcm93c2luZ1dhcm5pbmcsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pIG11dGFibGUgeworICAgICAgICBp
ZiAoYWN0aW9uICE9IFBvbGljeUFjdGlvbjo6VXNlICYmIG1fbmF2aWdhdGVDYWxsYmFjaykKKyAg
ICAgICAgICAgIG1fbmF2aWdhdGVDYWxsYmFjayhwYWdlSWRlbnRpZmllcigpKTsKKwogICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihhY3Rpb24sIHBvbGljaWVzLCBwcm9jZXNzU3dhcFJlcXVlc3Rl
ZEJ5Q2xpZW50LCBXVEZNb3ZlKHNhZmVCcm93c2luZ1dhcm5pbmcpLCBpc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluKTsKICAgICAgICAgbV9hY3RpdmVMaXN0ZW5lciA9IG51bGxwdHI7CiAgICAg
fSwgZXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0LCBleHBlY3RBcHBCb3VuZERvbWFpblJlc3VsdCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKaW5kZXggMzkxYjAyNzM2Mjgz
NDFlZGFhODgzMGIzNzRmMGZiMTMxMjQwMTcyYS4uMDZlODJlZTRlNzlmZjM0ZTY3MmNhMDdiMjVm
OTQyNjdmMjRiNjhiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJh
bWVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaApA
QCAtNzcsMTAgKzc3LDEyIEBAIHB1YmxpYzoKIAogICAgIEZyYW1lTG9hZFN0YXRlJiBmcmFtZUxv
YWRTdGF0ZSgpIHsgcmV0dXJuIG1fZnJhbWVMb2FkU3RhdGU7IH0KIAorICAgIHZvaWQgbmF2aWdh
dGVTZXJ2aWNlV29ya2VyQ2xpZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyLCBjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+KT4mJik7CisKICAgICB2b2lkIGxvYWRVUkwoY29uc3Qg
VVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciA9IFN0cmluZygpKTsKICAgICAvLyBTdWIgZnJh
bWVzIG9ubHkuIEZvciBtYWluIGZyYW1lcywgdXNlIFdlYlBhZ2VQcm94eTo6bG9hZERhdGEuCiAg
ICAgdm9pZCBsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcm
IE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiBiYXNlVVJM
KTsKLSAgICB2b2lkIHN0b3BMb2FkaW5nKCkgY29uc3Q7CisgICAgdm9pZCBzdG9wTG9hZGluZygp
OwogCiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lTG9hZFN0YXRl
LnVybCgpOyB9CiAgICAgY29uc3QgVVJMJiBwcm92aXNpb25hbFVSTCgpIGNvbnN0IHsgcmV0dXJu
IG1fZnJhbWVMb2FkU3RhdGUucHJvdmlzaW9uYWxVUkwoKTsgfQpAQCAtMTI4LDkgKzEzMCwxMyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBjb2xsYXBzZVNlbGVjdGlvbigpOwogI2VuZGlmCiAKKyAgICB2
b2lkIHRyYW5zZmVyTmF2aWdhdGlvbkNhbGxiYWNrVG9GcmFtZShXZWJGcmFtZVByb3h5JiBmcmFt
ZSkgeyBzdGQ6OmV4Y2hhbmdlKGZyYW1lLm1fbmF2aWdhdGVDYWxsYmFjaywgV1RGTW92ZShtX25h
dmlnYXRlQ2FsbGJhY2spKTsgfQorCiBwcml2YXRlOgogICAgIFdlYkZyYW1lUHJveHkoV2ViUGFn
ZVByb3h5JiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKIAorICAgIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJZGVudGlmaWVyKCk7CisKICAgICBXZWFrUHRy
PFdlYlBhZ2VQcm94eT4gbV9wYWdlOwogCiAgICAgRnJhbWVMb2FkU3RhdGUgbV9mcmFtZUxvYWRT
dGF0ZTsKQEAgLTE0NCw2ICsxNTAsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKICAgICBXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgbV9jb250
ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI7CiAjZW5kaWYKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+KT4gbV9uYXZpZ2F0ZUNh
bGxiYWNrOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAxNzA0NTBhOTViYTZlOGE0OWVlNWZjODFl
MTFiNTUwOTFiYjk0YjYyLi4zNTkzZWYyYTJhYzU1OTIxYTgzYjA1ZWZmMzY2ODUwMTIwOGNkMjQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTU1
NSw2ICs1NTUsMTUgQEAgV2ViUGFnZVByb3h5KiBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UoV2Vi
UGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQpCiAgICAgcmV0dXJuIGdsb2JhbFBhZ2VNYXAoKS5n
ZXQocGFnZUlEKTsKIH0KIAorV2ViUGFnZVByb3h5KiBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2VG
cm9tSWRlbnRpZmllcihXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSWRlbnRpZmllcikKK3sK
KyAgICBmb3IgKGF1dG8mIHBhZ2UgOiBnbG9iYWxQYWdlTWFwKCkpIHsKKyAgICAgICAgaWYgKHBh
Z2UudmFsdWUtPndlYlBhZ2VJRCgpID09IHBhZ2VJZGVudGlmaWVyKQorICAgICAgICAgICAgcmV0
dXJuIHBhZ2UudmFsdWU7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCiAjaWYgRU5B
QkxFKElOVEVMTElHRU5UX1RSQUNLSU5HX1BSRVZFTlRJT04pCiB2b2lkIFdlYlByb2Nlc3NQcm94
eTo6bm90aWZ5UGFnZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NlZCgpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDA1NTVkM2Q1NzYzNDVi
YjI0OTYxMDg1OGQ2OTQ2NmU0OTE1OWYxYWMuLjFkZjZkNjFiMTc1ZjcyNTdmNWFiYzE3ZTUwMjAx
MDgyNGNiNjBlMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
CkBAIC0xNzcsNiArMTc3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFdlYlByb2Nlc3NQcm94
eSogcHJvY2Vzc0ZvcklkZW50aWZpZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOwogICAg
IHN0YXRpYyBXZWJQYWdlUHJveHkqIHdlYlBhZ2UoV2ViUGFnZVByb3h5SWRlbnRpZmllcik7Cisg
ICAgc3RhdGljIFdlYlBhZ2VQcm94eSogd2ViUGFnZUZyb21JZGVudGlmaWVyKFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyKTsKICAgICBSZWY8V2ViUGFnZVByb3h5PiBjcmVhdGVXZWJQYWdlKFBhZ2VD
bGllbnQmLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAKICAgICBlbnVtIGNsYXNz
IEJlZ2luc1VzaW5nRGF0YVN0b3JlIDogYm9vbCB7IE5vLCBZZXMgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmNwcAppbmRleCA3M2VjZGUyNmQ4ZTA5YzliYTYwYmQ0NTE4ZjlhZDA1
NWEwMmI3NjJhLi44ZjBmODE0NjUwY2I1OTk1MTkxMTMyMjg2YTNhMWU4M2RlOWNmMzkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC0zNDksNiArMzQ5LDE3IEBAIHZv
aWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmNsYWltKFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIHNlcnZpY2VXb3JrZXJJCiAgICAgfSk7CiB9CiAKK3ZvaWQgV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb246Om5hdmlnYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVy
IGNsaWVudElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBjb25zdCBVUkwmIHVybCwgTmF2aWdhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQor
eworICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpOYXZpZ2F0ZSB7IGNsaWVu
dElkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCB1cmwgfSwgW2NhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBpZiAo
IXJlc3VsdC5oYXNfdmFsdWUoKSkgeworICAgICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZXN1
bHQpLmVycm9yKCkudG9FeGNlcHRpb24oKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZXN1bHQpLnZhbHVlKCkpOworICAgIH0pOwor
fQorCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpmb2N1cyhTY3JpcHRFeGVj
dXRpb25Db250ZXh0SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYp
PiYmIGNhbGxiYWNrKQogewogICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpG
b2N1cyB7IGNsaWVudElkZW50aWZpZXIgfSwgV1RGTW92ZShjYWxsYmFjaykpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5kZXggNTg0MjgyYzEwODNlMTQ4NmY5ZTFmZTJmODBjMTYw
NjZmMGQ1MWFjMi4uZTJlZTMwNmE3MTRjYzc0MGI5M2NlN2Y4ODEzMjdmMWQ4NzdmYzA2NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBAIC04Miw2ICs4Miw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBtYXRjaEFsbChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29u
c3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyYsIFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJDbGllbnRzTWF0Y2hBbGxDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNs
YWltKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkNvcmU6OkV4Y2VwdGlvbk9yPHZvaWQ+JiYpPiYmKSBmaW5hbDsKICAgICB2b2lkIGZv
Y3VzKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERh
dGE+JiYpPiYmKSBmaW5hbDsKKyAgICB2b2lkIG5hdmlnYXRlKFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
Y29uc3QgVVJMJiwgTmF2aWdhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHNraXBXYWl0
aW5nKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpIGZpbmFsOwogICAgIHZvaWQgc2V0U2NyaXB0UmVzb3VyY2UoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFVSTCYsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQmKSBmaW5hbDsKICAgICBib29sIGlzVGhy
b3R0bGVhYmxlKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCmluZGV4IGQ2YjMyMmEwOTYwZmMyNDIwNDE2NGNhOTljNzgzOWY1ODcz
OTMyMzQuLjA4OWY4NGExNTIyMTM3YjM5YWVkYTY5MDA1Yjk5YmFkZWVhMjM3M2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC02NDM5LDYgKzY0
MzksMjIgQEAgdm9pZCBXZWJQYWdlOjppbnRlcmFjdGlvblJlZ2lvbnMoRmxvYXRSZWN0IHJlY3RJ
bkNvbnRlbnRDb29yZGluYXRlcywgQ29tcGxldGlvbkgKICAgICBjb21wbGV0aW9uSGFuZGxlcihX
ZWJDb3JlOjppbnRlcmFjdGlvblJlZ2lvbnMoKm1fcGFnZSwgcmVjdEluQ29udGVudENvb3JkaW5h
dGVzKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6bmF2aWdhdGVTZXJ2aWNlV29ya2VyQ2xpZW50KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGRvY3VtZW50SWRlbnRpZmllciwgY29uc3Qg
VVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCit7Cisj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIGF1dG8qIGRvY3VtZW50ID0gRG9jdW1lbnQ6
OmFsbERvY3VtZW50c01hcCgpLmdldChkb2N1bWVudElkZW50aWZpZXIpOworICAgIGlmICghZG9j
dW1lbnQpIHsKKyAgICAgICAgY2FsbGJhY2soZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIGRvY3VtZW50LT5uYXZpZ2F0ZUZyb21TZXJ2aWNlV29ya2VyKHVybCwgV1RGTW92ZShj
YWxsYmFjaykpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZG9jdW1lbnRJZGVudGlmaWVyKTsK
KyAgICBVTlVTRURfUEFSQU0odXJsKTsKKyAgICBjYWxsYmFjayhmYWxzZSk7CisjZW5kaWYKK30K
Kwogdm9pZCBXZWJQYWdlOjpzZXRBbHdheXNTaG93c0hvcml6b250YWxTY3JvbGxlcihib29sIGFs
d2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVyKQogewogICAgIGlmIChhbHdheXNTaG93c0hvcml6
b250YWxTY3JvbGxlciA9PSBtX2Fsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDFlZTc0ZjRkOTIzN2Vh
MDg5YzI4OWZjMTE0YTYwOTczOGMzNTkyNWMuLjg1MWQzNGI0YTE4MGQ2YzM3ZGQ4NmExOTI2MDE2
NmY5YWI5ZDU1YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKQEAgLTk0NSw2ICs5NDUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRFbmRVc2VyVHJpZ2dl
cmVkU2VsZWN0aW9uQ2hhbmdlcygpOwogCiAgICAgdm9pZCBpbnRlcmFjdGlvblJlZ2lvbnMoV2Vi
Q29yZTo6RmxvYXRSZWN0IHJlY3RJbkNvbnRlbnRDb29yZGluYXRlcywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6SW50ZXJhY3Rpb25SZWdpb24+KT4mJik7CisgICAgdm9p
ZCBuYXZpZ2F0ZVNlcnZpY2VXb3JrZXJDbGllbnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dElkZW50aWZpZXIsIGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVB
Y2Nlc3NpYmlsaXR5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCAyZmJkZWM4YjhjYzI0ZWEyMTJiYTJlYWMyNWNj
OWUzZGVkYWU1NjY2Li5lZTgxMTM4YzRiZmExNWEzMjhkOWE2YTg1ODUxODRmYTIzYTMzOTQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4KQEAgLTY4Myw0ICs2ODMsNiBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21t
YW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAg
IFNjcm9sbFRvUmVjdChXZWJDb3JlOjpGbG9hdFJlY3QgdGFyZ2V0UmVjdCwgV2ViQ29yZTo6Rmxv
YXRQb2ludCBvcmlnaW4pCiAKICAgICBJbnRlcmFjdGlvblJlZ2lvbnMoV2ViQ29yZTo6RmxvYXRS
ZWN0IHJlY3RJbkNvbnRlbnRDb29yZGluYXRlcykgLT4gKFZlY3RvcjxXZWJDb3JlOjpJbnRlcmFj
dGlvblJlZ2lvbj4gcmVnaW9ucykKKworICAgIE5hdmlnYXRlU2VydmljZVdvcmtlckNsaWVudChX
ZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBkb2N1bWVudElkZW50aWZp
ZXIsIFVSTCB1cmwpIC0+IChib29sIHJlc3VsdCkKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyMGJlOGViZmFlODk3MzNmZTBiMzEwNzJiNDlm
YjJkYmM5OWI2Y2NiLi5hYWViZDA2NzU0MmRiZGZmMTM4NGU1NDQ5MGQ5Y2ExOGM3ZmM0YTUyIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTIgQEAKKzIwMjItMDQtMDUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgor
CisgICAgICAgIEltcGxlbWVudCBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50Lm5hdmlnYXRlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg3MzgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tOgorCiAyMDIyLTA0
LTAyICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAg
W0NvY29hXSBBdXRvbWF0aWNhbGx5IHJlbGF5b3V0IHRoZSBwYWdlIHdoZW4gbmV3IGZvbnRzIGFy
ZSBpbnN0YWxsZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0KaW5kZXggMTVlZDZlZDQ4Mjg4MjBjZGEz
NTYxM2NhZWRhMDA5YmZjZTE5YjdhYi4uNjE4NTAwYjIzOGNkZjZiNWZlOTg5OWM0MzVhN2I3NWQx
YjJkNmMxNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9TZXJ2aWNlV29ya2VyQmFzaWMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0KQEAgLTI5NjYsMyArMjk2NiwxNzggQEAg
VEVTVChTZXJ2aWNlV29ya2VyLCBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50Rm9jdXNSZXF1aXJl
c1VzZXJHZXN0dXJlKQogICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAImZvY3VzQ2xp
ZW50KCkiIGNvbXBsZXRpb25IYW5kbGVyOiBuaWxdOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZG9uZSk7CiB9CisKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBTZXJ2aWNlV29ya2VyV2lu
ZG93Q2xpZW50TmF2aWdhdGVNYWluID0KKyI8ZGl2PnRlc3QgcGFnZTwvZGl2PiIKKyI8c2NyaXB0
PiIKKyJsZXQgd29ya2VyOyIKKyJhc3luYyBmdW5jdGlvbiByZWdpc3RlclNlcnZpY2VXb3JrZXIo
KSB7IgorIiAgICB0cnkgeyIKKyIgICAgICAgIGNvbnN0IHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5h
dmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKTsiCisiICAgICAgICBpZiAo
cmVnaXN0cmF0aW9uLmFjdGl2ZSkgeyIKKyIgICAgICAgICAgICB3b3JrZXIgPSByZWdpc3RyYXRp
b24uYWN0aXZlOyIKKyIgICAgICAgICAgICBhbGVydCgnYWxyZWFkeSBhY3RpdmUnKTsiCisiICAg
ICAgICAgICAgcmV0dXJuOyIKKyIgICAgICAgIH0iCisiICAgICAgICB3b3JrZXIgPSByZWdpc3Ry
YXRpb24uaW5zdGFsbGluZzsiCisiICAgICAgICB3b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignc3Rh
dGVjaGFuZ2UnLCAoKSA9PiB7IgorIiAgICAgICAgICAgIGlmICh3b3JrZXIuc3RhdGUgPT0gJ2Fj
dGl2YXRlZCcpIgorIiAgICAgICAgICAgICAgICBhbGVydCgnc3VjY2Vzc2Z1bGx5IHJlZ2lzdGVy
ZWQnKTsiCisiICAgICAgICB9KTsiCisiICAgIH0gY2F0Y2goZSkgeyIKKyIgICAgICAgIGFsZXJ0
KCdFeGNlcHRpb246ICcgKyBlKTsiCisiICAgIH0iCisifSIKKyJ3aW5kb3cub25sb2FkID0gcmVn
aXN0ZXJTZXJ2aWNlV29ya2VyOyIKKyIiCisiZnVuY3Rpb24gbmF2aWdhdGVPdGhlckNsaWVudFRv
VVJMKHVybCkgeyIKKyIgICAgd29ya2VyLnBvc3RNZXNzYWdlKHtuYXZpZ2F0ZU90aGVyQ2xpZW50
VG9VUkw6IHVybH0pOyIKKyIgICAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIub25tZXNzYWdlID0g
KGV2ZW50KSA9PiB7IgorIiAgICAgICAgYWxlcnQoZXZlbnQuZGF0YSk7IgorIiAgICB9OyIKKyJ9
IgorIjwvc2NyaXB0PiJfczsKKworc3RhdGljIGNvbnN0ZXhwciBhdXRvIFNlcnZpY2VXb3JrZXJX
aW5kb3dDbGllbnROYXZpZ2F0ZUpTID0KKyJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2Un
LCBhc3luYyAoZXZlbnQpID0+IHsiCisiICAgaWYgKGV2ZW50LmRhdGEgJiYgZXZlbnQuZGF0YS5u
YXZpZ2F0ZU90aGVyQ2xpZW50VG9VUkwpIHsiCisiICAgICAgIGxldCBvdGhlckNsaWVudDsiCisi
ICAgICAgIGxldCBjdXJyZW50Q2xpZW50cyA9IGF3YWl0IHNlbGYuY2xpZW50cy5tYXRjaEFsbCgp
OyIKKyIgICAgICAgZm9yIChsZXQgY2xpZW50IG9mIGN1cnJlbnRDbGllbnRzKSB7IgorIiAgICAg
ICAgICAgaWYgKGNsaWVudC5pZCAhPT0gZXZlbnQuc291cmNlLmlkKSIKKyIgICAgICAgICAgICAg
ICBvdGhlckNsaWVudCA9IGNsaWVudDsiCisiICAgICAgIH0iCisiICAgICAgIGlmICghb3RoZXJD
bGllbnQpIHsiCisiICAgICAgICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoJ2ZhaWxlZCwg
bm8gb3RoZXIgY2xpZW50LCBjbGllbnQgbnVtYmVyID0gJyArIGN1cnJlbnRDbGllbnRzLmxlbmd0
aCk7IgorIiAgICAgICAgICAgcmV0dXJuOyIKKyIgICAgICAgfSIKKyIgICAgICAgYXdhaXQgb3Ro
ZXJDbGllbnQubmF2aWdhdGUoZXZlbnQuZGF0YS5uYXZpZ2F0ZU90aGVyQ2xpZW50VG9VUkwpLnRo
ZW4oKGNsaWVudCkgPT4geyIKKyIgICAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZShj
bGllbnQgPyAnY2xpZW50JyA6ICdub25lJyk7IgorIiAgICAgICB9LCAoZSkgPT4geyIKKyIgICAg
ICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgnZmFpbGVkJyk7IgorIiAgICAgICB9KTsi
CisiICAgICAgIHJldHVybjsiCisiICAgfSIKKyJ9KTsiX3M7CisKKworQGludGVyZmFjZSBTZXJ2
aWNlV29ya2VyUFNPTk5hdmlnYXRpb25EZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25E
ZWxlZ2F0ZVByaXZhdGU+IHsKKyAgICBAcHVibGljIHZvaWQgKF5kZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKShXS05hdmlnYXRpb25BY3Rpb24gKiwgdm9pZCAoXikoV0tOYXZpZ2F0aW9u
QWN0aW9uUG9saWN5KSk7CisgICAgQHB1YmxpYyB2b2lkICheZGlkU3RhcnRQcm92aXNpb25hbE5h
dmlnYXRpb25IYW5kbGVyKSgpOworICAgIEBwdWJsaWMgdm9pZCAoXmRpZENvbW1pdE5hdmlnYXRp
b25IYW5kbGVyKSgpOworfQorQGVuZAorCitAaW1wbGVtZW50YXRpb24gU2VydmljZVdvcmtlclBT
T05OYXZpZ2F0aW9uRGVsZWdhdGUKKworLSAoaW5zdGFuY2V0eXBlKSBpbml0Cit7CisgICAgc2Vs
ZiA9IFtzdXBlciBpbml0XTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZCl3ZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdL
TmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gZGVjaXNpb25IYW5kbGVyOih2b2lk
ICheKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKWRlY2lzaW9uSGFuZGxlcgoreworICAgIGRl
Y2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdyk7Cit9CisKKy0gKHZv
aWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
UmVzcG9uc2U6KFdLTmF2aWdhdGlvblJlc3BvbnNlICopbmF2aWdhdGlvblJlc3BvbnNlIGRlY2lz
aW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpKWRlY2lzaW9u
SGFuZGxlcgoreworICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25SZXNwb25zZVBvbGlj
eUFsbG93KTsKK30KKworQGVuZAorCitURVNUKFNlcnZpY2VXb3JrZXIsIFdpbmRvd0NsaWVudE5h
dmlnYXRlKQoreworICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0ZURhdGFSZWNv
cmRzRm9yQWxsT3JpZ2luc107CisKKyAgICAvLyBTdGFydCB3aXRoIGEgY2xlYW4gc2xhdGUgZGF0
YSBzdG9yZQorICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIHJlbW92
ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9k
aWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgewor
ICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9
IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgZm9y
IChfV0tFeHBlcmltZW50YWxGZWF0dXJlICpmZWF0dXJlIGluIFtXS1ByZWZlcmVuY2VzIF9leHBl
cmltZW50YWxGZWF0dXJlc10pIHsKKyAgICAgICAgaWYgKFtmZWF0dXJlLmtleSBpc0VxdWFsVG9T
dHJpbmc6QCJDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuYWJsZWQiXSkKKyAgICAgICAgICAgIFtb
Y29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEVuYWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRh
bEZlYXR1cmU6ZmVhdHVyZV07CisgICAgICAgIGVsc2UgaWYgKFtmZWF0dXJlLmtleSBpc0VxdWFs
VG9TdHJpbmc6QCJDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5RW5hYmxlZCJdKQorICAgICAgICAg
ICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9yRXhwZXJp
bWVudGFsRmVhdHVyZTpmZWF0dXJlXTsKKyAgICB9CisKKyAgICBhdXRvIHdlYlZpZXcxID0gYWRv
cHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCAzMDAsIDMwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIGFkZFRvV2luZG93
OllFU10pOworICAgIGF1dG8gd2ViVmlldzIgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDMwMCwgMzAwKSBjb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb24uZ2V0KCkgYWRkVG9XaW5kb3c6WUVTXSk7CisKKyAgICBUZXN0V2ViS2l0
QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7CisgICAgICAgIHsgIi8iX3MsIHsgU2VydmljZVdvcmtl
cldpbmRvd0NsaWVudE5hdmlnYXRlTWFpbiB9IH0sCisgICAgICAgIHsgIi8/dGVzdCJfcywgeyBT
ZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50TmF2aWdhdGVNYWluIH0gfSwKKyAgICAgICAgeyAiLz9z
d2FwIl9zLCB7IHt7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9odG1sIl9zIH0sIHsg
IkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5Il9zLCAic2FtZS1vcmlnaW4iX3MgfSB9LCBTZXJ2
aWNlV29ya2VyV2luZG93Q2xpZW50TmF2aWdhdGVNYWluIH0gfSwKKyAgICAgICAgeyAiL3N3Lmpz
Il9zLCB7IHt7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH19
LCBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50TmF2aWdhdGVKUyB9IH0KKyAgICB9LCBUZXN0V2Vi
S2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cCwgbnVsbHB0ciwgbnVsbHB0ciwgODA5
MSk7CisKKyAgICBbd2ViVmlldzEgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAg
RVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3MSBfdGVzdF93YWl0Rm9yQWxlcnRdLCAic3VjY2Vzc2Z1
bGx5IHJlZ2lzdGVyZWQiKTsKKyAgICBbd2ViVmlldzIgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVl
c3QoKV07CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3MiBfdGVzdF93YWl0Rm9yQWxlcnRd
LCAiYWxyZWFkeSBhY3RpdmUiKTsKKworICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRv
cHROUyhbW1NlcnZpY2VXb3JrZXJQU09OTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7
CisgICAgW3dlYlZpZXcyIHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpuYXZpZ2F0aW9uRGVsZWdhdGUu
Z2V0KCldOworCisgICAgYXV0byAqYmFzZVVSTCA9IFtbc2VydmVyLnJlcXVlc3QoKSBVUkxdIGFi
c29sdXRlU3RyaW5nXTsKKworICAgIFt3ZWJWaWV3MSBldmFsdWF0ZUphdmFTY3JpcHQ6W05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJuYXZpZ2F0ZU90aGVyQ2xpZW50VG9VUkwoJyVAJykiLCBi
YXNlVVJMXSBjb21wbGV0aW9uSGFuZGxlcjogbmlsXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW3dl
YlZpZXcxIF90ZXN0X3dhaXRGb3JBbGVydF0sICJjbGllbnQiKTsKKworICAgIFt3ZWJWaWV3MiBs
b2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZp
ZXcyIF90ZXN0X3dhaXRGb3JBbGVydF0sICJhbHJlYWR5IGFjdGl2ZSIpOworICAgIFt3ZWJWaWV3
MSBldmFsdWF0ZUphdmFTY3JpcHQ6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJuYXZpZ2F0
ZU90aGVyQ2xpZW50VG9VUkwoJyVAP3Rlc3QnKSIsIGJhc2VVUkxdIGNvbXBsZXRpb25IYW5kbGVy
OiBuaWxdOworICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldzEgX3Rlc3Rfd2FpdEZvckFsZXJ0
XSwgImNsaWVudCIpOworCisgICAgW3dlYlZpZXcyIGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0
KCldOworICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldzIgX3Rlc3Rfd2FpdEZvckFsZXJ0XSwg
ImFscmVhZHkgYWN0aXZlIik7CisgICAgW3dlYlZpZXcxIGV2YWx1YXRlSmF2YVNjcmlwdDpbTlNT
dHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIm5hdmlnYXRlT3RoZXJDbGllbnRUb1VSTCgnJUAjdGVz
dCcpIiwgYmFzZVVSTF0gY29tcGxldGlvbkhhbmRsZXI6IG5pbF07CisgICAgRVhQRUNUX1dLX1NU
UkVRKFt3ZWJWaWV3MSBfdGVzdF93YWl0Rm9yQWxlcnRdLCAiY2xpZW50Iik7CisKKyAgICBbd2Vi
VmlldzIgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgRVhQRUNUX1dLX1NUUkVR
KFt3ZWJWaWV3MiBfdGVzdF93YWl0Rm9yQWxlcnRdLCAiYWxyZWFkeSBhY3RpdmUiKTsKKyAgICBb
d2ViVmlldzEgZXZhbHVhdGVKYXZhU2NyaXB0OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAi
bmF2aWdhdGVPdGhlckNsaWVudFRvVVJMKCclQD9zd2FwJykiLCBiYXNlVVJMXSBjb21wbGV0aW9u
SGFuZGxlcjogbmlsXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcxIF90ZXN0X3dhaXRG
b3JBbGVydF0sICJjbGllbnQiKTsKK30KKworVEVTVChTZXJ2aWNlV29ya2VyLCBXaW5kb3dDbGll
bnROYXZpZ2F0ZUNyb3NzT3JpZ2luKQoreworICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93
V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CisKKyAgICAvLyBTdGFydCB3aXRoIGEg
Y2xlYW4gc2xhdGUgZGF0YSBzdG9yZQorICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHRE
YXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0
ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9u
SGFuZGxlcjpeKCkgeworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIGF1dG8g
Y29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7CisKKyAgICBhdXRvIHdlYlZpZXcxID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAzMDAsIDMwMCkgY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uLmdldCgpIGFkZFRvV2luZG93OllFU10pOworICAgIGF1dG8gd2ViVmll
dzIgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDMwMCwgMzAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgYWRk
VG9XaW5kb3c6WUVTXSk7CisKKyAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcjEo
eworICAgICAgICB7ICIvIl9zLCB7IFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnROYXZpZ2F0ZU1h
aW4gfSB9LAorICAgICAgICB7ICIvP3Rlc3QiX3MsIHsgU2VydmljZVdvcmtlcldpbmRvd0NsaWVu
dE5hdmlnYXRlTWFpbiB9IH0sCisgICAgICAgIHsgIi8/c3dhcCJfcywgeyB7eyAiQ29udGVudC1U
eXBlIl9zLCAiYXBwbGljYXRpb24vaHRtbCJfcyB9LCB7ICJDcm9zcy1PcmlnaW4tT3BlbmVyLVBv
bGljeSJfcywgInNhbWUtb3JpZ2luIl9zIH0gfSwgU2VydmljZVdvcmtlcldpbmRvd0NsaWVudE5h
dmlnYXRlTWFpbiB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBl
Il9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwgU2VydmljZVdvcmtlcldpbmRvd0Ns
aWVudE5hdmlnYXRlSlMgfSB9CisgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJv
dG9jb2w6Okh0dHAsIG51bGxwdHIsIG51bGxwdHIsIDgwOTEpOworCisgICAgVGVzdFdlYktpdEFQ
STo6SFRUUFNlcnZlciBzZXJ2ZXIyKHsKKyAgICAgICAgeyAiLyJfcywgeyBTZXJ2aWNlV29ya2Vy
V2luZG93Q2xpZW50TmF2aWdhdGVNYWluIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHt7
ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH19LCBTZXJ2aWNl
V29ya2VyV2luZG93Q2xpZW50TmF2aWdhdGVKUyB9IH0KKyAgICB9LCBUZXN0V2ViS2l0QVBJOjpI
VFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cCwgbnVsbHB0ciwgbnVsbHB0ciwgOTA5MSk7CisKKyAg
ICBbd2ViVmlldzEgbG9hZFJlcXVlc3Q6c2VydmVyMS5yZXF1ZXN0KCldOworICAgIEVYUEVDVF9X
S19TVFJFUShbd2ViVmlldzEgX3Rlc3Rfd2FpdEZvckFsZXJ0XSwgInN1Y2Nlc3NmdWxseSByZWdp
c3RlcmVkIik7CisgICAgW3dlYlZpZXcyIGxvYWRSZXF1ZXN0OnNlcnZlcjEucmVxdWVzdCgpXTsK
KyAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcyIF90ZXN0X3dhaXRGb3JBbGVydF0sICJhbHJl
YWR5IGFjdGl2ZSIpOworICAgIFt3ZWJWaWV3MSBldmFsdWF0ZUphdmFTY3JpcHQ6W05TU3RyaW5n
IHN0cmluZ1dpdGhGb3JtYXQ6QCJuYXZpZ2F0ZU90aGVyQ2xpZW50VG9VUkwoJyVAJykiLCBbW3Nl
cnZlcjIucmVxdWVzdCgpIFVSTF0gYWJzb2x1dGVTdHJpbmddXSBjb21wbGV0aW9uSGFuZGxlcjog
bmlsXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcxIF90ZXN0X3dhaXRGb3JBbGVydF0s
ICJub25lIik7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggZGRhYjUyMDg4ZTljNmJiYWQwOWUxM2U4MTViOWQ5MDFiMjc3
MjA0My4uYzYyZmZhNGJjOGMzNTA5Njk4YmVjY2NjZmI2ZjdlMzNmMDIyOWM5OCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE2IEBACisyMDIyLTA0LTA1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KKworICAgICAgICBJbXBsZW1lbnQgU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5uYXZpZ2F0
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NzM4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRw
L3dwdC9zZXJ2aWNlLXdvcmtlcnMvbmF2aWdhdGUtaWZyYW1lcy13aW5kb3ctY2xpZW50Lmh0dHBz
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvc2VydmljZS13b3JrZXJz
L25hdmlnYXRlLWlmcmFtZXMtd2luZG93LWNsaWVudC5odHRwcy5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvbmF2aWdhdGUtd2luZG93LWNsaWVudC13b3Jr
ZXIuanM6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvd2luZG93Y2xpZW50
LW5hdmlnYXRlLmh0dHBzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjItMDQtMDQgIFlvdWVubiBGYWJsZXQg
IDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFNlcnZpY2UtV29ya2VyLU5hdmlnYXRpb24t
UHJlbG9hZCBoZWFkZXIgbm90IGJlaW5nIHNlbnQgd2hlbiBOYXZpZ2F0aW9uIFByZWxvYWQgaXMg
ZW5hYmxlZC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDEzZmI0OWJkNzk2Yzkx
OTFkZjZmN2YzNDI0YzMxOTY2ODBmYWEyOWQuLjUyMmEwZTliMDUxNmQzOWI0MjhhNjg3NDMzMjA3
NmE5ZjJiOWM5NGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEy
IEBACisyMDIyLTA0LTA1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAg
ICAgICBJbXBsZW1lbnQgU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5uYXZpZ2F0ZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NzM4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0t
dGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3dpbmRvd2NsaWVudC1uYXZpZ2F0
ZS5odHRwcy1leHBlY3RlZC50eHQ6CisKIDIwMjItMDQtMDQgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgogCiAgICAgICAgIENPUlM6IEFsbG93IHBhcnRpY3VsYXIgUmFuZ2UgaGVh
ZGVyIHZhbHVlcyB3aXRob3V0IGEgcHJlZmxpZ2h0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvbmF2aWdhdGUtaWZyYW1lcy13aW5kb3ctY2xpZW50Lmh0
dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9u
YXZpZ2F0ZS1pZnJhbWVzLXdpbmRvdy1jbGllbnQuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmM1YzkyMmE0MzA5MGExZmM1MDVhYzg0OTg5OTg2MDc4NTRkNmE0OGMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvbmF2aWdhdGUtaWZy
YW1lcy13aW5kb3ctY2xpZW50Lmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKKwor
CitQQVNTIFNldHVwIGFjdGl2YXRpbmcgd29ya2VyCitQQVNTIE5hdmlnYXRlIHRvIHNhbWUgb3Jp
Z2luCitQQVNTIE5hdmlnYXRlIHRvIHNhbWUgVVJMCitQQVNTIE5hdmlnYXRlIHRvIHNhbWUgZG9j
dW1lbnQgZnJhZ21lbnQKK1BBU1MgTmF2aWdhdGUgdG8gY3Jvc3Mgb3JpZ2luCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9uYXZpZ2F0ZS1pZnJhbWVz
LXdpbmRvdy1jbGllbnQuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Ut
d29ya2Vycy9uYXZpZ2F0ZS1pZnJhbWVzLXdpbmRvdy1jbGllbnQuaHR0cHMuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xNzFkNzU5ODNhMDVjN2U5NTgxMDg4MDJiYTg2OTljZTZhNzE3M2EwCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL25hdmlnYXRlLWlm
cmFtZXMtd2luZG93LWNsaWVudC5odHRwcy5odG1sCkBAIC0wLDAgKzEsODIgQEAKKzwhZG9jdHlw
ZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvY29tbW9uL3V0aWxzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcm91dGluZXMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvcmVzb3VyY2VzL3Rlc3QtaGVs
cGVycy5zdWIuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgordmFyIHVy
bCA9IG5ldyBVUkwoIi9XZWJLaXQvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy8iLCBsb2NhdGlv
bik7Cit1cmwgPSB1cmwudG9TdHJpbmcoKTsKK3ZhciBhY3RpdmVXb3JrZXI7CisKK3Byb21pc2Vf
dGVzdChhc3luYyAodGVzdCkgPT4geworICAgIGxldCByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZp
Z2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcigiL1dlYktpdC9zZXJ2aWNlLXdvcmtlcnMvbmF2
aWdhdGUtd2luZG93LWNsaWVudC13b3JrZXIuanMiLCB7IHNjb3BlIDogdXJsIH0pOworICAgIGlm
ICghcmVnaXN0cmF0aW9uLmluc3RhbGxpbmcpIHsKKyAgICAgICAgcmVnaXN0cmF0aW9uLnVucmVn
aXN0ZXIoKTsKKyAgICAgICAgcmVnaXN0cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VX
b3JrZXIucmVnaXN0ZXIoIi9XZWJLaXQvc2VydmljZS13b3JrZXJzL25hdmlnYXRlLXdpbmRvdy1j
bGllbnQtd29ya2VyLmpzIiwgeyBzY29wZSA6IHVybCB9KTsKKyAgICB9CisgICAgYWN0aXZlV29y
a2VyID0gcmVnaXN0cmF0aW9uLmluc3RhbGxpbmc7CisgICAgYXdhaXQgd2FpdEZvclN0YXRlKGFj
dGl2ZVdvcmtlciwgImFjdGl2YXRpbmciKTsKKyAgICBhY3RpdmVXb3JrZXIgPSByZWdpc3RyYXRp
b24uYWN0aXZlOworfSwgIlNldHVwIGFjdGl2YXRpbmcgd29ya2VyIik7CisKK3Byb21pc2VfdGVz
dChhc3luYyAodGVzdCkgPT4geworICAgIGNvbnN0IGlmcmFtZSA9IGF3YWl0IHdpdGhJZnJhbWUo
dXJsKTsKKworICAgIGFjdGl2ZVdvcmtlci5wb3N0TWVzc2FnZSh7bmF2aWdhdGU6IHVybCArICI/
dGVzdCJ9KTsKKyAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+
IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShl
dmVudC5kYXRhKSk7CisgICAgYXNzZXJ0X3RydWUocmVzdWx0LnVybC5pbmNsdWRlcygiP3Rlc3Qi
KSk7CisKKyAgICBpZnJhbWUucmVtb3ZlKCk7Cit9LCAiTmF2aWdhdGUgdG8gc2FtZSBvcmlnaW4i
KTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgY29uc3QgaWZyYW1lID0g
YXdhaXQgd2l0aElmcmFtZSh1cmwpOworCisgICAgYWN0aXZlV29ya2VyLnBvc3RNZXNzYWdlKCJn
ZXQtY2xpZW50Iik7CisgICAgY29uc3QgY2xpZW50MSA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29s
dmUgPT4gbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNv
bHZlKGV2ZW50LmRhdGEpKTsKKworICAgIGFjdGl2ZVdvcmtlci5wb3N0TWVzc2FnZSh7bmF2aWdh
dGU6IHVybH0pOworICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUg
PT4gbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZl
KGV2ZW50LmRhdGEpKTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC51cmwsIHVybCk7CisKKyAg
ICBhY3RpdmVXb3JrZXIucG9zdE1lc3NhZ2UoImdldC1jbGllbnQiKTsKKyAgICBjb25zdCBjbGll
bnQyID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBuYXZpZ2F0b3Iuc2VydmljZVdvcmtl
ci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJlc29sdmUoZXZlbnQuZGF0YSkpOworCisgICAgYXNz
ZXJ0X25vdF9lcXVhbHMoY2xpZW50MS5pZCwgY2xpZW50Mi5pZCk7CisKKyAgICBpZnJhbWUucmVt
b3ZlKCk7Cit9LCAiTmF2aWdhdGUgdG8gc2FtZSBVUkwiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5j
ICh0ZXN0KSA9PiB7CisgICAgY29uc3QgaWZyYW1lID0gYXdhaXQgd2l0aElmcmFtZSh1cmwpOwor
CisgICAgYWN0aXZlV29ya2VyLnBvc3RNZXNzYWdlKCJnZXQtY2xpZW50Iik7CisgICAgY29uc3Qg
Y2xpZW50MSA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gbmF2aWdhdG9yLnNlcnZpY2VX
b3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKworICAg
IGFjdGl2ZVdvcmtlci5wb3N0TWVzc2FnZSh7bmF2aWdhdGU6IHVybCArICIjdGVzdCJ9KTsKKyAg
ICBjb25zdCByZXN1bHQgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IG5hdmlnYXRvci5z
ZXJ2aWNlV29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShldmVudC5kYXRhKSk7
CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQudXJsLCB1cmwpOworCisgICAgYWN0aXZlV29ya2Vy
LnBvc3RNZXNzYWdlKCJnZXQtY2xpZW50Iik7CisgICAgY29uc3QgY2xpZW50MiA9IGF3YWl0IG5l
dyBQcm9taXNlKHJlc29sdmUgPT4gbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIub25tZXNzYWdlID0g
KGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKworICAgIGFzc2VydF9lcXVhbHMoY2xp
ZW50MS5pZCwgY2xpZW50Mi5pZCk7CisKKyAgICBpZnJhbWUucmVtb3ZlKCk7Cit9LCAiTmF2aWdh
dGUgdG8gc2FtZSBkb2N1bWVudCBmcmFnbWVudCIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRl
c3QpID0+IHsKKyAgICBjb25zdCBpZnJhbWUgPSBhd2FpdCB3aXRoSWZyYW1lKHVybCk7CisKKyAg
ICBhY3RpdmVXb3JrZXIucG9zdE1lc3NhZ2Uoe25hdmlnYXRlOiAiaHR0cHM6Ly8xMjcuMC4wLjE6
OTQ0MyIgfSk7CisgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9
PiBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJlc29sdmUo
ZXZlbnQuZGF0YSkpOworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCAibm9uZSIpOworfSwgIk5h
dmlnYXRlIHRvIGNyb3NzIG9yaWdpbiIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvbmF2aWdhdGUt
d2luZG93LWNsaWVudC13b3JrZXIuanMgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdv
cmtlcnMvbmF2aWdhdGUtd2luZG93LWNsaWVudC13b3JrZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTUwZThl
MGQxMGRmOGJmYjBkYzY1ZDBkNjE3NDczMTZmZDUzZDAxMAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9uYXZpZ2F0ZS13aW5kb3ctY2xpZW50
LXdvcmtlci5qcwpAQCAtMCwwICsxLDI1IEBACitvbm1lc3NhZ2UgPSBhc3luYyAoZXZlbnQpID0+
IHsKKyAgICBpZiAoZXZlbnQuZGF0YSA9PT0gImdldC1jbGllbnQiKSB7CisgICAgICAgIGNvbnN0
IGNsaWVudHMgPSBhd2FpdCBzZWxmLmNsaWVudHMubWF0Y2hBbGwoKTsKKyAgICAgICAgaWYgKCFj
bGllbnRzLmxlbmd0aCkgeworICAgICAgICAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCJu
byBjbGllbnQiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBldmVu
dC5zb3VyY2UucG9zdE1lc3NhZ2UoeyBpZDogY2xpZW50c1swXS5pZCwgdXJsOiBjbGllbnRzWzBd
LnVybCB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChldmVudC5kYXRhICYm
IGV2ZW50LmRhdGEubmF2aWdhdGUpIHsKKyAgICAgICAgY29uc3QgY2xpZW50cyA9IGF3YWl0IHNl
bGYuY2xpZW50cy5tYXRjaEFsbCgpOworICAgICAgICBpZiAoIWNsaWVudHMubGVuZ3RoKSB7Cisg
ICAgICAgICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoImZhaWxlZCwgbm8gY2xpZW50cyIp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGF3YWl0IGNsaWVudHNb
MF0ubmF2aWdhdGUoZXZlbnQuZGF0YS5uYXZpZ2F0ZSkudGhlbigoY2xpZW50KSA9PiB7CisgICAg
ICAgICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoY2xpZW50ID8geyBpZDogY2xpZW50Lmlk
LCB1cmw6IGNsaWVudC51cmwgfSA6ICJub25lIik7CisgICAgICAgIH0sIChlKSA9PiB7CisgICAg
ICAgICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoImZhaWxlZCIpOworICAgICAgICB9KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KK307CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtl
ci93aW5kb3djbGllbnQtbmF2aWdhdGUuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13
b3JrZXIvd2luZG93Y2xpZW50LW5hdmlnYXRlLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCAxOTI1
NDZlZDg3MDAyYzMxMjY2MWZjNDk0NmFhMDUwNjA3ZTMzYTkyLi41ZDA3OWZkODM2ZmZlMGNjYzM5
ZGVjMjU2MTZhNmViMzc5NzM4ZWVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci93aW5k
b3djbGllbnQtbmF2aWdhdGUuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29y
a2VyL3dpbmRvd2NsaWVudC1uYXZpZ2F0ZS5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEwLDI5ICsx
MCwxNSBAQCBQQVNTIGludmFsaWQgdXJsICh2aWV3LXNvdXJjZTovL2V4YW1wbGUuY29tKQogUEFT
UyBpbnZhbGlkIHVybCAoZmlsZTovLy8pCiBQQVNTIGludmFsaWQgdXJsIChhYm91dDpibGFuaykK
IFBBU1MgbmF2aWdhdGUgb24gYSB0b3AtbGV2ZWwgd2luZG93IGNsaWVudAotRkFJTCBub3JtYWwg
d29ya2VyIHNpZGUgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6
IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IHdpbmRvd0NsaWVudC5uYXZpZ2F0ZSgpIGlzIG5v
dCB5ZXQgc3VwcG9ydGVkIgotRkFJTCBibGFuayB1cmwgd29ya2VyIHNpZGUgcHJvbWlzZV90ZXN0
OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiTm90U3VwcG9ydGVkRXJy
b3I6IHdpbmRvd0NsaWVudC5uYXZpZ2F0ZSgpIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIgotRkFJTCBp
biBzY29wZSBidXQgbm90IGNvbnRyb2xsZWQgdGVzdCBvbiBpbnN0YWxsaW5nIHdvcmtlciB3b3Jr
ZXIgc2lkZSBwcm9taXNlX3JlamVjdHNfanM6IGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRocm93
IGUgfSIgdGhyZXcgb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogd2luZG93Q2xpZW50Lm5hdmln
YXRlKCkgaXMgbm90IHlldCBzdXBwb3J0ZWQiICgiTm90U3VwcG9ydGVkRXJyb3IiKSBleHBlY3Rl
ZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gVHlwZUVycm9yKCkgewotICAgIFtuYXRp
dmUgY29kZV0KLX0iICgiVHlwZUVycm9yIikKLUZBSUwgaW4gc2NvcGUgYnV0IG5vdCBjb250cm9s
bGVkIHRlc3Qgb24gYWN0aXZlIHdvcmtlciB3b3JrZXIgc2lkZSBwcm9taXNlX3JlamVjdHNfanM6
IGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcgb2JqZWN0ICJOb3RTdXBw
b3J0ZWRFcnJvcjogd2luZG93Q2xpZW50Lm5hdmlnYXRlKCkgaXMgbm90IHlldCBzdXBwb3J0ZWQi
ICgiTm90U3VwcG9ydGVkRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVu
Y3Rpb24gVHlwZUVycm9yKCkgewotICAgIFtuYXRpdmUgY29kZV0KLX0iICgiVHlwZUVycm9yIikK
LUZBSUwgb3V0IG9mIHNjb3BlIHdvcmtlciBzaWRlIHByb21pc2VfcmVqZWN0c19qczogZnVuY3Rp
b24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyBvYmplY3QgIk5vdFN1cHBvcnRlZEVy
cm9yOiB3aW5kb3dDbGllbnQubmF2aWdhdGUoKSBpcyBub3QgeWV0IHN1cHBvcnRlZCIgKCJOb3RT
dXBwb3J0ZWRFcnJvciIpIGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBU
eXBlRXJyb3IoKSB7Ci0gICAgW25hdGl2ZSBjb2RlXQotfSIgKCJUeXBlRXJyb3IiKQotRkFJTCBj
cm9zcyBvcmdpbiB1cmwgd29ya2VyIHNpZGUgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0
aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IHdpbmRvd0NsaWVudC5u
YXZpZ2F0ZSgpIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIgotRkFJTCBpbnZhbGlkIHVybCAoaHR0cDov
L1tleGFtcGxlLmNvbV0pIHdvcmtlciBzaWRlIHByb21pc2VfcmVqZWN0c19qczogZnVuY3Rpb24g
ImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9y
OiB3aW5kb3dDbGllbnQubmF2aWdhdGUoKSBpcyBub3QgeWV0IHN1cHBvcnRlZCIgKCJOb3RTdXBw
b3J0ZWRFcnJvciIpIGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBl
RXJyb3IoKSB7Ci0gICAgW25hdGl2ZSBjb2RlXQotfSIgKCJUeXBlRXJyb3IiKQotRkFJTCBpbnZh
bGlkIHVybCAodmlldy1zb3VyY2U6Ly9leGFtcGxlLmNvbSkgd29ya2VyIHNpZGUgcHJvbWlzZV9y
ZWplY3RzX2pzOiBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0iIHRocmV3IG9iamVj
dCAiTm90U3VwcG9ydGVkRXJyb3I6IHdpbmRvd0NsaWVudC5uYXZpZ2F0ZSgpIGlzIG5vdCB5ZXQg
c3VwcG9ydGVkIiAoIk5vdFN1cHBvcnRlZEVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVu
Y3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKLSAgICBbbmF0aXZlIGNvZGVdCi19IiAoIlR5
cGVFcnJvciIpCi1GQUlMIGludmFsaWQgdXJsIChmaWxlOi8vLykgd29ya2VyIHNpZGUgcHJvbWlz
ZV9yZWplY3RzX2pzOiBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0iIHRocmV3IG9i
amVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IHdpbmRvd0NsaWVudC5uYXZpZ2F0ZSgpIGlzIG5vdCB5
ZXQgc3VwcG9ydGVkIiAoIk5vdFN1cHBvcnRlZEVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2Yg
ZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKLSAgICBbbmF0aXZlIGNvZGVdCi19IiAo
IlR5cGVFcnJvciIpCi1GQUlMIGludmFsaWQgdXJsIChhYm91dDpibGFuaykgd29ya2VyIHNpZGUg
cHJvbWlzZV9yZWplY3RzX2pzOiBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0iIHRo
cmV3IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IHdpbmRvd0NsaWVudC5uYXZpZ2F0ZSgpIGlz
IG5vdCB5ZXQgc3VwcG9ydGVkIiAoIk5vdFN1cHBvcnRlZEVycm9yIikgZXhwZWN0ZWQgaW5zdGFu
Y2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKLSAgICBbbmF0aXZlIGNvZGVd
Ci19IiAoIlR5cGVFcnJvciIpCitQQVNTIG5vcm1hbCB3b3JrZXIgc2lkZQorUEFTUyBibGFuayB1
cmwgd29ya2VyIHNpZGUKK1BBU1MgaW4gc2NvcGUgYnV0IG5vdCBjb250cm9sbGVkIHRlc3Qgb24g
aW5zdGFsbGluZyB3b3JrZXIgd29ya2VyIHNpZGUKK1BBU1MgaW4gc2NvcGUgYnV0IG5vdCBjb250
cm9sbGVkIHRlc3Qgb24gYWN0aXZlIHdvcmtlciB3b3JrZXIgc2lkZQorUEFTUyBvdXQgb2Ygc2Nv
cGUgd29ya2VyIHNpZGUKK1BBU1MgY3Jvc3Mgb3JnaW4gdXJsIHdvcmtlciBzaWRlCitQQVNTIGlu
dmFsaWQgdXJsIChodHRwOi8vW2V4YW1wbGUuY29tXSkgd29ya2VyIHNpZGUKK1BBU1MgaW52YWxp
ZCB1cmwgKHZpZXctc291cmNlOi8vZXhhbXBsZS5jb20pIHdvcmtlciBzaWRlCitQQVNTIGludmFs
aWQgdXJsIChmaWxlOi8vLykgd29ya2VyIHNpZGUKK1BBU1MgaW52YWxpZCB1cmwgKGFib3V0OmJs
YW5rKSB3b3JrZXIgc2lkZQogRkFJTCBuYXZpZ2F0ZSBvbiBhIHRvcC1sZXZlbCB3aW5kb3cgY2xp
ZW50IHdvcmtlciBzaWRlIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJ0b3AtbGV2ZWwiIGJ1dCBn
b3QgImF1eGlsaWFyeSIKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdv
cmtlci93aW5kb3djbGllbnQtbmF2aWdhdGUuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ2xpYi9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Ut
d29ya2Vycy9zZXJ2aWNlLXdvcmtlci93aW5kb3djbGllbnQtbmF2aWdhdGUuaHR0cHMtZXhwZWN0
ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTI1NDZlZDg3MDAyYzMxMjY2
MWZjNDk0NmFhMDUwNjA3ZTMzYTkyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvd2luZG93Y2xpZW50
LW5hdmlnYXRlLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAg
QEAKLQotUEFTUyBub3JtYWwKLVBBU1MgYmxhbmsgdXJsCi1QQVNTIGluIHNjb3BlIGJ1dCBub3Qg
Y29udHJvbGxlZCB0ZXN0IG9uIGluc3RhbGxpbmcgd29ya2VyCi1QQVNTIGluIHNjb3BlIGJ1dCBu
b3QgY29udHJvbGxlZCB0ZXN0IG9uIGFjdGl2ZSB3b3JrZXIKLVBBU1Mgb3V0IG9mIHNjb3BlCi1Q
QVNTIGNyb3NzIG9yZ2luIHVybAotUEFTUyBpbnZhbGlkIHVybCAoaHR0cDovL1tleGFtcGxlLmNv
bV0pCi1QQVNTIGludmFsaWQgdXJsICh2aWV3LXNvdXJjZTovL2V4YW1wbGUuY29tKQotUEFTUyBp
bnZhbGlkIHVybCAoZmlsZTovLy8pCi1QQVNTIGludmFsaWQgdXJsIChhYm91dDpibGFuaykKLVBB
U1MgbmF2aWdhdGUgb24gYSB0b3AtbGV2ZWwgd2luZG93IGNsaWVudAotRkFJTCBub3JtYWwgd29y
a2VyIHNpZGUgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9i
amVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IHdpbmRvd0NsaWVudC5uYXZpZ2F0ZSgpIGlzIG5vdCB5
ZXQgc3VwcG9ydGVkIgotRkFJTCBibGFuayB1cmwgd29ya2VyIHNpZGUgcHJvbWlzZV90ZXN0OiBV
bmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6
IHdpbmRvd0NsaWVudC5uYXZpZ2F0ZSgpIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIgotRkFJTCBpbiBz
Y29wZSBidXQgbm90IGNvbnRyb2xsZWQgdGVzdCBvbiBpbnN0YWxsaW5nIHdvcmtlciB3b3JrZXIg
c2lkZSBwcm9taXNlX3JlamVjdHNfanM6IGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUg
fSIgdGhyZXcgb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogd2luZG93Q2xpZW50Lm5hdmlnYXRl
KCkgaXMgbm90IHlldCBzdXBwb3J0ZWQiICgiTm90U3VwcG9ydGVkRXJyb3IiKSBleHBlY3RlZCBp
bnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gVHlwZUVycm9yKCkgewotICAgIFtuYXRpdmUg
Y29kZV0KLX0iICgiVHlwZUVycm9yIikKLUZBSUwgaW4gc2NvcGUgYnV0IG5vdCBjb250cm9sbGVk
IHRlc3Qgb24gYWN0aXZlIHdvcmtlciB3b3JrZXIgc2lkZSBwcm9taXNlX3JlamVjdHNfanM6IGZ1
bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcgb2JqZWN0ICJOb3RTdXBwb3J0
ZWRFcnJvcjogd2luZG93Q2xpZW50Lm5hdmlnYXRlKCkgaXMgbm90IHlldCBzdXBwb3J0ZWQiICgi
Tm90U3VwcG9ydGVkRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rp
b24gVHlwZUVycm9yKCkgewotICAgIFtuYXRpdmUgY29kZV0KLX0iICgiVHlwZUVycm9yIikKLUZB
SUwgb3V0IG9mIHNjb3BlIHdvcmtlciBzaWRlIHByb21pc2VfcmVqZWN0c19qczogZnVuY3Rpb24g
ImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9y
OiB3aW5kb3dDbGllbnQubmF2aWdhdGUoKSBpcyBub3QgeWV0IHN1cHBvcnRlZCIgKCJOb3RTdXBw
b3J0ZWRFcnJvciIpIGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBl
RXJyb3IoKSB7Ci0gICAgW25hdGl2ZSBjb2RlXQotfSIgKCJUeXBlRXJyb3IiKQotRkFJTCBjcm9z
cyBvcmdpbiB1cmwgd29ya2VyIHNpZGUgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9u
IHdpdGggdmFsdWU6IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IHdpbmRvd0NsaWVudC5uYXZp
Z2F0ZSgpIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIgotRkFJTCBpbnZhbGlkIHVybCAoaHR0cDovL1tl
eGFtcGxlLmNvbV0pIHdvcmtlciBzaWRlIHByb21pc2VfcmVqZWN0c19qczogZnVuY3Rpb24gImZ1
bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiB3
aW5kb3dDbGllbnQubmF2aWdhdGUoKSBpcyBub3QgeWV0IHN1cHBvcnRlZCIgKCJOb3RTdXBwb3J0
ZWRFcnJvciIpIGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJy
b3IoKSB7Ci0gICAgW25hdGl2ZSBjb2RlXQotfSIgKCJUeXBlRXJyb3IiKQotRkFJTCBpbnZhbGlk
IHVybCAodmlldy1zb3VyY2U6Ly9leGFtcGxlLmNvbSkgd29ya2VyIHNpZGUgcHJvbWlzZV9yZWpl
Y3RzX2pzOiBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0iIHRocmV3IG9iamVjdCAi
Tm90U3VwcG9ydGVkRXJyb3I6IHdpbmRvd0NsaWVudC5uYXZpZ2F0ZSgpIGlzIG5vdCB5ZXQgc3Vw
cG9ydGVkIiAoIk5vdFN1cHBvcnRlZEVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rp
b24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKLSAgICBbbmF0aXZlIGNvZGVdCi19IiAoIlR5cGVF
cnJvciIpCi1GQUlMIGludmFsaWQgdXJsIChmaWxlOi8vLykgd29ya2VyIHNpZGUgcHJvbWlzZV9y
ZWplY3RzX2pzOiBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0iIHRocmV3IG9iamVj
dCAiTm90U3VwcG9ydGVkRXJyb3I6IHdpbmRvd0NsaWVudC5uYXZpZ2F0ZSgpIGlzIG5vdCB5ZXQg
c3VwcG9ydGVkIiAoIk5vdFN1cHBvcnRlZEVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVu
Y3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKLSAgICBbbmF0aXZlIGNvZGVdCi19IiAoIlR5
cGVFcnJvciIpCi1GQUlMIGludmFsaWQgdXJsIChhYm91dDpibGFuaykgd29ya2VyIHNpZGUgcHJv
bWlzZV9yZWplY3RzX2pzOiBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0iIHRocmV3
IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IHdpbmRvd0NsaWVudC5uYXZpZ2F0ZSgpIGlzIG5v
dCB5ZXQgc3VwcG9ydGVkIiAoIk5vdFN1cHBvcnRlZEVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ug
b2YgZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKLSAgICBbbmF0aXZlIGNvZGVdCi19
IiAoIlR5cGVFcnJvciIpCi1GQUlMIG5hdmlnYXRlIG9uIGEgdG9wLWxldmVsIHdpbmRvdyBjbGll
bnQgd29ya2VyIHNpZGUgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgInRvcC1sZXZlbCIgYnV0IGdv
dCAiYXV4aWxpYXJ5IgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sy
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBl
Y3RhdGlvbnMKaW5kZXggMTNkZWZiNDc2MTE1MDdhNGVkODE0ODkyYjNhMmM2OWM5OTlmMDFhYy4u
ZTFkZmFiZjZmY2IyYTdhMGYyZGM5NTY0YTUyNjNjNmU1MTBlZTI4NyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtOTI0LDcgKzkyNCw3IEBA
IHdlYmtpdC5vcmcvYi8xODE4MzkgWyBEZWJ1ZyBdIGluc3BlY3Rvci9kZWJ1Z2dlci9icmVha3Bv
aW50LWFjdGlvbi1sb2cuaHRtbCBbIFBhCiAKIHdlYmtpdC5vcmcvYi8yMzA0MTIgaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvY2xp
ZW50cy1tYXRjaGFsbC1jbGllbnQtdHlwZXMuaHR0cHMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAK
LXdlYmtpdC5vcmcvYi8xNzkzNTIgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2
aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvd2luZG93Y2xpZW50LW5hdmlnYXRlLmh0dHBzLmh0
bWwgWyBQYXNzIEZhaWx1cmUgU2xvdyBdCit3ZWJraXQub3JnL2IvMTc5MzUyIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3dpbmRv
d2NsaWVudC1uYXZpZ2F0ZS5odHRwcy5odG1sIFsgU2xvdyBdCiAKIHdlYmtpdC5vcmcvYi8xODMx
NjQgZmFzdC9kb20vV2luZG93L3dpbmRvdy1mb2N1cy1zZWxmLmh0bWwgWyBQYXNzIEZhaWx1cmUg
XQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456696</attachid>
            <date>2022-04-05 06:01:40 -0700</date>
            <delta_ts>2022-04-05 08:39:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238738-20220405150138.patch</filename>
            <type>text/plain</type>
            <size>73250</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGU0NjQ4YWFlM2VkYmU4
NTVkYmJiMzRhOWQ5M2QyNzc5NjVmY2YwOC4uMmJlM2JlMzgwZGU0N2JiYjhjNDY5YWMxMzRlNTc3
YWJiNWQwM2ZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIyLTA0LTA1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgU2Vydmlj
ZVdvcmtlcldpbmRvd0NsaWVudC5uYXZpZ2F0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NzM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIGEgcm91dGluZSB0byBuYXZpZ2F0ZSBhIERv
Y3VtZW50LgorICAgICAgICBTZW5kIEZyYW1lSWRlbnRpZmllciBhcyBwYXJ0IG9mIFNlcnZpY2VX
b3JrZXJDbGllbnREYXRhLgorICAgICAgICBJbXBsZW1lbnQgU2VydmljZVdvcmtlcldpbmRvd0Ns
aWVudDo6bmF2aWdhdGUgYnkgc2VuZGluZyBJUEMgdG8gbmV0d29yayBwcm9jZXNzLgorCisgICAg
ICAgIFRlc3Q6IGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9uYXZpZ2F0ZS1pZnJhbWVzLXdpbmRv
dy1jbGllbnQuaHR0cHMuaHRtbAorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5jcHA6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmg6CisgICAg
ICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuY3BwOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaDoKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlcldvcmtlci5oOgorCiAyMDIyLTA0LTA0ICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBDT1JTOiBBbGxvdyBwYXJ0aWN1bGFyIFJhbmdlIGhl
YWRlciB2YWx1ZXMgd2l0aG91dCBhIHByZWZsaWdodApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1ZTJjMjdlNmFhYzE2
MDUyOTc2NGM2ZTdjZWQ3ZTM3MzhiNWQ5ZjNjLi43MTYyMTk2MjM4NjY2YmM4OWZiNzJhYzNhZWRl
YzViNDZiYTkzMjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIyLTA0LTA1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgU2Vydmlj
ZVdvcmtlcldpbmRvd0NsaWVudC5uYXZpZ2F0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NzM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2hlbiByZWNlaXZpbmcgYSByZXF1ZXN0IHRvIG5hdmlnYXRl
IGEgY2xpZW50LCBzZW5kIG1lc3NhZ2UgdG8gVUlQcm9jZXNzLgorICAgICAgICBVSVByb2Nlc3Mg
bG9jYXRlcyB0aGUgV2ViRnJhbWVQcm94eSB3aGljaCB3aWxsIHNlbmQgYW4gSVBDIG1lc3NhZ2Ug
dG8gdGhlIFdlYlByb2Nlc3MgdG8gZG8gbmF2aWdhdGlvbi4KKyAgICAgICAgV2Uga2VlcCB0cmFj
ayBvZiB0aGUgbmF2aWdhdGlvbiB3aXRoaW4gV2ViRnJhbWVQcm94eS4KKyAgICAgICAgSW4gY2Fz
ZSBvZiBwcm9jZXNzIHN3YXBwaW5nLCB3ZSBtYWtlIHN1cmUgdG8gdHJhbnNmZXIgdGhlIFdlYkZy
YW1lUHJveHkgY2FsbGJhY2suCisgICAgICAgIEluIGNhc2Ugb2YgcG9saWN5IGRlY2lzaW9uIHRv
IHN0b3AgbG9hZHMsIHdlIHJlc29sdmUgdGhlIHByb21pc2Ugd2l0aCBhbiBlbXB0eSBjbGllbnQu
CisgICAgICAgIEEgZm9sbG93LXVwIHBhdGNoIG1heSByZWplY3QgdGhlIHByb21pc2Ugb25jZSB0
aGUgZXhwZWN0ZWQgYmVoYXZpb3Igd2lsbCBiZSBjbGFyaWZpZWQuCisKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHA6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24u
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNz
YWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViRnJhbWVQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluOgorCiAyMDIyLTA0LTA0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4K
IAogICAgICAgICBTZXJ2aWNlLVdvcmtlci1OYXZpZ2F0aW9uLVByZWxvYWQgaGVhZGVyIG5vdCBi
ZWluZyBzZW50IHdoZW4gTmF2aWdhdGlvbiBQcmVsb2FkIGlzIGVuYWJsZWQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAppbmRleCBkMTYyMThkNjYyNTYxZTY3ZDJkYzY2YjViYzY2MjJhYjg5ZTE2YTBm
Li41NWNmNWJjYjAyZTMyNDY5ODMwMTIwZTUwMTIwYTA1YmRlZGViOGRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKQEAgLTg0MTQsNyArODQxNCw3IEBAIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IERvY3VtZW50OjpwYWdlSUQoKSBjb25zdAogCiBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRl
bnRpZmllcj4gRG9jdW1lbnQ6OmZyYW1lSUQoKSBjb25zdAogewotICAgIHJldHVybiBtX2ZyYW1l
LT5sb2FkZXIoKS5mcmFtZUlEKCk7CisgICAgcmV0dXJuIG1fZnJhbWUgPyBtX2ZyYW1lLT5sb2Fk
ZXIoKS5mcmFtZUlEKCkgOiBzdGQ6Om51bGxvcHQ7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnJlZ2lz
dGVyQXJ0aWNsZUVsZW1lbnQoRWxlbWVudCYgYXJ0aWNsZSkKQEAgLTg3ODAsNiArODc4MCwyNCBA
QCB2b2lkIERvY3VtZW50Ojp1cGRhdGVTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSgpCiAgICAgYXV0
byBjb250cm9sbGluZ1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyID0gYWN0aXZl
U2VydmljZVdvcmtlcigpID8gc3RkOjptYWtlX29wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25JZGVudGlmaWVyPihhY3RpdmVTZXJ2aWNlV29ya2VyKCktPnJlZ2lzdHJhdGlvbklkZW50
aWZpZXIoKSkgOiBzdGQ6Om51bGxvcHQ7CiAgICAgbV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbi0+
cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KHRvcE9yaWdpbigpLCBTZXJ2aWNlV29ya2VyQ2xp
ZW50RGF0YTo6ZnJvbSgqdGhpcyksIGNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bklkZW50aWZpZXIsIHVzZXJBZ2VudCh1cmwoKSkpOwogfQorCit2b2lkIERvY3VtZW50OjpuYXZp
Z2F0ZUZyb21TZXJ2aWNlV29ya2VyKGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQoreworICAgIGlmIChhY3RpdmVET01PYmplY3RzQXJlU3Vz
cGVuZGVkKCkgfHwgYWN0aXZlRE9NT2JqZWN0c0FyZVN0b3BwZWQoKSkgeworICAgICAgICBjYWxs
YmFjayhmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgcG9zdFRhc2soW3dlYWtU
aGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHVybCwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0oYXV0byYpIG11dGFibGUgeworICAgICAgICBhdXRvKiBmcmFtZSA9IHdlYWtUaGlzID8gd2Vh
a1RoaXMtPmZyYW1lKCkgOiBudWxscHRyOworICAgICAgICBpZiAoIWZyYW1lKSB7CisgICAgICAg
ICAgICBjYWxsYmFjayhmYWxzZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgZnJhbWUtPm5hdmlnYXRpb25TY2hlZHVsZXIoKS5zY2hlZHVsZUxvY2F0aW9uQ2hhbmdl
KCp3ZWFrVGhpcywgd2Vha1RoaXMtPnNlY3VyaXR5T3JpZ2luKCksIHVybCwgZnJhbWUtPmxvYWRl
cigpLm91dGdvaW5nUmVmZXJyZXIoKSwgTG9ja0hpc3Rvcnk6OlllcywgTG9ja0JhY2tGb3J3YXJk
TGlzdDo6Tm8sIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgeworICAg
ICAgICAgICAgY2FsbGJhY2sodHJ1ZSk7CisgICAgICAgIH0pOworICAgIH0pOworfQogI2VuZGlm
CiAKIFN0cmluZyBEb2N1bWVudDo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVu
c2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgU3RyaW5nJiBjaGFsbGVuZ2VTdHJpbmcsIGNvbnN0
IFVSTCYgdXJsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA5NWRkYjZkZGFiMjE1Njc0OGEwNGIy
OTJjZjY5Nzk0N2Q3ZmZlNTU1Li5kM2NiYThkNzA0ZjRhMjgyODUzZDM2M2M5MWY4YjdlMmUzODQ5
NTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTU2OCw2ICsxNTY4LDcgQEAgcHVibGljOgog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIHNldFNlcnZpY2VXb3JrZXJDb25u
ZWN0aW9uKFNXQ2xpZW50Q29ubmVjdGlvbiopOwogICAgIHZvaWQgdXBkYXRlU2VydmljZVdvcmtl
ckNsaWVudERhdGEoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG5hdmlnYXRlRnJvbVNlcnZp
Y2VXb3JrZXIoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShWSURFTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuY3BwCmluZGV4IDU5MTZi
YjA0ZDZjZDI5NTBiZWExZmNjYTI1ZDFlNjI2ZWI3ZTZlNTIuLjFmMWNjMGYzZDQ5ZjFhMDJmNmNl
ODgwNTcwZDc5MzY1MjVjMmIyMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmNwcApAQCAtNTksMTIgKzU5
LDEyIEBAIHN0YXRpYyBTZXJ2aWNlV29ya2VyQ2xpZW50RnJhbWVUeXBlIHRvU2VydmljZVdvcmtl
ckNsaWVudEZyYW1lVHlwZShTY3JpcHRFeGVjdXRpCiAKIFNlcnZpY2VXb3JrZXJDbGllbnREYXRh
IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjppc29sYXRlZENvcHkoKSBjb25zdCAmCiB7Ci0gICAg
cmV0dXJuIHsgaWRlbnRpZmllciwgdHlwZSwgZnJhbWVUeXBlLCB1cmwuaXNvbGF0ZWRDb3B5KCks
IHBhZ2VJZGVudGlmaWVyLCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCwgaXNWaXNpYmxl
LCBpc0ZvY3VzZWQsIGZvY3VzT3JkZXIsIGNyb3NzVGhyZWFkQ29weShhbmNlc3Rvck9yaWdpbnMp
IH07CisgICAgcmV0dXJuIHsgaWRlbnRpZmllciwgdHlwZSwgZnJhbWVUeXBlLCB1cmwuaXNvbGF0
ZWRDb3B5KCksIHBhZ2VJZGVudGlmaWVyLCBmcmFtZUlkZW50aWZpZXIsIGxhc3ROYXZpZ2F0aW9u
V2FzQXBwSW5pdGlhdGVkLCBpc1Zpc2libGUsIGlzRm9jdXNlZCwgZm9jdXNPcmRlciwgY3Jvc3NU
aHJlYWRDb3B5KGFuY2VzdG9yT3JpZ2lucykgfTsKIH0KIAogU2VydmljZVdvcmtlckNsaWVudERh
dGEgU2VydmljZVdvcmtlckNsaWVudERhdGE6Omlzb2xhdGVkQ29weSgpICYmCiB7Ci0gICAgcmV0
dXJuIHsgaWRlbnRpZmllciwgdHlwZSwgZnJhbWVUeXBlLCBXVEZNb3ZlKHVybCkuaXNvbGF0ZWRD
b3B5KCksIHBhZ2VJZGVudGlmaWVyLCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCwgaXNW
aXNpYmxlLCBpc0ZvY3VzZWQsIGZvY3VzT3JkZXIsIGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGFu
Y2VzdG9yT3JpZ2lucykpIH07CisgICAgcmV0dXJuIHsgaWRlbnRpZmllciwgdHlwZSwgZnJhbWVU
eXBlLCBXVEZNb3ZlKHVybCkuaXNvbGF0ZWRDb3B5KCksIHBhZ2VJZGVudGlmaWVyLCBmcmFtZUlk
ZW50aWZpZXIsIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkLCBpc1Zpc2libGUsIGlzRm9j
dXNlZCwgZm9jdXNPcmRlciwgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoYW5jZXN0b3JPcmlnaW5z
KSkgfTsKIH0KIAogU2VydmljZVdvcmtlckNsaWVudERhdGEgU2VydmljZVdvcmtlckNsaWVudERh
dGE6OmZyb20oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKQEAgLTg3LDYgKzg3LDcg
QEAgU2VydmljZVdvcmtlckNsaWVudERhdGEgU2VydmljZVdvcmtlckNsaWVudERhdGE6OmZyb20o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY28KICAgICAgICAgdG9TZXJ2aWNlV29ya2VyQ2xpZW50
RnJhbWVUeXBlKGNvbnRleHQpLAogICAgICAgICBkb2N1bWVudC5jcmVhdGlvblVSTCgpLAogICAg
ICAgICBkb2N1bWVudC5wYWdlSUQoKSwKKyAgICAgICAgZG9jdW1lbnQuZnJhbWVJRCgpLAogICAg
ICAgICBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCwKICAgICAgICAgIWRvY3VtZW50Lmhp
ZGRlbigpLAogICAgICAgICBkb2N1bWVudC5oYXNGb2N1cygpLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaAppbmRl
eCAyNjRhYTllNjhiZmQ4NDJhMTk1YzQxMzhjODFiY2YwZDdkMjM4Nzk3Li5iOGFmMTgwNWExMzIx
NTY0ZDcwMzUzMTBmMDBlYjVlNTljNzljODYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaApAQCAtMjcsNiAr
MjcsNyBAQAogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCisjaW5jbHVkZSAiRnJhbWVJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJQcm9j
ZXNzUXVhbGlmaWVkLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZp
ZXIuaCIKQEAgLTQ5LDYgKzUwLDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIHsK
ICAgICBTZXJ2aWNlV29ya2VyQ2xpZW50RnJhbWVUeXBlIGZyYW1lVHlwZTsKICAgICBVUkwgdXJs
OwogICAgIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJZGVudGlmaWVyOworICAg
IHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlkZW50aWZpZXI7CiAgICAgTGFz
dE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ7
CiAgICAgYm9vbCBpc1Zpc2libGUgeyBmYWxzZSB9OwogICAgIGJvb2wgaXNGb2N1c2VkIHsgZmFs
c2UgfTsKQEAgLTY3LDcgKzY5LDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIHsK
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IGlkZW50aWZp
ZXIgPDwgdHlwZSA8PCBmcmFtZVR5cGUgPDwgdXJsIDw8IHBhZ2VJZGVudGlmaWVyIDw8IGxhc3RO
YXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIDw8IGlzVmlzaWJsZSA8PCBpc0ZvY3VzZWQgPDwgZm9j
dXNPcmRlciA8PCBhbmNlc3Rvck9yaWdpbnM7CisgICAgZW5jb2RlciA8PCBpZGVudGlmaWVyIDw8
IHR5cGUgPDwgZnJhbWVUeXBlIDw8IHVybCA8PCBwYWdlSWRlbnRpZmllciA8PCBmcmFtZUlkZW50
aWZpZXIgPDwgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgPDwgaXNWaXNpYmxlIDw8IGlz
Rm9jdXNlZCA8PCBmb2N1c09yZGVyIDw8IGFuY2VzdG9yT3JpZ2luczsKIH0KIAogdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4KQEAgLTk4LDYgKzEwMCwxMSBAQCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VX
b3JrZXJDbGllbnREYXRhPiBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZGVjb2RlKERlY29kZXIm
CiAgICAgaWYgKCFwYWdlSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAorICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+PiBmcmFt
ZUlkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiBmcmFtZUlkZW50aWZpZXI7CisgICAgaWYgKCFm
cmFtZUlkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBzdGQ6
Om9wdGlvbmFsPExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkPiBsYXN0TmF2aWdhdGlvbldh
c0FwcEluaXRpYXRlZDsKICAgICBkZWNvZGVyID4+IGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlh
dGVkOwogICAgIGlmICghbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpCkBAIC0xMjMsNyAr
MTMwLDcgQEAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gU2VydmljZVdv
cmtlckNsaWVudERhdGE6OmRlY29kZShEZWNvZGVyJgogICAgIGlmICghYW5jZXN0b3JPcmlnaW5z
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHsgeyBXVEZNb3Zl
KCppZGVudGlmaWVyKSwgV1RGTW92ZSgqdHlwZSksIFdURk1vdmUoKmZyYW1lVHlwZSksIFdURk1v
dmUoKnVybCksIFdURk1vdmUoKnBhZ2VJZGVudGlmaWVyKSwgV1RGTW92ZSgqbGFzdE5hdmlnYXRp
b25XYXNBcHBJbml0aWF0ZWQpLCBXVEZNb3ZlKCppc1Zpc2libGUpLCBXVEZNb3ZlKCppc0ZvY3Vz
ZWQpLCBXVEZNb3ZlKCpmb2N1c09yZGVyKSwgV1RGTW92ZSgqYW5jZXN0b3JPcmlnaW5zKSB9IH07
CisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCppZGVudGlmaWVyKSwgV1RGTW92ZSgqdHlwZSksIFdU
Rk1vdmUoKmZyYW1lVHlwZSksIFdURk1vdmUoKnVybCksIFdURk1vdmUoKnBhZ2VJZGVudGlmaWVy
KSwgV1RGTW92ZSgqZnJhbWVJZGVudGlmaWVyKSwgV1RGTW92ZSgqbGFzdE5hdmlnYXRpb25XYXNB
cHBJbml0aWF0ZWQpLCBXVEZNb3ZlKCppc1Zpc2libGUpLCBXVEZNb3ZlKCppc0ZvY3VzZWQpLCBX
VEZNb3ZlKCpmb2N1c09yZGVyKSwgV1RGTW92ZSgqYW5jZXN0b3JPcmlnaW5zKSB9IH07CiB9CiAK
IHVzaW5nIFNlcnZpY2VXb3JrZXJDbGllbnRzTWF0Y2hBbGxDYWxsYmFjayA9IENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoVmVjdG9yPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmKT47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlcldpbmRvd0Ns
aWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlcldp
bmRvd0NsaWVudC5jcHAKaW5kZXggZGY3N2NjNDkxNTlkOTYxYmYyYTIxNTNjMDc3Y2FmOTg5MmU5
MjczZC4uNjVhMGVjNmRlMzA4YzZlMDkyYzAwMzkwNDVjZjhmOTgzZGVjYzEzNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
V2luZG93Q2xpZW50LmNwcApAQCAtNzEsMTAgKzcxLDQ3IEBAIHZvaWQgU2VydmljZVdvcmtlcldp
bmRvd0NsaWVudDo6Zm9jdXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmPERl
ZmVyCiAgICAgfSk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlcldpbmRvd0NsaWVudDo6bmF2aWdh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgdXJsLCBSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmIHByb21pc2UpCit2b2lkIFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQ6Om5h
dmlnYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJs
U3RyaW5nLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKHVybCk7Ci0gICAgcHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVy
cm9yLCAid2luZG93Q2xpZW50Lm5hdmlnYXRlKCkgaXMgbm90IHlldCBzdXBwb3J0ZWQiX3MgfSk7
CisgICAgYXV0byB1cmwgPSBjb250ZXh0LmNvbXBsZXRlVVJMKHVybFN0cmluZyk7CisKKyAgICBp
ZiAoIXVybC5pc1ZhbGlkKCkpIHsKKyAgICAgICAgcHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7
IFR5cGVFcnJvciwgbWFrZVN0cmluZygiVVJMIHN0cmluZyAiLCB1cmxTdHJpbmcsICIgY2Fubm90
IHN1Y2Nlc3NmdWxseSBiZSBwYXJzZWQiX3MpIH0pOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKHVybC5wcm90b2NvbElzQWJvdXQoKSkgeworICAgICAgICBwcm9taXNlLT5yZWpl
Y3QoRXhjZXB0aW9uIHsgVHlwZUVycm9yLCBtYWtlU3RyaW5nKCJTZXJ2aWNlV29ya2VyQ2xpZW50
cy5uYXZpZ2F0ZSgpIGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBVUkwgIl9zLCB1cmwuc3RyaW5nKCkp
IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gV2UgaW1wbGVtZW50IHN0ZXAg
NCAoY2hlY2tpbmcgb2YgY2xpZW50J3MgYWN0aXZlIHNlcnZpY2Ugd29ya2VyKSBpbiBuZXR3b3Jr
IHByb2Nlc3MgYXMgd2UgY2Fubm90IGRvIGl0IHN5bmNocm9ub3VzbHkuCisgICAgYXV0byYgc2Vy
dmljZVdvcmtlckNvbnRleHQgPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNv
bnRleHQpOworICAgIGF1dG8gcHJvbWlzZUlkZW50aWZpZXIgPSBzZXJ2aWNlV29ya2VyQ29udGV4
dC5jbGllbnRzKCkuYWRkUGVuZGluZ1Byb21pc2UoV1RGTW92ZShwcm9taXNlKSk7CisgICAgY2Fs
bE9uTWFpblRocmVhZChbY2xpZW50SWRlbnRpZmllciA9IGlkZW50aWZpZXIoKSwgcHJvbWlzZUlk
ZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gc2VydmljZVdvcmtlckNvbnRleHQu
dGhyZWFkKCkuaWRlbnRpZmllcigpLCB1cmwgPSBXVEZNb3ZlKHVybCkuaXNvbGF0ZWRDb3B5KCld
KCkgbXV0YWJsZSB7CisgICAgICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5l
Y3Rpb24oKS0+bmF2aWdhdGUoY2xpZW50SWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIHVybCwgW3Byb21pc2VJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllcl0oYXV0
byByZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xl
dG9uKCkucG9zdFRhc2tUb1NlcnZpY2VXb3JrZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFtw
cm9taXNlSWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUocmVzdWx0
KSldKGF1dG8mIHNlcnZpY2VXb3JrZXJDb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAg
ICBhdXRvIHByb21pc2UgPSBzZXJ2aWNlV29ya2VyQ29udGV4dC5jbGllbnRzKCkudGFrZVBlbmRp
bmdQcm9taXNlKHByb21pc2VJZGVudGlmaWVyKTsKKyAgICAgICAgICAgICAgICBpZiAoIXByb21p
c2UpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIGlmIChy
ZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVq
ZWN0KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGF1dG8gY2xpZW50RGF0YSA9
IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICAgICAgICAgICAgICBpZiAoIWNsaWVu
dERhdGEpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZVdpdGhKU1ZhbHVl
KEpTQzo6anNOdWxsKCkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAgICAgfQorI2lmIEFTU0VSVF9FTkFCTEVECisgICAgICAgICAgICAgICAgYXV0byBvcmlnaW5E
YXRhID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKGNsaWVudERhdGEtPnVybCk7CisgICAg
ICAgICAgICAgICAgQ2xpZW50T3JpZ2luIGNsaWVudE9yaWdpbiB7IG9yaWdpbkRhdGEsIG9yaWdp
bkRhdGEgfTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIHByb21pc2UtPnRlbXBsYXRlIHJlc29s
dmU8SURMSW50ZXJmYWNlPFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQ+PihTZXJ2aWNlV29ya2Vy
V2luZG93Q2xpZW50OjpjcmVhdGUoc2VydmljZVdvcmtlckNvbnRleHQsIFdURk1vdmUoKmNsaWVu
dERhdGEpKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAppbmRleCA5YTIzYzVhZDAzNjY4
MGU5ZDhlYTg4M2I2YTA5NmM1YjRhODU5ODFlLi42NWU0NDA1YWQ0OGNhMWYxOWVkMDc0YTJkODQx
ZDhhODRkMTJkYmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCkBAIC03MCw2ICs3MCw5IEBAIHB1Ymxp
YzoKICAgICAgICAgdmlydHVhbCB2b2lkIGZvY3VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Vy
dmljZVdvcmtlckNsaWVudERhdGE+JiYpPiYmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBv
cGVuV2luZG93KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVybCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiYmKT4mJikg
PSAwOwogCisgICAgICAgIHVzaW5nIE5hdmlnYXRlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEV4Y2VwdGlvbk9yPHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNs
aWVudERhdGE+PiYmKT47CisgICAgICAgIHZpcnR1YWwgdm9pZCBuYXZpZ2F0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0SWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFVS
TCYsIE5hdmlnYXRlQ2FsbGJhY2smJikgPSAwOworCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRG
YWlsSGVhcnRCZWF0Q2hlY2soU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKICAgICAgICAg
dmlydHVhbCB2b2lkIHNldEFzSW5zcGVjdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29s
KSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlci5jcHAKaW5kZXggYzgwNzJiOTFkNDg0ZjliZjQwYzJiMGI1OTg5YzcyYmVhYzAxOGUx
ZC4uM2VkNWY2MzU4YTM5ODNiNmNlNTg3ODg2OThhN2VkN2Y2ZDMxOWY5YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTEw
NzcsNiArMTA3NywxNCBAQCB2b2lkIFNXU2VydmVyOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNs
aWVudChjb25zdCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgUwogICAgIG1fY2xpZW50VG9D
b250cm9sbGluZ1JlZ2lzdHJhdGlvbi5yZW1vdmUocmVnaXN0cmF0aW9uSXRlcmF0b3IpOwogfQog
CitzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiBTV1Nl
cnZlcjo6Y2xpZW50SWRlbnRpZmllclRvQ29udHJvbGxpbmdSZWdpc3RyYXRpb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllcikgY29uc3QKK3sKKyAgICBh
dXRvIHJlZ2lzdHJhdGlvbkl0ZXJhdG9yID0gbV9jbGllbnRUb0NvbnRyb2xsaW5nUmVnaXN0cmF0
aW9uLmZpbmQoY2xpZW50SWRlbnRpZmllcik7CisgICAgaWYgKHJlZ2lzdHJhdGlvbkl0ZXJhdG9y
ID09IG1fY2xpZW50VG9Db250cm9sbGluZ1JlZ2lzdHJhdGlvbi5lbmQoKSkKKyAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICByZXR1cm4gcmVnaXN0cmF0aW9uSXRlcmF0b3ItPnZhbHVlOworfQorCiBT
V1NlcnZlcjo6U2hvdWxkRGVsYXlSZW1vdmFsIFNXU2VydmVyOjpyZW1vdmVDb250ZXh0Q29ubmVj
dGlvbklmUG9zc2libGUoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikKIHsKICAgICBp
ZiAobV9jbGllbnRzQnlSZWdpc3RyYWJsZURvbWFpbi5jb250YWlucyhkb21haW4pKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCmluZGV4IGE0
YmI3NTNmZWM0MDIzMDAzODk1NTUzZmYyODJiZGM5Y2U5YjUwYjMuLmNkMjQyMDNkMWM5NjZkMWFm
Y2QwZTk5YTMxZGYyODllNjg5YTkwODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTI0MCw2ICsyNDAsOSBAQCBwdWJsaWM6CiAg
ICAgZW51bSBjbGFzcyBTaG91bGREZWxheVJlbW92YWwgOiBib29sIHsgTm8sIFllcyB9OwogICAg
IFNob3VsZERlbGF5UmVtb3ZhbCByZW1vdmVDb250ZXh0Q29ubmVjdGlvbklmUG9zc2libGUoY29u
c3QgUmVnaXN0cmFibGVEb21haW4mKTsKIAorICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXI+IGNsaWVudElkZW50aWZpZXJUb0NvbnRyb2xsaW5nUmVn
aXN0cmF0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGZvckVhY2hDbGllbnRGb3JPcmlnaW4oY29uc3QgQ2xpZW50T3Jp
Z2luJiwgY29uc3QgRnVuY3Rpb248dm9pZChTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSYpPiYpOwor
CiBwcml2YXRlOgogICAgIHZvaWQgdmFsaWRhdGVSZWdpc3RyYXRpb25Eb21haW4oV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4sIFNlcnZpY2VXb3JrZXJKb2JUeXBlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKTsKIApAQCAtMjU5LDcgKzI2Miw2IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBpbnN0YWxsQ29udGV4dERhdGEoY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJik7CiAK
ICAgICBTV1NlcnZlclJlZ2lzdHJhdGlvbiogcmVnaXN0cmF0aW9uRnJvbVNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKLSAgICB2b2lkIGZvckVhY2hDbGll
bnRGb3JPcmlnaW4oY29uc3QgQ2xpZW50T3JpZ2luJiwgY29uc3QgRnVuY3Rpb248dm9pZChTZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YSYpPiYpOwogCiAgICAgdm9pZCBwZXJmb3JtR2V0T3JpZ2luc1dp
dGhSZWdpc3RyYXRpb25zQ2FsbGJhY2tzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKaW5kZXggMDg4MWJj
NjIzNzM3MTNhYWUyMWZlYjE4YjYyNjI0YjViYTZlOTk5Mi4uOTFkMGU5ZjkxNThlZjUxNWY0YmU5
MGI2ZWY1YmQ5YjI2YTQ3MTExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKQEAgLTQxOSw2ICs0MTksMTQg
QEAgdm9pZCBTV1NlcnZlcldvcmtlcjo6dGVybWluYXRlSWZQb3NzaWJsZSgpCiAgICAgbV9zZXJ2
ZXItPnJlbW92ZUNvbnRleHRDb25uZWN0aW9uSWZQb3NzaWJsZShyZWdpc3RyYWJsZURvbWFpbigp
KTsKIH0KIAorYm9vbCBTV1NlcnZlcldvcmtlcjo6aXNDbGllbnRBY3RpdmVTZXJ2aWNlV29ya2Vy
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIpIGNvbnN0
Cit7CisgICAgaWYgKCFtX3NlcnZlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8g
cmVnaXN0cmF0aW9uSWRlbnRpZmllciA9IG1fc2VydmVyLT5jbGllbnRJZGVudGlmaWVyVG9Db250
cm9sbGluZ1JlZ2lzdHJhdGlvbihjbGllbnRJZGVudGlmaWVyKTsKKyAgICByZXR1cm4gcmVnaXN0
cmF0aW9uSWRlbnRpZmllciAmJiAqcmVnaXN0cmF0aW9uSWRlbnRpZmllciA9PSBtX2RhdGEucmVn
aXN0cmF0aW9uSWRlbnRpZmllcjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCmluZGV4IDU0ZGYzODQyMjA4
MWFhZTRkODJiYTYyNGZiYTYyOTBhOGY2MzdiYjYuLjcxN2Q1NTllZGJmMzgxYjA1YzU3MjBlNThl
NmM0OWViNmM2ZDA3YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKQEAgLTE0MSw2ICsxNDEsOCBAQCBwdWJsaWM6
CiAKICAgICBib29sIHNob3VsZENvbnRpbnVlKCkgY29uc3QgeyByZXR1cm4gISFtX2Z1bmN0aW9u
YWxFdmVudENvdW50ZXIgfHwgbV9pc0luc3BlY3RlZDsgfQogCisgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBpc0NsaWVudEFjdGl2ZVNlcnZpY2VXb3JrZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dElk
ZW50aWZpZXIpIGNvbnN0OworCiBwcml2YXRlOgogICAgIFNXU2VydmVyV29ya2VyKFNXU2VydmVy
JiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBjb25zdCBVUkwmLCBjb25zdCBTY3JpcHRCdWZmZXIm
LCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNw
b25zZUhlYWRlcnMmLCBjb25zdCBDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5JiwgU3RyaW5nJiYg
cmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBIYXNo
TWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKaW5kZXggNmZhOGRhYTQyZDQ3
OGRhYzRjM2U3ZThlNmZjZmU2YmFmNThiNjg2Yi4uNTZiMTgwNDY5NmE1NjU0YTFmMzZhZDkzZDdk
Y2RlNDE0MzFkMjZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAK
QEAgLTE2NCwxOSArMTY0LDIwIEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjp1cGRhdGVX
b3JrZXJTdGF0ZUluQ2xpZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHdvCiAgICAgc2VuZChN
ZXNzYWdlczo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpVcGRhdGVXb3JrZXJTdGF0ZSh3b3JrZXIs
IHN0YXRlKSk7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpjb250cm9sQ2xpZW50
KGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYgZnJhbWVBbmNlc3Rvck9yaWdp
bnMsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIsIFNX
U2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCkKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpjb250cm9sQ2xpZW50KGNvbnN0
IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBTV1NlcnZlclJlZ2lz
dHJhdGlvbiYgcmVnaXN0cmF0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7
CisgICAgYXV0byBjbGllbnRJZGVudGlmaWVyID0gKnBhcmFtZXRlcnMub3B0aW9ucy5jbGllbnRJ
ZGVudGlmaWVyOwogICAgIC8vIEFzIHBlciBzdGVwIDEyIG9mIGh0dHBzOi8vdzNjLmdpdGh1Yi5p
by9TZXJ2aWNlV29ya2VyLyNvbi1mZXRjaC1yZXF1ZXN0LWFsZ29yaXRobSwgdGhlIGFjdGl2ZSBz
ZXJ2aWNlIHdvcmtlciBzaG91bGQgYmUgY29udHJvbGxpbmcgdGhlIGRvY3VtZW50LgotICAgIC8v
IFdlIHJlZ2lzdGVyIGEgdGVtcG9yYXJ5IHNlcnZpY2Ugd29ya2VyIGNsaWVudCB1c2luZyB0aGUg
aWRlbnRpZmllciBwcm92aWRlZCBieSBEb2N1bWVudExvYWRlciBhbmQgbm90aWZ5IERvY3VtZW50
TG9hZGVyIGFib3V0IGl0LgotICAgIC8vIElmIG5vdGlmaWNhdGlvbiBpcyBzdWNjZXNzZnVsLCBE
b2N1bWVudExvYWRlciB3aWxsIHVucmVnaXN0ZXIgdGhlIHRlbXBvcmFyeSBzZXJ2aWNlIHdvcmtl
ciBjbGllbnQganVzdCBhZnRlciB0aGUgZG9jdW1lbnQgaXMgY3JlYXRlZCBhbmQgcmVnaXN0ZXJl
ZCBhcyBhIGNsaWVudC4KKyAgICAvLyBXZSByZWdpc3RlciB0aGUgc2VydmljZSB3b3JrZXIgY2xp
ZW50IHVzaW5nIHRoZSBpZGVudGlmaWVyIHByb3ZpZGVkIGJ5IERvY3VtZW50TG9hZGVyIGFuZCBu
b3RpZnkgRG9jdW1lbnRMb2FkZXIgYWJvdXQgaXQuCisgICAgLy8gSWYgbm90aWZpY2F0aW9uIGlz
IHN1Y2Nlc3NmdWwsIERvY3VtZW50TG9hZGVyIGlzIHJlc3BvbnNpYmxlIHRvIHVucmVnaXN0ZXIg
dGhlIHNlcnZpY2Ugd29ya2VyIGNsaWVudCBhcyBuZWVkZWQuCiAgICAgc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJTV0NsaWVudENvbm5lY3Rpb246OlNldERvY3VtZW50SXNDb250cm9s
bGVkIHsgY2xpZW50SWRlbnRpZmllciwgcmVnaXN0cmF0aW9uLmRhdGEoKSB9LCBbd2Vha1RoaXMg
PSBXZWFrUHRyIHsgKnRoaXMgfSwgdGhpcywgY2xpZW50SWRlbnRpZmllcl0oYm9vbCBpc1N1Y2Nl
c3MpIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCBpc1N1Y2Nlc3MpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIHVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNsaWVudElkZW50
aWZpZXIpOwogICAgIH0pOwogCi0gICAgYXV0byBhbmNlc3Rvck9yaWdpbnMgPSBtYXAoZnJhbWVB
bmNlc3Rvck9yaWdpbnMsIFtdKGF1dG8mIG9yaWdpbikgeyByZXR1cm4gb3JpZ2luLT50b1N0cmlu
ZygpOyB9KTsKLSAgICBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSBkYXRhIHsgY2xpZW50SWRlbnRp
ZmllciwgU2VydmljZVdvcmtlckNsaWVudFR5cGU6OldpbmRvdywgU2VydmljZVdvcmtlckNsaWVu
dEZyYW1lVHlwZTo6Tm9uZSwgcmVxdWVzdC51cmwoKSwgeyB9LCByZXF1ZXN0LmlzQXBwSW5pdGlh
dGVkKCkgPyBXZWJDb3JlOjpMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDo6WWVzIDogV2Vi
Q29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6Ok5vLCBmYWxzZSwgZmFsc2UsIDAs
IFdURk1vdmUoYW5jZXN0b3JPcmlnaW5zKSB9OworICAgIGF1dG8gYW5jZXN0b3JPcmlnaW5zID0g
bWFwKHBhcmFtZXRlcnMuZnJhbWVBbmNlc3Rvck9yaWdpbnMsIFtdKGF1dG8mIG9yaWdpbikgeyBy
ZXR1cm4gb3JpZ2luLT50b1N0cmluZygpOyB9KTsKKyAgICBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0
YSBkYXRhIHsgY2xpZW50SWRlbnRpZmllciwgU2VydmljZVdvcmtlckNsaWVudFR5cGU6OldpbmRv
dywgU2VydmljZVdvcmtlckNsaWVudEZyYW1lVHlwZTo6Tm9uZSwgcmVxdWVzdC51cmwoKSwgcGFy
YW1ldGVycy53ZWJQYWdlSUQsIHBhcmFtZXRlcnMud2ViRnJhbWVJRCwgcmVxdWVzdC5pc0FwcElu
aXRpYXRlZCgpID8gV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6OlllcyA6
IFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpObywgZmFsc2UsIGZhbHNl
LCAwLCBXVEZNb3ZlKGFuY2VzdG9yT3JpZ2lucykgfTsKICAgICByZWdpc3RlclNlcnZpY2VXb3Jr
ZXJDbGllbnQoU2VjdXJpdHlPcmlnaW5EYXRhIHsgcmVnaXN0cmF0aW9uLmtleSgpLnRvcE9yaWdp
bigpIH0sIFdURk1vdmUoZGF0YSksIHJlZ2lzdHJhdGlvbi5pZGVudGlmaWVyKCksIHJlcXVlc3Qu
aHR0cFVzZXJBZ2VudCgpKTsKIH0KIApAQCAtMjAxLDcgKzIwMiw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmNyZWF0ZUZl
dGNoVGFzayhOCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICBzZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciA9IHJlZ2lzdHJhdGlvbi0+aWRlbnRpZmllcigp
OwotICAgICAgICBjb250cm9sQ2xpZW50KGxvYWRlci5wYXJhbWV0ZXJzKCkuZnJhbWVBbmNlc3Rv
ck9yaWdpbnMsICpsb2FkZXIucGFyYW1ldGVycygpLm9wdGlvbnMuY2xpZW50SWRlbnRpZmllciwg
KnJlZ2lzdHJhdGlvbiwgcmVxdWVzdCk7CisgICAgICAgIGNvbnRyb2xDbGllbnQobG9hZGVyLnBh
cmFtZXRlcnMoKSwgKnJlZ2lzdHJhdGlvbiwgcmVxdWVzdCk7CiAgICAgICAgIGxvYWRlci5zZXRS
ZXN1bHRpbmdDbGllbnRJZGVudGlmaWVyKGxvYWRlci5wYXJhbWV0ZXJzKCkub3B0aW9ucy5jbGll
bnRJZGVudGlmaWVyLT50b1N0cmluZygpKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoIWxv
YWRlci5wYXJhbWV0ZXJzKCkuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKaW5kZXggZjc3YjlmNWI5Mzg3YjkxZjJi
NjczMjBlMzdjZmFiYjliNzk1ZTI0ZC4uNGRjMzE0NWNiZmI4ZTNkNWM1ZWVjZmZjZjk3NTEwNTE1
ZjRmNGFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaApAQCAtNjEsNiAr
NjEsNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudERhdGE7CiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogY2xhc3MgTmV0d29ya1Byb2Nlc3M7CitjbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVyczsKIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s7CiAKQEAgLTgzLDggKzg0LDYgQEAgcHVibGljOgogICAgIHN0ZDo6dW5pcXVl
X3B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBjcmVhdGVGZXRjaFRhc2soTmV0d29ya1Jlc291
cmNlTG9hZGVyJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBm
ZXRjaFRhc2tUaW1lZE91dChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAKLSAg
ICB2b2lkIGZvY3VzU2VydmljZVdvcmtlckNsaWVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25D
b250ZXh0SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmKT4mJik7Ci0KIHByaXZhdGU6CiAgICAg
Ly8gSW1wbGVtZW50IFNXU2VydmVyOjpDb25uZWN0aW9uIChNZXNzYWdlcyB0byB0aGUgY2xpZW50
IFdlYlByb2Nlc3MpCiAgICAgdm9pZCByZWplY3RKb2JJbkNsaWVudChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySm9iSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYpIGZpbmFs
OwpAQCAtOTcsNiArOTYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0UmVnaXN0cmF0aW9uTGFz
dFVwZGF0ZVRpbWUoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIs
IFdhbGxUaW1lKSBmaW5hbDsKICAgICB2b2lkIHNldFJlZ2lzdHJhdGlvblVwZGF0ZVZpYUNhY2hl
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUpIGZpbmFsOwogICAgIHZvaWQgbm90aWZ5Q2xpZW50
c09mQ29udHJvbGxlckNoYW5nZShjb25zdCBIYXNoU2V0PFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRJZGVudGlmaWVyPiYgY29udGV4dElkZW50aWZpZXJzLCBjb25zdCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyRGF0YSYgbmV3Q29udHJvbGxlcik7CisgICAgdm9pZCBmb2N1c1NlcnZpY2VX
b3JrZXJDbGllbnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
Q2xpZW50RGF0YT4mJik+JiYpIGZpbmFsOwogCiAgICAgdm9pZCBzY2hlZHVsZUpvYkluU2VydmVy
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhJiYpOwogCkBAIC0xMjksNyArMTI5LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGdldFB1c2hQZXJtaXNzaW9uU3RhdGUoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhw
ZWN0ZWQ8dWludDhfdCwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJik+JiYpOwogCiAgICAgdm9p
ZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBkZXN0aW5hdGlvbiwgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgY29u
c3QgV2ViQ29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllciYgc291cmNlKTsKLSAg
ICB2b2lkIGNvbnRyb2xDbGllbnQoY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbj4+JiwgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIsIFdl
YkNvcmU6OlNXU2VydmVyUmVnaXN0cmF0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0Jik7CisgICAgdm9pZCBjb250cm9sQ2xpZW50KGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzJiwgV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmKTsKIAogICAgIHVzaW5nIEV4Y2VwdGlvbk9yVm9pZENhbGxiYWNr
ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlv
bkRhdGE+JiYpPjsKICAgICB2b2lkIGVuYWJsZU5hdmlnYXRpb25QcmVsb2FkKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBFeGNlcHRpb25PclZvaWRDYWxsYmFj
ayYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5jcHAKaW5kZXggN2RmYTBlMTg2NDlhMGZlMTNkNGY3MjYxNWNhMjgzNjAwYzlmNzBlMS4uY2Ji
YWM4NGZmOWUwNzg2NWUzZDhjNWVmMGNlMTE3NmUxNWI4M2M5MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTI2Miw2ICsyNjIs
NDYgQEAgdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmZvY3VzKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGNsaWUKICAgICBjb25uZWN0aW9uLT5mb2N1c1NlcnZp
Y2VXb3JrZXJDbGllbnQoY2xpZW50SWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOwogfQog
Cit2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bmF2aWdhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwgU2VydmljZVdvcmtlcklk
ZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVu
dERhdGE+LCBFeGNlcHRpb25EYXRhPiYmKT4mJiBjYWxsYmFjaykKK3sKKyAgICBhdXRvKiB3b3Jr
ZXIgPSBTV1NlcnZlcldvcmtlcjo6ZXhpc3RpbmdXb3JrZXJGb3JJZGVudGlmaWVyKHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKTsKKyAgICBpZiAoIXdvcmtlcikgeworICAgICAgICBjYWxsYmFjayht
YWtlVW5leHBlY3RlZChFeGNlcHRpb25EYXRhIHsgVHlwZUVycm9yLCAibm8gc2VydmljZSB3b3Jr
ZXIiX3MgfSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCF3b3JrZXItPmlz
Q2xpZW50QWN0aXZlU2VydmljZVdvcmtlcihjbGllbnRJZGVudGlmaWVyKSkgeworICAgICAgICBj
YWxsYmFjayhtYWtlVW5leHBlY3RlZChFeGNlcHRpb25EYXRhIHsgVHlwZUVycm9yLCAic2Vydmlj
ZSB3b3JrZXIgaXMgbm90IHRoZSBjbGllbnQgYWN0aXZlIHNlcnZpY2Ugd29ya2VyIl9zIH0pKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBhdXRvIGRhdGEgPSB3b3JrZXItPmZp
bmRDbGllbnRCeUlkZW50aWZpZXIoY2xpZW50SWRlbnRpZmllcik7CisgICAgaWYgKCFkYXRhIHx8
ICFkYXRhLT5wYWdlSWRlbnRpZmllciB8fCAhZGF0YS0+ZnJhbWVJZGVudGlmaWVyKSB7CisgICAg
ICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVkKEV4Y2VwdGlvbkRhdGEgeyBUeXBlRXJyb3IsICJj
YW5ub3QgbmF2aWdhdGUgc2VydmljZSB3b3JrZXIgY2xpZW50Il9zIH0pKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGF1dG8gZnJhbWVJZGVudGlmaWVyID0gKmRhdGEtPmZyYW1lSWRl
bnRpZmllcjsKKyAgICBtX2Nvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6Ok5hdmlnYXRlU2VydmljZVdvcmtlckNsaWVudCB7IGZyYW1lSWRlbnRpZmllciwgY2xp
ZW50SWRlbnRpZmllciwgdXJsIH0sIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBmcmFt
ZUlkZW50aWZpZXIsIHVybCwgY2xpZW50T3JpZ2luID0gd29ya2VyLT5vcmlnaW4oKSwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byBwYWdlSWRlbnRpZmllcikgbXV0YWJsZSB7Cisg
ICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUaGlzLT5zZXJ2ZXIoKSkgeworICAgICAgICAg
ICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGF0YSB7IFR5cGVFcnJvciwgInNl
cnZpY2Ugd29ya2VyIGlzIGdvbmUiX3MgfSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKCFwYWdlSWRlbnRpZmllcikgeworICAgICAgICAgICAgY2FsbGJh
Y2sobWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGF0YSB7IFR5cGVFcnJvciwgIm5hdmlnYXRlIGZh
aWxlZCJfcyB9KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBz
dGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBjbGllbnREYXRhOworICAgICAg
ICB3ZWFrVGhpcy0+c2VydmVyKCktPmZvckVhY2hDbGllbnRGb3JPcmlnaW4oY2xpZW50T3JpZ2lu
LCBbcGFnZUlkZW50aWZpZXIsIGZyYW1lSWRlbnRpZmllciwgdXJsLCAmY2xpZW50RGF0YV0oYXV0
byYgZGF0YSkgeworICAgICAgICAgICAgaWYgKCFjbGllbnREYXRhICYmIGRhdGEucGFnZUlkZW50
aWZpZXIgJiYgKmRhdGEucGFnZUlkZW50aWZpZXIgPT0gKnBhZ2VJZGVudGlmaWVyICYmIGRhdGEu
ZnJhbWVJZGVudGlmaWVyICYmICpkYXRhLmZyYW1lSWRlbnRpZmllciA9PSBmcmFtZUlkZW50aWZp
ZXIgJiYgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihkYXRhLnVybCwgdXJsKSkKKyAg
ICAgICAgICAgICAgICBjbGllbnREYXRhID0gZGF0YTsKKyAgICAgICAgfSk7CisgICAgICAgIGNh
bGxiYWNrKFdURk1vdmUoY2xpZW50RGF0YSkpOworICAgIH0sIDApOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCAwMTZhODI3
NTM1MGFjMWVjMzQ3OTAyYjJmYTM0ZjgyODYzMDlkNWMwLi45MGQ3M2NiODI1NDJmOTIwN2VjYzkw
MDk0YTFjYjQ5NTE0NTNjOWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oCkBAIC0xMDAsNiArMTAwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGZpcmVOb3RpZmljYXRpb25FdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYsIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkV2
ZW50VHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CiAgICAgdm9p
ZCBjbG9zZSgpIGZpbmFsOwogICAgIHZvaWQgZm9jdXMoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJik+JiYpOworICAgIHZvaWQgbmF2aWdh
dGUoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIsIFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEV4cGVjdGVkPHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+
LCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmKT4mJik7CiAKICAgICB2b2lkIGNvbm5lY3Rpb25J
c05vTG9uZ2VyTmVlZGVkKCkgZmluYWw7CiAgICAgdm9pZCB0ZXJtaW5hdGVEdWVUb1VucmVzcG9u
c2l2ZW5lc3MoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDIxZDIzNjU1N2M0MzQzOTlk
ZTk4MThkNjc5M2FjYjY1Y2JjMWU2YmYuLjE4MmYyYmY1YjkxYWU3MzcyMzdkMWQ3MzU3NjE5MmJl
MzQyNzg0NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMzYsNiArMzYsNyBAQCBtZXNzYWdlcyAt
PiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CiAgICAgTWF0
Y2hBbGwodWludDY0X3QgbWF0Y2hBbGxSZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zIG9wdGlvbnMpOwogICAgIENsYWltKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSAt
PiAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiByZXN1bHQpCiAgICAgRm9j
dXMoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgc2VydmljZVdvcmtl
ckNsaWVudElkZW50aWZpZXIpIC0+IChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJDbGllbnREYXRhPiByZXN1bHQpCisgICAgTmF2aWdhdGUoV2ViQ29yZTo6U2NyaXB0RXhlY3V0
aW9uQ29udGV4dElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFVSTCB1cmwpIC0+IChFeHBl
Y3RlZDxzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiwgV2Vi
Q29yZTo6RXhjZXB0aW9uRGF0YT4gcmVzdWx0KQogICAgIFNldFNjcmlwdFJlc291cmNlKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFVSTCBzY3JpcHRVUkwsIFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQgc2NyaXB0KQog
ICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRJZGVudGlmaWVyIGRlc3RpbmF0aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2Fn
ZVdpdGhNZXNzYWdlUG9ydHMgbWVzc2FnZSwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIgc291cmNlLCBTdHJpbmcgc291cmNlT3JpZ2luKQogICAgIERpZEZhaWxIZWFydEJlYXRDaGVj
ayhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKaW5kZXggNWNmMmJlYzEyYWI5YzBjZjM3ZmYyM2YxMTVmMGQ5YmY4ZWMzMjg5NS4uZjc3Nzk2
MDlmOTM2MmQyYTI3ZTgyMGFjNTJhMDEzMjdiYTYxYjM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0x
ODA0LDcgKzE4MDQsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnRlcm1pbmF0ZVJlbW90
ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uV2hlblBvc3NpYmxlKFJlbQogICAgIHNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzOjpUZXJtaW5hdGVSZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlv
bldoZW5Qb3NzaWJsZSh3b3JrZXJUeXBlLCBzZXNzaW9uSUQsIHJlZ2lzdHJhYmxlRG9tYWluLCBw
cm9jZXNzSWRlbnRpZmllciksIDApOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Om9w
ZW5XaW5kb3dGcm9tU2VydmljZVdvcmtlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNl
cnZpY2VXb3JrZXJPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mJik+JiYgY2FsbGJhY2spCit2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6Om9wZW5XaW5kb3dGcm9tU2VydmljZVdvcmtlcihQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmIHNlcnZpY2VXb3JrZXJPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3Rk
OjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4mJik+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKGF1
dG8qIHN0b3JlID0gd2Vic2l0ZURhdGFTdG9yZUZyb21TZXNzaW9uSUQoc2Vzc2lvbklEKSkgewog
ICAgICAgICBzdG9yZS0+b3BlbldpbmRvd0Zyb21TZXJ2aWNlV29ya2VyKHVybFN0cmluZywgc2Vy
dmljZVdvcmtlck9yaWdpbiwgV1RGTW92ZShjYWxsYmFjaykpOwpAQCAtMTgxNCw2ICsxODE0LDE3
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6b3BlbldpbmRvd0Zyb21TZXJ2aWNlV29ya2Vy
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwKICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOwog
fQogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Om5hdmlnYXRlU2VydmljZVdvcmtlckNsaWVu
dChGcmFtZUlkZW50aWZpZXIgZnJhbWVJZGVudGlmaWVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
SWRlbnRpZmllciBkb2N1bWVudElkZW50aWZpZXIsIGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+KT4mJiBjYWxsYmFjaykK
K3sKKyAgICBhdXRvKiBwcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRp
Zmllcihkb2N1bWVudElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgYXV0byog
ZnJhbWUgPSBwcm9jZXNzID8gcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJZGVudGlmaWVyKSA6IG51
bGxwdHI7CisgICAgaWYgKCFmcmFtZSkgeworICAgICAgICBjYWxsYmFjayh7IH0pOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIGZyYW1lLT5uYXZpZ2F0ZVNlcnZpY2VXb3JrZXJDbGllbnQo
ZG9jdW1lbnRJZGVudGlmaWVyLCB1cmwsIFdURk1vdmUoY2FsbGJhY2spKTsKK30KKwogdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjphcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCgpCiB7CiAg
ICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkFwcGxpY2F0aW9uRGlkRW50ZXJCYWNr
Z3JvdW5kKCksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCBhZmFiNTJkMzYzM2U1ZDQwNGVmZDk1ZWNlNmZh
ZTk3MWQxYWZhZGQ4Li42ZDk2ZDAyM2Y5Mzk0OGVkZGE1YzZhZGM3MjQzMmRkNmRjNDU0ZTRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaApAQCAtMzA0LDYgKzMwNCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgb3Blbldp
bmRvd0Zyb21TZXJ2aWNlV29ya2VyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHVybFN0
cmluZywgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzZXJ2aWNlV29ya2VyT3Jp
Z2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXI+JiYpPiYmKTsKIAorICAgIHZvaWQgbmF2aWdhdGVTZXJ2aWNlV29ya2VyQ2xpZW50
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4
dElkZW50aWZpZXIsIGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4pPiYmKTsKKwogcHJpdmF0ZToKICAgICBleHBs
aWNpdCBOZXR3b3JrUHJvY2Vzc1Byb3h5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5p
bgppbmRleCAwZjdmMTM1OTQzMzQxMzY5YWVhZGI5MGE4ODg5YTIwYzYzYWEwZTdlLi4wMjFmYjFh
NTMxNDRhNmRmMDMwZWI2Y2RhMzI0ZGQ1MzkxMGM0NmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1l
c3NhZ2VzLmluCkBAIC05Myw2ICs5Myw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJv
eHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIERhdGFUYXNrRGlkQ29tcGxldGVXaXRoRXJyb3IoV2Vi
S2l0OjpEYXRhVGFza0lkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciBlcnJvcikKIAogICAgIE9wZW5XaW5kb3dGcm9tU2VydmljZVdvcmtlcihQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFN0cmluZyB1cmxTdHJpbmcsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEgc2VydmljZVdvcmtlck9yaWdpbikgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
UGFnZUlkZW50aWZpZXI+IG5ld1BhZ2UpCisgICAgTmF2aWdhdGVTZXJ2aWNlV29ya2VyQ2xpZW50
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGRvY3VtZW50SWRlbnRpZmllciwgVVJMIHVybCkg
LT4gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2UpCiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcApp
bmRleCA2MmI4NWI3MjYzZjJhODEyNDQ0NGYwZmUyNWNiMjIwMjIwNDI3YzhhLi44OGIyZWE4Mzg2
NzJhYzcxODY1ZWI2OWJjYWY1ZmIyMmNhMDBhODdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCkBAIC0yMzgsOCArMjM4LDEwIEBAIHZv
aWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZENyZWF0ZU1haW5GcmFtZShGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCkKIAogICAgIC8vIFJlc3RvcmUgdGhlIG1haW4gZnJhbWUncyBjb21taXR0ZWQg
VVJMIGFzIHNvbWUgY2xpZW50cyBtYXkgcmVseSBvbiBpdCB1bnRpbCB0aGUgbmV4dCBsb2FkIGlz
IGNvbW1pdHRlZC4KICAgICBSZWZQdHIgcHJldmlvdXNNYWluRnJhbWUgPSBtX3BhZ2UubWFpbkZy
YW1lKCk7Ci0gICAgaWYgKHByZXZpb3VzTWFpbkZyYW1lKQorICAgIGlmIChwcmV2aW91c01haW5G
cmFtZSkgewogICAgICAgICBtX21haW5GcmFtZS0+ZnJhbWVMb2FkU3RhdGUoKS5zZXRVUkwocHJl
dmlvdXNNYWluRnJhbWUtPnVybCgpKTsKKyAgICAgICAgcHJldmlvdXNNYWluRnJhbWUtPnRyYW5z
ZmVyTmF2aWdhdGlvbkNhbGxiYWNrVG9GcmFtZSgqbV9tYWluRnJhbWUpOworICAgIH0KIAogICAg
IC8vIE5vcm1hbGx5LCBub3RpZmljYXRpb24gb2YgYSBzZXJ2ZXIgcmVkaXJlY3QgY29tZXMgZnJv
bSB0aGUgV2ViQ29udGVudCBwcm9jZXNzLgogICAgIC8vIElmIHdlIGFyZSBwcm9jZXNzIHN3YXBw
aW5nIGluIHJlc3BvbnNlIHRvIGEgc2VydmVyIHJlZGlyZWN0IHRoZW4gdGhhdCBub3RpZmljYXRp
b24gd2lsbCBub3QgY29tZSBmcm9tIHRoZSBuZXcgV2ViQ29udGVudCBwcm9jZXNzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcAppbmRleCBkNDRhNWRiZTZhM2YyNjYz
MGIzNDkxMzI0NGU3ZTQzYjJjMWYxNjMxLi4zZTA0ZWU5YWFlZDA3MzNiYTJkZWNlZDZkZTMxNDg3
NzAwYmIxYmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcApA
QCAtNTgsNiArNTgsOSBAQCBXZWJGcmFtZVByb3h5Ojp+V2ViRnJhbWVQcm94eSgpCiAjaWYgUExB
VEZPUk0oR1RLKQogICAgIFdlYlBhc3RlYm9hcmRQcm94eTo6c2luZ2xldG9uKCkuZGlkRGVzdHJv
eUZyYW1lKHRoaXMpOwogI2VuZGlmCisKKyAgICBpZiAobV9uYXZpZ2F0ZUNhbGxiYWNrKQorICAg
ICAgICBtX25hdmlnYXRlQ2FsbGJhY2soeyB9KTsKIH0KIAogdm9pZCBXZWJGcmFtZVByb3h5Ojp3
ZWJQcm9jZXNzV2lsbFNodXREb3duKCkKQEAgLTY4LDYgKzcxLDkgQEAgdm9pZCBXZWJGcmFtZVBy
b3h5Ojp3ZWJQcm9jZXNzV2lsbFNodXREb3duKCkKICAgICAgICAgbV9hY3RpdmVMaXN0ZW5lci0+
aWdub3JlKCk7CiAgICAgICAgIG1fYWN0aXZlTGlzdGVuZXIgPSBudWxscHRyOwogICAgIH0KKwor
ICAgIGlmIChtX25hdmlnYXRlQ2FsbGJhY2spCisgICAgICAgIG1fbmF2aWdhdGVDYWxsYmFjayh7
IH0pOwogfQogCiBib29sIFdlYkZyYW1lUHJveHk6OmlzTWFpbkZyYW1lKCkgY29uc3QKQEAgLTc4
LDYgKzg0LDM4IEBAIGJvb2wgV2ViRnJhbWVQcm94eTo6aXNNYWluRnJhbWUoKSBjb25zdAogICAg
IHJldHVybiB0aGlzID09IG1fcGFnZS0+bWFpbkZyYW1lKCkgfHwgKG1fcGFnZS0+cHJvdmlzaW9u
YWxQYWdlUHJveHkoKSAmJiB0aGlzID09IG1fcGFnZS0+cHJvdmlzaW9uYWxQYWdlUHJveHkoKS0+
bWFpbkZyYW1lKCkpOwogfQogCitzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBXZWJGcmFt
ZVByb3h5OjpwYWdlSWRlbnRpZmllcigpCit7CisgICAgaWYgKCFtX3BhZ2UpCisgICAgICAgIHJl
dHVybiB7IH07CisgICAgcmV0dXJuIG1fcGFnZS0+d2ViUGFnZUlEKCk7Cit9CisKK3ZvaWQgV2Vi
RnJhbWVQcm94eTo6bmF2aWdhdGVTZXJ2aWNlV29ya2VyQ2xpZW50KFdlYkNvcmU6OlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGRvY3VtZW50SWRlbnRpZmllciwgY29uc3QgVVJMJiB1
cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4p
PiYmIGNhbGxiYWNrKQoreworICAgIGlmICghbV9wYWdlKSB7CisgICAgICAgIGNhbGxiYWNrKHsg
fSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3BhZ2UtPnNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6V2ViUGFnZTo6TmF2aWdhdGVTZXJ2aWNlV29ya2VyQ2xpZW50IHsgZG9j
dW1lbnRJZGVudGlmaWVyLCB1cmwgfSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhp
cyB9LCB1cmwsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgcmVzdWx0KSBtdXRh
YmxlIHsKKyAgICAgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKHsgfSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW1fYWN0aXZl
TGlzdGVuZXIpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKHBhZ2VJZGVudGlmaWVyKCkpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1fbmF2aWdhdGVDYWxs
YmFjaykKKyAgICAgICAgICAgIG1fbmF2aWdhdGVDYWxsYmFjayh7IH0pOworCisgICAgICAgIG1f
bmF2aWdhdGVDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOworICAgIH0pOworfQorCiB2b2lk
IFdlYkZyYW1lUHJveHk6OmxvYWRVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVm
ZXJyZXIpCiB7CiAgICAgaWYgKCFtX3BhZ2UpCkBAIC05NSw3ICsxMzMsNyBAQCB2b2lkIFdlYkZy
YW1lUHJveHk6OmxvYWREYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3Qg
U3RyaW5nJiBNSU1FVAogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZERh
dGFJbkZyYW1lKGRhdGEsIE1JTUVUeXBlLCBlbmNvZGluZ05hbWUsIGJhc2VVUkwsIG1fZnJhbWVJ
RCkpOwogfQogCi12b2lkIFdlYkZyYW1lUHJveHk6OnN0b3BMb2FkaW5nKCkgY29uc3QKK3ZvaWQg
V2ViRnJhbWVQcm94eTo6c3RvcExvYWRpbmcoKQogewogICAgIGlmICghbV9wYWdlKQogICAgICAg
ICByZXR1cm47CkBAIC0xMDQsNiArMTQyLDkgQEAgdm9pZCBXZWJGcmFtZVByb3h5OjpzdG9wTG9h
ZGluZygpIGNvbnN0CiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U3RvcExvYWRpbmdGcmFtZShtX2ZyYW1lSUQpKTsKKworICAgIGlmIChtX25h
dmlnYXRlQ2FsbGJhY2spCisgICAgICAgIG1fbmF2aWdhdGVDYWxsYmFjayh7IH0pOwogfQogICAg
IAogYm9vbCBXZWJGcmFtZVByb3h5OjpjYW5Qcm92aWRlU291cmNlKCkgY29uc3QKQEAgLTE2MCw2
ICsyMDEsOSBAQCB2b2lkIFdlYkZyYW1lUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZv
clByb3Zpc2lvbmFsTG9hZChjb25zdCBVUkwmIHVybCkKIHZvaWQgV2ViRnJhbWVQcm94eTo6ZGlk
RmFpbFByb3Zpc2lvbmFsTG9hZCgpCiB7CiAgICAgbV9mcmFtZUxvYWRTdGF0ZS5kaWRGYWlsUHJv
dmlzaW9uYWxMb2FkKCk7CisKKyAgICBpZiAobV9uYXZpZ2F0ZUNhbGxiYWNrKQorICAgICAgICBt
X25hdmlnYXRlQ2FsbGJhY2soeyB9KTsKIH0KIAogdm9pZCBXZWJGcmFtZVByb3h5OjpkaWRDb21t
aXRMb2FkKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFdlYkNlcnRpZmljYXRlSW5mbyYgY2Vy
dGlmaWNhdGVJbmZvLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQpCkBAIC0xNzUsMTEgKzIx
OSwxNyBAQCB2b2lkIFdlYkZyYW1lUHJveHk6OmRpZENvbW1pdExvYWQoY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSwgV2ViQ2VydGlmaWNhdGVJbmZvJgogdm9pZCBXZWJGcmFtZVByb3h5OjpkaWRG
aW5pc2hMb2FkKCkKIHsKICAgICBtX2ZyYW1lTG9hZFN0YXRlLmRpZEZpbmlzaExvYWQoKTsKKwor
ICAgIGlmIChtX25hdmlnYXRlQ2FsbGJhY2spCisgICAgICAgIG1fbmF2aWdhdGVDYWxsYmFjayhw
YWdlSWRlbnRpZmllcigpKTsKIH0KIAogdm9pZCBXZWJGcmFtZVByb3h5OjpkaWRGYWlsTG9hZCgp
CiB7CiAgICAgbV9mcmFtZUxvYWRTdGF0ZS5kaWRGYWlsTG9hZCgpOworCisgICAgaWYgKG1fbmF2
aWdhdGVDYWxsYmFjaykKKyAgICAgICAgbV9uYXZpZ2F0ZUNhbGxiYWNrKHsgfSk7CiB9CiAKIHZv
aWQgV2ViRnJhbWVQcm94eTo6ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbihjb25zdCBVUkwmIHVy
bCkKQEAgLTE5Nyw2ICsyNDcsOSBAQCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkmIFdlYkZy
YW1lUHJveHk6OnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShDb21wbGV0aW9uSAogICAgIGlmICht
X2FjdGl2ZUxpc3RlbmVyKQogICAgICAgICBtX2FjdGl2ZUxpc3RlbmVyLT5pZ25vcmUoKTsKICAg
ICBtX2FjdGl2ZUxpc3RlbmVyID0gV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5OjpjcmVhdGUo
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoUG9saWN5QWN0aW9uIGFjdGlvbiwgQVBJOjpX
ZWJzaXRlUG9saWNpZXMqIHBvbGljaWVzLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHBy
b2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJvd3NpbmdXYXJuaW5nPiYm
IHNhZmVCcm93c2luZ1dhcm5pbmcsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pIG11dGFibGUgeworICAgICAgICBp
ZiAoYWN0aW9uICE9IFBvbGljeUFjdGlvbjo6VXNlICYmIG1fbmF2aWdhdGVDYWxsYmFjaykKKyAg
ICAgICAgICAgIG1fbmF2aWdhdGVDYWxsYmFjayhwYWdlSWRlbnRpZmllcigpKTsKKwogICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihhY3Rpb24sIHBvbGljaWVzLCBwcm9jZXNzU3dhcFJlcXVlc3Rl
ZEJ5Q2xpZW50LCBXVEZNb3ZlKHNhZmVCcm93c2luZ1dhcm5pbmcpLCBpc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluKTsKICAgICAgICAgbV9hY3RpdmVMaXN0ZW5lciA9IG51bGxwdHI7CiAgICAg
fSwgZXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0LCBleHBlY3RBcHBCb3VuZERvbWFpblJlc3VsdCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKaW5kZXggMzkxYjAyNzM2Mjgz
NDFlZGFhODgzMGIzNzRmMGZiMTMxMjQwMTcyYS4uMDZlODJlZTRlNzlmZjM0ZTY3MmNhMDdiMjVm
OTQyNjdmMjRiNjhiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJh
bWVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaApA
QCAtNzcsMTAgKzc3LDEyIEBAIHB1YmxpYzoKIAogICAgIEZyYW1lTG9hZFN0YXRlJiBmcmFtZUxv
YWRTdGF0ZSgpIHsgcmV0dXJuIG1fZnJhbWVMb2FkU3RhdGU7IH0KIAorICAgIHZvaWQgbmF2aWdh
dGVTZXJ2aWNlV29ya2VyQ2xpZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyLCBjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+KT4mJik7CisKICAgICB2b2lkIGxvYWRVUkwoY29uc3Qg
VVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciA9IFN0cmluZygpKTsKICAgICAvLyBTdWIgZnJh
bWVzIG9ubHkuIEZvciBtYWluIGZyYW1lcywgdXNlIFdlYlBhZ2VQcm94eTo6bG9hZERhdGEuCiAg
ICAgdm9pZCBsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcm
IE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiBiYXNlVVJM
KTsKLSAgICB2b2lkIHN0b3BMb2FkaW5nKCkgY29uc3Q7CisgICAgdm9pZCBzdG9wTG9hZGluZygp
OwogCiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lTG9hZFN0YXRl
LnVybCgpOyB9CiAgICAgY29uc3QgVVJMJiBwcm92aXNpb25hbFVSTCgpIGNvbnN0IHsgcmV0dXJu
IG1fZnJhbWVMb2FkU3RhdGUucHJvdmlzaW9uYWxVUkwoKTsgfQpAQCAtMTI4LDkgKzEzMCwxMyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBjb2xsYXBzZVNlbGVjdGlvbigpOwogI2VuZGlmCiAKKyAgICB2
b2lkIHRyYW5zZmVyTmF2aWdhdGlvbkNhbGxiYWNrVG9GcmFtZShXZWJGcmFtZVByb3h5JiBmcmFt
ZSkgeyBzdGQ6OmV4Y2hhbmdlKGZyYW1lLm1fbmF2aWdhdGVDYWxsYmFjaywgV1RGTW92ZShtX25h
dmlnYXRlQ2FsbGJhY2spKTsgfQorCiBwcml2YXRlOgogICAgIFdlYkZyYW1lUHJveHkoV2ViUGFn
ZVByb3h5JiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKIAorICAgIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJZGVudGlmaWVyKCk7CisKICAgICBXZWFrUHRy
PFdlYlBhZ2VQcm94eT4gbV9wYWdlOwogCiAgICAgRnJhbWVMb2FkU3RhdGUgbV9mcmFtZUxvYWRT
dGF0ZTsKQEAgLTE0NCw2ICsxNTAsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKICAgICBXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgbV9jb250
ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI7CiAjZW5kaWYKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+KT4gbV9uYXZpZ2F0ZUNh
bGxiYWNrOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAxNzA0NTBhOTViYTZlOGE0OWVlNWZjODFl
MTFiNTUwOTFiYjk0YjYyLi4zNTkzZWYyYTJhYzU1OTIxYTgzYjA1ZWZmMzY2ODUwMTIwOGNkMjQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTU1
NSw2ICs1NTUsMTUgQEAgV2ViUGFnZVByb3h5KiBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UoV2Vi
UGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQpCiAgICAgcmV0dXJuIGdsb2JhbFBhZ2VNYXAoKS5n
ZXQocGFnZUlEKTsKIH0KIAorV2ViUGFnZVByb3h5KiBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2VG
cm9tSWRlbnRpZmllcihXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSWRlbnRpZmllcikKK3sK
KyAgICBmb3IgKGF1dG8mIHBhZ2UgOiBnbG9iYWxQYWdlTWFwKCkpIHsKKyAgICAgICAgaWYgKHBh
Z2UudmFsdWUtPndlYlBhZ2VJRCgpID09IHBhZ2VJZGVudGlmaWVyKQorICAgICAgICAgICAgcmV0
dXJuIHBhZ2UudmFsdWU7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCiAjaWYgRU5B
QkxFKElOVEVMTElHRU5UX1RSQUNLSU5HX1BSRVZFTlRJT04pCiB2b2lkIFdlYlByb2Nlc3NQcm94
eTo6bm90aWZ5UGFnZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NlZCgpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDA1NTVkM2Q1NzYzNDVi
YjI0OTYxMDg1OGQ2OTQ2NmU0OTE1OWYxYWMuLjFkZjZkNjFiMTc1ZjcyNTdmNWFiYzE3ZTUwMjAx
MDgyNGNiNjBlMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
CkBAIC0xNzcsNiArMTc3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFdlYlByb2Nlc3NQcm94
eSogcHJvY2Vzc0ZvcklkZW50aWZpZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOwogICAg
IHN0YXRpYyBXZWJQYWdlUHJveHkqIHdlYlBhZ2UoV2ViUGFnZVByb3h5SWRlbnRpZmllcik7Cisg
ICAgc3RhdGljIFdlYlBhZ2VQcm94eSogd2ViUGFnZUZyb21JZGVudGlmaWVyKFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyKTsKICAgICBSZWY8V2ViUGFnZVByb3h5PiBjcmVhdGVXZWJQYWdlKFBhZ2VD
bGllbnQmLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAKICAgICBlbnVtIGNsYXNz
IEJlZ2luc1VzaW5nRGF0YVN0b3JlIDogYm9vbCB7IE5vLCBZZXMgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmNwcAppbmRleCA3M2VjZGUyNmQ4ZTA5YzliYTYwYmQ0NTE4ZjlhZDA1
NWEwMmI3NjJhLi44ZjBmODE0NjUwY2I1OTk1MTkxMTMyMjg2YTNhMWU4M2RlOWNmMzkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC0zNDksNiArMzQ5LDE3IEBAIHZv
aWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmNsYWltKFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIHNlcnZpY2VXb3JrZXJJCiAgICAgfSk7CiB9CiAKK3ZvaWQgV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb246Om5hdmlnYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVy
IGNsaWVudElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBjb25zdCBVUkwmIHVybCwgTmF2aWdhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQor
eworICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpOYXZpZ2F0ZSB7IGNsaWVu
dElkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCB1cmwgfSwgW2NhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBpZiAo
IXJlc3VsdC5oYXNfdmFsdWUoKSkgeworICAgICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZXN1
bHQpLmVycm9yKCkudG9FeGNlcHRpb24oKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZXN1bHQpLnZhbHVlKCkpOworICAgIH0pOwor
fQorCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpmb2N1cyhTY3JpcHRFeGVj
dXRpb25Db250ZXh0SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYp
PiYmIGNhbGxiYWNrKQogewogICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpG
b2N1cyB7IGNsaWVudElkZW50aWZpZXIgfSwgV1RGTW92ZShjYWxsYmFjaykpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5kZXggNTg0MjgyYzEwODNlMTQ4NmY5ZTFmZTJmODBjMTYw
NjZmMGQ1MWFjMi4uZTJlZTMwNmE3MTRjYzc0MGI5M2NlN2Y4ODEzMjdmMWQ4NzdmYzA2NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBAIC04Miw2ICs4Miw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBtYXRjaEFsbChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29u
c3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyYsIFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJDbGllbnRzTWF0Y2hBbGxDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNs
YWltKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkNvcmU6OkV4Y2VwdGlvbk9yPHZvaWQ+JiYpPiYmKSBmaW5hbDsKICAgICB2b2lkIGZv
Y3VzKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERh
dGE+JiYpPiYmKSBmaW5hbDsKKyAgICB2b2lkIG5hdmlnYXRlKFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
Y29uc3QgVVJMJiwgTmF2aWdhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHNraXBXYWl0
aW5nKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpIGZpbmFsOwogICAgIHZvaWQgc2V0U2NyaXB0UmVzb3VyY2UoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFVSTCYsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQmKSBmaW5hbDsKICAgICBib29sIGlzVGhy
b3R0bGVhYmxlKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCmluZGV4IGQ2YjMyMmEwOTYwZmMyNDIwNDE2NGNhOTljNzgzOWY1ODcz
OTMyMzQuLjA4OWY4NGExNTIyMTM3YjM5YWVkYTY5MDA1Yjk5YmFkZWVhMjM3M2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC02NDM5LDYgKzY0
MzksMjIgQEAgdm9pZCBXZWJQYWdlOjppbnRlcmFjdGlvblJlZ2lvbnMoRmxvYXRSZWN0IHJlY3RJ
bkNvbnRlbnRDb29yZGluYXRlcywgQ29tcGxldGlvbkgKICAgICBjb21wbGV0aW9uSGFuZGxlcihX
ZWJDb3JlOjppbnRlcmFjdGlvblJlZ2lvbnMoKm1fcGFnZSwgcmVjdEluQ29udGVudENvb3JkaW5h
dGVzKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6bmF2aWdhdGVTZXJ2aWNlV29ya2VyQ2xpZW50KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGRvY3VtZW50SWRlbnRpZmllciwgY29uc3Qg
VVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCit7Cisj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIGF1dG8qIGRvY3VtZW50ID0gRG9jdW1lbnQ6
OmFsbERvY3VtZW50c01hcCgpLmdldChkb2N1bWVudElkZW50aWZpZXIpOworICAgIGlmICghZG9j
dW1lbnQpIHsKKyAgICAgICAgY2FsbGJhY2soZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIGRvY3VtZW50LT5uYXZpZ2F0ZUZyb21TZXJ2aWNlV29ya2VyKHVybCwgV1RGTW92ZShj
YWxsYmFjaykpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZG9jdW1lbnRJZGVudGlmaWVyKTsK
KyAgICBVTlVTRURfUEFSQU0odXJsKTsKKyAgICBjYWxsYmFjayhmYWxzZSk7CisjZW5kaWYKK30K
Kwogdm9pZCBXZWJQYWdlOjpzZXRBbHdheXNTaG93c0hvcml6b250YWxTY3JvbGxlcihib29sIGFs
d2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVyKQogewogICAgIGlmIChhbHdheXNTaG93c0hvcml6
b250YWxTY3JvbGxlciA9PSBtX2Fsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDFlZTc0ZjRkOTIzN2Vh
MDg5YzI4OWZjMTE0YTYwOTczOGMzNTkyNWMuLjg1MWQzNGI0YTE4MGQ2YzM3ZGQ4NmExOTI2MDE2
NmY5YWI5ZDU1YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKQEAgLTk0NSw2ICs5NDUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRFbmRVc2VyVHJpZ2dl
cmVkU2VsZWN0aW9uQ2hhbmdlcygpOwogCiAgICAgdm9pZCBpbnRlcmFjdGlvblJlZ2lvbnMoV2Vi
Q29yZTo6RmxvYXRSZWN0IHJlY3RJbkNvbnRlbnRDb29yZGluYXRlcywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6SW50ZXJhY3Rpb25SZWdpb24+KT4mJik7CisgICAgdm9p
ZCBuYXZpZ2F0ZVNlcnZpY2VXb3JrZXJDbGllbnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dElkZW50aWZpZXIsIGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVB
Y2Nlc3NpYmlsaXR5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCAyZmJkZWM4YjhjYzI0ZWEyMTJiYTJlYWMyNWNj
OWUzZGVkYWU1NjY2Li5lZTgxMTM4YzRiZmExNWEzMjhkOWE2YTg1ODUxODRmYTIzYTMzOTQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4KQEAgLTY4Myw0ICs2ODMsNiBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21t
YW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAg
IFNjcm9sbFRvUmVjdChXZWJDb3JlOjpGbG9hdFJlY3QgdGFyZ2V0UmVjdCwgV2ViQ29yZTo6Rmxv
YXRQb2ludCBvcmlnaW4pCiAKICAgICBJbnRlcmFjdGlvblJlZ2lvbnMoV2ViQ29yZTo6RmxvYXRS
ZWN0IHJlY3RJbkNvbnRlbnRDb29yZGluYXRlcykgLT4gKFZlY3RvcjxXZWJDb3JlOjpJbnRlcmFj
dGlvblJlZ2lvbj4gcmVnaW9ucykKKworICAgIE5hdmlnYXRlU2VydmljZVdvcmtlckNsaWVudChX
ZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBkb2N1bWVudElkZW50aWZp
ZXIsIFVSTCB1cmwpIC0+IChib29sIHJlc3VsdCkKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyMGJlOGViZmFlODk3MzNmZTBiMzEwNzJiNDlm
YjJkYmM5OWI2Y2NiLi5hYWViZDA2NzU0MmRiZGZmMTM4NGU1NDQ5MGQ5Y2ExOGM3ZmM0YTUyIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTIgQEAKKzIwMjItMDQtMDUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgor
CisgICAgICAgIEltcGxlbWVudCBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50Lm5hdmlnYXRlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg3MzgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tOgorCiAyMDIyLTA0
LTAyICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAg
W0NvY29hXSBBdXRvbWF0aWNhbGx5IHJlbGF5b3V0IHRoZSBwYWdlIHdoZW4gbmV3IGZvbnRzIGFy
ZSBpbnN0YWxsZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0KaW5kZXggMTVlZDZlZDQ4Mjg4MjBjZGEz
NTYxM2NhZWRhMDA5YmZjZTE5YjdhYi4uN2E5MDViZWU1MzdjZjZmMmU4MzBlYTQ2Y2Y3YjkzZDdh
M2E4NjY2NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9TZXJ2aWNlV29ya2VyQmFzaWMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0KQEAgLTI5NjYsMyArMjk2NiwxNzIgQEAg
VEVTVChTZXJ2aWNlV29ya2VyLCBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50Rm9jdXNSZXF1aXJl
c1VzZXJHZXN0dXJlKQogICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAImZvY3VzQ2xp
ZW50KCkiIGNvbXBsZXRpb25IYW5kbGVyOiBuaWxdOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZG9uZSk7CiB9CisKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBTZXJ2aWNlV29ya2VyV2lu
ZG93Q2xpZW50TmF2aWdhdGVNYWluID0KKyI8ZGl2PnRlc3QgcGFnZTwvZGl2PiIKKyI8c2NyaXB0
PiIKKyJsZXQgd29ya2VyOyIKKyJhc3luYyBmdW5jdGlvbiByZWdpc3RlclNlcnZpY2VXb3JrZXIo
KSB7IgorIiAgICB0cnkgeyIKKyIgICAgICAgIGNvbnN0IHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5h
dmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKTsiCisiICAgICAgICBpZiAo
cmVnaXN0cmF0aW9uLmFjdGl2ZSkgeyIKKyIgICAgICAgICAgICB3b3JrZXIgPSByZWdpc3RyYXRp
b24uYWN0aXZlOyIKKyIgICAgICAgICAgICBhbGVydCgnYWxyZWFkeSBhY3RpdmUnKTsiCisiICAg
ICAgICAgICAgcmV0dXJuOyIKKyIgICAgICAgIH0iCisiICAgICAgICB3b3JrZXIgPSByZWdpc3Ry
YXRpb24uaW5zdGFsbGluZzsiCisiICAgICAgICB3b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignc3Rh
dGVjaGFuZ2UnLCAoKSA9PiB7IgorIiAgICAgICAgICAgIGlmICh3b3JrZXIuc3RhdGUgPT0gJ2Fj
dGl2YXRlZCcpIgorIiAgICAgICAgICAgICAgICBhbGVydCgnc3VjY2Vzc2Z1bGx5IHJlZ2lzdGVy
ZWQnKTsiCisiICAgICAgICB9KTsiCisiICAgIH0gY2F0Y2goZSkgeyIKKyIgICAgICAgIGFsZXJ0
KCdFeGNlcHRpb246ICcgKyBlKTsiCisiICAgIH0iCisifSIKKyJ3aW5kb3cub25sb2FkID0gcmVn
aXN0ZXJTZXJ2aWNlV29ya2VyOyIKKyIiCisiZnVuY3Rpb24gbmF2aWdhdGVPdGhlckNsaWVudFRv
VVJMKHVybCkgeyIKKyIgICAgd29ya2VyLnBvc3RNZXNzYWdlKHtuYXZpZ2F0ZU90aGVyQ2xpZW50
VG9VUkw6IHVybH0pOyIKKyIgICAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIub25tZXNzYWdlID0g
KGV2ZW50KSA9PiB7IgorIiAgICAgICAgYWxlcnQoZXZlbnQuZGF0YSk7IgorIiAgICB9OyIKKyJ9
IgorIjwvc2NyaXB0PiJfczsKKworc3RhdGljIGNvbnN0ZXhwciBhdXRvIFNlcnZpY2VXb3JrZXJX
aW5kb3dDbGllbnROYXZpZ2F0ZUpTID0KKyJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2Un
LCBhc3luYyAoZXZlbnQpID0+IHsiCisiICAgaWYgKGV2ZW50LmRhdGEgJiYgZXZlbnQuZGF0YS5u
YXZpZ2F0ZU90aGVyQ2xpZW50VG9VUkwpIHsiCisiICAgICAgIGxldCBvdGhlckNsaWVudDsiCisi
ICAgICAgIGxldCBjdXJyZW50Q2xpZW50cyA9IGF3YWl0IHNlbGYuY2xpZW50cy5tYXRjaEFsbCgp
OyIKKyIgICAgICAgZm9yIChsZXQgY2xpZW50IG9mIGN1cnJlbnRDbGllbnRzKSB7IgorIiAgICAg
ICAgICAgaWYgKGNsaWVudC5pZCAhPT0gZXZlbnQuc291cmNlLmlkKSIKKyIgICAgICAgICAgICAg
ICBvdGhlckNsaWVudCA9IGNsaWVudDsiCisiICAgICAgIH0iCisiICAgICAgIGlmICghb3RoZXJD
bGllbnQpIHsiCisiICAgICAgICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoJ2ZhaWxlZCwg
bm8gb3RoZXIgY2xpZW50LCBjbGllbnQgbnVtYmVyID0gJyArIGN1cnJlbnRDbGllbnRzLmxlbmd0
aCk7IgorIiAgICAgICAgICAgcmV0dXJuOyIKKyIgICAgICAgfSIKKyIgICAgICAgYXdhaXQgb3Ro
ZXJDbGllbnQubmF2aWdhdGUoZXZlbnQuZGF0YS5uYXZpZ2F0ZU90aGVyQ2xpZW50VG9VUkwpLnRo
ZW4oKGNsaWVudCkgPT4geyIKKyIgICAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZShj
bGllbnQgPyAnY2xpZW50JyA6ICdub25lJyk7IgorIiAgICAgICB9LCAoZSkgPT4geyIKKyIgICAg
ICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgnZmFpbGVkJyk7IgorIiAgICAgICB9KTsi
CisiICAgICAgIHJldHVybjsiCisiICAgfSIKKyJ9KTsiX3M7CisKKworQGludGVyZmFjZSBTZXJ2
aWNlV29ya2VyUFNPTk5hdmlnYXRpb25EZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25E
ZWxlZ2F0ZVByaXZhdGU+IHsKKyAgICBAcHVibGljIHZvaWQgKF5kZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKShXS05hdmlnYXRpb25BY3Rpb24gKiwgdm9pZCAoXikoV0tOYXZpZ2F0aW9u
QWN0aW9uUG9saWN5KSk7CisgICAgQHB1YmxpYyB2b2lkICheZGlkU3RhcnRQcm92aXNpb25hbE5h
dmlnYXRpb25IYW5kbGVyKSgpOworICAgIEBwdWJsaWMgdm9pZCAoXmRpZENvbW1pdE5hdmlnYXRp
b25IYW5kbGVyKSgpOworfQorQGVuZAorCitAaW1wbGVtZW50YXRpb24gU2VydmljZVdvcmtlclBT
T05OYXZpZ2F0aW9uRGVsZWdhdGUKKworLSAoaW5zdGFuY2V0eXBlKSBpbml0Cit7CisgICAgc2Vs
ZiA9IFtzdXBlciBpbml0XTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZCl3ZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdL
TmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gZGVjaXNpb25IYW5kbGVyOih2b2lk
ICheKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKWRlY2lzaW9uSGFuZGxlcgoreworICAgIGRl
Y2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdyk7Cit9CisKKy0gKHZv
aWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
UmVzcG9uc2U6KFdLTmF2aWdhdGlvblJlc3BvbnNlICopbmF2aWdhdGlvblJlc3BvbnNlIGRlY2lz
aW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpKWRlY2lzaW9u
SGFuZGxlcgoreworICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25SZXNwb25zZVBvbGlj
eUFsbG93KTsKK30KKworQGVuZAorCitURVNUKFNlcnZpY2VXb3JrZXIsIFdpbmRvd0NsaWVudE5h
dmlnYXRlKQoreworICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0ZURhdGFSZWNv
cmRzRm9yQWxsT3JpZ2luc107CisKKyAgICAvLyBTdGFydCB3aXRoIGEgY2xlYW4gc2xhdGUgZGF0
YSBzdG9yZQorICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIHJlbW92
ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9k
aWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgewor
ICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9
IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgZm9y
IChfV0tFeHBlcmltZW50YWxGZWF0dXJlICpmZWF0dXJlIGluIFtXS1ByZWZlcmVuY2VzIF9leHBl
cmltZW50YWxGZWF0dXJlc10pIHsKKyAgICAgICAgaWYgKFtmZWF0dXJlLmtleSBpc0VxdWFsVG9T
dHJpbmc6QCJDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuYWJsZWQiXSkKKyAgICAgICAgICAgIFtb
Y29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEVuYWJsZWQ6WUVTIGZvckV4cGVyaW1lbnRh
bEZlYXR1cmU6ZmVhdHVyZV07CisgICAgICAgIGVsc2UgaWYgKFtmZWF0dXJlLmtleSBpc0VxdWFs
VG9TdHJpbmc6QCJDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5RW5hYmxlZCJdKQorICAgICAgICAg
ICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9yRXhwZXJp
bWVudGFsRmVhdHVyZTpmZWF0dXJlXTsKKyAgICB9CisKKyAgICBhdXRvIHdlYlZpZXcxID0gYWRv
cHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCAzMDAsIDMwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIGFkZFRvV2luZG93
OllFU10pOworICAgIGF1dG8gd2ViVmlldzIgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDMwMCwgMzAwKSBjb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb24uZ2V0KCkgYWRkVG9XaW5kb3c6WUVTXSk7CisKKyAgICBUZXN0V2ViS2l0
QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7CisgICAgICAgIHsgIi8iX3MsIHsgU2VydmljZVdvcmtl
cldpbmRvd0NsaWVudE5hdmlnYXRlTWFpbiB9IH0sCisgICAgICAgIHsgIi8/dGVzdCJfcywgeyBT
ZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50TmF2aWdhdGVNYWluIH0gfSwKKyAgICAgICAgeyAiLz9z
d2FwIl9zLCB7IHt7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9odG1sIl9zIH0sIHsg
IkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5Il9zLCAic2FtZS1vcmlnaW4iX3MgfSB9LCBTZXJ2
aWNlV29ya2VyV2luZG93Q2xpZW50TmF2aWdhdGVNYWluIH0gfSwKKyAgICAgICAgeyAiL3N3Lmpz
Il9zLCB7IHt7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH19
LCBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50TmF2aWdhdGVKUyB9IH0KKyAgICB9LCBUZXN0V2Vi
S2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cCwgbnVsbHB0ciwgbnVsbHB0ciwgODA5
MSk7CisKKyAgICBbd2ViVmlldzEgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAg
RVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3MSBfdGVzdF93YWl0Rm9yQWxlcnRdLCAic3VjY2Vzc2Z1
bGx5IHJlZ2lzdGVyZWQiKTsKKyAgICBbd2ViVmlldzIgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVl
c3QoKV07CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3MiBfdGVzdF93YWl0Rm9yQWxlcnRd
LCAiYWxyZWFkeSBhY3RpdmUiKTsKKworICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRv
cHROUyhbW1NlcnZpY2VXb3JrZXJQU09OTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7
CisgICAgW3dlYlZpZXcyIHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpuYXZpZ2F0aW9uRGVsZWdhdGUu
Z2V0KCldOworCisgICAgYXV0byAqYmFzZVVSTCA9IFtbc2VydmVyLnJlcXVlc3QoKSBVUkxdIGFi
c29sdXRlU3RyaW5nXTsKKworICAgIFt3ZWJWaWV3MSBldmFsdWF0ZUphdmFTY3JpcHQ6W05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJuYXZpZ2F0ZU90aGVyQ2xpZW50VG9VUkwoJyVAJykiLCBi
YXNlVVJMXSBjb21wbGV0aW9uSGFuZGxlcjogbmlsXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW3dl
YlZpZXcxIF90ZXN0X3dhaXRGb3JBbGVydF0sICJjbGllbnQiKTsKKworICAgIFt3ZWJWaWV3MSBl
dmFsdWF0ZUphdmFTY3JpcHQ6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJuYXZpZ2F0ZU90
aGVyQ2xpZW50VG9VUkwoJyVAI3Rlc3QnKSIsIGJhc2VVUkxdIGNvbXBsZXRpb25IYW5kbGVyOiBu
aWxdOworICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldzEgX3Rlc3Rfd2FpdEZvckFsZXJ0XSwg
ImNsaWVudCIpOworCisgICAgW3dlYlZpZXcxIGV2YWx1YXRlSmF2YVNjcmlwdDpbTlNTdHJpbmcg
c3RyaW5nV2l0aEZvcm1hdDpAIm5hdmlnYXRlT3RoZXJDbGllbnRUb1VSTCgnJUA/dGVzdCcpIiwg
YmFzZVVSTF0gY29tcGxldGlvbkhhbmRsZXI6IG5pbF07CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3
ZWJWaWV3MSBfdGVzdF93YWl0Rm9yQWxlcnRdLCAiY2xpZW50Iik7CisKKyAgICBbd2ViVmlldzEg
ZXZhbHVhdGVKYXZhU2NyaXB0OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAibmF2aWdhdGVP
dGhlckNsaWVudFRvVVJMKCclQD9zd2FwJykiLCBiYXNlVVJMXSBjb21wbGV0aW9uSGFuZGxlcjog
bmlsXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcxIF90ZXN0X3dhaXRGb3JBbGVydF0s
ICJjbGllbnQiKTsKK30KKworVEVTVChTZXJ2aWNlV29ya2VyLCBXaW5kb3dDbGllbnROYXZpZ2F0
ZUNyb3NzT3JpZ2luKQoreworICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0ZURh
dGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CisKKyAgICAvLyBTdGFydCB3aXRoIGEgY2xlYW4gc2xh
dGUgZGF0YSBzdG9yZQorICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVd
IHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBl
c10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpe
KCkgeworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIGF1dG8gY29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisK
KyAgICBhdXRvIHdlYlZpZXcxID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAzMDAsIDMwMCkgY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uLmdldCgpIGFkZFRvV2luZG93OllFU10pOworICAgIGF1dG8gd2ViVmlldzIgPSBhZG9w
dE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDMwMCwgMzAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgYWRkVG9XaW5kb3c6
WUVTXSk7CisKKyAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcjEoeworICAgICAg
ICB7ICIvIl9zLCB7IFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnROYXZpZ2F0ZU1haW4gfSB9LAor
ICAgICAgICB7ICIvP3Rlc3QiX3MsIHsgU2VydmljZVdvcmtlcldpbmRvd0NsaWVudE5hdmlnYXRl
TWFpbiB9IH0sCisgICAgICAgIHsgIi8/c3dhcCJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAi
YXBwbGljYXRpb24vaHRtbCJfcyB9LCB7ICJDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSJfcywg
InNhbWUtb3JpZ2luIl9zIH0gfSwgU2VydmljZVdvcmtlcldpbmRvd0NsaWVudE5hdmlnYXRlTWFp
biB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBw
bGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwgU2VydmljZVdvcmtlcldpbmRvd0NsaWVudE5hdmln
YXRlSlMgfSB9CisgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0
dHAsIG51bGxwdHIsIG51bGxwdHIsIDgwOTEpOworCisgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNl
cnZlciBzZXJ2ZXIyKHsKKyAgICAgICAgeyAiLyJfcywgeyBTZXJ2aWNlV29ya2VyV2luZG93Q2xp
ZW50TmF2aWdhdGVNYWluIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHt7ICJDb250ZW50
LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH19LCBTZXJ2aWNlV29ya2VyV2lu
ZG93Q2xpZW50TmF2aWdhdGVKUyB9IH0KKyAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVy
OjpQcm90b2NvbDo6SHR0cCwgbnVsbHB0ciwgbnVsbHB0ciwgOTA5MSk7CisKKyAgICBbd2ViVmll
dzEgbG9hZFJlcXVlc3Q6c2VydmVyMS5yZXF1ZXN0KCldOworICAgIEVYUEVDVF9XS19TVFJFUShb
d2ViVmlldzEgX3Rlc3Rfd2FpdEZvckFsZXJ0XSwgInN1Y2Nlc3NmdWxseSByZWdpc3RlcmVkIik7
CisgICAgW3dlYlZpZXcyIGxvYWRSZXF1ZXN0OnNlcnZlcjEucmVxdWVzdCgpXTsKKyAgICBFWFBF
Q1RfV0tfU1RSRVEoW3dlYlZpZXcyIF90ZXN0X3dhaXRGb3JBbGVydF0sICJhbHJlYWR5IGFjdGl2
ZSIpOworICAgIFt3ZWJWaWV3MSBldmFsdWF0ZUphdmFTY3JpcHQ6W05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCJuYXZpZ2F0ZU90aGVyQ2xpZW50VG9VUkwoJyVAJykiLCBbW3NlcnZlcjIucmVx
dWVzdCgpIFVSTF0gYWJzb2x1dGVTdHJpbmddXSBjb21wbGV0aW9uSGFuZGxlcjogbmlsXTsKKyAg
ICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcxIF90ZXN0X3dhaXRGb3JBbGVydF0sICJub25lIik7
Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggZGRhYjUyMDg4ZTljNmJiYWQwOWUxM2U4MTViOWQ5MDFiMjc3MjA0My4uYzYy
ZmZhNGJjOGMzNTA5Njk4YmVjY2NjZmI2ZjdlMzNmMDIyOWM5OCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2
IEBACisyMDIyLTA0LTA1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAg
ICAgICBJbXBsZW1lbnQgU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5uYXZpZ2F0ZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NzM4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3dwdC9zZXJ2
aWNlLXdvcmtlcnMvbmF2aWdhdGUtaWZyYW1lcy13aW5kb3ctY2xpZW50Lmh0dHBzLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvc2VydmljZS13b3JrZXJzL25hdmlnYXRl
LWlmcmFtZXMtd2luZG93LWNsaWVudC5odHRwcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3dwdC9zZXJ2aWNlLXdvcmtlcnMvbmF2aWdhdGUtd2luZG93LWNsaWVudC13b3JrZXIuanM6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvd2luZG93Y2xpZW50LW5hdmlnYXRl
Lmh0dHBzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sy
L1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjItMDQtMDQgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgogCiAgICAgICAgIFNlcnZpY2UtV29ya2VyLU5hdmlnYXRpb24tUHJlbG9hZCBo
ZWFkZXIgbm90IGJlaW5nIHNlbnQgd2hlbiBOYXZpZ2F0aW9uIFByZWxvYWQgaXMgZW5hYmxlZC4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDEzZmI0OWJkNzk2YzkxOTFkZjZmN2Yz
NDI0YzMxOTY2ODBmYWEyOWQuLjUyMmEwZTliMDUxNmQzOWI0MjhhNjg3NDMzMjA3NmE5ZjJiOWM5
NGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIy
LTA0LTA1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBs
ZW1lbnQgU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5uYXZpZ2F0ZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NzM4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc2Vy
dmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3dpbmRvd2NsaWVudC1uYXZpZ2F0ZS5odHRwcy1l
eHBlY3RlZC50eHQ6CisKIDIwMjItMDQtMDQgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgogCiAgICAgICAgIENPUlM6IEFsbG93IHBhcnRpY3VsYXIgUmFuZ2UgaGVhZGVyIHZhbHVl
cyB3aXRob3V0IGEgcHJlZmxpZ2h0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9z
ZXJ2aWNlLXdvcmtlcnMvbmF2aWdhdGUtaWZyYW1lcy13aW5kb3ctY2xpZW50Lmh0dHBzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9uYXZpZ2F0ZS1p
ZnJhbWVzLXdpbmRvdy1jbGllbnQuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM1Yzky
MmE0MzA5MGExZmM1MDVhYzg0OTg5OTg2MDc4NTRkNmE0OGMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvbmF2aWdhdGUtaWZyYW1lcy13aW5k
b3ctY2xpZW50Lmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKKworCitQQVNTIFNl
dHVwIGFjdGl2YXRpbmcgd29ya2VyCitQQVNTIE5hdmlnYXRlIHRvIHNhbWUgb3JpZ2luCitQQVNT
IE5hdmlnYXRlIHRvIHNhbWUgVVJMCitQQVNTIE5hdmlnYXRlIHRvIHNhbWUgZG9jdW1lbnQgZnJh
Z21lbnQKK1BBU1MgTmF2aWdhdGUgdG8gY3Jvc3Mgb3JpZ2luCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9uYXZpZ2F0ZS1pZnJhbWVzLXdpbmRvdy1j
bGllbnQuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9u
YXZpZ2F0ZS1pZnJhbWVzLXdpbmRvdy1jbGllbnQuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNzFk
NzU5ODNhMDVjN2U5NTgxMDg4MDJiYTg2OTljZTZhNzE3M2EwCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL25hdmlnYXRlLWlmcmFtZXMtd2lu
ZG93LWNsaWVudC5odHRwcy5odG1sCkBAIC0wLDAgKzEsODIgQEAKKzwhZG9jdHlwZSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvY29tbW9uL3V0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvcm91dGluZXMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9z
ZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5zdWIu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgordmFyIHVybCA9IG5ldyBV
UkwoIi9XZWJLaXQvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy8iLCBsb2NhdGlvbik7Cit1cmwg
PSB1cmwudG9TdHJpbmcoKTsKK3ZhciBhY3RpdmVXb3JrZXI7CisKK3Byb21pc2VfdGVzdChhc3lu
YyAodGVzdCkgPT4geworICAgIGxldCByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2Vy
dmljZVdvcmtlci5yZWdpc3RlcigiL1dlYktpdC9zZXJ2aWNlLXdvcmtlcnMvbmF2aWdhdGUtd2lu
ZG93LWNsaWVudC13b3JrZXIuanMiLCB7IHNjb3BlIDogdXJsIH0pOworICAgIGlmICghcmVnaXN0
cmF0aW9uLmluc3RhbGxpbmcpIHsKKyAgICAgICAgcmVnaXN0cmF0aW9uLnVucmVnaXN0ZXIoKTsK
KyAgICAgICAgcmVnaXN0cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVn
aXN0ZXIoIi9XZWJLaXQvc2VydmljZS13b3JrZXJzL25hdmlnYXRlLXdpbmRvdy1jbGllbnQtd29y
a2VyLmpzIiwgeyBzY29wZSA6IHVybCB9KTsKKyAgICB9CisgICAgYWN0aXZlV29ya2VyID0gcmVn
aXN0cmF0aW9uLmluc3RhbGxpbmc7CisgICAgYXdhaXQgd2FpdEZvclN0YXRlKGFjdGl2ZVdvcmtl
ciwgImFjdGl2YXRpbmciKTsKKyAgICBhY3RpdmVXb3JrZXIgPSByZWdpc3RyYXRpb24uYWN0aXZl
OworfSwgIlNldHVwIGFjdGl2YXRpbmcgd29ya2VyIik7CisKK3Byb21pc2VfdGVzdChhc3luYyAo
dGVzdCkgPT4geworICAgIGNvbnN0IGlmcmFtZSA9IGF3YWl0IHdpdGhJZnJhbWUodXJsKTsKKwor
ICAgIGFjdGl2ZVdvcmtlci5wb3N0TWVzc2FnZSh7bmF2aWdhdGU6IHVybCArICI/dGVzdCJ9KTsK
KyAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IG5hdmlnYXRv
ci5zZXJ2aWNlV29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShldmVudC5kYXRh
KSk7CisgICAgYXNzZXJ0X3RydWUocmVzdWx0LnVybC5pbmNsdWRlcygiP3Rlc3QiKSk7CisKKyAg
ICBpZnJhbWUucmVtb3ZlKCk7Cit9LCAiTmF2aWdhdGUgdG8gc2FtZSBvcmlnaW4iKTsKKworcHJv
bWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgY29uc3QgaWZyYW1lID0gYXdhaXQgd2l0
aElmcmFtZSh1cmwpOworCisgICAgYWN0aXZlV29ya2VyLnBvc3RNZXNzYWdlKCJnZXQtY2xpZW50
Iik7CisgICAgY29uc3QgY2xpZW50MSA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gbmF2
aWdhdG9yLnNlcnZpY2VXb3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50
LmRhdGEpKTsKKworICAgIGFjdGl2ZVdvcmtlci5wb3N0TWVzc2FnZSh7bmF2aWdhdGU6IHVybH0p
OworICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gbmF2aWdh
dG9yLnNlcnZpY2VXb3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRh
dGEpKTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC51cmwsIHVybCk7CisKKyAgICBhY3RpdmVX
b3JrZXIucG9zdE1lc3NhZ2UoImdldC1jbGllbnQiKTsKKyAgICBjb25zdCBjbGllbnQyID0gYXdh
aXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5vbm1lc3Nh
Z2UgPSAoZXZlbnQpID0+IHJlc29sdmUoZXZlbnQuZGF0YSkpOworCisgICAgYXNzZXJ0X25vdF9l
cXVhbHMoY2xpZW50MS5pZCwgY2xpZW50Mi5pZCk7CisKKyAgICBpZnJhbWUucmVtb3ZlKCk7Cit9
LCAiTmF2aWdhdGUgdG8gc2FtZSBVUkwiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9
PiB7CisgICAgY29uc3QgaWZyYW1lID0gYXdhaXQgd2l0aElmcmFtZSh1cmwpOworCisgICAgYWN0
aXZlV29ya2VyLnBvc3RNZXNzYWdlKCJnZXQtY2xpZW50Iik7CisgICAgY29uc3QgY2xpZW50MSA9
IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIub25t
ZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKworICAgIGFjdGl2ZVdv
cmtlci5wb3N0TWVzc2FnZSh7bmF2aWdhdGU6IHVybCArICIjdGVzdCJ9KTsKKyAgICBjb25zdCBy
ZXN1bHQgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IG5hdmlnYXRvci5zZXJ2aWNlV29y
a2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShldmVudC5kYXRhKSk7CisgICAgYXNz
ZXJ0X2VxdWFscyhyZXN1bHQudXJsLCB1cmwpOworCisgICAgYWN0aXZlV29ya2VyLnBvc3RNZXNz
YWdlKCJnZXQtY2xpZW50Iik7CisgICAgY29uc3QgY2xpZW50MiA9IGF3YWl0IG5ldyBQcm9taXNl
KHJlc29sdmUgPT4gbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9
PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKworICAgIGFzc2VydF9lcXVhbHMoY2xpZW50MS5pZCwg
Y2xpZW50Mi5pZCk7CisKKyAgICBpZnJhbWUucmVtb3ZlKCk7Cit9LCAiTmF2aWdhdGUgdG8gc2Ft
ZSBkb2N1bWVudCBmcmFnbWVudCIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsK
KyAgICBjb25zdCBpZnJhbWUgPSBhd2FpdCB3aXRoSWZyYW1lKHVybCk7CisKKyAgICBhY3RpdmVX
b3JrZXIucG9zdE1lc3NhZ2Uoe25hdmlnYXRlOiAiaHR0cHM6Ly8xMjcuMC4wLjE6OTQ0MyIgfSk7
CisgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBuYXZpZ2F0
b3Iuc2VydmljZVdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJlc29sdmUoZXZlbnQuZGF0
YSkpOworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCAibm9uZSIpOworfSwgIk5hdmlnYXRlIHRv
IGNyb3NzIG9yaWdpbiIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvbmF2aWdhdGUtd2luZG93LWNs
aWVudC13b3JrZXIuanMgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvbmF2
aWdhdGUtd2luZG93LWNsaWVudC13b3JrZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTUwZThlMGQxMGRmOGJm
YjBkYzY1ZDBkNjE3NDczMTZmZDUzZDAxMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9uYXZpZ2F0ZS13aW5kb3ctY2xpZW50LXdvcmtlci5q
cwpAQCAtMCwwICsxLDI1IEBACitvbm1lc3NhZ2UgPSBhc3luYyAoZXZlbnQpID0+IHsKKyAgICBp
ZiAoZXZlbnQuZGF0YSA9PT0gImdldC1jbGllbnQiKSB7CisgICAgICAgIGNvbnN0IGNsaWVudHMg
PSBhd2FpdCBzZWxmLmNsaWVudHMubWF0Y2hBbGwoKTsKKyAgICAgICAgaWYgKCFjbGllbnRzLmxl
bmd0aCkgeworICAgICAgICAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCJubyBjbGllbnQi
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBldmVudC5zb3VyY2Uu
cG9zdE1lc3NhZ2UoeyBpZDogY2xpZW50c1swXS5pZCwgdXJsOiBjbGllbnRzWzBdLnVybCB9KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChldmVudC5kYXRhICYmIGV2ZW50LmRh
dGEubmF2aWdhdGUpIHsKKyAgICAgICAgY29uc3QgY2xpZW50cyA9IGF3YWl0IHNlbGYuY2xpZW50
cy5tYXRjaEFsbCgpOworICAgICAgICBpZiAoIWNsaWVudHMubGVuZ3RoKSB7CisgICAgICAgICAg
ICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoImZhaWxlZCwgbm8gY2xpZW50cyIpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGF3YWl0IGNsaWVudHNbMF0ubmF2aWdh
dGUoZXZlbnQuZGF0YS5uYXZpZ2F0ZSkudGhlbigoY2xpZW50KSA9PiB7CisgICAgICAgICAgICBl
dmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoY2xpZW50ID8geyBpZDogY2xpZW50LmlkLCB1cmw6IGNs
aWVudC51cmwgfSA6ICJub25lIik7CisgICAgICAgIH0sIChlKSA9PiB7CisgICAgICAgICAgICBl
dmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoImZhaWxlZCIpOworICAgICAgICB9KTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KK307CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci93aW5kb3dj
bGllbnQtbmF2aWdhdGUuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvd2lu
ZG93Y2xpZW50LW5hdmlnYXRlLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCAxOTI1NDZlZDg3MDAy
YzMxMjY2MWZjNDk0NmFhMDUwNjA3ZTMzYTkyLi40OWY4ZThmMjQ0MzYyZmNmNjY1YzI1ODI2NDBh
YWUwOThhODcxZTk2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci93aW5kb3djbGllbnQt
bmF2aWdhdGUuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3dpbmRv
d2NsaWVudC1uYXZpZ2F0ZS5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEwLDI5ICsxMCwxNSBAQCBQ
QVNTIGludmFsaWQgdXJsICh2aWV3LXNvdXJjZTovL2V4YW1wbGUuY29tKQogUEFTUyBpbnZhbGlk
IHVybCAoZmlsZTovLy8pCiBQQVNTIGludmFsaWQgdXJsIChhYm91dDpibGFuaykKIFBBU1MgbmF2
aWdhdGUgb24gYSB0b3AtbGV2ZWwgd2luZG93IGNsaWVudAotRkFJTCBub3JtYWwgd29ya2VyIHNp
ZGUgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAi
Tm90U3VwcG9ydGVkRXJyb3I6IHdpbmRvd0NsaWVudC5uYXZpZ2F0ZSgpIGlzIG5vdCB5ZXQgc3Vw
cG9ydGVkIgotRkFJTCBibGFuayB1cmwgd29ya2VyIHNpZGUgcHJvbWlzZV90ZXN0OiBVbmhhbmRs
ZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IHdpbmRv
d0NsaWVudC5uYXZpZ2F0ZSgpIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIgotRkFJTCBpbiBzY29wZSBi
dXQgbm90IGNvbnRyb2xsZWQgdGVzdCBvbiBpbnN0YWxsaW5nIHdvcmtlciB3b3JrZXIgc2lkZSBw
cm9taXNlX3JlamVjdHNfanM6IGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhy
ZXcgb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogd2luZG93Q2xpZW50Lm5hdmlnYXRlKCkgaXMg
bm90IHlldCBzdXBwb3J0ZWQiICgiTm90U3VwcG9ydGVkRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5j
ZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gVHlwZUVycm9yKCkgewotICAgIFtuYXRpdmUgY29kZV0K
LX0iICgiVHlwZUVycm9yIikKLUZBSUwgaW4gc2NvcGUgYnV0IG5vdCBjb250cm9sbGVkIHRlc3Qg
b24gYWN0aXZlIHdvcmtlciB3b3JrZXIgc2lkZSBwcm9taXNlX3JlamVjdHNfanM6IGZ1bmN0aW9u
ICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcgb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJv
cjogd2luZG93Q2xpZW50Lm5hdmlnYXRlKCkgaXMgbm90IHlldCBzdXBwb3J0ZWQiICgiTm90U3Vw
cG9ydGVkRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gVHlw
ZUVycm9yKCkgewotICAgIFtuYXRpdmUgY29kZV0KLX0iICgiVHlwZUVycm9yIikKLUZBSUwgb3V0
IG9mIHNjb3BlIHdvcmtlciBzaWRlIHByb21pc2VfcmVqZWN0c19qczogZnVuY3Rpb24gImZ1bmN0
aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiB3aW5k
b3dDbGllbnQubmF2aWdhdGUoKSBpcyBub3QgeWV0IHN1cHBvcnRlZCIgKCJOb3RTdXBwb3J0ZWRF
cnJvciIpIGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3Io
KSB7Ci0gICAgW25hdGl2ZSBjb2RlXQotfSIgKCJUeXBlRXJyb3IiKQotRkFJTCBjcm9zcyBvcmdp
biB1cmwgd29ya2VyIHNpZGUgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGgg
dmFsdWU6IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IHdpbmRvd0NsaWVudC5uYXZpZ2F0ZSgp
IGlzIG5vdCB5ZXQgc3VwcG9ydGVkIgotRkFJTCBpbnZhbGlkIHVybCAoaHR0cDovL1tleGFtcGxl
LmNvbV0pIHdvcmtlciBzaWRlIHByb21pc2VfcmVqZWN0c19qczogZnVuY3Rpb24gImZ1bmN0aW9u
ICgpIHsgdGhyb3cgZSB9IiB0aHJldyBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiB3aW5kb3dD
bGllbnQubmF2aWdhdGUoKSBpcyBub3QgeWV0IHN1cHBvcnRlZCIgKCJOb3RTdXBwb3J0ZWRFcnJv
ciIpIGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7
Ci0gICAgW25hdGl2ZSBjb2RlXQotfSIgKCJUeXBlRXJyb3IiKQotRkFJTCBpbnZhbGlkIHVybCAo
dmlldy1zb3VyY2U6Ly9leGFtcGxlLmNvbSkgd29ya2VyIHNpZGUgcHJvbWlzZV9yZWplY3RzX2pz
OiBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0iIHRocmV3IG9iamVjdCAiTm90U3Vw
cG9ydGVkRXJyb3I6IHdpbmRvd0NsaWVudC5uYXZpZ2F0ZSgpIGlzIG5vdCB5ZXQgc3VwcG9ydGVk
IiAoIk5vdFN1cHBvcnRlZEVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1
bmN0aW9uIFR5cGVFcnJvcigpIHsKLSAgICBbbmF0aXZlIGNvZGVdCi19IiAoIlR5cGVFcnJvciIp
Ci1GQUlMIGludmFsaWQgdXJsIChmaWxlOi8vLykgd29ya2VyIHNpZGUgcHJvbWlzZV9yZWplY3Rz
X2pzOiBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0iIHRocmV3IG9iamVjdCAiTm90
U3VwcG9ydGVkRXJyb3I6IHdpbmRvd0NsaWVudC5uYXZpZ2F0ZSgpIGlzIG5vdCB5ZXQgc3VwcG9y
dGVkIiAoIk5vdFN1cHBvcnRlZEVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24g
ImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKLSAgICBbbmF0aXZlIGNvZGVdCi19IiAoIlR5cGVFcnJv
ciIpCi1GQUlMIGludmFsaWQgdXJsIChhYm91dDpibGFuaykgd29ya2VyIHNpZGUgcHJvbWlzZV9y
ZWplY3RzX2pzOiBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0iIHRocmV3IG9iamVj
dCAiTm90U3VwcG9ydGVkRXJyb3I6IHdpbmRvd0NsaWVudC5uYXZpZ2F0ZSgpIGlzIG5vdCB5ZXQg
c3VwcG9ydGVkIiAoIk5vdFN1cHBvcnRlZEVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVu
Y3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKLSAgICBbbmF0aXZlIGNvZGVdCi19IiAoIlR5
cGVFcnJvciIpCitQQVNTIG5vcm1hbCB3b3JrZXIgc2lkZQorUEFTUyBibGFuayB1cmwgd29ya2Vy
IHNpZGUKK1BBU1MgaW4gc2NvcGUgYnV0IG5vdCBjb250cm9sbGVkIHRlc3Qgb24gaW5zdGFsbGlu
ZyB3b3JrZXIgd29ya2VyIHNpZGUKK1BBU1MgaW4gc2NvcGUgYnV0IG5vdCBjb250cm9sbGVkIHRl
c3Qgb24gYWN0aXZlIHdvcmtlciB3b3JrZXIgc2lkZQorUEFTUyBvdXQgb2Ygc2NvcGUgd29ya2Vy
IHNpZGUKK1BBU1MgY3Jvc3Mgb3JnaW4gdXJsIHdvcmtlciBzaWRlCitQQVNTIGludmFsaWQgdXJs
IChodHRwOi8vW2V4YW1wbGUuY29tXSkgd29ya2VyIHNpZGUKK1BBU1MgaW52YWxpZCB1cmwgKHZp
ZXctc291cmNlOi8vZXhhbXBsZS5jb20pIHdvcmtlciBzaWRlCitGQUlMIGludmFsaWQgdXJsIChm
aWxlOi8vLykgd29ya2VyIHNpZGUgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgKHN0cmluZykgIlR5
cGVFcnJvciIgYnV0IGdvdCAob2JqZWN0KSBudWxsCitQQVNTIGludmFsaWQgdXJsIChhYm91dDpi
bGFuaykgd29ya2VyIHNpZGUKIEZBSUwgbmF2aWdhdGUgb24gYSB0b3AtbGV2ZWwgd2luZG93IGNs
aWVudCB3b3JrZXIgc2lkZSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAidG9wLWxldmVsIiBidXQg
Z290ICJhdXhpbGlhcnkiCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13
b3JrZXIvd2luZG93Y2xpZW50LW5hdmlnYXRlLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2dsaWIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNl
LXdvcmtlcnMvc2VydmljZS13b3JrZXIvd2luZG93Y2xpZW50LW5hdmlnYXRlLmh0dHBzLWV4cGVj
dGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTkyNTQ2ZWQ4NzAwMmMzMTI2
NjFmYzQ5NDZhYTA1MDYwN2UzM2E5Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3dpbmRvd2NsaWVu
dC1uYXZpZ2F0ZS5odHRwcy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCww
IEBACi0KLVBBU1Mgbm9ybWFsCi1QQVNTIGJsYW5rIHVybAotUEFTUyBpbiBzY29wZSBidXQgbm90
IGNvbnRyb2xsZWQgdGVzdCBvbiBpbnN0YWxsaW5nIHdvcmtlcgotUEFTUyBpbiBzY29wZSBidXQg
bm90IGNvbnRyb2xsZWQgdGVzdCBvbiBhY3RpdmUgd29ya2VyCi1QQVNTIG91dCBvZiBzY29wZQot
UEFTUyBjcm9zcyBvcmdpbiB1cmwKLVBBU1MgaW52YWxpZCB1cmwgKGh0dHA6Ly9bZXhhbXBsZS5j
b21dKQotUEFTUyBpbnZhbGlkIHVybCAodmlldy1zb3VyY2U6Ly9leGFtcGxlLmNvbSkKLVBBU1Mg
aW52YWxpZCB1cmwgKGZpbGU6Ly8vKQotUEFTUyBpbnZhbGlkIHVybCAoYWJvdXQ6YmxhbmspCi1Q
QVNTIG5hdmlnYXRlIG9uIGEgdG9wLWxldmVsIHdpbmRvdyBjbGllbnQKLUZBSUwgbm9ybWFsIHdv
cmtlciBzaWRlIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBv
YmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiB3aW5kb3dDbGllbnQubmF2aWdhdGUoKSBpcyBub3Qg
eWV0IHN1cHBvcnRlZCIKLUZBSUwgYmxhbmsgdXJsIHdvcmtlciBzaWRlIHByb21pc2VfdGVzdDog
VW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9y
OiB3aW5kb3dDbGllbnQubmF2aWdhdGUoKSBpcyBub3QgeWV0IHN1cHBvcnRlZCIKLUZBSUwgaW4g
c2NvcGUgYnV0IG5vdCBjb250cm9sbGVkIHRlc3Qgb24gaW5zdGFsbGluZyB3b3JrZXIgd29ya2Vy
IHNpZGUgcHJvbWlzZV9yZWplY3RzX2pzOiBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0aHJvdyBl
IH0iIHRocmV3IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IHdpbmRvd0NsaWVudC5uYXZpZ2F0
ZSgpIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIiAoIk5vdFN1cHBvcnRlZEVycm9yIikgZXhwZWN0ZWQg
aW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKLSAgICBbbmF0aXZl
IGNvZGVdCi19IiAoIlR5cGVFcnJvciIpCi1GQUlMIGluIHNjb3BlIGJ1dCBub3QgY29udHJvbGxl
ZCB0ZXN0IG9uIGFjdGl2ZSB3b3JrZXIgd29ya2VyIHNpZGUgcHJvbWlzZV9yZWplY3RzX2pzOiBm
dW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0iIHRocmV3IG9iamVjdCAiTm90U3VwcG9y
dGVkRXJyb3I6IHdpbmRvd0NsaWVudC5uYXZpZ2F0ZSgpIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIiAo
Ik5vdFN1cHBvcnRlZEVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0
aW9uIFR5cGVFcnJvcigpIHsKLSAgICBbbmF0aXZlIGNvZGVdCi19IiAoIlR5cGVFcnJvciIpCi1G
QUlMIG91dCBvZiBzY29wZSB3b3JrZXIgc2lkZSBwcm9taXNlX3JlamVjdHNfanM6IGZ1bmN0aW9u
ICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcgb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJv
cjogd2luZG93Q2xpZW50Lm5hdmlnYXRlKCkgaXMgbm90IHlldCBzdXBwb3J0ZWQiICgiTm90U3Vw
cG9ydGVkRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gVHlw
ZUVycm9yKCkgewotICAgIFtuYXRpdmUgY29kZV0KLX0iICgiVHlwZUVycm9yIikKLUZBSUwgY3Jv
c3Mgb3JnaW4gdXJsIHdvcmtlciBzaWRlIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlv
biB3aXRoIHZhbHVlOiBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiB3aW5kb3dDbGllbnQubmF2
aWdhdGUoKSBpcyBub3QgeWV0IHN1cHBvcnRlZCIKLUZBSUwgaW52YWxpZCB1cmwgKGh0dHA6Ly9b
ZXhhbXBsZS5jb21dKSB3b3JrZXIgc2lkZSBwcm9taXNlX3JlamVjdHNfanM6IGZ1bmN0aW9uICJm
dW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcgb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjog
d2luZG93Q2xpZW50Lm5hdmlnYXRlKCkgaXMgbm90IHlldCBzdXBwb3J0ZWQiICgiTm90U3VwcG9y
dGVkRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gVHlwZUVy
cm9yKCkgewotICAgIFtuYXRpdmUgY29kZV0KLX0iICgiVHlwZUVycm9yIikKLUZBSUwgaW52YWxp
ZCB1cmwgKHZpZXctc291cmNlOi8vZXhhbXBsZS5jb20pIHdvcmtlciBzaWRlIHByb21pc2VfcmVq
ZWN0c19qczogZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyBvYmplY3Qg
Ik5vdFN1cHBvcnRlZEVycm9yOiB3aW5kb3dDbGllbnQubmF2aWdhdGUoKSBpcyBub3QgeWV0IHN1
cHBvcnRlZCIgKCJOb3RTdXBwb3J0ZWRFcnJvciIpIGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0
aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7Ci0gICAgW25hdGl2ZSBjb2RlXQotfSIgKCJUeXBl
RXJyb3IiKQotRkFJTCBpbnZhbGlkIHVybCAoZmlsZTovLy8pIHdvcmtlciBzaWRlIHByb21pc2Vf
cmVqZWN0c19qczogZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyBvYmpl
Y3QgIk5vdFN1cHBvcnRlZEVycm9yOiB3aW5kb3dDbGllbnQubmF2aWdhdGUoKSBpcyBub3QgeWV0
IHN1cHBvcnRlZCIgKCJOb3RTdXBwb3J0ZWRFcnJvciIpIGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1
bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7Ci0gICAgW25hdGl2ZSBjb2RlXQotfSIgKCJU
eXBlRXJyb3IiKQotRkFJTCBpbnZhbGlkIHVybCAoYWJvdXQ6YmxhbmspIHdvcmtlciBzaWRlIHBy
b21pc2VfcmVqZWN0c19qczogZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJl
dyBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiB3aW5kb3dDbGllbnQubmF2aWdhdGUoKSBpcyBu
b3QgeWV0IHN1cHBvcnRlZCIgKCJOb3RTdXBwb3J0ZWRFcnJvciIpIGV4cGVjdGVkIGluc3RhbmNl
IG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7Ci0gICAgW25hdGl2ZSBjb2RlXQot
fSIgKCJUeXBlRXJyb3IiKQotRkFJTCBuYXZpZ2F0ZSBvbiBhIHRvcC1sZXZlbCB3aW5kb3cgY2xp
ZW50IHdvcmtlciBzaWRlIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJ0b3AtbGV2ZWwiIGJ1dCBn
b3QgImF1eGlsaWFyeSIKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdr
Mi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhw
ZWN0YXRpb25zCmluZGV4IDEzZGVmYjQ3NjExNTA3YTRlZDgxNDg5MmIzYTJjNjljOTk5ZjAxYWMu
LmUxZGZhYmY2ZmNiMmE3YTBmMmRjOTU2NGE1MjYzYzZlNTEwZWUyODcgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTkyNCw3ICs5MjQsNyBA
QCB3ZWJraXQub3JnL2IvMTgxODM5IFsgRGVidWcgXSBpbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtw
b2ludC1hY3Rpb24tbG9nLmh0bWwgWyBQYQogCiB3ZWJraXQub3JnL2IvMjMwNDEyIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2Ns
aWVudHMtbWF0Y2hhbGwtY2xpZW50LXR5cGVzLmh0dHBzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQog
Ci13ZWJraXQub3JnL2IvMTc5MzUyIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2Vy
dmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3dpbmRvd2NsaWVudC1uYXZpZ2F0ZS5odHRwcy5o
dG1sIFsgUGFzcyBGYWlsdXJlIFNsb3cgXQord2Via2l0Lm9yZy9iLzE3OTM1MiBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci93aW5k
b3djbGllbnQtbmF2aWdhdGUuaHR0cHMuaHRtbCBbIFNsb3cgXQogCiB3ZWJraXQub3JnL2IvMTgz
MTY0IGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctZm9jdXMtc2VsZi5odG1sIFsgUGFzcyBGYWlsdXJl
IF0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456702</attachid>
            <date>2022-04-05 08:39:19 -0700</date>
            <delta_ts>2022-04-06 01:57:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238738-20220405173912.patch</filename>
            <type>text/plain</type>
            <size>71677</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGU0NjQ4YWFlM2VkYmU4
NTVkYmJiMzRhOWQ5M2QyNzc5NjVmY2YwOC4uMmJlM2JlMzgwZGU0N2JiYjhjNDY5YWMxMzRlNTc3
YWJiNWQwM2ZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIyLTA0LTA1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgU2Vydmlj
ZVdvcmtlcldpbmRvd0NsaWVudC5uYXZpZ2F0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NzM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIGEgcm91dGluZSB0byBuYXZpZ2F0ZSBhIERv
Y3VtZW50LgorICAgICAgICBTZW5kIEZyYW1lSWRlbnRpZmllciBhcyBwYXJ0IG9mIFNlcnZpY2VX
b3JrZXJDbGllbnREYXRhLgorICAgICAgICBJbXBsZW1lbnQgU2VydmljZVdvcmtlcldpbmRvd0Ns
aWVudDo6bmF2aWdhdGUgYnkgc2VuZGluZyBJUEMgdG8gbmV0d29yayBwcm9jZXNzLgorCisgICAg
ICAgIFRlc3Q6IGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9uYXZpZ2F0ZS1pZnJhbWVzLXdpbmRv
dy1jbGllbnQuaHR0cHMuaHRtbAorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5jcHA6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmg6CisgICAg
ICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuY3BwOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaDoKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlcldvcmtlci5oOgorCiAyMDIyLTA0LTA0ICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBDT1JTOiBBbGxvdyBwYXJ0aWN1bGFyIFJhbmdlIGhl
YWRlciB2YWx1ZXMgd2l0aG91dCBhIHByZWZsaWdodApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1ZTJjMjdlNmFhYzE2
MDUyOTc2NGM2ZTdjZWQ3ZTM3MzhiNWQ5ZjNjLi5lNzg3M2I2Y2Y5ODM1MmUwZjc2OGQxYWJlNDdk
MDY2ZmI1ZGNiYzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIyLTA0LTA1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgU2Vydmlj
ZVdvcmtlcldpbmRvd0NsaWVudC5uYXZpZ2F0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NzM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2hlbiByZWNlaXZpbmcgYSByZXF1ZXN0IHRvIG5hdmlnYXRl
IGEgY2xpZW50LCBzZW5kIG1lc3NhZ2UgdG8gVUlQcm9jZXNzLgorICAgICAgICBVSVByb2Nlc3Mg
bG9jYXRlcyB0aGUgV2ViRnJhbWVQcm94eSB3aGljaCB3aWxsIHNlbmQgYW4gSVBDIG1lc3NhZ2Ug
dG8gdGhlIFdlYlByb2Nlc3MgdG8gZG8gbmF2aWdhdGlvbi4KKyAgICAgICAgV2Uga2VlcCB0cmFj
ayBvZiB0aGUgbmF2aWdhdGlvbiB3aXRoaW4gV2ViRnJhbWVQcm94eS4KKyAgICAgICAgSW4gY2Fz
ZSBvZiBwcm9jZXNzIHN3YXBwaW5nLCB3ZSBtYWtlIHN1cmUgdG8gdHJhbnNmZXIgdGhlIFdlYkZy
YW1lUHJveHkgY2FsbGJhY2suCisgICAgICAgIEluIGNhc2Ugb2YgcG9saWN5IGRlY2lzaW9uIHRv
IHN0b3AgbG9hZHMsIHdlIHJlc29sdmUgdGhlIHByb21pc2Ugd2l0aCBhbiBlbXB0eSBjbGllbnQu
CisgICAgICAgIEEgZm9sbG93LXVwIHBhdGNoIG1heSByZWplY3QgdGhlIHByb21pc2Ugb25jZSB0
aGUgZXhwZWN0ZWQgYmVoYXZpb3Igd2lsbCBiZSBjbGFyaWZpZWQuCisKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHA6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24u
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNz
YWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViRnJhbWVQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMjItMDQtMDQgIFlv
dWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFNlcnZpY2UtV29ya2Vy
LU5hdmlnYXRpb24tUHJlbG9hZCBoZWFkZXIgbm90IGJlaW5nIHNlbnQgd2hlbiBOYXZpZ2F0aW9u
IFByZWxvYWQgaXMgZW5hYmxlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGQxNjIxOGQ2
NjI1NjFlNjdkMmRjNjZiNWJjNjYyMmFiODllMTZhMGYuLjU1Y2Y1YmNiMDJlMzI0Njk4MzAxMjBl
NTAxMjBhMDViZGVkZWI4ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtODQxNCw3ICs4
NDE0LDcgQEAgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gRG9jdW1lbnQ6OnBhZ2VJRCgp
IGNvbnN0CiAKIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBEb2N1bWVudDo6ZnJhbWVJ
RCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZnJhbWUtPmxvYWRlcigpLmZyYW1lSUQoKTsKKyAg
ICByZXR1cm4gbV9mcmFtZSA/IG1fZnJhbWUtPmxvYWRlcigpLmZyYW1lSUQoKSA6IHN0ZDo6bnVs
bG9wdDsKIH0KIAogdm9pZCBEb2N1bWVudDo6cmVnaXN0ZXJBcnRpY2xlRWxlbWVudChFbGVtZW50
JiBhcnRpY2xlKQpAQCAtODc4MCw2ICs4NzgwLDI0IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZVNl
cnZpY2VXb3JrZXJDbGllbnREYXRhKCkKICAgICBhdXRvIGNvbnRyb2xsaW5nU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXIgPSBhY3RpdmVTZXJ2aWNlV29ya2VyKCkgPyBzdGQ6Om1h
a2Vfb3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+KGFjdGl2ZVNl
cnZpY2VXb3JrZXIoKS0+cmVnaXN0cmF0aW9uSWRlbnRpZmllcigpKSA6IHN0ZDo6bnVsbG9wdDsK
ICAgICBtX3NlcnZpY2VXb3JrZXJDb25uZWN0aW9uLT5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGll
bnQodG9wT3JpZ2luKCksIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjpmcm9tKCp0aGlzKSwgY29u
dHJvbGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgdXNlckFnZW50KHVy
bCgpKSk7CiB9CisKK3ZvaWQgRG9jdW1lbnQ6Om5hdmlnYXRlRnJvbVNlcnZpY2VXb3JrZXIoY29u
c3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCit7
CisgICAgaWYgKGFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKSB8fCBhY3RpdmVET01PYmpl
Y3RzQXJlU3RvcHBlZCgpKSB7CisgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBwb3N0VGFzayhbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwg
dXJsLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJikgbXV0YWJsZSB7CisgICAg
ICAgIGF1dG8qIGZyYW1lID0gd2Vha1RoaXMgPyB3ZWFrVGhpcy0+ZnJhbWUoKSA6IG51bGxwdHI7
CisgICAgICAgIGlmICghZnJhbWUpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBmcmFtZS0+bmF2aWdhdGlvblNj
aGVkdWxlcigpLnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoKndlYWtUaGlzLCB3ZWFrVGhpcy0+c2Vj
dXJpdHlPcmlnaW4oKSwgdXJsLCBmcmFtZS0+bG9hZGVyKCkub3V0Z29pbmdSZWZlcnJlcigpLCBM
b2NrSGlzdG9yeTo6WWVzLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgW2NhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjYWxsYmFjayh0cnVlKTsK
KyAgICAgICAgfSk7CisgICAgfSk7Cit9CiAjZW5kaWYKIAogU3RyaW5nIERvY3VtZW50OjpzaWdu
ZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25z
dCBTdHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3QgVVJMJiB1cmwpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCmluZGV4IDk1ZGRiNmRkYWIyMTU2NzQ4YTA0YjI5MmNmNjk3OTQ3ZDdmZmU1NTUuLmQzY2Jh
OGQ3MDRmNGEyODI4NTNkMzYzYzkxZjhiN2UyZTM4NDk1NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CkBAIC0xNTY4LDYgKzE1NjgsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQogICAgIHZvaWQgc2V0U2VydmljZVdvcmtlckNvbm5lY3Rpb24oU1dDbGllbnRDb25uZWN0aW9u
Kik7CiAgICAgdm9pZCB1cGRhdGVTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSgpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgbmF2aWdhdGVGcm9tU2VydmljZVdvcmtlcihjb25zdCBVUkwmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJREVP
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDbGllbnREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ2xpZW50RGF0YS5jcHAKaW5kZXggNTkxNmJiMDRkNmNkMjk1MGJlYTFmY2NhMjVkMWU2
MjZlYjdlNmU1Mi4uMWYxY2MwZjNkNDlmMWEwMmY2Y2U4ODA1NzBkNzkzNjUyNWMyYjIwYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGll
bnREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNsaWVudERhdGEuY3BwCkBAIC01OSwxMiArNTksMTIgQEAgc3RhdGljIFNlcnZpY2VXb3Jr
ZXJDbGllbnRGcmFtZVR5cGUgdG9TZXJ2aWNlV29ya2VyQ2xpZW50RnJhbWVUeXBlKFNjcmlwdEV4
ZWN1dGkKIAogU2VydmljZVdvcmtlckNsaWVudERhdGEgU2VydmljZVdvcmtlckNsaWVudERhdGE6
Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKIHsKLSAgICByZXR1cm4geyBpZGVudGlmaWVyLCB0eXBl
LCBmcmFtZVR5cGUsIHVybC5pc29sYXRlZENvcHkoKSwgcGFnZUlkZW50aWZpZXIsIGxhc3ROYXZp
Z2F0aW9uV2FzQXBwSW5pdGlhdGVkLCBpc1Zpc2libGUsIGlzRm9jdXNlZCwgZm9jdXNPcmRlciwg
Y3Jvc3NUaHJlYWRDb3B5KGFuY2VzdG9yT3JpZ2lucykgfTsKKyAgICByZXR1cm4geyBpZGVudGlm
aWVyLCB0eXBlLCBmcmFtZVR5cGUsIHVybC5pc29sYXRlZENvcHkoKSwgcGFnZUlkZW50aWZpZXIs
IGZyYW1lSWRlbnRpZmllciwgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQsIGlzVmlzaWJs
ZSwgaXNGb2N1c2VkLCBmb2N1c09yZGVyLCBjcm9zc1RocmVhZENvcHkoYW5jZXN0b3JPcmlnaW5z
KSB9OwogfQogCiBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0
YTo6aXNvbGF0ZWRDb3B5KCkgJiYKIHsKLSAgICByZXR1cm4geyBpZGVudGlmaWVyLCB0eXBlLCBm
cmFtZVR5cGUsIFdURk1vdmUodXJsKS5pc29sYXRlZENvcHkoKSwgcGFnZUlkZW50aWZpZXIsIGxh
c3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkLCBpc1Zpc2libGUsIGlzRm9jdXNlZCwgZm9jdXNP
cmRlciwgY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoYW5jZXN0b3JPcmlnaW5zKSkgfTsKKyAgICBy
ZXR1cm4geyBpZGVudGlmaWVyLCB0eXBlLCBmcmFtZVR5cGUsIFdURk1vdmUodXJsKS5pc29sYXRl
ZENvcHkoKSwgcGFnZUlkZW50aWZpZXIsIGZyYW1lSWRlbnRpZmllciwgbGFzdE5hdmlnYXRpb25X
YXNBcHBJbml0aWF0ZWQsIGlzVmlzaWJsZSwgaXNGb2N1c2VkLCBmb2N1c09yZGVyLCBjcm9zc1Ro
cmVhZENvcHkoV1RGTW92ZShhbmNlc3Rvck9yaWdpbnMpKSB9OwogfQogCiBTZXJ2aWNlV29ya2Vy
Q2xpZW50RGF0YSBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZnJvbShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KQpAQCAtODcsNiArODcsNyBAQCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0
YSBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZnJvbShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
bwogICAgICAgICB0b1NlcnZpY2VXb3JrZXJDbGllbnRGcmFtZVR5cGUoY29udGV4dCksCiAgICAg
ICAgIGRvY3VtZW50LmNyZWF0aW9uVVJMKCksCiAgICAgICAgIGRvY3VtZW50LnBhZ2VJRCgpLAor
ICAgICAgICBkb2N1bWVudC5mcmFtZUlEKCksCiAgICAgICAgIGxhc3ROYXZpZ2F0aW9uV2FzQXBw
SW5pdGlhdGVkLAogICAgICAgICAhZG9jdW1lbnQuaGlkZGVuKCksCiAgICAgICAgIGRvY3VtZW50
Lmhhc0ZvY3VzKCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oCmluZGV4IDI2NGFhOWU2OGJmZDg0MmExOTVjNDEz
OGM4MWJjZjBkN2QyMzg3OTcuLmI4YWYxODA1YTEzMjE1NjRkNzAzNTMxMGYwMGViNWU1OWM3OWM4
NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCiAKKyNpbmNsdWRlICJGcmFtZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJQ
YWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlByb2Nlc3NRdWFsaWZpZWQuaCIKICNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllci5oIgpAQCAtNDksNiArNTAsNyBAQCBz
dHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudERhdGEgewogICAgIFNlcnZpY2VXb3JrZXJDbGllbnRG
cmFtZVR5cGUgZnJhbWVUeXBlOwogICAgIFVSTCB1cmw7CiAgICAgc3RkOjpvcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlkZW50aWZpZXI7CisgICAgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50
aWZpZXI+IGZyYW1lSWRlbnRpZmllcjsKICAgICBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRl
ZCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDsKICAgICBib29sIGlzVmlzaWJsZSB7IGZh
bHNlIH07CiAgICAgYm9vbCBpc0ZvY3VzZWQgeyBmYWxzZSB9OwpAQCAtNjcsNyArNjksNyBAQCBz
dHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudERhdGEgewogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4K
IHZvaWQgU2VydmljZVdvcmtlckNsaWVudERhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogewotICAgIGVuY29kZXIgPDwgaWRlbnRpZmllciA8PCB0eXBlIDw8IGZyYW1lVHlwZSA8
PCB1cmwgPDwgcGFnZUlkZW50aWZpZXIgPDwgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQg
PDwgaXNWaXNpYmxlIDw8IGlzRm9jdXNlZCA8PCBmb2N1c09yZGVyIDw8IGFuY2VzdG9yT3JpZ2lu
czsKKyAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXIgPDwgdHlwZSA8PCBmcmFtZVR5cGUgPDwgdXJs
IDw8IHBhZ2VJZGVudGlmaWVyIDw8IGZyYW1lSWRlbnRpZmllciA8PCBsYXN0TmF2aWdhdGlvbldh
c0FwcEluaXRpYXRlZCA8PCBpc1Zpc2libGUgPDwgaXNGb2N1c2VkIDw8IGZvY3VzT3JkZXIgPDwg
YW5jZXN0b3JPcmlnaW5zOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtOTgsNiAr
MTAwLDExIEBAIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IFNlcnZpY2VX
b3JrZXJDbGllbnREYXRhOjpkZWNvZGUoRGVjb2RlciYKICAgICBpZiAoIXBhZ2VJZGVudGlmaWVy
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCisgICAgc3RkOjpvcHRpb25hbDxzdGQ6
Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4+IGZyYW1lSWRlbnRpZmllcjsKKyAgICBkZWNvZGVy
ID4+IGZyYW1lSWRlbnRpZmllcjsKKyAgICBpZiAoIWZyYW1lSWRlbnRpZmllcikKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIHN0ZDo6b3B0aW9uYWw8TGFzdE5hdmlnYXRpb25X
YXNBcHBJbml0aWF0ZWQ+IGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOwogICAgIGRlY29k
ZXIgPj4gbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ7CiAgICAgaWYgKCFsYXN0TmF2aWdh
dGlvbldhc0FwcEluaXRpYXRlZCkKQEAgLTEyMyw3ICsxMzAsNyBAQCBzdGQ6Om9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJDbGllbnREYXRhPiBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZGVjb2RlKERl
Y29kZXImCiAgICAgaWYgKCFhbmNlc3Rvck9yaWdpbnMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKLSAgICByZXR1cm4geyB7IFdURk1vdmUoKmlkZW50aWZpZXIpLCBXVEZNb3ZlKCp0
eXBlKSwgV1RGTW92ZSgqZnJhbWVUeXBlKSwgV1RGTW92ZSgqdXJsKSwgV1RGTW92ZSgqcGFnZUlk
ZW50aWZpZXIpLCBXVEZNb3ZlKCpsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCksIFdURk1v
dmUoKmlzVmlzaWJsZSksIFdURk1vdmUoKmlzRm9jdXNlZCksIFdURk1vdmUoKmZvY3VzT3JkZXIp
LCBXVEZNb3ZlKCphbmNlc3Rvck9yaWdpbnMpIH0gfTsKKyAgICByZXR1cm4geyB7IFdURk1vdmUo
KmlkZW50aWZpZXIpLCBXVEZNb3ZlKCp0eXBlKSwgV1RGTW92ZSgqZnJhbWVUeXBlKSwgV1RGTW92
ZSgqdXJsKSwgV1RGTW92ZSgqcGFnZUlkZW50aWZpZXIpLCBXVEZNb3ZlKCpmcmFtZUlkZW50aWZp
ZXIpLCBXVEZNb3ZlKCpsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCksIFdURk1vdmUoKmlz
VmlzaWJsZSksIFdURk1vdmUoKmlzRm9jdXNlZCksIFdURk1vdmUoKmZvY3VzT3JkZXIpLCBXVEZN
b3ZlKCphbmNlc3Rvck9yaWdpbnMpIH0gfTsKIH0KIAogdXNpbmcgU2VydmljZVdvcmtlckNsaWVu
dHNNYXRjaEFsbENhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U2Vydmlj
ZVdvcmtlckNsaWVudERhdGE+JiYpPjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50LmNwcAppbmRleCBkZjc3
Y2M0OTE1OWQ5NjFiZjJhMjE1M2MwNzdjYWY5ODkyZTkyNzNkLi42NWEwZWM2ZGUzMDhjNmUwOTJj
MDAzOTA0NWNmOGY5ODNkZWNjMTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuY3BwCkBAIC03MSwx
MCArNzEsNDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50Ojpmb2N1cyhTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWY8RGVmZXIKICAgICB9KTsKIH0KIAotdm9pZCBT
ZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50OjpuYXZpZ2F0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgY29uc3QgU3RyaW5nJiB1cmwsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKK3Zv
aWQgU2VydmljZVdvcmtlcldpbmRvd0NsaWVudDo6bmF2aWdhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIFJlZjxEZWZlcnJlZFByb21p
c2U+JiYgcHJvbWlzZSkKIHsKLSAgICBVTlVTRURfUEFSQU0odXJsKTsKLSAgICBwcm9taXNlLT5y
ZWplY3QoRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJ3aW5kb3dDbGllbnQubmF2aWdh
dGUoKSBpcyBub3QgeWV0IHN1cHBvcnRlZCJfcyB9KTsKKyAgICBhdXRvIHVybCA9IGNvbnRleHQu
Y29tcGxldGVVUkwodXJsU3RyaW5nKTsKKworICAgIGlmICghdXJsLmlzVmFsaWQoKSkgeworICAg
ICAgICBwcm9taXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgVHlwZUVycm9yLCBtYWtlU3RyaW5nKCJV
Ukwgc3RyaW5nICIsIHVybFN0cmluZywgIiBjYW5ub3Qgc3VjY2Vzc2Z1bGx5IGJlIHBhcnNlZCJf
cykgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAodXJsLnByb3RvY29sSXNB
Ym91dCgpKSB7CisgICAgICAgIHByb21pc2UtPnJlamVjdChFeGNlcHRpb24geyBUeXBlRXJyb3Is
IG1ha2VTdHJpbmcoIlNlcnZpY2VXb3JrZXJDbGllbnRzLm5hdmlnYXRlKCkgY2Fubm90IGJlIGNh
bGxlZCB3aXRoIFVSTCAiX3MsIHVybC5zdHJpbmcoKSkgfSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICAvLyBXZSBpbXBsZW1lbnQgc3RlcCA0IChjaGVja2luZyBvZiBjbGllbnQncyBh
Y3RpdmUgc2VydmljZSB3b3JrZXIpIGluIG5ldHdvcmsgcHJvY2VzcyBhcyB3ZSBjYW5ub3QgZG8g
aXQgc3luY2hyb25vdXNseS4KKyAgICBhdXRvJiBzZXJ2aWNlV29ya2VyQ29udGV4dCA9IGRvd25j
YXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCk7CisgICAgYXV0byBwcm9taXNl
SWRlbnRpZmllciA9IHNlcnZpY2VXb3JrZXJDb250ZXh0LmNsaWVudHMoKS5hZGRQZW5kaW5nUHJv
bWlzZShXVEZNb3ZlKHByb21pc2UpKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtjbGllbnRJZGVu
dGlmaWVyID0gaWRlbnRpZmllcigpLCBwcm9taXNlSWRlbnRpZmllciwgc2VydmljZVdvcmtlcklk
ZW50aWZpZXIgPSBzZXJ2aWNlV29ya2VyQ29udGV4dC50aHJlYWQoKS5pZGVudGlmaWVyKCksIHVy
bCA9IFdURk1vdmUodXJsKS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgU1dD
b250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpLT5uYXZpZ2F0ZShjbGllbnRJ
ZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgdXJsLCBbcHJvbWlzZUlkZW50aWZp
ZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyXShhdXRvIHJlc3VsdCkgbXV0YWJsZSB7CisgICAg
ICAgICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5wb3N0VGFza1RvU2VydmljZVdv
cmtlcihzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgW3Byb21pc2VJZGVudGlmaWVyLCByZXN1bHQg
PSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShyZXN1bHQpKV0oYXV0byYgc2VydmljZVdvcmtlckNv
bnRleHQpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGF1dG8gcHJvbWlzZSA9IHNlcnZpY2VX
b3JrZXJDb250ZXh0LmNsaWVudHMoKS50YWtlUGVuZGluZ1Byb21pc2UocHJvbWlzZUlkZW50aWZp
ZXIpOworICAgICAgICAgICAgICAgIGlmICghcHJvbWlzZSkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewor
ICAgICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QocmVzdWx0LnJlbGVhc2VFeGNlcHRp
b24oKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgYXV0byBjbGllbnREYXRhID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1
ZSgpOworICAgICAgICAgICAgICAgIGlmICghY2xpZW50RGF0YSkgeworICAgICAgICAgICAgICAg
ICAgICBwcm9taXNlLT5yZXNvbHZlV2l0aEpTVmFsdWUoSlNDOjpqc051bGwoKSk7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisjaWYgQVNTRVJUX0VOQUJM
RUQKKyAgICAgICAgICAgICAgICBhdXRvIG9yaWdpbkRhdGEgPSBTZWN1cml0eU9yaWdpbkRhdGE6
OmZyb21VUkwoY2xpZW50RGF0YS0+dXJsKTsKKyAgICAgICAgICAgICAgICBDbGllbnRPcmlnaW4g
Y2xpZW50T3JpZ2luIHsgb3JpZ2luRGF0YSwgb3JpZ2luRGF0YSB9OworI2VuZGlmCisgICAgICAg
ICAgICAgICAgcHJvbWlzZS0+dGVtcGxhdGUgcmVzb2x2ZTxJRExJbnRlcmZhY2U8U2VydmljZVdv
cmtlcldpbmRvd0NsaWVudD4+KFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQ6OmNyZWF0ZShzZXJ2
aWNlV29ya2VyQ29udGV4dCwgV1RGTW92ZSgqY2xpZW50RGF0YSkpKTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICB9KTsKKyAgICB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0
TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250
ZXh0TWFuYWdlci5oCmluZGV4IDlhMjNjNWFkMDM2NjgwZTlkOGVhODgzYjZhMDk2YzViNGE4NTk4
MWUuLjY1ZTQ0MDVhZDQ4Y2ExZjE5ZWQwNzRhMmQ4NDFkOGE4NGQxMmRiZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRN
YW5hZ2VyLmgKQEAgLTcwLDYgKzcwLDkgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQg
Zm9jdXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJik+
JiYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIG9wZW5XaW5kb3coU2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6
b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+JiYpPiYmKSA9IDA7CiAKKyAgICAgICAgdXNpbmcgTmF2
aWdhdGVDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8c3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4+JiYpPjsKKyAgICAgICAg
dmlydHVhbCB2b2lkIG5hdmlnYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgVVJMJiwgTmF2aWdhdGVDYWxsYmFjayYmKSA9
IDA7CisKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxIZWFydEJlYXRDaGVjayhTZXJ2aWNl
V29ya2VySWRlbnRpZmllcikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0QXNJbnNwZWN0
ZWQoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCBjODA3MmI5
MWQ0ODRmOWJmNDBjMmIwYjU5ODljNzJiZWFjMDE4ZTFkLi4zZWQ1ZjYzNThhMzk4M2I2Y2U1ODc4
ODY5OGE3ZWQ3ZjZkMzE5ZjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtMTA3Nyw2ICsxMDc3LDE0IEBAIHZvaWQgU1dT
ZXJ2ZXI6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IENsaWVudE9yaWdpbiYg
Y2xpZW50T3JpZ2luLCBTCiAgICAgbV9jbGllbnRUb0NvbnRyb2xsaW5nUmVnaXN0cmF0aW9uLnJl
bW92ZShyZWdpc3RyYXRpb25JdGVyYXRvcik7CiB9CiAKK3N0ZDo6b3B0aW9uYWw8U2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+IFNXU2VydmVyOjpjbGllbnRJZGVudGlmaWVyVG9D
b250cm9sbGluZ1JlZ2lzdHJhdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBj
bGllbnRJZGVudGlmaWVyKSBjb25zdAoreworICAgIGF1dG8gcmVnaXN0cmF0aW9uSXRlcmF0b3Ig
PSBtX2NsaWVudFRvQ29udHJvbGxpbmdSZWdpc3RyYXRpb24uZmluZChjbGllbnRJZGVudGlmaWVy
KTsKKyAgICBpZiAocmVnaXN0cmF0aW9uSXRlcmF0b3IgPT0gbV9jbGllbnRUb0NvbnRyb2xsaW5n
UmVnaXN0cmF0aW9uLmVuZCgpKQorICAgICAgICByZXR1cm4geyB9OworICAgIHJldHVybiByZWdp
c3RyYXRpb25JdGVyYXRvci0+dmFsdWU7Cit9CisKIFNXU2VydmVyOjpTaG91bGREZWxheVJlbW92
YWwgU1dTZXJ2ZXI6OnJlbW92ZUNvbnRleHRDb25uZWN0aW9uSWZQb3NzaWJsZShjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgZG9tYWluKQogewogICAgIGlmIChtX2NsaWVudHNCeVJlZ2lzdHJhYmxl
RG9tYWluLmNvbnRhaW5zKGRvbWFpbikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKaW5kZXggYTRiYjc1M2ZlYzQwMjMwMDM4OTU1NTNmZjI4
MmJkYzljZTliNTBiMy4uY2QyNDIwM2QxYzk2NmQxYWZjZDBlOTlhMzFkZjI4OWU2ODlhOTA4MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIu
aApAQCAtMjQwLDYgKzI0MCw5IEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFNob3VsZERlbGF5
UmVtb3ZhbCA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgU2hvdWxkRGVsYXlSZW1vdmFsIHJlbW92
ZUNvbnRleHRDb25uZWN0aW9uSWZQb3NzaWJsZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpOwog
CisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4g
Y2xpZW50SWRlbnRpZmllclRvQ29udHJvbGxpbmdSZWdpc3RyYXRpb24oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXIpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFj
aENsaWVudEZvck9yaWdpbihjb25zdCBDbGllbnRPcmlnaW4mLCBjb25zdCBGdW5jdGlvbjx2b2lk
KFNlcnZpY2VXb3JrZXJDbGllbnREYXRhJik+Jik7CisKIHByaXZhdGU6CiAgICAgdm9pZCB2YWxp
ZGF0ZVJlZ2lzdHJhdGlvbkRvbWFpbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgU2Vydmlj
ZVdvcmtlckpvYlR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCkBAIC0y
NTksNyArMjYyLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGluc3RhbGxDb250ZXh0RGF0YShjb25z
dCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmKTsKIAogICAgIFNXU2VydmVyUmVnaXN0cmF0aW9u
KiByZWdpc3RyYXRpb25Gcm9tU2VydmljZVdvcmtlcklkZW50aWZpZXIoU2VydmljZVdvcmtlcklk
ZW50aWZpZXIpOwotICAgIHZvaWQgZm9yRWFjaENsaWVudEZvck9yaWdpbihjb25zdCBDbGllbnRP
cmlnaW4mLCBjb25zdCBGdW5jdGlvbjx2b2lkKFNlcnZpY2VXb3JrZXJDbGllbnREYXRhJik+Jik7
CiAKICAgICB2b2lkIHBlcmZvcm1HZXRPcmlnaW5zV2l0aFJlZ2lzdHJhdGlvbnNDYWxsYmFja3Mo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlcldvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyV29ya2VyLmNwcAppbmRleCAwODgxYmM2MjM3MzcxM2FhZTIxZmViMThiNjI2MjRi
NWJhNmU5OTkyLi45MWQwZTlmOTE1OGVmNTE1ZjRiZTkwYjZlZjViZDliMjZhNDcxMTFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29y
a2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyV29ya2VyLmNwcApAQCAtNDE5LDYgKzQxOSwxNCBAQCB2b2lkIFNXU2VydmVyV29ya2VyOjp0
ZXJtaW5hdGVJZlBvc3NpYmxlKCkKICAgICBtX3NlcnZlci0+cmVtb3ZlQ29udGV4dENvbm5lY3Rp
b25JZlBvc3NpYmxlKHJlZ2lzdHJhYmxlRG9tYWluKCkpOwogfQogCitib29sIFNXU2VydmVyV29y
a2VyOjppc0NsaWVudEFjdGl2ZVNlcnZpY2VXb3JrZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dElk
ZW50aWZpZXIgY2xpZW50SWRlbnRpZmllcikgY29uc3QKK3sKKyAgICBpZiAoIW1fc2VydmVyKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0byByZWdpc3RyYXRpb25JZGVudGlmaWVyID0g
bV9zZXJ2ZXItPmNsaWVudElkZW50aWZpZXJUb0NvbnRyb2xsaW5nUmVnaXN0cmF0aW9uKGNsaWVu
dElkZW50aWZpZXIpOworICAgIHJldHVybiByZWdpc3RyYXRpb25JZGVudGlmaWVyICYmICpyZWdp
c3RyYXRpb25JZGVudGlmaWVyID09IG1fZGF0YS5yZWdpc3RyYXRpb25JZGVudGlmaWVyOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyV29ya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyV29ya2VyLmgKaW5kZXggNTRkZjM4NDIyMDgxYWFlNGQ4MmJhNjI0ZmJhNjI5MGE4ZjYz
N2JiNi4uNzE3ZDU1OWVkYmYzODFiMDVjNTcyMGU1OGU2YzQ5ZWI2YzZkMDdjNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3Jr
ZXIuaApAQCAtMTQxLDYgKzE0MSw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc2hvdWxkQ29udGlu
dWUoKSBjb25zdCB7IHJldHVybiAhIW1fZnVuY3Rpb25hbEV2ZW50Q291bnRlciB8fCBtX2lzSW5z
cGVjdGVkOyB9CiAKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzQ2xpZW50QWN0aXZlU2Vydmlj
ZVdvcmtlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcikgY29uc3Q7CisKIHByaXZh
dGU6CiAgICAgU1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYs
IGNvbnN0IFVSTCYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYs
IGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIGNvbnN0IENyb3Nz
T3JpZ2luRW1iZWRkZXJQb2xpY3kmLCBTdHJpbmcmJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlw
ZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmNwcAppbmRleCA2ZmE4ZGFhNDJkNDc4ZGFjNGMzZTdlOGU2ZmNmZTZiYWY1OGI2
ODZiLi41NmIxODA0Njk2YTU2NTRhMWYzNmFkOTNkN2RjZGU0MTQzMWQyNmM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMTY0LDE5ICsxNjQsMjAgQEAgdm9p
ZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnVwZGF0ZVdvcmtlclN0YXRlSW5DbGllbnQoU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgd28KICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NsaWVudENvbm5l
Y3Rpb246OlVwZGF0ZVdvcmtlclN0YXRlKHdvcmtlciwgc3RhdGUpKTsKIH0KIAotdm9pZCBXZWJT
V1NlcnZlckNvbm5lY3Rpb246OmNvbnRyb2xDbGllbnQoY29uc3QgVmVjdG9yPFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4+JiBmcmFtZUFuY2VzdG9yT3JpZ2lucywgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lz
dHJhdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQordm9pZCBXZWJTV1NlcnZl
ckNvbm5lY3Rpb246OmNvbnRyb2xDbGllbnQoY29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMmIHBhcmFtZXRlcnMsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24sIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKKyAgICBhdXRvIGNsaWVudElkZW50aWZp
ZXIgPSAqcGFyYW1ldGVycy5vcHRpb25zLmNsaWVudElkZW50aWZpZXI7CiAgICAgLy8gQXMgcGVy
IHN0ZXAgMTIgb2YgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL1NlcnZpY2VXb3JrZXIvI29uLWZldGNo
LXJlcXVlc3QtYWxnb3JpdGhtLCB0aGUgYWN0aXZlIHNlcnZpY2Ugd29ya2VyIHNob3VsZCBiZSBj
b250cm9sbGluZyB0aGUgZG9jdW1lbnQuCi0gICAgLy8gV2UgcmVnaXN0ZXIgYSB0ZW1wb3Jhcnkg
c2VydmljZSB3b3JrZXIgY2xpZW50IHVzaW5nIHRoZSBpZGVudGlmaWVyIHByb3ZpZGVkIGJ5IERv
Y3VtZW50TG9hZGVyIGFuZCBub3RpZnkgRG9jdW1lbnRMb2FkZXIgYWJvdXQgaXQuCi0gICAgLy8g
SWYgbm90aWZpY2F0aW9uIGlzIHN1Y2Nlc3NmdWwsIERvY3VtZW50TG9hZGVyIHdpbGwgdW5yZWdp
c3RlciB0aGUgdGVtcG9yYXJ5IHNlcnZpY2Ugd29ya2VyIGNsaWVudCBqdXN0IGFmdGVyIHRoZSBk
b2N1bWVudCBpcyBjcmVhdGVkIGFuZCByZWdpc3RlcmVkIGFzIGEgY2xpZW50LgorICAgIC8vIFdl
IHJlZ2lzdGVyIHRoZSBzZXJ2aWNlIHdvcmtlciBjbGllbnQgdXNpbmcgdGhlIGlkZW50aWZpZXIg
cHJvdmlkZWQgYnkgRG9jdW1lbnRMb2FkZXIgYW5kIG5vdGlmeSBEb2N1bWVudExvYWRlciBhYm91
dCBpdC4KKyAgICAvLyBJZiBub3RpZmljYXRpb24gaXMgc3VjY2Vzc2Z1bCwgRG9jdW1lbnRMb2Fk
ZXIgaXMgcmVzcG9uc2libGUgdG8gdW5yZWdpc3RlciB0aGUgc2VydmljZSB3b3JrZXIgY2xpZW50
IGFzIG5lZWRlZC4KICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlNXQ2xpZW50
Q29ubmVjdGlvbjo6U2V0RG9jdW1lbnRJc0NvbnRyb2xsZWQgeyBjbGllbnRJZGVudGlmaWVyLCBy
ZWdpc3RyYXRpb24uZGF0YSgpIH0sIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB0aGlz
LCBjbGllbnRJZGVudGlmaWVyXShib29sIGlzU3VjY2VzcykgewogICAgICAgICBpZiAoIXdlYWtU
aGlzIHx8IGlzU3VjY2VzcykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdW5yZWdpc3Rl
clNlcnZpY2VXb3JrZXJDbGllbnQoY2xpZW50SWRlbnRpZmllcik7CiAgICAgfSk7CiAKLSAgICBh
dXRvIGFuY2VzdG9yT3JpZ2lucyA9IG1hcChmcmFtZUFuY2VzdG9yT3JpZ2lucywgW10oYXV0byYg
b3JpZ2luKSB7IHJldHVybiBvcmlnaW4tPnRvU3RyaW5nKCk7IH0pOwotICAgIFNlcnZpY2VXb3Jr
ZXJDbGllbnREYXRhIGRhdGEgeyBjbGllbnRJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyQ2xpZW50
VHlwZTo6V2luZG93LCBTZXJ2aWNlV29ya2VyQ2xpZW50RnJhbWVUeXBlOjpOb25lLCByZXF1ZXN0
LnVybCgpLCB7IH0sIHJlcXVlc3QuaXNBcHBJbml0aWF0ZWQoKSA/IFdlYkNvcmU6Okxhc3ROYXZp
Z2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpZZXMgOiBXZWJDb3JlOjpMYXN0TmF2aWdhdGlvbldhc0Fw
cEluaXRpYXRlZDo6Tm8sIGZhbHNlLCBmYWxzZSwgMCwgV1RGTW92ZShhbmNlc3Rvck9yaWdpbnMp
IH07CisgICAgYXV0byBhbmNlc3Rvck9yaWdpbnMgPSBtYXAocGFyYW1ldGVycy5mcmFtZUFuY2Vz
dG9yT3JpZ2lucywgW10oYXV0byYgb3JpZ2luKSB7IHJldHVybiBvcmlnaW4tPnRvU3RyaW5nKCk7
IH0pOworICAgIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIGRhdGEgeyBjbGllbnRJZGVudGlmaWVy
LCBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZTo6V2luZG93LCBTZXJ2aWNlV29ya2VyQ2xpZW50RnJh
bWVUeXBlOjpOb25lLCByZXF1ZXN0LnVybCgpLCBwYXJhbWV0ZXJzLndlYlBhZ2VJRCwgcGFyYW1l
dGVycy53ZWJGcmFtZUlELCByZXF1ZXN0LmlzQXBwSW5pdGlhdGVkKCkgPyBXZWJDb3JlOjpMYXN0
TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDo6WWVzIDogV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25X
YXNBcHBJbml0aWF0ZWQ6Ok5vLCBmYWxzZSwgZmFsc2UsIDAsIFdURk1vdmUoYW5jZXN0b3JPcmln
aW5zKSB9OwogICAgIHJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChTZWN1cml0eU9yaWdpbkRh
dGEgeyByZWdpc3RyYXRpb24ua2V5KCkudG9wT3JpZ2luKCkgfSwgV1RGTW92ZShkYXRhKSwgcmVn
aXN0cmF0aW9uLmlkZW50aWZpZXIoKSwgcmVxdWVzdC5odHRwVXNlckFnZW50KCkpOwogfQogCkBA
IC0yMDEsNyArMjAyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+
IFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y3JlYXRlRmV0Y2hUYXNrKE4KICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgICAgIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlm
aWVyID0gcmVnaXN0cmF0aW9uLT5pZGVudGlmaWVyKCk7Ci0gICAgICAgIGNvbnRyb2xDbGllbnQo
bG9hZGVyLnBhcmFtZXRlcnMoKS5mcmFtZUFuY2VzdG9yT3JpZ2lucywgKmxvYWRlci5wYXJhbWV0
ZXJzKCkub3B0aW9ucy5jbGllbnRJZGVudGlmaWVyLCAqcmVnaXN0cmF0aW9uLCByZXF1ZXN0KTsK
KyAgICAgICAgY29udHJvbENsaWVudChsb2FkZXIucGFyYW1ldGVycygpLCAqcmVnaXN0cmF0aW9u
LCByZXF1ZXN0KTsKICAgICAgICAgbG9hZGVyLnNldFJlc3VsdGluZ0NsaWVudElkZW50aWZpZXIo
bG9hZGVyLnBhcmFtZXRlcnMoKS5vcHRpb25zLmNsaWVudElkZW50aWZpZXItPnRvU3RyaW5nKCkp
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICghbG9hZGVyLnBhcmFtZXRlcnMoKS5zZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5l
Y3Rpb24uaAppbmRleCBmNzdiOWY1YjkzODdiOTFmMmI2NzMyMGUzN2NmYWJiOWI3OTVlMjRkLi40
ZGMzMTQ1Y2JmYjhlM2Q1YzVlZWNmZmNmOTc1MTA1MTVmNGY0YWJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyQ29ubmVjdGlvbi5oCkBAIC02MSw2ICs2MSw3IEBAIHN0cnVjdCBTZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YTsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBOZXR3b3JrUHJvY2Vz
czsKK2NsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOwogY2xhc3MgTmV0d29ya1Jl
c291cmNlTG9hZGVyOwogY2xhc3MgU2VydmljZVdvcmtlckZldGNoVGFzazsKIApAQCAtODMsOCAr
ODQsNiBAQCBwdWJsaWM6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s+IGNyZWF0ZUZldGNoVGFzayhOZXR3b3JrUmVzb3VyY2VMb2FkZXImLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGZldGNoVGFza1RpbWVkT3V0KFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKIAotICAgIHZvaWQgZm9jdXNTZXJ2aWNlV29ya2Vy
Q2xpZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVu
dERhdGE+JiYpPiYmKTsKLQogcHJpdmF0ZToKICAgICAvLyBJbXBsZW1lbnQgU1dTZXJ2ZXI6OkNv
bm5lY3Rpb24gKE1lc3NhZ2VzIHRvIHRoZSBjbGllbnQgV2ViUHJvY2VzcykKICAgICB2b2lkIHJl
amVjdEpvYkluQ2xpZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyLCBjb25z
dCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJikgZmluYWw7CkBAIC05Nyw2ICs5Niw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzZXRSZWdpc3RyYXRpb25MYXN0VXBkYXRlVGltZShXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgV2FsbFRpbWUpIGZpbmFsOwogICAgIHZv
aWQgc2V0UmVnaXN0cmF0aW9uVXBkYXRlVmlhQ2FjaGUoV2ViQ29yZTo6U2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNo
ZSkgZmluYWw7CiAgICAgdm9pZCBub3RpZnlDbGllbnRzT2ZDb250cm9sbGVyQ2hhbmdlKGNvbnN0
IEhhc2hTZXQ8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+JiBjb250
ZXh0SWRlbnRpZmllcnMsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJEYXRhJiBuZXdDb250
cm9sbGVyKTsKKyAgICB2b2lkIGZvY3VzU2VydmljZVdvcmtlckNsaWVudChXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmKT4mJikgZmluYWw7
CiAKICAgICB2b2lkIHNjaGVkdWxlSm9iSW5TZXJ2ZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlckpv
YkRhdGEmJik7CiAKQEAgLTEyOSw3ICsxMjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2V0UHVz
aFBlcm1pc3Npb25TdGF0ZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDx1aW50OF90LCBXZWJDb3JlOjpF
eGNlcHRpb25EYXRhPiYmKT4mJik7CiAKICAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29y
a2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9uLCBXZWJDb3Jl
OjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
T3JDbGllbnRJZGVudGlmaWVyJiBzb3VyY2UpOwotICAgIHZvaWQgY29udHJvbENsaWVudChjb25z
dCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4mLCBXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3RyYXRp
b24mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICB2b2lkIGNvbnRyb2xD
bGllbnQoY29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmLCBXZWJDb3JlOjpTV1Nl
cnZlclJlZ2lzdHJhdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogCiAg
ICAgdXNpbmcgRXhjZXB0aW9uT3JWb2lkQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJik+OwogICAgIHZvaWQgZW5h
YmxlTmF2aWdhdGlvblByZWxvYWQoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIsIEV4Y2VwdGlvbk9yVm9pZENhbGxiYWNrJiYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRleCA3ZGZhMGUxODY0OWEw
ZmUxM2Q0ZjcyNjE1Y2EyODM2MDBjOWY3MGUxLi5iYmEwZDc2MWM5MzRhZjg4OGZkMzFjZWU5ZjMw
MzUyZmZlYzVkOTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmNwcApAQCAtMjYyLDYgKzI2Miw0NiBAQCB2b2lkIFdlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6Zm9jdXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIg
Y2xpZQogICAgIGNvbm5lY3Rpb24tPmZvY3VzU2VydmljZVdvcmtlckNsaWVudChjbGllbnRJZGVu
dGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKK3ZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjpuYXZpZ2F0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBj
bGllbnRJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8
c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4sIEV4Y2VwdGlvbkRhdGE+JiYp
PiYmIGNhbGxiYWNrKQoreworICAgIGF1dG8qIHdvcmtlciA9IFNXU2VydmVyV29ya2VyOjpleGlz
dGluZ1dvcmtlckZvcklkZW50aWZpZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAgIGlm
ICghd29ya2VyKSB7CisgICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVkKEV4Y2VwdGlvbkRh
dGEgeyBUeXBlRXJyb3IsICJubyBzZXJ2aWNlIHdvcmtlciJfcyB9KSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpZiAoIXdvcmtlci0+aXNDbGllbnRBY3RpdmVTZXJ2aWNlV29ya2Vy
KGNsaWVudElkZW50aWZpZXIpKSB7CisgICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVkKEV4
Y2VwdGlvbkRhdGEgeyBUeXBlRXJyb3IsICJzZXJ2aWNlIHdvcmtlciBpcyBub3QgdGhlIGNsaWVu
dCBhY3RpdmUgc2VydmljZSB3b3JrZXIiX3MgfSkpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgYXV0byBkYXRhID0gd29ya2VyLT5maW5kQ2xpZW50QnlJZGVudGlmaWVyKGNsaWVudElk
ZW50aWZpZXIpOworICAgIGlmICghZGF0YSB8fCAhZGF0YS0+cGFnZUlkZW50aWZpZXIgfHwgIWRh
dGEtPmZyYW1lSWRlbnRpZmllcikgeworICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChF
eGNlcHRpb25EYXRhIHsgVHlwZUVycm9yLCAiY2Fubm90IG5hdmlnYXRlIHNlcnZpY2Ugd29ya2Vy
IGNsaWVudCJfcyB9KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGZyYW1l
SWRlbnRpZmllciA9ICpkYXRhLT5mcmFtZUlkZW50aWZpZXI7CisgICAgbV9jb25uZWN0aW9uLm5l
dHdvcmtQcm9jZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpOYXZpZ2F0ZVNlcnZpY2VXb3JrZXJD
bGllbnQgeyBmcmFtZUlkZW50aWZpZXIsIGNsaWVudElkZW50aWZpZXIsIHVybCB9LCBbd2Vha1Ro
aXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgZnJhbWVJZGVudGlmaWVyLCB1cmwsIGNsaWVudE9yaWdp
biA9IHdvcmtlci0+b3JpZ2luKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8g
cGFnZUlkZW50aWZpZXIpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFr
VGhpcy0+c2VydmVyKCkpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVkKEV4
Y2VwdGlvbkRhdGEgeyBUeXBlRXJyb3IsICJzZXJ2aWNlIHdvcmtlciBpcyBnb25lIl9zIH0pKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghcGFnZUlkZW50
aWZpZXIpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVkKEV4Y2VwdGlvbkRh
dGEgeyBUeXBlRXJyb3IsICJuYXZpZ2F0ZSBmYWlsZWQiX3MgfSkpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xp
ZW50RGF0YT4gY2xpZW50RGF0YTsKKyAgICAgICAgd2Vha1RoaXMtPnNlcnZlcigpLT5mb3JFYWNo
Q2xpZW50Rm9yT3JpZ2luKGNsaWVudE9yaWdpbiwgW3BhZ2VJZGVudGlmaWVyLCBmcmFtZUlkZW50
aWZpZXIsIHVybCwgJmNsaWVudERhdGFdKGF1dG8mIGRhdGEpIHsKKyAgICAgICAgICAgIGlmICgh
Y2xpZW50RGF0YSAmJiBkYXRhLnBhZ2VJZGVudGlmaWVyICYmICpkYXRhLnBhZ2VJZGVudGlmaWVy
ID09ICpwYWdlSWRlbnRpZmllciAmJiBkYXRhLmZyYW1lSWRlbnRpZmllciAmJiAqZGF0YS5mcmFt
ZUlkZW50aWZpZXIgPT0gZnJhbWVJZGVudGlmaWVyICYmIGVxdWFsSWdub3JpbmdGcmFnbWVudElk
ZW50aWZpZXIoZGF0YS51cmwsIHVybCkpCisgICAgICAgICAgICAgICAgY2xpZW50RGF0YSA9IGRh
dGE7CisgICAgICAgIH0pOworICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNsaWVudERhdGEpKTsK
KyAgICB9LCAwKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmgKaW5kZXggMDE2YTgyNzUzNTBhYzFlYzM0NzkwMmIyZmEzNGY4Mjg2MzA5
ZDVjMC4uOTBkNzNjYjgyNTQyZjkyMDdlY2M5MDA5NGExY2I0OTUxNDUzYzllNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtMTAwLDYg
KzEwMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmaXJlTm90aWZpY2F0aW9uRXZlbnQoV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRh
dGEmLCBXZWJDb3JlOjpOb3RpZmljYXRpb25FdmVudFR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2UoKSBmaW5hbDsKICAgICB2b2lkIGZv
Y3VzKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERh
dGE+JiYpPiYmKTsKKyAgICB2b2lkIG5hdmlnYXRlKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3Qg
VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJik+
JiYpOwogCiAgICAgdm9pZCBjb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpIGZpbmFsOwogICAg
IHZvaWQgdGVybWluYXRlRHVlVG9VbnJlc3BvbnNpdmVuZXNzKCkgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdl
cy5pbgppbmRleCAyMWQyMzY1NTdjNDM0Mzk5ZGU5ODE4ZDY3OTNhY2I2NWNiYzFlNmJmLi4xODJm
MmJmNWI5MWFlNzM3MjM3ZDFkNzM1NzYxOTJiZTM0Mjc4NDU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
QEAgLTM2LDYgKzM2LDcgQEAgbWVzc2FnZXMgLT4gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uIE5vdFJlZkNvdW50ZWQgewogICAgIE1hdGNoQWxsKHVpbnQ2NF90IG1hdGNoQWxsUmVxdWVz
dElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0
aW9ucyBvcHRpb25zKTsKICAgICBDbGFpbShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6RXhj
ZXB0aW9uRGF0YT4gcmVzdWx0KQogICAgIEZvY3VzKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyKSAtPiAoc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gcmVzdWx0KQorICAgIE5h
dmlnYXRlKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGNsaWVudElk
ZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBVUkwgdXJsKSAtPiAoRXhwZWN0ZWQ8c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4sIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+IHJlc3VsdCkK
ICAgICBTZXRTY3JpcHRSZXNvdXJjZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBp
ZGVudGlmaWVyLCBVUkwgc2NyaXB0VVJMLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGE6OkltcG9ydGVkU2NyaXB0IHNjcmlwdCkKICAgICBQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtl
ckNsaWVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBkZXN0aW5h
dGlvbiwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2UsIFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZSwgU3RyaW5nIHNvdXJjZU9yaWdp
bikKICAgICBEaWRGYWlsSGVhcnRCZWF0Q2hlY2soV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDVjZjJiZWMxMmFiOWMwY2YzN2Zm
MjNmMTE1ZjBkOWJmOGVjMzI4OTUuLmY3Nzc5NjA5ZjkzNjJkMmEyN2U4MjBhYzUyYTAxMzI3YmE2
MWIzNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTgwNCw3ICsxODA0LDcgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5Ojp0ZXJtaW5hdGVSZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlvbldoZW5Q
b3NzaWJsZShSZW0KICAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6VGVybWluYXRl
UmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25XaGVuUG9zc2libGUod29ya2VyVHlwZSwgc2Vz
c2lvbklELCByZWdpc3RyYWJsZURvbWFpbiwgcHJvY2Vzc0lkZW50aWZpZXIpLCAwKTsKIH0KIAot
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpvcGVuV2luZG93RnJvbVNlcnZpY2VXb3JrZXIoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzZXJ2aWNlV29ya2VyT3JpZ2luLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+JiYpPiYm
IGNhbGxiYWNrKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpvcGVuV2luZG93RnJvbVNlcnZp
Y2VXb3JrZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHVybFN0cmlu
ZywgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzZXJ2aWNlV29ya2VyT3JpZ2lu
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+JiYp
PiYmIGNhbGxiYWNrKQogewogICAgIGlmIChhdXRvKiBzdG9yZSA9IHdlYnNpdGVEYXRhU3RvcmVG
cm9tU2Vzc2lvbklEKHNlc3Npb25JRCkpIHsKICAgICAgICAgc3RvcmUtPm9wZW5XaW5kb3dGcm9t
U2VydmljZVdvcmtlcih1cmxTdHJpbmcsIHNlcnZpY2VXb3JrZXJPcmlnaW4sIFdURk1vdmUoY2Fs
bGJhY2spKTsKQEAgLTE4MTQsNiArMTgxNCwxNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
Om9wZW5XaW5kb3dGcm9tU2VydmljZVdvcmtlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsCiAg
ICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpuYXZpZ2F0ZVNlcnZpY2VXb3JrZXJDbGllbnQoRnJhbWVJZGVudGlmaWVyIGZyYW1lSWRlbnRp
ZmllciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgZG9jdW1lbnRJZGVudGlmaWVy
LCBjb25zdCBVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPik+JiYgY2FsbGJhY2spCit7CisgICAgYXV0byogcHJvY2VzcyA9IFdlYlBy
b2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIoZG9jdW1lbnRJZGVudGlmaWVyLnByb2Nl
c3NJZGVudGlmaWVyKCkpOworICAgIGF1dG8qIGZyYW1lID0gcHJvY2VzcyA/IHByb2Nlc3MtPndl
YkZyYW1lKGZyYW1lSWRlbnRpZmllcikgOiBudWxscHRyOworICAgIGlmICghZnJhbWUpIHsKKyAg
ICAgICAgY2FsbGJhY2soeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBmcmFtZS0+
bmF2aWdhdGVTZXJ2aWNlV29ya2VyQ2xpZW50KGRvY3VtZW50SWRlbnRpZmllciwgdXJsLCBXVEZN
b3ZlKGNhbGxiYWNrKSk7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6YXBwbGljYXRp
b25EaWRFbnRlckJhY2tncm91bmQoKQogewogICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzOjpBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCgpLCAwKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXgg
YWZhYjUyZDM2MzNlNWQ0MDRlZmQ5NWVjZTZmYWU5NzFkMWFmYWRkOC4uNmQ5NmQwMjNmOTM5NDhl
ZGRhNWM2YWRjNzI0MzJkZDZkYzQ1NGU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTMwNCw2ICszMDQsOCBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIG9wZW5XaW5kb3dGcm9tU2VydmljZVdvcmtlcihQQUw6OlNl
c3Npb25JRCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYgc2VydmljZVdvcmtlck9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiYmKT4mJik7CiAKKyAgICB2b2lk
IG5hdmlnYXRlU2VydmljZVdvcmtlckNsaWVudChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
KT4mJik7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTmV0d29ya1Byb2Nlc3NQcm94eSgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMGY3ZjEzNTk0MzM0MTM2OWFlYWRi
OTBhODg4OWEyMGM2M2FhMGU3ZS4uMDIxZmIxYTUzMTQ0YTZkZjAzMGViNmNkYTMyNGRkNTM5MTBj
NDZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtOTMsNiArOTMsNyBAQCBt
ZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKICAgICBEYXRh
VGFza0RpZENvbXBsZXRlV2l0aEVycm9yKFdlYktpdDo6RGF0YVRhc2tJZGVudGlmaWVyIGlkZW50
aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCiAKICAgICBPcGVuV2luZG93RnJv
bVNlcnZpY2VXb3JrZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgdXJsU3RyaW5n
LCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHNlcnZpY2VXb3JrZXJPcmlnaW4p
IC0+IChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBuZXdQYWdlKQorICAg
IE5hdmlnYXRlU2VydmljZVdvcmtlckNsaWVudChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJh
bWVJZGVudGlmaWVyLCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBk
b2N1bWVudElkZW50aWZpZXIsIFVSTCB1cmwpIC0+IChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyPiBwYWdlKQogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKaW5kZXggNjJiODViNzI2M2YyYTgxMjQ0NDRmMGZl
MjVjYjIyMDIyMDQyN2M4YS4uODhiMmVhODM4NjcyYWM3MTg2NWViNjliY2FmNWZiMjJjYTAwYTg3
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5
LmNwcApAQCAtMjM4LDggKzIzOCwxMCBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRD
cmVhdGVNYWluRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCiAKICAgICAvLyBSZXN0b3Jl
IHRoZSBtYWluIGZyYW1lJ3MgY29tbWl0dGVkIFVSTCBhcyBzb21lIGNsaWVudHMgbWF5IHJlbHkg
b24gaXQgdW50aWwgdGhlIG5leHQgbG9hZCBpcyBjb21taXR0ZWQuCiAgICAgUmVmUHRyIHByZXZp
b3VzTWFpbkZyYW1lID0gbV9wYWdlLm1haW5GcmFtZSgpOwotICAgIGlmIChwcmV2aW91c01haW5G
cmFtZSkKKyAgICBpZiAocHJldmlvdXNNYWluRnJhbWUpIHsKICAgICAgICAgbV9tYWluRnJhbWUt
PmZyYW1lTG9hZFN0YXRlKCkuc2V0VVJMKHByZXZpb3VzTWFpbkZyYW1lLT51cmwoKSk7CisgICAg
ICAgIHByZXZpb3VzTWFpbkZyYW1lLT50cmFuc2Zlck5hdmlnYXRpb25DYWxsYmFja1RvRnJhbWUo
Km1fbWFpbkZyYW1lKTsKKyAgICB9CiAKICAgICAvLyBOb3JtYWxseSwgbm90aWZpY2F0aW9uIG9m
IGEgc2VydmVyIHJlZGlyZWN0IGNvbWVzIGZyb20gdGhlIFdlYkNvbnRlbnQgcHJvY2Vzcy4KICAg
ICAvLyBJZiB3ZSBhcmUgcHJvY2VzcyBzd2FwcGluZyBpbiByZXNwb25zZSB0byBhIHNlcnZlciBy
ZWRpcmVjdCB0aGVuIHRoYXQgbm90aWZpY2F0aW9uIHdpbGwgbm90IGNvbWUgZnJvbSB0aGUgbmV3
IFdlYkNvbnRlbnQgcHJvY2Vzcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkZyYW1lUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94
eS5jcHAKaW5kZXggZDQ0YTVkYmU2YTNmMjY2MzBiMzQ5MTMyNDRlN2U0M2IyYzFmMTYzMS4uM2Uw
NGVlOWFhZWQwNzMzYmEyZGVjZWQ2ZGUzMTQ4NzcwMGJiMWJmZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKQEAgLTU4LDYgKzU4LDkgQEAgV2ViRnJhbWVQcm94
eTo6fldlYkZyYW1lUHJveHkoKQogI2lmIFBMQVRGT1JNKEdUSykKICAgICBXZWJQYXN0ZWJvYXJk
UHJveHk6OnNpbmdsZXRvbigpLmRpZERlc3Ryb3lGcmFtZSh0aGlzKTsKICNlbmRpZgorCisgICAg
aWYgKG1fbmF2aWdhdGVDYWxsYmFjaykKKyAgICAgICAgbV9uYXZpZ2F0ZUNhbGxiYWNrKHsgfSk7
CiB9CiAKIHZvaWQgV2ViRnJhbWVQcm94eTo6d2ViUHJvY2Vzc1dpbGxTaHV0RG93bigpCkBAIC02
OCw2ICs3MSw5IEBAIHZvaWQgV2ViRnJhbWVQcm94eTo6d2ViUHJvY2Vzc1dpbGxTaHV0RG93bigp
CiAgICAgICAgIG1fYWN0aXZlTGlzdGVuZXItPmlnbm9yZSgpOwogICAgICAgICBtX2FjdGl2ZUxp
c3RlbmVyID0gbnVsbHB0cjsKICAgICB9CisKKyAgICBpZiAobV9uYXZpZ2F0ZUNhbGxiYWNrKQor
ICAgICAgICBtX25hdmlnYXRlQ2FsbGJhY2soeyB9KTsKIH0KIAogYm9vbCBXZWJGcmFtZVByb3h5
Ojppc01haW5GcmFtZSgpIGNvbnN0CkBAIC03OCw2ICs4NCwzOCBAQCBib29sIFdlYkZyYW1lUHJv
eHk6OmlzTWFpbkZyYW1lKCkgY29uc3QKICAgICByZXR1cm4gdGhpcyA9PSBtX3BhZ2UtPm1haW5G
cmFtZSgpIHx8IChtX3BhZ2UtPnByb3Zpc2lvbmFsUGFnZVByb3h5KCkgJiYgdGhpcyA9PSBtX3Bh
Z2UtPnByb3Zpc2lvbmFsUGFnZVByb3h5KCktPm1haW5GcmFtZSgpKTsKIH0KIAorc3RkOjpvcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4gV2ViRnJhbWVQcm94eTo6cGFnZUlkZW50aWZpZXIoKQorewor
ICAgIGlmICghbV9wYWdlKQorICAgICAgICByZXR1cm4geyB9OworICAgIHJldHVybiBtX3BhZ2Ut
PndlYlBhZ2VJRCgpOworfQorCit2b2lkIFdlYkZyYW1lUHJveHk6Om5hdmlnYXRlU2VydmljZVdv
cmtlckNsaWVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBkb2N1
bWVudElkZW50aWZpZXIsIGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0
ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+KT4mJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIW1f
cGFnZSkgeworICAgICAgICBjYWxsYmFjayh7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgbV9wYWdlLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6Ok5hdmln
YXRlU2VydmljZVdvcmtlckNsaWVudCB7IGRvY3VtZW50SWRlbnRpZmllciwgdXJsIH0sIFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgdXJsLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXShib29sIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghcmVzdWx0KSB7
CisgICAgICAgICAgICBjYWxsYmFjayh7IH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKCFtX2FjdGl2ZUxpc3RlbmVyKSB7CisgICAgICAgICAgICBjYWxs
YmFjayhwYWdlSWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGlmIChtX25hdmlnYXRlQ2FsbGJhY2spCisgICAgICAgICAgICBtX25hdmlnYXRl
Q2FsbGJhY2soeyB9KTsKKworICAgICAgICBtX25hdmlnYXRlQ2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKTsKKyAgICB9KTsKK30KKwogdm9pZCBXZWJGcmFtZVByb3h5Ojpsb2FkVVJMKGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQogewogICAgIGlmICghbV9wYWdlKQpA
QCAtOTUsNyArMTMzLDcgQEAgdm9pZCBXZWJGcmFtZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVQKICAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWREYXRhSW5GcmFtZShkYXRhLCBNSU1FVHlwZSwgZW5j
b2RpbmdOYW1lLCBiYXNlVVJMLCBtX2ZyYW1lSUQpKTsKIH0KIAotdm9pZCBXZWJGcmFtZVByb3h5
OjpzdG9wTG9hZGluZygpIGNvbnN0Cit2b2lkIFdlYkZyYW1lUHJveHk6OnN0b3BMb2FkaW5nKCkK
IHsKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTA0LDYgKzE0Miw5IEBA
IHZvaWQgV2ViRnJhbWVQcm94eTo6c3RvcExvYWRpbmcoKSBjb25zdAogICAgICAgICByZXR1cm47
CiAKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0b3BMb2FkaW5nRnJhbWUo
bV9mcmFtZUlEKSk7CisKKyAgICBpZiAobV9uYXZpZ2F0ZUNhbGxiYWNrKQorICAgICAgICBtX25h
dmlnYXRlQ2FsbGJhY2soeyB9KTsKIH0KICAgICAKIGJvb2wgV2ViRnJhbWVQcm94eTo6Y2FuUHJv
dmlkZVNvdXJjZSgpIGNvbnN0CkBAIC0xNjAsNiArMjAxLDkgQEAgdm9pZCBXZWJGcmFtZVByb3h5
OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoY29uc3QgVVJMJiB1
cmwpCiB2b2lkIFdlYkZyYW1lUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWQoKQogewogICAg
IG1fZnJhbWVMb2FkU3RhdGUuZGlkRmFpbFByb3Zpc2lvbmFsTG9hZCgpOworCisgICAgaWYgKG1f
bmF2aWdhdGVDYWxsYmFjaykKKyAgICAgICAgbV9uYXZpZ2F0ZUNhbGxiYWNrKHsgfSk7CiB9CiAK
IHZvaWQgV2ViRnJhbWVQcm94eTo6ZGlkQ29tbWl0TG9hZChjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBXZWJDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCBjb250YWluc1Bs
dWdpbkRvY3VtZW50KQpAQCAtMTc1LDExICsyMTksMTcgQEAgdm9pZCBXZWJGcmFtZVByb3h5Ojpk
aWRDb21taXRMb2FkKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFdlYkNlcnRpZmljYXRlSW5m
byYKIHZvaWQgV2ViRnJhbWVQcm94eTo6ZGlkRmluaXNoTG9hZCgpCiB7CiAgICAgbV9mcmFtZUxv
YWRTdGF0ZS5kaWRGaW5pc2hMb2FkKCk7CisKKyAgICBpZiAobV9uYXZpZ2F0ZUNhbGxiYWNrKQor
ICAgICAgICBtX25hdmlnYXRlQ2FsbGJhY2socGFnZUlkZW50aWZpZXIoKSk7CiB9CiAKIHZvaWQg
V2ViRnJhbWVQcm94eTo6ZGlkRmFpbExvYWQoKQogewogICAgIG1fZnJhbWVMb2FkU3RhdGUuZGlk
RmFpbExvYWQoKTsKKworICAgIGlmIChtX25hdmlnYXRlQ2FsbGJhY2spCisgICAgICAgIG1fbmF2
aWdhdGVDYWxsYmFjayh7IH0pOwogfQogCiB2b2lkIFdlYkZyYW1lUHJveHk6OmRpZFNhbWVEb2N1
bWVudE5hdmlnYXRpb24oY29uc3QgVVJMJiB1cmwpCkBAIC0xOTcsNiArMjQ3LDkgQEAgV2ViRnJh
bWVQb2xpY3lMaXN0ZW5lclByb3h5JiBXZWJGcmFtZVByb3h5OjpzZXRVcFBvbGljeUxpc3RlbmVy
UHJveHkoQ29tcGxldGlvbkgKICAgICBpZiAobV9hY3RpdmVMaXN0ZW5lcikKICAgICAgICAgbV9h
Y3RpdmVMaXN0ZW5lci0+aWdub3JlKCk7CiAgICAgbV9hY3RpdmVMaXN0ZW5lciA9IFdlYkZyYW1l
UG9saWN5TGlzdGVuZXJQcm94eTo6Y3JlYXRlKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsg
KnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0g
KFBvbGljeUFjdGlvbiBhY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2llcywgUHJv
Y2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBS
ZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZlQnJvd3NpbmdXYXJuaW5nLCBzdGQ6Om9w
dGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGFjdGlvbiAhPSBQb2xpY3lBY3Rpb246OlVz
ZSAmJiBtX25hdmlnYXRlQ2FsbGJhY2spCisgICAgICAgICAgICBtX25hdmlnYXRlQ2FsbGJhY2so
cGFnZUlkZW50aWZpZXIoKSk7CisKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYWN0aW9uLCBw
b2xpY2llcywgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgV1RGTW92ZShzYWZlQnJvd3Np
bmdXYXJuaW5nKSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik7CiAgICAgICAgIG1fYWN0
aXZlTGlzdGVuZXIgPSBudWxscHRyOwogICAgIH0sIGV4cGVjdFNhZmVCcm93c2luZ1Jlc3VsdCwg
ZXhwZWN0QXBwQm91bmREb21haW5SZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJh
bWVQcm94eS5oCmluZGV4IDM5MWIwMjczNjI4MzQxZWRhYTg4MzBiMzc0ZjBmYjEzMTI0MDE3MmEu
LjA2ZTgyZWU0ZTc5ZmYzNGU2NzJjYTA3YjI1Zjk0MjY3ZjI0YjY4YmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKQEAgLTc3LDEwICs3NywxMiBAQCBwdWJsaWM6CiAK
ICAgICBGcmFtZUxvYWRTdGF0ZSYgZnJhbWVMb2FkU3RhdGUoKSB7IHJldHVybiBtX2ZyYW1lTG9h
ZFN0YXRlOyB9CiAKKyAgICB2b2lkIG5hdmlnYXRlU2VydmljZVdvcmtlckNsaWVudChXZWJDb3Jl
OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgY29uc3QgVVJMJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPik+JiYp
OworCiAgICAgdm9pZCBsb2FkVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIg
PSBTdHJpbmcoKSk7CiAgICAgLy8gU3ViIGZyYW1lcyBvbmx5LiBGb3IgbWFpbiBmcmFtZXMsIHVz
ZSBXZWJQYWdlUHJveHk6OmxvYWREYXRhLgogICAgIHZvaWQgbG9hZERhdGEoY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNv
ZGluZ05hbWUsIGNvbnN0IFVSTCYgYmFzZVVSTCk7Ci0gICAgdm9pZCBzdG9wTG9hZGluZygpIGNv
bnN0OworICAgIHZvaWQgc3RvcExvYWRpbmcoKTsKIAogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29u
c3QgeyByZXR1cm4gbV9mcmFtZUxvYWRTdGF0ZS51cmwoKTsgfQogICAgIGNvbnN0IFVSTCYgcHJv
dmlzaW9uYWxVUkwoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lTG9hZFN0YXRlLnByb3Zpc2lvbmFs
VVJMKCk7IH0KQEAgLTEyOCw5ICsxMzAsMTMgQEAgcHVibGljOgogICAgIHZvaWQgY29sbGFwc2VT
ZWxlY3Rpb24oKTsKICNlbmRpZgogCisgICAgdm9pZCB0cmFuc2Zlck5hdmlnYXRpb25DYWxsYmFj
a1RvRnJhbWUoV2ViRnJhbWVQcm94eSYgZnJhbWUpIHsgc3RkOjpleGNoYW5nZShmcmFtZS5tX25h
dmlnYXRlQ2FsbGJhY2ssIFdURk1vdmUobV9uYXZpZ2F0ZUNhbGxiYWNrKSk7IH0KKwogcHJpdmF0
ZToKICAgICBXZWJGcmFtZVByb3h5KFdlYlBhZ2VQcm94eSYsIFdlYkNvcmU6OkZyYW1lSWRlbnRp
Zmllcik7CiAKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdl
SWRlbnRpZmllcigpOworCiAgICAgV2Vha1B0cjxXZWJQYWdlUHJveHk+IG1fcGFnZTsKIAogICAg
IEZyYW1lTG9hZFN0YXRlIG1fZnJhbWVMb2FkU3RhdGU7CkBAIC0xNDQsNiArMTUwLDcgQEAgcHJp
dmF0ZToKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgV2ViQ29yZTo6Q29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyIG1fY29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOwogI2Vu
ZGlmCisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyPik+IG1fbmF2aWdhdGVDYWxsYmFjazsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCmluZGV4IDczZWNkZTI2
ZDhlMDljOWJhNjBiZDQ1MThmOWFkMDU1YTAyYjc2MmEuLjhmMGY4MTQ2NTBjYjU5OTUxOTExMzIy
ODZhM2ExZTgzZGU5Y2YzOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAK
QEAgLTM0OSw2ICszNDksMTcgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
Y2xhaW0oU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlckkKICAgICB9KTsKIH0K
IAordm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6bmF2aWdhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwgU2VydmljZVdvcmtlcklk
ZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFVSTCYgdXJsLCBOYXZpZ2F0
ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cy0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246Ok5hdmlnYXRlIHsgY2xpZW50SWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIHVybCB9LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYmIHJlc3VsdCkg
bXV0YWJsZSB7CisgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7CisgICAgICAgICAg
ICBjYWxsYmFjayhXVEZNb3ZlKHJlc3VsdCkuZXJyb3IoKS50b0V4Y2VwdGlvbigpKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJlc3Vs
dCkudmFsdWUoKSk7CisgICAgfSk7Cit9CisKIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OmZvY3VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGNsaWVudElkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YT4mJik+JiYgY2FsbGJhY2spCiB7CiAgICAgbV9jb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2Vzcy0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb246OkZvY3VzIHsgY2xpZW50SWRlbnRpZmllciB9LCBXVEZNb3Zl
KGNhbGxiYWNrKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCA1ODQyODJj
MTA4M2UxNDg2ZjllMWZlMmY4MGMxNjA2NmYwZDUxYWMyLi5lMmVlMzA2YTcxNGNjNzQwYjkzY2U3
Zjg4MTMyN2YxZDg3N2ZjMDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAg
LTgyLDYgKzgyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIG1hdGNoQWxsKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50UXVl
cnlPcHRpb25zJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudHNNYXRjaEFsbENhbGxiYWNr
JiYpIGZpbmFsOwogICAgIHZvaWQgY2xhaW0oV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6RXhjZXB0aW9uT3I8dm9pZD4mJik+
JiYpIGZpbmFsOwogICAgIHZvaWQgZm9jdXMoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4
dElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJik+JiYpIGZpbmFsOworICAgIHZvaWQgbmF2aWdh
dGUoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIsIFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBOYXZpZ2F0ZUNhbGxiYWNrJiYpIGZp
bmFsOwogICAgIHZvaWQgc2tpcFdhaXRpbmcoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CiAgICAgdm9pZCBzZXRTY3Jp
cHRSZXNvdXJjZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgVVJMJiwg
Y29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCYp
IGZpbmFsOwogICAgIGJvb2wgaXNUaHJvdHRsZWFibGUoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZDZiMzIyYTA5NjBm
YzI0MjA0MTY0Y2E5OWM3ODM5ZjU4NzM5MzIzNC4uMDg5Zjg0YTE1MjIxMzdiMzlhZWRhNjkwMDVi
OTliYWRlZWEyMzczZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKQEAgLTY0MzksNiArNjQzOSwyMiBAQCB2b2lkIFdlYlBhZ2U6OmludGVyYWN0aW9u
UmVnaW9ucyhGbG9hdFJlY3QgcmVjdEluQ29udGVudENvb3JkaW5hdGVzLCBDb21wbGV0aW9uSAog
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OmludGVyYWN0aW9uUmVnaW9ucygqbV9wYWdl
LCByZWN0SW5Db250ZW50Q29vcmRpbmF0ZXMpKTsKIH0KIAordm9pZCBXZWJQYWdlOjpuYXZpZ2F0
ZVNlcnZpY2VXb3JrZXJDbGllbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgZG9j
dW1lbnRJZGVudGlmaWVyLCBjb25zdCBVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjYWxsYmFjaykKK3sKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgYXV0
byogZG9jdW1lbnQgPSBEb2N1bWVudDo6YWxsRG9jdW1lbnRzTWFwKCkuZ2V0KGRvY3VtZW50SWRl
bnRpZmllcik7CisgICAgaWYgKCFkb2N1bWVudCkgeworICAgICAgICBjYWxsYmFjayhmYWxzZSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZG9jdW1lbnQtPm5hdmlnYXRlRnJvbVNlcnZp
Y2VXb3JrZXIodXJsLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJB
TShkb2N1bWVudElkZW50aWZpZXIpOworICAgIFVOVVNFRF9QQVJBTSh1cmwpOworICAgIGNhbGxi
YWNrKGZhbHNlKTsKKyNlbmRpZgorfQorCiB2b2lkIFdlYlBhZ2U6OnNldEFsd2F5c1Nob3dzSG9y
aXpvbnRhbFNjcm9sbGVyKGJvb2wgYWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIpCiB7CiAg
ICAgaWYgKGFsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVyID09IG1fYWx3YXlzU2hvd3NIb3Jp
em9udGFsU2Nyb2xsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKaW5kZXggMWVlNzRmNGQ5MjM3ZWEwODljMjg5ZmMxMTRhNjA5NzM4YzM1OTI1Yy4uODUxZDM0
YjRhMTgwZDZjMzdkZDg2YTE5MjYwMTY2ZjlhYjlkNTViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtOTQ1LDYgKzk0NSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGRpZEVuZFVzZXJUcmlnZ2VyZWRTZWxlY3Rpb25DaGFuZ2VzKCk7CiAKICAgICB2b2lk
IGludGVyYWN0aW9uUmVnaW9ucyhXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdEluQ29udGVudENvb3Jk
aW5hdGVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpJbnRlcmFjdGlv
blJlZ2lvbj4pPiYmKTsKKyAgICB2b2lkIG5hdmlnYXRlU2VydmljZVdvcmtlckNsaWVudChXZWJD
b3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgY29uc3QgVVJMJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2
b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZUFjY2Vzc2liaWxpdHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDJmYmRl
YzhiOGNjMjRlYTIxMmJhMmVhYzI1Y2M5ZTNkZWRhZTU2NjYuLmVlODExMzhjNGJmYTE1YTMyOGQ5
YTZhODU4NTE4NGZhMjNhMzM5NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNjgzLDQgKzY4Myw2IEBAIEdlbmVy
YXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGlj
RWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgU2Nyb2xsVG9SZWN0KFdlYkNvcmU6OkZsb2F0UmVjdCB0
YXJnZXRSZWN0LCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikKIAogICAgIEludGVyYWN0aW9u
UmVnaW9ucyhXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdEluQ29udGVudENvb3JkaW5hdGVzKSAtPiAo
VmVjdG9yPFdlYkNvcmU6OkludGVyYWN0aW9uUmVnaW9uPiByZWdpb25zKQorCisgICAgTmF2aWdh
dGVTZXJ2aWNlV29ya2VyQ2xpZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyIGRvY3VtZW50SWRlbnRpZmllciwgVVJMIHVybCkgLT4gKGJvb2wgcmVzdWx0KQogfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDIwYmU4
ZWJmYWU4OTczM2ZlMGIzMTA3MmI0OWZiMmRiYzk5YjZjY2IuLmFhZWJkMDY3NTQyZGJkZmYxMzg0
ZTU0NDkwZDljYTE4YzdmYzRhNTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMi0wNC0wNSAgWW91ZW5uIEZhYmxl
dCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFNlcnZpY2VXb3JrZXJX
aW5kb3dDbGllbnQubmF2aWdhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzODczOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29y
a2VyQmFzaWMubW06CisKIDIwMjItMDQtMDIgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxk
QGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIEF1dG9tYXRpY2FsbHkgcmVsYXlvdXQgdGhl
IHBhZ2Ugd2hlbiBuZXcgZm9udHMgYXJlIGluc3RhbGxlZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQpp
bmRleCAxNWVkNmVkNDgyODgyMGNkYTM1NjEzY2FlZGEwMDliZmNlMTliN2FiLi43YTkwNWJlZTUz
N2NmNmYyZTgzMGVhNDZjZjdiOTNkN2EzYTg2NjY2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQpA
QCAtMjk2NiwzICsyOTY2LDE3MiBAQCBURVNUKFNlcnZpY2VXb3JrZXIsIFNlcnZpY2VXb3JrZXJX
aW5kb3dDbGllbnRGb2N1c1JlcXVpcmVzVXNlckdlc3R1cmUpCiAgICAgW3dlYlZpZXcgZXZhbHVh
dGVKYXZhU2NyaXB0OkAiZm9jdXNDbGllbnQoKSIgY29tcGxldGlvbkhhbmRsZXI6IG5pbF07CiAg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKIH0KKworc3RhdGljIGNvbnN0ZXhw
ciBhdXRvIFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnROYXZpZ2F0ZU1haW4gPQorIjxkaXY+dGVz
dCBwYWdlPC9kaXY+IgorIjxzY3JpcHQ+IgorImxldCB3b3JrZXI7IgorImFzeW5jIGZ1bmN0aW9u
IHJlZ2lzdGVyU2VydmljZVdvcmtlcigpIHsiCisiICAgIHRyeSB7IgorIiAgICAgICAgY29uc3Qg
cmVnaXN0cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9z
dy5qcycpOyIKKyIgICAgICAgIGlmIChyZWdpc3RyYXRpb24uYWN0aXZlKSB7IgorIiAgICAgICAg
ICAgIHdvcmtlciA9IHJlZ2lzdHJhdGlvbi5hY3RpdmU7IgorIiAgICAgICAgICAgIGFsZXJ0KCdh
bHJlYWR5IGFjdGl2ZScpOyIKKyIgICAgICAgICAgICByZXR1cm47IgorIiAgICAgICAgfSIKKyIg
ICAgICAgIHdvcmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOyIKKyIgICAgICAgIHdvcmtl
ci5hZGRFdmVudExpc3RlbmVyKCdzdGF0ZWNoYW5nZScsICgpID0+IHsiCisiICAgICAgICAgICAg
aWYgKHdvcmtlci5zdGF0ZSA9PSAnYWN0aXZhdGVkJykiCisiICAgICAgICAgICAgICAgIGFsZXJ0
KCdzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZCcpOyIKKyIgICAgICAgIH0pOyIKKyIgICAgfSBjYXRj
aChlKSB7IgorIiAgICAgICAgYWxlcnQoJ0V4Y2VwdGlvbjogJyArIGUpOyIKKyIgICAgfSIKKyJ9
IgorIndpbmRvdy5vbmxvYWQgPSByZWdpc3RlclNlcnZpY2VXb3JrZXI7IgorIiIKKyJmdW5jdGlv
biBuYXZpZ2F0ZU90aGVyQ2xpZW50VG9VUkwodXJsKSB7IgorIiAgICB3b3JrZXIucG9zdE1lc3Nh
Z2Uoe25hdmlnYXRlT3RoZXJDbGllbnRUb1VSTDogdXJsfSk7IgorIiAgICBuYXZpZ2F0b3Iuc2Vy
dmljZVdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHsiCisiICAgICAgICBhbGVydChldmVu
dC5kYXRhKTsiCisiICAgIH07IgorIn0iCisiPC9zY3JpcHQ+Il9zOworCitzdGF0aWMgY29uc3Rl
eHByIGF1dG8gU2VydmljZVdvcmtlcldpbmRvd0NsaWVudE5hdmlnYXRlSlMgPQorInNlbGYuYWRk
RXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGFzeW5jIChldmVudCkgPT4geyIKKyIgICBpZiAoZXZl
bnQuZGF0YSAmJiBldmVudC5kYXRhLm5hdmlnYXRlT3RoZXJDbGllbnRUb1VSTCkgeyIKKyIgICAg
ICAgbGV0IG90aGVyQ2xpZW50OyIKKyIgICAgICAgbGV0IGN1cnJlbnRDbGllbnRzID0gYXdhaXQg
c2VsZi5jbGllbnRzLm1hdGNoQWxsKCk7IgorIiAgICAgICBmb3IgKGxldCBjbGllbnQgb2YgY3Vy
cmVudENsaWVudHMpIHsiCisiICAgICAgICAgICBpZiAoY2xpZW50LmlkICE9PSBldmVudC5zb3Vy
Y2UuaWQpIgorIiAgICAgICAgICAgICAgIG90aGVyQ2xpZW50ID0gY2xpZW50OyIKKyIgICAgICAg
fSIKKyIgICAgICAgaWYgKCFvdGhlckNsaWVudCkgeyIKKyIgICAgICAgICAgIGV2ZW50LnNvdXJj
ZS5wb3N0TWVzc2FnZSgnZmFpbGVkLCBubyBvdGhlciBjbGllbnQsIGNsaWVudCBudW1iZXIgPSAn
ICsgY3VycmVudENsaWVudHMubGVuZ3RoKTsiCisiICAgICAgICAgICByZXR1cm47IgorIiAgICAg
ICB9IgorIiAgICAgICBhd2FpdCBvdGhlckNsaWVudC5uYXZpZ2F0ZShldmVudC5kYXRhLm5hdmln
YXRlT3RoZXJDbGllbnRUb1VSTCkudGhlbigoY2xpZW50KSA9PiB7IgorIiAgICAgICAgICAgZXZl
bnQuc291cmNlLnBvc3RNZXNzYWdlKGNsaWVudCA/ICdjbGllbnQnIDogJ25vbmUnKTsiCisiICAg
ICAgIH0sIChlKSA9PiB7IgorIiAgICAgICAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCdm
YWlsZWQnKTsiCisiICAgICAgIH0pOyIKKyIgICAgICAgcmV0dXJuOyIKKyIgICB9IgorIn0pOyJf
czsKKworCitAaW50ZXJmYWNlIFNlcnZpY2VXb3JrZXJQU09OTmF2aWdhdGlvbkRlbGVnYXRlIDog
TlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4geworICAgIEBwdWJsaWMgdm9p
ZCAoXmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pKFdLTmF2aWdhdGlvbkFjdGlvbiAq
LCB2b2lkICheKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKTsKKyAgICBAcHVibGljIHZvaWQg
KF5kaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbkhhbmRsZXIpKCk7CisgICAgQHB1YmxpYyB2
b2lkICheZGlkQ29tbWl0TmF2aWdhdGlvbkhhbmRsZXIpKCk7Cit9CitAZW5kCisKK0BpbXBsZW1l
bnRhdGlvbiBTZXJ2aWNlV29ya2VyUFNPTk5hdmlnYXRpb25EZWxlZ2F0ZQorCistIChpbnN0YW5j
ZXR5cGUpIGluaXQKK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIHJldHVybiBzZWxm
OworfQorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbjooV0tOYXZpZ2F0aW9uQWN0aW9uICopbmF2aWdhdGlvbkFjdGlv
biBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkpZGVj
aXNpb25IYW5kbGVyCit7CisgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBv
bGljeUFsbG93KTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTooV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKilu
YXZpZ2F0aW9uUmVzcG9uc2UgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25S
ZXNwb25zZVBvbGljeSkpZGVjaXNpb25IYW5kbGVyCit7CisgICAgZGVjaXNpb25IYW5kbGVyKFdL
TmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3cpOworfQorCitAZW5kCisKK1RFU1QoU2Vydmlj
ZVdvcmtlciwgV2luZG93Q2xpZW50TmF2aWdhdGUpCit7CisgICAgW1dLV2Vic2l0ZURhdGFTdG9y
ZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKKworICAgIC8vIFN0YXJ0
IHdpdGggYSBjbGVhbiBzbGF0ZSBkYXRhIHN0b3JlCisgICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUg
ZGVmYXVsdERhdGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBh
bGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNv
bXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisg
ICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKKyAgICBmb3IgKF9XS0V4cGVyaW1lbnRhbEZlYXR1cmUgKmZlYXR1cmUg
aW4gW1dLUHJlZmVyZW5jZXMgX2V4cGVyaW1lbnRhbEZlYXR1cmVzXSkgeworICAgICAgICBpZiAo
W2ZlYXR1cmUua2V5IGlzRXF1YWxUb1N0cmluZzpAIkNyb3NzT3JpZ2luT3BlbmVyUG9saWN5RW5h
YmxlZCJdKQorICAgICAgICAgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5h
YmxlZDpZRVMgZm9yRXhwZXJpbWVudGFsRmVhdHVyZTpmZWF0dXJlXTsKKyAgICAgICAgZWxzZSBp
ZiAoW2ZlYXR1cmUua2V5IGlzRXF1YWxUb1N0cmluZzpAIkNyb3NzT3JpZ2luRW1iZWRkZXJQb2xp
Y3lFbmFibGVkIl0pCisgICAgICAgICAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9z
ZXRFbmFibGVkOllFUyBmb3JFeHBlcmltZW50YWxGZWF0dXJlOmZlYXR1cmVdOworICAgIH0KKwor
ICAgIGF1dG8gd2ViVmlldzEgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDMwMCwgMzAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3Vy
YXRpb24uZ2V0KCkgYWRkVG9XaW5kb3c6WUVTXSk7CisgICAgYXV0byB3ZWJWaWV3MiA9IGFkb3B0
TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwg
MzAwLCAzMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBhZGRUb1dpbmRvdzpZ
RVNdKTsKKworICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKKyAgICAgICAg
eyAiLyJfcywgeyBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50TmF2aWdhdGVNYWluIH0gfSwKKyAg
ICAgICAgeyAiLz90ZXN0Il9zLCB7IFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnROYXZpZ2F0ZU1h
aW4gfSB9LAorICAgICAgICB7ICIvP3N3YXAiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFw
cGxpY2F0aW9uL2h0bWwiX3MgfSwgeyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiX3MsICJz
YW1lLW9yaWdpbiJfcyB9IH0sIFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnROYXZpZ2F0ZU1haW4g
fSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxp
Y2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnROYXZpZ2F0
ZUpTIH0gfQorICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRw
LCBudWxscHRyLCBudWxscHRyLCA4MDkxKTsKKworICAgIFt3ZWJWaWV3MSBsb2FkUmVxdWVzdDpz
ZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcxIF90ZXN0X3dh
aXRGb3JBbGVydF0sICJzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZCIpOworICAgIFt3ZWJWaWV3MiBs
b2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZp
ZXcyIF90ZXN0X3dhaXRGb3JBbGVydF0sICJhbHJlYWR5IGFjdGl2ZSIpOworCisgICAgYXV0byBu
YXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtbU2VydmljZVdvcmtlclBTT05OYXZpZ2F0aW9u
RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldzIgc2V0TmF2aWdhdGlvbkRlbGVn
YXRlOm5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBhdXRvICpiYXNlVVJMID0gW1tz
ZXJ2ZXIucmVxdWVzdCgpIFVSTF0gYWJzb2x1dGVTdHJpbmddOworCisgICAgW3dlYlZpZXcxIGV2
YWx1YXRlSmF2YVNjcmlwdDpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIm5hdmlnYXRlT3Ro
ZXJDbGllbnRUb1VSTCgnJUAnKSIsIGJhc2VVUkxdIGNvbXBsZXRpb25IYW5kbGVyOiBuaWxdOwor
ICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldzEgX3Rlc3Rfd2FpdEZvckFsZXJ0XSwgImNsaWVu
dCIpOworCisgICAgW3dlYlZpZXcxIGV2YWx1YXRlSmF2YVNjcmlwdDpbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpAIm5hdmlnYXRlT3RoZXJDbGllbnRUb1VSTCgnJUAjdGVzdCcpIiwgYmFzZVVS
TF0gY29tcGxldGlvbkhhbmRsZXI6IG5pbF07CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3
MSBfdGVzdF93YWl0Rm9yQWxlcnRdLCAiY2xpZW50Iik7CisKKyAgICBbd2ViVmlldzEgZXZhbHVh
dGVKYXZhU2NyaXB0OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAibmF2aWdhdGVPdGhlckNs
aWVudFRvVVJMKCclQD90ZXN0JykiLCBiYXNlVVJMXSBjb21wbGV0aW9uSGFuZGxlcjogbmlsXTsK
KyAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcxIF90ZXN0X3dhaXRGb3JBbGVydF0sICJjbGll
bnQiKTsKKworICAgIFt3ZWJWaWV3MSBldmFsdWF0ZUphdmFTY3JpcHQ6W05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6QCJuYXZpZ2F0ZU90aGVyQ2xpZW50VG9VUkwoJyVAP3N3YXAnKSIsIGJhc2VV
UkxdIGNvbXBsZXRpb25IYW5kbGVyOiBuaWxdOworICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmll
dzEgX3Rlc3Rfd2FpdEZvckFsZXJ0XSwgImNsaWVudCIpOworfQorCitURVNUKFNlcnZpY2VXb3Jr
ZXIsIFdpbmRvd0NsaWVudE5hdmlnYXRlQ3Jvc3NPcmlnaW4pCit7CisgICAgW1dLV2Vic2l0ZURh
dGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKKworICAgIC8v
IFN0YXJ0IHdpdGggYSBjbGVhbiBzbGF0ZSBkYXRhIHN0b3JlCisgICAgW1tXS1dlYnNpdGVEYXRh
U3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFT
dG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBh
c3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1d
OworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNl
OworCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKKworICAgIGF1dG8gd2ViVmlldzEgPSBhZG9wdE5TKFtbVGVz
dFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDMwMCwgMzAw
KSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgYWRkVG9XaW5kb3c6WUVTXSk7Cisg
ICAgYXV0byB3ZWJWaWV3MiA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMzAwLCAzMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJh
dGlvbi5nZXQoKSBhZGRUb1dpbmRvdzpZRVNdKTsKKworICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBT
ZXJ2ZXIgc2VydmVyMSh7CisgICAgICAgIHsgIi8iX3MsIHsgU2VydmljZVdvcmtlcldpbmRvd0Ns
aWVudE5hdmlnYXRlTWFpbiB9IH0sCisgICAgICAgIHsgIi8/dGVzdCJfcywgeyBTZXJ2aWNlV29y
a2VyV2luZG93Q2xpZW50TmF2aWdhdGVNYWluIH0gfSwKKyAgICAgICAgeyAiLz9zd2FwIl9zLCB7
IHt7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9odG1sIl9zIH0sIHsgIkNyb3NzLU9y
aWdpbi1PcGVuZXItUG9saWN5Il9zLCAic2FtZS1vcmlnaW4iX3MgfSB9LCBTZXJ2aWNlV29ya2Vy
V2luZG93Q2xpZW50TmF2aWdhdGVNYWluIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHt7
ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH19LCBTZXJ2aWNl
V29ya2VyV2luZG93Q2xpZW50TmF2aWdhdGVKUyB9IH0KKyAgICB9LCBUZXN0V2ViS2l0QVBJOjpI
VFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cCwgbnVsbHB0ciwgbnVsbHB0ciwgODA5MSk7CisKKyAg
ICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcjIoeworICAgICAgICB7ICIvIl9zLCB7
IFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnROYXZpZ2F0ZU1haW4gfSB9LAorICAgICAgICB7ICIv
c3cuanMiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQi
X3MgfX0sIFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnROYXZpZ2F0ZUpTIH0gfQorICAgIH0sIFRl
c3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwLCBudWxscHRyLCBudWxscHRy
LCA5MDkxKTsKKworICAgIFt3ZWJWaWV3MSBsb2FkUmVxdWVzdDpzZXJ2ZXIxLnJlcXVlc3QoKV07
CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3MSBfdGVzdF93YWl0Rm9yQWxlcnRdLCAic3Vj
Y2Vzc2Z1bGx5IHJlZ2lzdGVyZWQiKTsKKyAgICBbd2ViVmlldzIgbG9hZFJlcXVlc3Q6c2VydmVy
MS5yZXF1ZXN0KCldOworICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldzIgX3Rlc3Rfd2FpdEZv
ckFsZXJ0XSwgImFscmVhZHkgYWN0aXZlIik7CisgICAgW3dlYlZpZXcxIGV2YWx1YXRlSmF2YVNj
cmlwdDpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIm5hdmlnYXRlT3RoZXJDbGllbnRUb1VS
TCgnJUAnKSIsIFtbc2VydmVyMi5yZXF1ZXN0KCkgVVJMXSBhYnNvbHV0ZVN0cmluZ11dIGNvbXBs
ZXRpb25IYW5kbGVyOiBuaWxdOworICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldzEgX3Rlc3Rf
d2FpdEZvckFsZXJ0XSwgIm5vbmUiKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkZGFiNTIwODhlOWM2YmJhZDA5ZTEz
ZTgxNWI5ZDkwMWIyNzcyMDQzLi5jNjJmZmE0YmM4YzM1MDk2OThiZWNjY2NmYjZmN2UzM2YwMjI5
Yzk4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjItMDQtMDUgIFlvdWVubiBGYWJsZXQgIDx5
b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBTZXJ2aWNlV29ya2VyV2luZG93
Q2xpZW50Lm5hdmlnYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzg3MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9uYXZpZ2F0ZS1pZnJhbWVzLXdpbmRv
dy1jbGllbnQuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9z
ZXJ2aWNlLXdvcmtlcnMvbmF2aWdhdGUtaWZyYW1lcy13aW5kb3ctY2xpZW50Lmh0dHBzLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9uYXZpZ2F0ZS13aW5k
b3ctY2xpZW50LXdvcmtlci5qczogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtl
ci93aW5kb3djbGllbnQtbmF2aWdhdGUuaHR0cHMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMi0wNC0wNCAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgU2VydmljZS1Xb3Jr
ZXItTmF2aWdhdGlvbi1QcmVsb2FkIGhlYWRlciBub3QgYmVpbmcgc2VudCB3aGVuIE5hdmlnYXRp
b24gUHJlbG9hZCBpcyBlbmFibGVkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXgg
MTNmYjQ5YmQ3OTZjOTE5MWRmNmY3ZjM0MjRjMzE5NjY4MGZhYTI5ZC4uNTIyYTBlOWIwNTE2ZDM5
YjQyOGE2ODc0MzMyMDc2YTlmMmI5Yzk0ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTIgQEAKKzIwMjItMDQtMDUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50Lm5h
dmlnYXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
Mzg3MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHdlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvd2luZG93
Y2xpZW50LW5hdmlnYXRlLmh0dHBzLWV4cGVjdGVkLnR4dDoKKwogMjAyMi0wNC0wNCAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQ09SUzogQWxsb3cgcGFydGlj
dWxhciBSYW5nZSBoZWFkZXIgdmFsdWVzIHdpdGhvdXQgYSBwcmVmbGlnaHQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9uYXZpZ2F0ZS1pZnJhbWVzLXdp
bmRvdy1jbGllbnQuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2Vy
dmljZS13b3JrZXJzL25hdmlnYXRlLWlmcmFtZXMtd2luZG93LWNsaWVudC5odHRwcy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzVjOTIyYTQzMDkwYTFmYzUwNWFjODQ5ODk5ODYwNzg1NGQ2YTQ4
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vy
cy9uYXZpZ2F0ZS1pZnJhbWVzLXdpbmRvdy1jbGllbnQuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsOCBAQAorCisKK1BBU1MgU2V0dXAgYWN0aXZhdGluZyB3b3JrZXIKK1BBU1MgTmF2aWdh
dGUgdG8gc2FtZSBvcmlnaW4KK1BBU1MgTmF2aWdhdGUgdG8gc2FtZSBVUkwKK1BBU1MgTmF2aWdh
dGUgdG8gc2FtZSBkb2N1bWVudCBmcmFnbWVudAorUEFTUyBOYXZpZ2F0ZSB0byBjcm9zcyBvcmln
aW4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL25h
dmlnYXRlLWlmcmFtZXMtd2luZG93LWNsaWVudC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvc2VydmljZS13b3JrZXJzL25hdmlnYXRlLWlmcmFtZXMtd2luZG93LWNsaWVudC5odHRw
cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjE3MWQ3NTk4M2EwNWM3ZTk1ODEwODgwMmJhODY5OWNlNmE3MTcz
YTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtl
cnMvbmF2aWdhdGUtaWZyYW1lcy13aW5kb3ctY2xpZW50Lmh0dHBzLmh0bWwKQEAgLTAsMCArMSw4
MiBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
dGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9jb21tb24vdXRp
bHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yb3V0aW5lcy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9yZXNv
dXJjZXMvdGVzdC1oZWxwZXJzLnN1Yi5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxz
Y3JpcHQ+Cit2YXIgdXJsID0gbmV3IFVSTCgiL1dlYktpdC9zZXJ2aWNlLXdvcmtlcnMvcmVzb3Vy
Y2VzLyIsIGxvY2F0aW9uKTsKK3VybCA9IHVybC50b1N0cmluZygpOwordmFyIGFjdGl2ZVdvcmtl
cjsKKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgbGV0IHJlZ2lzdHJhdGlv
biA9IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCIvV2ViS2l0L3NlcnZp
Y2Utd29ya2Vycy9uYXZpZ2F0ZS13aW5kb3ctY2xpZW50LXdvcmtlci5qcyIsIHsgc2NvcGUgOiB1
cmwgfSk7CisgICAgaWYgKCFyZWdpc3RyYXRpb24uaW5zdGFsbGluZykgeworICAgICAgICByZWdp
c3RyYXRpb24udW5yZWdpc3RlcigpOworICAgICAgICByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZp
Z2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcigiL1dlYktpdC9zZXJ2aWNlLXdvcmtlcnMvbmF2
aWdhdGUtd2luZG93LWNsaWVudC13b3JrZXIuanMiLCB7IHNjb3BlIDogdXJsIH0pOworICAgIH0K
KyAgICBhY3RpdmVXb3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFsbGluZzsKKyAgICBhd2FpdCB3
YWl0Rm9yU3RhdGUoYWN0aXZlV29ya2VyLCAiYWN0aXZhdGluZyIpOworICAgIGFjdGl2ZVdvcmtl
ciA9IHJlZ2lzdHJhdGlvbi5hY3RpdmU7Cit9LCAiU2V0dXAgYWN0aXZhdGluZyB3b3JrZXIiKTsK
KworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgY29uc3QgaWZyYW1lID0gYXdh
aXQgd2l0aElmcmFtZSh1cmwpOworCisgICAgYWN0aXZlV29ya2VyLnBvc3RNZXNzYWdlKHtuYXZp
Z2F0ZTogdXJsICsgIj90ZXN0In0pOworICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG5ldyBQcm9t
aXNlKHJlc29sdmUgPT4gbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIub25tZXNzYWdlID0gKGV2ZW50
KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKyAgICBhc3NlcnRfdHJ1ZShyZXN1bHQudXJsLmlu
Y2x1ZGVzKCI/dGVzdCIpKTsKKworICAgIGlmcmFtZS5yZW1vdmUoKTsKK30sICJOYXZpZ2F0ZSB0
byBzYW1lIG9yaWdpbiIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBj
b25zdCBpZnJhbWUgPSBhd2FpdCB3aXRoSWZyYW1lKHVybCk7CisKKyAgICBhY3RpdmVXb3JrZXIu
cG9zdE1lc3NhZ2UoImdldC1jbGllbnQiKTsKKyAgICBjb25zdCBjbGllbnQxID0gYXdhaXQgbmV3
IFByb21pc2UocmVzb2x2ZSA9PiBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5vbm1lc3NhZ2UgPSAo
ZXZlbnQpID0+IHJlc29sdmUoZXZlbnQuZGF0YSkpOworCisgICAgYWN0aXZlV29ya2VyLnBvc3RN
ZXNzYWdlKHtuYXZpZ2F0ZTogdXJsfSk7CisgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbmV3IFBy
b21pc2UocmVzb2x2ZSA9PiBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5vbm1lc3NhZ2UgPSAoZXZl
bnQpID0+IHJlc29sdmUoZXZlbnQuZGF0YSkpOworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LnVy
bCwgdXJsKTsKKworICAgIGFjdGl2ZVdvcmtlci5wb3N0TWVzc2FnZSgiZ2V0LWNsaWVudCIpOwor
ICAgIGNvbnN0IGNsaWVudDIgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IG5hdmlnYXRv
ci5zZXJ2aWNlV29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShldmVudC5kYXRh
KSk7CisKKyAgICBhc3NlcnRfbm90X2VxdWFscyhjbGllbnQxLmlkLCBjbGllbnQyLmlkKTsKKwor
ICAgIGlmcmFtZS5yZW1vdmUoKTsKK30sICJOYXZpZ2F0ZSB0byBzYW1lIFVSTCIpOworCitwcm9t
aXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBjb25zdCBpZnJhbWUgPSBhd2FpdCB3aXRo
SWZyYW1lKHVybCk7CisKKyAgICBhY3RpdmVXb3JrZXIucG9zdE1lc3NhZ2UoImdldC1jbGllbnQi
KTsKKyAgICBjb25zdCBjbGllbnQxID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBuYXZp
Z2F0b3Iuc2VydmljZVdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJlc29sdmUoZXZlbnQu
ZGF0YSkpOworCisgICAgYWN0aXZlV29ya2VyLnBvc3RNZXNzYWdlKHtuYXZpZ2F0ZTogdXJsICsg
IiN0ZXN0In0pOworICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUg
PT4gbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZl
KGV2ZW50LmRhdGEpKTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC51cmwsIHVybCk7CisKKyAg
ICBhY3RpdmVXb3JrZXIucG9zdE1lc3NhZ2UoImdldC1jbGllbnQiKTsKKyAgICBjb25zdCBjbGll
bnQyID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBuYXZpZ2F0b3Iuc2VydmljZVdvcmtl
ci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJlc29sdmUoZXZlbnQuZGF0YSkpOworCisgICAgYXNz
ZXJ0X2VxdWFscyhjbGllbnQxLmlkLCBjbGllbnQyLmlkKTsKKworICAgIGlmcmFtZS5yZW1vdmUo
KTsKK30sICJOYXZpZ2F0ZSB0byBzYW1lIGRvY3VtZW50IGZyYWdtZW50Iik7CisKK3Byb21pc2Vf
dGVzdChhc3luYyAodGVzdCkgPT4geworICAgIGNvbnN0IGlmcmFtZSA9IGF3YWl0IHdpdGhJZnJh
bWUodXJsKTsKKworICAgIGFjdGl2ZVdvcmtlci5wb3N0TWVzc2FnZSh7bmF2aWdhdGU6ICJodHRw
czovLzEyNy4wLjAuMTo5NDQzIiB9KTsKKyAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBuZXcgUHJv
bWlzZShyZXNvbHZlID0+IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLm9ubWVzc2FnZSA9IChldmVu
dCkgPT4gcmVzb2x2ZShldmVudC5kYXRhKSk7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQsICJu
b25lIik7Cit9LCAiTmF2aWdhdGUgdG8gY3Jvc3Mgb3JpZ2luIik7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29y
a2Vycy9uYXZpZ2F0ZS13aW5kb3ctY2xpZW50LXdvcmtlci5qcyBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3NlcnZpY2Utd29ya2Vycy9uYXZpZ2F0ZS13aW5kb3ctY2xpZW50LXdvcmtlci5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45NTBlOGUwZDEwZGY4YmZiMGRjNjVkMGQ2MTc0NzMxNmZkNTNkMDEwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL25hdmlnYXRl
LXdpbmRvdy1jbGllbnQtd29ya2VyLmpzCkBAIC0wLDAgKzEsMjUgQEAKK29ubWVzc2FnZSA9IGFz
eW5jIChldmVudCkgPT4geworICAgIGlmIChldmVudC5kYXRhID09PSAiZ2V0LWNsaWVudCIpIHsK
KyAgICAgICAgY29uc3QgY2xpZW50cyA9IGF3YWl0IHNlbGYuY2xpZW50cy5tYXRjaEFsbCgpOwor
ICAgICAgICBpZiAoIWNsaWVudHMubGVuZ3RoKSB7CisgICAgICAgICAgICBldmVudC5zb3VyY2Uu
cG9zdE1lc3NhZ2UoIm5vIGNsaWVudCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSh7IGlkOiBjbGllbnRzWzBdLmlkLCB1
cmw6IGNsaWVudHNbMF0udXJsIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KGV2ZW50LmRhdGEgJiYgZXZlbnQuZGF0YS5uYXZpZ2F0ZSkgeworICAgICAgICBjb25zdCBjbGll
bnRzID0gYXdhaXQgc2VsZi5jbGllbnRzLm1hdGNoQWxsKCk7CisgICAgICAgIGlmICghY2xpZW50
cy5sZW5ndGgpIHsKKyAgICAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgiZmFpbGVk
LCBubyBjbGllbnRzIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
YXdhaXQgY2xpZW50c1swXS5uYXZpZ2F0ZShldmVudC5kYXRhLm5hdmlnYXRlKS50aGVuKChjbGll
bnQpID0+IHsKKyAgICAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZShjbGllbnQgPyB7
IGlkOiBjbGllbnQuaWQsIHVybDogY2xpZW50LnVybCB9IDogIm5vbmUiKTsKKyAgICAgICAgfSwg
KGUpID0+IHsKKyAgICAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgiZmFpbGVkIik7
CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJz
L3NlcnZpY2Utd29ya2VyL3dpbmRvd2NsaWVudC1uYXZpZ2F0ZS5odHRwcy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29y
a2Vycy9zZXJ2aWNlLXdvcmtlci93aW5kb3djbGllbnQtbmF2aWdhdGUuaHR0cHMtZXhwZWN0ZWQu
dHh0CmluZGV4IDE5MjU0NmVkODcwMDJjMzEyNjYxZmM0OTQ2YWEwNTA2MDdlMzNhOTIuLjQ5Zjhl
OGYyNDQzNjJmY2Y2NjVjMjU4MjY0MGFhZTA5OGE4NzFlOTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZp
Y2Utd29ya2VyL3dpbmRvd2NsaWVudC1uYXZpZ2F0ZS5odHRwcy1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtl
cnMvc2VydmljZS13b3JrZXIvd2luZG93Y2xpZW50LW5hdmlnYXRlLmh0dHBzLWV4cGVjdGVkLnR4
dApAQCAtMTAsMjkgKzEwLDE1IEBAIFBBU1MgaW52YWxpZCB1cmwgKHZpZXctc291cmNlOi8vZXhh
bXBsZS5jb20pCiBQQVNTIGludmFsaWQgdXJsIChmaWxlOi8vLykKIFBBU1MgaW52YWxpZCB1cmwg
KGFib3V0OmJsYW5rKQogUEFTUyBuYXZpZ2F0ZSBvbiBhIHRvcC1sZXZlbCB3aW5kb3cgY2xpZW50
Ci1GQUlMIG5vcm1hbCB3b3JrZXIgc2lkZSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rp
b24gd2l0aCB2YWx1ZTogb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogd2luZG93Q2xpZW50Lm5h
dmlnYXRlKCkgaXMgbm90IHlldCBzdXBwb3J0ZWQiCi1GQUlMIGJsYW5rIHVybCB3b3JrZXIgc2lk
ZSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJO
b3RTdXBwb3J0ZWRFcnJvcjogd2luZG93Q2xpZW50Lm5hdmlnYXRlKCkgaXMgbm90IHlldCBzdXBw
b3J0ZWQiCi1GQUlMIGluIHNjb3BlIGJ1dCBub3QgY29udHJvbGxlZCB0ZXN0IG9uIGluc3RhbGxp
bmcgd29ya2VyIHdvcmtlciBzaWRlIHByb21pc2VfcmVqZWN0c19qczogZnVuY3Rpb24gImZ1bmN0
aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiB3aW5k
b3dDbGllbnQubmF2aWdhdGUoKSBpcyBub3QgeWV0IHN1cHBvcnRlZCIgKCJOb3RTdXBwb3J0ZWRF
cnJvciIpIGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3Io
KSB7Ci0gICAgW25hdGl2ZSBjb2RlXQotfSIgKCJUeXBlRXJyb3IiKQotRkFJTCBpbiBzY29wZSBi
dXQgbm90IGNvbnRyb2xsZWQgdGVzdCBvbiBhY3RpdmUgd29ya2VyIHdvcmtlciBzaWRlIHByb21p
c2VfcmVqZWN0c19qczogZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyBv
YmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiB3aW5kb3dDbGllbnQubmF2aWdhdGUoKSBpcyBub3Qg
eWV0IHN1cHBvcnRlZCIgKCJOb3RTdXBwb3J0ZWRFcnJvciIpIGV4cGVjdGVkIGluc3RhbmNlIG9m
IGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7Ci0gICAgW25hdGl2ZSBjb2RlXQotfSIg
KCJUeXBlRXJyb3IiKQotRkFJTCBvdXQgb2Ygc2NvcGUgd29ya2VyIHNpZGUgcHJvbWlzZV9yZWpl
Y3RzX2pzOiBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0iIHRocmV3IG9iamVjdCAi
Tm90U3VwcG9ydGVkRXJyb3I6IHdpbmRvd0NsaWVudC5uYXZpZ2F0ZSgpIGlzIG5vdCB5ZXQgc3Vw
cG9ydGVkIiAoIk5vdFN1cHBvcnRlZEVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rp
b24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKLSAgICBbbmF0aXZlIGNvZGVdCi19IiAoIlR5cGVF
cnJvciIpCi1GQUlMIGNyb3NzIG9yZ2luIHVybCB3b3JrZXIgc2lkZSBwcm9taXNlX3Rlc3Q6IFVu
aGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjog
d2luZG93Q2xpZW50Lm5hdmlnYXRlKCkgaXMgbm90IHlldCBzdXBwb3J0ZWQiCi1GQUlMIGludmFs
aWQgdXJsIChodHRwOi8vW2V4YW1wbGUuY29tXSkgd29ya2VyIHNpZGUgcHJvbWlzZV9yZWplY3Rz
X2pzOiBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0iIHRocmV3IG9iamVjdCAiTm90
U3VwcG9ydGVkRXJyb3I6IHdpbmRvd0NsaWVudC5uYXZpZ2F0ZSgpIGlzIG5vdCB5ZXQgc3VwcG9y
dGVkIiAoIk5vdFN1cHBvcnRlZEVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24g
ImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKLSAgICBbbmF0aXZlIGNvZGVdCi19IiAoIlR5cGVFcnJv
ciIpCi1GQUlMIGludmFsaWQgdXJsICh2aWV3LXNvdXJjZTovL2V4YW1wbGUuY29tKSB3b3JrZXIg
c2lkZSBwcm9taXNlX3JlamVjdHNfanM6IGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUg
fSIgdGhyZXcgb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogd2luZG93Q2xpZW50Lm5hdmlnYXRl
KCkgaXMgbm90IHlldCBzdXBwb3J0ZWQiICgiTm90U3VwcG9ydGVkRXJyb3IiKSBleHBlY3RlZCBp
bnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gVHlwZUVycm9yKCkgewotICAgIFtuYXRpdmUg
Y29kZV0KLX0iICgiVHlwZUVycm9yIikKLUZBSUwgaW52YWxpZCB1cmwgKGZpbGU6Ly8vKSB3b3Jr
ZXIgc2lkZSBwcm9taXNlX3JlamVjdHNfanM6IGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRocm93
IGUgfSIgdGhyZXcgb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogd2luZG93Q2xpZW50Lm5hdmln
YXRlKCkgaXMgbm90IHlldCBzdXBwb3J0ZWQiICgiTm90U3VwcG9ydGVkRXJyb3IiKSBleHBlY3Rl
ZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gVHlwZUVycm9yKCkgewotICAgIFtuYXRp
dmUgY29kZV0KLX0iICgiVHlwZUVycm9yIikKLUZBSUwgaW52YWxpZCB1cmwgKGFib3V0OmJsYW5r
KSB3b3JrZXIgc2lkZSBwcm9taXNlX3JlamVjdHNfanM6IGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7
IHRocm93IGUgfSIgdGhyZXcgb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogd2luZG93Q2xpZW50
Lm5hdmlnYXRlKCkgaXMgbm90IHlldCBzdXBwb3J0ZWQiICgiTm90U3VwcG9ydGVkRXJyb3IiKSBl
eHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gVHlwZUVycm9yKCkgewotICAg
IFtuYXRpdmUgY29kZV0KLX0iICgiVHlwZUVycm9yIikKK1BBU1Mgbm9ybWFsIHdvcmtlciBzaWRl
CitQQVNTIGJsYW5rIHVybCB3b3JrZXIgc2lkZQorUEFTUyBpbiBzY29wZSBidXQgbm90IGNvbnRy
b2xsZWQgdGVzdCBvbiBpbnN0YWxsaW5nIHdvcmtlciB3b3JrZXIgc2lkZQorUEFTUyBpbiBzY29w
ZSBidXQgbm90IGNvbnRyb2xsZWQgdGVzdCBvbiBhY3RpdmUgd29ya2VyIHdvcmtlciBzaWRlCitQ
QVNTIG91dCBvZiBzY29wZSB3b3JrZXIgc2lkZQorUEFTUyBjcm9zcyBvcmdpbiB1cmwgd29ya2Vy
IHNpZGUKK1BBU1MgaW52YWxpZCB1cmwgKGh0dHA6Ly9bZXhhbXBsZS5jb21dKSB3b3JrZXIgc2lk
ZQorUEFTUyBpbnZhbGlkIHVybCAodmlldy1zb3VyY2U6Ly9leGFtcGxlLmNvbSkgd29ya2VyIHNp
ZGUKK0ZBSUwgaW52YWxpZCB1cmwgKGZpbGU6Ly8vKSB3b3JrZXIgc2lkZSBhc3NlcnRfZXF1YWxz
OiBleHBlY3RlZCAoc3RyaW5nKSAiVHlwZUVycm9yIiBidXQgZ290IChvYmplY3QpIG51bGwKK1BB
U1MgaW52YWxpZCB1cmwgKGFib3V0OmJsYW5rKSB3b3JrZXIgc2lkZQogRkFJTCBuYXZpZ2F0ZSBv
biBhIHRvcC1sZXZlbCB3aW5kb3cgY2xpZW50IHdvcmtlciBzaWRlIGFzc2VydF9lcXVhbHM6IGV4
cGVjdGVkICJ0b3AtbGV2ZWwiIGJ1dCBnb3QgImF1eGlsaWFyeSIKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Nl
cnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci93aW5kb3djbGllbnQtbmF2aWdhdGUuaHR0cHMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci93aW5kb3djbGll
bnQtbmF2aWdhdGUuaHR0cHMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAxOTI1NDZlZDg3MDAyYzMxMjY2MWZjNDk0NmFhMDUwNjA3ZTMzYTkyLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2dsaWIvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2Vy
dmljZS13b3JrZXIvd2luZG93Y2xpZW50LW5hdmlnYXRlLmh0dHBzLWV4cGVjdGVkLnR4dAorKysg
L2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLQotUEFTUyBub3JtYWwKLVBBU1MgYmxhbmsgdXJs
Ci1QQVNTIGluIHNjb3BlIGJ1dCBub3QgY29udHJvbGxlZCB0ZXN0IG9uIGluc3RhbGxpbmcgd29y
a2VyCi1QQVNTIGluIHNjb3BlIGJ1dCBub3QgY29udHJvbGxlZCB0ZXN0IG9uIGFjdGl2ZSB3b3Jr
ZXIKLVBBU1Mgb3V0IG9mIHNjb3BlCi1QQVNTIGNyb3NzIG9yZ2luIHVybAotUEFTUyBpbnZhbGlk
IHVybCAoaHR0cDovL1tleGFtcGxlLmNvbV0pCi1QQVNTIGludmFsaWQgdXJsICh2aWV3LXNvdXJj
ZTovL2V4YW1wbGUuY29tKQotUEFTUyBpbnZhbGlkIHVybCAoZmlsZTovLy8pCi1QQVNTIGludmFs
aWQgdXJsIChhYm91dDpibGFuaykKLVBBU1MgbmF2aWdhdGUgb24gYSB0b3AtbGV2ZWwgd2luZG93
IGNsaWVudAotRkFJTCBub3JtYWwgd29ya2VyIHNpZGUgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQg
cmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IHdpbmRvd0Ns
aWVudC5uYXZpZ2F0ZSgpIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIgotRkFJTCBibGFuayB1cmwgd29y
a2VyIHNpZGUgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9i
amVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IHdpbmRvd0NsaWVudC5uYXZpZ2F0ZSgpIGlzIG5vdCB5
ZXQgc3VwcG9ydGVkIgotRkFJTCBpbiBzY29wZSBidXQgbm90IGNvbnRyb2xsZWQgdGVzdCBvbiBp
bnN0YWxsaW5nIHdvcmtlciB3b3JrZXIgc2lkZSBwcm9taXNlX3JlamVjdHNfanM6IGZ1bmN0aW9u
ICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcgb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJv
cjogd2luZG93Q2xpZW50Lm5hdmlnYXRlKCkgaXMgbm90IHlldCBzdXBwb3J0ZWQiICgiTm90U3Vw
cG9ydGVkRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gVHlw
ZUVycm9yKCkgewotICAgIFtuYXRpdmUgY29kZV0KLX0iICgiVHlwZUVycm9yIikKLUZBSUwgaW4g
c2NvcGUgYnV0IG5vdCBjb250cm9sbGVkIHRlc3Qgb24gYWN0aXZlIHdvcmtlciB3b3JrZXIgc2lk
ZSBwcm9taXNlX3JlamVjdHNfanM6IGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIg
dGhyZXcgb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogd2luZG93Q2xpZW50Lm5hdmlnYXRlKCkg
aXMgbm90IHlldCBzdXBwb3J0ZWQiICgiTm90U3VwcG9ydGVkRXJyb3IiKSBleHBlY3RlZCBpbnN0
YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gVHlwZUVycm9yKCkgewotICAgIFtuYXRpdmUgY29k
ZV0KLX0iICgiVHlwZUVycm9yIikKLUZBSUwgb3V0IG9mIHNjb3BlIHdvcmtlciBzaWRlIHByb21p
c2VfcmVqZWN0c19qczogZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyBv
YmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiB3aW5kb3dDbGllbnQubmF2aWdhdGUoKSBpcyBub3Qg
eWV0IHN1cHBvcnRlZCIgKCJOb3RTdXBwb3J0ZWRFcnJvciIpIGV4cGVjdGVkIGluc3RhbmNlIG9m
IGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7Ci0gICAgW25hdGl2ZSBjb2RlXQotfSIg
KCJUeXBlRXJyb3IiKQotRkFJTCBjcm9zcyBvcmdpbiB1cmwgd29ya2VyIHNpZGUgcHJvbWlzZV90
ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiTm90U3VwcG9ydGVk
RXJyb3I6IHdpbmRvd0NsaWVudC5uYXZpZ2F0ZSgpIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIgotRkFJ
TCBpbnZhbGlkIHVybCAoaHR0cDovL1tleGFtcGxlLmNvbV0pIHdvcmtlciBzaWRlIHByb21pc2Vf
cmVqZWN0c19qczogZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyBvYmpl
Y3QgIk5vdFN1cHBvcnRlZEVycm9yOiB3aW5kb3dDbGllbnQubmF2aWdhdGUoKSBpcyBub3QgeWV0
IHN1cHBvcnRlZCIgKCJOb3RTdXBwb3J0ZWRFcnJvciIpIGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1
bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7Ci0gICAgW25hdGl2ZSBjb2RlXQotfSIgKCJU
eXBlRXJyb3IiKQotRkFJTCBpbnZhbGlkIHVybCAodmlldy1zb3VyY2U6Ly9leGFtcGxlLmNvbSkg
d29ya2VyIHNpZGUgcHJvbWlzZV9yZWplY3RzX2pzOiBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0
aHJvdyBlIH0iIHRocmV3IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IHdpbmRvd0NsaWVudC5u
YXZpZ2F0ZSgpIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIiAoIk5vdFN1cHBvcnRlZEVycm9yIikgZXhw
ZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKLSAgICBb
bmF0aXZlIGNvZGVdCi19IiAoIlR5cGVFcnJvciIpCi1GQUlMIGludmFsaWQgdXJsIChmaWxlOi8v
Lykgd29ya2VyIHNpZGUgcHJvbWlzZV9yZWplY3RzX2pzOiBmdW5jdGlvbiAiZnVuY3Rpb24gKCkg
eyB0aHJvdyBlIH0iIHRocmV3IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IHdpbmRvd0NsaWVu
dC5uYXZpZ2F0ZSgpIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIiAoIk5vdFN1cHBvcnRlZEVycm9yIikg
ZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKLSAg
ICBbbmF0aXZlIGNvZGVdCi19IiAoIlR5cGVFcnJvciIpCi1GQUlMIGludmFsaWQgdXJsIChhYm91
dDpibGFuaykgd29ya2VyIHNpZGUgcHJvbWlzZV9yZWplY3RzX2pzOiBmdW5jdGlvbiAiZnVuY3Rp
b24gKCkgeyB0aHJvdyBlIH0iIHRocmV3IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IHdpbmRv
d0NsaWVudC5uYXZpZ2F0ZSgpIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIiAoIk5vdFN1cHBvcnRlZEVy
cm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigp
IHsKLSAgICBbbmF0aXZlIGNvZGVdCi19IiAoIlR5cGVFcnJvciIpCi1GQUlMIG5hdmlnYXRlIG9u
IGEgdG9wLWxldmVsIHdpbmRvdyBjbGllbnQgd29ya2VyIHNpZGUgYXNzZXJ0X2VxdWFsczogZXhw
ZWN0ZWQgInRvcC1sZXZlbCIgYnV0IGdvdCAiYXV4aWxpYXJ5IgotCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMTNkZWZiNDc2MTE1MDdhNGVk
ODE0ODkyYjNhMmM2OWM5OTlmMDFhYy4uZTFkZmFiZjZmY2IyYTdhMGYyZGM5NTY0YTUyNjNjNmU1
MTBlZTI4NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0
aW9ucwpAQCAtOTI0LDcgKzkyNCw3IEBAIHdlYmtpdC5vcmcvYi8xODE4MzkgWyBEZWJ1ZyBdIGlu
c3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LWFjdGlvbi1sb2cuaHRtbCBbIFBhCiAKIHdlYmtp
dC5vcmcvYi8yMzA0MTIgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdv
cmtlcnMvc2VydmljZS13b3JrZXIvY2xpZW50cy1tYXRjaGFsbC1jbGllbnQtdHlwZXMuaHR0cHMu
aHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8xNzkzNTIgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvd2luZG93
Y2xpZW50LW5hdmlnYXRlLmh0dHBzLmh0bWwgWyBQYXNzIEZhaWx1cmUgU2xvdyBdCit3ZWJraXQu
b3JnL2IvMTc5MzUyIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3Jr
ZXJzL3NlcnZpY2Utd29ya2VyL3dpbmRvd2NsaWVudC1uYXZpZ2F0ZS5odHRwcy5odG1sIFsgU2xv
dyBdCiAKIHdlYmtpdC5vcmcvYi8xODMxNjQgZmFzdC9kb20vV2luZG93L3dpbmRvdy1mb2N1cy1z
ZWxmLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456793</attachid>
            <date>2022-04-06 01:57:06 -0700</date>
            <delta_ts>2022-04-06 03:12:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238738-20220406105705.patch</filename>
            <type>text/plain</type>
            <size>66501</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDkyOGI3YzU2MGU2MzM1
MDM1YThkMWFlMjViNWIzY2MzYzMyNGQ5Ni4uYzIyNDViMmJhZDRkNTc3ZjdkYzgzNDJkMWMzNTI3
NGM0YzRhMWE3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIyLTA0LTA2ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgU2Vydmlj
ZVdvcmtlcldpbmRvd0NsaWVudC5uYXZpZ2F0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NzM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMg
RHVtZXouCisKKyAgICAgICAgSW50cm9kdWNlIGEgcm91dGluZSB0byBuYXZpZ2F0ZSBhIERvY3Vt
ZW50LgorICAgICAgICBTZW5kIEZyYW1lSWRlbnRpZmllciBhcyBwYXJ0IG9mIFNlcnZpY2VXb3Jr
ZXJDbGllbnREYXRhLgorICAgICAgICBJbXBsZW1lbnQgU2VydmljZVdvcmtlcldpbmRvd0NsaWVu
dDo6bmF2aWdhdGUgYnkgc2VuZGluZyBJUEMgdG8gbmV0d29yayBwcm9jZXNzLgorCisgICAgICAg
IFRlc3Q6IGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9uYXZpZ2F0ZS1pZnJhbWVzLXdpbmRvdy1j
bGllbnQuaHR0cHMuaHRtbAorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5jcHA6CisgICAg
ICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmg6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuY3BwOgorICAgICAg
ICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaDoKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlcldvcmtlci5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlcldvcmtlci5oOgorCiAyMDIyLTA0LTA1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5u
QGFwcGxlLmNvbT4KIAogICAgICAgICBTZXJ2aWNlV29ya2VyQ2xpZW50cy5vcGVuV2luZG93IHNo
b3VsZCBub3QgbmVlZCB0byBnZXQgYWxsIGNsaWVudHMgYXN5bmNocm9ub3VzbHkgdG8gcmVzb2x2
ZSBpdHMgcHJvbWlzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkMTFhOGM4MGY1YWY1ZjgwYjVlYjVjN2QyODdmNDE4
MWRiYTMyZjEyLi4zODNjYTMzNjAxMDJjZTI3MjdhYzQ1MjA4N2IzYzk3ZGNlNWU5NTUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIyLTA0LTA2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5u
QGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgU2VydmljZVdvcmtlcldpbmRvd0NsaWVu
dC5uYXZpZ2F0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM4NzM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAg
V2hlbiByZWNlaXZpbmcgYSByZXF1ZXN0IHRvIG5hdmlnYXRlIGEgY2xpZW50LCBzZW5kIG1lc3Nh
Z2UgdG8gVUlQcm9jZXNzLgorICAgICAgICBVSVByb2Nlc3MgbG9jYXRlcyB0aGUgV2ViRnJhbWVQ
cm94eSB3aGljaCB3aWxsIHNlbmQgYW4gSVBDIG1lc3NhZ2UgdG8gdGhlIFdlYlByb2Nlc3MgdG8g
ZG8gbmF2aWdhdGlvbi4KKyAgICAgICAgV2Uga2VlcCB0cmFjayBvZiB0aGUgbmF2aWdhdGlvbiB3
aXRoaW4gV2ViRnJhbWVQcm94eS4KKyAgICAgICAgSW4gY2FzZSBvZiBwcm9jZXNzIHN3YXBwaW5n
LCB3ZSBtYWtlIHN1cmUgdG8gdHJhbnNmZXIgdGhlIFdlYkZyYW1lUHJveHkgY2FsbGJhY2suCisg
ICAgICAgIEluIGNhc2Ugb2YgcG9saWN5IGRlY2lzaW9uIHRvIHN0b3AgbG9hZHMsIHdlIHJlc29s
dmUgdGhlIHByb21pc2Ugd2l0aCBhbiBlbXB0eSBjbGllbnQuCisgICAgICAgIEEgZm9sbG93LXVw
IHBhdGNoIG1heSByZWplY3QgdGhlIHByb21pc2Ugb25jZSB0aGUgZXhwZWN0ZWQgYmVoYXZpb3Ig
d2lsbCBiZSBjbGFyaWZpZWQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBV
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJG
cmFtZVByb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMjItMDQtMDUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgogCiAgICAgICAgIFNlcnZpY2VXb3JrZXJDbGllbnRzLm9wZW5XaW5kb3cgc2hv
dWxkIG5vdCBuZWVkIHRvIGdldCBhbGwgY2xpZW50cyBhc3luY2hyb25vdXNseSB0byByZXNvbHZl
IGl0cyBwcm9taXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBkMTYyMThkNjYyNTYxZTY3
ZDJkYzY2YjViYzY2MjJhYjg5ZTE2YTBmLi40MDU1YzRhMjI1MDZhYWI4NTY2YzAyNGNkZWVhMDhk
YzYxY2I2YWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTg0MTQsNyArODQxNCw3IEBA
IHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IERvY3VtZW50OjpwYWdlSUQoKSBjb25zdAog
CiBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gRG9jdW1lbnQ6OmZyYW1lSUQoKSBjb25z
dAogewotICAgIHJldHVybiBtX2ZyYW1lLT5sb2FkZXIoKS5mcmFtZUlEKCk7CisgICAgcmV0dXJu
IG1fZnJhbWUgPyBtX2ZyYW1lLT5sb2FkZXIoKS5mcmFtZUlEKCkgOiBzdGQ6Om51bGxvcHQ7CiB9
CiAKIHZvaWQgRG9jdW1lbnQ6OnJlZ2lzdGVyQXJ0aWNsZUVsZW1lbnQoRWxlbWVudCYgYXJ0aWNs
ZSkKQEAgLTg3ODAsNiArODc4MCwyNCBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVTZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YSgpCiAgICAgYXV0byBjb250cm9sbGluZ1NlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25JZGVudGlmaWVyID0gYWN0aXZlU2VydmljZVdvcmtlcigpID8gc3RkOjptYWtlX29wdGlv
bmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPihhY3RpdmVTZXJ2aWNlV29y
a2VyKCktPnJlZ2lzdHJhdGlvbklkZW50aWZpZXIoKSkgOiBzdGQ6Om51bGxvcHQ7CiAgICAgbV9z
ZXJ2aWNlV29ya2VyQ29ubmVjdGlvbi0+cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KHRvcE9y
aWdpbigpLCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZnJvbSgqdGhpcyksIGNvbnRyb2xsaW5n
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIHVzZXJBZ2VudCh1cmwoKSkpOwog
fQorCit2b2lkIERvY3VtZW50OjpuYXZpZ2F0ZUZyb21TZXJ2aWNlV29ya2VyKGNvbnN0IFVSTCYg
dXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQoreworICAgIGlm
IChhY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkKCkgfHwgYWN0aXZlRE9NT2JqZWN0c0FyZVN0
b3BwZWQoKSkgeworICAgICAgICBjYWxsYmFjayhmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlv
biwgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHVybCwgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byogZnJhbWUgPSB3ZWFrVGhpcyA/
IHdlYWtUaGlzLT5mcmFtZSgpIDogbnVsbHB0cjsKKyAgICAgICAgaWYgKCFmcmFtZSkgeworICAg
ICAgICAgICAgY2FsbGJhY2soZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIGZyYW1lLT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkuc2NoZWR1bGVMb2NhdGlvbkNo
YW5nZSgqd2Vha1RoaXMsIHdlYWtUaGlzLT5zZWN1cml0eU9yaWdpbigpLCB1cmwsIGZyYW1lLT5s
b2FkZXIoKS5vdXRnb2luZ1JlZmVycmVyKCksIExvY2tIaXN0b3J5OjpZZXMsIExvY2tCYWNrRm9y
d2FyZExpc3Q6Ok5vLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIGNhbGxiYWNrKHRydWUpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KICNl
bmRpZgogCiBTdHJpbmcgRG9jdW1lbnQ6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmlu
Zyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBj
b25zdCBVUkwmIHVybCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggNGMyMzY0MTdlZjVlZWU3ZjUx
Y2IxNGJiODllYWUyM2M4YjE3OTUyMC4uYjY4NTI1ZDljMmI5NzNlZjc1MTVkMDY2ZWIxNmFjMzFk
ZmRjNDI0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTE1NjksNiArMTU2OSw3IEBAIHB1Ymxp
YzoKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBzZXRTZXJ2aWNlV29ya2Vy
Q29ubmVjdGlvbihTV0NsaWVudENvbm5lY3Rpb24qKTsKICAgICB2b2lkIHVwZGF0ZVNlcnZpY2VX
b3JrZXJDbGllbnREYXRhKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBuYXZpZ2F0ZUZyb21T
ZXJ2aWNlV29ya2VyKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoVklERU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmNwcAppbmRleCA1
OTE2YmIwNGQ2Y2QyOTUwYmVhMWZjY2EyNWQxZTYyNmViN2U2ZTUyLi4xZjFjYzBmM2Q0OWYxYTAy
ZjZjZTg4MDU3MGQ3OTM2NTI1YzJiMjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5jcHAKQEAgLTU5LDEy
ICs1OSwxMiBAQCBzdGF0aWMgU2VydmljZVdvcmtlckNsaWVudEZyYW1lVHlwZSB0b1NlcnZpY2VX
b3JrZXJDbGllbnRGcmFtZVR5cGUoU2NyaXB0RXhlY3V0aQogCiBTZXJ2aWNlV29ya2VyQ2xpZW50
RGF0YSBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgogewot
ICAgIHJldHVybiB7IGlkZW50aWZpZXIsIHR5cGUsIGZyYW1lVHlwZSwgdXJsLmlzb2xhdGVkQ29w
eSgpLCBwYWdlSWRlbnRpZmllciwgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQsIGlzVmlz
aWJsZSwgaXNGb2N1c2VkLCBmb2N1c09yZGVyLCBjcm9zc1RocmVhZENvcHkoYW5jZXN0b3JPcmln
aW5zKSB9OworICAgIHJldHVybiB7IGlkZW50aWZpZXIsIHR5cGUsIGZyYW1lVHlwZSwgdXJsLmlz
b2xhdGVkQ29weSgpLCBwYWdlSWRlbnRpZmllciwgZnJhbWVJZGVudGlmaWVyLCBsYXN0TmF2aWdh
dGlvbldhc0FwcEluaXRpYXRlZCwgaXNWaXNpYmxlLCBpc0ZvY3VzZWQsIGZvY3VzT3JkZXIsIGNy
b3NzVGhyZWFkQ29weShhbmNlc3Rvck9yaWdpbnMpIH07CiB9CiAKIFNlcnZpY2VXb3JrZXJDbGll
bnREYXRhIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjppc29sYXRlZENvcHkoKSAmJgogewotICAg
IHJldHVybiB7IGlkZW50aWZpZXIsIHR5cGUsIGZyYW1lVHlwZSwgV1RGTW92ZSh1cmwpLmlzb2xh
dGVkQ29weSgpLCBwYWdlSWRlbnRpZmllciwgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQs
IGlzVmlzaWJsZSwgaXNGb2N1c2VkLCBmb2N1c09yZGVyLCBjcm9zc1RocmVhZENvcHkoV1RGTW92
ZShhbmNlc3Rvck9yaWdpbnMpKSB9OworICAgIHJldHVybiB7IGlkZW50aWZpZXIsIHR5cGUsIGZy
YW1lVHlwZSwgV1RGTW92ZSh1cmwpLmlzb2xhdGVkQ29weSgpLCBwYWdlSWRlbnRpZmllciwgZnJh
bWVJZGVudGlmaWVyLCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCwgaXNWaXNpYmxlLCBp
c0ZvY3VzZWQsIGZvY3VzT3JkZXIsIGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGFuY2VzdG9yT3Jp
Z2lucykpIH07CiB9CiAKIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIFNlcnZpY2VXb3JrZXJDbGll
bnREYXRhOjpmcm9tKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCkBAIC04Nyw2ICs4
Nyw3IEBAIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjpm
cm9tKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvCiAgICAgICAgIHRvU2VydmljZVdvcmtlckNs
aWVudEZyYW1lVHlwZShjb250ZXh0KSwKICAgICAgICAgZG9jdW1lbnQuY3JlYXRpb25VUkwoKSwK
ICAgICAgICAgZG9jdW1lbnQucGFnZUlEKCksCisgICAgICAgIGRvY3VtZW50LmZyYW1lSUQoKSwK
ICAgICAgICAgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQsCiAgICAgICAgICFkb2N1bWVu
dC5oaWRkZW4oKSwKICAgICAgICAgZG9jdW1lbnQuaGFzRm9jdXMoKSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmgK
aW5kZXggMjY0YWE5ZTY4YmZkODQyYTE5NWM0MTM4YzgxYmNmMGQ3ZDIzODc5Ny4uYjhhZjE4MDVh
MTMyMTU2NGQ3MDM1MzEwZjAwZWI1ZTU5Yzc5Yzg2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmgKQEAgLTI3
LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorI2luY2x1ZGUgIkZy
YW1lSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
UHJvY2Vzc1F1YWxpZmllZC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyLmgiCkBAIC00OSw2ICs1MCw3IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0
YSB7CiAgICAgU2VydmljZVdvcmtlckNsaWVudEZyYW1lVHlwZSBmcmFtZVR5cGU7CiAgICAgVVJM
IHVybDsKICAgICBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSWRlbnRpZmllcjsK
KyAgICBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJZGVudGlmaWVyOwogICAg
IExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlh
dGVkOwogICAgIGJvb2wgaXNWaXNpYmxlIHsgZmFsc2UgfTsKICAgICBib29sIGlzRm9jdXNlZCB7
IGZhbHNlIH07CkBAIC02Nyw3ICs2OSw3IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0
YSB7CiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0
YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8PCBpZGVu
dGlmaWVyIDw8IHR5cGUgPDwgZnJhbWVUeXBlIDw8IHVybCA8PCBwYWdlSWRlbnRpZmllciA8PCBs
YXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCA8PCBpc1Zpc2libGUgPDwgaXNGb2N1c2VkIDw8
IGZvY3VzT3JkZXIgPDwgYW5jZXN0b3JPcmlnaW5zOworICAgIGVuY29kZXIgPDwgaWRlbnRpZmll
ciA8PCB0eXBlIDw8IGZyYW1lVHlwZSA8PCB1cmwgPDwgcGFnZUlkZW50aWZpZXIgPDwgZnJhbWVJ
ZGVudGlmaWVyIDw8IGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIDw8IGlzVmlzaWJsZSA8
PCBpc0ZvY3VzZWQgPDwgZm9jdXNPcmRlciA8PCBhbmNlc3Rvck9yaWdpbnM7CiB9CiAKIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+CkBAIC05OCw2ICsxMDAsMTEgQEAgc3RkOjpvcHRpb25hbDxTZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YT4gU2VydmljZVdvcmtlckNsaWVudERhdGE6OmRlY29kZShEZWNv
ZGVyJgogICAgIGlmICghcGFnZUlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPj4g
ZnJhbWVJZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gZnJhbWVJZGVudGlmaWVyOworICAgIGlm
ICghZnJhbWVJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCiAgICAg
c3RkOjpvcHRpb25hbDxMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZD4gbGFzdE5hdmlnYXRp
b25XYXNBcHBJbml0aWF0ZWQ7CiAgICAgZGVjb2RlciA+PiBsYXN0TmF2aWdhdGlvbldhc0FwcElu
aXRpYXRlZDsKICAgICBpZiAoIWxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKQpAQCAtMTIz
LDcgKzEzMCw3IEBAIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IFNlcnZp
Y2VXb3JrZXJDbGllbnREYXRhOjpkZWNvZGUoRGVjb2RlciYKICAgICBpZiAoIWFuY2VzdG9yT3Jp
Z2lucykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7IHsgV1RG
TW92ZSgqaWRlbnRpZmllciksIFdURk1vdmUoKnR5cGUpLCBXVEZNb3ZlKCpmcmFtZVR5cGUpLCBX
VEZNb3ZlKCp1cmwpLCBXVEZNb3ZlKCpwYWdlSWRlbnRpZmllciksIFdURk1vdmUoKmxhc3ROYXZp
Z2F0aW9uV2FzQXBwSW5pdGlhdGVkKSwgV1RGTW92ZSgqaXNWaXNpYmxlKSwgV1RGTW92ZSgqaXNG
b2N1c2VkKSwgV1RGTW92ZSgqZm9jdXNPcmRlciksIFdURk1vdmUoKmFuY2VzdG9yT3JpZ2lucykg
fSB9OworICAgIHJldHVybiB7IHsgV1RGTW92ZSgqaWRlbnRpZmllciksIFdURk1vdmUoKnR5cGUp
LCBXVEZNb3ZlKCpmcmFtZVR5cGUpLCBXVEZNb3ZlKCp1cmwpLCBXVEZNb3ZlKCpwYWdlSWRlbnRp
ZmllciksIFdURk1vdmUoKmZyYW1lSWRlbnRpZmllciksIFdURk1vdmUoKmxhc3ROYXZpZ2F0aW9u
V2FzQXBwSW5pdGlhdGVkKSwgV1RGTW92ZSgqaXNWaXNpYmxlKSwgV1RGTW92ZSgqaXNGb2N1c2Vk
KSwgV1RGTW92ZSgqZm9jdXNPcmRlciksIFdURk1vdmUoKmFuY2VzdG9yT3JpZ2lucykgfSB9Owog
fQogCiB1c2luZyBTZXJ2aWNlV29ya2VyQ2xpZW50c01hdGNoQWxsQ2FsbGJhY2sgPSBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJik+OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJXaW5k
b3dDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJXaW5kb3dDbGllbnQuY3BwCmluZGV4IGRmNzdjYzQ5MTU5ZDk2MWJmMmEyMTUzYzA3N2NhZjk4
OTJlOTI3M2QuLjhkZWMxZDBkMzc1ZDBkMzNmMjI3ZTg0M2U1MTBhZGJhMWZlYWY0NDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyV2luZG93
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlcldpbmRvd0NsaWVudC5jcHAKQEAgLTcxLDEwICs3MSw0OCBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJXaW5kb3dDbGllbnQ6OmZvY3VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJl
ZjxEZWZlcgogICAgIH0pOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQ6Om5h
dmlnYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHVybCwgUmVmPERl
ZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQordm9pZCBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50
OjpuYXZpZ2F0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcm
IHVybFN0cmluZywgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewotICAgIFVOVVNF
RF9QQVJBTSh1cmwpOwotICAgIHByb21pc2UtPnJlamVjdChFeGNlcHRpb24geyBOb3RTdXBwb3J0
ZWRFcnJvciwgIndpbmRvd0NsaWVudC5uYXZpZ2F0ZSgpIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIl9z
IH0pOworICAgIGF1dG8gdXJsID0gY29udGV4dC5jb21wbGV0ZVVSTCh1cmxTdHJpbmcpOworCisg
ICAgaWYgKCF1cmwuaXNWYWxpZCgpKSB7CisgICAgICAgIHByb21pc2UtPnJlamVjdChFeGNlcHRp
b24geyBUeXBlRXJyb3IsIG1ha2VTdHJpbmcoIlVSTCBzdHJpbmcgIiwgdXJsU3RyaW5nLCAiIGNh
bm5vdCBzdWNjZXNzZnVsbHkgYmUgcGFyc2VkIikgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAodXJsLnByb3RvY29sSXNBYm91dCgpKSB7CisgICAgICAgIHByb21pc2UtPnJl
amVjdChFeGNlcHRpb24geyBUeXBlRXJyb3IsIG1ha2VTdHJpbmcoIlNlcnZpY2VXb3JrZXJDbGll
bnRzLm5hdmlnYXRlKCkgY2Fubm90IGJlIGNhbGxlZCB3aXRoIFVSTCAiLCB1cmwuc3RyaW5nKCkp
IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gV2UgaW1wbGVtZW50IHN0ZXAg
NCAoY2hlY2tpbmcgb2YgY2xpZW50J3MgYWN0aXZlIHNlcnZpY2Ugd29ya2VyKSBpbiBuZXR3b3Jr
IHByb2Nlc3MgYXMgd2UgY2Fubm90IGRvIGl0IHN5bmNocm9ub3VzbHkuCisgICAgYXV0byYgc2Vy
dmljZVdvcmtlckNvbnRleHQgPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNv
bnRleHQpOworICAgIGF1dG8gcHJvbWlzZUlkZW50aWZpZXIgPSBzZXJ2aWNlV29ya2VyQ29udGV4
dC5jbGllbnRzKCkuYWRkUGVuZGluZ1Byb21pc2UoV1RGTW92ZShwcm9taXNlKSk7CisgICAgY2Fs
bE9uTWFpblRocmVhZChbY2xpZW50SWRlbnRpZmllciA9IGlkZW50aWZpZXIoKSwgcHJvbWlzZUlk
ZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gc2VydmljZVdvcmtlckNvbnRleHQu
dGhyZWFkKCkuaWRlbnRpZmllcigpLCB1cmwgPSBXVEZNb3ZlKHVybCkuaXNvbGF0ZWRDb3B5KCld
KCkgbXV0YWJsZSB7CisgICAgICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5l
Y3Rpb24oKS0+bmF2aWdhdGUoY2xpZW50SWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIHVybCwgW3Byb21pc2VJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllcl0oYXV0
byByZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xl
dG9uKCkucG9zdFRhc2tUb1NlcnZpY2VXb3JrZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFtw
cm9taXNlSWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUocmVzdWx0
KSldKGF1dG8mIHNlcnZpY2VXb3JrZXJDb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAg
ICBhdXRvIHByb21pc2UgPSBzZXJ2aWNlV29ya2VyQ29udGV4dC5jbGllbnRzKCkudGFrZVBlbmRp
bmdQcm9taXNlKHByb21pc2VJZGVudGlmaWVyKTsKKyAgICAgICAgICAgICAgICBpZiAoIXByb21p
c2UpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIGlmIChy
ZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVq
ZWN0KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGF1dG8gY2xpZW50RGF0YSA9
IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICAgICAgICAgICAgICBpZiAoIWNsaWVu
dERhdGEpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZVdpdGhKU1ZhbHVl
KEpTQzo6anNOdWxsKCkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAgICAgfQorI2lmIEFTU0VSVF9FTkFCTEVECisgICAgICAgICAgICAgICAgYXV0byBvcmlnaW5E
YXRhID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKGNsaWVudERhdGEtPnVybCk7CisgICAg
ICAgICAgICAgICAgQ2xpZW50T3JpZ2luIGNsaWVudE9yaWdpbiB7IG9yaWdpbkRhdGEsIG9yaWdp
bkRhdGEgfTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIEFTU0VSVChzZXJ2aWNlV29ya2VyQ29u
dGV4dC5jbGllbnRPcmlnaW4oKSA9PSBjbGllbnRPcmlnaW4pOworICAgICAgICAgICAgICAgIHBy
b21pc2UtPnRlbXBsYXRlIHJlc29sdmU8SURMSW50ZXJmYWNlPFNlcnZpY2VXb3JrZXJXaW5kb3dD
bGllbnQ+PihTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50OjpjcmVhdGUoc2VydmljZVdvcmtlckNv
bnRleHQsIFdURk1vdmUoKmNsaWVudERhdGEpKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fSk7CisgICAgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIu
aAppbmRleCAwY2IxOTI3NDU4N2MzOTQxY2UyMDkxNzdkZmNlMzU1N2ZkYTE5YzY1Li4yZDhiYjNj
NWUxYzBjMzc2ZmM3ZTNlYzNkNjEyNzIzN2ZlMmJkZTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCkBA
IC03Miw2ICs3Miw5IEBAIHB1YmxpYzoKICAgICAgICAgdXNpbmcgT3BlbldpbmRvd0NhbGxiYWNr
ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJDbGllbnREYXRhPj4mJik+OwogICAgICAgICB2aXJ0dWFsIHZvaWQgb3BlbldpbmRv
dyhTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgVVJMJiwgT3BlbldpbmRvd0NhbGxiYWNr
JiYpID0gMDsKIAorICAgICAgICB1c2luZyBOYXZpZ2F0ZUNhbGxiYWNrID0gQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJDbGllbnREYXRhPj4mJik+OworICAgICAgICB2aXJ0dWFsIHZvaWQgbmF2aWdhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25z
dCBVUkwmLCBOYXZpZ2F0ZUNhbGxiYWNrJiYpID0gMDsKKwogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmFpbEhlYXJ0QmVhdENoZWNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSA9IDA7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBzZXRBc0luc3BlY3RlZChTZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
Ym9vbCkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuY3BwCmluZGV4IDIxZGJkMjY0OGMxYWQyOTBhYWRmZmNjMGY4YWJiNGIwZWQ0
NzVmODkuLmU1NTNkMWNkYjgzNTMxYjk0MjA2YTU4ZmUyZGRkZDA0ZWNkYWVmMzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBA
IC0xMDkxLDYgKzEwOTEsMTQgQEAgdm9pZCBTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3Jr
ZXJDbGllbnQoY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIFMKICAgICBtX2NsaWVu
dFRvQ29udHJvbGxpbmdSZWdpc3RyYXRpb24ucmVtb3ZlKHJlZ2lzdHJhdGlvbkl0ZXJhdG9yKTsK
IH0KIAorc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4g
U1dTZXJ2ZXI6OmNsaWVudElkZW50aWZpZXJUb0NvbnRyb2xsaW5nUmVnaXN0cmF0aW9uKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIpIGNvbnN0Cit7Cisg
ICAgYXV0byByZWdpc3RyYXRpb25JdGVyYXRvciA9IG1fY2xpZW50VG9Db250cm9sbGluZ1JlZ2lz
dHJhdGlvbi5maW5kKGNsaWVudElkZW50aWZpZXIpOworICAgIGlmIChyZWdpc3RyYXRpb25JdGVy
YXRvciA9PSBtX2NsaWVudFRvQ29udHJvbGxpbmdSZWdpc3RyYXRpb24uZW5kKCkpCisgICAgICAg
IHJldHVybiB7IH07CisgICAgcmV0dXJuIHJlZ2lzdHJhdGlvbkl0ZXJhdG9yLT52YWx1ZTsKK30K
KwogU1dTZXJ2ZXI6OlNob3VsZERlbGF5UmVtb3ZhbCBTV1NlcnZlcjo6cmVtb3ZlQ29udGV4dENv
bm5lY3Rpb25JZlBvc3NpYmxlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pCiB7CiAg
ICAgaWYgKG1fY2xpZW50c0J5UmVnaXN0cmFibGVEb21haW4uY29udGFpbnMoZG9tYWluKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRl
eCBiMzI3ZTM4YWZmMWVkZjI2YmU4MjAzZmJjZWFkOTZhOGQ2YzM3ZjZiLi43YjQ0MTVjMmEwY2M3
MDQ4NmRkM2QyNjdlMDhlMjY5MzJkMDJmMmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCkBAIC0yNDIsNiArMjQyLDkgQEAgcHVibGlj
OgogICAgIGVudW0gY2xhc3MgU2hvdWxkRGVsYXlSZW1vdmFsIDogYm9vbCB7IE5vLCBZZXMgfTsK
ICAgICBTaG91bGREZWxheVJlbW92YWwgcmVtb3ZlQ29udGV4dENvbm5lY3Rpb25JZlBvc3NpYmxl
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CiAKKyAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiBjbGllbnRJZGVudGlmaWVyVG9Db250cm9sbGlu
Z1JlZ2lzdHJhdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcikgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmb3JFYWNoQ2xpZW50Rm9yT3JpZ2luKGNvbnN0IENsaWVu
dE9yaWdpbiYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoU2VydmljZVdvcmtlckNsaWVudERhdGEmKT4m
KTsKKwogcHJpdmF0ZToKICAgICB2b2lkIHZhbGlkYXRlUmVnaXN0cmF0aW9uRG9tYWluKFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBTZXJ2aWNlV29ya2VySm9iVHlwZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik7CiAKQEAgLTI2MSw3ICsyNjQsNiBAQCBwcml2YXRlOgogICAg
IHZvaWQgaW5zdGFsbENvbnRleHREYXRhKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYp
OwogCiAgICAgU1dTZXJ2ZXJSZWdpc3RyYXRpb24qIHJlZ2lzdHJhdGlvbkZyb21TZXJ2aWNlV29y
a2VySWRlbnRpZmllcihTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgdm9pZCBmb3JFYWNo
Q2xpZW50Rm9yT3JpZ2luKGNvbnN0IENsaWVudE9yaWdpbiYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQo
U2VydmljZVdvcmtlckNsaWVudERhdGEmKT4mKTsKIAogICAgIHZvaWQgcGVyZm9ybUdldE9yaWdp
bnNXaXRoUmVnaXN0cmF0aW9uc0NhbGxiYWNrcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCmluZGV4IDA4
ODFiYzYyMzczNzEzYWFlMjFmZWIxOGI2MjYyNGI1YmE2ZTk5OTIuLmQxOWU5ZWFlYWNlZGZmZDlh
YWViZGIxMTk1MWM4Yzk3YzEwZWNkYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCkBAIC00MTksNiArNDE5
LDE0IEBAIHZvaWQgU1dTZXJ2ZXJXb3JrZXI6OnRlcm1pbmF0ZUlmUG9zc2libGUoKQogICAgIG1f
c2VydmVyLT5yZW1vdmVDb250ZXh0Q29ubmVjdGlvbklmUG9zc2libGUocmVnaXN0cmFibGVEb21h
aW4oKSk7CiB9CiAKK2Jvb2wgU1dTZXJ2ZXJXb3JrZXI6OmlzQ2xpZW50QWN0aXZlU2VydmljZVdv
cmtlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyKSBj
b25zdAoreworICAgIGlmICghbV9zZXJ2ZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBh
dXRvIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIgPSBtX3NlcnZlci0+Y2xpZW50SWRlbnRpZmllclRv
Q29udHJvbGxpbmdSZWdpc3RyYXRpb24oY2xpZW50SWRlbnRpZmllcik7CisgICAgcmV0dXJuIHJl
Z2lzdHJhdGlvbklkZW50aWZpZXIgPT0gbV9kYXRhLnJlZ2lzdHJhdGlvbklkZW50aWZpZXI7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJXb3JrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJXb3JrZXIuaAppbmRleCA1NGRmMzg0MjIwODFhYWU0ZDgyYmE2MjRmYmE2MjkwYThm
NjM3YmI2Li43MTdkNTU5ZWRiZjM4MWIwNWM1NzIwZTU4ZTZjNDllYjZjNmQwN2M1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2Vy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldv
cmtlci5oCkBAIC0xNDEsNiArMTQxLDggQEAgcHVibGljOgogCiAgICAgYm9vbCBzaG91bGRDb250
aW51ZSgpIGNvbnN0IHsgcmV0dXJuICEhbV9mdW5jdGlvbmFsRXZlbnRDb3VudGVyIHx8IG1faXNJ
bnNwZWN0ZWQ7IH0KIAorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNDbGllbnRBY3RpdmVTZXJ2
aWNlV29ya2VyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyKSBjb25zdDsKKwogcHJp
dmF0ZToKICAgICBTV1NlcnZlcldvcmtlcihTV1NlcnZlciYsIFNXU2VydmVyUmVnaXN0cmF0aW9u
JiwgY29uc3QgVVJMJiwgY29uc3QgU2NyaXB0QnVmZmVyJiwgY29uc3QgQ2VydGlmaWNhdGVJbmZv
JiwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgY29uc3QgQ3Jv
c3NPcmlnaW5FbWJlZGRlclBvbGljeSYsIFN0cmluZyYmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJU
eXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
ckNvbm5lY3Rpb24uY3BwCmluZGV4IDZmYThkYWE0MmQ0NzhkYWM0YzNlN2U4ZTZmY2ZlNmJhZjU4
YjY4NmIuLjU2YjE4MDQ2OTZhNTY1NGExZjM2YWQ5M2Q3ZGNkZTQxNDMxZDI2YzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
ckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0xNjQsMTkgKzE2NCwyMCBAQCB2
b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6dXBkYXRlV29ya2VyU3RhdGVJbkNsaWVudChTZXJ2
aWNlV29ya2VySWRlbnRpZmllciB3bwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ2xpZW50Q29u
bmVjdGlvbjo6VXBkYXRlV29ya2VyU3RhdGUod29ya2VyLCBzdGF0ZSkpOwogfQogCi12b2lkIFdl
YlNXU2VydmVyQ29ubmVjdGlvbjo6Y29udHJvbENsaWVudChjb25zdCBWZWN0b3I8UmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPj4mIGZyYW1lQW5jZXN0b3JPcmlnaW5zLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVn
aXN0cmF0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit2b2lkIFdlYlNXU2Vy
dmVyQ29ubmVjdGlvbjo6Y29udHJvbENsaWVudChjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycyYgcGFyYW1ldGVycywgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbiwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogeworICAgIGF1dG8gY2xpZW50SWRlbnRp
ZmllciA9ICpwYXJhbWV0ZXJzLm9wdGlvbnMuY2xpZW50SWRlbnRpZmllcjsKICAgICAvLyBBcyBw
ZXIgc3RlcCAxMiBvZiBodHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jb24tZmV0
Y2gtcmVxdWVzdC1hbGdvcml0aG0sIHRoZSBhY3RpdmUgc2VydmljZSB3b3JrZXIgc2hvdWxkIGJl
IGNvbnRyb2xsaW5nIHRoZSBkb2N1bWVudC4KLSAgICAvLyBXZSByZWdpc3RlciBhIHRlbXBvcmFy
eSBzZXJ2aWNlIHdvcmtlciBjbGllbnQgdXNpbmcgdGhlIGlkZW50aWZpZXIgcHJvdmlkZWQgYnkg
RG9jdW1lbnRMb2FkZXIgYW5kIG5vdGlmeSBEb2N1bWVudExvYWRlciBhYm91dCBpdC4KLSAgICAv
LyBJZiBub3RpZmljYXRpb24gaXMgc3VjY2Vzc2Z1bCwgRG9jdW1lbnRMb2FkZXIgd2lsbCB1bnJl
Z2lzdGVyIHRoZSB0ZW1wb3Jhcnkgc2VydmljZSB3b3JrZXIgY2xpZW50IGp1c3QgYWZ0ZXIgdGhl
IGRvY3VtZW50IGlzIGNyZWF0ZWQgYW5kIHJlZ2lzdGVyZWQgYXMgYSBjbGllbnQuCisgICAgLy8g
V2UgcmVnaXN0ZXIgdGhlIHNlcnZpY2Ugd29ya2VyIGNsaWVudCB1c2luZyB0aGUgaWRlbnRpZmll
ciBwcm92aWRlZCBieSBEb2N1bWVudExvYWRlciBhbmQgbm90aWZ5IERvY3VtZW50TG9hZGVyIGFi
b3V0IGl0LgorICAgIC8vIElmIG5vdGlmaWNhdGlvbiBpcyBzdWNjZXNzZnVsLCBEb2N1bWVudExv
YWRlciBpcyByZXNwb25zaWJsZSB0byB1bnJlZ2lzdGVyIHRoZSBzZXJ2aWNlIHdvcmtlciBjbGll
bnQgYXMgbmVlZGVkLgogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViU1dDbGll
bnRDb25uZWN0aW9uOjpTZXREb2N1bWVudElzQ29udHJvbGxlZCB7IGNsaWVudElkZW50aWZpZXIs
IHJlZ2lzdHJhdGlvbi5kYXRhKCkgfSwgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHRo
aXMsIGNsaWVudElkZW50aWZpZXJdKGJvb2wgaXNTdWNjZXNzKSB7CiAgICAgICAgIGlmICghd2Vh
a1RoaXMgfHwgaXNTdWNjZXNzKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB1bnJlZ2lz
dGVyU2VydmljZVdvcmtlckNsaWVudChjbGllbnRJZGVudGlmaWVyKTsKICAgICB9KTsKIAotICAg
IGF1dG8gYW5jZXN0b3JPcmlnaW5zID0gbWFwKGZyYW1lQW5jZXN0b3JPcmlnaW5zLCBbXShhdXRv
JiBvcmlnaW4pIHsgcmV0dXJuIG9yaWdpbi0+dG9TdHJpbmcoKTsgfSk7Ci0gICAgU2VydmljZVdv
cmtlckNsaWVudERhdGEgZGF0YSB7IGNsaWVudElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGll
bnRUeXBlOjpXaW5kb3csIFNlcnZpY2VXb3JrZXJDbGllbnRGcmFtZVR5cGU6Ok5vbmUsIHJlcXVl
c3QudXJsKCksIHsgfSwgcmVxdWVzdC5pc0FwcEluaXRpYXRlZCgpID8gV2ViQ29yZTo6TGFzdE5h
dmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6OlllcyA6IFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2Fz
QXBwSW5pdGlhdGVkOjpObywgZmFsc2UsIGZhbHNlLCAwLCBXVEZNb3ZlKGFuY2VzdG9yT3JpZ2lu
cykgfTsKKyAgICBhdXRvIGFuY2VzdG9yT3JpZ2lucyA9IG1hcChwYXJhbWV0ZXJzLmZyYW1lQW5j
ZXN0b3JPcmlnaW5zLCBbXShhdXRvJiBvcmlnaW4pIHsgcmV0dXJuIG9yaWdpbi0+dG9TdHJpbmco
KTsgfSk7CisgICAgU2VydmljZVdvcmtlckNsaWVudERhdGEgZGF0YSB7IGNsaWVudElkZW50aWZp
ZXIsIFNlcnZpY2VXb3JrZXJDbGllbnRUeXBlOjpXaW5kb3csIFNlcnZpY2VXb3JrZXJDbGllbnRG
cmFtZVR5cGU6Ok5vbmUsIHJlcXVlc3QudXJsKCksIHBhcmFtZXRlcnMud2ViUGFnZUlELCBwYXJh
bWV0ZXJzLndlYkZyYW1lSUQsIHJlcXVlc3QuaXNBcHBJbml0aWF0ZWQoKSA/IFdlYkNvcmU6Okxh
c3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpZZXMgOiBXZWJDb3JlOjpMYXN0TmF2aWdhdGlv
bldhc0FwcEluaXRpYXRlZDo6Tm8sIGZhbHNlLCBmYWxzZSwgMCwgV1RGTW92ZShhbmNlc3Rvck9y
aWdpbnMpIH07CiAgICAgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KFNlY3VyaXR5T3JpZ2lu
RGF0YSB7IHJlZ2lzdHJhdGlvbi5rZXkoKS50b3BPcmlnaW4oKSB9LCBXVEZNb3ZlKGRhdGEpLCBy
ZWdpc3RyYXRpb24uaWRlbnRpZmllcigpLCByZXF1ZXN0Lmh0dHBVc2VyQWdlbnQoKSk7CiB9CiAK
QEAgLTIwMSw3ICsyMDIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckZldGNoVGFz
az4gV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpjcmVhdGVGZXRjaFRhc2soTgogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50
aWZpZXIgPSByZWdpc3RyYXRpb24tPmlkZW50aWZpZXIoKTsKLSAgICAgICAgY29udHJvbENsaWVu
dChsb2FkZXIucGFyYW1ldGVycygpLmZyYW1lQW5jZXN0b3JPcmlnaW5zLCAqbG9hZGVyLnBhcmFt
ZXRlcnMoKS5vcHRpb25zLmNsaWVudElkZW50aWZpZXIsICpyZWdpc3RyYXRpb24sIHJlcXVlc3Qp
OworICAgICAgICBjb250cm9sQ2xpZW50KGxvYWRlci5wYXJhbWV0ZXJzKCksICpyZWdpc3RyYXRp
b24sIHJlcXVlc3QpOwogICAgICAgICBsb2FkZXIuc2V0UmVzdWx0aW5nQ2xpZW50SWRlbnRpZmll
cihsb2FkZXIucGFyYW1ldGVycygpLm9wdGlvbnMuY2xpZW50SWRlbnRpZmllci0+dG9TdHJpbmco
KSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFsb2FkZXIucGFyYW1ldGVycygpLnNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29u
bmVjdGlvbi5oCmluZGV4IGY3N2I5ZjViOTM4N2I5MWYyYjY3MzIwZTM3Y2ZhYmI5Yjc5NWUyNGQu
LjRkYzMxNDVjYmZiOGUzZDVjNWVlY2ZmY2Y5NzUxMDUxNWY0ZjRhYmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5l
Y3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTYxLDYgKzYxLDcgQEAgc3RydWN0IFNlcnZpY2VX
b3JrZXJDbGllbnREYXRhOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIE5ldHdvcmtQcm9j
ZXNzOworY2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM7CiBjbGFzcyBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOwogCkBAIC04Myw4
ICs4NCw2IEBAIHB1YmxpYzoKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckZldGNo
VGFzaz4gY3JlYXRlRmV0Y2hUYXNrKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgZmV0Y2hUYXNrVGltZWRPdXQoV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogCi0gICAgdm9pZCBmb2N1c1NlcnZpY2VXb3Jr
ZXJDbGllbnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xp
ZW50RGF0YT4mJik+JiYpOwotCiBwcml2YXRlOgogICAgIC8vIEltcGxlbWVudCBTV1NlcnZlcjo6
Q29ubmVjdGlvbiAoTWVzc2FnZXMgdG8gdGhlIGNsaWVudCBXZWJQcm9jZXNzKQogICAgIHZvaWQg
cmVqZWN0Sm9iSW5DbGllbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYklkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmKSBmaW5hbDsKQEAgLTk3LDYgKzk2LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHNldFJlZ2lzdHJhdGlvbkxhc3RVcGRhdGVUaW1lKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBXYWxsVGltZSkgZmluYWw7CiAgICAg
dm9pZCBzZXRSZWdpc3RyYXRpb25VcGRhdGVWaWFDYWNoZShXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlclVwZGF0ZVZpYUNh
Y2hlKSBmaW5hbDsKICAgICB2b2lkIG5vdGlmeUNsaWVudHNPZkNvbnRyb2xsZXJDaGFuZ2UoY29u
c3QgSGFzaFNldDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4mIGNv
bnRleHRJZGVudGlmaWVycywgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckRhdGEmIG5ld0Nv
bnRyb2xsZXIpOworICAgIHZvaWQgZm9jdXNTZXJ2aWNlV29ya2VyQ2xpZW50KFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYpPiYmKSBmaW5h
bDsKIAogICAgIHZvaWQgc2NoZWR1bGVKb2JJblNlcnZlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
Sm9iRGF0YSYmKTsKIApAQCAtMTI5LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRQ
dXNoUGVybWlzc2lvblN0YXRlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPHVpbnQ4X3QsIFdlYkNvcmU6
OkV4Y2VwdGlvbkRhdGE+JiYpPiYmKTsKIAogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VX
b3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRpb24sIFdlYkNv
cmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJPckNsaWVudElkZW50aWZpZXImIHNvdXJjZSk7Ci0gICAgdm9pZCBjb250cm9sQ2xpZW50KGNv
bnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiYsIFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBXZWJDb3JlOjpTV1NlcnZlclJlZ2lzdHJh
dGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworICAgIHZvaWQgY29udHJv
bENsaWVudChjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYsIFdlYkNvcmU6OlNX
U2VydmVyUmVnaXN0cmF0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAK
ICAgICB1c2luZyBFeGNlcHRpb25PclZvaWRDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmKT47CiAgICAgdm9pZCBl
bmFibGVOYXZpZ2F0aW9uUHJlbG9hZChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllciwgRXhjZXB0aW9uT3JWb2lkQ2FsbGJhY2smJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmluZGV4IGNjZDU1Y2VhYTFm
ZTgyMjdkYWEyOTY1ZjdlZWYyYzYzZGNhNWM3MTYuLjE0YjNiNGYxMmU4MDQyMGIxYzdhOWI3YzU4
NmE5NjJlNjIwZWYyMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uY3BwCkBAIC0yNzMsNiArMjczLDQ2IEBAIHZvaWQgV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjpmb2N1cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmll
ciBjbGllCiAgICAgY29ubmVjdGlvbi0+Zm9jdXNTZXJ2aWNlV29ya2VyQ2xpZW50KGNsaWVudElk
ZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAordm9pZCBXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246Om5hdmlnYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVy
IGNsaWVudElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBjb25zdCBVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3Rl
ZDxzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiwgRXhjZXB0aW9uRGF0YT4m
Jik+JiYgY2FsbGJhY2spCit7CisgICAgYXV0byogd29ya2VyID0gU1dTZXJ2ZXJXb3JrZXI6OmV4
aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CisgICAg
aWYgKCF3b3JrZXIpIHsKKyAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9u
RGF0YSB7IFR5cGVFcnJvciwgIm5vIHNlcnZpY2Ugd29ya2VyIl9zIH0pKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGlmICghd29ya2VyLT5pc0NsaWVudEFjdGl2ZVNlcnZpY2VXb3Jr
ZXIoY2xpZW50SWRlbnRpZmllcikpIHsKKyAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQo
RXhjZXB0aW9uRGF0YSB7IFR5cGVFcnJvciwgInNlcnZpY2Ugd29ya2VyIGlzIG5vdCB0aGUgY2xp
ZW50IGFjdGl2ZSBzZXJ2aWNlIHdvcmtlciJfcyB9KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBhdXRvIGRhdGEgPSB3b3JrZXItPmZpbmRDbGllbnRCeUlkZW50aWZpZXIoY2xpZW50
SWRlbnRpZmllcik7CisgICAgaWYgKCFkYXRhIHx8ICFkYXRhLT5wYWdlSWRlbnRpZmllciB8fCAh
ZGF0YS0+ZnJhbWVJZGVudGlmaWVyKSB7CisgICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVk
KEV4Y2VwdGlvbkRhdGEgeyBUeXBlRXJyb3IsICJjYW5ub3QgbmF2aWdhdGUgc2VydmljZSB3b3Jr
ZXIgY2xpZW50Il9zIH0pKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gZnJh
bWVJZGVudGlmaWVyID0gKmRhdGEtPmZyYW1lSWRlbnRpZmllcjsKKyAgICBtX2Nvbm5lY3Rpb24u
bmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Ok5hdmlnYXRlU2VydmljZVdvcmtl
ckNsaWVudCB7IGZyYW1lSWRlbnRpZmllciwgY2xpZW50SWRlbnRpZmllciwgdXJsIH0sIFt3ZWFr
VGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBmcmFtZUlkZW50aWZpZXIsIHVybCwgY2xpZW50T3Jp
Z2luID0gd29ya2VyLT5vcmlnaW4oKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0
byBwYWdlSWRlbnRpZmllcikgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdl
YWtUaGlzLT5zZXJ2ZXIoKSkgeworICAgICAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQo
RXhjZXB0aW9uRGF0YSB7IFR5cGVFcnJvciwgInNlcnZpY2Ugd29ya2VyIGlzIGdvbmUiX3MgfSkp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFwYWdlSWRl
bnRpZmllcikgeworICAgICAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9u
RGF0YSB7IFR5cGVFcnJvciwgIm5hdmlnYXRlIGZhaWxlZCJfcyB9KSk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJD
bGllbnREYXRhPiBjbGllbnREYXRhOworICAgICAgICB3ZWFrVGhpcy0+c2VydmVyKCktPmZvckVh
Y2hDbGllbnRGb3JPcmlnaW4oY2xpZW50T3JpZ2luLCBbcGFnZUlkZW50aWZpZXIsIGZyYW1lSWRl
bnRpZmllciwgdXJsLCAmY2xpZW50RGF0YV0oYXV0byYgZGF0YSkgeworICAgICAgICAgICAgaWYg
KCFjbGllbnREYXRhICYmIGRhdGEucGFnZUlkZW50aWZpZXIgJiYgKmRhdGEucGFnZUlkZW50aWZp
ZXIgPT0gKnBhZ2VJZGVudGlmaWVyICYmIGRhdGEuZnJhbWVJZGVudGlmaWVyICYmICpkYXRhLmZy
YW1lSWRlbnRpZmllciA9PSBmcmFtZUlkZW50aWZpZXIgJiYgZXF1YWxJZ25vcmluZ0ZyYWdtZW50
SWRlbnRpZmllcihkYXRhLnVybCwgdXJsKSkKKyAgICAgICAgICAgICAgICBjbGllbnREYXRhID0g
ZGF0YTsKKyAgICAgICAgfSk7CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoY2xpZW50RGF0YSkp
OworICAgIH0sIDApOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaAppbmRleCA5ZTgzYjNkYmFiODMzMjRjZDZlZDFmMGY4MzAxNTNhNzg2
ZDJlMmRhLi40ZWQwNmUyODY5MmI0MmM4YTRjOGI2ZmIxMGEwN2M0ZDIzZDVjOWI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC0xMDAs
NiArMTAwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZpcmVOb3RpZmljYXRpb25FdmVudChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9u
RGF0YSYsIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkV2ZW50VHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZSgpIGZpbmFsOwogICAgIHZvaWQg
Zm9jdXMoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50
RGF0YT4mJik+JiYpOworICAgIHZvaWQgbmF2aWdhdGUoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25z
dCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+LCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYm
KT4mJik7CiAKICAgICB2b2lkIGNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCkgZmluYWw7CiAg
ICAgdm9pZCB0ZXJtaW5hdGVEdWVUb1VucmVzcG9uc2l2ZW5lc3MoKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluCmluZGV4IDliMGM3MGY3N2RhYjcxYzAyODQxNzgwNTJkZDQ3MjJiODI3Y2FkMTQuLmZm
NGFhODFhN2JiNDEyZjIwMjlmMWQ0NjEwNWY4OGYxMmIzODYzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5p
bgpAQCAtMzYsNiArMzYsNyBAQCBtZXNzYWdlcyAtPiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24gTm90UmVmQ291bnRlZCB7CiAgICAgTWF0Y2hBbGwodWludDY0X3QgbWF0Y2hBbGxSZXF1
ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdv
cmtlcklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlP
cHRpb25zIG9wdGlvbnMpOwogICAgIENsYWltKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpF
eGNlcHRpb25EYXRhPiByZXN1bHQpCiAgICAgRm9jdXMoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXIgc2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIpIC0+IChzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiByZXN1bHQpCisgICAg
TmF2aWdhdGUoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgY2xpZW50
SWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIFVSTCB1cmwpIC0+IChFeHBlY3RlZDxzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4gcmVzdWx0
KQogICAgIFNldFNjcmlwdFJlc291cmNlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFVSTCBzY3JpcHRVUkwsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YTo6SW1wb3J0ZWRTY3JpcHQgc2NyaXB0KQogICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNlV29y
a2VyQ2xpZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGRlc3Rp
bmF0aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMgbWVzc2FnZSwg
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlLCBTdHJpbmcgc291cmNlT3Jp
Z2luKQogICAgIERpZEZhaWxIZWFydEJlYXRDaGVjayhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggNzA5NmFmMTgwZWFjNDk2NTc2
N2Q2ZTRhZDVlY2NlMzBkMDQ2MzRhNC4uODFmNjRiOGIwNzdhY2ZiNGJmNDM0MzNkZGQ2ZWEwYmRj
NTAxMTg5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0xODA1LDYgKzE4MDUsMTcgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpvcGVuV2luZG93RnJvbVNlcnZpY2VXb3JrZXIoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELAogICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CiB9CiAKK3ZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6bmF2aWdhdGVTZXJ2aWNlV29ya2VyQ2xpZW50KFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciBmcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRJZGVudGlmaWVyIGRvY3VtZW50SWRlbnRpZmllciwgY29uc3QgVVJMJiB1cmwsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4p
PiYmIGNhbGxiYWNrKQoreworICAgIGF1dG8qIHByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OnBy
b2Nlc3NGb3JJZGVudGlmaWVyKGRvY3VtZW50SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigp
KTsKKyAgICBhdXRvKiBmcmFtZSA9IHByb2Nlc3MgPyBwcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlk
ZW50aWZpZXIpIDogbnVsbHB0cjsKKyAgICBpZiAoIWZyYW1lKSB7CisgICAgICAgIGNhbGxiYWNr
KHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZnJhbWUtPm5hdmlnYXRlU2Vydmlj
ZVdvcmtlckNsaWVudChkb2N1bWVudElkZW50aWZpZXIsIHVybCwgV1RGTW92ZShjYWxsYmFjaykp
OworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNr
Z3JvdW5kKCkKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6QXBwbGljYXRp
b25EaWRFbnRlckJhY2tncm91bmQoKSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IGFmYWI1MmQzNjMzZTVk
NDA0ZWZkOTVlY2U2ZmFlOTcxZDFhZmFkZDguLjZkOTZkMDIzZjkzOTQ4ZWRkYTVjNmFkYzcyNDMy
ZGQ2ZGM0NTRlNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0zMDQsNiArMzA0LDggQEAgcHVibGljOgogCiAg
ICAgdm9pZCBvcGVuV2luZG93RnJvbVNlcnZpY2VXb3JrZXIoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNl
cnZpY2VXb3JrZXJPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mJik+JiYpOwogCisgICAgdm9pZCBuYXZpZ2F0ZVNlcnZp
Y2VXb3JrZXJDbGllbnQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPik+JiYpOworCiBwcml2
YXRlOgogICAgIGV4cGxpY2l0IE5ldHdvcmtQcm9jZXNzUHJveHkoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5Lm1lc3NhZ2VzLmluCmluZGV4IDBmN2YxMzU5NDMzNDEzNjlhZWFkYjkwYTg4ODlhMjBjNjNh
YTBlN2UuLjAyMWZiMWE1MzE0NGE2ZGYwMzBlYjZjZGEzMjRkZDUzOTEwYzQ2YjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTkzLDYgKzkzLDcgQEAgbWVzc2FnZXMgLT4gTmV0
d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAgICAgRGF0YVRhc2tEaWRDb21wbGV0
ZVdpdGhFcnJvcihXZWJLaXQ6OkRhdGFUYXNrSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yIGVycm9yKQogCiAgICAgT3BlbldpbmRvd0Zyb21TZXJ2aWNlV29ya2Vy
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIHVybFN0cmluZywgc3RydWN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBzZXJ2aWNlV29ya2VyT3JpZ2luKSAtPiAoc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gbmV3UGFnZSkKKyAgICBOYXZpZ2F0ZVNlcnZp
Y2VXb3JrZXJDbGllbnQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSWRlbnRpZmllciwg
V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgZG9jdW1lbnRJZGVudGlm
aWVyLCBVUkwgdXJsKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4g
cGFnZSkKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlz
aW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQ
YWdlUHJveHkuY3BwCmluZGV4IDYyYjg1YjcyNjNmMmE4MTI0NDQ0ZjBmZTI1Y2IyMjAyMjA0Mjdj
OGEuLjg4YjJlYTgzODY3MmFjNzE4NjVlYjY5YmNhZjVmYjIyY2EwMGE4N2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKQEAgLTIzOCw4
ICsyMzgsMTAgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ3JlYXRlTWFpbkZyYW1l
KEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQogCiAgICAgLy8gUmVzdG9yZSB0aGUgbWFpbiBmcmFt
ZSdzIGNvbW1pdHRlZCBVUkwgYXMgc29tZSBjbGllbnRzIG1heSByZWx5IG9uIGl0IHVudGlsIHRo
ZSBuZXh0IGxvYWQgaXMgY29tbWl0dGVkLgogICAgIFJlZlB0ciBwcmV2aW91c01haW5GcmFtZSA9
IG1fcGFnZS5tYWluRnJhbWUoKTsKLSAgICBpZiAocHJldmlvdXNNYWluRnJhbWUpCisgICAgaWYg
KHByZXZpb3VzTWFpbkZyYW1lKSB7CiAgICAgICAgIG1fbWFpbkZyYW1lLT5mcmFtZUxvYWRTdGF0
ZSgpLnNldFVSTChwcmV2aW91c01haW5GcmFtZS0+dXJsKCkpOworICAgICAgICBwcmV2aW91c01h
aW5GcmFtZS0+dHJhbnNmZXJOYXZpZ2F0aW9uQ2FsbGJhY2tUb0ZyYW1lKCptX21haW5GcmFtZSk7
CisgICAgfQogCiAgICAgLy8gTm9ybWFsbHksIG5vdGlmaWNhdGlvbiBvZiBhIHNlcnZlciByZWRp
cmVjdCBjb21lcyBmcm9tIHRoZSBXZWJDb250ZW50IHByb2Nlc3MuCiAgICAgLy8gSWYgd2UgYXJl
IHByb2Nlc3Mgc3dhcHBpbmcgaW4gcmVzcG9uc2UgdG8gYSBzZXJ2ZXIgcmVkaXJlY3QgdGhlbiB0
aGF0IG5vdGlmaWNhdGlvbiB3aWxsIG5vdCBjb21lIGZyb20gdGhlIG5ldyBXZWJDb250ZW50IHBy
b2Nlc3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCmluZGV4IGQ0
NGE1ZGJlNmEzZjI2NjMwYjM0OTEzMjQ0ZTdlNDNiMmMxZjE2MzEuLjU4NDNjOWVmNDcxNWM2NmE1
MDllMTg0ZGFiNDg4OTBlZTAxNjQ0ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkZyYW1lUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZy
YW1lUHJveHkuY3BwCkBAIC01OCw2ICs1OCw5IEBAIFdlYkZyYW1lUHJveHk6On5XZWJGcmFtZVBy
b3h5KCkKICNpZiBQTEFURk9STShHVEspCiAgICAgV2ViUGFzdGVib2FyZFByb3h5OjpzaW5nbGV0
b24oKS5kaWREZXN0cm95RnJhbWUodGhpcyk7CiAjZW5kaWYKKworICAgIGlmIChtX25hdmlnYXRl
Q2FsbGJhY2spCisgICAgICAgIG1fbmF2aWdhdGVDYWxsYmFjayh7IH0pOwogfQogCiB2b2lkIFdl
YkZyYW1lUHJveHk6OndlYlByb2Nlc3NXaWxsU2h1dERvd24oKQpAQCAtNjgsNiArNzEsOSBAQCB2
b2lkIFdlYkZyYW1lUHJveHk6OndlYlByb2Nlc3NXaWxsU2h1dERvd24oKQogICAgICAgICBtX2Fj
dGl2ZUxpc3RlbmVyLT5pZ25vcmUoKTsKICAgICAgICAgbV9hY3RpdmVMaXN0ZW5lciA9IG51bGxw
dHI7CiAgICAgfQorCisgICAgaWYgKG1fbmF2aWdhdGVDYWxsYmFjaykKKyAgICAgICAgbV9uYXZp
Z2F0ZUNhbGxiYWNrKHsgfSk7CiB9CiAKIGJvb2wgV2ViRnJhbWVQcm94eTo6aXNNYWluRnJhbWUo
KSBjb25zdApAQCAtNzgsNiArODQsMzggQEAgYm9vbCBXZWJGcmFtZVByb3h5Ojppc01haW5GcmFt
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHRoaXMgPT0gbV9wYWdlLT5tYWluRnJhbWUoKSB8fCAobV9w
YWdlLT5wcm92aXNpb25hbFBhZ2VQcm94eSgpICYmIHRoaXMgPT0gbV9wYWdlLT5wcm92aXNpb25h
bFBhZ2VQcm94eSgpLT5tYWluRnJhbWUoKSk7CiB9CiAKK3N0ZDo6b3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IFdlYkZyYW1lUHJveHk6OnBhZ2VJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICBpZiAo
IW1fcGFnZSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gbV9wYWdlLT53ZWJQYWdl
SUQoKTsKK30KKwordm9pZCBXZWJGcmFtZVByb3h5OjpuYXZpZ2F0ZVNlcnZpY2VXb3JrZXJDbGll
bnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgZG9jdW1lbnRJZGVu
dGlmaWVyLCBjb25zdCBVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPik+JiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFtX3BhZ2UpIHsK
KyAgICAgICAgY2FsbGJhY2soeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1f
cGFnZS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpOYXZpZ2F0ZVNlcnZp
Y2VXb3JrZXJDbGllbnQgeyBkb2N1bWVudElkZW50aWZpZXIsIHVybCB9LCBbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHVybCwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0oYm9vbCByZXN1bHQpIG11dGFibGUgeworICAgICAgICBpZiAoIXJlc3VsdCkgeworICAgICAg
ICAgICAgY2FsbGJhY2soeyB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICghbV9hY3RpdmVMaXN0ZW5lcikgeworICAgICAgICAgICAgY2FsbGJhY2socGFn
ZUlkZW50aWZpZXIoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBpZiAobV9uYXZpZ2F0ZUNhbGxiYWNrKQorICAgICAgICAgICAgbV9uYXZpZ2F0ZUNhbGxiYWNr
KHsgfSk7CisKKyAgICAgICAgbV9uYXZpZ2F0ZUNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7
CisgICAgfSk7Cit9CisKIHZvaWQgV2ViRnJhbWVQcm94eTo6bG9hZFVSTChjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKIHsKICAgICBpZiAoIW1fcGFnZSkKQEAgLTk1LDcg
KzEzMyw3IEBAIHZvaWQgV2ViRnJhbWVQcm94eTo6bG9hZERhdGEoY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUCiAgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpMb2FkRGF0YUluRnJhbWUoZGF0YSwgTUlNRVR5cGUsIGVuY29kaW5nTmFt
ZSwgYmFzZVVSTCwgbV9mcmFtZUlEKSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVQcm94eTo6c3RvcExv
YWRpbmcoKSBjb25zdAordm9pZCBXZWJGcmFtZVByb3h5OjpzdG9wTG9hZGluZygpCiB7CiAgICAg
aWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKQEAgLTEwNCw2ICsxNDIsOSBAQCB2b2lkIFdl
YkZyYW1lUHJveHk6OnN0b3BMb2FkaW5nKCkgY29uc3QKICAgICAgICAgcmV0dXJuOwogCiAgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdG9wTG9hZGluZ0ZyYW1lKG1fZnJhbWVJ
RCkpOworCisgICAgaWYgKG1fbmF2aWdhdGVDYWxsYmFjaykKKyAgICAgICAgbV9uYXZpZ2F0ZUNh
bGxiYWNrKHsgfSk7CiB9CiAgICAgCiBib29sIFdlYkZyYW1lUHJveHk6OmNhblByb3ZpZGVTb3Vy
Y2UoKSBjb25zdApAQCAtMTYwLDYgKzIwMSw5IEBAIHZvaWQgV2ViRnJhbWVQcm94eTo6ZGlkUmVj
ZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFVSTCYgdXJsKQogdm9p
ZCBXZWJGcmFtZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkKCkKIHsKICAgICBtX2ZyYW1l
TG9hZFN0YXRlLmRpZEZhaWxQcm92aXNpb25hbExvYWQoKTsKKworICAgIGlmIChtX25hdmlnYXRl
Q2FsbGJhY2spCisgICAgICAgIG1fbmF2aWdhdGVDYWxsYmFjayh7IH0pOwogfQogCiB2b2lkIFdl
YkZyYW1lUHJveHk6OmRpZENvbW1pdExvYWQoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgV2Vi
Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1
bWVudCkKQEAgLTE3NSwxMSArMjE5LDE3IEBAIHZvaWQgV2ViRnJhbWVQcm94eTo6ZGlkQ29tbWl0
TG9hZChjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBXZWJDZXJ0aWZpY2F0ZUluZm8mCiB2b2lk
IFdlYkZyYW1lUHJveHk6OmRpZEZpbmlzaExvYWQoKQogewogICAgIG1fZnJhbWVMb2FkU3RhdGUu
ZGlkRmluaXNoTG9hZCgpOworCisgICAgaWYgKG1fbmF2aWdhdGVDYWxsYmFjaykKKyAgICAgICAg
bV9uYXZpZ2F0ZUNhbGxiYWNrKHBhZ2VJZGVudGlmaWVyKCkpOwogfQogCiB2b2lkIFdlYkZyYW1l
UHJveHk6OmRpZEZhaWxMb2FkKCkKIHsKICAgICBtX2ZyYW1lTG9hZFN0YXRlLmRpZEZhaWxMb2Fk
KCk7CisKKyAgICBpZiAobV9uYXZpZ2F0ZUNhbGxiYWNrKQorICAgICAgICBtX25hdmlnYXRlQ2Fs
bGJhY2soeyB9KTsKIH0KIAogdm9pZCBXZWJGcmFtZVByb3h5OjpkaWRTYW1lRG9jdW1lbnROYXZp
Z2F0aW9uKGNvbnN0IFVSTCYgdXJsKQpAQCAtMTk3LDYgKzI0Nyw5IEBAIFdlYkZyYW1lUG9saWN5
TGlzdGVuZXJQcm94eSYgV2ViRnJhbWVQcm94eTo6c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KENv
bXBsZXRpb25ICiAgICAgaWYgKG1fYWN0aXZlTGlzdGVuZXIpCiAgICAgICAgIG1fYWN0aXZlTGlz
dGVuZXItPmlnbm9yZSgpOwogICAgIG1fYWN0aXZlTGlzdGVuZXIgPSBXZWJGcmFtZVBvbGljeUxp
c3RlbmVyUHJveHk6OmNyZWF0ZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChQb2xpY3lB
Y3Rpb24gYWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyogcG9saWNpZXMsIFByb2Nlc3NTd2Fw
UmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNh
ZmVCcm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZywgc3RkOjpvcHRpb25hbDxO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikg
bXV0YWJsZSB7CisgICAgICAgIGlmIChhY3Rpb24gIT0gUG9saWN5QWN0aW9uOjpVc2UgJiYgbV9u
YXZpZ2F0ZUNhbGxiYWNrKQorICAgICAgICAgICAgbV9uYXZpZ2F0ZUNhbGxiYWNrKHBhZ2VJZGVu
dGlmaWVyKCkpOworCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGFjdGlvbiwgcG9saWNpZXMs
IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFdURk1vdmUoc2FmZUJyb3dzaW5nV2Fybmlu
ZyksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOwogICAgICAgICBtX2FjdGl2ZUxpc3Rl
bmVyID0gbnVsbHB0cjsKICAgICB9LCBleHBlY3RTYWZlQnJvd3NpbmdSZXN1bHQsIGV4cGVjdEFw
cEJvdW5kRG9tYWluUmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkZyYW1lUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHku
aAppbmRleCAzOTFiMDI3MzYyODM0MWVkYWE4ODMwYjM3NGYwZmIxMzEyNDAxNzJhLi42MDZlYzAy
ZGQ0OWYxNWU3NzUzMmRiNTIzZWQyMTc4ZGRmMjQzOTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViRnJhbWVQcm94eS5oCkBAIC03NywxMCArNzcsMTIgQEAgcHVibGljOgogCiAgICAgRnJh
bWVMb2FkU3RhdGUmIGZyYW1lTG9hZFN0YXRlKCkgeyByZXR1cm4gbV9mcmFtZUxvYWRTdGF0ZTsg
fQogCisgICAgdm9pZCBuYXZpZ2F0ZVNlcnZpY2VXb3JrZXJDbGllbnQoV2ViQ29yZTo6U2NyaXB0
RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIsIGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4pPiYmKTsKKwogICAg
IHZvaWQgbG9hZFVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyID0gU3RyaW5n
KCkpOwogICAgIC8vIFN1YiBmcmFtZXMgb25seS4gRm9yIG1haW4gZnJhbWVzLCB1c2UgV2ViUGFn
ZVByb3h5Ojpsb2FkRGF0YS4KICAgICB2b2lkIGxvYWREYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1l
LCBjb25zdCBVUkwmIGJhc2VVUkwpOwotICAgIHZvaWQgc3RvcExvYWRpbmcoKSBjb25zdDsKKyAg
ICB2b2lkIHN0b3BMb2FkaW5nKCk7CiAKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0
dXJuIG1fZnJhbWVMb2FkU3RhdGUudXJsKCk7IH0KICAgICBjb25zdCBVUkwmIHByb3Zpc2lvbmFs
VVJMKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUxvYWRTdGF0ZS5wcm92aXNpb25hbFVSTCgpOyB9
CkBAIC0xMjgsOSArMTMwLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbGxhcHNlU2VsZWN0aW9u
KCk7CiAjZW5kaWYKIAorICAgIHZvaWQgdHJhbnNmZXJOYXZpZ2F0aW9uQ2FsbGJhY2tUb0ZyYW1l
KFdlYkZyYW1lUHJveHkmIGZyYW1lKSB7IGZyYW1lLm1fbmF2aWdhdGVDYWxsYmFjayA9IFdURk1v
dmUobV9uYXZpZ2F0ZUNhbGxiYWNrKTsgfQorCiBwcml2YXRlOgogICAgIFdlYkZyYW1lUHJveHko
V2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKIAorICAgIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJZGVudGlmaWVyKCkgY29uc3Q7CisK
ICAgICBXZWFrUHRyPFdlYlBhZ2VQcm94eT4gbV9wYWdlOwogCiAgICAgRnJhbWVMb2FkU3RhdGUg
bV9mcmFtZUxvYWRTdGF0ZTsKQEAgLTE0NCw2ICsxNTAsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklORykKICAgICBXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXIgbV9jb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI7CiAjZW5kaWYKKyAgICBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+KT4g
bV9uYXZpZ2F0ZUNhbGxiYWNrOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggNjRmYmJhNGZhY2Y3MmYxOWMyOWI3MzM4
MjAyMjRmODM3MGZmMTEzMC4uNWY0NDlkMzIyZGIwOWQ0YTVjZmRlNzBiNDYyNzAwMTkzNjk5Mzg1
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMzU1LDYgKzM1NSwx
NyBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpjbGFpbShTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySQogICAgIH0pOwogfQogCit2b2lkIFdlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjpuYXZpZ2F0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRl
bnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgY29uc3QgVVJMJiB1cmwsIE5hdmlnYXRlQ2FsbGJhY2smJiBjYWxs
YmFjaykKK3sKKyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6TmF2aWdhdGUg
eyBjbGllbnRJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgdXJsIH0sIFtjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAg
ICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKFdURk1v
dmUocmVzdWx0KS5lcnJvcigpLnRvRXhjZXB0aW9uKCkpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVzdWx0KS52YWx1ZSgpKTsKKyAg
ICB9KTsKK30KKwogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Zm9jdXMoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRE
YXRhPiYmKT4mJiBjYWxsYmFjaykKIHsKICAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
LT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6Rm9jdXMgeyBjbGllbnRJZGVudGlmaWVyIH0sIFdURk1vdmUoY2FsbGJhY2spKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCmluZGV4IDNiNTA1YzcyMDBjM2NmMDAzY2E4ZTJl
M2FiNDVhMDIyYmFjN2U4ODQuLmFiNzM4MTljYTFiMzA3N2E4MDdiNjUwM2ZlNTZhN2M1MzlmMmYw
MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaApAQCAtODIsNiArODIsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgbWF0Y2hBbGwoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMmLCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50c01hdGNoQWxsQ2FsbGJhY2smJikgZmluYWw7CiAgICAg
dm9pZCBjbGFpbShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChXZWJDb3JlOjpFeGNlcHRpb25Pcjx2b2lkPiYmKT4mJikgZmluYWw7CiAgICAg
dm9pZCBmb2N1cyhXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJD
bGllbnREYXRhPiYmKT4mJikgZmluYWw7CisgICAgdm9pZCBuYXZpZ2F0ZShXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIsIGNvbnN0IFVSTCYsIE5hdmlnYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBz
a2lwV2FpdGluZyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKICAgICB2b2lkIHNldFNjcmlwdFJlc291cmNlKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBjb25zdCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0JikgZmluYWw7CiAgICAgYm9v
bCBpc1Rocm90dGxlYWJsZSgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBhMmUxYzEzMTUwNTI3YTJlMDE2NTA3MTJiNDlk
ZTdlZTkxZTY5NTBjLi44Zjk2ZGE5ODdiYmE4YWRiMmIxMGRhZjc5YzY3MTk1YTI1MmU0YWRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNjQz
OSw2ICs2NDM5LDIyIEBAIHZvaWQgV2ViUGFnZTo6aW50ZXJhY3Rpb25SZWdpb25zKEZsb2F0UmVj
dCByZWN0SW5Db250ZW50Q29vcmRpbmF0ZXMsIENvbXBsZXRpb25ICiAgICAgY29tcGxldGlvbkhh
bmRsZXIoV2ViQ29yZTo6aW50ZXJhY3Rpb25SZWdpb25zKCptX3BhZ2UsIHJlY3RJbkNvbnRlbnRD
b29yZGluYXRlcykpOwogfQogCit2b2lkIFdlYlBhZ2U6Om5hdmlnYXRlU2VydmljZVdvcmtlckNs
aWVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBkb2N1bWVudElkZW50aWZpZXIs
IGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNr
KQoreworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBSZWZQdHIgZG9jdW1lbnQgPSBE
b2N1bWVudDo6YWxsRG9jdW1lbnRzTWFwKCkuZ2V0KGRvY3VtZW50SWRlbnRpZmllcik7CisgICAg
aWYgKCFkb2N1bWVudCkgeworICAgICAgICBjYWxsYmFjayhmYWxzZSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgZG9jdW1lbnQtPm5hdmlnYXRlRnJvbVNlcnZpY2VXb3JrZXIodXJsLCBX
VEZNb3ZlKGNhbGxiYWNrKSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShkb2N1bWVudElkZW50
aWZpZXIpOworICAgIFVOVVNFRF9QQVJBTSh1cmwpOworICAgIGNhbGxiYWNrKGZhbHNlKTsKKyNl
bmRpZgorfQorCiB2b2lkIFdlYlBhZ2U6OnNldEFsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVy
KGJvb2wgYWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIpCiB7CiAgICAgaWYgKGFsd2F5c1No
b3dzSG9yaXpvbnRhbFNjcm9sbGVyID09IG1fYWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMWVlNzRm
NGQ5MjM3ZWEwODljMjg5ZmMxMTRhNjA5NzM4YzM1OTI1Yy4uODUxZDM0YjRhMTgwZDZjMzdkZDg2
YTE5MjYwMTY2ZjlhYjlkNTViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaApAQCAtOTQ1LDYgKzk0NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEVuZFVz
ZXJUcmlnZ2VyZWRTZWxlY3Rpb25DaGFuZ2VzKCk7CiAKICAgICB2b2lkIGludGVyYWN0aW9uUmVn
aW9ucyhXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdEluQ29udGVudENvb3JkaW5hdGVzLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpJbnRlcmFjdGlvblJlZ2lvbj4pPiYmKTsK
KyAgICB2b2lkIG5hdmlnYXRlU2VydmljZVdvcmtlckNsaWVudChXZWJDb3JlOjpTY3JpcHRFeGVj
dXRpb25Db250ZXh0SWRlbnRpZmllciwgY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHBsYXRmb3JtSW5p
dGlhbGl6ZUFjY2Vzc2liaWxpdHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDJmYmRlYzhiOGNjMjRlYTIxMmJh
MmVhYzI1Y2M5ZTNkZWRhZTU2NjYuLmVlODExMzhjNGJmYTE1YTMyOGQ5YTZhODU4NTE4NGZhMjNh
MzM5NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgpAQCAtNjgzLDQgKzY4Myw2IEBAIEdlbmVyYXRlU3ludGhldGljRWRp
dGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRU
eXBlCiAgICAgU2Nyb2xsVG9SZWN0KFdlYkNvcmU6OkZsb2F0UmVjdCB0YXJnZXRSZWN0LCBXZWJD
b3JlOjpGbG9hdFBvaW50IG9yaWdpbikKIAogICAgIEludGVyYWN0aW9uUmVnaW9ucyhXZWJDb3Jl
OjpGbG9hdFJlY3QgcmVjdEluQ29udGVudENvb3JkaW5hdGVzKSAtPiAoVmVjdG9yPFdlYkNvcmU6
OkludGVyYWN0aW9uUmVnaW9uPiByZWdpb25zKQorCisgICAgTmF2aWdhdGVTZXJ2aWNlV29ya2Vy
Q2xpZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGRvY3VtZW50
SWRlbnRpZmllciwgVVJMIHVybCkgLT4gKGJvb2wgcmVzdWx0KQogfQpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDhmNWFjMjNlMjk3YmQ2YmM3M2U3
Mjc4MDhhMmM2MWM1YmFiM2Y0ZDEuLmI4NjdkZDFmMzRhMWJjYjQ5NTM1MWM3NTE2Mjk5Yjg1Mjlh
Y2FhYzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMiBAQAorMjAyMi0wNC0wNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQubmF2
aWdhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
ODczOAorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW06CisKIDIw
MjItMDQtMDUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFNl
cnZpY2VXb3JrZXJDbGllbnRzLm9wZW5XaW5kb3cgc2hvdWxkIG5vdCBuZWVkIHRvIGdldCBhbGwg
Y2xpZW50cyBhc3luY2hyb25vdXNseSB0byByZXNvbHZlIGl0cyBwcm9taXNlCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNp
Yy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtl
ckJhc2ljLm1tCmluZGV4IDU5Y2JlMGQ1ZDFkMGM0NzNiZjlmMDUyOGZlZGExY2JiNzU2OTg2MmUu
LmJmMWMxYTAxZTMxMWM1NWQxMTRlMGFjMTg1MWNiNTgwMTZhOTQ0MjIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtl
ckJhc2ljLm1tCkBAIC0zMDQ3LDMgKzMwNDcsMTcyIEBAIFRFU1QoU2VydmljZVdvcmtlciwgb3Bl
bldpbmRvd1dpdGhvdXREZWxlZ2F0ZSkKICAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6
QCJvcGVuV2luZG93Q2xpZW50KCkiIGNvbXBsZXRpb25IYW5kbGVyOiBuaWxdOwogICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiB9CisKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBT
ZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50TmF2aWdhdGVNYWluID0KKyI8ZGl2PnRlc3QgcGFnZTwv
ZGl2PiIKKyI8c2NyaXB0PiIKKyJsZXQgd29ya2VyOyIKKyJhc3luYyBmdW5jdGlvbiByZWdpc3Rl
clNlcnZpY2VXb3JrZXIoKSB7IgorIiAgICB0cnkgeyIKKyIgICAgICAgIGNvbnN0IHJlZ2lzdHJh
dGlvbiA9IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKTsi
CisiICAgICAgICBpZiAocmVnaXN0cmF0aW9uLmFjdGl2ZSkgeyIKKyIgICAgICAgICAgICB3b3Jr
ZXIgPSByZWdpc3RyYXRpb24uYWN0aXZlOyIKKyIgICAgICAgICAgICBhbGVydCgnYWxyZWFkeSBh
Y3RpdmUnKTsiCisiICAgICAgICAgICAgcmV0dXJuOyIKKyIgICAgICAgIH0iCisiICAgICAgICB3
b3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFsbGluZzsiCisiICAgICAgICB3b3JrZXIuYWRkRXZl
bnRMaXN0ZW5lcignc3RhdGVjaGFuZ2UnLCAoKSA9PiB7IgorIiAgICAgICAgICAgIGlmICh3b3Jr
ZXIuc3RhdGUgPT0gJ2FjdGl2YXRlZCcpIgorIiAgICAgICAgICAgICAgICBhbGVydCgnc3VjY2Vz
c2Z1bGx5IHJlZ2lzdGVyZWQnKTsiCisiICAgICAgICB9KTsiCisiICAgIH0gY2F0Y2goZSkgeyIK
KyIgICAgICAgIGFsZXJ0KCdFeGNlcHRpb246ICcgKyBlKTsiCisiICAgIH0iCisifSIKKyJ3aW5k
b3cub25sb2FkID0gcmVnaXN0ZXJTZXJ2aWNlV29ya2VyOyIKKyIiCisiZnVuY3Rpb24gbmF2aWdh
dGVPdGhlckNsaWVudFRvVVJMKHVybCkgeyIKKyIgICAgd29ya2VyLnBvc3RNZXNzYWdlKHtuYXZp
Z2F0ZU90aGVyQ2xpZW50VG9VUkw6IHVybH0pOyIKKyIgICAgbmF2aWdhdG9yLnNlcnZpY2VXb3Jr
ZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiB7IgorIiAgICAgICAgYWxlcnQoZXZlbnQuZGF0YSk7
IgorIiAgICB9OyIKKyJ9IgorIjwvc2NyaXB0PiJfczsKKworc3RhdGljIGNvbnN0ZXhwciBhdXRv
IFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnROYXZpZ2F0ZUpTID0KKyJzZWxmLmFkZEV2ZW50TGlz
dGVuZXIoJ21lc3NhZ2UnLCBhc3luYyAoZXZlbnQpID0+IHsiCisiICAgaWYgKGV2ZW50LmRhdGEg
JiYgZXZlbnQuZGF0YS5uYXZpZ2F0ZU90aGVyQ2xpZW50VG9VUkwpIHsiCisiICAgICAgIGxldCBv
dGhlckNsaWVudDsiCisiICAgICAgIGxldCBjdXJyZW50Q2xpZW50cyA9IGF3YWl0IHNlbGYuY2xp
ZW50cy5tYXRjaEFsbCgpOyIKKyIgICAgICAgZm9yIChsZXQgY2xpZW50IG9mIGN1cnJlbnRDbGll
bnRzKSB7IgorIiAgICAgICAgICAgaWYgKGNsaWVudC5pZCAhPT0gZXZlbnQuc291cmNlLmlkKSIK
KyIgICAgICAgICAgICAgICBvdGhlckNsaWVudCA9IGNsaWVudDsiCisiICAgICAgIH0iCisiICAg
ICAgIGlmICghb3RoZXJDbGllbnQpIHsiCisiICAgICAgICAgICBldmVudC5zb3VyY2UucG9zdE1l
c3NhZ2UoJ2ZhaWxlZCwgbm8gb3RoZXIgY2xpZW50LCBjbGllbnQgbnVtYmVyID0gJyArIGN1cnJl
bnRDbGllbnRzLmxlbmd0aCk7IgorIiAgICAgICAgICAgcmV0dXJuOyIKKyIgICAgICAgfSIKKyIg
ICAgICAgYXdhaXQgb3RoZXJDbGllbnQubmF2aWdhdGUoZXZlbnQuZGF0YS5uYXZpZ2F0ZU90aGVy
Q2xpZW50VG9VUkwpLnRoZW4oKGNsaWVudCkgPT4geyIKKyIgICAgICAgICAgIGV2ZW50LnNvdXJj
ZS5wb3N0TWVzc2FnZShjbGllbnQgPyAnY2xpZW50JyA6ICdub25lJyk7IgorIiAgICAgICB9LCAo
ZSkgPT4geyIKKyIgICAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgnZmFpbGVkJyk7
IgorIiAgICAgICB9KTsiCisiICAgICAgIHJldHVybjsiCisiICAgfSIKKyJ9KTsiX3M7CisKKwor
QGludGVyZmFjZSBTZXJ2aWNlV29ya2VyUFNPTk5hdmlnYXRpb25EZWxlZ2F0ZSA6IE5TT2JqZWN0
IDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+IHsKKyAgICBAcHVibGljIHZvaWQgKF5kZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKShXS05hdmlnYXRpb25BY3Rpb24gKiwgdm9pZCAo
XikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KSk7CisgICAgQHB1YmxpYyB2b2lkICheZGlkU3Rh
cnRQcm92aXNpb25hbE5hdmlnYXRpb25IYW5kbGVyKSgpOworICAgIEBwdWJsaWMgdm9pZCAoXmRp
ZENvbW1pdE5hdmlnYXRpb25IYW5kbGVyKSgpOworfQorQGVuZAorCitAaW1wbGVtZW50YXRpb24g
U2VydmljZVdvcmtlclBTT05OYXZpZ2F0aW9uRGVsZWdhdGUKKworLSAoaW5zdGFuY2V0eXBlKSBp
bml0Cit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICByZXR1cm4gc2VsZjsKK30KKwor
LSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gZGVjaXNp
b25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKWRlY2lzaW9uSGFu
ZGxlcgoreworICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxv
dyk7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6KFdLTmF2aWdhdGlvblJlc3BvbnNlICopbmF2aWdhdGlv
blJlc3BvbnNlIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQ
b2xpY3kpKWRlY2lzaW9uSGFuZGxlcgoreworICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRp
b25SZXNwb25zZVBvbGljeUFsbG93KTsKK30KKworQGVuZAorCitURVNUKFNlcnZpY2VXb3JrZXIs
IFdpbmRvd0NsaWVudE5hdmlnYXRlKQoreworICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93
V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CisKKyAgICAvLyBTdGFydCB3aXRoIGEg
Y2xlYW4gc2xhdGUgZGF0YSBzdG9yZQorICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHRE
YXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0
ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9u
SGFuZGxlcjpeKCkgeworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIGF1dG8g
Y29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7CisgICAgZm9yIChfV0tFeHBlcmltZW50YWxGZWF0dXJlICpmZWF0dXJlIGluIFtXS1By
ZWZlcmVuY2VzIF9leHBlcmltZW50YWxGZWF0dXJlc10pIHsKKyAgICAgICAgaWYgKFtmZWF0dXJl
LmtleSBpc0VxdWFsVG9TdHJpbmc6QCJDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuYWJsZWQiXSkK
KyAgICAgICAgICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEVuYWJsZWQ6WUVT
IGZvckV4cGVyaW1lbnRhbEZlYXR1cmU6ZmVhdHVyZV07CisgICAgICAgIGVsc2UgaWYgKFtmZWF0
dXJlLmtleSBpc0VxdWFsVG9TdHJpbmc6QCJDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5RW5hYmxl
ZCJdKQorICAgICAgICAgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxl
ZDpZRVMgZm9yRXhwZXJpbWVudGFsRmVhdHVyZTpmZWF0dXJlXTsKKyAgICB9CisKKyAgICBhdXRv
IHdlYlZpZXcxID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCAzMDAsIDMwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdl
dCgpIGFkZFRvV2luZG93OllFU10pOworICAgIGF1dG8gd2ViVmlldzIgPSBhZG9wdE5TKFtbVGVz
dFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDMwMCwgMzAw
KSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgYWRkVG9XaW5kb3c6WUVTXSk7CisK
KyAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7CisgICAgICAgIHsgIi8iX3Ms
IHsgU2VydmljZVdvcmtlcldpbmRvd0NsaWVudE5hdmlnYXRlTWFpbiB9IH0sCisgICAgICAgIHsg
Ii8/dGVzdCJfcywgeyBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50TmF2aWdhdGVNYWluIH0gfSwK
KyAgICAgICAgeyAiLz9zd2FwIl9zLCB7IHt7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlv
bi9odG1sIl9zIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5Il9zLCAic2FtZS1vcmln
aW4iX3MgfSB9LCBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50TmF2aWdhdGVNYWluIH0gfSwKKyAg
ICAgICAgeyAiL3N3LmpzIl9zLCB7IHt7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9q
YXZhc2NyaXB0Il9zIH19LCBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50TmF2aWdhdGVKUyB9IH0K
KyAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cCwgbnVsbHB0
ciwgbnVsbHB0ciwgODA5MSk7CisKKyAgICBbd2ViVmlldzEgbG9hZFJlcXVlc3Q6c2VydmVyLnJl
cXVlc3QoKV07CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3MSBfdGVzdF93YWl0Rm9yQWxl
cnRdLCAic3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQiKTsKKyAgICBbd2ViVmlldzIgbG9hZFJlcXVl
c3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3MiBfdGVz
dF93YWl0Rm9yQWxlcnRdLCAiYWxyZWFkeSBhY3RpdmUiKTsKKworICAgIGF1dG8gbmF2aWdhdGlv
bkRlbGVnYXRlID0gYWRvcHROUyhbW1NlcnZpY2VXb3JrZXJQU09OTmF2aWdhdGlvbkRlbGVnYXRl
IGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcyIHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpuYXZp
Z2F0aW9uRGVsZWdhdGUuZ2V0KCldOworCisgICAgYXV0byAqYmFzZVVSTCA9IFtbc2VydmVyLnJl
cXVlc3QoKSBVUkxdIGFic29sdXRlU3RyaW5nXTsKKworICAgIFt3ZWJWaWV3MSBldmFsdWF0ZUph
dmFTY3JpcHQ6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJuYXZpZ2F0ZU90aGVyQ2xpZW50
VG9VUkwoJyVAJykiLCBiYXNlVVJMXSBjb21wbGV0aW9uSGFuZGxlcjogbmlsXTsKKyAgICBFWFBF
Q1RfV0tfU1RSRVEoW3dlYlZpZXcxIF90ZXN0X3dhaXRGb3JBbGVydF0sICJjbGllbnQiKTsKKwor
ICAgIFt3ZWJWaWV3MSBldmFsdWF0ZUphdmFTY3JpcHQ6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCJuYXZpZ2F0ZU90aGVyQ2xpZW50VG9VUkwoJyVAI3Rlc3QnKSIsIGJhc2VVUkxdIGNvbXBs
ZXRpb25IYW5kbGVyOiBuaWxdOworICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldzEgX3Rlc3Rf
d2FpdEZvckFsZXJ0XSwgImNsaWVudCIpOworCisgICAgW3dlYlZpZXcxIGV2YWx1YXRlSmF2YVNj
cmlwdDpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIm5hdmlnYXRlT3RoZXJDbGllbnRUb1VS
TCgnJUA/dGVzdCcpIiwgYmFzZVVSTF0gY29tcGxldGlvbkhhbmRsZXI6IG5pbF07CisgICAgRVhQ
RUNUX1dLX1NUUkVRKFt3ZWJWaWV3MSBfdGVzdF93YWl0Rm9yQWxlcnRdLCAiY2xpZW50Iik7CisK
KyAgICBbd2ViVmlldzEgZXZhbHVhdGVKYXZhU2NyaXB0OltOU1N0cmluZyBzdHJpbmdXaXRoRm9y
bWF0OkAibmF2aWdhdGVPdGhlckNsaWVudFRvVVJMKCclQD9zd2FwJykiLCBiYXNlVVJMXSBjb21w
bGV0aW9uSGFuZGxlcjogbmlsXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcxIF90ZXN0
X3dhaXRGb3JBbGVydF0sICJjbGllbnQiKTsKK30KKworVEVTVChTZXJ2aWNlV29ya2VyLCBXaW5k
b3dDbGllbnROYXZpZ2F0ZUNyb3NzT3JpZ2luKQoreworICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUg
X2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CisKKyAgICAvLyBTdGFydCB3
aXRoIGEgY2xlYW4gc2xhdGUgZGF0YSBzdG9yZQorICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRl
ZmF1bHREYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxs
V2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21w
bGV0aW9uSGFuZGxlcjpeKCkgeworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAg
IGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7CisKKyAgICBhdXRvIHdlYlZpZXcxID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAzMDAsIDMwMCkgY29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIGFkZFRvV2luZG93OllFU10pOworICAgIGF1dG8g
d2ViVmlldzIgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDMwMCwgMzAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0
KCkgYWRkVG9XaW5kb3c6WUVTXSk7CisKKyAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNl
cnZlcjEoeworICAgICAgICB7ICIvIl9zLCB7IFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnROYXZp
Z2F0ZU1haW4gfSB9LAorICAgICAgICB7ICIvP3Rlc3QiX3MsIHsgU2VydmljZVdvcmtlcldpbmRv
d0NsaWVudE5hdmlnYXRlTWFpbiB9IH0sCisgICAgICAgIHsgIi8/c3dhcCJfcywgeyB7eyAiQ29u
dGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vaHRtbCJfcyB9LCB7ICJDcm9zcy1PcmlnaW4tT3Bl
bmVyLVBvbGljeSJfcywgInNhbWUtb3JpZ2luIl9zIH0gfSwgU2VydmljZVdvcmtlcldpbmRvd0Ns
aWVudE5hdmlnYXRlTWFpbiB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVu
dC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwgU2VydmljZVdvcmtlcldp
bmRvd0NsaWVudE5hdmlnYXRlSlMgfSB9CisgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZl
cjo6UHJvdG9jb2w6Okh0dHAsIG51bGxwdHIsIG51bGxwdHIsIDgwOTEpOworCisgICAgVGVzdFdl
YktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIyKHsKKyAgICAgICAgeyAiLyJfcywgeyBTZXJ2aWNl
V29ya2VyV2luZG93Q2xpZW50TmF2aWdhdGVNYWluIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9z
LCB7IHt7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH19LCBT
ZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50TmF2aWdhdGVKUyB9IH0KKyAgICB9LCBUZXN0V2ViS2l0
QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cCwgbnVsbHB0ciwgbnVsbHB0ciwgOTA5MSk7
CisKKyAgICBbd2ViVmlldzEgbG9hZFJlcXVlc3Q6c2VydmVyMS5yZXF1ZXN0KCldOworICAgIEVY
UEVDVF9XS19TVFJFUShbd2ViVmlldzEgX3Rlc3Rfd2FpdEZvckFsZXJ0XSwgInN1Y2Nlc3NmdWxs
eSByZWdpc3RlcmVkIik7CisgICAgW3dlYlZpZXcyIGxvYWRSZXF1ZXN0OnNlcnZlcjEucmVxdWVz
dCgpXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcyIF90ZXN0X3dhaXRGb3JBbGVydF0s
ICJhbHJlYWR5IGFjdGl2ZSIpOworICAgIFt3ZWJWaWV3MSBldmFsdWF0ZUphdmFTY3JpcHQ6W05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJuYXZpZ2F0ZU90aGVyQ2xpZW50VG9VUkwoJyVAJyki
LCBbW3NlcnZlcjIucmVxdWVzdCgpIFVSTF0gYWJzb2x1dGVTdHJpbmddXSBjb21wbGV0aW9uSGFu
ZGxlcjogbmlsXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcxIF90ZXN0X3dhaXRGb3JB
bGVydF0sICJub25lIik7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjAyZjYxYzYxNmY4ZjgwMmNjNGExODI1Y2NlMjVh
ZGFlMDMxOTM4ZS4uOGQzYWMzMjdmMWI4Zjg5MWVjODU4NzNiZGY2ODQzODRlNDVkNDhlYyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE3IEBACisyMDIyLTA0LTA2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5u
YXZpZ2F0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM4NzM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgKiBo
dHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvbmF2aWdhdGUtaWZyYW1lcy13aW5kb3ctY2xpZW50Lmh0
dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvc2VydmljZS13b3Jr
ZXJzL25hdmlnYXRlLWlmcmFtZXMtd2luZG93LWNsaWVudC5odHRwcy5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvbmF2aWdhdGUtd2luZG93LWNsaWVudC13
b3JrZXIuanM6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9u
czoKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3dpbmRvd2NsaWVudC1uYXZpZ2F0ZS5o
dHRwcy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9U
ZXN0RXhwZWN0YXRpb25zOgorCiAyMDIyLTA0LTA1ICBBZGEgQ2hhbiAgPGFkYWNoYW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFtXZWJYUl0gQWRkIGEgbmV3IGVudW0gdHlwZSB0byByZXByZXNlbnQg
c2Vzc2lvbiBmZWF0dXJlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggZjFhYjk0
NThmODI5YzAwOThiYmI2ZjhiMDU4OThhOTFlYjc5NDc1Mi4uNDRhNzQyMGQ5Njk0YThlOWQxZTM0
MmNhNGU5MjcwMjI3MjYxZTFjMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTIgQEAKKzIwMjItMDQtMDYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgorCisgICAgICAgIEltcGxlbWVudCBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50Lm5hdmlnYXRl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg3MzgK
KworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvd2luZG93Y2xpZW50LW5h
dmlnYXRlLmh0dHBzLWV4cGVjdGVkLnR4dDoKKwogMjAyMi0wNC0wNSAgTWF0dCBXb29kcm93ICA8
bWF0dHdvb2Ryb3dAYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQgdHJhbnNpdGlvbnMvYW5p
bWF0aW9ucyBvbiBncmlkLXRlbXBsYXRlLWNvbHVtbnN8cm93cwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2Vy
dmljZS13b3JrZXIvd2luZG93Y2xpZW50LW5hdmlnYXRlLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJz
L3NlcnZpY2Utd29ya2VyL3dpbmRvd2NsaWVudC1uYXZpZ2F0ZS5odHRwcy1leHBlY3RlZC50eHQK
aW5kZXggMTkyNTQ2ZWQ4NzAwMmMzMTI2NjFmYzQ5NDZhYTA1MDYwN2UzM2E5Mi4uNDlmOGU4ZjI0
NDM2MmZjZjY2NWMyNTgyNjQwYWFlMDk4YTg3MWU5NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13
b3JrZXIvd2luZG93Y2xpZW50LW5hdmlnYXRlLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9z
ZXJ2aWNlLXdvcmtlci93aW5kb3djbGllbnQtbmF2aWdhdGUuaHR0cHMtZXhwZWN0ZWQudHh0CkBA
IC0xMCwyOSArMTAsMTUgQEAgUEFTUyBpbnZhbGlkIHVybCAodmlldy1zb3VyY2U6Ly9leGFtcGxl
LmNvbSkKIFBBU1MgaW52YWxpZCB1cmwgKGZpbGU6Ly8vKQogUEFTUyBpbnZhbGlkIHVybCAoYWJv
dXQ6YmxhbmspCiBQQVNTIG5hdmlnYXRlIG9uIGEgdG9wLWxldmVsIHdpbmRvdyBjbGllbnQKLUZB
SUwgbm9ybWFsIHdvcmtlciBzaWRlIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3
aXRoIHZhbHVlOiBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiB3aW5kb3dDbGllbnQubmF2aWdh
dGUoKSBpcyBub3QgeWV0IHN1cHBvcnRlZCIKLUZBSUwgYmxhbmsgdXJsIHdvcmtlciBzaWRlIHBy
b21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIk5vdFN1
cHBvcnRlZEVycm9yOiB3aW5kb3dDbGllbnQubmF2aWdhdGUoKSBpcyBub3QgeWV0IHN1cHBvcnRl
ZCIKLUZBSUwgaW4gc2NvcGUgYnV0IG5vdCBjb250cm9sbGVkIHRlc3Qgb24gaW5zdGFsbGluZyB3
b3JrZXIgd29ya2VyIHNpZGUgcHJvbWlzZV9yZWplY3RzX2pzOiBmdW5jdGlvbiAiZnVuY3Rpb24g
KCkgeyB0aHJvdyBlIH0iIHRocmV3IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IHdpbmRvd0Ns
aWVudC5uYXZpZ2F0ZSgpIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIiAoIk5vdFN1cHBvcnRlZEVycm9y
IikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsK
LSAgICBbbmF0aXZlIGNvZGVdCi19IiAoIlR5cGVFcnJvciIpCi1GQUlMIGluIHNjb3BlIGJ1dCBu
b3QgY29udHJvbGxlZCB0ZXN0IG9uIGFjdGl2ZSB3b3JrZXIgd29ya2VyIHNpZGUgcHJvbWlzZV9y
ZWplY3RzX2pzOiBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0iIHRocmV3IG9iamVj
dCAiTm90U3VwcG9ydGVkRXJyb3I6IHdpbmRvd0NsaWVudC5uYXZpZ2F0ZSgpIGlzIG5vdCB5ZXQg
c3VwcG9ydGVkIiAoIk5vdFN1cHBvcnRlZEVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVu
Y3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKLSAgICBbbmF0aXZlIGNvZGVdCi19IiAoIlR5
cGVFcnJvciIpCi1GQUlMIG91dCBvZiBzY29wZSB3b3JrZXIgc2lkZSBwcm9taXNlX3JlamVjdHNf
anM6IGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcgb2JqZWN0ICJOb3RT
dXBwb3J0ZWRFcnJvcjogd2luZG93Q2xpZW50Lm5hdmlnYXRlKCkgaXMgbm90IHlldCBzdXBwb3J0
ZWQiICgiTm90U3VwcG9ydGVkRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAi
ZnVuY3Rpb24gVHlwZUVycm9yKCkgewotICAgIFtuYXRpdmUgY29kZV0KLX0iICgiVHlwZUVycm9y
IikKLUZBSUwgY3Jvc3Mgb3JnaW4gdXJsIHdvcmtlciBzaWRlIHByb21pc2VfdGVzdDogVW5oYW5k
bGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiB3aW5k
b3dDbGllbnQubmF2aWdhdGUoKSBpcyBub3QgeWV0IHN1cHBvcnRlZCIKLUZBSUwgaW52YWxpZCB1
cmwgKGh0dHA6Ly9bZXhhbXBsZS5jb21dKSB3b3JrZXIgc2lkZSBwcm9taXNlX3JlamVjdHNfanM6
IGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcgb2JqZWN0ICJOb3RTdXBw
b3J0ZWRFcnJvcjogd2luZG93Q2xpZW50Lm5hdmlnYXRlKCkgaXMgbm90IHlldCBzdXBwb3J0ZWQi
ICgiTm90U3VwcG9ydGVkRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVu
Y3Rpb24gVHlwZUVycm9yKCkgewotICAgIFtuYXRpdmUgY29kZV0KLX0iICgiVHlwZUVycm9yIikK
LUZBSUwgaW52YWxpZCB1cmwgKHZpZXctc291cmNlOi8vZXhhbXBsZS5jb20pIHdvcmtlciBzaWRl
IHByb21pc2VfcmVqZWN0c19qczogZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0
aHJldyBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiB3aW5kb3dDbGllbnQubmF2aWdhdGUoKSBp
cyBub3QgeWV0IHN1cHBvcnRlZCIgKCJOb3RTdXBwb3J0ZWRFcnJvciIpIGV4cGVjdGVkIGluc3Rh
bmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7Ci0gICAgW25hdGl2ZSBjb2Rl
XQotfSIgKCJUeXBlRXJyb3IiKQotRkFJTCBpbnZhbGlkIHVybCAoZmlsZTovLy8pIHdvcmtlciBz
aWRlIHByb21pc2VfcmVqZWN0c19qczogZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9
IiB0aHJldyBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiB3aW5kb3dDbGllbnQubmF2aWdhdGUo
KSBpcyBub3QgeWV0IHN1cHBvcnRlZCIgKCJOb3RTdXBwb3J0ZWRFcnJvciIpIGV4cGVjdGVkIGlu
c3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7Ci0gICAgW25hdGl2ZSBj
b2RlXQotfSIgKCJUeXBlRXJyb3IiKQotRkFJTCBpbnZhbGlkIHVybCAoYWJvdXQ6YmxhbmspIHdv
cmtlciBzaWRlIHByb21pc2VfcmVqZWN0c19qczogZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhy
b3cgZSB9IiB0aHJldyBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiB3aW5kb3dDbGllbnQubmF2
aWdhdGUoKSBpcyBub3QgeWV0IHN1cHBvcnRlZCIgKCJOb3RTdXBwb3J0ZWRFcnJvciIpIGV4cGVj
dGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7Ci0gICAgW25h
dGl2ZSBjb2RlXQotfSIgKCJUeXBlRXJyb3IiKQorUEFTUyBub3JtYWwgd29ya2VyIHNpZGUKK1BB
U1MgYmxhbmsgdXJsIHdvcmtlciBzaWRlCitQQVNTIGluIHNjb3BlIGJ1dCBub3QgY29udHJvbGxl
ZCB0ZXN0IG9uIGluc3RhbGxpbmcgd29ya2VyIHdvcmtlciBzaWRlCitQQVNTIGluIHNjb3BlIGJ1
dCBub3QgY29udHJvbGxlZCB0ZXN0IG9uIGFjdGl2ZSB3b3JrZXIgd29ya2VyIHNpZGUKK1BBU1Mg
b3V0IG9mIHNjb3BlIHdvcmtlciBzaWRlCitQQVNTIGNyb3NzIG9yZ2luIHVybCB3b3JrZXIgc2lk
ZQorUEFTUyBpbnZhbGlkIHVybCAoaHR0cDovL1tleGFtcGxlLmNvbV0pIHdvcmtlciBzaWRlCitQ
QVNTIGludmFsaWQgdXJsICh2aWV3LXNvdXJjZTovL2V4YW1wbGUuY29tKSB3b3JrZXIgc2lkZQor
RkFJTCBpbnZhbGlkIHVybCAoZmlsZTovLy8pIHdvcmtlciBzaWRlIGFzc2VydF9lcXVhbHM6IGV4
cGVjdGVkIChzdHJpbmcpICJUeXBlRXJyb3IiIGJ1dCBnb3QgKG9iamVjdCkgbnVsbAorUEFTUyBp
bnZhbGlkIHVybCAoYWJvdXQ6YmxhbmspIHdvcmtlciBzaWRlCiBGQUlMIG5hdmlnYXRlIG9uIGEg
dG9wLWxldmVsIHdpbmRvdyBjbGllbnQgd29ya2VyIHNpZGUgYXNzZXJ0X2VxdWFsczogZXhwZWN0
ZWQgInRvcC1sZXZlbCIgYnV0IGdvdCAiYXV4aWxpYXJ5IgogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggN2Q0MGI1NTMwMGRkMmFlMzI0MjMyNWI4Yjdk
ZDBhYzc1ODQ4MmQzZC4uMWViMjFjMDJmM2IzNWI3YTFjMTk3ZDUzNmIzOTI5MTVkNmM0N2MxMSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTE5NCw2
ICsxMTk0LDkgQEAgd2Via2l0Lm9yZy9iLzE3Nzk0MCB3b3JrZXJzL3dhc20taGFzaHNldC5odG1s
IFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMjAxOTgxIGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9z
ZXJ2ZXItdHJ1c3QtZXZhbHVhdGlvbi5odHRwcy5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3Jn
L2IvMjAxOTgxIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJz
L3NlcnZpY2Utd29ya2VyL2ZldGNoLWNhbnZhcy10YWludGluZy1pbWFnZS1jYWNoZS5odHRwcy5o
dG1sIFsgRmFpbHVyZSBQYXNzIF0KIAord2Via2l0Lm9yZy9iLzIzODczOCBodHRwL3dwdC9zZXJ2
aWNlLXdvcmtlcnMvbmF2aWdhdGUtaWZyYW1lcy13aW5kb3ctY2xpZW50Lmh0dHBzLmh0bWwgWyBG
YWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMzg3MzgyMzg3MzggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvd2luZG93Y2xpZW50LW5h
dmlnYXRlLmh0dHBzLmh0bWwgWyBGYWlsdXJlIF0KKwogd2Via2l0Lm9yZy9iLzIwODM2OSBodHRw
L3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy10aW1lb3V0Lmh0dHBzLmh0bWwgWyBGYWlsdXJl
IFRpbWVvdXQgUGFzcyBdCiAKIHdlYmtpdC5vcmcvYi8yMTU2MzggaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9pbnZhbGlkLWNvbnRpbnVhdGlvbi5odG1sIFsgRmFpbHVyZSBdCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3dpbmRvd2NsaWVudC1uYXZp
Z2F0ZS5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vy
L3dpbmRvd2NsaWVudC1uYXZpZ2F0ZS5odHRwcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDE5MjU0NmVkODcwMDJjMzEyNjYxZmM0OTQ2YWEwNTA2MDdlMzNhOTIu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ2xpYi9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Ut
d29ya2Vycy9zZXJ2aWNlLXdvcmtlci93aW5kb3djbGllbnQtbmF2aWdhdGUuaHR0cHMtZXhwZWN0
ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotCi1QQVNTIG5vcm1hbAotUEFT
UyBibGFuayB1cmwKLVBBU1MgaW4gc2NvcGUgYnV0IG5vdCBjb250cm9sbGVkIHRlc3Qgb24gaW5z
dGFsbGluZyB3b3JrZXIKLVBBU1MgaW4gc2NvcGUgYnV0IG5vdCBjb250cm9sbGVkIHRlc3Qgb24g
YWN0aXZlIHdvcmtlcgotUEFTUyBvdXQgb2Ygc2NvcGUKLVBBU1MgY3Jvc3Mgb3JnaW4gdXJsCi1Q
QVNTIGludmFsaWQgdXJsIChodHRwOi8vW2V4YW1wbGUuY29tXSkKLVBBU1MgaW52YWxpZCB1cmwg
KHZpZXctc291cmNlOi8vZXhhbXBsZS5jb20pCi1QQVNTIGludmFsaWQgdXJsIChmaWxlOi8vLykK
LVBBU1MgaW52YWxpZCB1cmwgKGFib3V0OmJsYW5rKQotUEFTUyBuYXZpZ2F0ZSBvbiBhIHRvcC1s
ZXZlbCB3aW5kb3cgY2xpZW50Ci1GQUlMIG5vcm1hbCB3b3JrZXIgc2lkZSBwcm9taXNlX3Rlc3Q6
IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJv
cjogd2luZG93Q2xpZW50Lm5hdmlnYXRlKCkgaXMgbm90IHlldCBzdXBwb3J0ZWQiCi1GQUlMIGJs
YW5rIHVybCB3b3JrZXIgc2lkZSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0
aCB2YWx1ZTogb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogd2luZG93Q2xpZW50Lm5hdmlnYXRl
KCkgaXMgbm90IHlldCBzdXBwb3J0ZWQiCi1GQUlMIGluIHNjb3BlIGJ1dCBub3QgY29udHJvbGxl
ZCB0ZXN0IG9uIGluc3RhbGxpbmcgd29ya2VyIHdvcmtlciBzaWRlIHByb21pc2VfcmVqZWN0c19q
czogZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyBvYmplY3QgIk5vdFN1
cHBvcnRlZEVycm9yOiB3aW5kb3dDbGllbnQubmF2aWdhdGUoKSBpcyBub3QgeWV0IHN1cHBvcnRl
ZCIgKCJOb3RTdXBwb3J0ZWRFcnJvciIpIGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJm
dW5jdGlvbiBUeXBlRXJyb3IoKSB7Ci0gICAgW25hdGl2ZSBjb2RlXQotfSIgKCJUeXBlRXJyb3Ii
KQotRkFJTCBpbiBzY29wZSBidXQgbm90IGNvbnRyb2xsZWQgdGVzdCBvbiBhY3RpdmUgd29ya2Vy
IHdvcmtlciBzaWRlIHByb21pc2VfcmVqZWN0c19qczogZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsg
dGhyb3cgZSB9IiB0aHJldyBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiB3aW5kb3dDbGllbnQu
bmF2aWdhdGUoKSBpcyBub3QgeWV0IHN1cHBvcnRlZCIgKCJOb3RTdXBwb3J0ZWRFcnJvciIpIGV4
cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7Ci0gICAg
W25hdGl2ZSBjb2RlXQotfSIgKCJUeXBlRXJyb3IiKQotRkFJTCBvdXQgb2Ygc2NvcGUgd29ya2Vy
IHNpZGUgcHJvbWlzZV9yZWplY3RzX2pzOiBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0aHJvdyBl
IH0iIHRocmV3IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IHdpbmRvd0NsaWVudC5uYXZpZ2F0
ZSgpIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIiAoIk5vdFN1cHBvcnRlZEVycm9yIikgZXhwZWN0ZWQg
aW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKLSAgICBbbmF0aXZl
IGNvZGVdCi19IiAoIlR5cGVFcnJvciIpCi1GQUlMIGNyb3NzIG9yZ2luIHVybCB3b3JrZXIgc2lk
ZSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJO
b3RTdXBwb3J0ZWRFcnJvcjogd2luZG93Q2xpZW50Lm5hdmlnYXRlKCkgaXMgbm90IHlldCBzdXBw
b3J0ZWQiCi1GQUlMIGludmFsaWQgdXJsIChodHRwOi8vW2V4YW1wbGUuY29tXSkgd29ya2VyIHNp
ZGUgcHJvbWlzZV9yZWplY3RzX2pzOiBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0i
IHRocmV3IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IHdpbmRvd0NsaWVudC5uYXZpZ2F0ZSgp
IGlzIG5vdCB5ZXQgc3VwcG9ydGVkIiAoIk5vdFN1cHBvcnRlZEVycm9yIikgZXhwZWN0ZWQgaW5z
dGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKLSAgICBbbmF0aXZlIGNv
ZGVdCi19IiAoIlR5cGVFcnJvciIpCi1GQUlMIGludmFsaWQgdXJsICh2aWV3LXNvdXJjZTovL2V4
YW1wbGUuY29tKSB3b3JrZXIgc2lkZSBwcm9taXNlX3JlamVjdHNfanM6IGZ1bmN0aW9uICJmdW5j
dGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcgb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogd2lu
ZG93Q2xpZW50Lm5hdmlnYXRlKCkgaXMgbm90IHlldCBzdXBwb3J0ZWQiICgiTm90U3VwcG9ydGVk
RXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gVHlwZUVycm9y
KCkgewotICAgIFtuYXRpdmUgY29kZV0KLX0iICgiVHlwZUVycm9yIikKLUZBSUwgaW52YWxpZCB1
cmwgKGZpbGU6Ly8vKSB3b3JrZXIgc2lkZSBwcm9taXNlX3JlamVjdHNfanM6IGZ1bmN0aW9uICJm
dW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcgb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjog
d2luZG93Q2xpZW50Lm5hdmlnYXRlKCkgaXMgbm90IHlldCBzdXBwb3J0ZWQiICgiTm90U3VwcG9y
dGVkRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gVHlwZUVy
cm9yKCkgewotICAgIFtuYXRpdmUgY29kZV0KLX0iICgiVHlwZUVycm9yIikKLUZBSUwgaW52YWxp
ZCB1cmwgKGFib3V0OmJsYW5rKSB3b3JrZXIgc2lkZSBwcm9taXNlX3JlamVjdHNfanM6IGZ1bmN0
aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcgb2JqZWN0ICJOb3RTdXBwb3J0ZWRF
cnJvcjogd2luZG93Q2xpZW50Lm5hdmlnYXRlKCkgaXMgbm90IHlldCBzdXBwb3J0ZWQiICgiTm90
U3VwcG9ydGVkRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24g
VHlwZUVycm9yKCkgewotICAgIFtuYXRpdmUgY29kZV0KLX0iICgiVHlwZUVycm9yIikKLUZBSUwg
bmF2aWdhdGUgb24gYSB0b3AtbGV2ZWwgd2luZG93IGNsaWVudCB3b3JrZXIgc2lkZSBhc3NlcnRf
ZXF1YWxzOiBleHBlY3RlZCAidG9wLWxldmVsIiBidXQgZ290ICJhdXhpbGlhcnkiCi0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAxM2RlZmI0
NzYxMTUwN2E0ZWQ4MTQ4OTJiM2EyYzY5Yzk5OWYwMWFjLi5lMWRmYWJmNmZjYjJhN2EwZjJkYzk1
NjRhNTI2M2M2ZTUxMGVlMjg3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9U
ZXN0RXhwZWN0YXRpb25zCkBAIC05MjQsNyArOTI0LDcgQEAgd2Via2l0Lm9yZy9iLzE4MTgzOSBb
IERlYnVnIF0gaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtYWN0aW9uLWxvZy5odG1sIFsg
UGEKIAogd2Via2l0Lm9yZy9iLzIzMDQxMiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9jbGllbnRzLW1hdGNoYWxsLWNsaWVudC10
eXBlcy5odHRwcy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzE3OTM1MiBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdv
cmtlci93aW5kb3djbGllbnQtbmF2aWdhdGUuaHR0cHMuaHRtbCBbIFBhc3MgRmFpbHVyZSBTbG93
IF0KK3dlYmtpdC5vcmcvYi8xNzkzNTIgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
ZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvd2luZG93Y2xpZW50LW5hdmlnYXRlLmh0dHBz
Lmh0bWwgWyBTbG93IF0KIAogd2Via2l0Lm9yZy9iLzE4MzE2NCBmYXN0L2RvbS9XaW5kb3cvd2lu
ZG93LWZvY3VzLXNlbGYuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456797</attachid>
            <date>2022-04-06 03:12:22 -0700</date>
            <delta_ts>2022-04-06 04:18:39 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-238738-20220406121220.patch</filename>
            <type>text/plain</type>
            <size>71913</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDkyOGI3YzU2MGU2MzM1
MDM1YThkMWFlMjViNWIzY2MzYzMyNGQ5Ni4uYzIyNDViMmJhZDRkNTc3ZjdkYzgzNDJkMWMzNTI3
NGM0YzRhMWE3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIyLTA0LTA2ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgU2Vydmlj
ZVdvcmtlcldpbmRvd0NsaWVudC5uYXZpZ2F0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NzM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMg
RHVtZXouCisKKyAgICAgICAgSW50cm9kdWNlIGEgcm91dGluZSB0byBuYXZpZ2F0ZSBhIERvY3Vt
ZW50LgorICAgICAgICBTZW5kIEZyYW1lSWRlbnRpZmllciBhcyBwYXJ0IG9mIFNlcnZpY2VXb3Jr
ZXJDbGllbnREYXRhLgorICAgICAgICBJbXBsZW1lbnQgU2VydmljZVdvcmtlcldpbmRvd0NsaWVu
dDo6bmF2aWdhdGUgYnkgc2VuZGluZyBJUEMgdG8gbmV0d29yayBwcm9jZXNzLgorCisgICAgICAg
IFRlc3Q6IGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9uYXZpZ2F0ZS1pZnJhbWVzLXdpbmRvdy1j
bGllbnQuaHR0cHMuaHRtbAorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5jcHA6CisgICAg
ICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmg6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuY3BwOgorICAgICAg
ICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaDoKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlcldvcmtlci5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlcldvcmtlci5oOgorCiAyMDIyLTA0LTA1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5u
QGFwcGxlLmNvbT4KIAogICAgICAgICBTZXJ2aWNlV29ya2VyQ2xpZW50cy5vcGVuV2luZG93IHNo
b3VsZCBub3QgbmVlZCB0byBnZXQgYWxsIGNsaWVudHMgYXN5bmNocm9ub3VzbHkgdG8gcmVzb2x2
ZSBpdHMgcHJvbWlzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkMTFhOGM4MGY1YWY1ZjgwYjVlYjVjN2QyODdmNDE4
MWRiYTMyZjEyLi4zODNjYTMzNjAxMDJjZTI3MjdhYzQ1MjA4N2IzYzk3ZGNlNWU5NTUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIyLTA0LTA2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5u
QGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgU2VydmljZVdvcmtlcldpbmRvd0NsaWVu
dC5uYXZpZ2F0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM4NzM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAg
V2hlbiByZWNlaXZpbmcgYSByZXF1ZXN0IHRvIG5hdmlnYXRlIGEgY2xpZW50LCBzZW5kIG1lc3Nh
Z2UgdG8gVUlQcm9jZXNzLgorICAgICAgICBVSVByb2Nlc3MgbG9jYXRlcyB0aGUgV2ViRnJhbWVQ
cm94eSB3aGljaCB3aWxsIHNlbmQgYW4gSVBDIG1lc3NhZ2UgdG8gdGhlIFdlYlByb2Nlc3MgdG8g
ZG8gbmF2aWdhdGlvbi4KKyAgICAgICAgV2Uga2VlcCB0cmFjayBvZiB0aGUgbmF2aWdhdGlvbiB3
aXRoaW4gV2ViRnJhbWVQcm94eS4KKyAgICAgICAgSW4gY2FzZSBvZiBwcm9jZXNzIHN3YXBwaW5n
LCB3ZSBtYWtlIHN1cmUgdG8gdHJhbnNmZXIgdGhlIFdlYkZyYW1lUHJveHkgY2FsbGJhY2suCisg
ICAgICAgIEluIGNhc2Ugb2YgcG9saWN5IGRlY2lzaW9uIHRvIHN0b3AgbG9hZHMsIHdlIHJlc29s
dmUgdGhlIHByb21pc2Ugd2l0aCBhbiBlbXB0eSBjbGllbnQuCisgICAgICAgIEEgZm9sbG93LXVw
IHBhdGNoIG1heSByZWplY3QgdGhlIHByb21pc2Ugb25jZSB0aGUgZXhwZWN0ZWQgYmVoYXZpb3Ig
d2lsbCBiZSBjbGFyaWZpZWQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBV
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJG
cmFtZVByb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMjItMDQtMDUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgogCiAgICAgICAgIFNlcnZpY2VXb3JrZXJDbGllbnRzLm9wZW5XaW5kb3cgc2hv
dWxkIG5vdCBuZWVkIHRvIGdldCBhbGwgY2xpZW50cyBhc3luY2hyb25vdXNseSB0byByZXNvbHZl
IGl0cyBwcm9taXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBkMTYyMThkNjYyNTYxZTY3
ZDJkYzY2YjViYzY2MjJhYjg5ZTE2YTBmLi40MDU1YzRhMjI1MDZhYWI4NTY2YzAyNGNkZWVhMDhk
YzYxY2I2YWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTg0MTQsNyArODQxNCw3IEBA
IHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IERvY3VtZW50OjpwYWdlSUQoKSBjb25zdAog
CiBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gRG9jdW1lbnQ6OmZyYW1lSUQoKSBjb25z
dAogewotICAgIHJldHVybiBtX2ZyYW1lLT5sb2FkZXIoKS5mcmFtZUlEKCk7CisgICAgcmV0dXJu
IG1fZnJhbWUgPyBtX2ZyYW1lLT5sb2FkZXIoKS5mcmFtZUlEKCkgOiBzdGQ6Om51bGxvcHQ7CiB9
CiAKIHZvaWQgRG9jdW1lbnQ6OnJlZ2lzdGVyQXJ0aWNsZUVsZW1lbnQoRWxlbWVudCYgYXJ0aWNs
ZSkKQEAgLTg3ODAsNiArODc4MCwyNCBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVTZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YSgpCiAgICAgYXV0byBjb250cm9sbGluZ1NlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25JZGVudGlmaWVyID0gYWN0aXZlU2VydmljZVdvcmtlcigpID8gc3RkOjptYWtlX29wdGlv
bmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPihhY3RpdmVTZXJ2aWNlV29y
a2VyKCktPnJlZ2lzdHJhdGlvbklkZW50aWZpZXIoKSkgOiBzdGQ6Om51bGxvcHQ7CiAgICAgbV9z
ZXJ2aWNlV29ya2VyQ29ubmVjdGlvbi0+cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KHRvcE9y
aWdpbigpLCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZnJvbSgqdGhpcyksIGNvbnRyb2xsaW5n
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIHVzZXJBZ2VudCh1cmwoKSkpOwog
fQorCit2b2lkIERvY3VtZW50OjpuYXZpZ2F0ZUZyb21TZXJ2aWNlV29ya2VyKGNvbnN0IFVSTCYg
dXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQoreworICAgIGlm
IChhY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkKCkgfHwgYWN0aXZlRE9NT2JqZWN0c0FyZVN0
b3BwZWQoKSkgeworICAgICAgICBjYWxsYmFjayhmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlv
biwgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHVybCwgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byogZnJhbWUgPSB3ZWFrVGhpcyA/
IHdlYWtUaGlzLT5mcmFtZSgpIDogbnVsbHB0cjsKKyAgICAgICAgaWYgKCFmcmFtZSkgeworICAg
ICAgICAgICAgY2FsbGJhY2soZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIGZyYW1lLT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkuc2NoZWR1bGVMb2NhdGlvbkNo
YW5nZSgqd2Vha1RoaXMsIHdlYWtUaGlzLT5zZWN1cml0eU9yaWdpbigpLCB1cmwsIGZyYW1lLT5s
b2FkZXIoKS5vdXRnb2luZ1JlZmVycmVyKCksIExvY2tIaXN0b3J5OjpZZXMsIExvY2tCYWNrRm9y
d2FyZExpc3Q6Ok5vLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIGNhbGxiYWNrKHRydWUpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KICNl
bmRpZgogCiBTdHJpbmcgRG9jdW1lbnQ6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmlu
Zyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBj
b25zdCBVUkwmIHVybCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggNGMyMzY0MTdlZjVlZWU3ZjUx
Y2IxNGJiODllYWUyM2M4YjE3OTUyMC4uYjY4NTI1ZDljMmI5NzNlZjc1MTVkMDY2ZWIxNmFjMzFk
ZmRjNDI0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTE1NjksNiArMTU2OSw3IEBAIHB1Ymxp
YzoKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBzZXRTZXJ2aWNlV29ya2Vy
Q29ubmVjdGlvbihTV0NsaWVudENvbm5lY3Rpb24qKTsKICAgICB2b2lkIHVwZGF0ZVNlcnZpY2VX
b3JrZXJDbGllbnREYXRhKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBuYXZpZ2F0ZUZyb21T
ZXJ2aWNlV29ya2VyKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoVklERU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmNwcAppbmRleCA1
OTE2YmIwNGQ2Y2QyOTUwYmVhMWZjY2EyNWQxZTYyNmViN2U2ZTUyLi4xZjFjYzBmM2Q0OWYxYTAy
ZjZjZTg4MDU3MGQ3OTM2NTI1YzJiMjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5jcHAKQEAgLTU5LDEy
ICs1OSwxMiBAQCBzdGF0aWMgU2VydmljZVdvcmtlckNsaWVudEZyYW1lVHlwZSB0b1NlcnZpY2VX
b3JrZXJDbGllbnRGcmFtZVR5cGUoU2NyaXB0RXhlY3V0aQogCiBTZXJ2aWNlV29ya2VyQ2xpZW50
RGF0YSBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgogewot
ICAgIHJldHVybiB7IGlkZW50aWZpZXIsIHR5cGUsIGZyYW1lVHlwZSwgdXJsLmlzb2xhdGVkQ29w
eSgpLCBwYWdlSWRlbnRpZmllciwgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQsIGlzVmlz
aWJsZSwgaXNGb2N1c2VkLCBmb2N1c09yZGVyLCBjcm9zc1RocmVhZENvcHkoYW5jZXN0b3JPcmln
aW5zKSB9OworICAgIHJldHVybiB7IGlkZW50aWZpZXIsIHR5cGUsIGZyYW1lVHlwZSwgdXJsLmlz
b2xhdGVkQ29weSgpLCBwYWdlSWRlbnRpZmllciwgZnJhbWVJZGVudGlmaWVyLCBsYXN0TmF2aWdh
dGlvbldhc0FwcEluaXRpYXRlZCwgaXNWaXNpYmxlLCBpc0ZvY3VzZWQsIGZvY3VzT3JkZXIsIGNy
b3NzVGhyZWFkQ29weShhbmNlc3Rvck9yaWdpbnMpIH07CiB9CiAKIFNlcnZpY2VXb3JrZXJDbGll
bnREYXRhIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjppc29sYXRlZENvcHkoKSAmJgogewotICAg
IHJldHVybiB7IGlkZW50aWZpZXIsIHR5cGUsIGZyYW1lVHlwZSwgV1RGTW92ZSh1cmwpLmlzb2xh
dGVkQ29weSgpLCBwYWdlSWRlbnRpZmllciwgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQs
IGlzVmlzaWJsZSwgaXNGb2N1c2VkLCBmb2N1c09yZGVyLCBjcm9zc1RocmVhZENvcHkoV1RGTW92
ZShhbmNlc3Rvck9yaWdpbnMpKSB9OworICAgIHJldHVybiB7IGlkZW50aWZpZXIsIHR5cGUsIGZy
YW1lVHlwZSwgV1RGTW92ZSh1cmwpLmlzb2xhdGVkQ29weSgpLCBwYWdlSWRlbnRpZmllciwgZnJh
bWVJZGVudGlmaWVyLCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCwgaXNWaXNpYmxlLCBp
c0ZvY3VzZWQsIGZvY3VzT3JkZXIsIGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGFuY2VzdG9yT3Jp
Z2lucykpIH07CiB9CiAKIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIFNlcnZpY2VXb3JrZXJDbGll
bnREYXRhOjpmcm9tKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCkBAIC04Nyw2ICs4
Nyw3IEBAIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjpm
cm9tKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvCiAgICAgICAgIHRvU2VydmljZVdvcmtlckNs
aWVudEZyYW1lVHlwZShjb250ZXh0KSwKICAgICAgICAgZG9jdW1lbnQuY3JlYXRpb25VUkwoKSwK
ICAgICAgICAgZG9jdW1lbnQucGFnZUlEKCksCisgICAgICAgIGRvY3VtZW50LmZyYW1lSUQoKSwK
ICAgICAgICAgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQsCiAgICAgICAgICFkb2N1bWVu
dC5oaWRkZW4oKSwKICAgICAgICAgZG9jdW1lbnQuaGFzRm9jdXMoKSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmgK
aW5kZXggMjY0YWE5ZTY4YmZkODQyYTE5NWM0MTM4YzgxYmNmMGQ3ZDIzODc5Ny4uYjhhZjE4MDVh
MTMyMTU2NGQ3MDM1MzEwZjAwZWI1ZTU5Yzc5Yzg2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmgKQEAgLTI3
LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorI2luY2x1ZGUgIkZy
YW1lSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
UHJvY2Vzc1F1YWxpZmllZC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyLmgiCkBAIC00OSw2ICs1MCw3IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0
YSB7CiAgICAgU2VydmljZVdvcmtlckNsaWVudEZyYW1lVHlwZSBmcmFtZVR5cGU7CiAgICAgVVJM
IHVybDsKICAgICBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSWRlbnRpZmllcjsK
KyAgICBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJZGVudGlmaWVyOwogICAg
IExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlh
dGVkOwogICAgIGJvb2wgaXNWaXNpYmxlIHsgZmFsc2UgfTsKICAgICBib29sIGlzRm9jdXNlZCB7
IGZhbHNlIH07CkBAIC02Nyw3ICs2OSw3IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0
YSB7CiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0
YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8PCBpZGVu
dGlmaWVyIDw8IHR5cGUgPDwgZnJhbWVUeXBlIDw8IHVybCA8PCBwYWdlSWRlbnRpZmllciA8PCBs
YXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCA8PCBpc1Zpc2libGUgPDwgaXNGb2N1c2VkIDw8
IGZvY3VzT3JkZXIgPDwgYW5jZXN0b3JPcmlnaW5zOworICAgIGVuY29kZXIgPDwgaWRlbnRpZmll
ciA8PCB0eXBlIDw8IGZyYW1lVHlwZSA8PCB1cmwgPDwgcGFnZUlkZW50aWZpZXIgPDwgZnJhbWVJ
ZGVudGlmaWVyIDw8IGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIDw8IGlzVmlzaWJsZSA8
PCBpc0ZvY3VzZWQgPDwgZm9jdXNPcmRlciA8PCBhbmNlc3Rvck9yaWdpbnM7CiB9CiAKIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+CkBAIC05OCw2ICsxMDAsMTEgQEAgc3RkOjpvcHRpb25hbDxTZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YT4gU2VydmljZVdvcmtlckNsaWVudERhdGE6OmRlY29kZShEZWNv
ZGVyJgogICAgIGlmICghcGFnZUlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPj4g
ZnJhbWVJZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gZnJhbWVJZGVudGlmaWVyOworICAgIGlm
ICghZnJhbWVJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCiAgICAg
c3RkOjpvcHRpb25hbDxMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZD4gbGFzdE5hdmlnYXRp
b25XYXNBcHBJbml0aWF0ZWQ7CiAgICAgZGVjb2RlciA+PiBsYXN0TmF2aWdhdGlvbldhc0FwcElu
aXRpYXRlZDsKICAgICBpZiAoIWxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKQpAQCAtMTIz
LDcgKzEzMCw3IEBAIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IFNlcnZp
Y2VXb3JrZXJDbGllbnREYXRhOjpkZWNvZGUoRGVjb2RlciYKICAgICBpZiAoIWFuY2VzdG9yT3Jp
Z2lucykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7IHsgV1RG
TW92ZSgqaWRlbnRpZmllciksIFdURk1vdmUoKnR5cGUpLCBXVEZNb3ZlKCpmcmFtZVR5cGUpLCBX
VEZNb3ZlKCp1cmwpLCBXVEZNb3ZlKCpwYWdlSWRlbnRpZmllciksIFdURk1vdmUoKmxhc3ROYXZp
Z2F0aW9uV2FzQXBwSW5pdGlhdGVkKSwgV1RGTW92ZSgqaXNWaXNpYmxlKSwgV1RGTW92ZSgqaXNG
b2N1c2VkKSwgV1RGTW92ZSgqZm9jdXNPcmRlciksIFdURk1vdmUoKmFuY2VzdG9yT3JpZ2lucykg
fSB9OworICAgIHJldHVybiB7IHsgV1RGTW92ZSgqaWRlbnRpZmllciksIFdURk1vdmUoKnR5cGUp
LCBXVEZNb3ZlKCpmcmFtZVR5cGUpLCBXVEZNb3ZlKCp1cmwpLCBXVEZNb3ZlKCpwYWdlSWRlbnRp
ZmllciksIFdURk1vdmUoKmZyYW1lSWRlbnRpZmllciksIFdURk1vdmUoKmxhc3ROYXZpZ2F0aW9u
V2FzQXBwSW5pdGlhdGVkKSwgV1RGTW92ZSgqaXNWaXNpYmxlKSwgV1RGTW92ZSgqaXNGb2N1c2Vk
KSwgV1RGTW92ZSgqZm9jdXNPcmRlciksIFdURk1vdmUoKmFuY2VzdG9yT3JpZ2lucykgfSB9Owog
fQogCiB1c2luZyBTZXJ2aWNlV29ya2VyQ2xpZW50c01hdGNoQWxsQ2FsbGJhY2sgPSBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJik+OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJXaW5k
b3dDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJXaW5kb3dDbGllbnQuY3BwCmluZGV4IGRmNzdjYzQ5MTU5ZDk2MWJmMmEyMTUzYzA3N2NhZjk4
OTJlOTI3M2QuLjhkZWMxZDBkMzc1ZDBkMzNmMjI3ZTg0M2U1MTBhZGJhMWZlYWY0NDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyV2luZG93
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlcldpbmRvd0NsaWVudC5jcHAKQEAgLTcxLDEwICs3MSw0OCBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJXaW5kb3dDbGllbnQ6OmZvY3VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJl
ZjxEZWZlcgogICAgIH0pOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQ6Om5h
dmlnYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHVybCwgUmVmPERl
ZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQordm9pZCBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50
OjpuYXZpZ2F0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcm
IHVybFN0cmluZywgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewotICAgIFVOVVNF
RF9QQVJBTSh1cmwpOwotICAgIHByb21pc2UtPnJlamVjdChFeGNlcHRpb24geyBOb3RTdXBwb3J0
ZWRFcnJvciwgIndpbmRvd0NsaWVudC5uYXZpZ2F0ZSgpIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIl9z
IH0pOworICAgIGF1dG8gdXJsID0gY29udGV4dC5jb21wbGV0ZVVSTCh1cmxTdHJpbmcpOworCisg
ICAgaWYgKCF1cmwuaXNWYWxpZCgpKSB7CisgICAgICAgIHByb21pc2UtPnJlamVjdChFeGNlcHRp
b24geyBUeXBlRXJyb3IsIG1ha2VTdHJpbmcoIlVSTCBzdHJpbmcgIiwgdXJsU3RyaW5nLCAiIGNh
bm5vdCBzdWNjZXNzZnVsbHkgYmUgcGFyc2VkIikgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAodXJsLnByb3RvY29sSXNBYm91dCgpKSB7CisgICAgICAgIHByb21pc2UtPnJl
amVjdChFeGNlcHRpb24geyBUeXBlRXJyb3IsIG1ha2VTdHJpbmcoIlNlcnZpY2VXb3JrZXJDbGll
bnRzLm5hdmlnYXRlKCkgY2Fubm90IGJlIGNhbGxlZCB3aXRoIFVSTCAiLCB1cmwuc3RyaW5nKCkp
IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gV2UgaW1wbGVtZW50IHN0ZXAg
NCAoY2hlY2tpbmcgb2YgY2xpZW50J3MgYWN0aXZlIHNlcnZpY2Ugd29ya2VyKSBpbiBuZXR3b3Jr
IHByb2Nlc3MgYXMgd2UgY2Fubm90IGRvIGl0IHN5bmNocm9ub3VzbHkuCisgICAgYXV0byYgc2Vy
dmljZVdvcmtlckNvbnRleHQgPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNv
bnRleHQpOworICAgIGF1dG8gcHJvbWlzZUlkZW50aWZpZXIgPSBzZXJ2aWNlV29ya2VyQ29udGV4
dC5jbGllbnRzKCkuYWRkUGVuZGluZ1Byb21pc2UoV1RGTW92ZShwcm9taXNlKSk7CisgICAgY2Fs
bE9uTWFpblRocmVhZChbY2xpZW50SWRlbnRpZmllciA9IGlkZW50aWZpZXIoKSwgcHJvbWlzZUlk
ZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gc2VydmljZVdvcmtlckNvbnRleHQu
dGhyZWFkKCkuaWRlbnRpZmllcigpLCB1cmwgPSBXVEZNb3ZlKHVybCkuaXNvbGF0ZWRDb3B5KCld
KCkgbXV0YWJsZSB7CisgICAgICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5l
Y3Rpb24oKS0+bmF2aWdhdGUoY2xpZW50SWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIHVybCwgW3Byb21pc2VJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllcl0oYXV0
byByZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xl
dG9uKCkucG9zdFRhc2tUb1NlcnZpY2VXb3JrZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFtw
cm9taXNlSWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUocmVzdWx0
KSldKGF1dG8mIHNlcnZpY2VXb3JrZXJDb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAg
ICBhdXRvIHByb21pc2UgPSBzZXJ2aWNlV29ya2VyQ29udGV4dC5jbGllbnRzKCkudGFrZVBlbmRp
bmdQcm9taXNlKHByb21pc2VJZGVudGlmaWVyKTsKKyAgICAgICAgICAgICAgICBpZiAoIXByb21p
c2UpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIGlmIChy
ZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVq
ZWN0KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGF1dG8gY2xpZW50RGF0YSA9
IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICAgICAgICAgICAgICBpZiAoIWNsaWVu
dERhdGEpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZVdpdGhKU1ZhbHVl
KEpTQzo6anNOdWxsKCkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAgICAgfQorI2lmIEFTU0VSVF9FTkFCTEVECisgICAgICAgICAgICAgICAgYXV0byBvcmlnaW5E
YXRhID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKGNsaWVudERhdGEtPnVybCk7CisgICAg
ICAgICAgICAgICAgQ2xpZW50T3JpZ2luIGNsaWVudE9yaWdpbiB7IG9yaWdpbkRhdGEsIG9yaWdp
bkRhdGEgfTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIEFTU0VSVChzZXJ2aWNlV29ya2VyQ29u
dGV4dC5jbGllbnRPcmlnaW4oKSA9PSBjbGllbnRPcmlnaW4pOworICAgICAgICAgICAgICAgIHBy
b21pc2UtPnRlbXBsYXRlIHJlc29sdmU8SURMSW50ZXJmYWNlPFNlcnZpY2VXb3JrZXJXaW5kb3dD
bGllbnQ+PihTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50OjpjcmVhdGUoc2VydmljZVdvcmtlckNv
bnRleHQsIFdURk1vdmUoKmNsaWVudERhdGEpKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fSk7CisgICAgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIu
aAppbmRleCAwY2IxOTI3NDU4N2MzOTQxY2UyMDkxNzdkZmNlMzU1N2ZkYTE5YzY1Li4yZDhiYjNj
NWUxYzBjMzc2ZmM3ZTNlYzNkNjEyNzIzN2ZlMmJkZTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCkBA
IC03Miw2ICs3Miw5IEBAIHB1YmxpYzoKICAgICAgICAgdXNpbmcgT3BlbldpbmRvd0NhbGxiYWNr
ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJDbGllbnREYXRhPj4mJik+OwogICAgICAgICB2aXJ0dWFsIHZvaWQgb3BlbldpbmRv
dyhTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgVVJMJiwgT3BlbldpbmRvd0NhbGxiYWNr
JiYpID0gMDsKIAorICAgICAgICB1c2luZyBOYXZpZ2F0ZUNhbGxiYWNrID0gQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJDbGllbnREYXRhPj4mJik+OworICAgICAgICB2aXJ0dWFsIHZvaWQgbmF2aWdhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25z
dCBVUkwmLCBOYXZpZ2F0ZUNhbGxiYWNrJiYpID0gMDsKKwogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmFpbEhlYXJ0QmVhdENoZWNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSA9IDA7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBzZXRBc0luc3BlY3RlZChTZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
Ym9vbCkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuY3BwCmluZGV4IDIxZGJkMjY0OGMxYWQyOTBhYWRmZmNjMGY4YWJiNGIwZWQ0
NzVmODkuLmU1NTNkMWNkYjgzNTMxYjk0MjA2YTU4ZmUyZGRkZDA0ZWNkYWVmMzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBA
IC0xMDkxLDYgKzEwOTEsMTQgQEAgdm9pZCBTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3Jr
ZXJDbGllbnQoY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIFMKICAgICBtX2NsaWVu
dFRvQ29udHJvbGxpbmdSZWdpc3RyYXRpb24ucmVtb3ZlKHJlZ2lzdHJhdGlvbkl0ZXJhdG9yKTsK
IH0KIAorc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4g
U1dTZXJ2ZXI6OmNsaWVudElkZW50aWZpZXJUb0NvbnRyb2xsaW5nUmVnaXN0cmF0aW9uKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIpIGNvbnN0Cit7Cisg
ICAgYXV0byByZWdpc3RyYXRpb25JdGVyYXRvciA9IG1fY2xpZW50VG9Db250cm9sbGluZ1JlZ2lz
dHJhdGlvbi5maW5kKGNsaWVudElkZW50aWZpZXIpOworICAgIGlmIChyZWdpc3RyYXRpb25JdGVy
YXRvciA9PSBtX2NsaWVudFRvQ29udHJvbGxpbmdSZWdpc3RyYXRpb24uZW5kKCkpCisgICAgICAg
IHJldHVybiB7IH07CisgICAgcmV0dXJuIHJlZ2lzdHJhdGlvbkl0ZXJhdG9yLT52YWx1ZTsKK30K
KwogU1dTZXJ2ZXI6OlNob3VsZERlbGF5UmVtb3ZhbCBTV1NlcnZlcjo6cmVtb3ZlQ29udGV4dENv
bm5lY3Rpb25JZlBvc3NpYmxlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pCiB7CiAg
ICAgaWYgKG1fY2xpZW50c0J5UmVnaXN0cmFibGVEb21haW4uY29udGFpbnMoZG9tYWluKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRl
eCBiMzI3ZTM4YWZmMWVkZjI2YmU4MjAzZmJjZWFkOTZhOGQ2YzM3ZjZiLi43YjQ0MTVjMmEwY2M3
MDQ4NmRkM2QyNjdlMDhlMjY5MzJkMDJmMmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCkBAIC0yNDIsNiArMjQyLDkgQEAgcHVibGlj
OgogICAgIGVudW0gY2xhc3MgU2hvdWxkRGVsYXlSZW1vdmFsIDogYm9vbCB7IE5vLCBZZXMgfTsK
ICAgICBTaG91bGREZWxheVJlbW92YWwgcmVtb3ZlQ29udGV4dENvbm5lY3Rpb25JZlBvc3NpYmxl
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CiAKKyAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiBjbGllbnRJZGVudGlmaWVyVG9Db250cm9sbGlu
Z1JlZ2lzdHJhdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcikgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmb3JFYWNoQ2xpZW50Rm9yT3JpZ2luKGNvbnN0IENsaWVu
dE9yaWdpbiYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQoU2VydmljZVdvcmtlckNsaWVudERhdGEmKT4m
KTsKKwogcHJpdmF0ZToKICAgICB2b2lkIHZhbGlkYXRlUmVnaXN0cmF0aW9uRG9tYWluKFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBTZXJ2aWNlV29ya2VySm9iVHlwZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik7CiAKQEAgLTI2MSw3ICsyNjQsNiBAQCBwcml2YXRlOgogICAg
IHZvaWQgaW5zdGFsbENvbnRleHREYXRhKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYp
OwogCiAgICAgU1dTZXJ2ZXJSZWdpc3RyYXRpb24qIHJlZ2lzdHJhdGlvbkZyb21TZXJ2aWNlV29y
a2VySWRlbnRpZmllcihTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgdm9pZCBmb3JFYWNo
Q2xpZW50Rm9yT3JpZ2luKGNvbnN0IENsaWVudE9yaWdpbiYsIGNvbnN0IEZ1bmN0aW9uPHZvaWQo
U2VydmljZVdvcmtlckNsaWVudERhdGEmKT4mKTsKIAogICAgIHZvaWQgcGVyZm9ybUdldE9yaWdp
bnNXaXRoUmVnaXN0cmF0aW9uc0NhbGxiYWNrcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCmluZGV4IDA4
ODFiYzYyMzczNzEzYWFlMjFmZWIxOGI2MjYyNGI1YmE2ZTk5OTIuLmQxOWU5ZWFlYWNlZGZmZDlh
YWViZGIxMTk1MWM4Yzk3YzEwZWNkYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCkBAIC00MTksNiArNDE5
LDE0IEBAIHZvaWQgU1dTZXJ2ZXJXb3JrZXI6OnRlcm1pbmF0ZUlmUG9zc2libGUoKQogICAgIG1f
c2VydmVyLT5yZW1vdmVDb250ZXh0Q29ubmVjdGlvbklmUG9zc2libGUocmVnaXN0cmFibGVEb21h
aW4oKSk7CiB9CiAKK2Jvb2wgU1dTZXJ2ZXJXb3JrZXI6OmlzQ2xpZW50QWN0aXZlU2VydmljZVdv
cmtlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyKSBj
b25zdAoreworICAgIGlmICghbV9zZXJ2ZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBh
dXRvIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIgPSBtX3NlcnZlci0+Y2xpZW50SWRlbnRpZmllclRv
Q29udHJvbGxpbmdSZWdpc3RyYXRpb24oY2xpZW50SWRlbnRpZmllcik7CisgICAgcmV0dXJuIHJl
Z2lzdHJhdGlvbklkZW50aWZpZXIgPT0gbV9kYXRhLnJlZ2lzdHJhdGlvbklkZW50aWZpZXI7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJXb3JrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJXb3JrZXIuaAppbmRleCA1NGRmMzg0MjIwODFhYWU0ZDgyYmE2MjRmYmE2MjkwYThm
NjM3YmI2Li43MTdkNTU5ZWRiZjM4MWIwNWM1NzIwZTU4ZTZjNDllYjZjNmQwN2M1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2Vy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldv
cmtlci5oCkBAIC0xNDEsNiArMTQxLDggQEAgcHVibGljOgogCiAgICAgYm9vbCBzaG91bGRDb250
aW51ZSgpIGNvbnN0IHsgcmV0dXJuICEhbV9mdW5jdGlvbmFsRXZlbnRDb3VudGVyIHx8IG1faXNJ
bnNwZWN0ZWQ7IH0KIAorICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNDbGllbnRBY3RpdmVTZXJ2
aWNlV29ya2VyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyKSBjb25zdDsKKwogcHJp
dmF0ZToKICAgICBTV1NlcnZlcldvcmtlcihTV1NlcnZlciYsIFNXU2VydmVyUmVnaXN0cmF0aW9u
JiwgY29uc3QgVVJMJiwgY29uc3QgU2NyaXB0QnVmZmVyJiwgY29uc3QgQ2VydGlmaWNhdGVJbmZv
JiwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgY29uc3QgQ3Jv
c3NPcmlnaW5FbWJlZGRlclBvbGljeSYsIFN0cmluZyYmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJU
eXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
ckNvbm5lY3Rpb24uY3BwCmluZGV4IDZmYThkYWE0MmQ0NzhkYWM0YzNlN2U4ZTZmY2ZlNmJhZjU4
YjY4NmIuLjU2YjE4MDQ2OTZhNTY1NGExZjM2YWQ5M2Q3ZGNkZTQxNDMxZDI2YzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
ckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0xNjQsMTkgKzE2NCwyMCBAQCB2
b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6dXBkYXRlV29ya2VyU3RhdGVJbkNsaWVudChTZXJ2
aWNlV29ya2VySWRlbnRpZmllciB3bwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ2xpZW50Q29u
bmVjdGlvbjo6VXBkYXRlV29ya2VyU3RhdGUod29ya2VyLCBzdGF0ZSkpOwogfQogCi12b2lkIFdl
YlNXU2VydmVyQ29ubmVjdGlvbjo6Y29udHJvbENsaWVudChjb25zdCBWZWN0b3I8UmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPj4mIGZyYW1lQW5jZXN0b3JPcmlnaW5zLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVn
aXN0cmF0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit2b2lkIFdlYlNXU2Vy
dmVyQ29ubmVjdGlvbjo6Y29udHJvbENsaWVudChjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycyYgcGFyYW1ldGVycywgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbiwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogeworICAgIGF1dG8gY2xpZW50SWRlbnRp
ZmllciA9ICpwYXJhbWV0ZXJzLm9wdGlvbnMuY2xpZW50SWRlbnRpZmllcjsKICAgICAvLyBBcyBw
ZXIgc3RlcCAxMiBvZiBodHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jb24tZmV0
Y2gtcmVxdWVzdC1hbGdvcml0aG0sIHRoZSBhY3RpdmUgc2VydmljZSB3b3JrZXIgc2hvdWxkIGJl
IGNvbnRyb2xsaW5nIHRoZSBkb2N1bWVudC4KLSAgICAvLyBXZSByZWdpc3RlciBhIHRlbXBvcmFy
eSBzZXJ2aWNlIHdvcmtlciBjbGllbnQgdXNpbmcgdGhlIGlkZW50aWZpZXIgcHJvdmlkZWQgYnkg
RG9jdW1lbnRMb2FkZXIgYW5kIG5vdGlmeSBEb2N1bWVudExvYWRlciBhYm91dCBpdC4KLSAgICAv
LyBJZiBub3RpZmljYXRpb24gaXMgc3VjY2Vzc2Z1bCwgRG9jdW1lbnRMb2FkZXIgd2lsbCB1bnJl
Z2lzdGVyIHRoZSB0ZW1wb3Jhcnkgc2VydmljZSB3b3JrZXIgY2xpZW50IGp1c3QgYWZ0ZXIgdGhl
IGRvY3VtZW50IGlzIGNyZWF0ZWQgYW5kIHJlZ2lzdGVyZWQgYXMgYSBjbGllbnQuCisgICAgLy8g
V2UgcmVnaXN0ZXIgdGhlIHNlcnZpY2Ugd29ya2VyIGNsaWVudCB1c2luZyB0aGUgaWRlbnRpZmll
ciBwcm92aWRlZCBieSBEb2N1bWVudExvYWRlciBhbmQgbm90aWZ5IERvY3VtZW50TG9hZGVyIGFi
b3V0IGl0LgorICAgIC8vIElmIG5vdGlmaWNhdGlvbiBpcyBzdWNjZXNzZnVsLCBEb2N1bWVudExv
YWRlciBpcyByZXNwb25zaWJsZSB0byB1bnJlZ2lzdGVyIHRoZSBzZXJ2aWNlIHdvcmtlciBjbGll
bnQgYXMgbmVlZGVkLgogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViU1dDbGll
bnRDb25uZWN0aW9uOjpTZXREb2N1bWVudElzQ29udHJvbGxlZCB7IGNsaWVudElkZW50aWZpZXIs
IHJlZ2lzdHJhdGlvbi5kYXRhKCkgfSwgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHRo
aXMsIGNsaWVudElkZW50aWZpZXJdKGJvb2wgaXNTdWNjZXNzKSB7CiAgICAgICAgIGlmICghd2Vh
a1RoaXMgfHwgaXNTdWNjZXNzKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB1bnJlZ2lz
dGVyU2VydmljZVdvcmtlckNsaWVudChjbGllbnRJZGVudGlmaWVyKTsKICAgICB9KTsKIAotICAg
IGF1dG8gYW5jZXN0b3JPcmlnaW5zID0gbWFwKGZyYW1lQW5jZXN0b3JPcmlnaW5zLCBbXShhdXRv
JiBvcmlnaW4pIHsgcmV0dXJuIG9yaWdpbi0+dG9TdHJpbmcoKTsgfSk7Ci0gICAgU2VydmljZVdv
cmtlckNsaWVudERhdGEgZGF0YSB7IGNsaWVudElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGll
bnRUeXBlOjpXaW5kb3csIFNlcnZpY2VXb3JrZXJDbGllbnRGcmFtZVR5cGU6Ok5vbmUsIHJlcXVl
c3QudXJsKCksIHsgfSwgcmVxdWVzdC5pc0FwcEluaXRpYXRlZCgpID8gV2ViQ29yZTo6TGFzdE5h
dmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6OlllcyA6IFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2Fz
QXBwSW5pdGlhdGVkOjpObywgZmFsc2UsIGZhbHNlLCAwLCBXVEZNb3ZlKGFuY2VzdG9yT3JpZ2lu
cykgfTsKKyAgICBhdXRvIGFuY2VzdG9yT3JpZ2lucyA9IG1hcChwYXJhbWV0ZXJzLmZyYW1lQW5j
ZXN0b3JPcmlnaW5zLCBbXShhdXRvJiBvcmlnaW4pIHsgcmV0dXJuIG9yaWdpbi0+dG9TdHJpbmco
KTsgfSk7CisgICAgU2VydmljZVdvcmtlckNsaWVudERhdGEgZGF0YSB7IGNsaWVudElkZW50aWZp
ZXIsIFNlcnZpY2VXb3JrZXJDbGllbnRUeXBlOjpXaW5kb3csIFNlcnZpY2VXb3JrZXJDbGllbnRG
cmFtZVR5cGU6Ok5vbmUsIHJlcXVlc3QudXJsKCksIHBhcmFtZXRlcnMud2ViUGFnZUlELCBwYXJh
bWV0ZXJzLndlYkZyYW1lSUQsIHJlcXVlc3QuaXNBcHBJbml0aWF0ZWQoKSA/IFdlYkNvcmU6Okxh
c3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpZZXMgOiBXZWJDb3JlOjpMYXN0TmF2aWdhdGlv
bldhc0FwcEluaXRpYXRlZDo6Tm8sIGZhbHNlLCBmYWxzZSwgMCwgV1RGTW92ZShhbmNlc3Rvck9y
aWdpbnMpIH07CiAgICAgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KFNlY3VyaXR5T3JpZ2lu
RGF0YSB7IHJlZ2lzdHJhdGlvbi5rZXkoKS50b3BPcmlnaW4oKSB9LCBXVEZNb3ZlKGRhdGEpLCBy
ZWdpc3RyYXRpb24uaWRlbnRpZmllcigpLCByZXF1ZXN0Lmh0dHBVc2VyQWdlbnQoKSk7CiB9CiAK
QEAgLTIwMSw3ICsyMDIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckZldGNoVGFz
az4gV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpjcmVhdGVGZXRjaFRhc2soTgogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50
aWZpZXIgPSByZWdpc3RyYXRpb24tPmlkZW50aWZpZXIoKTsKLSAgICAgICAgY29udHJvbENsaWVu
dChsb2FkZXIucGFyYW1ldGVycygpLmZyYW1lQW5jZXN0b3JPcmlnaW5zLCAqbG9hZGVyLnBhcmFt
ZXRlcnMoKS5vcHRpb25zLmNsaWVudElkZW50aWZpZXIsICpyZWdpc3RyYXRpb24sIHJlcXVlc3Qp
OworICAgICAgICBjb250cm9sQ2xpZW50KGxvYWRlci5wYXJhbWV0ZXJzKCksICpyZWdpc3RyYXRp
b24sIHJlcXVlc3QpOwogICAgICAgICBsb2FkZXIuc2V0UmVzdWx0aW5nQ2xpZW50SWRlbnRpZmll
cihsb2FkZXIucGFyYW1ldGVycygpLm9wdGlvbnMuY2xpZW50SWRlbnRpZmllci0+dG9TdHJpbmco
KSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFsb2FkZXIucGFyYW1ldGVycygpLnNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29u
bmVjdGlvbi5oCmluZGV4IGY3N2I5ZjViOTM4N2I5MWYyYjY3MzIwZTM3Y2ZhYmI5Yjc5NWUyNGQu
LjRkYzMxNDVjYmZiOGUzZDVjNWVlY2ZmY2Y5NzUxMDUxNWY0ZjRhYmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5l
Y3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTYxLDYgKzYxLDcgQEAgc3RydWN0IFNlcnZpY2VX
b3JrZXJDbGllbnREYXRhOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIE5ldHdvcmtQcm9j
ZXNzOworY2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM7CiBjbGFzcyBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOwogCkBAIC04Myw4
ICs4NCw2IEBAIHB1YmxpYzoKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckZldGNo
VGFzaz4gY3JlYXRlRmV0Y2hUYXNrKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgZmV0Y2hUYXNrVGltZWRPdXQoV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogCi0gICAgdm9pZCBmb2N1c1NlcnZpY2VXb3Jr
ZXJDbGllbnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xp
ZW50RGF0YT4mJik+JiYpOwotCiBwcml2YXRlOgogICAgIC8vIEltcGxlbWVudCBTV1NlcnZlcjo6
Q29ubmVjdGlvbiAoTWVzc2FnZXMgdG8gdGhlIGNsaWVudCBXZWJQcm9jZXNzKQogICAgIHZvaWQg
cmVqZWN0Sm9iSW5DbGllbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYklkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmKSBmaW5hbDsKQEAgLTk3LDYgKzk2LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHNldFJlZ2lzdHJhdGlvbkxhc3RVcGRhdGVUaW1lKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBXYWxsVGltZSkgZmluYWw7CiAgICAg
dm9pZCBzZXRSZWdpc3RyYXRpb25VcGRhdGVWaWFDYWNoZShXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlclVwZGF0ZVZpYUNh
Y2hlKSBmaW5hbDsKICAgICB2b2lkIG5vdGlmeUNsaWVudHNPZkNvbnRyb2xsZXJDaGFuZ2UoY29u
c3QgSGFzaFNldDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4mIGNv
bnRleHRJZGVudGlmaWVycywgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckRhdGEmIG5ld0Nv
bnRyb2xsZXIpOworICAgIHZvaWQgZm9jdXNTZXJ2aWNlV29ya2VyQ2xpZW50KFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYpPiYmKSBmaW5h
bDsKIAogICAgIHZvaWQgc2NoZWR1bGVKb2JJblNlcnZlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
Sm9iRGF0YSYmKTsKIApAQCAtMTI5LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRQ
dXNoUGVybWlzc2lvblN0YXRlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPHVpbnQ4X3QsIFdlYkNvcmU6
OkV4Y2VwdGlvbkRhdGE+JiYpPiYmKTsKIAogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VX
b3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRpb24sIFdlYkNv
cmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJPckNsaWVudElkZW50aWZpZXImIHNvdXJjZSk7Ci0gICAgdm9pZCBjb250cm9sQ2xpZW50KGNv
bnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiYsIFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBXZWJDb3JlOjpTV1NlcnZlclJlZ2lzdHJh
dGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworICAgIHZvaWQgY29udHJv
bENsaWVudChjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYsIFdlYkNvcmU6OlNX
U2VydmVyUmVnaXN0cmF0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAK
ICAgICB1c2luZyBFeGNlcHRpb25PclZvaWRDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmKT47CiAgICAgdm9pZCBl
bmFibGVOYXZpZ2F0aW9uUHJlbG9hZChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllciwgRXhjZXB0aW9uT3JWb2lkQ2FsbGJhY2smJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmluZGV4IGNjZDU1Y2VhYTFm
ZTgyMjdkYWEyOTY1ZjdlZWYyYzYzZGNhNWM3MTYuLjE0YjNiNGYxMmU4MDQyMGIxYzdhOWI3YzU4
NmE5NjJlNjIwZWYyMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uY3BwCkBAIC0yNzMsNiArMjczLDQ2IEBAIHZvaWQgV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjpmb2N1cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmll
ciBjbGllCiAgICAgY29ubmVjdGlvbi0+Zm9jdXNTZXJ2aWNlV29ya2VyQ2xpZW50KGNsaWVudElk
ZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAordm9pZCBXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246Om5hdmlnYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVy
IGNsaWVudElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBjb25zdCBVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3Rl
ZDxzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiwgRXhjZXB0aW9uRGF0YT4m
Jik+JiYgY2FsbGJhY2spCit7CisgICAgYXV0byogd29ya2VyID0gU1dTZXJ2ZXJXb3JrZXI6OmV4
aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CisgICAg
aWYgKCF3b3JrZXIpIHsKKyAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9u
RGF0YSB7IFR5cGVFcnJvciwgIm5vIHNlcnZpY2Ugd29ya2VyIl9zIH0pKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGlmICghd29ya2VyLT5pc0NsaWVudEFjdGl2ZVNlcnZpY2VXb3Jr
ZXIoY2xpZW50SWRlbnRpZmllcikpIHsKKyAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQo
RXhjZXB0aW9uRGF0YSB7IFR5cGVFcnJvciwgInNlcnZpY2Ugd29ya2VyIGlzIG5vdCB0aGUgY2xp
ZW50IGFjdGl2ZSBzZXJ2aWNlIHdvcmtlciJfcyB9KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBhdXRvIGRhdGEgPSB3b3JrZXItPmZpbmRDbGllbnRCeUlkZW50aWZpZXIoY2xpZW50
SWRlbnRpZmllcik7CisgICAgaWYgKCFkYXRhIHx8ICFkYXRhLT5wYWdlSWRlbnRpZmllciB8fCAh
ZGF0YS0+ZnJhbWVJZGVudGlmaWVyKSB7CisgICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVk
KEV4Y2VwdGlvbkRhdGEgeyBUeXBlRXJyb3IsICJjYW5ub3QgbmF2aWdhdGUgc2VydmljZSB3b3Jr
ZXIgY2xpZW50Il9zIH0pKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gZnJh
bWVJZGVudGlmaWVyID0gKmRhdGEtPmZyYW1lSWRlbnRpZmllcjsKKyAgICBtX2Nvbm5lY3Rpb24u
bmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Ok5hdmlnYXRlU2VydmljZVdvcmtl
ckNsaWVudCB7IGZyYW1lSWRlbnRpZmllciwgY2xpZW50SWRlbnRpZmllciwgdXJsIH0sIFt3ZWFr
VGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBmcmFtZUlkZW50aWZpZXIsIHVybCwgY2xpZW50T3Jp
Z2luID0gd29ya2VyLT5vcmlnaW4oKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0
byBwYWdlSWRlbnRpZmllcikgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdl
YWtUaGlzLT5zZXJ2ZXIoKSkgeworICAgICAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQo
RXhjZXB0aW9uRGF0YSB7IFR5cGVFcnJvciwgInNlcnZpY2Ugd29ya2VyIGlzIGdvbmUiX3MgfSkp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFwYWdlSWRl
bnRpZmllcikgeworICAgICAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9u
RGF0YSB7IFR5cGVFcnJvciwgIm5hdmlnYXRlIGZhaWxlZCJfcyB9KSk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJD
bGllbnREYXRhPiBjbGllbnREYXRhOworICAgICAgICB3ZWFrVGhpcy0+c2VydmVyKCktPmZvckVh
Y2hDbGllbnRGb3JPcmlnaW4oY2xpZW50T3JpZ2luLCBbcGFnZUlkZW50aWZpZXIsIGZyYW1lSWRl
bnRpZmllciwgdXJsLCAmY2xpZW50RGF0YV0oYXV0byYgZGF0YSkgeworICAgICAgICAgICAgaWYg
KCFjbGllbnREYXRhICYmIGRhdGEucGFnZUlkZW50aWZpZXIgJiYgKmRhdGEucGFnZUlkZW50aWZp
ZXIgPT0gKnBhZ2VJZGVudGlmaWVyICYmIGRhdGEuZnJhbWVJZGVudGlmaWVyICYmICpkYXRhLmZy
YW1lSWRlbnRpZmllciA9PSBmcmFtZUlkZW50aWZpZXIgJiYgZXF1YWxJZ25vcmluZ0ZyYWdtZW50
SWRlbnRpZmllcihkYXRhLnVybCwgdXJsKSkKKyAgICAgICAgICAgICAgICBjbGllbnREYXRhID0g
ZGF0YTsKKyAgICAgICAgfSk7CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoY2xpZW50RGF0YSkp
OworICAgIH0sIDApOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaAppbmRleCA5ZTgzYjNkYmFiODMzMjRjZDZlZDFmMGY4MzAxNTNhNzg2
ZDJlMmRhLi40ZWQwNmUyODY5MmI0MmM4YTRjOGI2ZmIxMGEwN2M0ZDIzZDVjOWI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC0xMDAs
NiArMTAwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZpcmVOb3RpZmljYXRpb25FdmVudChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9u
RGF0YSYsIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkV2ZW50VHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZSgpIGZpbmFsOwogICAgIHZvaWQg
Zm9jdXMoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50
RGF0YT4mJik+JiYpOworICAgIHZvaWQgbmF2aWdhdGUoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25z
dCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+LCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYm
KT4mJik7CiAKICAgICB2b2lkIGNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCkgZmluYWw7CiAg
ICAgdm9pZCB0ZXJtaW5hdGVEdWVUb1VucmVzcG9uc2l2ZW5lc3MoKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluCmluZGV4IDliMGM3MGY3N2RhYjcxYzAyODQxNzgwNTJkZDQ3MjJiODI3Y2FkMTQuLmZm
NGFhODFhN2JiNDEyZjIwMjlmMWQ0NjEwNWY4OGYxMmIzODYzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5p
bgpAQCAtMzYsNiArMzYsNyBAQCBtZXNzYWdlcyAtPiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24gTm90UmVmQ291bnRlZCB7CiAgICAgTWF0Y2hBbGwodWludDY0X3QgbWF0Y2hBbGxSZXF1
ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdv
cmtlcklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlP
cHRpb25zIG9wdGlvbnMpOwogICAgIENsYWltKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpF
eGNlcHRpb25EYXRhPiByZXN1bHQpCiAgICAgRm9jdXMoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXIgc2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIpIC0+IChzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiByZXN1bHQpCisgICAg
TmF2aWdhdGUoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgY2xpZW50
SWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIFVSTCB1cmwpIC0+IChFeHBlY3RlZDxzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4gcmVzdWx0
KQogICAgIFNldFNjcmlwdFJlc291cmNlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFVSTCBzY3JpcHRVUkwsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YTo6SW1wb3J0ZWRTY3JpcHQgc2NyaXB0KQogICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNlV29y
a2VyQ2xpZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGRlc3Rp
bmF0aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMgbWVzc2FnZSwg
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlLCBTdHJpbmcgc291cmNlT3Jp
Z2luKQogICAgIERpZEZhaWxIZWFydEJlYXRDaGVjayhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggNzA5NmFmMTgwZWFjNDk2NTc2
N2Q2ZTRhZDVlY2NlMzBkMDQ2MzRhNC4uODFmNjRiOGIwNzdhY2ZiNGJmNDM0MzNkZGQ2ZWEwYmRj
NTAxMTg5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0xODA1LDYgKzE4MDUsMTcgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpvcGVuV2luZG93RnJvbVNlcnZpY2VXb3JrZXIoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELAogICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CiB9CiAKK3ZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6bmF2aWdhdGVTZXJ2aWNlV29ya2VyQ2xpZW50KFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciBmcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRJZGVudGlmaWVyIGRvY3VtZW50SWRlbnRpZmllciwgY29uc3QgVVJMJiB1cmwsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4p
PiYmIGNhbGxiYWNrKQoreworICAgIGF1dG8qIHByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OnBy
b2Nlc3NGb3JJZGVudGlmaWVyKGRvY3VtZW50SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigp
KTsKKyAgICBhdXRvKiBmcmFtZSA9IHByb2Nlc3MgPyBwcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlk
ZW50aWZpZXIpIDogbnVsbHB0cjsKKyAgICBpZiAoIWZyYW1lKSB7CisgICAgICAgIGNhbGxiYWNr
KHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZnJhbWUtPm5hdmlnYXRlU2Vydmlj
ZVdvcmtlckNsaWVudChkb2N1bWVudElkZW50aWZpZXIsIHVybCwgV1RGTW92ZShjYWxsYmFjaykp
OworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNr
Z3JvdW5kKCkKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6QXBwbGljYXRp
b25EaWRFbnRlckJhY2tncm91bmQoKSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IGFmYWI1MmQzNjMzZTVk
NDA0ZWZkOTVlY2U2ZmFlOTcxZDFhZmFkZDguLjZkOTZkMDIzZjkzOTQ4ZWRkYTVjNmFkYzcyNDMy
ZGQ2ZGM0NTRlNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0zMDQsNiArMzA0LDggQEAgcHVibGljOgogCiAg
ICAgdm9pZCBvcGVuV2luZG93RnJvbVNlcnZpY2VXb3JrZXIoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNl
cnZpY2VXb3JrZXJPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mJik+JiYpOwogCisgICAgdm9pZCBuYXZpZ2F0ZVNlcnZp
Y2VXb3JrZXJDbGllbnQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPik+JiYpOworCiBwcml2
YXRlOgogICAgIGV4cGxpY2l0IE5ldHdvcmtQcm9jZXNzUHJveHkoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5Lm1lc3NhZ2VzLmluCmluZGV4IDBmN2YxMzU5NDMzNDEzNjlhZWFkYjkwYTg4ODlhMjBjNjNh
YTBlN2UuLjAyMWZiMWE1MzE0NGE2ZGYwMzBlYjZjZGEzMjRkZDUzOTEwYzQ2YjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTkzLDYgKzkzLDcgQEAgbWVzc2FnZXMgLT4gTmV0
d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAgICAgRGF0YVRhc2tEaWRDb21wbGV0
ZVdpdGhFcnJvcihXZWJLaXQ6OkRhdGFUYXNrSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yIGVycm9yKQogCiAgICAgT3BlbldpbmRvd0Zyb21TZXJ2aWNlV29ya2Vy
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIHVybFN0cmluZywgc3RydWN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBzZXJ2aWNlV29ya2VyT3JpZ2luKSAtPiAoc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gbmV3UGFnZSkKKyAgICBOYXZpZ2F0ZVNlcnZp
Y2VXb3JrZXJDbGllbnQoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSWRlbnRpZmllciwg
V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgZG9jdW1lbnRJZGVudGlm
aWVyLCBVUkwgdXJsKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4g
cGFnZSkKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlz
aW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQ
YWdlUHJveHkuY3BwCmluZGV4IDYyYjg1YjcyNjNmMmE4MTI0NDQ0ZjBmZTI1Y2IyMjAyMjA0Mjdj
OGEuLjg4YjJlYTgzODY3MmFjNzE4NjVlYjY5YmNhZjVmYjIyY2EwMGE4N2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKQEAgLTIzOCw4
ICsyMzgsMTAgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ3JlYXRlTWFpbkZyYW1l
KEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQogCiAgICAgLy8gUmVzdG9yZSB0aGUgbWFpbiBmcmFt
ZSdzIGNvbW1pdHRlZCBVUkwgYXMgc29tZSBjbGllbnRzIG1heSByZWx5IG9uIGl0IHVudGlsIHRo
ZSBuZXh0IGxvYWQgaXMgY29tbWl0dGVkLgogICAgIFJlZlB0ciBwcmV2aW91c01haW5GcmFtZSA9
IG1fcGFnZS5tYWluRnJhbWUoKTsKLSAgICBpZiAocHJldmlvdXNNYWluRnJhbWUpCisgICAgaWYg
KHByZXZpb3VzTWFpbkZyYW1lKSB7CiAgICAgICAgIG1fbWFpbkZyYW1lLT5mcmFtZUxvYWRTdGF0
ZSgpLnNldFVSTChwcmV2aW91c01haW5GcmFtZS0+dXJsKCkpOworICAgICAgICBwcmV2aW91c01h
aW5GcmFtZS0+dHJhbnNmZXJOYXZpZ2F0aW9uQ2FsbGJhY2tUb0ZyYW1lKCptX21haW5GcmFtZSk7
CisgICAgfQogCiAgICAgLy8gTm9ybWFsbHksIG5vdGlmaWNhdGlvbiBvZiBhIHNlcnZlciByZWRp
cmVjdCBjb21lcyBmcm9tIHRoZSBXZWJDb250ZW50IHByb2Nlc3MuCiAgICAgLy8gSWYgd2UgYXJl
IHByb2Nlc3Mgc3dhcHBpbmcgaW4gcmVzcG9uc2UgdG8gYSBzZXJ2ZXIgcmVkaXJlY3QgdGhlbiB0
aGF0IG5vdGlmaWNhdGlvbiB3aWxsIG5vdCBjb21lIGZyb20gdGhlIG5ldyBXZWJDb250ZW50IHBy
b2Nlc3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCmluZGV4IGQ0
NGE1ZGJlNmEzZjI2NjMwYjM0OTEzMjQ0ZTdlNDNiMmMxZjE2MzEuLjU4NDNjOWVmNDcxNWM2NmE1
MDllMTg0ZGFiNDg4OTBlZTAxNjQ0ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkZyYW1lUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZy
YW1lUHJveHkuY3BwCkBAIC01OCw2ICs1OCw5IEBAIFdlYkZyYW1lUHJveHk6On5XZWJGcmFtZVBy
b3h5KCkKICNpZiBQTEFURk9STShHVEspCiAgICAgV2ViUGFzdGVib2FyZFByb3h5OjpzaW5nbGV0
b24oKS5kaWREZXN0cm95RnJhbWUodGhpcyk7CiAjZW5kaWYKKworICAgIGlmIChtX25hdmlnYXRl
Q2FsbGJhY2spCisgICAgICAgIG1fbmF2aWdhdGVDYWxsYmFjayh7IH0pOwogfQogCiB2b2lkIFdl
YkZyYW1lUHJveHk6OndlYlByb2Nlc3NXaWxsU2h1dERvd24oKQpAQCAtNjgsNiArNzEsOSBAQCB2
b2lkIFdlYkZyYW1lUHJveHk6OndlYlByb2Nlc3NXaWxsU2h1dERvd24oKQogICAgICAgICBtX2Fj
dGl2ZUxpc3RlbmVyLT5pZ25vcmUoKTsKICAgICAgICAgbV9hY3RpdmVMaXN0ZW5lciA9IG51bGxw
dHI7CiAgICAgfQorCisgICAgaWYgKG1fbmF2aWdhdGVDYWxsYmFjaykKKyAgICAgICAgbV9uYXZp
Z2F0ZUNhbGxiYWNrKHsgfSk7CiB9CiAKIGJvb2wgV2ViRnJhbWVQcm94eTo6aXNNYWluRnJhbWUo
KSBjb25zdApAQCAtNzgsNiArODQsMzggQEAgYm9vbCBXZWJGcmFtZVByb3h5Ojppc01haW5GcmFt
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHRoaXMgPT0gbV9wYWdlLT5tYWluRnJhbWUoKSB8fCAobV9w
YWdlLT5wcm92aXNpb25hbFBhZ2VQcm94eSgpICYmIHRoaXMgPT0gbV9wYWdlLT5wcm92aXNpb25h
bFBhZ2VQcm94eSgpLT5tYWluRnJhbWUoKSk7CiB9CiAKK3N0ZDo6b3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IFdlYkZyYW1lUHJveHk6OnBhZ2VJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICBpZiAo
IW1fcGFnZSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gbV9wYWdlLT53ZWJQYWdl
SUQoKTsKK30KKwordm9pZCBXZWJGcmFtZVByb3h5OjpuYXZpZ2F0ZVNlcnZpY2VXb3JrZXJDbGll
bnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgZG9jdW1lbnRJZGVu
dGlmaWVyLCBjb25zdCBVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPik+JiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFtX3BhZ2UpIHsK
KyAgICAgICAgY2FsbGJhY2soeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1f
cGFnZS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpOYXZpZ2F0ZVNlcnZp
Y2VXb3JrZXJDbGllbnQgeyBkb2N1bWVudElkZW50aWZpZXIsIHVybCB9LCBbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHVybCwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0oYm9vbCByZXN1bHQpIG11dGFibGUgeworICAgICAgICBpZiAoIXJlc3VsdCkgeworICAgICAg
ICAgICAgY2FsbGJhY2soeyB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICghbV9hY3RpdmVMaXN0ZW5lcikgeworICAgICAgICAgICAgY2FsbGJhY2socGFn
ZUlkZW50aWZpZXIoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBpZiAobV9uYXZpZ2F0ZUNhbGxiYWNrKQorICAgICAgICAgICAgbV9uYXZpZ2F0ZUNhbGxiYWNr
KHsgfSk7CisKKyAgICAgICAgbV9uYXZpZ2F0ZUNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7
CisgICAgfSk7Cit9CisKIHZvaWQgV2ViRnJhbWVQcm94eTo6bG9hZFVSTChjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKIHsKICAgICBpZiAoIW1fcGFnZSkKQEAgLTk1LDcg
KzEzMyw3IEBAIHZvaWQgV2ViRnJhbWVQcm94eTo6bG9hZERhdGEoY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUCiAgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpMb2FkRGF0YUluRnJhbWUoZGF0YSwgTUlNRVR5cGUsIGVuY29kaW5nTmFt
ZSwgYmFzZVVSTCwgbV9mcmFtZUlEKSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVQcm94eTo6c3RvcExv
YWRpbmcoKSBjb25zdAordm9pZCBXZWJGcmFtZVByb3h5OjpzdG9wTG9hZGluZygpCiB7CiAgICAg
aWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKQEAgLTEwNCw2ICsxNDIsOSBAQCB2b2lkIFdl
YkZyYW1lUHJveHk6OnN0b3BMb2FkaW5nKCkgY29uc3QKICAgICAgICAgcmV0dXJuOwogCiAgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdG9wTG9hZGluZ0ZyYW1lKG1fZnJhbWVJ
RCkpOworCisgICAgaWYgKG1fbmF2aWdhdGVDYWxsYmFjaykKKyAgICAgICAgbV9uYXZpZ2F0ZUNh
bGxiYWNrKHsgfSk7CiB9CiAgICAgCiBib29sIFdlYkZyYW1lUHJveHk6OmNhblByb3ZpZGVTb3Vy
Y2UoKSBjb25zdApAQCAtMTYwLDYgKzIwMSw5IEBAIHZvaWQgV2ViRnJhbWVQcm94eTo6ZGlkUmVj
ZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFVSTCYgdXJsKQogdm9p
ZCBXZWJGcmFtZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkKCkKIHsKICAgICBtX2ZyYW1l
TG9hZFN0YXRlLmRpZEZhaWxQcm92aXNpb25hbExvYWQoKTsKKworICAgIGlmIChtX25hdmlnYXRl
Q2FsbGJhY2spCisgICAgICAgIG1fbmF2aWdhdGVDYWxsYmFjayh7IH0pOwogfQogCiB2b2lkIFdl
YkZyYW1lUHJveHk6OmRpZENvbW1pdExvYWQoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgV2Vi
Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1
bWVudCkKQEAgLTE3NSwxMSArMjE5LDE3IEBAIHZvaWQgV2ViRnJhbWVQcm94eTo6ZGlkQ29tbWl0
TG9hZChjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBXZWJDZXJ0aWZpY2F0ZUluZm8mCiB2b2lk
IFdlYkZyYW1lUHJveHk6OmRpZEZpbmlzaExvYWQoKQogewogICAgIG1fZnJhbWVMb2FkU3RhdGUu
ZGlkRmluaXNoTG9hZCgpOworCisgICAgaWYgKG1fbmF2aWdhdGVDYWxsYmFjaykKKyAgICAgICAg
bV9uYXZpZ2F0ZUNhbGxiYWNrKHBhZ2VJZGVudGlmaWVyKCkpOwogfQogCiB2b2lkIFdlYkZyYW1l
UHJveHk6OmRpZEZhaWxMb2FkKCkKIHsKICAgICBtX2ZyYW1lTG9hZFN0YXRlLmRpZEZhaWxMb2Fk
KCk7CisKKyAgICBpZiAobV9uYXZpZ2F0ZUNhbGxiYWNrKQorICAgICAgICBtX25hdmlnYXRlQ2Fs
bGJhY2soeyB9KTsKIH0KIAogdm9pZCBXZWJGcmFtZVByb3h5OjpkaWRTYW1lRG9jdW1lbnROYXZp
Z2F0aW9uKGNvbnN0IFVSTCYgdXJsKQpAQCAtMTk3LDYgKzI0Nyw5IEBAIFdlYkZyYW1lUG9saWN5
TGlzdGVuZXJQcm94eSYgV2ViRnJhbWVQcm94eTo6c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KENv
bXBsZXRpb25ICiAgICAgaWYgKG1fYWN0aXZlTGlzdGVuZXIpCiAgICAgICAgIG1fYWN0aXZlTGlz
dGVuZXItPmlnbm9yZSgpOwogICAgIG1fYWN0aXZlTGlzdGVuZXIgPSBXZWJGcmFtZVBvbGljeUxp
c3RlbmVyUHJveHk6OmNyZWF0ZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChQb2xpY3lB
Y3Rpb24gYWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyogcG9saWNpZXMsIFByb2Nlc3NTd2Fw
UmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNh
ZmVCcm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZywgc3RkOjpvcHRpb25hbDxO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikg
bXV0YWJsZSB7CisgICAgICAgIGlmIChhY3Rpb24gIT0gUG9saWN5QWN0aW9uOjpVc2UgJiYgbV9u
YXZpZ2F0ZUNhbGxiYWNrKQorICAgICAgICAgICAgbV9uYXZpZ2F0ZUNhbGxiYWNrKHBhZ2VJZGVu
dGlmaWVyKCkpOworCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGFjdGlvbiwgcG9saWNpZXMs
IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFdURk1vdmUoc2FmZUJyb3dzaW5nV2Fybmlu
ZyksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOwogICAgICAgICBtX2FjdGl2ZUxpc3Rl
bmVyID0gbnVsbHB0cjsKICAgICB9LCBleHBlY3RTYWZlQnJvd3NpbmdSZXN1bHQsIGV4cGVjdEFw
cEJvdW5kRG9tYWluUmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkZyYW1lUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHku
aAppbmRleCAzOTFiMDI3MzYyODM0MWVkYWE4ODMwYjM3NGYwZmIxMzEyNDAxNzJhLi42MDZlYzAy
ZGQ0OWYxNWU3NzUzMmRiNTIzZWQyMTc4ZGRmMjQzOTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViRnJhbWVQcm94eS5oCkBAIC03NywxMCArNzcsMTIgQEAgcHVibGljOgogCiAgICAgRnJh
bWVMb2FkU3RhdGUmIGZyYW1lTG9hZFN0YXRlKCkgeyByZXR1cm4gbV9mcmFtZUxvYWRTdGF0ZTsg
fQogCisgICAgdm9pZCBuYXZpZ2F0ZVNlcnZpY2VXb3JrZXJDbGllbnQoV2ViQ29yZTo6U2NyaXB0
RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIsIGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4pPiYmKTsKKwogICAg
IHZvaWQgbG9hZFVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyID0gU3RyaW5n
KCkpOwogICAgIC8vIFN1YiBmcmFtZXMgb25seS4gRm9yIG1haW4gZnJhbWVzLCB1c2UgV2ViUGFn
ZVByb3h5Ojpsb2FkRGF0YS4KICAgICB2b2lkIGxvYWREYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1l
LCBjb25zdCBVUkwmIGJhc2VVUkwpOwotICAgIHZvaWQgc3RvcExvYWRpbmcoKSBjb25zdDsKKyAg
ICB2b2lkIHN0b3BMb2FkaW5nKCk7CiAKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0
dXJuIG1fZnJhbWVMb2FkU3RhdGUudXJsKCk7IH0KICAgICBjb25zdCBVUkwmIHByb3Zpc2lvbmFs
VVJMKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUxvYWRTdGF0ZS5wcm92aXNpb25hbFVSTCgpOyB9
CkBAIC0xMjgsOSArMTMwLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbGxhcHNlU2VsZWN0aW9u
KCk7CiAjZW5kaWYKIAorICAgIHZvaWQgdHJhbnNmZXJOYXZpZ2F0aW9uQ2FsbGJhY2tUb0ZyYW1l
KFdlYkZyYW1lUHJveHkmIGZyYW1lKSB7IGZyYW1lLm1fbmF2aWdhdGVDYWxsYmFjayA9IFdURk1v
dmUobV9uYXZpZ2F0ZUNhbGxiYWNrKTsgfQorCiBwcml2YXRlOgogICAgIFdlYkZyYW1lUHJveHko
V2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKIAorICAgIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJZGVudGlmaWVyKCkgY29uc3Q7CisK
ICAgICBXZWFrUHRyPFdlYlBhZ2VQcm94eT4gbV9wYWdlOwogCiAgICAgRnJhbWVMb2FkU3RhdGUg
bV9mcmFtZUxvYWRTdGF0ZTsKQEAgLTE0NCw2ICsxNTAsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklORykKICAgICBXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXIgbV9jb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI7CiAjZW5kaWYKKyAgICBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+KT4g
bV9uYXZpZ2F0ZUNhbGxiYWNrOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggNjRmYmJhNGZhY2Y3MmYxOWMyOWI3MzM4
MjAyMjRmODM3MGZmMTEzMC4uNWY0NDlkMzIyZGIwOWQ0YTVjZmRlNzBiNDYyNzAwMTkzNjk5Mzg1
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMzU1LDYgKzM1NSwx
NyBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpjbGFpbShTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySQogICAgIH0pOwogfQogCit2b2lkIFdlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjpuYXZpZ2F0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRl
bnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgY29uc3QgVVJMJiB1cmwsIE5hdmlnYXRlQ2FsbGJhY2smJiBjYWxs
YmFjaykKK3sKKyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6TmF2aWdhdGUg
eyBjbGllbnRJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgdXJsIH0sIFtjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAg
ICAgaWYgKCFyZXN1bHQuaGFzX3ZhbHVlKCkpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKFdURk1v
dmUocmVzdWx0KS5lcnJvcigpLnRvRXhjZXB0aW9uKCkpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVzdWx0KS52YWx1ZSgpKTsKKyAg
ICB9KTsKK30KKwogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Zm9jdXMoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRE
YXRhPiYmKT4mJiBjYWxsYmFjaykKIHsKICAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
LT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6Rm9jdXMgeyBjbGllbnRJZGVudGlmaWVyIH0sIFdURk1vdmUoY2FsbGJhY2spKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCmluZGV4IDNiNTA1YzcyMDBjM2NmMDAzY2E4ZTJl
M2FiNDVhMDIyYmFjN2U4ODQuLmFiNzM4MTljYTFiMzA3N2E4MDdiNjUwM2ZlNTZhN2M1MzlmMmYw
MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaApAQCAtODIsNiArODIsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgbWF0Y2hBbGwoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMmLCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50c01hdGNoQWxsQ2FsbGJhY2smJikgZmluYWw7CiAgICAg
dm9pZCBjbGFpbShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChXZWJDb3JlOjpFeGNlcHRpb25Pcjx2b2lkPiYmKT4mJikgZmluYWw7CiAgICAg
dm9pZCBmb2N1cyhXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJD
bGllbnREYXRhPiYmKT4mJikgZmluYWw7CisgICAgdm9pZCBuYXZpZ2F0ZShXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIsIGNvbnN0IFVSTCYsIE5hdmlnYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBz
a2lwV2FpdGluZyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKICAgICB2b2lkIHNldFNjcmlwdFJlc291cmNlKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBjb25zdCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0JikgZmluYWw7CiAgICAgYm9v
bCBpc1Rocm90dGxlYWJsZSgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBhMmUxYzEzMTUwNTI3YTJlMDE2NTA3MTJiNDlk
ZTdlZTkxZTY5NTBjLi44Zjk2ZGE5ODdiYmE4YWRiMmIxMGRhZjc5YzY3MTk1YTI1MmU0YWRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNjQz
OSw2ICs2NDM5LDIyIEBAIHZvaWQgV2ViUGFnZTo6aW50ZXJhY3Rpb25SZWdpb25zKEZsb2F0UmVj
dCByZWN0SW5Db250ZW50Q29vcmRpbmF0ZXMsIENvbXBsZXRpb25ICiAgICAgY29tcGxldGlvbkhh
bmRsZXIoV2ViQ29yZTo6aW50ZXJhY3Rpb25SZWdpb25zKCptX3BhZ2UsIHJlY3RJbkNvbnRlbnRD
b29yZGluYXRlcykpOwogfQogCit2b2lkIFdlYlBhZ2U6Om5hdmlnYXRlU2VydmljZVdvcmtlckNs
aWVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBkb2N1bWVudElkZW50aWZpZXIs
IGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNr
KQoreworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBSZWZQdHIgZG9jdW1lbnQgPSBE
b2N1bWVudDo6YWxsRG9jdW1lbnRzTWFwKCkuZ2V0KGRvY3VtZW50SWRlbnRpZmllcik7CisgICAg
aWYgKCFkb2N1bWVudCkgeworICAgICAgICBjYWxsYmFjayhmYWxzZSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgZG9jdW1lbnQtPm5hdmlnYXRlRnJvbVNlcnZpY2VXb3JrZXIodXJsLCBX
VEZNb3ZlKGNhbGxiYWNrKSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShkb2N1bWVudElkZW50
aWZpZXIpOworICAgIFVOVVNFRF9QQVJBTSh1cmwpOworICAgIGNhbGxiYWNrKGZhbHNlKTsKKyNl
bmRpZgorfQorCiB2b2lkIFdlYlBhZ2U6OnNldEFsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVy
KGJvb2wgYWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIpCiB7CiAgICAgaWYgKGFsd2F5c1No
b3dzSG9yaXpvbnRhbFNjcm9sbGVyID09IG1fYWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMWVlNzRm
NGQ5MjM3ZWEwODljMjg5ZmMxMTRhNjA5NzM4YzM1OTI1Yy4uODUxZDM0YjRhMTgwZDZjMzdkZDg2
YTE5MjYwMTY2ZjlhYjlkNTViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaApAQCAtOTQ1LDYgKzk0NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEVuZFVz
ZXJUcmlnZ2VyZWRTZWxlY3Rpb25DaGFuZ2VzKCk7CiAKICAgICB2b2lkIGludGVyYWN0aW9uUmVn
aW9ucyhXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdEluQ29udGVudENvb3JkaW5hdGVzLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpJbnRlcmFjdGlvblJlZ2lvbj4pPiYmKTsK
KyAgICB2b2lkIG5hdmlnYXRlU2VydmljZVdvcmtlckNsaWVudChXZWJDb3JlOjpTY3JpcHRFeGVj
dXRpb25Db250ZXh0SWRlbnRpZmllciwgY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHBsYXRmb3JtSW5p
dGlhbGl6ZUFjY2Vzc2liaWxpdHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDJmYmRlYzhiOGNjMjRlYTIxMmJh
MmVhYzI1Y2M5ZTNkZWRhZTU2NjYuLmVlODExMzhjNGJmYTE1YTMyOGQ5YTZhODU4NTE4NGZhMjNh
MzM5NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgpAQCAtNjgzLDQgKzY4Myw2IEBAIEdlbmVyYXRlU3ludGhldGljRWRp
dGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRU
eXBlCiAgICAgU2Nyb2xsVG9SZWN0KFdlYkNvcmU6OkZsb2F0UmVjdCB0YXJnZXRSZWN0LCBXZWJD
b3JlOjpGbG9hdFBvaW50IG9yaWdpbikKIAogICAgIEludGVyYWN0aW9uUmVnaW9ucyhXZWJDb3Jl
OjpGbG9hdFJlY3QgcmVjdEluQ29udGVudENvb3JkaW5hdGVzKSAtPiAoVmVjdG9yPFdlYkNvcmU6
OkludGVyYWN0aW9uUmVnaW9uPiByZWdpb25zKQorCisgICAgTmF2aWdhdGVTZXJ2aWNlV29ya2Vy
Q2xpZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGRvY3VtZW50
SWRlbnRpZmllciwgVVJMIHVybCkgLT4gKGJvb2wgcmVzdWx0KQogfQpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDhmNWFjMjNlMjk3YmQ2YmM3M2U3
Mjc4MDhhMmM2MWM1YmFiM2Y0ZDEuLmI4NjdkZDFmMzRhMWJjYjQ5NTM1MWM3NTE2Mjk5Yjg1Mjlh
Y2FhYzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMiBAQAorMjAyMi0wNC0wNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQubmF2
aWdhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
ODczOAorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW06CisKIDIw
MjItMDQtMDUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFNl
cnZpY2VXb3JrZXJDbGllbnRzLm9wZW5XaW5kb3cgc2hvdWxkIG5vdCBuZWVkIHRvIGdldCBhbGwg
Y2xpZW50cyBhc3luY2hyb25vdXNseSB0byByZXNvbHZlIGl0cyBwcm9taXNlCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNp
Yy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtl
ckJhc2ljLm1tCmluZGV4IDU5Y2JlMGQ1ZDFkMGM0NzNiZjlmMDUyOGZlZGExY2JiNzU2OTg2MmUu
LmJmMWMxYTAxZTMxMWM1NWQxMTRlMGFjMTg1MWNiNTgwMTZhOTQ0MjIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtl
ckJhc2ljLm1tCkBAIC0zMDQ3LDMgKzMwNDcsMTcyIEBAIFRFU1QoU2VydmljZVdvcmtlciwgb3Bl
bldpbmRvd1dpdGhvdXREZWxlZ2F0ZSkKICAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6
QCJvcGVuV2luZG93Q2xpZW50KCkiIGNvbXBsZXRpb25IYW5kbGVyOiBuaWxdOwogICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiB9CisKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBT
ZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50TmF2aWdhdGVNYWluID0KKyI8ZGl2PnRlc3QgcGFnZTwv
ZGl2PiIKKyI8c2NyaXB0PiIKKyJsZXQgd29ya2VyOyIKKyJhc3luYyBmdW5jdGlvbiByZWdpc3Rl
clNlcnZpY2VXb3JrZXIoKSB7IgorIiAgICB0cnkgeyIKKyIgICAgICAgIGNvbnN0IHJlZ2lzdHJh
dGlvbiA9IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKTsi
CisiICAgICAgICBpZiAocmVnaXN0cmF0aW9uLmFjdGl2ZSkgeyIKKyIgICAgICAgICAgICB3b3Jr
ZXIgPSByZWdpc3RyYXRpb24uYWN0aXZlOyIKKyIgICAgICAgICAgICBhbGVydCgnYWxyZWFkeSBh
Y3RpdmUnKTsiCisiICAgICAgICAgICAgcmV0dXJuOyIKKyIgICAgICAgIH0iCisiICAgICAgICB3
b3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFsbGluZzsiCisiICAgICAgICB3b3JrZXIuYWRkRXZl
bnRMaXN0ZW5lcignc3RhdGVjaGFuZ2UnLCAoKSA9PiB7IgorIiAgICAgICAgICAgIGlmICh3b3Jr
ZXIuc3RhdGUgPT0gJ2FjdGl2YXRlZCcpIgorIiAgICAgICAgICAgICAgICBhbGVydCgnc3VjY2Vz
c2Z1bGx5IHJlZ2lzdGVyZWQnKTsiCisiICAgICAgICB9KTsiCisiICAgIH0gY2F0Y2goZSkgeyIK
KyIgICAgICAgIGFsZXJ0KCdFeGNlcHRpb246ICcgKyBlKTsiCisiICAgIH0iCisifSIKKyJ3aW5k
b3cub25sb2FkID0gcmVnaXN0ZXJTZXJ2aWNlV29ya2VyOyIKKyIiCisiZnVuY3Rpb24gbmF2aWdh
dGVPdGhlckNsaWVudFRvVVJMKHVybCkgeyIKKyIgICAgd29ya2VyLnBvc3RNZXNzYWdlKHtuYXZp
Z2F0ZU90aGVyQ2xpZW50VG9VUkw6IHVybH0pOyIKKyIgICAgbmF2aWdhdG9yLnNlcnZpY2VXb3Jr
ZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiB7IgorIiAgICAgICAgYWxlcnQoZXZlbnQuZGF0YSk7
IgorIiAgICB9OyIKKyJ9IgorIjwvc2NyaXB0PiJfczsKKworc3RhdGljIGNvbnN0ZXhwciBhdXRv
IFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnROYXZpZ2F0ZUpTID0KKyJzZWxmLmFkZEV2ZW50TGlz
dGVuZXIoJ21lc3NhZ2UnLCBhc3luYyAoZXZlbnQpID0+IHsiCisiICAgaWYgKGV2ZW50LmRhdGEg
JiYgZXZlbnQuZGF0YS5uYXZpZ2F0ZU90aGVyQ2xpZW50VG9VUkwpIHsiCisiICAgICAgIGxldCBv
dGhlckNsaWVudDsiCisiICAgICAgIGxldCBjdXJyZW50Q2xpZW50cyA9IGF3YWl0IHNlbGYuY2xp
ZW50cy5tYXRjaEFsbCgpOyIKKyIgICAgICAgZm9yIChsZXQgY2xpZW50IG9mIGN1cnJlbnRDbGll
bnRzKSB7IgorIiAgICAgICAgICAgaWYgKGNsaWVudC5pZCAhPT0gZXZlbnQuc291cmNlLmlkKSIK
KyIgICAgICAgICAgICAgICBvdGhlckNsaWVudCA9IGNsaWVudDsiCisiICAgICAgIH0iCisiICAg
ICAgIGlmICghb3RoZXJDbGllbnQpIHsiCisiICAgICAgICAgICBldmVudC5zb3VyY2UucG9zdE1l
c3NhZ2UoJ2ZhaWxlZCwgbm8gb3RoZXIgY2xpZW50LCBjbGllbnQgbnVtYmVyID0gJyArIGN1cnJl
bnRDbGllbnRzLmxlbmd0aCk7IgorIiAgICAgICAgICAgcmV0dXJuOyIKKyIgICAgICAgfSIKKyIg
ICAgICAgYXdhaXQgb3RoZXJDbGllbnQubmF2aWdhdGUoZXZlbnQuZGF0YS5uYXZpZ2F0ZU90aGVy
Q2xpZW50VG9VUkwpLnRoZW4oKGNsaWVudCkgPT4geyIKKyIgICAgICAgICAgIGV2ZW50LnNvdXJj
ZS5wb3N0TWVzc2FnZShjbGllbnQgPyAnY2xpZW50JyA6ICdub25lJyk7IgorIiAgICAgICB9LCAo
ZSkgPT4geyIKKyIgICAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgnZmFpbGVkJyk7
IgorIiAgICAgICB9KTsiCisiICAgICAgIHJldHVybjsiCisiICAgfSIKKyJ9KTsiX3M7CisKKwor
QGludGVyZmFjZSBTZXJ2aWNlV29ya2VyUFNPTk5hdmlnYXRpb25EZWxlZ2F0ZSA6IE5TT2JqZWN0
IDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+IHsKKyAgICBAcHVibGljIHZvaWQgKF5kZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKShXS05hdmlnYXRpb25BY3Rpb24gKiwgdm9pZCAo
XikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KSk7CisgICAgQHB1YmxpYyB2b2lkICheZGlkU3Rh
cnRQcm92aXNpb25hbE5hdmlnYXRpb25IYW5kbGVyKSgpOworICAgIEBwdWJsaWMgdm9pZCAoXmRp
ZENvbW1pdE5hdmlnYXRpb25IYW5kbGVyKSgpOworfQorQGVuZAorCitAaW1wbGVtZW50YXRpb24g
U2VydmljZVdvcmtlclBTT05OYXZpZ2F0aW9uRGVsZWdhdGUKKworLSAoaW5zdGFuY2V0eXBlKSBp
bml0Cit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICByZXR1cm4gc2VsZjsKK30KKwor
LSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gZGVjaXNp
b25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKWRlY2lzaW9uSGFu
ZGxlcgoreworICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxv
dyk7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6KFdLTmF2aWdhdGlvblJlc3BvbnNlICopbmF2aWdhdGlv
blJlc3BvbnNlIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQ
b2xpY3kpKWRlY2lzaW9uSGFuZGxlcgoreworICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRp
b25SZXNwb25zZVBvbGljeUFsbG93KTsKK30KKworQGVuZAorCitURVNUKFNlcnZpY2VXb3JrZXIs
IFdpbmRvd0NsaWVudE5hdmlnYXRlKQoreworICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93
V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CisKKyAgICAvLyBTdGFydCB3aXRoIGEg
Y2xlYW4gc2xhdGUgZGF0YSBzdG9yZQorICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHRE
YXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0
ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9u
SGFuZGxlcjpeKCkgeworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIGF1dG8g
Y29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7CisgICAgZm9yIChfV0tFeHBlcmltZW50YWxGZWF0dXJlICpmZWF0dXJlIGluIFtXS1By
ZWZlcmVuY2VzIF9leHBlcmltZW50YWxGZWF0dXJlc10pIHsKKyAgICAgICAgaWYgKFtmZWF0dXJl
LmtleSBpc0VxdWFsVG9TdHJpbmc6QCJDcm9zc09yaWdpbk9wZW5lclBvbGljeUVuYWJsZWQiXSkK
KyAgICAgICAgICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEVuYWJsZWQ6WUVT
IGZvckV4cGVyaW1lbnRhbEZlYXR1cmU6ZmVhdHVyZV07CisgICAgICAgIGVsc2UgaWYgKFtmZWF0
dXJlLmtleSBpc0VxdWFsVG9TdHJpbmc6QCJDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5RW5hYmxl
ZCJdKQorICAgICAgICAgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxl
ZDpZRVMgZm9yRXhwZXJpbWVudGFsRmVhdHVyZTpmZWF0dXJlXTsKKyAgICB9CisKKyAgICBhdXRv
IHdlYlZpZXcxID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCAzMDAsIDMwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdl
dCgpIGFkZFRvV2luZG93OllFU10pOworICAgIGF1dG8gd2ViVmlldzIgPSBhZG9wdE5TKFtbVGVz
dFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDMwMCwgMzAw
KSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgYWRkVG9XaW5kb3c6WUVTXSk7CisK
KyAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7CisgICAgICAgIHsgIi8iX3Ms
IHsgU2VydmljZVdvcmtlcldpbmRvd0NsaWVudE5hdmlnYXRlTWFpbiB9IH0sCisgICAgICAgIHsg
Ii8/dGVzdCJfcywgeyBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50TmF2aWdhdGVNYWluIH0gfSwK
KyAgICAgICAgeyAiLz9zd2FwIl9zLCB7IHt7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlv
bi9odG1sIl9zIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5Il9zLCAic2FtZS1vcmln
aW4iX3MgfSB9LCBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50TmF2aWdhdGVNYWluIH0gfSwKKyAg
ICAgICAgeyAiL3N3LmpzIl9zLCB7IHt7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9q
YXZhc2NyaXB0Il9zIH19LCBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50TmF2aWdhdGVKUyB9IH0K
KyAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cCwgbnVsbHB0
ciwgbnVsbHB0ciwgODA5MSk7CisKKyAgICBbd2ViVmlldzEgbG9hZFJlcXVlc3Q6c2VydmVyLnJl
cXVlc3QoKV07CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3MSBfdGVzdF93YWl0Rm9yQWxl
cnRdLCAic3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQiKTsKKyAgICBbd2ViVmlldzIgbG9hZFJlcXVl
c3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3MiBfdGVz
dF93YWl0Rm9yQWxlcnRdLCAiYWxyZWFkeSBhY3RpdmUiKTsKKworICAgIGF1dG8gbmF2aWdhdGlv
bkRlbGVnYXRlID0gYWRvcHROUyhbW1NlcnZpY2VXb3JrZXJQU09OTmF2aWdhdGlvbkRlbGVnYXRl
IGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcyIHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpuYXZp
Z2F0aW9uRGVsZWdhdGUuZ2V0KCldOworCisgICAgYXV0byAqYmFzZVVSTCA9IFtbc2VydmVyLnJl
cXVlc3QoKSBVUkxdIGFic29sdXRlU3RyaW5nXTsKKworICAgIFt3ZWJWaWV3MSBldmFsdWF0ZUph
dmFTY3JpcHQ6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJuYXZpZ2F0ZU90aGVyQ2xpZW50
VG9VUkwoJyVAJykiLCBiYXNlVVJMXSBjb21wbGV0aW9uSGFuZGxlcjogbmlsXTsKKyAgICBFWFBF
Q1RfV0tfU1RSRVEoW3dlYlZpZXcxIF90ZXN0X3dhaXRGb3JBbGVydF0sICJjbGllbnQiKTsKKwor
ICAgIFt3ZWJWaWV3MSBldmFsdWF0ZUphdmFTY3JpcHQ6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCJuYXZpZ2F0ZU90aGVyQ2xpZW50VG9VUkwoJyVAI3Rlc3QnKSIsIGJhc2VVUkxdIGNvbXBs
ZXRpb25IYW5kbGVyOiBuaWxdOworICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldzEgX3Rlc3Rf
d2FpdEZvckFsZXJ0XSwgImNsaWVudCIpOworCisgICAgW3dlYlZpZXcxIGV2YWx1YXRlSmF2YVNj
cmlwdDpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIm5hdmlnYXRlT3RoZXJDbGllbnRUb1VS
TCgnJUA/dGVzdCcpIiwgYmFzZVVSTF0gY29tcGxldGlvbkhhbmRsZXI6IG5pbF07CisgICAgRVhQ
RUNUX1dLX1NUUkVRKFt3ZWJWaWV3MSBfdGVzdF93YWl0Rm9yQWxlcnRdLCAiY2xpZW50Iik7CisK
KyAgICBbd2ViVmlldzEgZXZhbHVhdGVKYXZhU2NyaXB0OltOU1N0cmluZyBzdHJpbmdXaXRoRm9y
bWF0OkAibmF2aWdhdGVPdGhlckNsaWVudFRvVVJMKCclQD9zd2FwJykiLCBiYXNlVVJMXSBjb21w
bGV0aW9uSGFuZGxlcjogbmlsXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcxIF90ZXN0
X3dhaXRGb3JBbGVydF0sICJjbGllbnQiKTsKK30KKworVEVTVChTZXJ2aWNlV29ya2VyLCBXaW5k
b3dDbGllbnROYXZpZ2F0ZUNyb3NzT3JpZ2luKQoreworICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUg
X2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CisKKyAgICAvLyBTdGFydCB3
aXRoIGEgY2xlYW4gc2xhdGUgZGF0YSBzdG9yZQorICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRl
ZmF1bHREYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxs
V2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21w
bGV0aW9uSGFuZGxlcjpeKCkgeworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAg
IGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7CisKKyAgICBhdXRvIHdlYlZpZXcxID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAzMDAsIDMwMCkgY29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIGFkZFRvV2luZG93OllFU10pOworICAgIGF1dG8g
d2ViVmlldzIgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDMwMCwgMzAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0
KCkgYWRkVG9XaW5kb3c6WUVTXSk7CisKKyAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNl
cnZlcjEoeworICAgICAgICB7ICIvIl9zLCB7IFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnROYXZp
Z2F0ZU1haW4gfSB9LAorICAgICAgICB7ICIvP3Rlc3QiX3MsIHsgU2VydmljZVdvcmtlcldpbmRv
d0NsaWVudE5hdmlnYXRlTWFpbiB9IH0sCisgICAgICAgIHsgIi8/c3dhcCJfcywgeyB7eyAiQ29u
dGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vaHRtbCJfcyB9LCB7ICJDcm9zcy1PcmlnaW4tT3Bl
bmVyLVBvbGljeSJfcywgInNhbWUtb3JpZ2luIl9zIH0gfSwgU2VydmljZVdvcmtlcldpbmRvd0Ns
aWVudE5hdmlnYXRlTWFpbiB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVu
dC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwgU2VydmljZVdvcmtlcldp
bmRvd0NsaWVudE5hdmlnYXRlSlMgfSB9CisgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZl
cjo6UHJvdG9jb2w6Okh0dHAsIG51bGxwdHIsIG51bGxwdHIsIDgwOTEpOworCisgICAgVGVzdFdl
YktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIyKHsKKyAgICAgICAgeyAiLyJfcywgeyBTZXJ2aWNl
V29ya2VyV2luZG93Q2xpZW50TmF2aWdhdGVNYWluIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9z
LCB7IHt7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH19LCBT
ZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50TmF2aWdhdGVKUyB9IH0KKyAgICB9LCBUZXN0V2ViS2l0
QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cCwgbnVsbHB0ciwgbnVsbHB0ciwgOTA5MSk7
CisKKyAgICBbd2ViVmlldzEgbG9hZFJlcXVlc3Q6c2VydmVyMS5yZXF1ZXN0KCldOworICAgIEVY
UEVDVF9XS19TVFJFUShbd2ViVmlldzEgX3Rlc3Rfd2FpdEZvckFsZXJ0XSwgInN1Y2Nlc3NmdWxs
eSByZWdpc3RlcmVkIik7CisgICAgW3dlYlZpZXcyIGxvYWRSZXF1ZXN0OnNlcnZlcjEucmVxdWVz
dCgpXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcyIF90ZXN0X3dhaXRGb3JBbGVydF0s
ICJhbHJlYWR5IGFjdGl2ZSIpOworICAgIFt3ZWJWaWV3MSBldmFsdWF0ZUphdmFTY3JpcHQ6W05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJuYXZpZ2F0ZU90aGVyQ2xpZW50VG9VUkwoJyVAJyki
LCBbW3NlcnZlcjIucmVxdWVzdCgpIFVSTF0gYWJzb2x1dGVTdHJpbmddXSBjb21wbGV0aW9uSGFu
ZGxlcjogbmlsXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcxIF90ZXN0X3dhaXRGb3JB
bGVydF0sICJub25lIik7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjAyZjYxYzYxNmY4ZjgwMmNjNGExODI1Y2NlMjVh
ZGFlMDMxOTM4ZS4uOGQzYWMzMjdmMWI4Zjg5MWVjODU4NzNiZGY2ODQzODRlNDVkNDhlYyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE3IEBACisyMDIyLTA0LTA2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5u
YXZpZ2F0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM4NzM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgKiBo
dHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvbmF2aWdhdGUtaWZyYW1lcy13aW5kb3ctY2xpZW50Lmh0
dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvc2VydmljZS13b3Jr
ZXJzL25hdmlnYXRlLWlmcmFtZXMtd2luZG93LWNsaWVudC5odHRwcy5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvbmF2aWdhdGUtd2luZG93LWNsaWVudC13
b3JrZXIuanM6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9u
czoKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3dpbmRvd2NsaWVudC1uYXZpZ2F0ZS5o
dHRwcy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9U
ZXN0RXhwZWN0YXRpb25zOgorCiAyMDIyLTA0LTA1ICBBZGEgQ2hhbiAgPGFkYWNoYW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFtXZWJYUl0gQWRkIGEgbmV3IGVudW0gdHlwZSB0byByZXByZXNlbnQg
c2Vzc2lvbiBmZWF0dXJlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggZjFhYjk0
NThmODI5YzAwOThiYmI2ZjhiMDU4OThhOTFlYjc5NDc1Mi4uNDRhNzQyMGQ5Njk0YThlOWQxZTM0
MmNhNGU5MjcwMjI3MjYxZTFjMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTIgQEAKKzIwMjItMDQtMDYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgorCisgICAgICAgIEltcGxlbWVudCBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50Lm5hdmlnYXRl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg3MzgK
KworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvd2luZG93Y2xpZW50LW5h
dmlnYXRlLmh0dHBzLWV4cGVjdGVkLnR4dDoKKwogMjAyMi0wNC0wNSAgTWF0dCBXb29kcm93ICA8
bWF0dHdvb2Ryb3dAYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQgdHJhbnNpdGlvbnMvYW5p
bWF0aW9ucyBvbiBncmlkLXRlbXBsYXRlLWNvbHVtbnN8cm93cwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL25hdmlnYXRlLWlmcmFtZXMtd2luZG93LWNs
aWVudC5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdv
cmtlcnMvbmF2aWdhdGUtaWZyYW1lcy13aW5kb3ctY2xpZW50Lmh0dHBzLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jNWM5MjJhNDMwOTBhMWZjNTA1YWM4NDk4OTk4NjA3ODU0ZDZhNDhjCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL25hdmln
YXRlLWlmcmFtZXMtd2luZG93LWNsaWVudC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4
IEBACisKKworUEFTUyBTZXR1cCBhY3RpdmF0aW5nIHdvcmtlcgorUEFTUyBOYXZpZ2F0ZSB0byBz
YW1lIG9yaWdpbgorUEFTUyBOYXZpZ2F0ZSB0byBzYW1lIFVSTAorUEFTUyBOYXZpZ2F0ZSB0byBz
YW1lIGRvY3VtZW50IGZyYWdtZW50CitQQVNTIE5hdmlnYXRlIHRvIGNyb3NzIG9yaWdpbgorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvbmF2aWdhdGUt
aWZyYW1lcy13aW5kb3ctY2xpZW50Lmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9z
ZXJ2aWNlLXdvcmtlcnMvbmF2aWdhdGUtaWZyYW1lcy13aW5kb3ctY2xpZW50Lmh0dHBzLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTcxZDc1OTgzYTA1YzdlOTU4MTA4ODAyYmE4Njk5Y2U2YTcxNzNhMAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9uYXZp
Z2F0ZS1pZnJhbWVzLXdpbmRvdy1jbGllbnQuaHR0cHMuaHRtbApAQCAtMCwwICsxLDgyIEBACis8
IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFy
bmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL2NvbW1vbi91dGlscy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JvdXRpbmVzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3Jlc291cmNlcy90
ZXN0LWhlbHBlcnMuc3ViLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4K
K3ZhciB1cmwgPSBuZXcgVVJMKCIvV2ViS2l0L3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvIiwg
bG9jYXRpb24pOwordXJsID0gdXJsLnRvU3RyaW5nKCk7Cit2YXIgYWN0aXZlV29ya2VyOworCitw
cm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBsZXQgcmVnaXN0cmF0aW9uID0gYXdh
aXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoIi9XZWJLaXQvc2VydmljZS13b3Jr
ZXJzL25hdmlnYXRlLXdpbmRvdy1jbGllbnQtd29ya2VyLmpzIiwgeyBzY29wZSA6IHVybCB9KTsK
KyAgICBpZiAoIXJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nKSB7CisgICAgICAgIHJlZ2lzdHJhdGlv
bi51bnJlZ2lzdGVyKCk7CisgICAgICAgIHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5hdmlnYXRvci5z
ZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCIvV2ViS2l0L3NlcnZpY2Utd29ya2Vycy9uYXZpZ2F0ZS13
aW5kb3ctY2xpZW50LXdvcmtlci5qcyIsIHsgc2NvcGUgOiB1cmwgfSk7CisgICAgfQorICAgIGFj
dGl2ZVdvcmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOworICAgIGF3YWl0IHdhaXRGb3JT
dGF0ZShhY3RpdmVXb3JrZXIsICJhY3RpdmF0aW5nIik7CisgICAgYWN0aXZlV29ya2VyID0gcmVn
aXN0cmF0aW9uLmFjdGl2ZTsKK30sICJTZXR1cCBhY3RpdmF0aW5nIHdvcmtlciIpOworCitwcm9t
aXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBjb25zdCBpZnJhbWUgPSBhd2FpdCB3aXRo
SWZyYW1lKHVybCk7CisKKyAgICBhY3RpdmVXb3JrZXIucG9zdE1lc3NhZ2Uoe25hdmlnYXRlOiB1
cmwgKyAiP3Rlc3QifSk7CisgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbmV3IFByb21pc2UocmVz
b2x2ZSA9PiBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJl
c29sdmUoZXZlbnQuZGF0YSkpOworICAgIGFzc2VydF90cnVlKHJlc3VsdC51cmwuaW5jbHVkZXMo
Ij90ZXN0IikpOworCisgICAgaWZyYW1lLnJlbW92ZSgpOworfSwgIk5hdmlnYXRlIHRvIHNhbWUg
b3JpZ2luIik7CisKK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIGNvbnN0IGlm
cmFtZSA9IGF3YWl0IHdpdGhJZnJhbWUodXJsKTsKKworICAgIGFjdGl2ZVdvcmtlci5wb3N0TWVz
c2FnZSgiZ2V0LWNsaWVudCIpOworICAgIGNvbnN0IGNsaWVudDEgPSBhd2FpdCBuZXcgUHJvbWlz
ZShyZXNvbHZlID0+IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkg
PT4gcmVzb2x2ZShldmVudC5kYXRhKSk7CisKKyAgICBhY3RpdmVXb3JrZXIucG9zdE1lc3NhZ2Uo
e25hdmlnYXRlOiB1cmx9KTsKKyAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBuZXcgUHJvbWlzZShy
ZXNvbHZlID0+IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4g
cmVzb2x2ZShldmVudC5kYXRhKSk7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQudXJsLCB1cmwp
OworCisgICAgYWN0aXZlV29ya2VyLnBvc3RNZXNzYWdlKCJnZXQtY2xpZW50Iik7CisgICAgY29u
c3QgY2xpZW50MiA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gbmF2aWdhdG9yLnNlcnZp
Y2VXb3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKwor
ICAgIGFzc2VydF9ub3RfZXF1YWxzKGNsaWVudDEuaWQsIGNsaWVudDIuaWQpOworCisgICAgaWZy
YW1lLnJlbW92ZSgpOworfSwgIk5hdmlnYXRlIHRvIHNhbWUgVVJMIik7CisKK3Byb21pc2VfdGVz
dChhc3luYyAodGVzdCkgPT4geworICAgIGNvbnN0IGlmcmFtZSA9IGF3YWl0IHdpdGhJZnJhbWUo
dXJsKTsKKworICAgIGFjdGl2ZVdvcmtlci5wb3N0TWVzc2FnZSgiZ2V0LWNsaWVudCIpOworICAg
IGNvbnN0IGNsaWVudDEgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IG5hdmlnYXRvci5z
ZXJ2aWNlV29ya2VyLm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShldmVudC5kYXRhKSk7
CisKKyAgICBhY3RpdmVXb3JrZXIucG9zdE1lc3NhZ2Uoe25hdmlnYXRlOiB1cmwgKyAiI3Rlc3Qi
fSk7CisgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBuYXZp
Z2F0b3Iuc2VydmljZVdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJlc29sdmUoZXZlbnQu
ZGF0YSkpOworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LnVybCwgdXJsKTsKKworICAgIGFjdGl2
ZVdvcmtlci5wb3N0TWVzc2FnZSgiZ2V0LWNsaWVudCIpOworICAgIGNvbnN0IGNsaWVudDIgPSBh
d2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLm9ubWVz
c2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShldmVudC5kYXRhKSk7CisKKyAgICBhc3NlcnRfZXF1
YWxzKGNsaWVudDEuaWQsIGNsaWVudDIuaWQpOworCisgICAgaWZyYW1lLnJlbW92ZSgpOworfSwg
Ik5hdmlnYXRlIHRvIHNhbWUgZG9jdW1lbnQgZnJhZ21lbnQiKTsKKworcHJvbWlzZV90ZXN0KGFz
eW5jICh0ZXN0KSA9PiB7CisgICAgY29uc3QgaWZyYW1lID0gYXdhaXQgd2l0aElmcmFtZSh1cmwp
OworCisgICAgYWN0aXZlV29ya2VyLnBvc3RNZXNzYWdlKHtuYXZpZ2F0ZTogImh0dHBzOi8vMTI3
LjAuMC4xOjk0NDMiIH0pOworICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG5ldyBQcm9taXNlKHJl
c29sdmUgPT4gbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiBy
ZXNvbHZlKGV2ZW50LmRhdGEpKTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgIm5vbmUiKTsK
K30sICJOYXZpZ2F0ZSB0byBjcm9zcyBvcmlnaW4iKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL25h
dmlnYXRlLXdpbmRvdy1jbGllbnQtd29ya2VyLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2Vy
dmljZS13b3JrZXJzL25hdmlnYXRlLXdpbmRvdy1jbGllbnQtd29ya2VyLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljk1MGU4ZTBkMTBkZjhiZmIwZGM2NWQwZDYxNzQ3MzE2ZmQ1M2QwMTAKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvbmF2aWdhdGUtd2luZG93
LWNsaWVudC13b3JrZXIuanMKQEAgLTAsMCArMSwyNSBAQAorb25tZXNzYWdlID0gYXN5bmMgKGV2
ZW50KSA9PiB7CisgICAgaWYgKGV2ZW50LmRhdGEgPT09ICJnZXQtY2xpZW50IikgeworICAgICAg
ICBjb25zdCBjbGllbnRzID0gYXdhaXQgc2VsZi5jbGllbnRzLm1hdGNoQWxsKCk7CisgICAgICAg
IGlmICghY2xpZW50cy5sZW5ndGgpIHsKKyAgICAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVz
c2FnZSgibm8gY2xpZW50Iik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKHsgaWQ6IGNsaWVudHNbMF0uaWQsIHVybDogY2xp
ZW50c1swXS51cmwgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoZXZlbnQu
ZGF0YSAmJiBldmVudC5kYXRhLm5hdmlnYXRlKSB7CisgICAgICAgIGNvbnN0IGNsaWVudHMgPSBh
d2FpdCBzZWxmLmNsaWVudHMubWF0Y2hBbGwoKTsKKyAgICAgICAgaWYgKCFjbGllbnRzLmxlbmd0
aCkgeworICAgICAgICAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCJmYWlsZWQsIG5vIGNs
aWVudHMiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhd2FpdCBj
bGllbnRzWzBdLm5hdmlnYXRlKGV2ZW50LmRhdGEubmF2aWdhdGUpLnRoZW4oKGNsaWVudCkgPT4g
eworICAgICAgICAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKGNsaWVudCA/IHsgaWQ6IGNs
aWVudC5pZCwgdXJsOiBjbGllbnQudXJsIH0gOiAibm9uZSIpOworICAgICAgICB9LCAoZSkgPT4g
eworICAgICAgICAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCJmYWlsZWQiKTsKKyAgICAg
ICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2Vydmlj
ZS13b3JrZXIvd2luZG93Y2xpZW50LW5hdmlnYXRlLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3Nl
cnZpY2Utd29ya2VyL3dpbmRvd2NsaWVudC1uYXZpZ2F0ZS5odHRwcy1leHBlY3RlZC50eHQKaW5k
ZXggMTkyNTQ2ZWQ4NzAwMmMzMTI2NjFmYzQ5NDZhYTA1MDYwN2UzM2E5Mi4uNDlmOGU4ZjI0NDM2
MmZjZjY2NWMyNTgyNjQwYWFlMDk4YTg3MWU5NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3Jr
ZXIvd2luZG93Y2xpZW50LW5hdmlnYXRlLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2
aWNlLXdvcmtlci93aW5kb3djbGllbnQtbmF2aWdhdGUuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0x
MCwyOSArMTAsMTUgQEAgUEFTUyBpbnZhbGlkIHVybCAodmlldy1zb3VyY2U6Ly9leGFtcGxlLmNv
bSkKIFBBU1MgaW52YWxpZCB1cmwgKGZpbGU6Ly8vKQogUEFTUyBpbnZhbGlkIHVybCAoYWJvdXQ6
YmxhbmspCiBQQVNTIG5hdmlnYXRlIG9uIGEgdG9wLWxldmVsIHdpbmRvdyBjbGllbnQKLUZBSUwg
bm9ybWFsIHdvcmtlciBzaWRlIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRo
IHZhbHVlOiBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiB3aW5kb3dDbGllbnQubmF2aWdhdGUo
KSBpcyBub3QgeWV0IHN1cHBvcnRlZCIKLUZBSUwgYmxhbmsgdXJsIHdvcmtlciBzaWRlIHByb21p
c2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIk5vdFN1cHBv
cnRlZEVycm9yOiB3aW5kb3dDbGllbnQubmF2aWdhdGUoKSBpcyBub3QgeWV0IHN1cHBvcnRlZCIK
LUZBSUwgaW4gc2NvcGUgYnV0IG5vdCBjb250cm9sbGVkIHRlc3Qgb24gaW5zdGFsbGluZyB3b3Jr
ZXIgd29ya2VyIHNpZGUgcHJvbWlzZV9yZWplY3RzX2pzOiBmdW5jdGlvbiAiZnVuY3Rpb24gKCkg
eyB0aHJvdyBlIH0iIHRocmV3IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IHdpbmRvd0NsaWVu
dC5uYXZpZ2F0ZSgpIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIiAoIk5vdFN1cHBvcnRlZEVycm9yIikg
ZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKLSAg
ICBbbmF0aXZlIGNvZGVdCi19IiAoIlR5cGVFcnJvciIpCi1GQUlMIGluIHNjb3BlIGJ1dCBub3Qg
Y29udHJvbGxlZCB0ZXN0IG9uIGFjdGl2ZSB3b3JrZXIgd29ya2VyIHNpZGUgcHJvbWlzZV9yZWpl
Y3RzX2pzOiBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0iIHRocmV3IG9iamVjdCAi
Tm90U3VwcG9ydGVkRXJyb3I6IHdpbmRvd0NsaWVudC5uYXZpZ2F0ZSgpIGlzIG5vdCB5ZXQgc3Vw
cG9ydGVkIiAoIk5vdFN1cHBvcnRlZEVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rp
b24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKLSAgICBbbmF0aXZlIGNvZGVdCi19IiAoIlR5cGVF
cnJvciIpCi1GQUlMIG91dCBvZiBzY29wZSB3b3JrZXIgc2lkZSBwcm9taXNlX3JlamVjdHNfanM6
IGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcgb2JqZWN0ICJOb3RTdXBw
b3J0ZWRFcnJvcjogd2luZG93Q2xpZW50Lm5hdmlnYXRlKCkgaXMgbm90IHlldCBzdXBwb3J0ZWQi
ICgiTm90U3VwcG9ydGVkRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVu
Y3Rpb24gVHlwZUVycm9yKCkgewotICAgIFtuYXRpdmUgY29kZV0KLX0iICgiVHlwZUVycm9yIikK
LUZBSUwgY3Jvc3Mgb3JnaW4gdXJsIHdvcmtlciBzaWRlIHByb21pc2VfdGVzdDogVW5oYW5kbGVk
IHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiB3aW5kb3dD
bGllbnQubmF2aWdhdGUoKSBpcyBub3QgeWV0IHN1cHBvcnRlZCIKLUZBSUwgaW52YWxpZCB1cmwg
KGh0dHA6Ly9bZXhhbXBsZS5jb21dKSB3b3JrZXIgc2lkZSBwcm9taXNlX3JlamVjdHNfanM6IGZ1
bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcgb2JqZWN0ICJOb3RTdXBwb3J0
ZWRFcnJvcjogd2luZG93Q2xpZW50Lm5hdmlnYXRlKCkgaXMgbm90IHlldCBzdXBwb3J0ZWQiICgi
Tm90U3VwcG9ydGVkRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rp
b24gVHlwZUVycm9yKCkgewotICAgIFtuYXRpdmUgY29kZV0KLX0iICgiVHlwZUVycm9yIikKLUZB
SUwgaW52YWxpZCB1cmwgKHZpZXctc291cmNlOi8vZXhhbXBsZS5jb20pIHdvcmtlciBzaWRlIHBy
b21pc2VfcmVqZWN0c19qczogZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJl
dyBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiB3aW5kb3dDbGllbnQubmF2aWdhdGUoKSBpcyBu
b3QgeWV0IHN1cHBvcnRlZCIgKCJOb3RTdXBwb3J0ZWRFcnJvciIpIGV4cGVjdGVkIGluc3RhbmNl
IG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7Ci0gICAgW25hdGl2ZSBjb2RlXQot
fSIgKCJUeXBlRXJyb3IiKQotRkFJTCBpbnZhbGlkIHVybCAoZmlsZTovLy8pIHdvcmtlciBzaWRl
IHByb21pc2VfcmVqZWN0c19qczogZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0
aHJldyBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiB3aW5kb3dDbGllbnQubmF2aWdhdGUoKSBp
cyBub3QgeWV0IHN1cHBvcnRlZCIgKCJOb3RTdXBwb3J0ZWRFcnJvciIpIGV4cGVjdGVkIGluc3Rh
bmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7Ci0gICAgW25hdGl2ZSBjb2Rl
XQotfSIgKCJUeXBlRXJyb3IiKQotRkFJTCBpbnZhbGlkIHVybCAoYWJvdXQ6YmxhbmspIHdvcmtl
ciBzaWRlIHByb21pc2VfcmVqZWN0c19qczogZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cg
ZSB9IiB0aHJldyBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiB3aW5kb3dDbGllbnQubmF2aWdh
dGUoKSBpcyBub3QgeWV0IHN1cHBvcnRlZCIgKCJOb3RTdXBwb3J0ZWRFcnJvciIpIGV4cGVjdGVk
IGluc3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7Ci0gICAgW25hdGl2
ZSBjb2RlXQotfSIgKCJUeXBlRXJyb3IiKQorUEFTUyBub3JtYWwgd29ya2VyIHNpZGUKK1BBU1Mg
YmxhbmsgdXJsIHdvcmtlciBzaWRlCitQQVNTIGluIHNjb3BlIGJ1dCBub3QgY29udHJvbGxlZCB0
ZXN0IG9uIGluc3RhbGxpbmcgd29ya2VyIHdvcmtlciBzaWRlCitQQVNTIGluIHNjb3BlIGJ1dCBu
b3QgY29udHJvbGxlZCB0ZXN0IG9uIGFjdGl2ZSB3b3JrZXIgd29ya2VyIHNpZGUKK1BBU1Mgb3V0
IG9mIHNjb3BlIHdvcmtlciBzaWRlCitQQVNTIGNyb3NzIG9yZ2luIHVybCB3b3JrZXIgc2lkZQor
UEFTUyBpbnZhbGlkIHVybCAoaHR0cDovL1tleGFtcGxlLmNvbV0pIHdvcmtlciBzaWRlCitQQVNT
IGludmFsaWQgdXJsICh2aWV3LXNvdXJjZTovL2V4YW1wbGUuY29tKSB3b3JrZXIgc2lkZQorRkFJ
TCBpbnZhbGlkIHVybCAoZmlsZTovLy8pIHdvcmtlciBzaWRlIGFzc2VydF9lcXVhbHM6IGV4cGVj
dGVkIChzdHJpbmcpICJUeXBlRXJyb3IiIGJ1dCBnb3QgKG9iamVjdCkgbnVsbAorUEFTUyBpbnZh
bGlkIHVybCAoYWJvdXQ6YmxhbmspIHdvcmtlciBzaWRlCiBGQUlMIG5hdmlnYXRlIG9uIGEgdG9w
LWxldmVsIHdpbmRvdyBjbGllbnQgd29ya2VyIHNpZGUgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQg
InRvcC1sZXZlbCIgYnV0IGdvdCAiYXV4aWxpYXJ5IgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
bGliL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggN2Q0MGI1NTMwMGRkMmFlMzI0MjMyNWI4YjdkZDBh
Yzc1ODQ4MmQzZC4uMWViMjFjMDJmM2IzNWI3YTFjMTk3ZDUzNmIzOTI5MTVkNmM0N2MxMSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9UZXN0RXhwZWN0YXRpb25zCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTE5NCw2ICsx
MTk0LDkgQEAgd2Via2l0Lm9yZy9iLzE3Nzk0MCB3b3JrZXJzL3dhc20taGFzaHNldC5odG1sIFsg
U2tpcCBdCiB3ZWJraXQub3JnL2IvMjAxOTgxIGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2
ZXItdHJ1c3QtZXZhbHVhdGlvbi5odHRwcy5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2Iv
MjAxOTgxIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3Nl
cnZpY2Utd29ya2VyL2ZldGNoLWNhbnZhcy10YWludGluZy1pbWFnZS1jYWNoZS5odHRwcy5odG1s
IFsgRmFpbHVyZSBQYXNzIF0KIAord2Via2l0Lm9yZy9iLzIzODczOCBodHRwL3dwdC9zZXJ2aWNl
LXdvcmtlcnMvbmF2aWdhdGUtaWZyYW1lcy13aW5kb3ctY2xpZW50Lmh0dHBzLmh0bWwgWyBGYWls
dXJlIF0KK3dlYmtpdC5vcmcvYi8yMzg3MzgyMzg3MzggaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvd2luZG93Y2xpZW50LW5hdmln
YXRlLmh0dHBzLmh0bWwgWyBGYWlsdXJlIF0KKwogd2Via2l0Lm9yZy9iLzIwODM2OSBodHRwL3Rl
c3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy10aW1lb3V0Lmh0dHBzLmh0bWwgWyBGYWlsdXJlIFRp
bWVvdXQgUGFzcyBdCiAKIHdlYmtpdC5vcmcvYi8yMTU2MzggaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9pbnZhbGlkLWNvbnRpbnVhdGlvbi5odG1sIFsgRmFpbHVyZSBdCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3dpbmRvd2NsaWVudC1uYXZpZ2F0
ZS5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3dp
bmRvd2NsaWVudC1uYXZpZ2F0ZS5odHRwcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDE5MjU0NmVkODcwMDJjMzEyNjYxZmM0OTQ2YWEwNTA2MDdlMzNhOTIuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ2xpYi9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29y
a2Vycy9zZXJ2aWNlLXdvcmtlci93aW5kb3djbGllbnQtbmF2aWdhdGUuaHR0cHMtZXhwZWN0ZWQu
dHh0CisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotCi1QQVNTIG5vcm1hbAotUEFTUyBi
bGFuayB1cmwKLVBBU1MgaW4gc2NvcGUgYnV0IG5vdCBjb250cm9sbGVkIHRlc3Qgb24gaW5zdGFs
bGluZyB3b3JrZXIKLVBBU1MgaW4gc2NvcGUgYnV0IG5vdCBjb250cm9sbGVkIHRlc3Qgb24gYWN0
aXZlIHdvcmtlcgotUEFTUyBvdXQgb2Ygc2NvcGUKLVBBU1MgY3Jvc3Mgb3JnaW4gdXJsCi1QQVNT
IGludmFsaWQgdXJsIChodHRwOi8vW2V4YW1wbGUuY29tXSkKLVBBU1MgaW52YWxpZCB1cmwgKHZp
ZXctc291cmNlOi8vZXhhbXBsZS5jb20pCi1QQVNTIGludmFsaWQgdXJsIChmaWxlOi8vLykKLVBB
U1MgaW52YWxpZCB1cmwgKGFib3V0OmJsYW5rKQotUEFTUyBuYXZpZ2F0ZSBvbiBhIHRvcC1sZXZl
bCB3aW5kb3cgY2xpZW50Ci1GQUlMIG5vcm1hbCB3b3JrZXIgc2lkZSBwcm9taXNlX3Rlc3Q6IFVu
aGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjog
d2luZG93Q2xpZW50Lm5hdmlnYXRlKCkgaXMgbm90IHlldCBzdXBwb3J0ZWQiCi1GQUlMIGJsYW5r
IHVybCB3b3JrZXIgc2lkZSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2
YWx1ZTogb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogd2luZG93Q2xpZW50Lm5hdmlnYXRlKCkg
aXMgbm90IHlldCBzdXBwb3J0ZWQiCi1GQUlMIGluIHNjb3BlIGJ1dCBub3QgY29udHJvbGxlZCB0
ZXN0IG9uIGluc3RhbGxpbmcgd29ya2VyIHdvcmtlciBzaWRlIHByb21pc2VfcmVqZWN0c19qczog
ZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyBvYmplY3QgIk5vdFN1cHBv
cnRlZEVycm9yOiB3aW5kb3dDbGllbnQubmF2aWdhdGUoKSBpcyBub3QgeWV0IHN1cHBvcnRlZCIg
KCJOb3RTdXBwb3J0ZWRFcnJvciIpIGV4cGVjdGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5j
dGlvbiBUeXBlRXJyb3IoKSB7Ci0gICAgW25hdGl2ZSBjb2RlXQotfSIgKCJUeXBlRXJyb3IiKQot
RkFJTCBpbiBzY29wZSBidXQgbm90IGNvbnRyb2xsZWQgdGVzdCBvbiBhY3RpdmUgd29ya2VyIHdv
cmtlciBzaWRlIHByb21pc2VfcmVqZWN0c19qczogZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhy
b3cgZSB9IiB0aHJldyBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiB3aW5kb3dDbGllbnQubmF2
aWdhdGUoKSBpcyBub3QgeWV0IHN1cHBvcnRlZCIgKCJOb3RTdXBwb3J0ZWRFcnJvciIpIGV4cGVj
dGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7Ci0gICAgW25h
dGl2ZSBjb2RlXQotfSIgKCJUeXBlRXJyb3IiKQotRkFJTCBvdXQgb2Ygc2NvcGUgd29ya2VyIHNp
ZGUgcHJvbWlzZV9yZWplY3RzX2pzOiBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0i
IHRocmV3IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IHdpbmRvd0NsaWVudC5uYXZpZ2F0ZSgp
IGlzIG5vdCB5ZXQgc3VwcG9ydGVkIiAoIk5vdFN1cHBvcnRlZEVycm9yIikgZXhwZWN0ZWQgaW5z
dGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKLSAgICBbbmF0aXZlIGNv
ZGVdCi19IiAoIlR5cGVFcnJvciIpCi1GQUlMIGNyb3NzIG9yZ2luIHVybCB3b3JrZXIgc2lkZSBw
cm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJOb3RT
dXBwb3J0ZWRFcnJvcjogd2luZG93Q2xpZW50Lm5hdmlnYXRlKCkgaXMgbm90IHlldCBzdXBwb3J0
ZWQiCi1GQUlMIGludmFsaWQgdXJsIChodHRwOi8vW2V4YW1wbGUuY29tXSkgd29ya2VyIHNpZGUg
cHJvbWlzZV9yZWplY3RzX2pzOiBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0iIHRo
cmV3IG9iamVjdCAiTm90U3VwcG9ydGVkRXJyb3I6IHdpbmRvd0NsaWVudC5uYXZpZ2F0ZSgpIGlz
IG5vdCB5ZXQgc3VwcG9ydGVkIiAoIk5vdFN1cHBvcnRlZEVycm9yIikgZXhwZWN0ZWQgaW5zdGFu
Y2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKLSAgICBbbmF0aXZlIGNvZGVd
Ci19IiAoIlR5cGVFcnJvciIpCi1GQUlMIGludmFsaWQgdXJsICh2aWV3LXNvdXJjZTovL2V4YW1w
bGUuY29tKSB3b3JrZXIgc2lkZSBwcm9taXNlX3JlamVjdHNfanM6IGZ1bmN0aW9uICJmdW5jdGlv
biAoKSB7IHRocm93IGUgfSIgdGhyZXcgb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogd2luZG93
Q2xpZW50Lm5hdmlnYXRlKCkgaXMgbm90IHlldCBzdXBwb3J0ZWQiICgiTm90U3VwcG9ydGVkRXJy
b3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gVHlwZUVycm9yKCkg
ewotICAgIFtuYXRpdmUgY29kZV0KLX0iICgiVHlwZUVycm9yIikKLUZBSUwgaW52YWxpZCB1cmwg
KGZpbGU6Ly8vKSB3b3JrZXIgc2lkZSBwcm9taXNlX3JlamVjdHNfanM6IGZ1bmN0aW9uICJmdW5j
dGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcgb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogd2lu
ZG93Q2xpZW50Lm5hdmlnYXRlKCkgaXMgbm90IHlldCBzdXBwb3J0ZWQiICgiTm90U3VwcG9ydGVk
RXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gVHlwZUVycm9y
KCkgewotICAgIFtuYXRpdmUgY29kZV0KLX0iICgiVHlwZUVycm9yIikKLUZBSUwgaW52YWxpZCB1
cmwgKGFib3V0OmJsYW5rKSB3b3JrZXIgc2lkZSBwcm9taXNlX3JlamVjdHNfanM6IGZ1bmN0aW9u
ICJmdW5jdGlvbiAoKSB7IHRocm93IGUgfSIgdGhyZXcgb2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJv
cjogd2luZG93Q2xpZW50Lm5hdmlnYXRlKCkgaXMgbm90IHlldCBzdXBwb3J0ZWQiICgiTm90U3Vw
cG9ydGVkRXJyb3IiKSBleHBlY3RlZCBpbnN0YW5jZSBvZiBmdW5jdGlvbiAiZnVuY3Rpb24gVHlw
ZUVycm9yKCkgewotICAgIFtuYXRpdmUgY29kZV0KLX0iICgiVHlwZUVycm9yIikKLUZBSUwgbmF2
aWdhdGUgb24gYSB0b3AtbGV2ZWwgd2luZG93IGNsaWVudCB3b3JrZXIgc2lkZSBhc3NlcnRfZXF1
YWxzOiBleHBlY3RlZCAidG9wLWxldmVsIiBidXQgZ290ICJhdXhpbGlhcnkiCi0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAxM2RlZmI0NzYx
MTUwN2E0ZWQ4MTQ4OTJiM2EyYzY5Yzk5OWYwMWFjLi5lMWRmYWJmNmZjYjJhN2EwZjJkYzk1NjRh
NTI2M2M2ZTUxMGVlMjg3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sy
L1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0
RXhwZWN0YXRpb25zCkBAIC05MjQsNyArOTI0LDcgQEAgd2Via2l0Lm9yZy9iLzE4MTgzOSBbIERl
YnVnIF0gaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtYWN0aW9uLWxvZy5odG1sIFsgUGEK
IAogd2Via2l0Lm9yZy9iLzIzMDQxMiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Nl
cnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9jbGllbnRzLW1hdGNoYWxsLWNsaWVudC10eXBl
cy5odHRwcy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzE3OTM1MiBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtl
ci93aW5kb3djbGllbnQtbmF2aWdhdGUuaHR0cHMuaHRtbCBbIFBhc3MgRmFpbHVyZSBTbG93IF0K
K3dlYmtpdC5vcmcvYi8xNzkzNTIgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2
aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvd2luZG93Y2xpZW50LW5hdmlnYXRlLmh0dHBzLmh0
bWwgWyBTbG93IF0KIAogd2Via2l0Lm9yZy9iLzE4MzE2NCBmYXN0L2RvbS9XaW5kb3cvd2luZG93
LWZvY3VzLXNlbGYuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>