<?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>223201</bug_id>
          
          <creation_ts>2021-03-15 11:32:34 -0700</creation_ts>
          <short_desc>Mark ServiceWorkerThreadProxy with a default app-bound value</short_desc>
          <delta_ts>2021-08-31 11:44:22 -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>WebKit Misc.</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kate Cheney">katherine_cheney</reporter>
          <assigned_to name="Kate Cheney">katherine_cheney</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1739551</commentid>
    <comment_count>0</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-03-15 11:32:34 -0700</bug_when>
    <thetext>We should mark service worker postMessage events as app-bound.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739554</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-15 11:33:10 -0700</bug_when>
    <thetext>&lt;rdar://problem/75438678&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759860</commentid>
    <comment_count>2</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-05-13 15:47:34 -0700</bug_when>
    <thetext>&lt;rdar://problem/77664416&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759893</commentid>
    <comment_count>3</comment_count>
      <attachid>428574</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-05-13 16:33:02 -0700</bug_when>
    <thetext>Created attachment 428574
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760790</commentid>
    <comment_count>4</comment_count>
      <attachid>428574</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-05-17 09:44:12 -0700</bug_when>
    <thetext>Comment on attachment 428574
Patch

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

&gt; Source/WebCore/workers/service/server/RegistrationDatabase.cpp:582
&gt; +        auto contextData = ServiceWorkerContextData { WTF::nullopt, WTFMove(registration), workerIdentifier, WTFMove(script), WTFMove(*certificateInfo), WTFMove(*contentSecurityPolicy), WTFMove(referrerPolicy), WTFMove(scriptURL), *workerType, true, false, WTFMove(scriptResourceMap) };

true and false here are a bit mysterious.

&gt; Source/WebCore/workers/service/server/SWServer.cpp:651
&gt; +    tryInstallContextData(ServiceWorkerContextData { jobDataIdentifier, registration.data(), ServiceWorkerIdentifier::generate(), script, certificateInfo, contentSecurityPolicy, referrerPolicy, url, type, false, false, WTFMove(scriptResourceMap) });

false and false are a bit mysterious.
Maybe we should have a bool enum here for the new field.

&gt; Source/WebCore/workers/service/server/SWServer.cpp:668
&gt; +    }

Maybe we could have a single rule here: a service worker appbound state is true if any of its client is appbound, and stick with it.
Then we would not need to change appbound state based on postMessage or network load.
Anytime a new client is added/removed, we update the appbound state of all related SWServerWorker.
If a worker is running, we send an IPC to change its appbound state. Otherwise we wait for the worker to run and send the appbound state as part of the context data.


&gt; Source/WebCore/workers/service/server/SWServer.h:234
&gt; +    bool runServiceWorker(ServiceWorkerIdentifier, LastNavigationWasAppBound);

I would tend to pass an Optional&lt;LastNavigationWasAppBound&gt;.

&gt; Source/WebCore/workers/service/server/SWServerWorker.cpp:89
&gt; +    return { WTF::nullopt, m_registration-&gt;data(), m_data.identifier, m_script, m_certificateInfo, m_contentSecurityPolicy, m_referrerPolicy, m_data.scriptURL, m_data.type, false, false, m_scriptResourceMap };

I would compute the exact appbound state here using its m_server and its client origin.
This should remove the need to pass the value in various places.

&gt; Tools/ChangeLog:12
&gt; +        when the code paths were being hit.

If needed, you can probably add an API in ServiceWorkerInternals and I guess it can be injected through WKBundleSetServiceWorkerProxyCreationCallback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760836</commentid>
    <comment_count>5</comment_count>
      <attachid>428574</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-05-17 12:32:11 -0700</bug_when>
    <thetext>Comment on attachment 428574
Patch

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

Thanks for the help!

&gt;&gt; Source/WebCore/workers/service/server/RegistrationDatabase.cpp:582
&gt;&gt; +        auto contextData = ServiceWorkerContextData { WTF::nullopt, WTFMove(registration), workerIdentifier, WTFMove(script), WTFMove(*certificateInfo), WTFMove(*contentSecurityPolicy), WTFMove(referrerPolicy), WTFMove(scriptURL), *workerType, true, false, WTFMove(scriptResourceMap) };
&gt; 
&gt; true and false here are a bit mysterious.

I can make them into enum values instead.

&gt;&gt; Source/WebCore/workers/service/server/SWServer.cpp:651
&gt;&gt; +    tryInstallContextData(ServiceWorkerContextData { jobDataIdentifier, registration.data(), ServiceWorkerIdentifier::generate(), script, certificateInfo, contentSecurityPolicy, referrerPolicy, url, type, false, false, WTFMove(scriptResourceMap) });
&gt; 
&gt; false and false are a bit mysterious.
&gt; Maybe we should have a bool enum here for the new field.

Will do.

&gt;&gt; Source/WebCore/workers/service/server/SWServer.cpp:668
&gt;&gt; +    }
&gt; 
&gt; Maybe we could have a single rule here: a service worker appbound state is true if any of its client is appbound, and stick with it.
&gt; Then we would not need to change appbound state based on postMessage or network load.
&gt; Anytime a new client is added/removed, we update the appbound state of all related SWServerWorker.
&gt; If a worker is running, we send an IPC to change its appbound state. Otherwise we wait for the worker to run and send the appbound state as part of the context data.

Ok, good idea, hopefully this will be simpler. And we can link a client to a SWServerWorker by the top origin, right?

&gt;&gt; Source/WebCore/workers/service/server/SWServer.h:234
&gt;&gt; +    bool runServiceWorker(ServiceWorkerIdentifier, LastNavigationWasAppBound);
&gt; 
&gt; I would tend to pass an Optional&lt;LastNavigationWasAppBound&gt;.

Ok, will change.

&gt;&gt; Source/WebCore/workers/service/server/SWServerWorker.cpp:89
&gt;&gt; +    return { WTF::nullopt, m_registration-&gt;data(), m_data.identifier, m_script, m_certificateInfo, m_contentSecurityPolicy, m_referrerPolicy, m_data.scriptURL, m_data.type, false, false, m_scriptResourceMap };
&gt; 
&gt; I would compute the exact appbound state here using its m_server and its client origin.
&gt; This should remove the need to pass the value in various places.

Don&apos;t recall why I didn&apos;t do that -- I&apos;ll fix it.

&gt;&gt; Tools/ChangeLog:12
&gt;&gt; +        when the code paths were being hit.
&gt; 
&gt; If needed, you can probably add an API in ServiceWorkerInternals and I guess it can be injected through WKBundleSetServiceWorkerProxyCreationCallback.

Ok, will make changes then see if I need to do this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760932</commentid>
    <comment_count>6</comment_count>
      <attachid>428885</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-05-17 16:18:54 -0700</bug_when>
    <thetext>Created attachment 428885
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761068</commentid>
    <comment_count>7</comment_count>
      <attachid>428885</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-05-18 00:25:11 -0700</bug_when>
    <thetext>Comment on attachment 428885
Patch

Looks better to me.
Last comment might further simplifies things, to be checked though.

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

&gt; Source/WebCore/ChangeLog:22
&gt; +        marked app-bound based on the document loader.

Is there a way to test this change?

&gt; Source/WebCore/workers/service/server/SWServerWorker.cpp:91
&gt; +        isAppBound = m_server-&gt;clientIsAppBoundForRegistrableDomain(m_origin.value().clientRegistrableDomain());

Maybe we do not even need this check here.
We could make SWServerWorker have a LastNavigationWasAppBound field.
On creation, it is set according current clients.
On added/removed client, it gets also updated.
If the SWServerWorker is running and its LastNavigationWasAppBound changes, it will call WebSWServerToContextConnection::updateAppBoundValue through its SWServer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761151</commentid>
    <comment_count>8</comment_count>
      <attachid>428885</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-05-18 07:53:16 -0700</bug_when>
    <thetext>Comment on attachment 428885
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:22
&gt;&gt; +        marked app-bound based on the document loader.
&gt; 
&gt; Is there a way to test this change?

This might be better in another patch with a test I think.

&gt;&gt; Source/WebCore/workers/service/server/SWServerWorker.cpp:91
&gt;&gt; +        isAppBound = m_server-&gt;clientIsAppBoundForRegistrableDomain(m_origin.value().clientRegistrableDomain());
&gt; 
&gt; Maybe we do not even need this check here.
&gt; We could make SWServerWorker have a LastNavigationWasAppBound field.
&gt; On creation, it is set according current clients.
&gt; On added/removed client, it gets also updated.
&gt; If the SWServerWorker is running and its LastNavigationWasAppBound changes, it will call WebSWServerToContextConnection::updateAppBoundValue through its SWServer.

I see. Ok let me try with a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761467</commentid>
    <comment_count>9</comment_count>
      <attachid>429030</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-05-18 21:56:52 -0700</bug_when>
    <thetext>Created attachment 429030
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761469</commentid>
    <comment_count>10</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-05-18 22:02:03 -0700</bug_when>
    <thetext>(In reply to katherine_cheney from comment #9)
&gt; Created attachment 429030 [details]
&gt; Patch

Uploading this without the review flag since I am having trouble getting the ServiceWorkerInternals test API to work (all code is in the patch). Youenn I am wondering if you would be willing to take a look and see if you notice anything wrong?

Another thought: do we need to update the ServiceWorkerThreadProxy app-bound value in WebSWContextManagerConnection::startFetch now that this heuristic is in place? This was done in a previous patch. I am getting false positives in my test cases because startFetch() sets the correct app-bound value in addition to the worker being updated when registering an app-bound client.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761493</commentid>
    <comment_count>11</comment_count>
      <attachid>429030</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-05-19 00:43:03 -0700</bug_when>
    <thetext>Comment on attachment 429030
Patch

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

&gt; Source/WebCore/testing/ServiceWorkerInternals.cpp:117
&gt; +            promise-&gt;reject(TypeError);

We want to hop back to the worker thread before resolving/rejecting the promise.
Something like:

ASSERT(! m_lastNavigationWasAppBoundPromise);
m_lastNavigationWasAppBoundPromise = WTFMove(promise);
callOnMainThread([identifier = m_identifier, weakThis = makeWeakPtr(this)]() mutable {
    proxy-&gt;thread().runLoop().postTaskForMode(weakThis  = WTFMove(weakThis), appBound = proxy-&gt;lastNavigationWasAppBound()](auto&amp;) {
        if (!weakThis || !weakThis-&gt;m_lastNavigationWasAppBoundPromise)
            return;
        weakThis-&gt;m_lastNavigationWasAppBoundPromise-&gt;resolve&lt;IDLBoolean&gt;(appBound);
        weakThis-&gt;m_lastNavigationWasAppBoundPromise = { };
    }
});

&gt; Source/WebCore/workers/service/ServiceWorkerClientData.cpp:72
&gt; +        lastNavigationWasAppBound = document.loader()-&gt;lastNavigationWasAppBound() ? LastNavigationWasAppBound::Yes : LastNavigationWasAppBound::No;

Could use a oneliner:
auto lastNavigationWasAppBound = document.loader() &amp;&amp; document.loader()-&gt;lastNavigationWasAppBound() ? LastNavigationWasAppBound::Yes : ...;

&gt; Source/WebCore/workers/service/server/SWServer.cpp:664
&gt; +            continue;

I would think we do not need this if check, maybe add an ASSERT instead

&gt; Source/WebCore/workers/service/server/SWServerWorker.cpp:97
&gt; +        return;

We probably want to set m_lastNavigationWasAppBound even if running.

&gt; Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:151
&gt; +    data.lastNavigationWasAppBound = request.isAppBound() ? WebCore::LastNavigationWasAppBound::Yes : WebCore::LastNavigationWasAppBound::No;

Can we set lastNavigationWasAppBound in data constructor directly?

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:1887
&gt; +    alert(&apos;App-bound value &apos; + value);

What we usually do is the following:
- load the web page
- web page creates a service worker
- when ready, post message from web page to service worker to trigger a test.
- service worker does the test and returns the result back to the web page using postMessage
- web page sends the result of the test to the API test using message handlers or alert for instance.
See ServiceWorkerBasic for some examples.

In your case, the call to internals.lastNavigationWasAppBound() should be done in the script run by the service worker (the variable called js below).
Something like:
auto js = &quot;&quot;&quot;onmessage = async (event) =&gt; {
    if (!self.internals) {
        event.source.postMessage(&quot;No internals&quot;);
        return;
    }
    event.source.postMessage(await internals.lastNavigationWasAppBound());
}&quot;&quot;&quot;;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761536</commentid>
    <comment_count>12</comment_count>
      <attachid>429030</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-05-19 08:29:46 -0700</bug_when>
    <thetext>Comment on attachment 429030
Patch

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

&gt;&gt; Source/WebCore/testing/ServiceWorkerInternals.cpp:117
&gt;&gt; +            promise-&gt;reject(TypeError);
&gt; 
&gt; We want to hop back to the worker thread before resolving/rejecting the promise.
&gt; Something like:
&gt; 
&gt; ASSERT(! m_lastNavigationWasAppBoundPromise);
&gt; m_lastNavigationWasAppBoundPromise = WTFMove(promise);
&gt; callOnMainThread([identifier = m_identifier, weakThis = makeWeakPtr(this)]() mutable {
&gt;     proxy-&gt;thread().runLoop().postTaskForMode(weakThis  = WTFMove(weakThis), appBound = proxy-&gt;lastNavigationWasAppBound()](auto&amp;) {
&gt;         if (!weakThis || !weakThis-&gt;m_lastNavigationWasAppBoundPromise)
&gt;             return;
&gt;         weakThis-&gt;m_lastNavigationWasAppBoundPromise-&gt;resolve&lt;IDLBoolean&gt;(appBound);
&gt;         weakThis-&gt;m_lastNavigationWasAppBoundPromise = { };
&gt;     }
&gt; });

Will change.

&gt;&gt; Source/WebCore/workers/service/ServiceWorkerClientData.cpp:72
&gt;&gt; +        lastNavigationWasAppBound = document.loader()-&gt;lastNavigationWasAppBound() ? LastNavigationWasAppBound::Yes : LastNavigationWasAppBound::No;
&gt; 
&gt; Could use a oneliner:
&gt; auto lastNavigationWasAppBound = document.loader() &amp;&amp; document.loader()-&gt;lastNavigationWasAppBound() ? LastNavigationWasAppBound::Yes : ...;

Will fix.

&gt;&gt; Source/WebCore/workers/service/server/SWServer.cpp:664
&gt;&gt; +            continue;
&gt; 
&gt; I would think we do not need this if check, maybe add an ASSERT instead

Will do.

&gt;&gt; Source/WebCore/workers/service/server/SWServerWorker.cpp:97
&gt;&gt; +        return;
&gt; 
&gt; We probably want to set m_lastNavigationWasAppBound even if running.

Ah, good point. Will fix.

&gt;&gt; Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:151
&gt;&gt; +    data.lastNavigationWasAppBound = request.isAppBound() ? WebCore::LastNavigationWasAppBound::Yes : WebCore::LastNavigationWasAppBound::No;
&gt; 
&gt; Can we set lastNavigationWasAppBound in data constructor directly?

Yes. That will fix the bots also.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:1887
&gt;&gt; +    alert(&apos;App-bound value &apos; + value);
&gt; 
&gt; What we usually do is the following:
&gt; - load the web page
&gt; - web page creates a service worker
&gt; - when ready, post message from web page to service worker to trigger a test.
&gt; - service worker does the test and returns the result back to the web page using postMessage
&gt; - web page sends the result of the test to the API test using message handlers or alert for instance.
&gt; See ServiceWorkerBasic for some examples.
&gt; 
&gt; In your case, the call to internals.lastNavigationWasAppBound() should be done in the script run by the service worker (the variable called js below).
&gt; Something like:
&gt; auto js = &quot;&quot;&quot;onmessage = async (event) =&gt; {
&gt;     if (!self.internals) {
&gt;         event.source.postMessage(&quot;No internals&quot;);
&gt;         return;
&gt;     }
&gt;     event.source.postMessage(await internals.lastNavigationWasAppBound());
&gt; }&quot;&quot;&quot;;

I see -- I was calling it in the wrong place. Ok let me see if I can get it to work like this. Thanks for the help and explanation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761669</commentid>
    <comment_count>13</comment_count>
      <attachid>429090</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-05-19 13:15:34 -0700</bug_when>
    <thetext>Created attachment 429090
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761853</commentid>
    <comment_count>14</comment_count>
      <attachid>429090</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-05-19 23:58:38 -0700</bug_when>
    <thetext>Comment on attachment 429090
Patch

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

&gt; Source/WebCore/workers/service/server/SWServer.cpp:894
&gt; +    }

Another approach would be to use m_clientsByRegistrableDomain to get the list of service worker IDs for the client origin.
And then use m_runningOrTerminatingWorkers to get the worker from its id.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:2009
&gt; +    }, TestWebKitAPI::HTTPServer::Protocol::Https);

Why do we need to create two servers? Can we just use one?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762013</commentid>
    <comment_count>15</comment_count>
      <attachid>429090</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-05-20 10:13:27 -0700</bug_when>
    <thetext>Comment on attachment 429090
Patch

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

&gt;&gt; Source/WebCore/workers/service/server/SWServer.cpp:894
&gt;&gt; +    }
&gt; 
&gt; Another approach would be to use m_clientsByRegistrableDomain to get the list of service worker IDs for the client origin.
&gt; And then use m_runningOrTerminatingWorkers to get the worker from its id.

I am not sure this will work. m_clientsByRegistrableDomain will give a list of ServiceWorkerClientIdentifier objects, but we need the ServiceWorkerIdentifier objects to get the workers. Maybe I am misunderstanding? I can post a followup if so.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:2009
&gt;&gt; +    }, TestWebKitAPI::HTTPServer::Protocol::Https);
&gt; 
&gt; Why do we need to create two servers? Can we just use one?

I was hitting timeouts using ServiceWorkerTCPServer (tracked in rdar://76611319), which I think is the only place you can use one server for multiple WebView loads with different js? Let me see if I can get it working with 1 HTTP server before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762022</commentid>
    <comment_count>16</comment_count>
      <attachid>429090</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-05-20 10:31:16 -0700</bug_when>
    <thetext>Comment on attachment 429090
Patch

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

&gt;&gt;&gt; Source/WebCore/workers/service/server/SWServer.cpp:894
&gt;&gt;&gt; +    }
&gt;&gt; 
&gt;&gt; Another approach would be to use m_clientsByRegistrableDomain to get the list of service worker IDs for the client origin.
&gt;&gt; And then use m_runningOrTerminatingWorkers to get the worker from its id.
&gt; 
&gt; I am not sure this will work. m_clientsByRegistrableDomain will give a list of ServiceWorkerClientIdentifier objects, but we need the ServiceWorkerIdentifier objects to get the workers. Maybe I am misunderstanding? I can post a followup if so.

No, you are right, your approach is fine.

&gt;&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:2009
&gt;&gt;&gt; +    }, TestWebKitAPI::HTTPServer::Protocol::Https);
&gt;&gt; 
&gt;&gt; Why do we need to create two servers? Can we just use one?
&gt; 
&gt; I was hitting timeouts using ServiceWorkerTCPServer (tracked in rdar://76611319), which I think is the only place you can use one server for multiple WebView loads with different js? Let me see if I can get it working with 1 HTTP server before landing.

I think TCP server will answer a given number of requests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762188</commentid>
    <comment_count>17</comment_count>
      <attachid>429235</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-05-20 15:55:05 -0700</bug_when>
    <thetext>Created attachment 429235
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762189</commentid>
    <comment_count>18</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-05-20 15:56:23 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #16)
&gt; Comment on attachment 429090 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=429090&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/workers/service/server/SWServer.cpp:894
&gt; &gt;&gt;&gt; +    }
&gt; &gt;&gt; 
&gt; &gt;&gt; Another approach would be to use m_clientsByRegistrableDomain to get the list of service worker IDs for the client origin.
&gt; &gt;&gt; And then use m_runningOrTerminatingWorkers to get the worker from its id.
&gt; &gt; 
&gt; &gt; I am not sure this will work. m_clientsByRegistrableDomain will give a list of ServiceWorkerClientIdentifier objects, but we need the ServiceWorkerIdentifier objects to get the workers. Maybe I am misunderstanding? I can post a followup if so.
&gt; 
&gt; No, you are right, your approach is fine.
&gt; 
&gt; &gt;&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:2009
&gt; &gt;&gt;&gt; +    }, TestWebKitAPI::HTTPServer::Protocol::Https);
&gt; &gt;&gt; 
&gt; &gt;&gt; Why do we need to create two servers? Can we just use one?
&gt; &gt; 
&gt; &gt; I was hitting timeouts using ServiceWorkerTCPServer (tracked in rdar://76611319), which I think is the only place you can use one server for multiple WebView loads with different js? Let me see if I can get it working with 1 HTTP server before landing.
&gt; 
&gt; I think TCP server will answer a given number of requests.

Got it working with one TCP server.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762206</commentid>
    <comment_count>19</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-20 16:39:39 -0700</bug_when>
    <thetext>Committed r277837 (237981@main): &lt;https://commits.webkit.org/237981@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 429235.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788996</commentid>
    <comment_count>20</comment_count>
      <attachid>429235</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-31 11:44:22 -0700</bug_when>
    <thetext>Comment on attachment 429235
Patch for landing

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

&gt; Source/WebCore/workers/service/context/ServiceWorkerThreadProxy.cpp:120
&gt; +    if (data.lastNavigationWasAppBound)

Use-after-move of |data|</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428574</attachid>
            <date>2021-05-13 16:33:02 -0700</date>
            <delta_ts>2021-05-17 16:18:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223201-20210513163301.patch</filename>
            <type>text/plain</type>
            <size>32540</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MzA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjI1NzczYzRiYTY5MTAy
YTViODkwZmM2MjdjNTEwZGFkMTlhOTE4Ny4uYjRiNjFmN2UzYzNjMWEyYThiNGY0YTA3ZGViN2I2
MmQ3YzZjMjlmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDIxLTA1LTEzICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIE1hcmsgU2Vy
dmljZVdvcmtlclRocmVhZFByb3h5IHdpdGggYSBkZWZhdWx0IGFwcC1ib3VuZCB2YWx1ZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzMjAxCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS83NzY2NDQxNj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTZXJ2aWNlIHdvcmtlciBsb2FkcyBoYXZlIHRoZWlyIG93
biBkb2N1bWVudCBsb2FkZXIsIHNvIHRoZXkgZG9uJ3QKKyAgICAgICAgYWx3YXlzIGdldCBwcm9w
ZXJseSBtYXJrZWQgYXMgYXBwLWJvdW5kIGJhc2VkIG9uIHRoZSBtYWluIGZyYW1lCisgICAgICAg
IG5hdmlnYXRpb24uIFByaW9yIGZpeGVzIGhhbmRsZWQgc29tZSBmZXRjaCBldmVudHMsIHN5bnRo
ZXRpYworICAgICAgICByZXNwb25zZXMsIGFuZCBzb2Z0IHVwZGF0ZXMuIEJ1dCB3ZSBuZWVkIHRv
IHNldCBhIGRlZmF1bHQgdmFsdWUgd2hlbgorICAgICAgICB3ZSBpbnN0YWxsIHRoZSBzZXJ2aWNl
IHdvcmtlci4KKworICAgICAgICBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6aW5zdGFs
bFNlcnZpY2VXb3JrZXIoKSBjcmVhdGVzIHRoZQorICAgICAgICBTZXJ2aWNlV29ya2VyVGhyZWFk
UHJveHkgYW5kIGhhcyBtdWx0aXBsZSBwb3RlbnRpYWwgaW5jb21pbmcgY29kZQorICAgICAgICBw
YXRocy4KKworICAgICAgICBGaXJzdCBpcyBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnN0YXJ0RmV0
Y2goKSwgd2hpY2ggaGFzIGFjY2VzcyB0byB0aGUKKyAgICAgICAgTmV0d29ya1Jlc291cmNlTG9h
ZGVyIGFuZCB0aHVzIHRoZSBSZXNvdXJjZVJlcXVlc3QuIFNpbmNlIHRoZSByZXF1ZXN0CisgICAg
ICAgIGhhcyB0aGUgYXBwLWJvdW5kIHZhbHVlLCB0aGlzIGlzIHN0cmFpZ2h0Zm9yd2FyZC4KKwor
ICAgICAgICBUbyBoYW5kbGUgdGhlIHJlbWFpbmluZyBjYXNlcyBXZWJTV1NlcnZlckNvbm5lY3Rp
b246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyCisgICAgICAgIGFuZCBTV1NlcnZlcjo6aW5z
dGFsbENvbnRleHREYXRhLCB0aGlzIHBhdGNoIHN0b3JlcyB0aGUgZG9jdW1lbnQKKyAgICAgICAg
bG9hZGVyIGFwcC1ib3VuZCB2YWx1ZSB3aGVuIHJlZ2lzdGVyaW5nIHRoZSBzZXJ2aWNlIHdvcmtl
ciBjbGllbnQsIGFuZAorICAgICAgICByZWZlcmVuY2VzIHRoYXQgbGF0ZXIgb24uIFNpbmNlIGNs
aWVudHMgYXJlIGtleWVkIGJ5IG9yaWdpbiwgd2UgaGF2ZQorICAgICAgICB0byB1c2UgYSBiZXN0
LWVmZm9ydCBhcHByb2FjaCBhbmQgbWFyayBhbGwgY2xpZW50cyBmb3IgYW4gb3JpZ2luIGFzCisg
ICAgICAgIGFwcC1ib3VuZCBpZiBhdCBsZWFzdCBvbmUgaXMgYXBwLWJvdW5kLgorCisgICAgICAg
ICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Ojpsb2FkVVJMKToKKyAgICAgICAgRHJpdmUtYnkgZml4IEkgbm90aWNlZCB3aGlsZSB0ZXN0aW5n
LiBMb2FkVVJMIHJlcXVlc3RzIHNob3VsZCBiZQorICAgICAgICBtYXJrZWQgYXBwLWJvdW5kIGJh
c2VkIG9uIHRoZSBkb2N1bWVudCBsb2FkZXIuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdv
cmtlckNsaWVudERhdGE6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZnJvbSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJDbGllbnREYXRhOjpkZWNvZGUpOgorICAgICAgICBTdG9yZSB0aGUgbWFpbiBuYXZpZ2F0
aW9uIGFwcC1ib3VuZCB2YWx1ZSB3aGVuIHdlIHJlZ2lzdGVyIGEgY2xpZW50LgorCisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Omlzb2xhdGVkQ29weSBjb25zdCk6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpkZWNvZGUpOgor
ICAgICAgICBUaGUgY29udGV4dCBkYXRhIGdldHMgcGFzc2VkIHdoZW4gd2UgaW5zdGFsbCBhIHdv
cmtlciwgc28gd2UgbmVlZCB0bworICAgICAgICBzdG9yZSBoZXJlIHRvby4KKworICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHA6Cisg
ICAgICAgIFRoaXMgaXMgdGhlIGltcG9ydGFudCBwYXJ0LCB3ZSBzZXQgdGhlIGRvY3VtZW50IGxv
YWRlciBoZXJlLgorCisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6
OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3Ry
YXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3Jkcyk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6dXBkYXRl
V29ya2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpjbGllbnRJc0FwcEJvdW5kRm9y
UmVnaXN0cmFibGVEb21haW4pOgorICAgICAgICBCZXN0LWVmZm9ydCBoZXVyaXN0aWMgdG8gbWFy
ayBhIGxvYWQgYXMgYXBwIGJvdW5kIGlmIGFueSBjbGllbnQgZm9yCisgICAgICAgIHRoYXQgb3Jp
Z2luIHdhcyByZWdpc3RlcmVkIGFzIGFwcC1ib3VuZC4KKworICAgICAgICAoV2ViQ29yZTo6U1dT
ZXJ2ZXI6OnRyeUluc3RhbGxDb250ZXh0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZl
cjo6Y29udGV4dENvbm5lY3Rpb25DcmVhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVy
OjpydW5TZXJ2aWNlV29ya2VySWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2
ZXI6OnJ1blNlcnZpY2VXb3JrZXIpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29y
a2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpjb250ZXh0RGF0YSBj
b25zdCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5o
OgorCiAyMDIxLTA1LTEwICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI3NzI4MS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNWZh
ZmI5NmZkMzkzNmY1NDg4MTY2YmE5YjdkN2VjZmU4OTUyYTZkMi4uY2ZlYTVkZGIwYzk0NjVmMGNh
YTVkZTIyOWY2MjJkMWRmMmZlY2RhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAyMS0w
NS0xMyAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAg
ICBNYXJrIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSB3aXRoIGEgZGVmYXVsdCBhcHAtYm91bmQg
dmFsdWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
MzIwMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzc2NjQ0MTY+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2VlIFdlYkNvcmUgQ2hhbmdlTG9nIGZv
ciBkZXRhaWxzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpsYXN0TmF2
aWdhdGlvbldhc0FwcEJvdW5kKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJGZXRjaFRhc2suaDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZl
dGNoVGFzazo6bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk6CisgICAgICAgIEhlbHBlciBmdW5j
dGlvbiB0byBnZXQgcmVxdWVzdCBhcHAtYm91bmQgdmFsdWUuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIp
OgorICAgICAgICBIYW5kbGUgdHdvIGNhc2VzIGZvciBnZXR0aW5nIHRoZSBkZWZhdWx0IHZhbHVl
IGhlcmUuIHN0YXJ0RmV0Y2ggaGFzCisgICAgICAgIGFjY2VzcyB0byB0aGUgb3JpZ2luYWwgcmVx
dWVzdCBhbmQgY2FuIHVzZSB0aGF0IGFwcC1ib3VuZCB2YWx1ZS4KKyAgICAgICAgcG9zdE1lc3Nh
Z2VUb1NlcnZpY2VXb3JrZXIgdXNlcyB0aGUgY29udGV4dCBkYXRhIHZhbHVlIG9yIHRoZSBjbGll
bnQKKyAgICAgICAgZGF0YSB2YWx1ZSBzdG9yZWQgb24gcmVnaXN0cmF0aW9uIHRvIGRldGVybWlu
ZSB0aGlzLgorCiAyMDIxLTA1LTEwICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBw
bGUuY29tPgogCiAgICAgICAgIFNwZWN1bGF0aXZlIHJldmFsaWRhdGlvbiByZXF1ZXN0cyBub3Qg
cHJvcGVybHkgYXR0cmlidXRlZCBhcyBhcHAtYm91bmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuY3BwCmluZGV4IGJjNzNlMWU3ZGQyNDNkNTkwNGQ3NTFhNTRkMzk3Y2UwMGFhNWViYjQu
LjJmYzliMmRiZTNmMGQ0MzgwMGU4NTViNWY4MWVjODlmZTNmMjViNWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMTMzNyw2ICsxMzM3LDggQEAgdm9pZCBGcmFtZUxv
YWRlcjo6bG9hZFVSTChGcmFtZUxvYWRSZXF1ZXN0JiYgZnJhbWVMb2FkUmVxdWVzdCwgY29uc3Qg
U3RyaW5nJiByZWYKIAogICAgIGNvbnN0IFVSTCYgbmV3VVJMID0gZnJhbWVMb2FkUmVxdWVzdC5y
ZXNvdXJjZVJlcXVlc3QoKS51cmwoKTsKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChuZXdV
UkwpOworICAgIGlmIChtX2RvY3VtZW50TG9hZGVyKQorICAgICAgICByZXF1ZXN0LnNldElzQXBw
Qm91bmQobV9kb2N1bWVudExvYWRlci0+bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCgpKTsKICAg
ICBpZiAoIXJlZmVycmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJy
ZXIocmVmZXJyZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmNwcAppbmRleCA1MTE2N2U3ZWM3NDkxZDQ1
ZDk0ZjE1MTVlNTFjOTM2MWEwZTYyZjVjLi5kY2U1NjM0OGQ3NzM4MTQzYTdiMTNhMDY5Y2E1NzA1
ZTJkY2RjOGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNsaWVudERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2lu
Y2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRG9j
dW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIlNXQ2xpZW50Q29u
bmVjdGlvbi5oIgogCkBAIC01Nyw3ICs1OCw3IEBAIHN0YXRpYyBTZXJ2aWNlV29ya2VyQ2xpZW50
RnJhbWVUeXBlIHRvU2VydmljZVdvcmtlckNsaWVudEZyYW1lVHlwZShTY3JpcHRFeGVjdXRpCiAK
IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjppc29sYXRl
ZENvcHkoKSBjb25zdAogewotICAgIHJldHVybiB7IGlkZW50aWZpZXIsIHR5cGUsIGZyYW1lVHlw
ZSwgdXJsLmlzb2xhdGVkQ29weSgpIH07CisgICAgcmV0dXJuIHsgaWRlbnRpZmllciwgdHlwZSwg
ZnJhbWVUeXBlLCB1cmwuaXNvbGF0ZWRDb3B5KCksIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQg
fTsKIH0KIAogU2VydmljZVdvcmtlckNsaWVudERhdGEgU2VydmljZVdvcmtlckNsaWVudERhdGE6
OmZyb20oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgU1dDbGllbnRDb25uZWN0aW9u
JiBjb25uZWN0aW9uKQpAQCAtNjUsMTEgKzY2LDE0IEBAIFNlcnZpY2VXb3JrZXJDbGllbnREYXRh
IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjpmcm9tKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
CiAgICAgYm9vbCBpc0RvY3VtZW50ID0gaXM8RG9jdW1lbnQ+KGNvbnRleHQpOwogICAgIFJFTEVB
U0VfQVNTRVJUKGlzRG9jdW1lbnQpOyAvLyBXZSBkbyBub3Qgc3VwcG9ydCBkZWRpY2F0ZWQgd29y
a2VycyBhcyBjbGllbnRzIHlldC4KIAorICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9j
dW1lbnQ+KGNvbnRleHQpOworICAgIGF1dG8gbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCA9IGRv
Y3VtZW50LmxvYWRlcigpID8gZG9jdW1lbnQubG9hZGVyKCktPmxhc3ROYXZpZ2F0aW9uV2FzQXBw
Qm91bmQoKSA6IGZhbHNlOworCiAgICAgcmV0dXJuIHsKLSAgICAgICAgeyBjb25uZWN0aW9uLnNl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCksIGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS5p
ZGVudGlmaWVyKCkgfSwKKyAgICAgICAgeyBjb25uZWN0aW9uLnNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyKCksIGRvY3VtZW50LmlkZW50aWZpZXIoKSB9LAogICAgICAgICBpc0RvY3VtZW50ID8g
U2VydmljZVdvcmtlckNsaWVudFR5cGU6OldpbmRvdyA6IFNlcnZpY2VXb3JrZXJDbGllbnRUeXBl
OjpXb3JrZXIsCiAgICAgICAgIHRvU2VydmljZVdvcmtlckNsaWVudEZyYW1lVHlwZShjb250ZXh0
KSwKLSAgICAgICAgY29udGV4dC51cmwoKQorICAgICAgICBjb250ZXh0LnVybCgpLCBsYXN0TmF2
aWdhdGlvbldhc0FwcEJvdW5kCiAgICAgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaAppbmRleCAwNDZl
M2FjMmY1NWI5ZTA3NmFkZjE5ZWM3M2NmYWE2MjI3ZDBiOGEwLi5mMmVmZDU3Y2M2YjBiYzAxMjRh
MTVmYTIxMDRmMjQzYjg0YTA4MWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaApAQCAtNDIsNiArNDIsNyBA
QCBzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudERhdGEgewogICAgIFNlcnZpY2VXb3JrZXJDbGll
bnRUeXBlIHR5cGU7CiAgICAgU2VydmljZVdvcmtlckNsaWVudEZyYW1lVHlwZSBmcmFtZVR5cGU7
CiAgICAgVVJMIHVybDsKKyAgICBib29sIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgeyBmYWxz
ZSB9OwogCiAgICAgU2VydmljZVdvcmtlckNsaWVudERhdGEgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7
CiAKQEAgLTU0LDcgKzU1LDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIHsKIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXIg
PDwgdHlwZSA8PCBmcmFtZVR5cGUgPDwgdXJsOworICAgIGVuY29kZXIgPDwgaWRlbnRpZmllciA8
PCB0eXBlIDw8IGZyYW1lVHlwZSA8PCB1cmwgPDwgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDsK
IH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAgLTgwLDcgKzgxLDEyIEBAIE9wdGlvbmFs
PFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZGVjb2Rl
KERlY29kZXImIGRlY29kCiAgICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CiAKLSAgICByZXR1cm4geyB7IFdURk1vdmUoKmlkZW50aWZpZXIpLCBXVEZNb3ZlKCp0eXBl
KSwgV1RGTW92ZSgqZnJhbWVUeXBlKSwgV1RGTW92ZSgqdXJsKSB9IH07CisgICAgT3B0aW9uYWw8
Ym9vbD4gbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDsKKyAgICBkZWNvZGVyID4+IGxhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQ7CisgICAgaWYgKCFsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpp
ZGVudGlmaWVyKSwgV1RGTW92ZSgqdHlwZSksIFdURk1vdmUoKmZyYW1lVHlwZSksIFdURk1vdmUo
KnVybCksICpsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIH0gfTsKIH0KIAogdXNpbmcgU2Vydmlj
ZVdvcmtlckNsaWVudHNNYXRjaEFsbENhbGxiYWNrID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJik+OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRh
LmNwcAppbmRleCAxNmRmMmQ4MjQ5Zjg3ZjZhZTQzNzNlMjY1NjIzYzNkOGE5OWI1ZWRmLi5iNWFk
ZGIzMWRhYmNiYTgwYjk0ZDAwMzRlYWNmMzY3OTRmMTNhYjRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRh
LmNwcApAQCAtNDQsNiArNDQsNyBAQCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgU2VydmljZVdv
cmtlckNvbnRleHREYXRhOjppc29sYXRlZENvcHkoKSBjb25zdAogICAgICAgICBzY3JpcHRVUkwu
aXNvbGF0ZWRDb3B5KCksCiAgICAgICAgIHdvcmtlclR5cGUsCiAgICAgICAgIGxvYWRlZEZyb21E
aXNrLAorICAgICAgICBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kLAogICAgICAgICBjcm9zc1Ro
cmVhZENvcHkoc2NyaXB0UmVzb3VyY2VNYXApCiAgICAgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaApp
bmRleCAxNGFiY2FkNjRjOTlhMWM4NzEzNmJiYzBmNmQ5Y2M1NjFlZjI4MTIwLi4xMTlmMmIzZDBi
YTFhNDg4MTQ4NTJlMjllYmY4NWM3Y2VkNWMwYjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCkBAIC04
Nyw2ICs4Nyw3IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgewogICAgIFVSTCBz
Y3JpcHRVUkw7CiAgICAgV29ya2VyVHlwZSB3b3JrZXJUeXBlOwogICAgIGJvb2wgbG9hZGVkRnJv
bURpc2s7CisgICAgYm9vbCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOwogICAgIEhhc2hNYXA8
VVJMLCBJbXBvcnRlZFNjcmlwdD4gc2NyaXB0UmVzb3VyY2VNYXA7CiAKICAgICB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CkBAIC05OSw3ICsxMDAs
NyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgam9i
RGF0YUlkZW50aWZpZXIgPDwgcmVnaXN0cmF0aW9uIDw8IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IDw8IHNjcmlwdCA8PCBjb250ZW50U2VjdXJpdHlQb2xpY3kgPDwgcmVmZXJyZXJQb2xpY3kKLSAg
ICAgICAgPDwgc2NyaXB0VVJMIDw8IHdvcmtlclR5cGUgPDwgbG9hZGVkRnJvbURpc2sgPDwgc2Ny
aXB0UmVzb3VyY2VNYXAgPDwgY2VydGlmaWNhdGVJbmZvOworICAgICAgICA8PCBzY3JpcHRVUkwg
PDwgd29ya2VyVHlwZSA8PCBsb2FkZWRGcm9tRGlzayA8PCBsYXN0TmF2aWdhdGlvbldhc0FwcEJv
dW5kIDw8IHNjcmlwdFJlc291cmNlTWFwIDw8IGNlcnRpZmljYXRlSW5mbzsKIH0KIAogdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4KQEAgLTE0NCw2ICsxNDUsMTAgQEAgT3B0aW9uYWw8U2VydmljZVdv
cmtlckNvbnRleHREYXRhPiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmRlY29kZShEZWNvZGVy
JiBkZWMKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGxvYWRlZEZyb21EaXNrKSkKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKIAorICAgIGJvb2wgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3Vu
ZDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpKQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCiAgICAgSGFzaE1hcDxVUkwsIEltcG9ydGVk
U2NyaXB0PiBzY3JpcHRSZXNvdXJjZU1hcDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNjcmlw
dFJlc291cmNlTWFwKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTE2NCw2ICsx
NjksNyBAQCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlYwogICAgICAgICBXVEZNb3ZlKHNjcmlwdFVS
TCksCiAgICAgICAgIHdvcmtlclR5cGUsCiAgICAgICAgIGxvYWRlZEZyb21EaXNrLAorICAgICAg
ICBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kLAogICAgICAgICBXVEZNb3ZlKHNjcmlwdFJlc291
cmNlTWFwKQogICAgIH19OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAK
aW5kZXggODBkYzAzN2RiNzczZjY1YzVjY2QzM2JmYjQ2MjMwZDdkMDI0ZWM2My4uZjUxYTg3MGI3
ODE2OTQ0ZTA4Yjc5ZThhMzNiZDU4MjkyNmZhYTViYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkuY3BwCkBAIC0xMTYsNiArMTE2LDggQEAgU2VydmljZVdvcmtlclRocmVhZFBy
b3h5OjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29u
ZmkKICAgICBtX3JlbW90ZURlYnVnZ2FibGUtPnNldFJlbW90ZURlYnVnZ2luZ0FsbG93ZWQodHJ1
ZSk7CiAgICAgbV9yZW1vdGVEZWJ1Z2dhYmxlLT5pbml0KCk7CiAjZW5kaWYKKworICAgIHNldExh
c3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoZGF0YS5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKTsK
IH0KIAogU2VydmljZVdvcmtlclRocmVhZFByb3h5Ojp+U2VydmljZVdvcmtlclRocmVhZFByb3h5
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVn
aXN0cmF0aW9uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKaW5kZXggODkyYzNmNDllOTAxNGEzNWZlOTI5
ODRlZjlhMjkwNGE3YmRlZDU2MC4uNDMxZjE3NmVmMjA4ZjA4MTBiYWQwMjQxM2FmYTQ3YjI3YTlm
N2I0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9S
ZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKQEAgLTU3OSw3ICs1NzksNyBAQCBT
dHJpbmcgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHMoKQogICAgICAgICBhdXRv
IHJlZ2lzdHJhdGlvbklkZW50aWZpZXIgPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRp
Zmllcjo6Z2VuZXJhdGUoKTsKICAgICAgICAgYXV0byBzZXJ2aWNlV29ya2VyRGF0YSA9IFNlcnZp
Y2VXb3JrZXJEYXRhIHsgd29ya2VySWRlbnRpZmllciwgc2NyaXB0VVJMLCBTZXJ2aWNlV29ya2Vy
U3RhdGU6OkFjdGl2YXRlZCwgKndvcmtlclR5cGUsIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIgfTsK
ICAgICAgICAgYXV0byByZWdpc3RyYXRpb24gPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0
YSB7IFdURk1vdmUoKmtleSksIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFdURk1vdmUoc2NvcGVV
UkwpLCAqdXBkYXRlVmlhQ2FjaGUsIGxhc3RVcGRhdGVDaGVja1RpbWUsIFdURjo6bnVsbG9wdCwg
V1RGOjpudWxsb3B0LCBXVEZNb3ZlKHNlcnZpY2VXb3JrZXJEYXRhKSB9OwotICAgICAgICBhdXRv
IGNvbnRleHREYXRhID0gU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsgV1RGOjpudWxsb3B0LCBX
VEZNb3ZlKHJlZ2lzdHJhdGlvbiksIHdvcmtlcklkZW50aWZpZXIsIFdURk1vdmUoc2NyaXB0KSwg
V1RGTW92ZSgqY2VydGlmaWNhdGVJbmZvKSwgV1RGTW92ZSgqY29udGVudFNlY3VyaXR5UG9saWN5
KSwgV1RGTW92ZShyZWZlcnJlclBvbGljeSksIFdURk1vdmUoc2NyaXB0VVJMKSwgKndvcmtlclR5
cGUsIHRydWUsIFdURk1vdmUoc2NyaXB0UmVzb3VyY2VNYXApIH07CisgICAgICAgIGF1dG8gY29u
dGV4dERhdGEgPSBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgeyBXVEY6Om51bGxvcHQsIFdURk1v
dmUocmVnaXN0cmF0aW9uKSwgd29ya2VySWRlbnRpZmllciwgV1RGTW92ZShzY3JpcHQpLCBXVEZN
b3ZlKCpjZXJ0aWZpY2F0ZUluZm8pLCBXVEZNb3ZlKCpjb250ZW50U2VjdXJpdHlQb2xpY3kpLCBX
VEZNb3ZlKHJlZmVycmVyUG9saWN5KSwgV1RGTW92ZShzY3JpcHRVUkwpLCAqd29ya2VyVHlwZSwg
dHJ1ZSwgZmFsc2UsIFdURk1vdmUoc2NyaXB0UmVzb3VyY2VNYXApIH07CiAKICAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb250ZXh0RGF0
YSA9IGNvbnRleHREYXRhLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgewogICAgICAgICAgICAg
cHJvdGVjdGVkVGhpcy0+YWRkUmVnaXN0cmF0aW9uVG9TdG9yZShXVEZNb3ZlKGNvbnRleHREYXRh
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXIuY3BwCmluZGV4IDEzOTJmNDQxNGQ5YWZlZGY0NjAwMjRmOTc4YWI2Y2RiNDExNDBiMGUuLjJm
MDgwNmY0YWMwY2MyNDZiNTc5OTZmYmJhODBhMWI1YTNlNmZkYTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC02NDgsNyAr
NjQ4LDI2IEBAIHZvaWQgU1dTZXJ2ZXI6OnJlbW92ZUNsaWVudFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb24oQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU2VyCiAKIHZvaWQgU1dTZXJ2ZXI6OnVwZGF0
ZVdvcmtlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVu
dGlmaWVyLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uLCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgU2NyaXB0QnVmZmVyJiBzY3JpcHQsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYgY2Vy
dGlmaWNhdGVJbmZvLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMm
IGNvbnRlbnRTZWN1cml0eVBvbGljeSwgY29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGljeSwgV29y
a2VyVHlwZSB0eXBlLCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBv
cnRlZFNjcmlwdD4mJiBzY3JpcHRSZXNvdXJjZU1hcCkKIHsKLSAgICB0cnlJbnN0YWxsQ29udGV4
dERhdGEoU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsgam9iRGF0YUlkZW50aWZpZXIsIHJlZ2lz
dHJhdGlvbi5kYXRhKCksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBzY3Jp
cHQsIGNlcnRpZmljYXRlSW5mbywgY29udGVudFNlY3VyaXR5UG9saWN5LCByZWZlcnJlclBvbGlj
eSwgdXJsLCB0eXBlLCBmYWxzZSwgV1RGTW92ZShzY3JpcHRSZXNvdXJjZU1hcCkgfSk7CisgICAg
dHJ5SW5zdGFsbENvbnRleHREYXRhKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7IGpvYkRhdGFJ
ZGVudGlmaWVyLCByZWdpc3RyYXRpb24uZGF0YSgpLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcjo6
Z2VuZXJhdGUoKSwgc2NyaXB0LCBjZXJ0aWZpY2F0ZUluZm8sIGNvbnRlbnRTZWN1cml0eVBvbGlj
eSwgcmVmZXJyZXJQb2xpY3ksIHVybCwgdHlwZSwgZmFsc2UsIGZhbHNlLCBXVEZNb3ZlKHNjcmlw
dFJlc291cmNlTWFwKSB9KTsKK30KKworYm9vbCBTV1NlcnZlcjo6Y2xpZW50SXNBcHBCb3VuZEZv
clJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pCit7Cisg
ICAgYXV0byBjbGllbnRzQnlSZWdpc3RyYWJsZURvbWFpbkl0ZXJhdG9yID0gbV9jbGllbnRzQnlS
ZWdpc3RyYWJsZURvbWFpbi5maW5kKGRvbWFpbik7CisgICAgaWYgKGNsaWVudHNCeVJlZ2lzdHJh
YmxlRG9tYWluSXRlcmF0b3IgPT0gbV9jbGllbnRzQnlSZWdpc3RyYWJsZURvbWFpbi5lbmQoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byYgY2xpZW50c0ZvclJlZ2lzdHJhYmxl
RG9tYWluID0gY2xpZW50c0J5UmVnaXN0cmFibGVEb21haW5JdGVyYXRvci0+dmFsdWU7CisgICAg
Zm9yIChhdXRvJiBjbGllbnQgOiBjbGllbnRzRm9yUmVnaXN0cmFibGVEb21haW4pIHsKKyAgICAg
ICAgYXV0byBkYXRhID0gbV9jbGllbnRzQnlJZC5maW5kKGNsaWVudCk7CisgICAgICAgIGlmIChk
YXRhID09IG1fY2xpZW50c0J5SWQuZW5kKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICBpZiAoZGF0YS0+dmFsdWUubGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCkKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKIH0KIAogdm9pZCBT
V1NlcnZlcjo6dHJ5SW5zdGFsbENvbnRleHREYXRhKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYm
IGRhdGEpCkBAIC02NjMsNyArNjgyLDggQEAgdm9pZCBTV1NlcnZlcjo6dHJ5SW5zdGFsbENvbnRl
eHREYXRhKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGRhdGEpCiAgICAgICAgIGNyZWF0ZUNv
bnRleHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9tYWluKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICAKKworICAgIGRhdGEubGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCA9IGNsaWVudElz
QXBwQm91bmRGb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbik7CiAgICAgaW5z
dGFsbENvbnRleHREYXRhKGRhdGEpOwogfQogCkBAIC02NzIsMTMgKzY5MiwxNiBAQCB2b2lkIFNX
U2VydmVyOjpjb250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uJiBjb250ZXh0Q29ubgogICAgIGZvciAoYXV0byYgY29ubmVjdGlvbiA6IG1fY29ubmVjdGlv
bnMudmFsdWVzKCkpCiAgICAgICAgIGNvbm5lY3Rpb24tPmNvbnRleHRDb25uZWN0aW9uQ3JlYXRl
ZChjb250ZXh0Q29ubmVjdGlvbik7CiAKKyAgICBhdXRvIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91
bmQgPSBjbGllbnRJc0FwcEJvdW5kRm9yUmVnaXN0cmFibGVEb21haW4oY29udGV4dENvbm5lY3Rp
b24ucmVnaXN0cmFibGVEb21haW4oKSk7CiAgICAgYXV0byBwZW5kaW5nQ29udGV4dERhdGFzID0g
bV9wZW5kaW5nQ29udGV4dERhdGFzLnRha2UoY29udGV4dENvbm5lY3Rpb24ucmVnaXN0cmFibGVE
b21haW4oKSk7Ci0gICAgZm9yIChhdXRvJiBkYXRhIDogcGVuZGluZ0NvbnRleHREYXRhcykKKyAg
ICBmb3IgKGF1dG8mIGRhdGEgOiBwZW5kaW5nQ29udGV4dERhdGFzKSB7CisgICAgICAgIGRhdGEu
bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCA9IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7CiAg
ICAgICAgIGluc3RhbGxDb250ZXh0RGF0YShkYXRhKTsKKyAgICB9CiAKICAgICBhdXRvIHNlcnZp
Y2VXb3JrZXJSdW5SZXF1ZXN0cyA9IG1fc2VydmljZVdvcmtlclJ1blJlcXVlc3RzLnRha2UoY29u
dGV4dENvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKSk7CiAgICAgZm9yIChhdXRvJiBpdGVt
IDogc2VydmljZVdvcmtlclJ1blJlcXVlc3RzKSB7Ci0gICAgICAgIGJvb2wgc3VjY2VzcyA9IHJ1
blNlcnZpY2VXb3JrZXIoaXRlbS5rZXkpOworICAgICAgICBib29sIHN1Y2Nlc3MgPSBydW5TZXJ2
aWNlV29ya2VyKGl0ZW0ua2V5LCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kID8gTGFzdE5hdmln
YXRpb25XYXNBcHBCb3VuZDo6WWVzIDogTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDo6Tm8pOwog
ICAgICAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogaXRlbS52YWx1ZSkKICAgICAgICAgICAgIGNh
bGxiYWNrKHN1Y2Nlc3MgPyAmY29udGV4dENvbm5lY3Rpb24gOiBudWxscHRyKTsKICAgICB9CkBA
IC03MTAsNyArNzMzLDcgQEAgdm9pZCBTV1NlcnZlcjo6aW5zdGFsbENvbnRleHREYXRhKGNvbnN0
IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSkKICAgICBjb25uZWN0aW9uLT5pbnN0YWxs
U2VydmljZVdvcmtlckNvbnRleHQoZGF0YSwgdXNlckFnZW50KTsKIH0KIAotdm9pZCBTV1NlcnZl
cjo6cnVuU2VydmljZVdvcmtlcklmTmVjZXNzYXJ5KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIFJ1blNlcnZpY2VXb3JrZXJDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBTV1Nl
cnZlcjo6cnVuU2VydmljZVdvcmtlcklmTmVjZXNzYXJ5KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIsIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgd2FzQXBwQm91bmQsIFJ1blNl
cnZpY2VXb3JrZXJDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGF1dG8qIHdvcmtlciA9IHdv
cmtlckJ5SUQoaWRlbnRpZmllcik7CiAgICAgaWYgKCF3b3JrZXIpIHsKQEAgLTczMSwxMCArNzU0
LDEwIEBAIHZvaWQgU1dTZXJ2ZXI6OnJ1blNlcnZpY2VXb3JrZXJJZk5lY2Vzc2FyeShTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBSCiAgICAgfQogCiAgICAgaWYgKHdvcmtlci0+
aXNUZXJtaW5hdGluZygpKSB7Ci0gICAgICAgIHdvcmtlci0+d2hlblRlcm1pbmF0ZWQoW3RoaXMs
IHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGlkZW50aWZpZXIsIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAgICAgIHdvcmtlci0+d2hlblRlcm1pbmF0
ZWQoW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGlkZW50aWZpZXIsIHdhc0Fw
cEJvdW5kLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgewogICAgICAg
ICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVs
bHB0cik7Ci0gICAgICAgICAgICBydW5TZXJ2aWNlV29ya2VySWZOZWNlc3NhcnkoaWRlbnRpZmll
ciwgV1RGTW92ZShjYWxsYmFjaykpOworICAgICAgICAgICAgcnVuU2VydmljZVdvcmtlcklmTmVj
ZXNzYXJ5KGlkZW50aWZpZXIsIHdhc0FwcEJvdW5kLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAg
ICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNzUxLDExICs3NzQsMTEgQEAgdm9p
ZCBTV1NlcnZlcjo6cnVuU2VydmljZVdvcmtlcklmTmVjZXNzYXJ5KFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGJvb2wg
c3VjY2VzcyA9IHJ1blNlcnZpY2VXb3JrZXIoaWRlbnRpZmllcik7CisgICAgYm9vbCBzdWNjZXNz
ID0gcnVuU2VydmljZVdvcmtlcihpZGVudGlmaWVyLCB3YXNBcHBCb3VuZCk7CiAgICAgY2FsbGJh
Y2soc3VjY2VzcyA/IGNvbnRleHRDb25uZWN0aW9uIDogbnVsbHB0cik7CiB9CiAKLWJvb2wgU1dT
ZXJ2ZXI6OnJ1blNlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmll
cikKK2Jvb2wgU1dTZXJ2ZXI6OnJ1blNlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCB3YXNBcHBCb3VuZCkKIHsK
ICAgICBhdXRvKiB3b3JrZXIgPSB3b3JrZXJCeUlEKGlkZW50aWZpZXIpOwogICAgIGlmICghd29y
a2VyKQpAQCAtNzc1LDcgKzc5OCw5IEBAIGJvb2wgU1dTZXJ2ZXI6OnJ1blNlcnZpY2VXb3JrZXIo
U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBhdXRvKiBjb250ZXh0Q29u
bmVjdGlvbiA9IHdvcmtlci0+Y29udGV4dENvbm5lY3Rpb24oKTsKICAgICBBU1NFUlQoY29udGV4
dENvbm5lY3Rpb24pOwogCi0gICAgY29udGV4dENvbm5lY3Rpb24tPmluc3RhbGxTZXJ2aWNlV29y
a2VyQ29udGV4dCh3b3JrZXItPmNvbnRleHREYXRhKCksIHdvcmtlci0+dXNlckFnZW50KCkpOwor
ICAgIGF1dG8gY29udGV4dERhdGEgPSB3b3JrZXItPmNvbnRleHREYXRhKCk7CisgICAgY29udGV4
dERhdGEubGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCA9IHdhc0FwcEJvdW5kID09IExhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQ6OlllczsKKyAgICBjb250ZXh0Q29ubmVjdGlvbi0+aW5zdGFsbFNl
cnZpY2VXb3JrZXJDb250ZXh0KGNvbnRleHREYXRhLCB3b3JrZXItPnVzZXJBZ2VudCgpKTsKIAog
ICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5oCmluZGV4IGQwZWQ3YzkyMzY3ZTE3YmM5MzgyY2Y4MGNkNWU4YzY4
MzdiNzNjZWIuLmM4YWQ4NGIwODEwMDAyMzNjMjk0NDg2YmYwMTBlYTBlY2QwNGNjYzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAg
LTUxLDYgKzUxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitlbnVtIGNsYXNzIExhc3RO
YXZpZ2F0aW9uV2FzQXBwQm91bmQgOiBib29sIHsgTm8sIFllcyB9OwogY2xhc3MgUmVnaXN0cmF0
aW9uU3RvcmU7CiBjbGFzcyBTV09yaWdpblN0b3JlOwogY2xhc3MgU1dTZXJ2ZXJKb2JRdWV1ZTsK
QEAgLTE4Niw3ICsxODcsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1bnJl
Z2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBDbGllbnRPcmlnaW4mLCBTZXJ2aWNlV29y
a2VyQ2xpZW50SWRlbnRpZmllcik7CiAKICAgICB1c2luZyBSdW5TZXJ2aWNlV29ya2VyQ2FsbGJh
Y2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKik+Owot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcnVuU2VydmljZVdvcmtlcklmTmVjZXNzYXJ5KFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBSdW5TZXJ2aWNlV29ya2VyQ2FsbGJhY2smJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBydW5TZXJ2aWNlV29ya2VySWZOZWNlc3NhcnkoU2VydmljZVdvcmtl
cklkZW50aWZpZXIsIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQsIFJ1blNlcnZpY2VXb3JrZXJD
YWxsYmFjayYmKTsKIAogICAgIHZvaWQgcmVzb2x2ZVJlZ2lzdHJhdGlvblJlYWR5UmVxdWVzdHMo
U1dTZXJ2ZXJSZWdpc3RyYXRpb24mKTsKIApAQCAtMjMwLDcgKzIzMSw4IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCB0ZXJtaW5hdGVQcmVpbnN0YWxsYXRpb25Xb3JrZXIoU1dTZXJ2ZXJXb3JrZXImKTsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIFNXU2VydmVyUmVnaXN0cmF0aW9uKiBkb1JlZ2lzdHJhdGlv
bk1hdGNoaW5nKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBVUkwm
IGNsaWVudFVSTCk7Ci0gICAgYm9vbCBydW5TZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKTsKKyAgICBib29sIHJ1blNlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOworICAgIGJvb2wgY2xpZW50SXNBcHBCb3Vu
ZEZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CiAKICAgICB2
b2lkIHRyeUluc3RhbGxDb250ZXh0RGF0YShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJik7CiAg
ICAgdm9pZCBpbnN0YWxsQ29udGV4dERhdGEoY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRh
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJXb3JrZXIuY3BwCmluZGV4IDEzNTQwZWRkOTBiMzUwMWM3M2M0ZjMyMjUzNDM0MjY4
M2I5ZjZhM2QuLjE1ZmI2MzNlNWQwNTg0ZjdmZjZjOGI5MmJjMzU2YTRmNDczOWExYjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3Jr
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJXb3JrZXIuY3BwCkBAIC04Niw3ICs4Niw3IEBAIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBT
V1NlcnZlcldvcmtlcjo6Y29udGV4dERhdGEoKSBjb25zdAogewogICAgIEFTU0VSVChtX3JlZ2lz
dHJhdGlvbik7CiAKLSAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIG1fcmVnaXN0cmF0aW9uLT5k
YXRhKCksIG1fZGF0YS5pZGVudGlmaWVyLCBtX3NjcmlwdCwgbV9jZXJ0aWZpY2F0ZUluZm8sIG1f
Y29udGVudFNlY3VyaXR5UG9saWN5LCBtX3JlZmVycmVyUG9saWN5LCBtX2RhdGEuc2NyaXB0VVJM
LCBtX2RhdGEudHlwZSwgZmFsc2UsIG1fc2NyaXB0UmVzb3VyY2VNYXAgfTsKKyAgICByZXR1cm4g
eyBXVEY6Om51bGxvcHQsIG1fcmVnaXN0cmF0aW9uLT5kYXRhKCksIG1fZGF0YS5pZGVudGlmaWVy
LCBtX3NjcmlwdCwgbV9jZXJ0aWZpY2F0ZUluZm8sIG1fY29udGVudFNlY3VyaXR5UG9saWN5LCBt
X3JlZmVycmVyUG9saWN5LCBtX2RhdGEuc2NyaXB0VVJMLCBtX2RhdGEudHlwZSwgZmFsc2UsIGZh
bHNlLCBtX3NjcmlwdFJlc291cmNlTWFwIH07CiB9CiAKIHZvaWQgU1dTZXJ2ZXJXb3JrZXI6OnRl
cm1pbmF0ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgK
aW5kZXggOTRhZTFmYTI2NTNmZTFjNjYwMWYxNmIxMjAwYTg1OWVlODM2ZjYyMy4uN2FlMDA0NGJh
ZjZjNDZmZTM0NjVjZWExOGY4N2M0M2IyZGRkZTViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaApAQCAtMTEyLDcg
KzExMiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSGFzaE1hcDxTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgU1dTZXJ2ZXJXb3JrZXIqPiYgYWxsV29ya2VycygpOwogCiAgICAgY29uc3QgU2Vydmlj
ZVdvcmtlckRhdGEmIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KLSAgICBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEgY29udGV4dERhdGEoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgY29udGV4dERhdGEoKSBjb25zdDsKIAogICAgIGNv
bnN0IENsaWVudE9yaWdpbiYgb3JpZ2luKCkgY29uc3Q7CiAgICAgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURv
bWFpbjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDYzM2JlMzMxZGIwOGZmODMwOTM4M2NkYTVkOGU2YTAw
YWYxMTI2YWQuLjFlYWE0MGE0ZWZjM2UxNTY2YjM1NWYwYjQ1MmNhZWE5YzBlMzE5ODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHAKQEAgLTE1MTgsNiArMTUxOCwxMSBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6aXNBcHBCb3VuZCgpCiAgICAgcmV0dXJuIG1fcGFyYW1ldGVycy5yZXF1ZXN0LmlzQXBwQm91
bmQoKTsKIH0KIAorYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Omxhc3ROYXZpZ2F0aW9uV2Fz
QXBwQm91bmQoKQoreyAgICAKKyAgICByZXR1cm4gbV9wYXJhbWV0ZXJzLnJlcXVlc3QuaXNBcHBC
b3VuZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IGZhMGFiODdhMDc1NmRkZWYxOGZhODA0YjhhODE2ODMy
MzZlMGMzMzkuLjM5ZDI0NTM4MDdiMmEwY2IzZjBiNTEzZWFhMGJhOTgyNTYxODk3NDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuaApAQCAtOTcsNiArOTcsNyBAQCBwdWJsaWM6CiAgICAgUmVzb3VyY2VMb2FkSWRlbnRpZmll
ciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXI7IH0K
ICAgICBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1f
cGFyYW1ldGVycy53ZWJGcmFtZUlEOyB9CiAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFn
ZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRDsgfQorICAgIGJvb2wg
bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCgpOwogICAgIGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzOyB9
CiAKICAgICBOZXR3b3JrQ2FjaGU6Okdsb2JhbEZyYW1lSUQgZ2xvYmFsRnJhbWVJRCgpIHsgcmV0
dXJuIHsgbV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELCBwYWdlSUQoKSwgZnJhbWVJRCgpIH07
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCmluZGV4IGQzN2Q3ODA2OTgz
YmJhNTQ3Y2EwZjkyMzVlYjRiZjZiNzMxNTY1YTQuLjBhNjI3NDk0YzllNjQ1NDAxNzlhNGU3Yjgw
MTNhZTJhZmRlZGE4YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaApA
QCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAogI2luY2x1ZGUg
IkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0ZldGNoSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRl
bnRpZmllci5oPgpAQCAtNTAsNyArNTEsNiBAQCBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjsKIGNsYXNz
IFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKIGNsYXNzIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjsKIApAQCAtNzUsNiArNzUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYW5ub3RIYW5kbGUo
KTsKICAgICB2b2lkIGNvbnRleHRDbG9zZWQoKTsKIAorICAgIGJvb2wgbGFzdE5hdmlnYXRpb25X
YXNBcHBCb3VuZCgpIHsgcmV0dXJuIG1fbG9hZGVyLmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQo
KTsgfQorCiBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UoV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVS
ZXNwb25zZU1lc3NhZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApp
bmRleCBjZjg2ODZlNzc0MTcxNTQ4MTZlOGI2MmU5MjMzMDNjYzM3YzMxNDhkLi4zN2RiY2E0MmM2
MzBiZDlmZTA0MzE2ZjJjMGYyN2E2YTdlYTExMjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uLmNwcApAQCAtMjMwLDcgKzIzMCw4IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uOjpzdGFydEZldGNoKFNlcnZpY2VXb3JrZXJGZXRjaFRhc2smIHRhc2ssIFNXU2VydmVy
V29yCiAgICAgICAgICAgICBzZXJ2ZXIoKS5jcmVhdGVDb250ZXh0Q29ubmVjdGlvbih3b3JrZXIt
PnJlZ2lzdHJhYmxlRG9tYWluKCkpOwogCiAgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IHRhc2st
PnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCk7Ci0gICAgICAgIHNlcnZlcigpLnJ1blNlcnZpY2VX
b3JrZXJJZk5lY2Vzc2FyeShpZGVudGlmaWVyLCBbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlz
KSwgdGhpcywgdGFzayA9IFdURk1vdmUodGFzayldKGF1dG8qIGNvbnRleHRDb25uZWN0aW9uKSBt
dXRhYmxlIHsKKyAgICAgICAgYXV0byBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kID0gdGFzay0+
bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCgpID8gV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNB
cHBCb3VuZDo6WWVzIDogV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDo6Tm87Cisg
ICAgICAgIHNlcnZlcigpLnJ1blNlcnZpY2VXb3JrZXJJZk5lY2Vzc2FyeShpZGVudGlmaWVyLCBs
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kLCBbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwg
dGhpcywgdGFzayA9IFdURk1vdmUodGFzayldKGF1dG8qIGNvbnRleHRDb25uZWN0aW9uKSBtdXRh
YmxlIHsKICAgICAgICAgICAgIGlmICghdGFzaykKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICAKQEAgLTI1OSwxOSArMjYwLDI0IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBk
CiAgICAgICAgIHJldHVybjsKIAogICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJPckNsaWVudERh
dGE+IHNvdXJjZURhdGE7CisgICAgYm9vbCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kID0gZmFs
c2U7CiAgICAgV1RGOjpzd2l0Y2hPbihzb3VyY2VJZGVudGlmaWVyLCBbJl0oU2VydmljZVdvcmtl
cklkZW50aWZpZXIgaWRlbnRpZmllcikgewotICAgICAgICBpZiAoYXV0byogc291cmNlV29ya2Vy
ID0gc2VydmVyKCkud29ya2VyQnlJRChpZGVudGlmaWVyKSkKKyAgICAgICAgaWYgKGF1dG8qIHNv
dXJjZVdvcmtlciA9IHNlcnZlcigpLndvcmtlckJ5SUQoaWRlbnRpZmllcikpIHsKICAgICAgICAg
ICAgIHNvdXJjZURhdGEgPSBTZXJ2aWNlV29ya2VyT3JDbGllbnREYXRhIHsgc291cmNlV29ya2Vy
LT5kYXRhKCkgfTsKKyAgICAgICAgICAgIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgPSBzb3Vy
Y2VXb3JrZXItPmNvbnRleHREYXRhKCkubGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDsKKyAgICAg
ICAgfQogICAgIH0sIFsmXShTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBpZGVudGlmaWVy
KSB7Ci0gICAgICAgIGlmIChhdXRvIGNsaWVudERhdGEgPSBkZXN0aW5hdGlvbldvcmtlci0+Zmlu
ZENsaWVudEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKSkKKyAgICAgICAgaWYgKGF1dG8gY2xpZW50
RGF0YSA9IGRlc3RpbmF0aW9uV29ya2VyLT5maW5kQ2xpZW50QnlJZGVudGlmaWVyKGlkZW50aWZp
ZXIpKSB7CiAgICAgICAgICAgICBzb3VyY2VEYXRhID0gU2VydmljZVdvcmtlck9yQ2xpZW50RGF0
YSB7ICpjbGllbnREYXRhIH07CisgICAgICAgICAgICBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5k
ID0gY2xpZW50RGF0YS52YWx1ZSgpLmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7CisgICAgICAg
IH0KICAgICB9KTsKIAogICAgIGlmICghc291cmNlRGF0YSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgLy8gSXQncyBwb3NzaWJsZSB0aGlzIHNwZWNpZmljIHdvcmtlciBjYW5ub3QgYmUgcmUtcnVu
IChlLmcuIGl0cyByZWdpc3RyYXRpb24gaGFzIGJlZW4gcmVtb3ZlZCkKLSAgICBzZXJ2ZXIoKS5y
dW5TZXJ2aWNlV29ya2VySWZOZWNlc3NhcnkoZGVzdGluYXRpb25JZGVudGlmaWVyLCBbZGVzdGlu
YXRpb25JZGVudGlmaWVyLCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKSwgc291cmNlRGF0YSA9
IFdURk1vdmUoKnNvdXJjZURhdGEpXShhdXRvKiBjb250ZXh0Q29ubmVjdGlvbikgbXV0YWJsZSB7
CisgICAgc2VydmVyKCkucnVuU2VydmljZVdvcmtlcklmTmVjZXNzYXJ5KGRlc3RpbmF0aW9uSWRl
bnRpZmllciwgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCA/IFdlYkNvcmU6Okxhc3ROYXZpZ2F0
aW9uV2FzQXBwQm91bmQ6OlllcyA6IFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6
Ok5vLCBbZGVzdGluYXRpb25JZGVudGlmaWVyLCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKSwg
c291cmNlRGF0YSA9IFdURk1vdmUoKnNvdXJjZURhdGEpXShhdXRvKiBjb250ZXh0Q29ubmVjdGlv
bikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChjb250ZXh0Q29ubmVjdGlvbikKICAgICAgICAgICAg
IHNlbmRUb0NvbnRleHRQcm9jZXNzKCpjb250ZXh0Q29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlciB7IGRl
c3RpbmF0aW9uSWRlbnRpZmllciwgV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShzb3VyY2VEYXRh
KSB9KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCBmZTgwOGZlZTM0NmY4Njc3N2IyMjY2OWMwNWJlNmVkOTRiNDA3NmVlLi42OTY3
NmRmMzczM2VhNDVhMDk5MzI1OGM0YzhhOWQwMDk5ZjNhMTdkIDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDUt
MTMgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAg
TWFyayBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgd2l0aCBhIGRlZmF1bHQgYXBwLWJvdW5kIHZh
bHVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMy
MDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc3NjY0NDE2PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgdGVzdCBjb3ZlcnMgdGhlIGluc3Rh
bGxDb250ZXh0RGF0YSBjYXNlLiBJIHdhcyBoYXZpbmcgdHJvdWJsZQorICAgICAgICBmaW5kaW5n
IGF1dG9tYXRlZCB3YXlzIHRvIHRlc3QgdGhlIHR3byBvdGhlciBjb2RlIHBhdGhzIGluIGEgd2F5
IHRoYXQKKyAgICAgICAgYWZmZWN0ZWQgbG9hZHMgaW4gdGhlIG5ldHdvcmsgcHJvY2Vzcy4gSSBk
aWQgdmVyaWZ5IHRoZSBjb3JyZWN0IHZhbHVlcworICAgICAgICB3aGVuIHRoZSBjb2RlIHBhdGhz
IHdlcmUgYmVpbmcgaGl0LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tOgorCiAyMDIxLTA1LTEwICBLYXRlIENoZW5leSAg
PGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIFByZWZsaWdodCByZXF1ZXN0
cyBub3QgcHJvcGVybHkgYXR0cmlidXRlZCBhcyBhcHAtYm91bmQKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFj
eS5tbQppbmRleCBkZWRiMDUxYzUxN2ViZDk2MjFjNDE0ZmJhMTU0Njk5YjdlMGNhMGJkLi5iYTM1
Njg2NThhZjM4ZDRlMjIyZmYyMWY5NTA4ZDQ2MDRhY2E0ZDE1IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2
YWN5Lm1tCkBAIC0xNTgwLDcgKzE1ODAsNyBAQCB0cnkgewogPC9zY3JpcHQ+CiApU1dSRVNPVVJD
RSI7CiAKLWVudW0gY2xhc3MgUmVzcG9uc2VUeXBlIHsgU3ludGhldGljLCBGZXRjaGVkIH07Citl
bnVtIGNsYXNzIFJlc3BvbnNlVHlwZSB7IFN5bnRoZXRpYywgRmV0Y2hlZCwgQ2FjaGVkIH07CiBl
bnVtIGNsYXNzIElzQXBwQm91bmQgOiBib29sIHsgTm8sIFllcyB9Owogc3RhdGljIHZvaWQgcnVu
VGVzdChSZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlLCBJc0FwcEJvdW5kIGFwcEJvdW5kKQogewpA
QCAtMTYwMiwxMiArMTYwMiwxOCBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KFJlc3BvbnNlVHlwZSBy
ZXNwb25zZVR5cGUsIElzQXBwQm91bmQgYXBwQm91bmQpCiAgICAgICAgIGpzID0gInNlbGYuYWRk
RXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgoZmV0
Y2goJy9mZXRjaGVkLmh0bWwnKSkgfSk7IjsKICAgICAgICAgZXhwZWN0ZWRBbGVydCA9ICJmZXRj
aGVkIGZyb20gc2VydmVyIjsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSZXNwb25zZVR5cGU6
OkNhY2hlZDoKKyAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdpbnN0YWxsJywg
KGV2ZW50KSA9PiB7IGV2ZW50LndhaXRVbnRpbCggY2FjaGVzLm9wZW4oJ3YxJykudGhlbigoY2Fj
aGUpID0+IHsgcmV0dXJuIGNhY2hlLmFkZEFsbChbJy9jYWNoZWQuaHRtbCddKTsgfSkgKTsgfSk7
IgorICAgICAgICAgICAgInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+
IHsgZXZlbnQucmVzcG9uZFdpdGgoY2FjaGVzLm1hdGNoKCcvY2FjaGVkLmh0bWwnKSkgfSk7IjsK
KyAgICAgICAgZXhwZWN0ZWRBbGVydCA9ICJsb2FkZWQgZnJvbSBjYWNoZSI7CisgICAgICAgIGJy
ZWFrOwogICAgIH0KIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKICAg
ICAgICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9LAogICAgICAgICB7ICIvc3cuanMiLCB7IHt7
ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfSwKICAg
ICAgICAgeyAiL2ZldGNoZWQuaHRtbCIsIHsgIjxzY3JpcHQ+YWxlcnQoJ2ZldGNoZWQgZnJvbSBz
ZXJ2ZXInKTwvc2NyaXB0PiIgfSB9LAorICAgICAgICB7ICIvY2FjaGVkLmh0bWwiLCB7ICI8c2Ny
aXB0PmFsZXJ0KCdsb2FkZWQgZnJvbSBjYWNoZScpPC9zY3JpcHQ+IiB9IH0sCiAgICAgfSwgVGVz
dFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKIAogICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKQEAgLTE2NTIsNyArMTY1OCw3IEBAIHN0
YXRpYyB2b2lkIHJ1blRlc3QoUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgSXNBcHBCb3VuZCBh
cHBCb3VuZCkKIAogICAgIGlzRG9uZSA9IGZhbHNlOwogICAgIFt3ZWJWaWV3IF9hcHBCb3VuZE5h
dmlnYXRpb25EYXRhOiBeKHN0cnVjdCBXS0FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhIGRh
dGEpIHsKLSAgICAgICAgaWYgKHJlc3BvbnNlVHlwZSA9PSBSZXNwb25zZVR5cGU6OlN5bnRoZXRp
YykgeworICAgICAgICBpZiAocmVzcG9uc2VUeXBlID09IFJlc3BvbnNlVHlwZTo6U3ludGhldGlj
IHx8IHJlc3BvbnNlVHlwZSA9PSBSZXNwb25zZVR5cGU6OkNhY2hlZCkgewogICAgICAgICAgICAg
RVhQRUNUX0ZBTFNFKGRhdGEuaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7CiAgICAg
ICAgICAgICBFWFBFQ1RfRkFMU0UoZGF0YS5oYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0
aW5nKTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTE2NzcsNiArMTY4MywxNiBAQCBURVNUKEluQXBw
QnJvd3NlclByaXZhY3ksIEFwcEJvdW5kUmVxdWVzdFdpdGhTZXJ2aWNlV29ya2VyKQogICAgIHJ1
blRlc3QoUmVzcG9uc2VUeXBlOjpGZXRjaGVkLCBJc0FwcEJvdW5kOjpZZXMpOwogfQogCitURVNU
KEluQXBwQnJvd3NlclByaXZhY3ksIE5vbkFwcEJvdW5kUmVxdWVzdERlZmF1bHRWYWx1ZSkKK3sK
KyAgICBydW5UZXN0KFJlc3BvbnNlVHlwZTo6Q2FjaGVkLCBJc0FwcEJvdW5kOjpObyk7Cit9CisK
K1RFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmRSZXF1ZXN0RGVmYXVsdFZhbHVlKQor
eworICAgIHJ1blRlc3QoUmVzcG9uc2VUeXBlOjpDYWNoZWQsIElzQXBwQm91bmQ6Olllcyk7Cit9
CisKIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTXVsdGlwbGVXZWJWaWV3c1dpdGhTaGFyZWRT
ZXJ2aWNlV29ya2VyKQogewogICAgIHN0YXRpYyBib29sIGlzRG9uZSA9IGZhbHNlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428885</attachid>
            <date>2021-05-17 16:18:54 -0700</date>
            <delta_ts>2021-05-18 21:56:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223201-20210517161853.patch</filename>
            <type>text/plain</type>
            <size>31223</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTAwZDY4Y2QzNjRkMWY3
NTNjMzY2MDM2NzBjZjJlNjJjYjVmY2I5Ny4uZmVlNjYyMzA4ZmU3NzQxYmE4ZWYwN2NjNzAzN2M0
YWMxY2UwYjdiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDIxLTA1LTE3ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIE1hcmsgU2Vy
dmljZVdvcmtlclRocmVhZFByb3h5IHdpdGggYSBkZWZhdWx0IGFwcC1ib3VuZCB2YWx1ZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzMjAxCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS83NzY2NDQxNj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTZXJ2aWNlIHdvcmtlciBsb2FkcyBoYXZlIHRoZWlyIG93
biBkb2N1bWVudCBsb2FkZXIsIHNvIHRoZXkgZG9uJ3QKKyAgICAgICAgYWx3YXlzIGdldCBwcm9w
ZXJseSBtYXJrZWQgYXMgYXBwLWJvdW5kIGJhc2VkIG9uIHRoZSBtYWluIGZyYW1lCisgICAgICAg
IG5hdmlnYXRpb24uIFByaW9yIGZpeGVzIGhhbmRsZWQgc29tZSBmZXRjaCBldmVudHMsIHN5bnRo
ZXRpYworICAgICAgICByZXNwb25zZXMsIGFuZCBzb2Z0IHVwZGF0ZXMuIEJ1dCB3ZSBuZWVkIHRv
IHNldCBhIGRlZmF1bHQgdmFsdWUgd2hlbgorICAgICAgICB3ZSBpbnN0YWxsIHRoZSBzZXJ2aWNl
IHdvcmtlci4KKworICAgICAgICBXZSBoYWQgdG8gcGljayBhIGJlc3QtZWZmb3J0IGhldXJpc3Rp
YyB0byBkbyB0aGlzLiBJZiBhbnkgY2xpZW50IGZvcgorICAgICAgICB0aGUgd29ya2VyIGlzIGFw
cC1ib3VuZCwgdGhlbiBhbGwgbG9hZHMgd2l0aCB0aGF0IHdvcmtlciB3aWxsIGJlCisgICAgICAg
IG1hcmtlZCBhcHAtYm91bmQuCisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRVUkwpOgorICAgICAgICBEcml2ZS1i
eSBmaXggSSBub3RpY2VkIHdoaWxlIHRlc3RpbmcuIExvYWRVUkwgcmVxdWVzdHMgc2hvdWxkIGJl
CisgICAgICAgIG1hcmtlZCBhcHAtYm91bmQgYmFzZWQgb24gdGhlIGRvY3VtZW50IGxvYWRlci4K
KworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6aXNvbGF0ZWRDb3B5
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjpmcm9t
KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE6OmRlY29kZSk6Cisg
ICAgICAgIFN0b3JlIHRoZSBtYWluIG5hdmlnYXRpb24gYXBwLWJvdW5kIHZhbHVlIHdoZW4gd2Ug
cmVnaXN0ZXIgYSBjbGllbnQuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNvbnRleHREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YTo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNvbnRleHREYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGE6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGE6OmRlY29kZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5KToKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzKToKKyAg
ICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNXU2VydmVyOjp1cGRhdGVXb3JrZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2
ZXI6OmNsaWVudElzQXBwQm91bmRGb3JSZWdpc3RyYWJsZURvbWFpbik6CisgICAgICAgIEJlc3Qt
ZWZmb3J0IGhldXJpc3RpYyB0byBtYXJrIGEgbG9hZCBhcyBhcHAgYm91bmQgaWYgYW55IGNsaWVu
dCBmb3IKKyAgICAgICAgdGhhdCBvcmlnaW4gd2FzIHJlZ2lzdGVyZWQgYXMgYXBwLWJvdW5kLgor
CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6dHJ5SW5zdGFsbENvbnRleHREYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp1cGRhdGVBcHBCb3VuZFZhbHVlRm9yV29ya2Vycyk6
CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50
KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmg6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDoK
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpjb250ZXh0RGF0YSBjb25zdCk6CisKIDIw
MjEtMDUtMTcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBNb3Zl
IG1vcmUgbG9naWMgZnJvbSBBdWRpb0Rlc3RpbmF0aW9uTm9kZSB0byBpdHMgc3ViY2xhc3Nlcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCAwZGRjMjExNDk2YTBlMTAwOWI2MDlmNzExYzY1ZTI5NDI1NjcyMmM5Li44ZTFl
ZDg5ZThlNzJhOWMxYTUxOTNiNDRkMjFlODNlYjcxYTVhYWZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIxIEBACisyMDIxLTA1LTE3ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUu
Y29tPgorCisgICAgICAgIE1hcmsgU2VydmljZVdvcmtlclRocmVhZFByb3h5IHdpdGggYSBkZWZh
dWx0IGFwcC1ib3VuZCB2YWx1ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjIzMjAxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NzY2NDQxNj4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp1cGRhdGVB
cHBCb3VuZFZhbHVlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
L21lc3NhZ2VzLnB5OgorICAgICAgICAoaGVhZGVyc19mb3JfdHlwZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnVwZGF0ZUFwcEJvdW5k
VmFsdWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjoKKwogMjAyMS0wNS0xNCAgU2ltb24gRnJhc2Vy
ICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBbGxvdyB3aGVlbCBldmVudHMg
dG8gYmUgY29hbGVzY2VkIGR1cmluZyBzY3JvbGwgZGVjZWxlcmF0aW9uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCBiYzczZTFlN2RkMjQzZDU5MDRkNzUxYTU0ZDM5N2Nl
MDBhYTVlYmI0Li4yZmM5YjJkYmUzZjBkNDM4MDBlODU1YjVmODFlYzg5ZmUzZjI1YjVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTEzMzcsNiArMTMzNyw4IEBAIHZv
aWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwoRnJhbWVMb2FkUmVxdWVzdCYmIGZyYW1lTG9hZFJlcXVl
c3QsIGNvbnN0IFN0cmluZyYgcmVmCiAKICAgICBjb25zdCBVUkwmIG5ld1VSTCA9IGZyYW1lTG9h
ZFJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCk7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJl
cXVlc3QobmV3VVJMKTsKKyAgICBpZiAobV9kb2N1bWVudExvYWRlcikKKyAgICAgICAgcmVxdWVz
dC5zZXRJc0FwcEJvdW5kKG1fZG9jdW1lbnRMb2FkZXItPmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91
bmQoKSk7CiAgICAgaWYgKCFyZWZlcnJlci5pc0VtcHR5KCkpCiAgICAgICAgIHJlcXVlc3Quc2V0
SFRUUFJlZmVycmVyKHJlZmVycmVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5jcHAKaW5kZXggNTExNjdl
N2VjNzQ5MWQ0NWQ5NGYxNTE1ZTUxYzkzNjFhMGU2MmY1Yy4uYTc5ZDNjZWQ2YzJjM2E2N2FmY2E5
NjkwZTY1YmI2YmJkMjVhMjQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuY3BwCkBAIC0zMCw2ICszMCw3
IEBACiAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2lu
Y2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJT
V0NsaWVudENvbm5lY3Rpb24uaCIKIApAQCAtNTcsNyArNTgsNyBAQCBzdGF0aWMgU2VydmljZVdv
cmtlckNsaWVudEZyYW1lVHlwZSB0b1NlcnZpY2VXb3JrZXJDbGllbnRGcmFtZVR5cGUoU2NyaXB0
RXhlY3V0aQogCiBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0
YTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKIHsKLSAgICByZXR1cm4geyBpZGVudGlmaWVyLCB0eXBl
LCBmcmFtZVR5cGUsIHVybC5pc29sYXRlZENvcHkoKSB9OworICAgIHJldHVybiB7IGlkZW50aWZp
ZXIsIHR5cGUsIGZyYW1lVHlwZSwgdXJsLmlzb2xhdGVkQ29weSgpLCBsYXN0TmF2aWdhdGlvbldh
c0FwcEJvdW5kIH07CiB9CiAKIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIFNlcnZpY2VXb3JrZXJD
bGllbnREYXRhOjpmcm9tKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFNXQ2xpZW50
Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKQEAgLTY1LDExICs2NiwxNiBAQCBTZXJ2aWNlV29ya2Vy
Q2xpZW50RGF0YSBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZnJvbShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjbwogICAgIGJvb2wgaXNEb2N1bWVudCA9IGlzPERvY3VtZW50Pihjb250ZXh0KTsK
ICAgICBSRUxFQVNFX0FTU0VSVChpc0RvY3VtZW50KTsgLy8gV2UgZG8gbm90IHN1cHBvcnQgZGVk
aWNhdGVkIHdvcmtlcnMgYXMgY2xpZW50cyB5ZXQuCiAKKyAgICBhdXRvJiBkb2N1bWVudCA9IGRv
d25jYXN0PERvY3VtZW50Pihjb250ZXh0KTsKKyAgICBhdXRvIGxhc3ROYXZpZ2F0aW9uV2FzQXBw
Qm91bmQgPSBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOjpObzsKKyAgICBpZiAoZG9jdW1lbnQu
bG9hZGVyKCkpCisgICAgICAgIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgPSBkb2N1bWVudC5s
b2FkZXIoKS0+bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCgpID8gTGFzdE5hdmlnYXRpb25XYXNB
cHBCb3VuZDo6WWVzIDogTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDo6Tm87CisKICAgICByZXR1
cm4gewotICAgICAgICB7IGNvbm5lY3Rpb24uc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSwg
ZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLmlkZW50aWZpZXIoKSB9LAorICAgICAgICB7IGNv
bm5lY3Rpb24uc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSwgZG9jdW1lbnQuaWRlbnRpZmll
cigpIH0sCiAgICAgICAgIGlzRG9jdW1lbnQgPyBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZTo6V2lu
ZG93IDogU2VydmljZVdvcmtlckNsaWVudFR5cGU6OldvcmtlciwKICAgICAgICAgdG9TZXJ2aWNl
V29ya2VyQ2xpZW50RnJhbWVUeXBlKGNvbnRleHQpLAotICAgICAgICBjb250ZXh0LnVybCgpCisg
ICAgICAgIGNvbnRleHQudXJsKCksIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQKICAgICB9Owog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNsaWVudERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ2xpZW50RGF0YS5oCmluZGV4IDA0NmUzYWMyZjU1YjllMDc2YWRmMTllYzczY2ZhYTYy
MjdkMGI4YTAuLjA5MDlhOTUzODE2NGQ5ZmQ0MGI0YmU1M2Y0Nzc5ZTA3OTNmNjU5ZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Q2xpZW50RGF0YS5oCkBAIC0zNywxMSArMzcsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgU1dDbGllbnRDb25uZWN0aW9uOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAor
ZW51bSBjbGFzcyBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIDogYm9vbCB7IE5vLCBZZXMgfTsK
Kwogc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIHsKICAgICBTZXJ2aWNlV29ya2VyQ2xp
ZW50SWRlbnRpZmllciBpZGVudGlmaWVyOwogICAgIFNlcnZpY2VXb3JrZXJDbGllbnRUeXBlIHR5
cGU7CiAgICAgU2VydmljZVdvcmtlckNsaWVudEZyYW1lVHlwZSBmcmFtZVR5cGU7CiAgICAgVVJM
IHVybDsKKyAgICBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIGxhc3ROYXZpZ2F0aW9uV2FzQXBw
Qm91bmQ7CiAKICAgICBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSBpc29sYXRlZENvcHkoKSBjb25z
dDsKIApAQCAtNTQsNyArNTcsNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudERhdGEgewog
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgU2VydmljZVdvcmtlckNsaWVudERhdGE6OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIgPDwgaWRlbnRpZmll
ciA8PCB0eXBlIDw8IGZyYW1lVHlwZSA8PCB1cmw7CisgICAgZW5jb2RlciA8PCBpZGVudGlmaWVy
IDw8IHR5cGUgPDwgZnJhbWVUeXBlIDw8IHVybCA8PCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5k
OwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtODAsNyArODMsMTIgQEAgT3B0aW9u
YWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2QKICAgICBpZiAoIXVybCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKIAotICAgIHJldHVybiB7IHsgV1RGTW92ZSgqaWRlbnRpZmllciksIFdURk1vdmUoKnR5
cGUpLCBXVEZNb3ZlKCpmcmFtZVR5cGUpLCBXVEZNb3ZlKCp1cmwpIH0gfTsKKyAgICBPcHRpb25h
bDxMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kPiBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOwor
ICAgIGRlY29kZXIgPj4gbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDsKKyAgICBpZiAoIWxhc3RO
YXZpZ2F0aW9uV2FzQXBwQm91bmQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICByZXR1cm4geyB7IFdURk1vdmUoKmlkZW50aWZpZXIpLCBXVEZNb3ZlKCp0eXBlKSwgV1RGTW92
ZSgqZnJhbWVUeXBlKSwgV1RGTW92ZSgqdXJsKSwgV1RGTW92ZSgqbGFzdE5hdmlnYXRpb25XYXNB
cHBCb3VuZCkgfSB9OwogfQogCiB1c2luZyBTZXJ2aWNlV29ya2VyQ2xpZW50c01hdGNoQWxsQ2Fs
bGJhY2sgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFNlcnZpY2VXb3JrZXJD
bGllbnREYXRhPiYmKT47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwCmluZGV4IDE2ZGYyZDgyNDlmODdm
NmFlNDM3M2UyNjU2MjNjM2Q4YTk5YjVlZGYuLmI1YWRkYjMxZGFiY2JhODBiOTRkMDAzNGVhY2Yz
Njc5NGYxM2FiNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwCkBAIC00NCw2ICs0NCw3IEBAIFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YSBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Omlzb2xhdGVk
Q29weSgpIGNvbnN0CiAgICAgICAgIHNjcmlwdFVSTC5pc29sYXRlZENvcHkoKSwKICAgICAgICAg
d29ya2VyVHlwZSwKICAgICAgICAgbG9hZGVkRnJvbURpc2ssCisgICAgICAgIGxhc3ROYXZpZ2F0
aW9uV2FzQXBwQm91bmQsCiAgICAgICAgIGNyb3NzVGhyZWFkQ29weShzY3JpcHRSZXNvdXJjZU1h
cCkKICAgICB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCmluZGV4IDE0YWJjYWQ2NGM5OWExYzg3MTM2
YmJjMGY2ZDljYzU2MWVmMjgxMjAuLmVmZGZhN2M1MDJlODA4NDMwOTcyNWI2NGM4NzAzM2Y2ZWQw
MzZhY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNvbnRleHREYXRhLmgKQEAgLTM5LDYgKzM5LDggQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitlbnVtIGNsYXNzIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgOiBib29s
OworCiBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsKICAgICBzdHJ1Y3QgSW1wb3J0
ZWRTY3JpcHQgewogICAgICAgICBTY3JpcHRCdWZmZXIgc2NyaXB0OwpAQCAtODcsNiArODksNyBA
QCBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsKICAgICBVUkwgc2NyaXB0VVJMOwog
ICAgIFdvcmtlclR5cGUgd29ya2VyVHlwZTsKICAgICBib29sIGxvYWRlZEZyb21EaXNrOworICAg
IE9wdGlvbmFsPExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ+IGxhc3ROYXZpZ2F0aW9uV2FzQXBw
Qm91bmQ7CiAgICAgSGFzaE1hcDxVUkwsIEltcG9ydGVkU2NyaXB0PiBzY3JpcHRSZXNvdXJjZU1h
cDsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBj
b25zdDsKQEAgLTk5LDcgKzEwMiw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7
CiAgICAgZW5jb2RlciA8PCBqb2JEYXRhSWRlbnRpZmllciA8PCByZWdpc3RyYXRpb24gPDwgc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgPDwgc2NyaXB0IDw8IGNvbnRlbnRTZWN1cml0eVBvbGljeSA8
PCByZWZlcnJlclBvbGljeQotICAgICAgICA8PCBzY3JpcHRVUkwgPDwgd29ya2VyVHlwZSA8PCBs
b2FkZWRGcm9tRGlzayA8PCBzY3JpcHRSZXNvdXJjZU1hcCA8PCBjZXJ0aWZpY2F0ZUluZm87Cisg
ICAgICAgIDw8IHNjcmlwdFVSTCA8PCB3b3JrZXJUeXBlIDw8IGxvYWRlZEZyb21EaXNrIDw8IGxh
c3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgPDwgc2NyaXB0UmVzb3VyY2VNYXAgPDwgY2VydGlmaWNh
dGVJbmZvOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtMTQ0LDYgKzE0NywxMCBA
QCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlYwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobG9hZGVk
RnJvbURpc2spKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCisgICAgT3B0aW9uYWw8
TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZD4gbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDsKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpKQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCiAgICAgSGFzaE1hcDxVUkwsIEltcG9ydGVkU2NyaXB0
PiBzY3JpcHRSZXNvdXJjZU1hcDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNjcmlwdFJlc291
cmNlTWFwKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTE2NCw2ICsxNzEsNyBA
QCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlYwogICAgICAgICBXVEZNb3ZlKHNjcmlwdFVSTCksCiAg
ICAgICAgIHdvcmtlclR5cGUsCiAgICAgICAgIGxvYWRlZEZyb21EaXNrLAorICAgICAgICBXVEZN
b3ZlKGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpLAogICAgICAgICBXVEZNb3ZlKHNjcmlwdFJl
c291cmNlTWFwKQogICAgIH19OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5j
cHAKaW5kZXggODBkYzAzN2RiNzczZjY1YzVjY2QzM2JmYjQ2MjMwZDdkMDI0ZWM2My4uOThhNTIx
MGY3MzBkYmI2ZTcwNWFmNmY5MGQ1YjkzYjQzODM0ZmJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHkuY3BwCkBAIC0xMTYsNiArMTE2LDkgQEAgU2VydmljZVdvcmtlclRocmVh
ZFByb3h5OjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdl
Q29uZmkKICAgICBtX3JlbW90ZURlYnVnZ2FibGUtPnNldFJlbW90ZURlYnVnZ2luZ0FsbG93ZWQo
dHJ1ZSk7CiAgICAgbV9yZW1vdGVEZWJ1Z2dhYmxlLT5pbml0KCk7CiAjZW5kaWYKKworICAgIGlm
IChkYXRhLmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpCisgICAgICAgIHNldExhc3ROYXZpZ2F0
aW9uV2FzQXBwQm91bmQoZGF0YS5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kID09IExhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQ6Olllcyk7CiB9CiAKIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6
flNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCmlu
ZGV4IGIwYzcxNjFhODA2YTg2OGVjNGZmNDQ3NjUzYmI4NTNmYzA5Njg0NWIuLjcwZGRiYzFiYTcw
NTBiNWJhYTdiZGZjNzQxNGRmYWU0YjcwZTNmYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2Uu
Y3BwCkBAIC01NzksNyArNTc5LDcgQEAgU3RyaW5nIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBv
cnRSZWNvcmRzKCkKICAgICAgICAgYXV0byByZWdpc3RyYXRpb25JZGVudGlmaWVyID0gU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI6OmdlbmVyYXRlKCk7CiAgICAgICAgIGF1dG8g
c2VydmljZVdvcmtlckRhdGEgPSBTZXJ2aWNlV29ya2VyRGF0YSB7IHdvcmtlcklkZW50aWZpZXIs
IHNjcmlwdFVSTCwgU2VydmljZVdvcmtlclN0YXRlOjpBY3RpdmF0ZWQsICp3b3JrZXJUeXBlLCBy
ZWdpc3RyYXRpb25JZGVudGlmaWVyIH07CiAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uID0gU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEgeyBXVEZNb3ZlKCprZXkpLCByZWdpc3RyYXRpb25J
ZGVudGlmaWVyLCBXVEZNb3ZlKHNjb3BlVVJMKSwgKnVwZGF0ZVZpYUNhY2hlLCBsYXN0VXBkYXRl
Q2hlY2tUaW1lLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgV1RGTW92ZShzZXJ2aWNlV29y
a2VyRGF0YSkgfTsKLSAgICAgICAgYXV0byBjb250ZXh0RGF0YSA9IFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YSB7IFdURjo6bnVsbG9wdCwgV1RGTW92ZShyZWdpc3RyYXRpb24pLCB3b3JrZXJJZGVu
dGlmaWVyLCBXVEZNb3ZlKHNjcmlwdCksIFdURk1vdmUoKmNlcnRpZmljYXRlSW5mbyksIFdURk1v
dmUoKmNvbnRlbnRTZWN1cml0eVBvbGljeSksIFdURk1vdmUocmVmZXJyZXJQb2xpY3kpLCBXVEZN
b3ZlKHNjcmlwdFVSTCksICp3b3JrZXJUeXBlLCB0cnVlLCBXVEZNb3ZlKHNjcmlwdFJlc291cmNl
TWFwKSB9OworICAgICAgICBhdXRvIGNvbnRleHREYXRhID0gU2VydmljZVdvcmtlckNvbnRleHRE
YXRhIHsgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbiksIHdvcmtlcklkZW50aWZp
ZXIsIFdURk1vdmUoc2NyaXB0KSwgV1RGTW92ZSgqY2VydGlmaWNhdGVJbmZvKSwgV1RGTW92ZSgq
Y29udGVudFNlY3VyaXR5UG9saWN5KSwgV1RGTW92ZShyZWZlcnJlclBvbGljeSksIFdURk1vdmUo
c2NyaXB0VVJMKSwgKndvcmtlclR5cGUsIHRydWUsIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6
Ok5vLCBXVEZNb3ZlKHNjcmlwdFJlc291cmNlTWFwKSB9OwogCiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29udGV4dERhdGEgPSBjb250
ZXh0RGF0YS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb3RlY3Rl
ZFRoaXMtPmFkZFJlZ2lzdHJhdGlvblRvU3RvcmUoV1RGTW92ZShjb250ZXh0RGF0YSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApp
bmRleCAxMzkyZjQ0MTRkOWFmZWRmNDYwMDI0Zjk3OGFiNmNkYjQxMTQwYjBlLi4wZGNkZjc5OGIy
YzRhNTIxNDgyY2ZlNjk4NTlmNzM5NmE4YWQxN2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtNjQ4LDcgKzY0OCwyNiBA
QCB2b2lkIFNXU2VydmVyOjpyZW1vdmVDbGllbnRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKENv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNlcgogCiB2b2lkIFNXU2VydmVyOjp1cGRhdGVXb3JrZXIo
Y29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBqb2JEYXRhSWRlbnRpZmllciwg
U1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFNjcmlwdEJ1ZmZlciYgc2NyaXB0LCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRl
SW5mbywgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50
U2VjdXJpdHlQb2xpY3ksIGNvbnN0IFN0cmluZyYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUg
dHlwZSwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3Jp
cHQ+JiYgc2NyaXB0UmVzb3VyY2VNYXApCiB7Ci0gICAgdHJ5SW5zdGFsbENvbnRleHREYXRhKFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7IGpvYkRhdGFJZGVudGlmaWVyLCByZWdpc3RyYXRpb24u
ZGF0YSgpLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwgc2NyaXB0LCBjZXJ0
aWZpY2F0ZUluZm8sIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgcmVmZXJyZXJQb2xpY3ksIHVybCwg
dHlwZSwgZmFsc2UsIFdURk1vdmUoc2NyaXB0UmVzb3VyY2VNYXApIH0pOworICAgIHRyeUluc3Rh
bGxDb250ZXh0RGF0YShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgeyBqb2JEYXRhSWRlbnRpZmll
ciwgcmVnaXN0cmF0aW9uLmRhdGEoKSwgU2VydmljZVdvcmtlcklkZW50aWZpZXI6OmdlbmVyYXRl
KCksIHNjcmlwdCwgY2VydGlmaWNhdGVJbmZvLCBjb250ZW50U2VjdXJpdHlQb2xpY3ksIHJlZmVy
cmVyUG9saWN5LCB1cmwsIHR5cGUsIGZhbHNlLCBjbGllbnRJc0FwcEJvdW5kRm9yUmVnaXN0cmFi
bGVEb21haW4oUmVnaXN0cmFibGVEb21haW4odXJsKSksIFdURk1vdmUoc2NyaXB0UmVzb3VyY2VN
YXApIH0pOworfQorCitMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIFNXU2VydmVyOjpjbGllbnRJ
c0FwcEJvdW5kRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRv
bWFpbikKK3sKKyAgICBhdXRvIGNsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluSXRlcmF0b3IgPSBt
X2NsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluLmZpbmQoZG9tYWluKTsKKyAgICBpZiAoY2xpZW50
c0J5UmVnaXN0cmFibGVEb21haW5JdGVyYXRvciA9PSBtX2NsaWVudHNCeVJlZ2lzdHJhYmxlRG9t
YWluLmVuZCgpKQorICAgICAgICByZXR1cm4gTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDo6Tm87
CisKKyAgICBhdXRvJiBjbGllbnRzRm9yUmVnaXN0cmFibGVEb21haW4gPSBjbGllbnRzQnlSZWdp
c3RyYWJsZURvbWFpbkl0ZXJhdG9yLT52YWx1ZTsKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IGNs
aWVudHNGb3JSZWdpc3RyYWJsZURvbWFpbikgeworICAgICAgICBhdXRvIGRhdGEgPSBtX2NsaWVu
dHNCeUlkLmZpbmQoY2xpZW50KTsKKyAgICAgICAgaWYgKGRhdGEgPT0gbV9jbGllbnRzQnlJZC5l
bmQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChkYXRhLT52YWx1ZS5s
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kID09IExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6Olll
cykKKyAgICAgICAgICAgIHJldHVybiBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOjpZZXM7Cisg
ICAgfQorCisgICAgcmV0dXJuIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6Ok5vOwogfQogCiB2
b2lkIFNXU2VydmVyOjp0cnlJbnN0YWxsQ29udGV4dERhdGEoU2VydmljZVdvcmtlckNvbnRleHRE
YXRhJiYgZGF0YSkKQEAgLTg2OSwxMCArODg4LDI0IEBAIFNXU2VydmVyUmVnaXN0cmF0aW9uKiBT
V1NlcnZlcjo6cmVnaXN0cmF0aW9uRnJvbVNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKFNlcnZpY2VX
CiAgICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1ZS0+cmVnaXN0cmF0aW9uKCk7CiB9CiAKK3ZvaWQg
U1dTZXJ2ZXI6OnVwZGF0ZUFwcEJvdW5kVmFsdWVGb3JXb3JrZXJzKENsaWVudE9yaWdpbiYgY2xp
ZW50T3JpZ2luLCBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIGxhc3ROYXZpZ2F0aW9uV2FzQXBw
Qm91bmQpCit7CisgICAgZm9yIChhdXRvJiB3b3JrZXIgOiBtX3J1bm5pbmdPclRlcm1pbmF0aW5n
V29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBpZiAod29ya2VyLT5pc1J1bm5pbmcoKSAmJiB3
b3JrZXItPm9yaWdpbigpID09IGNsaWVudE9yaWdpbikgeworICAgICAgICAgICAgYXV0byogY29u
bmVjdGlvbiA9IHdvcmtlci0+Y29udGV4dENvbm5lY3Rpb24oKTsKKyAgICAgICAgICAgIEFTU0VS
VChjb25uZWN0aW9uKTsKKyAgICAgICAgICAgIGNvbm5lY3Rpb24tPnVwZGF0ZUFwcEJvdW5kVmFs
dWUod29ya2VyLT5pZGVudGlmaWVyKCksIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOworICAg
ICAgICB9CisgICAgfQorfQorCiB2b2lkIFNXU2VydmVyOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJD
bGllbnQoQ2xpZW50T3JpZ2luJiYgY2xpZW50T3JpZ2luLCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0
YSYmIGRhdGEsIGNvbnN0IE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlm
aWVyPiYgY29udHJvbGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgU3Ry
aW5nJiYgdXNlckFnZW50KQogewogICAgIGF1dG8gY2xpZW50SWRlbnRpZmllciA9IGRhdGEuaWRl
bnRpZmllcjsKIAorICAgIGlmIChkYXRhLmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgIT0gY2xp
ZW50SXNBcHBCb3VuZEZvclJlZ2lzdHJhYmxlRG9tYWluKGNsaWVudE9yaWdpbi5jbGllbnRSZWdp
c3RyYWJsZURvbWFpbigpKSkKKyAgICAgICAgdXBkYXRlQXBwQm91bmRWYWx1ZUZvcldvcmtlcnMo
Y2xpZW50T3JpZ2luLCBkYXRhLmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOworCiAgICAgQVNT
RVJUKCFtX2NsaWVudHNCeUlkLmNvbnRhaW5zKGNsaWVudElkZW50aWZpZXIpKTsKICAgICBtX2Ns
aWVudHNCeUlkLmFkZChjbGllbnRJZGVudGlmaWVyLCBXVEZNb3ZlKGRhdGEpKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCmluZGV4IGQw
ZWQ3YzkyMzY3ZTE3YmM5MzgyY2Y4MGNkNWU4YzY4MzdiNzNjZWIuLjhjZjE5Njk3MjJiMjcwNDg0
NmYyMDIyYmE3OTFhMTljMmQ0OGVjYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTIxNyw2ICsyMTcsOCBAQCBwdWJsaWM6CiAK
ICAgICBzdGF0aWMgY29uc3RleHByIFNlY29uZHMgZGVmYXVsdFRlcm1pbmF0aW9uRGVsYXkgPSAx
MF9zOwogCisgICAgTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCBjbGllbnRJc0FwcEJvdW5kRm9y
UmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsKKwogcHJpdmF0ZToK
ICAgICB2b2lkIHZhbGlkYXRlUmVnaXN0cmF0aW9uRG9tYWluKFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKIApAQCAtMjQyLDYgKzI0
NCw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24mKTsKIAorICAgIHZvaWQgdXBkYXRlQXBwQm91bmRWYWx1
ZUZvcldvcmtlcnMoQ2xpZW50T3JpZ2luJiwgTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk7CisK
ICAgICBIYXNoTWFwPFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0
cjxDb25uZWN0aW9uPj4gbV9jb25uZWN0aW9uczsKICAgICBIYXNoTWFwPFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXksIFdlYWtQdHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+PiBtX3Njb3BlVG9S
ZWdpc3RyYXRpb25NYXA7CiAgICAgSGFzaE1hcDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRl
bnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPj4gbV9yZWdpc3Ry
YXRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKaW5kZXggYmE1OGY3
ODc4YTQzODliNDU0NTYyYjcyYjVhNWY1Y2E1NGUyMzc1Mi4uYThiYjA3MGVjZGY2ZjY1ZWRhMjRl
NTgyNmQ4NmQ3M2NkZDI3ZjZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5oCkBAIC01Miw2ICs1Miw3IEBAIHB1YmxpYzoKIAogICAgIC8vIE1lc3NhZ2VzIHRvIHRoZSBT
VyBob3N0IHByb2Nlc3MKICAgICB2aXJ0dWFsIHZvaWQgaW5zdGFsbFNlcnZpY2VXb3JrZXJDb250
ZXh0KGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYsIGNvbnN0IFN0cmluZyYgdXNlckFn
ZW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFwcEJvdW5kVmFsdWUoU2VydmljZVdv
cmtlcklkZW50aWZpZXIsIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZmlyZUluc3RhbGxFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmll
cikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklk
ZW50aWZpZXIpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKaW5kZXggMTM1NDBlZGQ5MGIzNTAxYzczYzRm
MzIyNTM0MzQyNjgzYjlmNmEzZC4uNzEwZDdhYmM3MjQwOWFmZDkyMDQxYmQ2Yzk1Yjk0OWI1N2Nl
NDNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlcldvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlcldvcmtlci5jcHAKQEAgLTg2LDcgKzg2LDExIEBAIFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSBTV1NlcnZlcldvcmtlcjo6Y29udGV4dERhdGEoKSBjb25zdAogewogICAgIEFT
U0VSVChtX3JlZ2lzdHJhdGlvbik7CiAKLSAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIG1fcmVn
aXN0cmF0aW9uLT5kYXRhKCksIG1fZGF0YS5pZGVudGlmaWVyLCBtX3NjcmlwdCwgbV9jZXJ0aWZp
Y2F0ZUluZm8sIG1fY29udGVudFNlY3VyaXR5UG9saWN5LCBtX3JlZmVycmVyUG9saWN5LCBtX2Rh
dGEuc2NyaXB0VVJMLCBtX2RhdGEudHlwZSwgZmFsc2UsIG1fc2NyaXB0UmVzb3VyY2VNYXAgfTsK
KyAgICBhdXRvIGlzQXBwQm91bmQgPSBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOjpObzsKKyAg
ICBpZiAobV9vcmlnaW4pCisgICAgICAgIGlzQXBwQm91bmQgPSBtX3NlcnZlci0+Y2xpZW50SXNB
cHBCb3VuZEZvclJlZ2lzdHJhYmxlRG9tYWluKG1fb3JpZ2luLnZhbHVlKCkuY2xpZW50UmVnaXN0
cmFibGVEb21haW4oKSk7CisKKyAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIG1fcmVnaXN0cmF0
aW9uLT5kYXRhKCksIG1fZGF0YS5pZGVudGlmaWVyLCBtX3NjcmlwdCwgbV9jZXJ0aWZpY2F0ZUlu
Zm8sIG1fY29udGVudFNlY3VyaXR5UG9saWN5LCBtX3JlZmVycmVyUG9saWN5LCBtX2RhdGEuc2Ny
aXB0VVJMLCBtX2RhdGEudHlwZSwgZmFsc2UsIGlzQXBwQm91bmQsIG1fc2NyaXB0UmVzb3VyY2VN
YXAgfTsKIH0KIAogdm9pZCBTV1NlcnZlcldvcmtlcjo6dGVybWluYXRlKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggNGYxOGEzNTc4YTgxOGNhMTJhMDNiN2Y5MGU4
ZjY1OTU4NTI3ZDk2OC4uODRkN2I0NjlhNzNlNzE4MDc5MmZlYjNmN2VkZDZmNmUxZGNlMDc1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5j
cHAKQEAgLTkyLDYgKzkyLDExIEBAIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
OjppbnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgU2VydmljZVdvCiAgICAgc2VuZChN
ZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Okluc3RhbGxTZXJ2aWNlV29y
a2VyIHsgZGF0YSwgdXNlckFnZW50IH0pOwogfQogCit2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6dXBkYXRlQXBwQm91bmRWYWx1ZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBCb3Vu
ZCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKQoreworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpVcGRhdGVBcHBCb3VuZFZhbHVlKHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKSk7Cit9CisKIHZvaWQgV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmaXJlSW5zdGFsbEV2ZW50KFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQogewogICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpGaXJlSW5zdGFsbEV2ZW50KHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmgKaW5kZXggZWM3N2MxZGIyZWJjYjlkNDUwNDJhOTM1OGI0ZTkxMzU1
YWE5ZWYwOS4uZDg5ODZhYTY3ODBkNDZhMTY0ZmRhZTc1YWY2ZWFhY2JkMmMxMmRjZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtODYs
NiArODYsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gTWVzc2FnZXMgdG8gdGhlIFNXIGhvc3QgV2Vi
UHJvY2VzcwogICAgIHZvaWQgaW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50KSBm
aW5hbDsKKyAgICB2b2lkIHVwZGF0ZUFwcEJvdW5kVmFsdWUoV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIsIFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpIGZpbmFsOwog
ICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
cikgZmluYWw7CiAgICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCB0ZXJtaW5hdGVXb3JrZXIoV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHkKaW5kZXggOWQ4ZWZhYTUzMDJmNjk3ZmM5OTI2M2RjOWE4MjNmYjZhZmI1
ZjE4Mi4uYjRhMTIyNWJhMjAxZTlkZTA4MGQ1NmEwOGI5ZDM3NzNjYzE5NDY3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC03MDEsNiArNzAxLDcgQEAgZGVm
IGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJDb3JlOjpJbnNwZWN0b3JPdmVy
bGF5OjpIaWdobGlnaHQnOiBbJzxXZWJDb3JlL0luc3BlY3Rvck92ZXJsYXkuaD4nXSwKICAgICAg
ICAgJ1dlYkNvcmU6OktleWZyYW1lVmFsdWVMaXN0JzogWyc8V2ViQ29yZS9HcmFwaGljc0xheWVy
Lmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQnOiBbJzxXZWJDb3JlL0tl
eWJvYXJkRXZlbnQuaD4nXSwKKyAgICAgICAgJ1dlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBw
Qm91bmQnOiBbJzxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmg+J10sCiAgICAgICAg
ICdXZWJDb3JlOjpMZWdhY3lDRE1TZXNzaW9uQ2xpZW50OjpNZWRpYUtleUVycm9yQ29kZSc6IFsn
PFdlYkNvcmUvTGVnYWN5Q0RNU2Vzc2lvbi5oPiddLAogICAgICAgICAnV2ViQ29yZTo6TG9ja0Jh
Y2tGb3J3YXJkTGlzdCc6IFsnPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPiddLAogICAgICAg
ICAnV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhhc0FjdGl2aXR5JzogWyc8
V2ViQ29yZS9NZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oPiddLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uY3BwCmluZGV4IDYzYzIyNjBlZmI0YjcxZTExMGJmMTRiZjQ2MjQ4OTI2
MjU4YmEwNTQuLjA5MDA1NGYwMTYwNjU5ZjA2ZmI1N2UxMzIzYWFmM2JkMGNhMzgxNjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTEzNSw2ICsxMzUsMTIgQEAgdm9p
ZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6dXBkYXRlUHJlZmVyZW5jZXNTdG9yZShj
b25zdCBXZWJQcmVmZXJlbmNlc1MKICAgICBzZXRTaG91bGRVc2VTaG9ydFRpbWVvdXQoc3RvcmUu
Z2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpzaG91bGRVc2VTZXJ2aWNlV29y
a2VyU2hvcnRUaW1lb3V0S2V5KCkpKTsKIH0KIAordm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6dXBkYXRlQXBwQm91bmRWYWx1ZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCBs
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKQoreworICAgIGlmIChhdXRvKiBzZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkgPSBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkoc2VydmljZVdvcmtlcklkZW50aWZpZXIpKQorICAgICAgICBzZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHktPnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQobGFzdE5hdmlnYXRp
b25XYXNBcHBCb3VuZCA9PSBXZWJDb3JlOjpMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOjpZZXMp
OworfQorCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjppbnN0YWxsU2Vydmlj
ZVdvcmtlcihTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBkYXRhLCBTdHJpbmcmJiB1c2VyQWdl
bnQpCiB7CiAgICAgYXV0byBwYWdlQ29uZmlndXJhdGlvbiA9IHBhZ2VDb25maWd1cmF0aW9uV2l0
aEVtcHR5Q2xpZW50cyhXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZXNzaW9uSUQoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCAwNDU1MmRjNzAwYjE5ZGYwMGVjYzU2Y2Jh
YTE0NDRmMmNlNTBhZjFiLi45NWQ4MTgxZjIzNTM2ZjBlYjMyYWFkZDhiN2U3ZWQ2ZjdlNjY1MjYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAog
I2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNp
bmNsdWRlICJOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oIgogI2luY2x1ZGUgIlNoYXJlYWJs
ZVJlc291cmNlLmgiCiAjaW5jbHVkZSAiVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKQEAgLTg1LDYgKzg2LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHNlcnZpY2VXb3JrZXJTdGFydGVkKE9wdGlvbmFsPFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4sIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBib29sIGRvZXNIYW5kbGVGZXRjaCkgZmluYWw7CiAgICAgdm9pZCBzZXJ2aWNl
V29ya2VyRmFpbGVkVG9TdGFydChPcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0
YUlkZW50aWZpZXI+LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBleGNlcHRpb25NZXNzYWdlKSBmaW5hbDsKICAgICB2b2lkIGluc3RhbGxTZXJ2aWNlV29y
a2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmLCBTdHJpbmcmJiB1c2VyQWdl
bnQpOworICAgIHZvaWQgdXBkYXRlQXBwQm91bmRWYWx1ZShXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk7CiAgICAgdm9p
ZCBzdGFydEZldGNoKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmJiwgSVBDOjpG
b3JtRGF0YVJlZmVyZW5jZSYmLCBTdHJpbmcmJiByZWZlcnJlcik7CiAgICAgdm9pZCBjYW5jZWxG
ZXRjaChXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyKTsKICAgICB2b2lk
IGNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6
OkZldGNoSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluCmluZGV4IGZhMmZhMGIxZDJiY2ZmZWE5Y2E2MjZmNjdlOTJmZTIwOTg0ZTUy
NmYuLjg0YjE2OGEwNDBlY2RiYzg1MjY1OGY3ZDZjYWQxMDUxYmMzNmFlM2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0yNCw2ICsyNCw3
IEBACiAKIG1lc3NhZ2VzIC0+IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIE5vdFJlZkNv
dW50ZWQgewogICAgIEluc3RhbGxTZXJ2aWNlV29ya2VyKHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEgY29udGV4dERhdGEsIFN0cmluZyB1c2VyQWdlbnQpCisgICAgVXBk
YXRlQXBwQm91bmRWYWx1ZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgZW51bTpib29sIFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBw
Qm91bmQgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCkKICAgICBTdGFydEZldGNoKFdlYkNvcmU6
OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIs
IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QgcmVxdWVzdCwgc3RydWN0IFdlYkNvcmU6OkZldGNoT3B0aW9ucyBvcHRpb25z
LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBTdHJpbmcgcmVmZXJyZXIpCiAg
ICAgQ2FuY2VsRmV0Y2goV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIg
c2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciBmZXRjaElk
ZW50aWZpZXIpCiAgICAgQ29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZShXZWJDb3JlOjpT
V1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
V2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyNTBiMzI5MGJiM2Q4NjE5Yzhi
Y2M4MDRhOGE1Zjk2NjZjZWJlMTUxLi40MTA3YjNmZDc4Y2UzMzdiMTJiMDkzNTJjOGY3Nzk5Nzlk
ZjcwZDU0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMDUtMTcgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2No
ZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFyayBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkg
d2l0aCBhIGRlZmF1bHQgYXBwLWJvdW5kIHZhbHVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMyMDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc3
NjY0NDE2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1t
OgorCiAyMDIxLTA1LTE1ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAg
ICAgIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yIHN1cnZpdmVzIHBhZ2UgcmVsb2FkL25hdmlnYXRp
b24KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5B
cHBCcm93c2VyUHJpdmFjeS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQppbmRleCBkZWRiMDUxYzUxN2ViZDk2MjFjNDE0ZmJh
MTU0Njk5YjdlMGNhMGJkLi40YjExODNkNDRkMTk2YmUxNTA2ZTBiZjcwMDEwNGJjNzZlZTZlNGQ1
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBw
QnJvd3NlclByaXZhY3kubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCkBAIC0xNTgwLDcgKzE1ODAsNyBAQCB0cnkgewog
PC9zY3JpcHQ+CiApU1dSRVNPVVJDRSI7CiAKLWVudW0gY2xhc3MgUmVzcG9uc2VUeXBlIHsgU3lu
dGhldGljLCBGZXRjaGVkIH07CitlbnVtIGNsYXNzIFJlc3BvbnNlVHlwZSB7IFN5bnRoZXRpYywg
RmV0Y2hlZCwgQ2FjaGVkIH07CiBlbnVtIGNsYXNzIElzQXBwQm91bmQgOiBib29sIHsgTm8sIFll
cyB9Owogc3RhdGljIHZvaWQgcnVuVGVzdChSZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlLCBJc0Fw
cEJvdW5kIGFwcEJvdW5kKQogewpAQCAtMTYwMiwxMiArMTYwMiwxOCBAQCBzdGF0aWMgdm9pZCBy
dW5UZXN0KFJlc3BvbnNlVHlwZSByZXNwb25zZVR5cGUsIElzQXBwQm91bmQgYXBwQm91bmQpCiAg
ICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsg
ZXZlbnQucmVzcG9uZFdpdGgoZmV0Y2goJy9mZXRjaGVkLmh0bWwnKSkgfSk7IjsKICAgICAgICAg
ZXhwZWN0ZWRBbGVydCA9ICJmZXRjaGVkIGZyb20gc2VydmVyIjsKICAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBSZXNwb25zZVR5cGU6OkNhY2hlZDoKKyAgICAgICAganMgPSAic2VsZi5hZGRFdmVu
dExpc3RlbmVyKCdpbnN0YWxsJywgKGV2ZW50KSA9PiB7IGV2ZW50LndhaXRVbnRpbCggY2FjaGVz
Lm9wZW4oJ3YxJykudGhlbigoY2FjaGUpID0+IHsgcmV0dXJuIGNhY2hlLmFkZEFsbChbJy9jYWNo
ZWQuaHRtbCddKTsgfSkgKTsgfSk7IgorICAgICAgICAgICAgInNlbGYuYWRkRXZlbnRMaXN0ZW5l
cignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgoY2FjaGVzLm1hdGNoKCcv
Y2FjaGVkLmh0bWwnKSkgfSk7IjsKKyAgICAgICAgZXhwZWN0ZWRBbGVydCA9ICJsb2FkZWQgZnJv
bSBjYWNoZSI7CisgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIFRlc3RXZWJLaXRBUEk6OkhU
VFBTZXJ2ZXIgc2VydmVyKHsKICAgICAgICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9LAogICAg
ICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNj
cmlwdCIgfX0sIGpzIH0gfSwKICAgICAgICAgeyAiL2ZldGNoZWQuaHRtbCIsIHsgIjxzY3JpcHQ+
YWxlcnQoJ2ZldGNoZWQgZnJvbSBzZXJ2ZXInKTwvc2NyaXB0PiIgfSB9LAorICAgICAgICB7ICIv
Y2FjaGVkLmh0bWwiLCB7ICI8c2NyaXB0PmFsZXJ0KCdsb2FkZWQgZnJvbSBjYWNoZScpPC9zY3Jp
cHQ+IiB9IH0sCiAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0
dHBzKTsKIAogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKQEAg
LTE2NDAsNiArMTY0Niw4IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoUmVzcG9uc2VUeXBlIHJlc3Bv
bnNlVHlwZSwgSXNBcHBCb3VuZCBhcHBCb3VuZCkKICAgICAgICAgaXNEb25lID0gdHJ1ZTsKICAg
ICB9XTsKIAorICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKwogICAgIGlz
RG9uZSA9IGZhbHNlOwogICAgIFt3ZWJWaWV3IF9jbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGE6
XnsKICAgICAgICAgaXNEb25lID0gdHJ1ZTsKQEAgLTE2NTIsNyArMTY2MCw3IEBAIHN0YXRpYyB2
b2lkIHJ1blRlc3QoUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgSXNBcHBCb3VuZCBhcHBCb3Vu
ZCkKIAogICAgIGlzRG9uZSA9IGZhbHNlOwogICAgIFt3ZWJWaWV3IF9hcHBCb3VuZE5hdmlnYXRp
b25EYXRhOiBeKHN0cnVjdCBXS0FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhIGRhdGEpIHsK
LSAgICAgICAgaWYgKHJlc3BvbnNlVHlwZSA9PSBSZXNwb25zZVR5cGU6OlN5bnRoZXRpYykgewor
ICAgICAgICBpZiAocmVzcG9uc2VUeXBlID09IFJlc3BvbnNlVHlwZTo6U3ludGhldGljIHx8IHJl
c3BvbnNlVHlwZSA9PSBSZXNwb25zZVR5cGU6OkNhY2hlZCkgewogICAgICAgICAgICAgRVhQRUNU
X0ZBTFNFKGRhdGEuaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7CiAgICAgICAgICAg
ICBFWFBFQ1RfRkFMU0UoZGF0YS5oYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nKTsK
ICAgICAgICAgfSBlbHNlIHsKQEAgLTE2NzcsNiArMTY4NSwxNiBAQCBURVNUKEluQXBwQnJvd3Nl
clByaXZhY3ksIEFwcEJvdW5kUmVxdWVzdFdpdGhTZXJ2aWNlV29ya2VyKQogICAgIHJ1blRlc3Qo
UmVzcG9uc2VUeXBlOjpGZXRjaGVkLCBJc0FwcEJvdW5kOjpZZXMpOwogfQogCitURVNUKEluQXBw
QnJvd3NlclByaXZhY3ksIE5vbkFwcEJvdW5kUmVxdWVzdERlZmF1bHRWYWx1ZSkKK3sKKyAgICBy
dW5UZXN0KFJlc3BvbnNlVHlwZTo6Q2FjaGVkLCBJc0FwcEJvdW5kOjpObyk7Cit9CisKK1RFU1Qo
SW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmRSZXF1ZXN0RGVmYXVsdFZhbHVlKQoreworICAg
IHJ1blRlc3QoUmVzcG9uc2VUeXBlOjpDYWNoZWQsIElzQXBwQm91bmQ6Olllcyk7Cit9CisKIFRF
U1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTXVsdGlwbGVXZWJWaWV3c1dpdGhTaGFyZWRTZXJ2aWNl
V29ya2VyKQogewogICAgIHN0YXRpYyBib29sIGlzRG9uZSA9IGZhbHNlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429030</attachid>
            <date>2021-05-18 21:56:52 -0700</date>
            <delta_ts>2021-05-19 13:15:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223201-20210518215652.patch</filename>
            <type>text/plain</type>
            <size>39459</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NzE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzAwYWRlYzQ0YmEzZjkx
OGVhNjJkYzg2MTcxMTYzMzI3YzVmNDhhMS4uOTAwZmZhNWFhNmEyYjU0OGY2ZjZmMDE0NTc3OGFh
ZGU0ZGM4ZjlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIxLTA1LTE3ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIE1hcmsgU2Vy
dmljZVdvcmtlclRocmVhZFByb3h5IHdpdGggYSBkZWZhdWx0IGFwcC1ib3VuZCB2YWx1ZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzMjAxCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS83NzY2NDQxNj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTZXJ2aWNlIHdvcmtlciBsb2FkcyBoYXZlIHRoZWlyIG93
biBkb2N1bWVudCBsb2FkZXIsIHNvIHRoZXkgZG9uJ3QKKyAgICAgICAgYWx3YXlzIGdldCBwcm9w
ZXJseSBtYXJrZWQgYXMgYXBwLWJvdW5kIGJhc2VkIG9uIHRoZSBtYWluIGZyYW1lCisgICAgICAg
IG5hdmlnYXRpb24uIFByaW9yIGZpeGVzIGhhbmRsZWQgc29tZSBmZXRjaCBldmVudHMsIHN5bnRo
ZXRpYworICAgICAgICByZXNwb25zZXMsIGFuZCBzb2Z0IHVwZGF0ZXMuIEJ1dCB3ZSBuZWVkIHRv
IHNldCBhIGRlZmF1bHQgdmFsdWUgd2hlbgorICAgICAgICB3ZSBpbnN0YWxsIHRoZSBzZXJ2aWNl
IHdvcmtlci4KKworICAgICAgICBXZSBoYWQgdG8gcGljayBhIGJlc3QtZWZmb3J0IGhldXJpc3Rp
YyB0byBkbyB0aGlzLiBJZiBhbnkgY2xpZW50IGZvcgorICAgICAgICB0aGUgd29ya2VyIGlzIGFw
cC1ib3VuZCwgdGhlbiBhbGwgbG9hZHMgd2l0aCB0aGF0IHdvcmtlciB3aWxsIGJlCisgICAgICAg
IG1hcmtlZCBhcHAtYm91bmQuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNsaWVudERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVu
dERhdGE6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YTo6ZnJvbSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDbGllbnREYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50
RGF0YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGll
bnREYXRhOjpkZWNvZGUpOgorICAgICAgICBTdG9yZSB0aGUgbWFpbiBuYXZpZ2F0aW9uIGFwcC1i
b3VuZCB2YWx1ZSB3aGVuIHdlIHJlZ2lzdGVyIGEgY2xpZW50LgorCisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oOgorICAgICAgICAo
V2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpkZWNvZGUpOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OlNlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRp
b25EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYXRpb25EYXRhYmFzZTo6
aW1wb3J0UmVjb3Jkcyk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6dXBkYXRlV29ya2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNXU2VydmVyOjpjbGllbnRJc0FwcEJvdW5kRm9yUmVnaXN0cmFibGVEb21h
aW4pOgorICAgICAgICBCZXN0LWVmZm9ydCBoZXVyaXN0aWMgdG8gbWFyayBhIGxvYWQgYXMgYXBw
IGJvdW5kIGlmIGFueSBjbGllbnQgZm9yCisgICAgICAgIHRoYXQgb3JpZ2luIHdhcyByZWdpc3Rl
cmVkIGFzIGFwcC1ib3VuZC4KKworICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnRyeUluc3Rh
bGxDb250ZXh0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6dXBkYXRlQXBwQm91
bmRWYWx1ZUZvcldvcmtlcnMpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnJlZ2lzdGVy
U2VydmljZVdvcmtlckNsaWVudCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlcldvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6Y29udGV4
dERhdGEgY29uc3QpOgorCiAyMDIxLTA1LTE4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgVXNlIFdURjo6TG9ja2VyIGZvciBsb2NraW5nIEJhc2VBdWRpb0NvbnRl
eHQncyBncmFwaCBsb2NrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDgxNjE1YmNmNDY0NjE5MWYxYjMwZjY0YzdkN2Jl
NmQxYTU1MmQxNDkuLmQyM2I3MmM4YTMyNzlhZmIyMWM3ZGRiMzU5YzRhYTdiNzA5OTEzNzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjEtMDUtMTcgIEthdGUgQ2hlbmV5ICA8a2F0aGVy
aW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgTWFyayBTZXJ2aWNlV29ya2VyVGhyZWFk
UHJveHkgd2l0aCBhIGRlZmF1bHQgYXBwLWJvdW5kIHZhbHVlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMyMDEKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzc3NjY0NDE2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb246OnVwZGF0ZUFwcEJvdW5kVmFsdWUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgIChoZWFkZXJzX2Zvcl90eXBl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6dXBkYXRlQXBwQm91bmRWYWx1ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgorCiAyMDIxLTA1
LTE4ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIGFs
bG93c0NvbnRlbnRKYXZhU2NyaXB0IEFQSSBub3QgYXBwbGllZCBmcm9tIGRlZmF1bHRXZWJwYWdl
UHJlZmVyZW5jZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdv
cmtlckludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJ
bnRlcm5hbHMuY3BwCmluZGV4IDM1ZjRhNzhhZDVlOTBlYzZmYTU2YjcyNzc0ZjVhOGVlODdlYTJm
MGIuLjRjOTAxYTZkY2NmYThiYTAzYTgxM2Q3NWFjM2QwOGZkNmUwOWVlZjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcApAQCAtMTA4
LDYgKzEwOCwxNiBAQCBpbnQgU2VydmljZVdvcmtlckludGVybmFsczo6cHJvY2Vzc0lkZW50aWZp
ZXIoKSBjb25zdAogICAgIHJldHVybiBnZXRDdXJyZW50UHJvY2Vzc0lEKCk7CiB9CiAKK3ZvaWQg
U2VydmljZVdvcmtlckludGVybmFsczo6bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCit7CisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBtX2lkZW50aWZpZXJdICgpIG11dGFi
bGUgeworICAgICAgICBpZiAoYXV0byogcHJveHkgPSBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0
b24oKS53b3JrZXJCeUlEKGlkZW50aWZpZXIpKQorICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2
ZTxJRExCb29sZWFuPihwcm94eS0+bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCgpKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFR5cGVFcnJvcik7CisgICAgfSk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5oCmluZGV4IDZiYWJlYjI4MTc4M2Zm
OWNjMWY5ZDJiOTkzMTM1MWZiNGU4OGNjNzcuLjgxZGViMDcwY2M0NzYwM2U4ODVkMDdhNzU1ODU3
MDI1YzA5MjgyOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdv
cmtlckludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtl
ckludGVybmFscy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQogCiAjaW5jbHVkZSAiSURMVHlwZXMuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJl
ZC5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KIApAQCAtNTcsNiArNTgsOCBAQCBwdWJsaWM6CiAKICAgICBpbnQgcHJv
Y2Vzc0lkZW50aWZpZXIoKSBjb25zdDsKIAorICAgIHZvaWQgbGFzdE5hdmlnYXRpb25XYXNBcHBC
b3VuZChSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBT
ZXJ2aWNlV29ya2VySW50ZXJuYWxzKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGwKaW5kZXgg
MGI4ODg0NGI0OTQ2OTg5MDgwM2Q3ZGVhNDJkNjNlODBmYWExZmRlMy4uMWIyNmI3ZDUwMjg4MjFl
MjI0MmUxZDNjMjdlYTg2MDBmNGYyYzEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRsCkBAIC00MCw0ICs0MCw2IEBACiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNUaHJvdHRsZWFibGU7CiAKICAgICByZWFkb25seSBh
dHRyaWJ1dGUgbG9uZyBwcm9jZXNzSWRlbnRpZmllcjsKKworICAgIFByb21pc2U8Ym9vbGVhbj4g
bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCgpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuY3BwCmluZGV4
IDUxMTY3ZTdlYzc0OTFkNDVkOTRmMTUxNWU1MWM5MzYxYTBlNjJmNWMuLmE3OWQzY2VkNmMyYzNh
NjdhZmNhOTY5MGU2NWJiNmJiZDI1YTI0NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmNwcApAQCAtMzAs
NiArMzAsNyBAQAogCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKKyNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5j
bHVkZSAiU1dDbGllbnRDb25uZWN0aW9uLmgiCiAKQEAgLTU3LDcgKzU4LDcgQEAgc3RhdGljIFNl
cnZpY2VXb3JrZXJDbGllbnRGcmFtZVR5cGUgdG9TZXJ2aWNlV29ya2VyQ2xpZW50RnJhbWVUeXBl
KFNjcmlwdEV4ZWN1dGkKIAogU2VydmljZVdvcmtlckNsaWVudERhdGEgU2VydmljZVdvcmtlckNs
aWVudERhdGE6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHsgaWRlbnRpZmll
ciwgdHlwZSwgZnJhbWVUeXBlLCB1cmwuaXNvbGF0ZWRDb3B5KCkgfTsKKyAgICByZXR1cm4geyBp
ZGVudGlmaWVyLCB0eXBlLCBmcmFtZVR5cGUsIHVybC5pc29sYXRlZENvcHkoKSwgbGFzdE5hdmln
YXRpb25XYXNBcHBCb3VuZCB9OwogfQogCiBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSBTZXJ2aWNl
V29ya2VyQ2xpZW50RGF0YTo6ZnJvbShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBT
V0NsaWVudENvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCkBAIC02NSwxMSArNjYsMTYgQEAgU2Vydmlj
ZVdvcmtlckNsaWVudERhdGEgU2VydmljZVdvcmtlckNsaWVudERhdGE6OmZyb20oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY28KICAgICBib29sIGlzRG9jdW1lbnQgPSBpczxEb2N1bWVudD4oY29u
dGV4dCk7CiAgICAgUkVMRUFTRV9BU1NFUlQoaXNEb2N1bWVudCk7IC8vIFdlIGRvIG5vdCBzdXBw
b3J0IGRlZGljYXRlZCB3b3JrZXJzIGFzIGNsaWVudHMgeWV0LgogCisgICAgYXV0byYgZG9jdW1l
bnQgPSBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCk7CisgICAgYXV0byBsYXN0TmF2aWdhdGlv
bldhc0FwcEJvdW5kID0gTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDo6Tm87CisgICAgaWYgKGRv
Y3VtZW50LmxvYWRlcigpKQorICAgICAgICBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kID0gZG9j
dW1lbnQubG9hZGVyKCktPmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoKSA/IExhc3ROYXZpZ2F0
aW9uV2FzQXBwQm91bmQ6OlllcyA6IExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6Ok5vOworCiAg
ICAgcmV0dXJuIHsKLSAgICAgICAgeyBjb25uZWN0aW9uLnNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyKCksIGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS5pZGVudGlmaWVyKCkgfSwKKyAgICAg
ICAgeyBjb25uZWN0aW9uLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCksIGRvY3VtZW50Lmlk
ZW50aWZpZXIoKSB9LAogICAgICAgICBpc0RvY3VtZW50ID8gU2VydmljZVdvcmtlckNsaWVudFR5
cGU6OldpbmRvdyA6IFNlcnZpY2VXb3JrZXJDbGllbnRUeXBlOjpXb3JrZXIsCiAgICAgICAgIHRv
U2VydmljZVdvcmtlckNsaWVudEZyYW1lVHlwZShjb250ZXh0KSwKLSAgICAgICAgY29udGV4dC51
cmwoKQorICAgICAgICBjb250ZXh0LnVybCgpLCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kCiAg
ICAgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDbGllbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudERhdGEuaAppbmRleCAwNDZlM2FjMmY1NWI5ZTA3NmFkZjE5ZWM3
M2NmYWE2MjI3ZDBiOGEwLi4wOTA5YTk1MzgxNjRkOWZkNDBiNGJlNTNmNDc3OWUwNzkzZjY1OWY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNsaWVudERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNsaWVudERhdGEuaApAQCAtMzcsMTEgKzM3LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIFNXQ2xpZW50Q29ubmVjdGlvbjsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ7CiAKK2VudW0gY2xhc3MgTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCA6IGJvb2wgeyBObywg
WWVzIH07CisKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSB7CiAgICAgU2VydmljZVdv
cmtlckNsaWVudElkZW50aWZpZXIgaWRlbnRpZmllcjsKICAgICBTZXJ2aWNlV29ya2VyQ2xpZW50
VHlwZSB0eXBlOwogICAgIFNlcnZpY2VXb3JrZXJDbGllbnRGcmFtZVR5cGUgZnJhbWVUeXBlOwog
ICAgIFVSTCB1cmw7CisgICAgTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCBsYXN0TmF2aWdhdGlv
bldhc0FwcEJvdW5kOwogCiAgICAgU2VydmljZVdvcmtlckNsaWVudERhdGEgaXNvbGF0ZWRDb3B5
KCkgY29uc3Q7CiAKQEAgLTU0LDcgKzU3LDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnRE
YXRhIHsKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRE
YXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IGlk
ZW50aWZpZXIgPDwgdHlwZSA8PCBmcmFtZVR5cGUgPDwgdXJsOworICAgIGVuY29kZXIgPDwgaWRl
bnRpZmllciA8PCB0eXBlIDw8IGZyYW1lVHlwZSA8PCB1cmwgPDwgbGFzdE5hdmlnYXRpb25XYXNB
cHBCb3VuZDsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAgLTgwLDcgKzgzLDEyIEBA
IE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0
YTo6ZGVjb2RlKERlY29kZXImIGRlY29kCiAgICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4geyB7IFdURk1vdmUoKmlkZW50aWZpZXIpLCBXVEZN
b3ZlKCp0eXBlKSwgV1RGTW92ZSgqZnJhbWVUeXBlKSwgV1RGTW92ZSgqdXJsKSB9IH07CisgICAg
T3B0aW9uYWw8TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZD4gbGFzdE5hdmlnYXRpb25XYXNBcHBC
b3VuZDsKKyAgICBkZWNvZGVyID4+IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7CisgICAgaWYg
KCFsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCppZGVudGlmaWVyKSwgV1RGTW92ZSgqdHlwZSks
IFdURk1vdmUoKmZyYW1lVHlwZSksIFdURk1vdmUoKnVybCksIFdURk1vdmUoKmxhc3ROYXZpZ2F0
aW9uV2FzQXBwQm91bmQpIH0gfTsKIH0KIAogdXNpbmcgU2VydmljZVdvcmtlckNsaWVudHNNYXRj
aEFsbENhbGxiYWNrID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTZXJ2aWNl
V29ya2VyQ2xpZW50RGF0YT4mJik+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcAppbmRleCAxNmRmMmQ4
MjQ5Zjg3ZjZhZTQzNzNlMjY1NjIzYzNkOGE5OWI1ZWRmLi5iNWFkZGIzMWRhYmNiYTgwYjk0ZDAw
MzRlYWNmMzY3OTRmMTNhYjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcApAQCAtNDQsNiArNDQs
NyBAQCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpp
c29sYXRlZENvcHkoKSBjb25zdAogICAgICAgICBzY3JpcHRVUkwuaXNvbGF0ZWRDb3B5KCksCiAg
ICAgICAgIHdvcmtlclR5cGUsCiAgICAgICAgIGxvYWRlZEZyb21EaXNrLAorICAgICAgICBsYXN0
TmF2aWdhdGlvbldhc0FwcEJvdW5kLAogICAgICAgICBjcm9zc1RocmVhZENvcHkoc2NyaXB0UmVz
b3VyY2VNYXApCiAgICAgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaAppbmRleCAxNGFiY2FkNjRjOTlh
MWM4NzEzNmJiYzBmNmQ5Y2M1NjFlZjI4MTIwLi5lZmRmYTdjNTAyZTgwODQzMDk3MjViNjRjODcw
MzNmNmVkMDM2YWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNvbnRleHREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCkBAIC0zOSw2ICszOSw4IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorZW51bSBjbGFzcyBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5k
IDogYm9vbDsKKwogc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7CiAgICAgc3RydWN0
IEltcG9ydGVkU2NyaXB0IHsKICAgICAgICAgU2NyaXB0QnVmZmVyIHNjcmlwdDsKQEAgLTg3LDYg
Kzg5LDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7CiAgICAgVVJMIHNjcmlw
dFVSTDsKICAgICBXb3JrZXJUeXBlIHdvcmtlclR5cGU7CiAgICAgYm9vbCBsb2FkZWRGcm9tRGlz
azsKKyAgICBPcHRpb25hbDxMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kPiBsYXN0TmF2aWdhdGlv
bldhc0FwcEJvdW5kOwogICAgIEhhc2hNYXA8VVJMLCBJbXBvcnRlZFNjcmlwdD4gc2NyaXB0UmVz
b3VyY2VNYXA7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNv
ZGVyJikgY29uc3Q7CkBAIC05OSw3ICsxMDIsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgog
dm9pZCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogewogICAgIGVuY29kZXIgPDwgam9iRGF0YUlkZW50aWZpZXIgPDwgcmVnaXN0cmF0aW9u
IDw8IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIDw8IHNjcmlwdCA8PCBjb250ZW50U2VjdXJpdHlQ
b2xpY3kgPDwgcmVmZXJyZXJQb2xpY3kKLSAgICAgICAgPDwgc2NyaXB0VVJMIDw8IHdvcmtlclR5
cGUgPDwgbG9hZGVkRnJvbURpc2sgPDwgc2NyaXB0UmVzb3VyY2VNYXAgPDwgY2VydGlmaWNhdGVJ
bmZvOworICAgICAgICA8PCBzY3JpcHRVUkwgPDwgd29ya2VyVHlwZSA8PCBsb2FkZWRGcm9tRGlz
ayA8PCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIDw8IHNjcmlwdFJlc291cmNlTWFwIDw8IGNl
cnRpZmljYXRlSW5mbzsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAgLTE0NCw2ICsx
NDcsMTAgQEAgT3B0aW9uYWw8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGE6OmRlY29kZShEZWNvZGVyJiBkZWMKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGxvYWRlZEZyb21EaXNrKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAorICAgIE9w
dGlvbmFsPExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ+IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91
bmQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKSkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwogICAgIEhhc2hNYXA8VVJMLCBJbXBvcnRl
ZFNjcmlwdD4gc2NyaXB0UmVzb3VyY2VNYXA7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzY3Jp
cHRSZXNvdXJjZU1hcCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC0xNjQsNiAr
MTcxLDcgQEAgT3B0aW9uYWw8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGE6OmRlY29kZShEZWNvZGVyJiBkZWMKICAgICAgICAgV1RGTW92ZShzY3JpcHRV
UkwpLAogICAgICAgICB3b3JrZXJUeXBlLAogICAgICAgICBsb2FkZWRGcm9tRGlzaywKKyAgICAg
ICAgV1RGTW92ZShsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKSwKICAgICAgICAgV1RGTW92ZShz
Y3JpcHRSZXNvdXJjZU1hcCkKICAgICB9fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFk
UHJveHkuY3BwCmluZGV4IDgwZGMwMzdkYjc3M2Y2NWM1Y2NkMzNiZmI0NjIzMGQ3ZDAyNGVjNjMu
LmY3NzNhY2QzNWNiMDI1ZjY2Yzc2YzYzZGJhMTU4MjIwYTFmODM2MTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlclRocmVhZFByb3h5LmNwcApAQCAtMTE2LDYgKzExNiw5IEBAIFNlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5KFBhZ2VDb25maWd1cmF0aW9u
JiYgcGFnZUNvbmZpCiAgICAgbV9yZW1vdGVEZWJ1Z2dhYmxlLT5zZXRSZW1vdGVEZWJ1Z2dpbmdB
bGxvd2VkKHRydWUpOwogICAgIG1fcmVtb3RlRGVidWdnYWJsZS0+aW5pdCgpOwogI2VuZGlmCisK
KyAgICBpZiAoZGF0YS5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKQorICAgICAgICBzZXRMYXN0
TmF2aWdhdGlvbldhc0FwcEJvdW5kKGRhdGEubGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCA9PSBM
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOjpZZXMpOwogfQogCiBTZXJ2aWNlV29ya2VyVGhyZWFk
UHJveHk6On5TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkoKQpAQCAtMTMwLDYgKzEzMywxMSBAQCB2
b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3Vu
ZChib29sIHdhc0FwcEJvdW5kKQogICAgICAgICBtX2RvY3VtZW50LT5sb2FkZXIoKS0+c2V0TGFz
dE5hdmlnYXRpb25XYXNBcHBCb3VuZCh3YXNBcHBCb3VuZCk7CiB9CiAKK2Jvb2wgU2VydmljZVdv
cmtlclRocmVhZFByb3h5OjpsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKCkKK3sKKyAgICByZXR1
cm4gbV9kb2N1bWVudC0+bG9hZGVyKCkgPyBtX2RvY3VtZW50LT5sb2FkZXIoKS0+bGFzdE5hdmln
YXRpb25XYXNBcHBCb3VuZCgpIDogZmFsc2U7Cit9CisKIGJvb2wgU2VydmljZVdvcmtlclRocmVh
ZFByb3h5Ojpwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAg
ICAgaWYgKG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRo
cmVhZFByb3h5LmgKaW5kZXggYmZjODdmMjQ5MDU0NzY2OWY5YjA0MWY4YTI3MWQ3MjdjZWQyZmU4
OS4uMWZkNWRhYjM2MTEyYTY2MWU2MTJkOGI0YjE2ODVlYzFkMmZjMThjMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVh
ZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlclRocmVhZFByb3h5LmgKQEAgLTgyLDYgKzgyLDcgQEAgcHVibGljOgogICAgIHZv
aWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2soU2NyaXB0QnVmZmVyJiYsIEhhc2hNYXA8VVJMLCBTY3Jp
cHRCdWZmZXI+JiYgaW1wb3J0ZWRTY3JpcHRzKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChib29sKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoKTsKIAogcHJpdmF0ZToKICAgICBXRUJDT1JF
X0VYUE9SVCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkoUGFnZUNvbmZpZ3VyYXRpb24mJiwgU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhJiYsIFN0cmluZyYmIHVzZXJBZ2VudCwgQ2FjaGVTdG9yYWdl
UHJvdmlkZXImLCBTdG9yYWdlQmxvY2tpbmdQb2xpY3kpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNl
LmNwcAppbmRleCBlZGY4ZWEyZDA0MmJkYzg5MGFkMmVhM2Y5N2M2Mjg3ZWQxYTllOWNlLi41NjY5
ZDMwZjhmODc3MTdhZDIyY2IzZTk2YTQyNjdmMTAxMGM0NDI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRh
dGFiYXNlLmNwcApAQCAtNTczLDcgKzU3Myw3IEBAIFN0cmluZyBSZWdpc3RyYXRpb25EYXRhYmFz
ZTo6aW1wb3J0UmVjb3JkcygpCiAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uSWRlbnRpZmllciA9
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwogICAgICAg
ICBhdXRvIHNlcnZpY2VXb3JrZXJEYXRhID0gU2VydmljZVdvcmtlckRhdGEgeyB3b3JrZXJJZGVu
dGlmaWVyLCBzY3JpcHRVUkwsIFNlcnZpY2VXb3JrZXJTdGF0ZTo6QWN0aXZhdGVkLCAqd29ya2Vy
VHlwZSwgcmVnaXN0cmF0aW9uSWRlbnRpZmllciB9OwogICAgICAgICBhdXRvIHJlZ2lzdHJhdGlv
biA9IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhIHsgV1RGTW92ZSgqa2V5KSwgcmVnaXN0
cmF0aW9uSWRlbnRpZmllciwgV1RGTW92ZShzY29wZVVSTCksICp1cGRhdGVWaWFDYWNoZSwgbGFz
dFVwZGF0ZUNoZWNrVGltZSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURk1vdmUoc2Vy
dmljZVdvcmtlckRhdGEpIH07Ci0gICAgICAgIGF1dG8gY29udGV4dERhdGEgPSBTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEgeyBXVEY6Om51bGxvcHQsIFdURk1vdmUocmVnaXN0cmF0aW9uKSwgd29y
a2VySWRlbnRpZmllciwgV1RGTW92ZShzY3JpcHQpLCBXVEZNb3ZlKCpjZXJ0aWZpY2F0ZUluZm8p
LCBXVEZNb3ZlKCpjb250ZW50U2VjdXJpdHlQb2xpY3kpLCBXVEZNb3ZlKHJlZmVycmVyUG9saWN5
KSwgV1RGTW92ZShzY3JpcHRVUkwpLCAqd29ya2VyVHlwZSwgdHJ1ZSwgV1RGTW92ZShzY3JpcHRS
ZXNvdXJjZU1hcCkgfTsKKyAgICAgICAgYXV0byBjb250ZXh0RGF0YSA9IFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSB7IFdURjo6bnVsbG9wdCwgV1RGTW92ZShyZWdpc3RyYXRpb24pLCB3b3JrZXJJ
ZGVudGlmaWVyLCBXVEZNb3ZlKHNjcmlwdCksIFdURk1vdmUoKmNlcnRpZmljYXRlSW5mbyksIFdU
Rk1vdmUoKmNvbnRlbnRTZWN1cml0eVBvbGljeSksIFdURk1vdmUocmVmZXJyZXJQb2xpY3kpLCBX
VEZNb3ZlKHNjcmlwdFVSTCksICp3b3JrZXJUeXBlLCB0cnVlLCBMYXN0TmF2aWdhdGlvbldhc0Fw
cEJvdW5kOjpObywgV1RGTW92ZShzY3JpcHRSZXNvdXJjZU1hcCkgfTsKIAogICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbnRleHREYXRh
ID0gY29udGV4dERhdGEuaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBw
cm90ZWN0ZWRUaGlzLT5hZGRSZWdpc3RyYXRpb25Ub1N0b3JlKFdURk1vdmUoY29udGV4dERhdGEp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ci5jcHAKaW5kZXggMTM5MmY0NDE0ZDlhZmVkZjQ2MDAyNGY5NzhhYjZjZGI0MTE0MGIwZS4uMDJm
NGJhZjM2ZjYyMmFhYzc0MzI2YzlmMjZiMThjNTM0N2U0NzM2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTY0OCw3ICs2
NDgsMjYgQEAgdm9pZCBTV1NlcnZlcjo6cmVtb3ZlQ2xpZW50U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTZXIKIAogdm9pZCBTV1NlcnZlcjo6dXBkYXRl
V29ya2VyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYgam9iRGF0YUlkZW50
aWZpZXIsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24sIGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTY3JpcHRCdWZmZXImIHNjcmlwdCwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0
aWZpY2F0ZUluZm8sIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYg
Y29udGVudFNlY3VyaXR5UG9saWN5LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyUG9saWN5LCBXb3Jr
ZXJUeXBlIHR5cGUsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9y
dGVkU2NyaXB0PiYmIHNjcmlwdFJlc291cmNlTWFwKQogewotICAgIHRyeUluc3RhbGxDb250ZXh0
RGF0YShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgeyBqb2JEYXRhSWRlbnRpZmllciwgcmVnaXN0
cmF0aW9uLmRhdGEoKSwgU2VydmljZVdvcmtlcklkZW50aWZpZXI6OmdlbmVyYXRlKCksIHNjcmlw
dCwgY2VydGlmaWNhdGVJbmZvLCBjb250ZW50U2VjdXJpdHlQb2xpY3ksIHJlZmVycmVyUG9saWN5
LCB1cmwsIHR5cGUsIGZhbHNlLCBXVEZNb3ZlKHNjcmlwdFJlc291cmNlTWFwKSB9KTsKKyAgICB0
cnlJbnN0YWxsQ29udGV4dERhdGEoU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsgam9iRGF0YUlk
ZW50aWZpZXIsIHJlZ2lzdHJhdGlvbi5kYXRhKCksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyOjpn
ZW5lcmF0ZSgpLCBzY3JpcHQsIGNlcnRpZmljYXRlSW5mbywgY29udGVudFNlY3VyaXR5UG9saWN5
LCByZWZlcnJlclBvbGljeSwgdXJsLCB0eXBlLCBmYWxzZSwgY2xpZW50SXNBcHBCb3VuZEZvclJl
Z2lzdHJhYmxlRG9tYWluKFJlZ2lzdHJhYmxlRG9tYWluKHVybCkpLCBXVEZNb3ZlKHNjcmlwdFJl
c291cmNlTWFwKSB9KTsKK30KKworTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCBTV1NlcnZlcjo6
Y2xpZW50SXNBcHBCb3VuZEZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBkb21haW4pCit7CisgICAgYXV0byBjbGllbnRzQnlSZWdpc3RyYWJsZURvbWFpbkl0ZXJh
dG9yID0gbV9jbGllbnRzQnlSZWdpc3RyYWJsZURvbWFpbi5maW5kKGRvbWFpbik7CisgICAgaWYg
KGNsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluSXRlcmF0b3IgPT0gbV9jbGllbnRzQnlSZWdpc3Ry
YWJsZURvbWFpbi5lbmQoKSkKKyAgICAgICAgcmV0dXJuIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91
bmQ6Ok5vOworCisgICAgYXV0byYgY2xpZW50c0ZvclJlZ2lzdHJhYmxlRG9tYWluID0gY2xpZW50
c0J5UmVnaXN0cmFibGVEb21haW5JdGVyYXRvci0+dmFsdWU7CisgICAgZm9yIChhdXRvJiBjbGll
bnQgOiBjbGllbnRzRm9yUmVnaXN0cmFibGVEb21haW4pIHsKKyAgICAgICAgYXV0byBkYXRhID0g
bV9jbGllbnRzQnlJZC5maW5kKGNsaWVudCk7CisgICAgICAgIGlmIChkYXRhID09IG1fY2xpZW50
c0J5SWQuZW5kKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoZGF0YS0+
dmFsdWUubGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCA9PSBMYXN0TmF2aWdhdGlvbldhc0FwcEJv
dW5kOjpZZXMpCisgICAgICAgICAgICByZXR1cm4gTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDo6
WWVzOworICAgIH0KKworICAgIHJldHVybiBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOjpObzsK
IH0KIAogdm9pZCBTV1NlcnZlcjo6dHJ5SW5zdGFsbENvbnRleHREYXRhKFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSYmIGRhdGEpCkBAIC04NjksMTAgKzg4OCwyNSBAQCBTV1NlcnZlclJlZ2lzdHJh
dGlvbiogU1dTZXJ2ZXI6OnJlZ2lzdHJhdGlvbkZyb21TZXJ2aWNlV29ya2VySWRlbnRpZmllcihT
ZXJ2aWNlVwogICAgIHJldHVybiBpdGVyYXRvci0+dmFsdWUtPnJlZ2lzdHJhdGlvbigpOwogfQog
Cit2b2lkIFNXU2VydmVyOjp1cGRhdGVBcHBCb3VuZFZhbHVlRm9yV29ya2Vycyhjb25zdCBDbGll
bnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCBsYXN0TmF2
aWdhdGlvbldhc0FwcEJvdW5kKQoreworICAgIGZvciAoYXV0byYgd29ya2VyIDogbV9ydW5uaW5n
T3JUZXJtaW5hdGluZ1dvcmtlcnMudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKHdvcmtlci0+b3Jp
Z2luKCkgPT0gY2xpZW50T3JpZ2luKQorICAgICAgICAgICAgd29ya2VyLT51cGRhdGVBcHBCb3Vu
ZFZhbHVlKGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOworICAgIH0KK30KKwogdm9pZCBTV1Nl
cnZlcjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KENsaWVudE9yaWdpbiYmIGNsaWVudE9y
aWdpbiwgU2VydmljZVdvcmtlckNsaWVudERhdGEmJiBkYXRhLCBjb25zdCBPcHRpb25hbDxTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4mIGNvbnRyb2xsaW5nU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFN0cmluZyYmIHVzZXJBZ2VudCkKIHsKICAgICBhdXRv
IGNsaWVudElkZW50aWZpZXIgPSBkYXRhLmlkZW50aWZpZXI7CiAKKyAgICAvLyBVcGRhdGUgdGhl
IGFwcC1ib3VuZCB2YWx1ZSBpZiB0aGUgY2xpZW50IGlzIGFwcC1ib3VuZCBhbmQgdGhlIGN1cnJl
bnQgY2xpZW50cyBmb3IgdGhhdCBkb21haW4KKyAgICAvLyBhcmUgbm90IGN1cnJlbnRseSBtYXJr
ZWQgYXBwLWJvdW5kLgorICAgIGlmIChkYXRhLmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgPT0g
TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDo6WWVzKSB7CisgICAgICAgIGlmIChjbGllbnRJc0Fw
cEJvdW5kRm9yUmVnaXN0cmFibGVEb21haW4oY2xpZW50T3JpZ2luLmNsaWVudFJlZ2lzdHJhYmxl
RG9tYWluKCkpID09IExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6Ok5vKQorICAgICAgICAgICAg
dXBkYXRlQXBwQm91bmRWYWx1ZUZvcldvcmtlcnMoY2xpZW50T3JpZ2luLCBkYXRhLmxhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQpOworICAgIH0KKwogICAgIEFTU0VSVCghbV9jbGllbnRzQnlJZC5j
b250YWlucyhjbGllbnRJZGVudGlmaWVyKSk7CiAgICAgbV9jbGllbnRzQnlJZC5hZGQoY2xpZW50
SWRlbnRpZmllciwgV1RGTW92ZShkYXRhKSk7CiAKQEAgLTkwOCw2ICs5NDIsNyBAQCB2b2lkIFNX
U2VydmVyOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoQ2xpZW50T3JpZ2luJiYgY2xpZW50
T3JpZ2luLCBTZXJ2aWNlVwogdm9pZCBTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJD
bGllbnQoY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIFNlcnZpY2VXb3JrZXJDbGll
bnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIpCiB7CiAgICAgYXV0byBjbGllbnRSZWdpc3Ry
YWJsZURvbWFpbiA9IGNsaWVudE9yaWdpbi5jbGllbnRSZWdpc3RyYWJsZURvbWFpbigpOworICAg
IGF1dG8gYXBwQm91bmRWYWx1ZUJlZm9yZSA9IGNsaWVudElzQXBwQm91bmRGb3JSZWdpc3RyYWJs
ZURvbWFpbihjbGllbnRPcmlnaW4uY2xpZW50UmVnaXN0cmFibGVEb21haW4oKSk7CiAKICAgICBi
b29sIHdhc1JlbW92ZWQgPSBtX2NsaWVudHNCeUlkLnJlbW92ZShjbGllbnRJZGVudGlmaWVyKTsK
ICAgICBBU1NFUlRfVU5VU0VEKHdhc1JlbW92ZWQsIHdhc1JlbW92ZWQpOwpAQCAtOTU4LDYgKzk5
MywxMiBAQCB2b2lkIFNXU2VydmVyOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25z
dCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgUwogICAgICAgICByZWdpc3RyYXRpb24tPnJl
bW92ZUNsaWVudFVzaW5nUmVnaXN0cmF0aW9uKGNsaWVudElkZW50aWZpZXIpOwogCiAgICAgbV9j
bGllbnRUb0NvbnRyb2xsaW5nUmVnaXN0cmF0aW9uLnJlbW92ZShyZWdpc3RyYXRpb25JdGVyYXRv
cik7CisKKyAgICAvLyBJZiB0aGUgYXBwLWJvdW5kIHZhbHVlIGNoYW5nZWQgYWZ0ZXIgdGhpcyBj
bGllbnQgd2FzIHJlbW92ZWQsIHdlIGtub3cgaXQgd2FzIHRoZSBvbmx5IGFwcC1ib3VuZAorICAg
IC8vIGNsaWVudCBmb3IgaXQncyBkb21haW4sIGFuZCB3ZSBzaG91bGQgdXBkYXRlIGFsbCB3b3Jr
ZXJzLgorICAgIGF1dG8gYXBwQm91bmRWYWx1ZUFmdGVyID0gY2xpZW50SXNBcHBCb3VuZEZvclJl
Z2lzdHJhYmxlRG9tYWluKGNsaWVudE9yaWdpbi5jbGllbnRSZWdpc3RyYWJsZURvbWFpbigpKTsK
KyAgICBpZiAoYXBwQm91bmRWYWx1ZUJlZm9yZSAhPSBhcHBCb3VuZFZhbHVlQWZ0ZXIpCisgICAg
ICAgIHVwZGF0ZUFwcEJvdW5kVmFsdWVGb3JXb3JrZXJzKGNsaWVudE9yaWdpbiwgYXBwQm91bmRW
YWx1ZUFmdGVyKTsKIH0KIAogdm9pZCBTV1NlcnZlcjo6aGFuZGxlTG93TWVtb3J5V2FybmluZygp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgK
aW5kZXggZDBlZDdjOTIzNjdlMTdiYzkzODJjZjgwY2Q1ZThjNjgzN2I3M2NlYi4uYmEzN2NlYTkx
Mjk3ZDY0OTlhYTJhOWViZDg4Mjg2YzQ5NGY2OTYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaApAQCAtMjE3LDYgKzIxNyw4IEBAIHB1
YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBkZWZhdWx0VGVybWluYXRpb25E
ZWxheSA9IDEwX3M7CiAKKyAgICBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIGNsaWVudElzQXBw
Qm91bmRGb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpOworCiBw
cml2YXRlOgogICAgIHZvaWQgdmFsaWRhdGVSZWdpc3RyYXRpb25Eb21haW4oV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCkBAIC0y
NDIsNiArMjQ0LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29udGV4dENvbm5lY3Rpb25DcmVh
dGVkKFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpOwogCisgICAgdm9pZCB1cGRhdGVBcHBC
b3VuZFZhbHVlRm9yV29ya2Vycyhjb25zdCBDbGllbnRPcmlnaW4mLCBMYXN0TmF2aWdhdGlvbldh
c0FwcEJvdW5kKTsKKwogICAgIEhhc2hNYXA8U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwg
c3RkOjp1bmlxdWVfcHRyPENvbm5lY3Rpb24+PiBtX2Nvbm5lY3Rpb25zOwogICAgIEhhc2hNYXA8
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSwgV2Vha1B0cjxTV1NlcnZlclJlZ2lzdHJhdGlv
bj4+IG1fc2NvcGVUb1JlZ2lzdHJhdGlvbk1hcDsKICAgICBIYXNoTWFwPFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8U1dTZXJ2ZXJSZWdpc3RyYXRp
b24+PiBtX3JlZ2lzdHJhdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aAppbmRleCBiYTU4Zjc4NzhhNDM4OWI0NTQ1NjJiNzJiNWE1ZjVjYTU0ZTIzNzUyLi5hOGJiMDcw
ZWNkZjZmNjVlZGEyNGU1ODI2ZDg2ZDczY2RkMjdmNmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmgKQEAgLTUyLDYgKzUyLDcgQEAgcHVibGljOgogCiAgICAgLy8gTWVz
c2FnZXMgdG8gdGhlIFNXIGhvc3QgcHJvY2VzcwogICAgIHZpcnR1YWwgdm9pZCBpbnN0YWxsU2Vy
dmljZVdvcmtlckNvbnRleHQoY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiwgY29uc3Qg
U3RyaW5nJiB1c2VyQWdlbnQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQXBwQm91bmRW
YWx1ZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRlcm1pbmF0ZVdvcmtlcihT
ZXJ2aWNlV29ya2VySWRlbnRpZmllcikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcAppbmRleCAxMzU0MGVk
ZDkwYjM1MDFjNzNjNGYzMjI1MzQzNDI2ODNiOWY2YTNkLi4yMTEyMGZmM2NkOTlkNjY2MzYwOTdm
M2U3MGU1OWZmOGU3NmFjNjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcApAQCAtNjIsNiArNjIsNyBAQCBT
V1NlcnZlcldvcmtlcjo6U1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImIHNlcnZlciwgU1dTZXJ2ZXJS
ZWdpc3RyYXRpb24mIHJlZ2lzdHJhdAogICAgICwgbV9yZWdpc3RyYWJsZURvbWFpbihtX2RhdGEu
c2NyaXB0VVJMKQogICAgICwgbV9zY3JpcHRSZXNvdXJjZU1hcChXVEZNb3ZlKHNjcmlwdFJlc291
cmNlTWFwKSkKICAgICAsIG1fdGVybWluYXRpb25UaW1lcigqdGhpcywgJlNXU2VydmVyV29ya2Vy
Ojp0ZXJtaW5hdGlvblRpbWVyRmlyZWQpCisgICAgLCBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91
bmQobV9zZXJ2ZXItPmNsaWVudElzQXBwQm91bmRGb3JSZWdpc3RyYWJsZURvbWFpbihtX3JlZ2lz
dHJhYmxlRG9tYWluKSkKIHsKICAgICBtX2RhdGEuc2NyaXB0VVJMLnJlbW92ZUZyYWdtZW50SWRl
bnRpZmllcigpOwogCkBAIC04Niw5ICs4NywyMSBAQCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEg
U1dTZXJ2ZXJXb3JrZXI6OmNvbnRleHREYXRhKCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9yZWdp
c3RyYXRpb24pOwogCi0gICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBtX3JlZ2lzdHJhdGlvbi0+
ZGF0YSgpLCBtX2RhdGEuaWRlbnRpZmllciwgbV9zY3JpcHQsIG1fY2VydGlmaWNhdGVJbmZvLCBt
X2NvbnRlbnRTZWN1cml0eVBvbGljeSwgbV9yZWZlcnJlclBvbGljeSwgbV9kYXRhLnNjcmlwdFVS
TCwgbV9kYXRhLnR5cGUsIGZhbHNlLCBtX3NjcmlwdFJlc291cmNlTWFwIH07CisgICAgcmV0dXJu
IHsgV1RGOjpudWxsb3B0LCBtX3JlZ2lzdHJhdGlvbi0+ZGF0YSgpLCBtX2RhdGEuaWRlbnRpZmll
ciwgbV9zY3JpcHQsIG1fY2VydGlmaWNhdGVJbmZvLCBtX2NvbnRlbnRTZWN1cml0eVBvbGljeSwg
bV9yZWZlcnJlclBvbGljeSwgbV9kYXRhLnNjcmlwdFVSTCwgbV9kYXRhLnR5cGUsIGZhbHNlLCBt
X2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQsIG1fc2NyaXB0UmVzb3VyY2VNYXAgfTsKIH0KIAor
dm9pZCBTV1NlcnZlcldvcmtlcjo6dXBkYXRlQXBwQm91bmRWYWx1ZShMYXN0TmF2aWdhdGlvbldh
c0FwcEJvdW5kIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpCit7CisgICAgaWYgKCFpc1J1bm5p
bmcoKSkgeworICAgICAgICBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgPSBsYXN0TmF2aWdh
dGlvbldhc0FwcEJvdW5kOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGF1dG8q
IGNvbm5lY3Rpb24gPSBjb250ZXh0Q29ubmVjdGlvbigpKQorICAgICAgICBjb25uZWN0aW9uLT51
cGRhdGVBcHBCb3VuZFZhbHVlKGlkZW50aWZpZXIoKSwgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3Vu
ZCk7Cit9CisKKwogdm9pZCBTV1NlcnZlcldvcmtlcjo6dGVybWluYXRlKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fc2VydmVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5o
CmluZGV4IDk0YWUxZmEyNjUzZmUxYzY2MDFmMTZiMTIwMGE4NTllZTgzNmY2MjMuLmQ4NjNlMjUy
NDA5ZmQyNzVjMDczNWM2ZTBkNzlkMDg5NGEzMzc3NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKQEAgLTEyNyw2
ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRIYXNUaW1lZE91dEFueUZldGNoVGFza3Mo
KSB7IG1faGFzVGltZWRPdXRBbnlGZXRjaFRhc2tzID0gdHJ1ZTsgfQogICAgIGJvb2wgaGFzVGlt
ZWRPdXRBbnlGZXRjaFRhc2tzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNUaW1lZE91dEFueUZldGNo
VGFza3M7IH0KICAgICB2b2lkIGRpZEZhaWxIZWFydEJlYXRDaGVjaygpOworICAgIHZvaWQgdXBk
YXRlQXBwQm91bmRWYWx1ZShMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKTsKIAogcHJpdmF0ZToK
ICAgICBTV1NlcnZlcldvcmtlcihTV1NlcnZlciYsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiwgY29u
c3QgVVJMJiwgY29uc3QgU2NyaXB0QnVmZmVyJiwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiwgY29u
c3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgU3RyaW5nJiYgcmVmZXJy
ZXJQb2xpY3ksIFdvcmtlclR5cGUsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBIYXNoTWFwPFVS
TCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJik7CkBAIC0xNTcs
NiArMTU4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzVGltZWRPdXRBbnlGZXRjaFRhc2tz
IHsgZmFsc2UgfTsKICAgICBWZWN0b3I8Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPj4gbV90ZXJt
aW5hdGlvbkNhbGxiYWNrczsKICAgICBUaW1lciBtX3Rlcm1pbmF0aW9uVGltZXI7CisgICAgTGFz
dE5hdmlnYXRpb25XYXNBcHBCb3VuZCBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rp
b24uY3BwCmluZGV4IGNmODY4NmU3NzQxNzE1NDgxNmU4YjYyZTkyMzMwM2NjMzdjMzE0OGQuLmU1
NTYyZTUxM2RlYzgzY2E3MjI2ZGFmOWE4MWZlNGM2NmY1ZjgyYzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0xNDgsNiArMTQ4LDcgQEAgdm9pZCBXZWJTV1Nl
cnZlckNvbm5lY3Rpb246OmNvbnRyb2xDbGllbnQoU2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXIgY2xpZW50SWQKICAgICB9KTsKIAogICAgIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIGRhdGEg
eyBjbGllbnRJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZTo6V2luZG93LCBTZXJ2
aWNlV29ya2VyQ2xpZW50RnJhbWVUeXBlOjpOb25lLCByZXF1ZXN0LnVybCgpIH07CisgICAgZGF0
YS5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kID0gcmVxdWVzdC5pc0FwcEJvdW5kKCkgPyBXZWJD
b3JlOjpMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOjpZZXMgOiBXZWJDb3JlOjpMYXN0TmF2aWdh
dGlvbldhc0FwcEJvdW5kOjpObzsKICAgICByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoU2Vj
dXJpdHlPcmlnaW5EYXRhIHsgcmVnaXN0cmF0aW9uLmtleSgpLnRvcE9yaWdpbigpIH0sIFdURk1v
dmUoZGF0YSksIHJlZ2lzdHJhdGlvbi5pZGVudGlmaWVyKCksIHJlcXVlc3QuaHR0cFVzZXJBZ2Vu
dCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmNwcAppbmRleCA0ZjE4YTM1NzhhODE4Y2ExMmEwM2I3ZjkwZThmNjU5NTg1MjdkOTY4
Li44NGQ3YjQ2OWE3M2U3MTgwNzkyZmViM2Y3ZWRkNmY2ZTFkY2UwNzVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtOTIsNiAr
OTIsMTEgQEAgdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Omluc3RhbGxTZXJ2
aWNlV29ya2VyQ29udGV4dChjb25zdCBTZXJ2aWNlV28KICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6SW5zdGFsbFNlcnZpY2VXb3JrZXIgeyBkYXRhLCB1
c2VyQWdlbnQgfSk7CiB9CiAKK3ZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp1
cGRhdGVBcHBCb3VuZFZhbHVlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIGxhc3ROYXZpZ2F0
aW9uV2FzQXBwQm91bmQpCit7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb246OlVwZGF0ZUFwcEJvdW5kVmFsdWUoc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpKTsKK30KKwogdm9pZCBXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246OmZpcmVJbnN0YWxsRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIg
c2VydmljZVdvcmtlcklkZW50aWZpZXIpCiB7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb246OkZpcmVJbnN0YWxsRXZlbnQoc2VydmljZVdvcmtlcklkZW50
aWZpZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uaAppbmRleCBlYzc3YzFkYjJlYmNiOWQ0NTA0MmE5MzU4YjRlOTEzNTVhYTllZjA5Li5kODk4
NmFhNjc4MGQ0NmExNjRmZGFlNzVhZjZlYWFjYmQyYzEyZGNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC04Niw2ICs4Niw3IEBAIHBy
aXZhdGU6CiAKICAgICAvLyBNZXNzYWdlcyB0byB0aGUgU1cgaG9zdCBXZWJQcm9jZXNzCiAgICAg
dm9pZCBpbnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdv
cmtlckNvbnRleHREYXRhJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpIGZpbmFsOworICAgIHZv
aWQgdXBkYXRlQXBwQm91bmRWYWx1ZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
V2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCkgZmluYWw7CiAgICAgdm9pZCBmaXJl
SW5zdGFsbEV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKICAg
ICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KSBmaW5hbDsKICAgICB2b2lkIHRlcm1pbmF0ZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllcikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eQppbmRleCA2YmVhNWRiNzJiOTE5MWVlZGE3OTM1OTYxNjZkM2NmNDc3ZTA1YmI4Li43YTA2MWI2
ZmVkYzFmODZiMTVkMzFlZjI5ZDZkNzI0NGNhZDgwZDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTcwMSw2ICs3MDEsNyBAQCBkZWYgaGVhZGVyc19mb3Jf
dHlwZSh0eXBlKToKICAgICAgICAgJ1dlYkNvcmU6Okluc3BlY3Rvck92ZXJsYXk6OkhpZ2hsaWdo
dCc6IFsnPFdlYkNvcmUvSW5zcGVjdG9yT3ZlcmxheS5oPiddLAogICAgICAgICAnV2ViQ29yZTo6
S2V5ZnJhbWVWYWx1ZUxpc3QnOiBbJzxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4nXSwKICAgICAg
ICAgJ1dlYkNvcmU6OktleXByZXNzQ29tbWFuZCc6IFsnPFdlYkNvcmUvS2V5Ym9hcmRFdmVudC5o
PiddLAorICAgICAgICAnV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCc6IFsnPFdl
YkNvcmUvU2VydmljZVdvcmtlckNsaWVudERhdGEuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6Okxl
Z2FjeUNETVNlc3Npb25DbGllbnQ6Ok1lZGlhS2V5RXJyb3JDb2RlJzogWyc8V2ViQ29yZS9MZWdh
Y3lDRE1TZXNzaW9uLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpMb2NrQmFja0ZvcndhcmRMaXN0
JzogWyc8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpN
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0aXZpdHknOiBbJzxXZWJDb3JlL01lc3Nh
Z2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmg+J10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5jcHAKaW5kZXggNjNjMjI2MGVmYjRiNzFlMTEwYmYxNGJmNDYyNDg5MjYyNThiYTA1NC4uMDkw
MDU0ZjAxNjA2NTlmMDZmYjU3ZTEzMjNhYWYzYmQwY2EzODE2MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMTM1LDYgKzEzNSwxMiBAQCB2b2lkIFdlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjp1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZl
cmVuY2VzUwogICAgIHNldFNob3VsZFVzZVNob3J0VGltZW91dChzdG9yZS5nZXRCb29sVmFsdWVG
b3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnNob3VsZFVzZVNlcnZpY2VXb3JrZXJTaG9ydFRpbWVv
dXRLZXkoKSkpOwogfQogCit2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp1cGRh
dGVBcHBCb3VuZFZhbHVlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBXZWJDb3JlOjpMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIGxhc3ROYXZpZ2F0aW9u
V2FzQXBwQm91bmQpCit7CisgICAgaWYgKGF1dG8qIHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSA9
IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShz
ZXJ2aWNlV29ya2VySWRlbnRpZmllcikpCisgICAgICAgIHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eS0+c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5k
ID09IFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6Olllcyk7Cit9CisKIHZvaWQg
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Omluc3RhbGxTZXJ2aWNlV29ya2VyKFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YSYmIGRhdGEsIFN0cmluZyYmIHVzZXJBZ2VudCkKIHsKICAgICBh
dXRvIHBhZ2VDb25maWd1cmF0aW9uID0gcGFnZUNvbmZpZ3VyYXRpb25XaXRoRW1wdHlDbGllbnRz
KFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNlc3Npb25JRCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5oCmluZGV4IDA0NTUyZGM3MDBiMTlkZjAwZWNjNTZjYmFhMTQ0NGYyY2U1MGFm
MWIuLjk1ZDgxODFmMjM1MzZmMGViMzJhYWRkOGI3ZTdlZDZmN2U2NjUyNjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24uaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQ29u
bmVjdGlvbi5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIk5hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlUmVzb3VyY2UuaCIK
ICNpbmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
V2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgpAQCAtODUsNiArODYsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgc2VydmljZVdvcmtlclN0YXJ0ZWQoT3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtl
ckpvYkRhdGFJZGVudGlmaWVyPiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJv
b2wgZG9lc0hhbmRsZUZldGNoKSBmaW5hbDsKICAgICB2b2lkIHNlcnZpY2VXb3JrZXJGYWlsZWRU
b1N0YXJ0KE9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4s
IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGV4Y2VwdGlv
bk1lc3NhZ2UpIGZpbmFsOwogICAgIHZvaWQgaW5zdGFsbFNlcnZpY2VXb3JrZXIoV2ViQ29yZTo6
U2VydmljZVdvcmtlckNvbnRleHREYXRhJiYsIFN0cmluZyYmIHVzZXJBZ2VudCk7CisgICAgdm9p
ZCB1cGRhdGVBcHBCb3VuZFZhbHVlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBX
ZWJDb3JlOjpMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKTsKICAgICB2b2lkIHN0YXJ0RmV0Y2go
V2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIFdlYkNvcmU6OkZldGNoT3B0aW9ucyYmLCBJUEM6OkZvcm1EYXRhUmVmZXJl
bmNlJiYsIFN0cmluZyYmIHJlZmVycmVyKTsKICAgICB2b2lkIGNhbmNlbEZldGNoKFdlYkNvcmU6
OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIpOwogICAgIHZvaWQgY29udGludWVEaWRS
ZWNlaXZlRmV0Y2hSZXNwb25zZShXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlm
aWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
aW5kZXggZmEyZmEwYjFkMmJjZmZlYTljYTYyNmY2N2U5MmZlMjA5ODRlNTI2Zi4uODRiMTY4YTA0
MGVjZGJjODUyNjU4ZjdkNmNhZDEwNTFiYzM2YWUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTI0LDYgKzI0LDcgQEAKIAogbWVzc2Fn
ZXMgLT4gV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CiAgICAg
SW5zdGFsbFNlcnZpY2VXb3JrZXIoc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YSBjb250ZXh0RGF0YSwgU3RyaW5nIHVzZXJBZ2VudCkKKyAgICBVcGRhdGVBcHBCb3VuZFZh
bHVlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBlbnVtOmJvb2wgV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCBsYXN0TmF2
aWdhdGlvbldhc0FwcEJvdW5kKQogICAgIFN0YXJ0RmV0Y2goV2ViQ29yZTo6U1dTZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OkZl
dGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0LCBzdHJ1Y3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zIG9wdGlvbnMsIElQQzo6Rm9ybURh
dGFSZWZlcmVuY2UgcmVxdWVzdEJvZHksIFN0cmluZyByZWZlcnJlcikKICAgICBDYW5jZWxGZXRj
aChXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllcikKICAg
ICBDb250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRj
aElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDMyNzMxZGNjZjQzMTBmYjEyNTgyNGQyN2VlOGU2N2Vl
MTc0MDczOTUuLjQ5YzM0MDQwMDM2ZWRhMGNlZjk1ZWYyZDg0ZWJmZGYxMGVhZDBhNzAgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAyMS0wNS0xNyAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNv
bT4KKworICAgICAgICBNYXJrIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSB3aXRoIGEgZGVmYXVs
dCBhcHAtYm91bmQgdmFsdWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyMzIwMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzc2NjQ0MTY+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW06CisKIDIwMjEtMDUt
MTggIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtl
IEFpckFsbG9jYXRlUmVnaXN0ZXJzQnlHcmFwaENvbG9yaW5nIHVzZSBsZXNzIG1lbW9yeQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dz
ZXJQcml2YWN5Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFw
cEJyb3dzZXJQcml2YWN5Lm1tCmluZGV4IDM4ZDJlZTM1MWFlMTg4YjhiZWY5NzM4MDAxNThiYzEw
NWRjMDFkYjguLmUzNTNkNDY5MzA4NDA3OWM1ODBkZjIwOGM4YzM4NjIwNmEwOTc3MDMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2Vy
UHJpdmFjeS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lu
QXBwQnJvd3NlclByaXZhY3kubW0KQEAgLTE4NzcsNCArMTg3Nyw5NiBAQCBURVNUKEluQXBwQnJv
d3NlclByaXZhY3ksIFdlYlByb2Nlc3NQbHVnaW5UZXN0Tm9uQXBwQm91bmQpCiB7CiAgICAgcnVu
V2ViUHJvY2Vzc1BsdWdJblRlc3QoSXNBcHBCb3VuZDo6Tm8pOwogfQorI2lmIFdLX0hBVkVfQ19T
UEkKKworc3RhdGljIGNvbnN0IGNoYXIqIGRlZmF1bHRWYWx1ZUZldGNoQnl0ZXMgPSBSIlNXUkVT
T1VSQ0UoCis8c2NyaXB0PgorYXN5bmMgZnVuY3Rpb24gY2hlY2tBcHBCb3VuZFZhbHVlKCkKK3sK
KyAgICB2YXIgdmFsdWUgPSBhd2FpdCBpbnRlcm5hbHMubGFzdE5hdmlnYXRpb25XYXNBcHBCb3Vu
ZCgpOworICAgIGFsZXJ0KCdBcHAtYm91bmQgdmFsdWUgJyArIHZhbHVlKTsKK30KK2NoZWNrQXBw
Qm91bmRWYWx1ZSgpOworPC9zY3JpcHQ+CispU1dSRVNPVVJDRSI7CisKK3N0YXRpYyB2b2lkIHJ1
bkRlZmF1bHRWYWx1ZVRlc3QoSXNBcHBCb3VuZCBzdGFydHNBcHBCb3VuZCkKK3sKKyAgICBzdGF0
aWMgYm9vbCBpc0RvbmUgPSBmYWxzZTsKKworICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1
bHREYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vi
c2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0
aW9uSGFuZGxlcjpeKCkgeworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKworICAgIGF1dG8ganMgPSAic2VsZi5h
ZGRFdmVudExpc3RlbmVyKCdpbnN0YWxsJywgKGV2ZW50KSA9PiB7IGV2ZW50LndhaXRVbnRpbCgg
Y2FjaGVzLm9wZW4oJ3YxJykudGhlbigoY2FjaGUpID0+IHsgcmV0dXJuIGNhY2hlLmFkZEFsbChb
Jy9jYWNoZWQuaHRtbCddKTsgfSkgKTsgfSk7IgorICAgICAgICAic2VsZi5hZGRFdmVudExpc3Rl
bmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChjYWNoZXMubWF0Y2go
Jy9jYWNoZWQuaHRtbCcpKSB9KTsiOworCisgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBz
ZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgIHsgIi9z
dy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwg
anMgfSB9LAorICAgICAgICB7ICIvY2FjaGVkLmh0bWwiLCB7IGRlZmF1bHRWYWx1ZUZldGNoQnl0
ZXMgfSB9LAorICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRw
cyk7CisKKyAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NO
YW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rp
bmc6WUVTXTsKKyAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdL
KFRlc3RXZWJLaXRBUEk6OlV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3Qo
IkludGVybmFsc0luamVjdGVkQnVuZGxlVGVzdCIpKTsKKyAgICBjb25maWd1cmF0aW9uLnByb2Nl
c3NQb29sID0gKFdLUHJvY2Vzc1Bvb2wgKiljb250ZXh0LmdldCgpOworICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgMzAwLCAzMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbiBhZGRUb1dpbmRv
dzpZRVNdKTsKKworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRl
bGVnYXRlIG5ld10pOworICAgIFtkZWxlZ2F0ZSBzZXREaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2U6XihXS1dlYlZpZXcgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hh
bGxlbmdlLCB2b2lkICheY2FsbGJhY2spKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3Np
dGlvbiwgTlNVUkxDcmVkZW50aWFsICopKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShjaGFs
bGVuZ2UucHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kLCBOU1VSTEF1dGhlbnRp
Y2F0aW9uTWV0aG9kU2VydmVyVHJ1c3QpOworICAgICAgICBjYWxsYmFjayhOU1VSTFNlc3Npb25B
dXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgW05TVVJMQ3JlZGVudGlhbCBjcmVkZW50aWFsRm9y
VHJ1c3Q6Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUcnVzdF0pOworICAgIH1dOwor
ICAgIHdlYlZpZXcuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisK
KyAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBzZXJ2ZXIucmVxdWVzdCgpOworICAgIGlmIChz
dGFydHNBcHBCb3VuZCA9PSBJc0FwcEJvdW5kOjpObykgeworICAgICAgICBOU011dGFibGVVUkxS
ZXF1ZXN0ICpub25BcHBCb3VuZFJlcXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
Imh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlci5wb3J0KCldXV07CisgICAgICAgIEFQUF9C
T1VORF9SRVFVRVNUX0FERElUSU9OUworICAgICAgICByZXF1ZXN0ID0gbm9uQXBwQm91bmRSZXF1
ZXN0OworICAgIH0KKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworICAgIEVY
UEVDVF9XS19TVFJFUShbd2ViVmlldyBfdGVzdF93YWl0Rm9yQWxlcnRdLCAic3VjY2Vzc2Z1bGx5
IHJlZ2lzdGVyZWQiKTsKKworICAgIGJvb2wgZXhwZWN0ZWRBcHBCb3VuZFZhbHVlID0gc3RhcnRz
QXBwQm91bmQgPT0gSXNBcHBCb3VuZDo6WWVzOworICAgIFt3ZWJWaWV3IF9hcHBCb3VuZE5hdmln
YXRpb25EYXRhOiBeKHN0cnVjdCBXS0FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhIGRhdGEp
IHsKKyAgICAgICAgRVhQRUNUX0VRKGRhdGEuaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGlu
ZywgZXhwZWN0ZWRBcHBCb3VuZFZhbHVlKTsKKyAgICAgICAgRVhQRUNUX0VRKGRhdGEuaGFzTG9h
ZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZywgIWV4cGVjdGVkQXBwQm91bmRWYWx1ZSk7Cisg
ICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmlzRG9uZSk7CisKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfY2xl
YXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhOl57CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAg
fV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisKKyAgICAvLyBO
b3cgbG9hZCB0aGUgb3Bwb3NpdGUgcmVxdWVzdC4gV2UgZXhwZWN0IHRoZSBTZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkgdG8gYmUgbWFya2VkIGFwcC1ib3VuZCBlaXRoZXIgd2F5LgorICAgIE5TVVJM
UmVxdWVzdCAqcmVxdWVzdDIgPSBzZXJ2ZXIucmVxdWVzdCgpOworICAgIGlmIChzdGFydHNBcHBC
b3VuZCA9PSBJc0FwcEJvdW5kOjpZZXMpIHsKKyAgICAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAq
bm9uQXBwQm91bmRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6
W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwczov
LzEyNy4wLjAuMTolZC8iLCBzZXJ2ZXIucG9ydCgpXV1dOworICAgICAgICBBUFBfQk9VTkRfUkVR
VUVTVF9BRERJVElPTlMKKyAgICAgICAgcmVxdWVzdDIgPSBub25BcHBCb3VuZFJlcXVlc3Q7Cisg
ICAgfQorICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3QyXTsKKyAgICBFWFBFQ1RfV0tf
U1RSRVEoW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckFsZXJ0XSwgIkFwcC1ib3VuZCB2YWx1ZSB0cnVl
Iik7Cit9CisKK1RFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmRSZXF1ZXN0RGVmYXVs
dFZhbHVlKQoreworICAgIHJ1bkRlZmF1bHRWYWx1ZVRlc3QoSXNBcHBCb3VuZDo6WWVzKTsKK30K
KworVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZFJlcXVlc3REZWZhdWx0VmFs
dWUpCit7CisgICAgcnVuRGVmYXVsdFZhbHVlVGVzdChJc0FwcEJvdW5kOjpObyk7Cit9CisKKyNl
bmRpZgorCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429090</attachid>
            <date>2021-05-19 13:15:34 -0700</date>
            <delta_ts>2021-05-20 15:55:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223201-20210519131533.patch</filename>
            <type>text/plain</type>
            <size>44364</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NzE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzAwYWRlYzQ0YmEzZjkx
OGVhNjJkYzg2MTcxMTYzMzI3YzVmNDhhMS4uY2UxMzZmMzg0MWU1NDUzOWU5NjVkMDI4MTA2NzU4
Yjk2NzBiOTdhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDIxLTA1LTE5ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIE1hcmsgU2Vy
dmljZVdvcmtlclRocmVhZFByb3h5IHdpdGggYSBkZWZhdWx0IGFwcC1ib3VuZCB2YWx1ZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzMjAxCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS83NzY2NDQxNj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTZXJ2aWNlIHdvcmtlciBsb2FkcyBoYXZlIHRoZWlyIG93
biBkb2N1bWVudCBsb2FkZXIsIHNvIHRoZXkgZG9uJ3QKKyAgICAgICAgYWx3YXlzIGdldCBwcm9w
ZXJseSBtYXJrZWQgYXMgYXBwLWJvdW5kIGJhc2VkIG9uIHRoZSBtYWluIGZyYW1lCisgICAgICAg
IG5hdmlnYXRpb24uIFByaW9yIGZpeGVzIGhhbmRsZWQgc29tZSBmZXRjaCBldmVudHMsIHN5bnRo
ZXRpYworICAgICAgICByZXNwb25zZXMsIGFuZCBzb2Z0IHVwZGF0ZXMuIEJ1dCB3ZSBuZWVkIHRv
IHNldCBhIGRlZmF1bHQgdmFsdWUgd2hlbgorICAgICAgICB3ZSBpbnN0YWxsIHRoZSBzZXJ2aWNl
IHdvcmtlci4KKworICAgICAgICBXZSBoYWQgdG8gcGljayBhIGJlc3QtZWZmb3J0IGhldXJpc3Rp
YyB0byBkbyB0aGlzLiBJZiBhbnkgY2xpZW50IGZvcgorICAgICAgICB0aGUgd29ya2VyIGlzIGFw
cC1ib3VuZCwgdGhlbiBhbGwgbG9hZHMgd2l0aCB0aGF0IHdvcmtlciB3aWxsIGJlCisgICAgICAg
IG1hcmtlZCBhcHAtYm91bmQuCisKKyAgICAgICAgKiB0ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRl
cm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckludGVybmFsczo6bGFz
dE5hdmlnYXRpb25XYXNBcHBCb3VuZCk6CisgICAgICAgICogdGVzdGluZy9TZXJ2aWNlV29ya2Vy
SW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlk
bDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclJ1bkxvb3AuaDoKKyAgICAgICAgVG8gdGVzdCB0
aGlzLCBJIGFkZGVkIGEgbmV3IEFQSSB0byBTZXJ2aWNlV29ya2VySW50ZXJuYWxzIHRvIGdldCB0
aGUKKyAgICAgICAgd29ya2VyJ3MgYXBwIGJvdW5kIHZhbHVlLgorCisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE6OmZyb20pOgorICAgICAgICAqIHdvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6
U2VydmljZVdvcmtlckNsaWVudERhdGE6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZGVjb2RlKToKKyAgICAgICAgU3RvcmUgdGhlIG1h
aW4gbmF2aWdhdGlvbiBhcHAtYm91bmQgdmFsdWUgd2hlbiB3ZSByZWdpc3RlciBhIGNsaWVudC4K
KworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjppc29sYXRlZENv
cHkgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6
ZGVjb2RlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFBy
b3h5OjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclRocmVhZFByb3h5OjpsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKToKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaDoKKyAg
ICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzKToK
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNXU2VydmVyOjp1cGRhdGVXb3JrZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1dT
ZXJ2ZXI6OmNsaWVudElzQXBwQm91bmRGb3JSZWdpc3RyYWJsZURvbWFpbik6CisgICAgICAgIEJl
c3QtZWZmb3J0IGhldXJpc3RpYyB0byBtYXJrIGEgbG9hZCBhcyBhcHAgYm91bmQgaWYgYW55IGNs
aWVudCBmb3IKKyAgICAgICAgdGhhdCBvcmlnaW4gd2FzIHJlZ2lzdGVyZWQgYXMgYXBwLWJvdW5k
LgorCisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6dXBkYXRlQXBwQm91bmRWYWx1ZUZvcldv
cmtlcnMpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnJlZ2lzdGVyU2VydmljZVdvcmtl
ckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VX
b3JrZXJDbGllbnQpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIu
aDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3Jr
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpjb250ZXh0RGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6dXBkYXRlQXBwQm91bmRWYWx1ZSk6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oOgorCiAyMDIx
LTA1LTE4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIFdU
Rjo6TG9ja2VyIGZvciBsb2NraW5nIEJhc2VBdWRpb0NvbnRleHQncyBncmFwaCBsb2NrCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDgxNjE1YmNmNDY0NjE5MWYxYjMwZjY0YzdkN2JlNmQxYTU1MmQxNDkuLjdiMWRiMWZk
YjFlZTMwZTZkYWE5MjVkODM4YzE5OTM2NjI1MzA5YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMg
QEAKKzIwMjEtMDUtMTkgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+
CisKKyAgICAgICAgTWFyayBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgd2l0aCBhIGRlZmF1bHQg
YXBwLWJvdW5kIHZhbHVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjMyMDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc3NjY0NDE2PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OmNvbnRyb2xDbGllbnQpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp1
cGRhdGVBcHBCb3VuZFZhbHVlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAoaGVhZGVyc19mb3JfdHlwZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnVwZGF0ZUFw
cEJvdW5kVmFsdWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjoKKwogMjAyMS0wNS0xOCAgVGltIEhv
cnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBhbGxvd3NDb250ZW50
SmF2YVNjcmlwdCBBUEkgbm90IGFwcGxpZWQgZnJvbSBkZWZhdWx0V2VicGFnZVByZWZlcmVuY2Vz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5h
bHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNw
cAppbmRleCAzNWY0YTc4YWQ1ZTkwZWM2ZmE1NmI3Mjc3NGY1YThlZTg3ZWEyZjBiLi43OGVmYmQy
ZTI3YmY1YzQ0NmJlZmUxYTE0OTcxOWJiODRjZmMxNjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5jcHAKQEAgLTEwOCw2ICsxMDgsMjMg
QEAgaW50IFNlcnZpY2VXb3JrZXJJbnRlcm5hbHM6OnByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QK
ICAgICByZXR1cm4gZ2V0Q3VycmVudFByb2Nlc3NJRCgpOwogfQogCit2b2lkIFNlcnZpY2VXb3Jr
ZXJJbnRlcm5hbHM6Omxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoUmVmPERlZmVycmVkUHJvbWlz
ZT4mJiBwcm9taXNlKQoreworICAgIEFTU0VSVCghbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5k
UHJvbWlzZSk7CisgICAgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kUHJvbWlzZSA9IFdURk1v
dmUocHJvbWlzZSk7CisgICAgY2FsbE9uTWFpblRocmVhZChbaWRlbnRpZmllciA9IG1faWRlbnRp
Zmllciwgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAg
aWYgKGF1dG8qIHByb3h5ID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkud29ya2VyQnlJ
RChpZGVudGlmaWVyKSkgeworICAgICAgICAgICAgcHJveHktPnRocmVhZCgpLnJ1bkxvb3AoKS5w
b3N0VGFza0Zvck1vZGUoW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGFwcEJvdW5kID0g
cHJveHktPmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoKV0oYXV0byYpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVGhpcy0+bV9sYXN0TmF2aWdhdGlvbldhc0FwcEJv
dW5kUHJvbWlzZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAg
ICAgd2Vha1RoaXMtPm1fbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZFByb21pc2UtPnJlc29sdmU8
SURMQm9vbGVhbj4oYXBwQm91bmQpOworICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5tX2xhc3RO
YXZpZ2F0aW9uV2FzQXBwQm91bmRQcm9taXNlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIH0sIFdv
cmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOworICAgICAgICB9CisgICAgfSk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvU2VydmljZVdvcmtlckludGVybmFscy5oCmluZGV4IDZiYWJlYjI4MTc4M2ZmOWNjMWY5ZDJi
OTkzMTM1MWZiNGU4OGNjNzcuLmU2ODc1YmY5NzM0ZDIxYTc0MTc5MWE5OTJjNWM2MzZkN2Y1YzI4
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVy
bmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFs
cy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCiAjaW5j
bHVkZSAiSURMVHlwZXMuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2lu
Y2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KIApAQCAtMzksNyArNDAsNyBAQCBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Owog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiBjbGFzcyBET01Qcm9taXNlRGVmZXJyZWQ7CiAK
LWNsYXNzIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIFNlcnZpY2VXb3JrZXJJbnRlcm5hbHMg
OiBwdWJsaWMgUmVmQ291bnRlZDxTZXJ2aWNlV29ya2VySW50ZXJuYWxzPiB7CitjbGFzcyBXRUJD
T1JFX1RFU1RTVVBQT1JUX0VYUE9SVCBTZXJ2aWNlV29ya2VySW50ZXJuYWxzIDogcHVibGljIFJl
ZkNvdW50ZWQ8U2VydmljZVdvcmtlckludGVybmFscz4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxT
ZXJ2aWNlV29ya2VySW50ZXJuYWxzPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTZXJ2aWNl
V29ya2VySW50ZXJuYWxzPiBjcmVhdGUoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmll
cikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJ2aWNlV29ya2VySW50ZXJuYWxzIHsgaWRlbnRp
ZmllciB9KTsgfQogICAgIH5TZXJ2aWNlV29ya2VySW50ZXJuYWxzKCk7CkBAIC01NywxMCArNTgs
MTMgQEAgcHVibGljOgogCiAgICAgaW50IHByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3Q7CiAKKyAg
ICB2b2lkIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoUmVmPERlZmVycmVkUHJvbWlzZT4mJik7
CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgU2VydmljZVdvcmtlckludGVybmFscyhTZXJ2aWNl
V29ya2VySWRlbnRpZmllcik7CiAKICAgICBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBtX2lkZW50
aWZpZXI7CisgICAgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4gbV9sYXN0TmF2aWdhdGlvbldhc0Fw
cEJvdW5kUHJvbWlzZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRsCmluZGV4IDBiODg4
NDRiNDk0Njk4OTA4MDNkN2RlYTQyZDYzZTgwZmFhMWZkZTMuLjFiMjZiN2Q1MDI4ODIxZTIyNDJl
MWQzYzI3ZWE4NjAwZjRmMmMxMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
U2VydmljZVdvcmtlckludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9T
ZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlkbApAQCAtNDAsNCArNDAsNiBAQAogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBib29sZWFuIGlzVGhyb3R0bGVhYmxlOwogCiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIGxvbmcgcHJvY2Vzc0lkZW50aWZpZXI7CisKKyAgICBQcm9taXNlPGJvb2xlYW4+IGxhc3RO
YXZpZ2F0aW9uV2FzQXBwQm91bmQoKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclJ1bkxvb3AuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVu
TG9vcC5oCmluZGV4IGVlMjZiMzdmMjk5Y2E2OTljMDRjMGIxYzc0NDE1MDQ4MDg3MTU3ZjMuLjAw
ZjE3MjA0MTlkOWU2ZTYwOTQ3MTA3YmVkZDVhZDM4YWJjYmQzM2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyUnVuTG9vcC5oCkBAIC02MCwxMiArNjAsMTIgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAgICAgICAgIHZvaWQgcG9zdFRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
ayYmKTsKICAgICAgICAgdm9pZCBwb3N0VGFza0FuZFRlcm1pbmF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrJiYpOwotICAgICAgICB2b2lkIHBvc3RUYXNrRm9yTW9kZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrJiYsIGNvbnN0IFN0cmluZyYgbW9kZSk7CisgICAgICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcG9zdFRhc2tGb3JNb2RlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2smJiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKICAgICAgICAgdm9pZCBwb3N0RGVidWdnZXJUYXNr
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJik7CiAKICAgICAgICAgdW5zaWduZWQgbG9u
ZyBjcmVhdGVVbmlxdWVJZCgpIHsgcmV0dXJuICsrbV91bmlxdWVJZDsgfQogCi0gICAgICAgIHN0
YXRpYyBTdHJpbmcgZGVmYXVsdE1vZGUoKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFN0cmluZyBkZWZhdWx0TW9kZSgpOwogICAgICAgICBjbGFzcyBUYXNrIHsKICAgICAgICAgICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFRhc2spOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAg
ICAgICAgcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5jcHAKaW5kZXggNTExNjdlN2VjNzQ5MWQ0NWQ5
NGYxNTE1ZTUxYzkzNjFhMGU2MmY1Yy4uYjYwNzRlMTBmNTc3YTA0MmE0YTEzMzc2YjZiMTFjYTFh
MmFkN2QyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDbGllbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNs
dWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkRvY3Vt
ZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJTV0NsaWVudENvbm5l
Y3Rpb24uaCIKIApAQCAtNTcsNyArNTgsNyBAQCBzdGF0aWMgU2VydmljZVdvcmtlckNsaWVudEZy
YW1lVHlwZSB0b1NlcnZpY2VXb3JrZXJDbGllbnRGcmFtZVR5cGUoU2NyaXB0RXhlY3V0aQogCiBT
ZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6aXNvbGF0ZWRD
b3B5KCkgY29uc3QKIHsKLSAgICByZXR1cm4geyBpZGVudGlmaWVyLCB0eXBlLCBmcmFtZVR5cGUs
IHVybC5pc29sYXRlZENvcHkoKSB9OworICAgIHJldHVybiB7IGlkZW50aWZpZXIsIHR5cGUsIGZy
YW1lVHlwZSwgdXJsLmlzb2xhdGVkQ29weSgpLCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIH07
CiB9CiAKIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjpm
cm9tKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFNXQ2xpZW50Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbikKQEAgLTY1LDExICs2NiwxNCBAQCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSBT
ZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZnJvbShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjbwog
ICAgIGJvb2wgaXNEb2N1bWVudCA9IGlzPERvY3VtZW50Pihjb250ZXh0KTsKICAgICBSRUxFQVNF
X0FTU0VSVChpc0RvY3VtZW50KTsgLy8gV2UgZG8gbm90IHN1cHBvcnQgZGVkaWNhdGVkIHdvcmtl
cnMgYXMgY2xpZW50cyB5ZXQuCiAKKyAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3Vt
ZW50Pihjb250ZXh0KTsKKyAgICBhdXRvIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgPSBkb2N1
bWVudC5sb2FkZXIoKSAmJiBkb2N1bWVudC5sb2FkZXIoKS0+bGFzdE5hdmlnYXRpb25XYXNBcHBC
b3VuZCgpID8gTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDo6WWVzIDogTGFzdE5hdmlnYXRpb25X
YXNBcHBCb3VuZDo6Tm87CisKICAgICByZXR1cm4gewotICAgICAgICB7IGNvbm5lY3Rpb24uc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSwgZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLmlk
ZW50aWZpZXIoKSB9LAorICAgICAgICB7IGNvbm5lY3Rpb24uc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIoKSwgZG9jdW1lbnQuaWRlbnRpZmllcigpIH0sCiAgICAgICAgIGlzRG9jdW1lbnQgPyBT
ZXJ2aWNlV29ya2VyQ2xpZW50VHlwZTo6V2luZG93IDogU2VydmljZVdvcmtlckNsaWVudFR5cGU6
OldvcmtlciwKICAgICAgICAgdG9TZXJ2aWNlV29ya2VyQ2xpZW50RnJhbWVUeXBlKGNvbnRleHQp
LAotICAgICAgICBjb250ZXh0LnVybCgpCisgICAgICAgIGNvbnRleHQudXJsKCksIGxhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQKICAgICB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oCmluZGV4IDA0NmUz
YWMyZjU1YjllMDc2YWRmMTllYzczY2ZhYTYyMjdkMGI4YTAuLjA5MDlhOTUzODE2NGQ5ZmQ0MGI0
YmU1M2Y0Nzc5ZTA3OTNmNjU5ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oCkBAIC0zNywxMSArMzcsMTQg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU1dDbGllbnRDb25uZWN0aW9uOwogY2xhc3Mg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAorZW51bSBjbGFzcyBMYXN0TmF2aWdhdGlvbldhc0Fw
cEJvdW5kIDogYm9vbCB7IE5vLCBZZXMgfTsKKwogc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnRE
YXRhIHsKICAgICBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBpZGVudGlmaWVyOwogICAg
IFNlcnZpY2VXb3JrZXJDbGllbnRUeXBlIHR5cGU7CiAgICAgU2VydmljZVdvcmtlckNsaWVudEZy
YW1lVHlwZSBmcmFtZVR5cGU7CiAgICAgVVJMIHVybDsKKyAgICBMYXN0TmF2aWdhdGlvbldhc0Fw
cEJvdW5kIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7CiAKICAgICBTZXJ2aWNlV29ya2VyQ2xp
ZW50RGF0YSBpc29sYXRlZENvcHkoKSBjb25zdDsKIApAQCAtNTQsNyArNTcsNyBAQCBzdHJ1Y3Qg
U2VydmljZVdvcmtlckNsaWVudERhdGEgewogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQg
U2VydmljZVdvcmtlckNsaWVudERhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
ewotICAgIGVuY29kZXIgPDwgaWRlbnRpZmllciA8PCB0eXBlIDw8IGZyYW1lVHlwZSA8PCB1cmw7
CisgICAgZW5jb2RlciA8PCBpZGVudGlmaWVyIDw8IHR5cGUgPDwgZnJhbWVUeXBlIDw8IHVybCA8
PCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PgpAQCAtODAsNyArODMsMTIgQEAgT3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IFNl
cnZpY2VXb3JrZXJDbGllbnREYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2QKICAgICBpZiAoIXVy
bCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7IHsgV1RGTW92
ZSgqaWRlbnRpZmllciksIFdURk1vdmUoKnR5cGUpLCBXVEZNb3ZlKCpmcmFtZVR5cGUpLCBXVEZN
b3ZlKCp1cmwpIH0gfTsKKyAgICBPcHRpb25hbDxMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kPiBs
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOworICAgIGRlY29kZXIgPj4gbGFzdE5hdmlnYXRpb25X
YXNBcHBCb3VuZDsKKyAgICBpZiAoIWxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7IFdURk1vdmUoKmlkZW50aWZp
ZXIpLCBXVEZNb3ZlKCp0eXBlKSwgV1RGTW92ZSgqZnJhbWVUeXBlKSwgV1RGTW92ZSgqdXJsKSwg
V1RGTW92ZSgqbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCkgfSB9OwogfQogCiB1c2luZyBTZXJ2
aWNlV29ya2VyQ2xpZW50c01hdGNoQWxsQ2FsbGJhY2sgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmVjdG9yPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmKT47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERh
dGEuY3BwCmluZGV4IDE2ZGYyZDgyNDlmODdmNmFlNDM3M2UyNjU2MjNjM2Q4YTk5YjVlZGYuLmI1
YWRkYjMxZGFiY2JhODBiOTRkMDAzNGVhY2YzNjc5NGYxM2FiNGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERh
dGEuY3BwCkBAIC00NCw2ICs0NCw3IEBAIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGE6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAgICAgIHNjcmlwdFVS
TC5pc29sYXRlZENvcHkoKSwKICAgICAgICAgd29ya2VyVHlwZSwKICAgICAgICAgbG9hZGVkRnJv
bURpc2ssCisgICAgICAgIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQsCiAgICAgICAgIGNyb3Nz
VGhyZWFkQ29weShzY3JpcHRSZXNvdXJjZU1hcCkKICAgICB9OwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5o
CmluZGV4IDE0YWJjYWQ2NGM5OWExYzg3MTM2YmJjMGY2ZDljYzU2MWVmMjgxMjAuLmVmZGZhN2M1
MDJlODA4NDMwOTcyNWI2NGM4NzAzM2Y2ZWQwMzZhY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgKQEAg
LTM5LDYgKzM5LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitlbnVtIGNsYXNzIExhc3RO
YXZpZ2F0aW9uV2FzQXBwQm91bmQgOiBib29sOworCiBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRl
eHREYXRhIHsKICAgICBzdHJ1Y3QgSW1wb3J0ZWRTY3JpcHQgewogICAgICAgICBTY3JpcHRCdWZm
ZXIgc2NyaXB0OwpAQCAtODcsNiArODksNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHRE
YXRhIHsKICAgICBVUkwgc2NyaXB0VVJMOwogICAgIFdvcmtlclR5cGUgd29ya2VyVHlwZTsKICAg
ICBib29sIGxvYWRlZEZyb21EaXNrOworICAgIE9wdGlvbmFsPExhc3ROYXZpZ2F0aW9uV2FzQXBw
Qm91bmQ+IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7CiAgICAgSGFzaE1hcDxVUkwsIEltcG9y
dGVkU2NyaXB0PiBzY3JpcHRSZXNvdXJjZU1hcDsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKQEAgLTk5LDcgKzEwMiw3IEBAIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBqb2JEYXRhSWRlbnRp
ZmllciA8PCByZWdpc3RyYXRpb24gPDwgc2VydmljZVdvcmtlcklkZW50aWZpZXIgPDwgc2NyaXB0
IDw8IGNvbnRlbnRTZWN1cml0eVBvbGljeSA8PCByZWZlcnJlclBvbGljeQotICAgICAgICA8PCBz
Y3JpcHRVUkwgPDwgd29ya2VyVHlwZSA8PCBsb2FkZWRGcm9tRGlzayA8PCBzY3JpcHRSZXNvdXJj
ZU1hcCA8PCBjZXJ0aWZpY2F0ZUluZm87CisgICAgICAgIDw8IHNjcmlwdFVSTCA8PCB3b3JrZXJU
eXBlIDw8IGxvYWRlZEZyb21EaXNrIDw8IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgPDwgc2Ny
aXB0UmVzb3VyY2VNYXAgPDwgY2VydGlmaWNhdGVJbmZvOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPgpAQCAtMTQ0LDYgKzE0NywxMCBAQCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGE+IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlYwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUobG9hZGVkRnJvbURpc2spKQogICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwogCisgICAgT3B0aW9uYWw8TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZD4gbGFz
dE5hdmlnYXRpb25XYXNBcHBCb3VuZDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGxhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCiAgICAg
SGFzaE1hcDxVUkwsIEltcG9ydGVkU2NyaXB0PiBzY3JpcHRSZXNvdXJjZU1hcDsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHNjcmlwdFJlc291cmNlTWFwKSkKICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKQEAgLTE2NCw2ICsxNzEsNyBAQCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGE+IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlYwogICAg
ICAgICBXVEZNb3ZlKHNjcmlwdFVSTCksCiAgICAgICAgIHdvcmtlclR5cGUsCiAgICAgICAgIGxv
YWRlZEZyb21EaXNrLAorICAgICAgICBXVEZNb3ZlKGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQp
LAogICAgICAgICBXVEZNb3ZlKHNjcmlwdFJlc291cmNlTWFwKQogICAgIH19OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
clRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKaW5kZXggODBkYzAzN2RiNzczZjY1YzVjY2Qz
M2JmYjQ2MjMwZDdkMDI0ZWM2My4uZjc3M2FjZDM1Y2IwMjVmNjZjNzZjNjNkYmExNTgyMjBhMWY4
MzYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCkBAIC0xMTYsNiAr
MTE2LDkgQEAgU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHkoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmkKICAgICBtX3JlbW90ZURlYnVnZ2FibGUt
PnNldFJlbW90ZURlYnVnZ2luZ0FsbG93ZWQodHJ1ZSk7CiAgICAgbV9yZW1vdGVEZWJ1Z2dhYmxl
LT5pbml0KCk7CiAjZW5kaWYKKworICAgIGlmIChkYXRhLmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91
bmQpCisgICAgICAgIHNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoZGF0YS5sYXN0TmF2aWdh
dGlvbldhc0FwcEJvdW5kID09IExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6Olllcyk7CiB9CiAK
IFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6flNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSgpCkBA
IC0xMzAsNiArMTMzLDExIEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpzZXRMYXN0
TmF2aWdhdGlvbldhc0FwcEJvdW5kKGJvb2wgd2FzQXBwQm91bmQpCiAgICAgICAgIG1fZG9jdW1l
bnQtPmxvYWRlcigpLT5zZXRMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKHdhc0FwcEJvdW5kKTsK
IH0KIAorYm9vbCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6Omxhc3ROYXZpZ2F0aW9uV2FzQXBw
Qm91bmQoKQoreworICAgIHJldHVybiBtX2RvY3VtZW50LT5sb2FkZXIoKSA/IG1fZG9jdW1lbnQt
PmxvYWRlcigpLT5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKCkgOiBmYWxzZTsKK30KKwogYm9v
bCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2ssIGNvbnN0
IFN0cmluZyYgbW9kZSkKIHsKICAgICBpZiAobV9pc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlclRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaAppbmRleCBiZmM4N2YyNDkwNTQ3NjY5Zjli
MDQxZjhhMjcxZDcyN2NlZDJmZTg5Li4xZmQ1ZGFiMzYxMTJhNjYxZTYxMmQ4YjRiMTY4NWVjMWQy
ZmMxOGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaApAQCAtODIsNiArODIs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRTYXZlU2NyaXB0c1RvRGlzayhTY3JpcHRCdWZmZXIm
JiwgSGFzaE1hcDxVUkwsIFNjcmlwdEJ1ZmZlcj4mJiBpbXBvcnRlZFNjcmlwdHMpOwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKGJvb2wpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCgpOwogCiBw
cml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShQYWdl
Q29uZmlndXJhdGlvbiYmLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiwgU3RyaW5nJiYgdXNl
ckFnZW50LCBDYWNoZVN0b3JhZ2VQcm92aWRlciYsIFN0b3JhZ2VCbG9ja2luZ1BvbGljeSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJh
dGlvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
UmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCmluZGV4IGVkZjhlYTJkMDQyYmRjODkwYWQyZWEzZjk3
YzYyODdlZDFhOWU5Y2UuLjU2NjlkMzBmOGY4NzcxN2FkMjJjYjNlOTZhNDI2N2YxMDEwYzQ0MjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0
cmF0aW9uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCkBAIC01NzMsNyArNTczLDcgQEAgU3RyaW5n
IFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzKCkKICAgICAgICAgYXV0byByZWdp
c3RyYXRpb25JZGVudGlmaWVyID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI6
OmdlbmVyYXRlKCk7CiAgICAgICAgIGF1dG8gc2VydmljZVdvcmtlckRhdGEgPSBTZXJ2aWNlV29y
a2VyRGF0YSB7IHdvcmtlcklkZW50aWZpZXIsIHNjcmlwdFVSTCwgU2VydmljZVdvcmtlclN0YXRl
OjpBY3RpdmF0ZWQsICp3b3JrZXJUeXBlLCByZWdpc3RyYXRpb25JZGVudGlmaWVyIH07CiAgICAg
ICAgIGF1dG8gcmVnaXN0cmF0aW9uID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEgeyBX
VEZNb3ZlKCprZXkpLCByZWdpc3RyYXRpb25JZGVudGlmaWVyLCBXVEZNb3ZlKHNjb3BlVVJMKSwg
KnVwZGF0ZVZpYUNhY2hlLCBsYXN0VXBkYXRlQ2hlY2tUaW1lLCBXVEY6Om51bGxvcHQsIFdURjo6
bnVsbG9wdCwgV1RGTW92ZShzZXJ2aWNlV29ya2VyRGF0YSkgfTsKLSAgICAgICAgYXV0byBjb250
ZXh0RGF0YSA9IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7IFdURjo6bnVsbG9wdCwgV1RGTW92
ZShyZWdpc3RyYXRpb24pLCB3b3JrZXJJZGVudGlmaWVyLCBXVEZNb3ZlKHNjcmlwdCksIFdURk1v
dmUoKmNlcnRpZmljYXRlSW5mbyksIFdURk1vdmUoKmNvbnRlbnRTZWN1cml0eVBvbGljeSksIFdU
Rk1vdmUocmVmZXJyZXJQb2xpY3kpLCBXVEZNb3ZlKHNjcmlwdFVSTCksICp3b3JrZXJUeXBlLCB0
cnVlLCBXVEZNb3ZlKHNjcmlwdFJlc291cmNlTWFwKSB9OworICAgICAgICBhdXRvIGNvbnRleHRE
YXRhID0gU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHJl
Z2lzdHJhdGlvbiksIHdvcmtlcklkZW50aWZpZXIsIFdURk1vdmUoc2NyaXB0KSwgV1RGTW92ZSgq
Y2VydGlmaWNhdGVJbmZvKSwgV1RGTW92ZSgqY29udGVudFNlY3VyaXR5UG9saWN5KSwgV1RGTW92
ZShyZWZlcnJlclBvbGljeSksIFdURk1vdmUoc2NyaXB0VVJMKSwgKndvcmtlclR5cGUsIHRydWUs
IExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6Ok5vLCBXVEZNb3ZlKHNjcmlwdFJlc291cmNlTWFw
KSB9OwogCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgY29udGV4dERhdGEgPSBjb250ZXh0RGF0YS5pc29sYXRlZENvcHkoKV0oKSBtdXRh
YmxlIHsKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmFkZFJlZ2lzdHJhdGlvblRvU3RvcmUo
V1RGTW92ZShjb250ZXh0RGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCAxMzkyZjQ0MTRkOWFmZWRmNDYwMDI0Zjk3
OGFiNmNkYjQxMTQwYjBlLi5jMTM5N2U5OGI5MzAzYTI5MTdjMDQ5MWE1NjJiY2I4NGNlYTJlNjU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyLmNwcApAQCAtNjQ4LDcgKzY0OCwyNCBAQCB2b2lkIFNXU2VydmVyOjpyZW1vdmVDbGllbnRT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNlcgogCiB2
b2lkIFNXU2VydmVyOjp1cGRhdGVXb3JrZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVu
dGlmaWVyJiBqb2JEYXRhSWRlbnRpZmllciwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJh
dGlvbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgc2NyaXB0LCBjb25zdCBD
ZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgY29uc3QgQ29udGVudFNlY3VyaXR5UG9s
aWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnN0IFN0cmluZyYg
cmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUgdHlwZSwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYgc2NyaXB0UmVzb3VyY2VNYXApCiB7Ci0g
ICAgdHJ5SW5zdGFsbENvbnRleHREYXRhKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7IGpvYkRh
dGFJZGVudGlmaWVyLCByZWdpc3RyYXRpb24uZGF0YSgpLCBTZXJ2aWNlV29ya2VySWRlbnRpZmll
cjo6Z2VuZXJhdGUoKSwgc2NyaXB0LCBjZXJ0aWZpY2F0ZUluZm8sIGNvbnRlbnRTZWN1cml0eVBv
bGljeSwgcmVmZXJyZXJQb2xpY3ksIHVybCwgdHlwZSwgZmFsc2UsIFdURk1vdmUoc2NyaXB0UmVz
b3VyY2VNYXApIH0pOworICAgIHRyeUluc3RhbGxDb250ZXh0RGF0YShTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEgeyBqb2JEYXRhSWRlbnRpZmllciwgcmVnaXN0cmF0aW9uLmRhdGEoKSwgU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXI6OmdlbmVyYXRlKCksIHNjcmlwdCwgY2VydGlmaWNhdGVJbmZvLCBj
b250ZW50U2VjdXJpdHlQb2xpY3ksIHJlZmVycmVyUG9saWN5LCB1cmwsIHR5cGUsIGZhbHNlLCBj
bGllbnRJc0FwcEJvdW5kRm9yUmVnaXN0cmFibGVEb21haW4oUmVnaXN0cmFibGVEb21haW4odXJs
KSksIFdURk1vdmUoc2NyaXB0UmVzb3VyY2VNYXApIH0pOworfQorCitMYXN0TmF2aWdhdGlvbldh
c0FwcEJvdW5kIFNXU2VydmVyOjpjbGllbnRJc0FwcEJvdW5kRm9yUmVnaXN0cmFibGVEb21haW4o
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikKK3sKKyAgICBhdXRvIGNsaWVudHNCeVJl
Z2lzdHJhYmxlRG9tYWluSXRlcmF0b3IgPSBtX2NsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluLmZp
bmQoZG9tYWluKTsKKyAgICBpZiAoY2xpZW50c0J5UmVnaXN0cmFibGVEb21haW5JdGVyYXRvciA9
PSBtX2NsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluLmVuZCgpKQorICAgICAgICByZXR1cm4gTGFz
dE5hdmlnYXRpb25XYXNBcHBCb3VuZDo6Tm87CisKKyAgICBhdXRvJiBjbGllbnRzRm9yUmVnaXN0
cmFibGVEb21haW4gPSBjbGllbnRzQnlSZWdpc3RyYWJsZURvbWFpbkl0ZXJhdG9yLT52YWx1ZTsK
KyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IGNsaWVudHNGb3JSZWdpc3RyYWJsZURvbWFpbikgewor
ICAgICAgICBhdXRvIGRhdGEgPSBtX2NsaWVudHNCeUlkLmZpbmQoY2xpZW50KTsKKyAgICAgICAg
QVNTRVJUKGRhdGEgIT0gbV9jbGllbnRzQnlJZC5lbmQoKSk7CisgICAgICAgIGlmIChkYXRhLT52
YWx1ZS5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kID09IExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91
bmQ6OlllcykKKyAgICAgICAgICAgIHJldHVybiBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOjpZ
ZXM7CisgICAgfQorCisgICAgcmV0dXJuIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6Ok5vOwog
fQogCiB2b2lkIFNXU2VydmVyOjp0cnlJbnN0YWxsQ29udGV4dERhdGEoU2VydmljZVdvcmtlckNv
bnRleHREYXRhJiYgZGF0YSkKQEAgLTg2OSwxMCArODg2LDI1IEBAIFNXU2VydmVyUmVnaXN0cmF0
aW9uKiBTV1NlcnZlcjo6cmVnaXN0cmF0aW9uRnJvbVNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKFNl
cnZpY2VXCiAgICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1ZS0+cmVnaXN0cmF0aW9uKCk7CiB9CiAK
K3ZvaWQgU1dTZXJ2ZXI6OnVwZGF0ZUFwcEJvdW5kVmFsdWVGb3JXb3JrZXJzKGNvbnN0IENsaWVu
dE9yaWdpbiYgY2xpZW50T3JpZ2luLCBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIGxhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQpCit7CisgICAgZm9yIChhdXRvJiB3b3JrZXIgOiBtX3J1bm5pbmdP
clRlcm1pbmF0aW5nV29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBpZiAod29ya2VyLT5vcmln
aW4oKS5jbGllbnRSZWdpc3RyYWJsZURvbWFpbigpID09IGNsaWVudE9yaWdpbi5jbGllbnRSZWdp
c3RyYWJsZURvbWFpbigpKQorICAgICAgICAgICAgd29ya2VyLT51cGRhdGVBcHBCb3VuZFZhbHVl
KGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOworICAgIH0KK30KKwogdm9pZCBTV1NlcnZlcjo6
cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KENsaWVudE9yaWdpbiYmIGNsaWVudE9yaWdpbiwg
U2VydmljZVdvcmtlckNsaWVudERhdGEmJiBkYXRhLCBjb25zdCBPcHRpb25hbDxTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4mIGNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbklkZW50aWZpZXIsIFN0cmluZyYmIHVzZXJBZ2VudCkKIHsKICAgICBhdXRvIGNsaWVu
dElkZW50aWZpZXIgPSBkYXRhLmlkZW50aWZpZXI7CiAKKyAgICAvLyBVcGRhdGUgdGhlIGFwcC1i
b3VuZCB2YWx1ZSBpZiB0aGUgY2xpZW50IGlzIGFwcC1ib3VuZCBhbmQgdGhlIGN1cnJlbnQgY2xp
ZW50cyBmb3IgdGhhdCBkb21haW4KKyAgICAvLyBhcmUgbm90IGN1cnJlbnRseSBtYXJrZWQgYXBw
LWJvdW5kLgorICAgIGlmIChkYXRhLmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgPT0gTGFzdE5h
dmlnYXRpb25XYXNBcHBCb3VuZDo6WWVzKSB7CisgICAgICAgIGlmIChjbGllbnRJc0FwcEJvdW5k
Rm9yUmVnaXN0cmFibGVEb21haW4oY2xpZW50T3JpZ2luLmNsaWVudFJlZ2lzdHJhYmxlRG9tYWlu
KCkpID09IExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6Ok5vKQorICAgICAgICAgICAgdXBkYXRl
QXBwQm91bmRWYWx1ZUZvcldvcmtlcnMoY2xpZW50T3JpZ2luLCBkYXRhLmxhc3ROYXZpZ2F0aW9u
V2FzQXBwQm91bmQpOworICAgIH0KKwogICAgIEFTU0VSVCghbV9jbGllbnRzQnlJZC5jb250YWlu
cyhjbGllbnRJZGVudGlmaWVyKSk7CiAgICAgbV9jbGllbnRzQnlJZC5hZGQoY2xpZW50SWRlbnRp
ZmllciwgV1RGTW92ZShkYXRhKSk7CiAKQEAgLTkwOCw2ICs5NDAsNyBAQCB2b2lkIFNXU2VydmVy
OjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoQ2xpZW50T3JpZ2luJiYgY2xpZW50T3JpZ2lu
LCBTZXJ2aWNlVwogdm9pZCBTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQo
Y29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIFNlcnZpY2VXb3JrZXJDbGllbnRJZGVu
dGlmaWVyIGNsaWVudElkZW50aWZpZXIpCiB7CiAgICAgYXV0byBjbGllbnRSZWdpc3RyYWJsZURv
bWFpbiA9IGNsaWVudE9yaWdpbi5jbGllbnRSZWdpc3RyYWJsZURvbWFpbigpOworICAgIGF1dG8g
YXBwQm91bmRWYWx1ZUJlZm9yZSA9IGNsaWVudElzQXBwQm91bmRGb3JSZWdpc3RyYWJsZURvbWFp
bihjbGllbnRPcmlnaW4uY2xpZW50UmVnaXN0cmFibGVEb21haW4oKSk7CiAKICAgICBib29sIHdh
c1JlbW92ZWQgPSBtX2NsaWVudHNCeUlkLnJlbW92ZShjbGllbnRJZGVudGlmaWVyKTsKICAgICBB
U1NFUlRfVU5VU0VEKHdhc1JlbW92ZWQsIHdhc1JlbW92ZWQpOwpAQCAtOTUwLDYgKzk4MywxMiBA
QCB2b2lkIFNXU2VydmVyOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBDbGll
bnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgUwogICAgIGlmIChjbGllbnRzRm9yUmVnaXN0cmFibGVE
b21haW4uaXNFbXB0eSgpKQogICAgICAgICBtX2NsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluLnJl
bW92ZShjbGllbnRzQnlSZWdpc3RyYWJsZURvbWFpbkl0ZXJhdG9yKTsKIAorICAgIC8vIElmIHRo
ZSBhcHAtYm91bmQgdmFsdWUgY2hhbmdlZCBhZnRlciB0aGlzIGNsaWVudCB3YXMgcmVtb3ZlZCwg
d2Uga25vdyBpdCB3YXMgdGhlIG9ubHkgYXBwLWJvdW5kCisgICAgLy8gY2xpZW50IGZvciBpdCdz
IGRvbWFpbiwgYW5kIHdlIHNob3VsZCB1cGRhdGUgYWxsIHdvcmtlcnMuCisgICAgYXV0byBhcHBC
b3VuZFZhbHVlQWZ0ZXIgPSBjbGllbnRJc0FwcEJvdW5kRm9yUmVnaXN0cmFibGVEb21haW4oY2xp
ZW50T3JpZ2luLmNsaWVudFJlZ2lzdHJhYmxlRG9tYWluKCkpOworICAgIGlmIChhcHBCb3VuZFZh
bHVlQmVmb3JlICE9IGFwcEJvdW5kVmFsdWVBZnRlcikKKyAgICAgICAgdXBkYXRlQXBwQm91bmRW
YWx1ZUZvcldvcmtlcnMoY2xpZW50T3JpZ2luLCBhcHBCb3VuZFZhbHVlQWZ0ZXIpOworCiAgICAg
YXV0byByZWdpc3RyYXRpb25JdGVyYXRvciA9IG1fY2xpZW50VG9Db250cm9sbGluZ1JlZ2lzdHJh
dGlvbi5maW5kKGNsaWVudElkZW50aWZpZXIpOwogICAgIGlmIChyZWdpc3RyYXRpb25JdGVyYXRv
ciA9PSBtX2NsaWVudFRvQ29udHJvbGxpbmdSZWdpc3RyYXRpb24uZW5kKCkpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXIuaAppbmRleCBkMGVkN2M5MjM2N2UxN2JjOTM4MmNmODBjZDVlOGM2ODM3YjczY2ViLi5iYTM3
Y2VhOTEyOTdkNjQ5OWFhMmE5ZWJkODgyODZjNDk0ZjY5NjFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCkBAIC0yMTcsNiArMjE3LDgg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBTZWNvbmRzIGRlZmF1bHRUZXJtaW5h
dGlvbkRlbGF5ID0gMTBfczsKIAorICAgIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgY2xpZW50
SXNBcHBCb3VuZEZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7
CisKIHByaXZhdGU6CiAgICAgdm9pZCB2YWxpZGF0ZVJlZ2lzdHJhdGlvbkRvbWFpbihXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAK
QEAgLTI0Miw2ICsyNDQsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb250ZXh0Q29ubmVjdGlv
bkNyZWF0ZWQoU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7CiAKKyAgICB2b2lkIHVwZGF0
ZUFwcEJvdW5kVmFsdWVGb3JXb3JrZXJzKGNvbnN0IENsaWVudE9yaWdpbiYsIExhc3ROYXZpZ2F0
aW9uV2FzQXBwQm91bmQpOworCiAgICAgSGFzaE1hcDxTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyLCBzdGQ6OnVuaXF1ZV9wdHI8Q29ubmVjdGlvbj4+IG1fY29ubmVjdGlvbnM7CiAgICAgSGFz
aE1hcDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LCBXZWFrUHRyPFNXU2VydmVyUmVnaXN0
cmF0aW9uPj4gbV9zY29wZVRvUmVnaXN0cmF0aW9uTWFwOwogICAgIEhhc2hNYXA8U2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxTV1NlcnZlclJlZ2lz
dHJhdGlvbj4+IG1fcmVnaXN0cmF0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oCmluZGV4IGJhNThmNzg3OGE0Mzg5YjQ1NDU2MmI3MmI1YTVmNWNhNTRlMjM3NTIuLmE4
YmIwNzBlY2RmNmY2NWVkYTI0ZTU4MjZkODZkNzNjZGQyN2Y2Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtNTIsNiArNTIsNyBAQCBwdWJsaWM6CiAKICAgICAv
LyBNZXNzYWdlcyB0byB0aGUgU1cgaG9zdCBwcm9jZXNzCiAgICAgdmlydHVhbCB2b2lkIGluc3Rh
bGxTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmLCBj
b25zdCBTdHJpbmcmIHVzZXJBZ2VudCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBcHBC
b3VuZFZhbHVlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBMYXN0TmF2aWdhdGlvbldhc0FwcEJv
dW5kKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoU2VydmljZVdvcmtl
cklkZW50aWZpZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGVybWluYXRlV29y
a2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCmluZGV4IDEz
NTQwZWRkOTBiMzUwMWM3M2M0ZjMyMjUzNDM0MjY4M2I5ZjZhM2QuLjk3MjU3MDA2ZThhMjdjZDA1
YWMzNGI0MDA1YzllY2M5YmE0ZjdkODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCkBAIC02Miw2ICs2Miw3
IEBAIFNXU2VydmVyV29ya2VyOjpTV1NlcnZlcldvcmtlcihTV1NlcnZlciYgc2VydmVyLCBTV1Nl
cnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0CiAgICAgLCBtX3JlZ2lzdHJhYmxlRG9tYWluKG1f
ZGF0YS5zY3JpcHRVUkwpCiAgICAgLCBtX3NjcmlwdFJlc291cmNlTWFwKFdURk1vdmUoc2NyaXB0
UmVzb3VyY2VNYXApKQogICAgICwgbV90ZXJtaW5hdGlvblRpbWVyKCp0aGlzLCAmU1dTZXJ2ZXJX
b3JrZXI6OnRlcm1pbmF0aW9uVGltZXJGaXJlZCkKKyAgICAsIG1fbGFzdE5hdmlnYXRpb25XYXNB
cHBCb3VuZChtX3NlcnZlci0+Y2xpZW50SXNBcHBCb3VuZEZvclJlZ2lzdHJhYmxlRG9tYWluKG1f
cmVnaXN0cmFibGVEb21haW4pKQogewogICAgIG1fZGF0YS5zY3JpcHRVUkwucmVtb3ZlRnJhZ21l
bnRJZGVudGlmaWVyKCk7CiAKQEAgLTg2LDcgKzg3LDE4IEBAIFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YSBTV1NlcnZlcldvcmtlcjo6Y29udGV4dERhdGEoKSBjb25zdAogewogICAgIEFTU0VSVCht
X3JlZ2lzdHJhdGlvbik7CiAKLSAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIG1fcmVnaXN0cmF0
aW9uLT5kYXRhKCksIG1fZGF0YS5pZGVudGlmaWVyLCBtX3NjcmlwdCwgbV9jZXJ0aWZpY2F0ZUlu
Zm8sIG1fY29udGVudFNlY3VyaXR5UG9saWN5LCBtX3JlZmVycmVyUG9saWN5LCBtX2RhdGEuc2Ny
aXB0VVJMLCBtX2RhdGEudHlwZSwgZmFsc2UsIG1fc2NyaXB0UmVzb3VyY2VNYXAgfTsKKyAgICBy
ZXR1cm4geyBXVEY6Om51bGxvcHQsIG1fcmVnaXN0cmF0aW9uLT5kYXRhKCksIG1fZGF0YS5pZGVu
dGlmaWVyLCBtX3NjcmlwdCwgbV9jZXJ0aWZpY2F0ZUluZm8sIG1fY29udGVudFNlY3VyaXR5UG9s
aWN5LCBtX3JlZmVycmVyUG9saWN5LCBtX2RhdGEuc2NyaXB0VVJMLCBtX2RhdGEudHlwZSwgZmFs
c2UsIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCwgbV9zY3JpcHRSZXNvdXJjZU1hcCB9Owor
fQorCit2b2lkIFNXU2VydmVyV29ya2VyOjp1cGRhdGVBcHBCb3VuZFZhbHVlKExhc3ROYXZpZ2F0
aW9uV2FzQXBwQm91bmQgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCkKK3sKKyAgICBtX2xhc3RO
YXZpZ2F0aW9uV2FzQXBwQm91bmQgPSBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOworCisgICAg
aWYgKCFpc1J1bm5pbmcoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF1dG8qIGNvbm5l
Y3Rpb24gPSBjb250ZXh0Q29ubmVjdGlvbigpKQorICAgICAgICBjb25uZWN0aW9uLT51cGRhdGVB
cHBCb3VuZFZhbHVlKGlkZW50aWZpZXIoKSwgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk7CiB9
CiAKIHZvaWQgU1dTZXJ2ZXJXb3JrZXI6OnRlcm1pbmF0ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKaW5kZXggOTRhZTFmYTI2NTNmZTFjNjYwMWYxNmIx
MjAwYTg1OWVlODM2ZjYyMy4uZDg2M2UyNTI0MDlmZDI3NWMwNzM1YzZlMGQ3OWQwODk0YTMzNzc0
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlcldvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJXb3JrZXIuaApAQCAtMTI3LDYgKzEyNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dEhhc1RpbWVkT3V0QW55RmV0Y2hUYXNrcygpIHsgbV9oYXNUaW1lZE91dEFueUZldGNoVGFza3Mg
PSB0cnVlOyB9CiAgICAgYm9vbCBoYXNUaW1lZE91dEFueUZldGNoVGFza3MoKSBjb25zdCB7IHJl
dHVybiBtX2hhc1RpbWVkT3V0QW55RmV0Y2hUYXNrczsgfQogICAgIHZvaWQgZGlkRmFpbEhlYXJ0
QmVhdENoZWNrKCk7CisgICAgdm9pZCB1cGRhdGVBcHBCb3VuZFZhbHVlKExhc3ROYXZpZ2F0aW9u
V2FzQXBwQm91bmQpOwogCiBwcml2YXRlOgogICAgIFNXU2VydmVyV29ya2VyKFNXU2VydmVyJiwg
U1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBjb25zdCBVUkwmLCBjb25zdCBTY3JpcHRCdWZmZXImLCBj
b25zdCBDZXJ0aWZpY2F0ZUluZm8mLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25z
ZUhlYWRlcnMmLCBTdHJpbmcmJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSwgU2VydmljZVdv
cmtlcklkZW50aWZpZXIsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Oklt
cG9ydGVkU2NyaXB0PiYmKTsKQEAgLTE1Nyw2ICsxNTgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9oYXNUaW1lZE91dEFueUZldGNoVGFza3MgeyBmYWxzZSB9OwogICAgIFZlY3RvcjxDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+PiBtX3Rlcm1pbmF0aW9uQ2FsbGJhY2tzOwogICAgIFRpbWVyIG1f
dGVybWluYXRpb25UaW1lcjsKKyAgICBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIG1fbGFzdE5h
dmlnYXRpb25XYXNBcHBCb3VuZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKaW5kZXggY2Y4Njg2ZTc3NDE3MTU0ODE2
ZThiNjJlOTIzMzAzY2MzN2MzMTQ4ZC4uYjI0M2QxNGNiMjNjNjNjYTc1YTI0M2U1M2Y4NTA1Mjc1
MDNjMjIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTE0
Nyw3ICsxNDcsNyBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y29udHJvbENsaWVudChT
ZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZAogICAgICAgICB1bnJlZ2lzdGVy
U2VydmljZVdvcmtlckNsaWVudChjbGllbnRJZGVudGlmaWVyKTsKICAgICB9KTsKIAotICAgIFNl
cnZpY2VXb3JrZXJDbGllbnREYXRhIGRhdGEgeyBjbGllbnRJZGVudGlmaWVyLCBTZXJ2aWNlV29y
a2VyQ2xpZW50VHlwZTo6V2luZG93LCBTZXJ2aWNlV29ya2VyQ2xpZW50RnJhbWVUeXBlOjpOb25l
LCByZXF1ZXN0LnVybCgpIH07CisgICAgU2VydmljZVdvcmtlckNsaWVudERhdGEgZGF0YSB7IGNs
aWVudElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGllbnRUeXBlOjpXaW5kb3csIFNlcnZpY2VX
b3JrZXJDbGllbnRGcmFtZVR5cGU6Ok5vbmUsIHJlcXVlc3QudXJsKCksIHJlcXVlc3QuaXNBcHBC
b3VuZCgpID8gV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDo6WWVzIDogV2ViQ29y
ZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDo6Tm8gfTsKICAgICByZWdpc3RlclNlcnZpY2VX
b3JrZXJDbGllbnQoU2VjdXJpdHlPcmlnaW5EYXRhIHsgcmVnaXN0cmF0aW9uLmtleSgpLnRvcE9y
aWdpbigpIH0sIFdURk1vdmUoZGF0YSksIHJlZ2lzdHJhdGlvbi5pZGVudGlmaWVyKCksIHJlcXVl
c3QuaHR0cFVzZXJBZ2VudCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRleCA0ZjE4YTM1NzhhODE4Y2ExMmEwM2I3Zjkw
ZThmNjU5NTg1MjdkOTY4Li44NGQ3YjQ2OWE3M2U3MTgwNzkyZmViM2Y3ZWRkNmY2ZTFkY2UwNzVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmNwcApAQCAtOTIsNiArOTIsMTEgQEAgdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246Omluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBTZXJ2aWNlV28KICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6SW5zdGFsbFNlcnZpY2VX
b3JrZXIgeyBkYXRhLCB1c2VyQWdlbnQgfSk7CiB9CiAKK3ZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjp1cGRhdGVBcHBCb3VuZFZhbHVlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpMYXN0TmF2aWdhdGlvbldhc0FwcEJv
dW5kIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpCit7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlVwZGF0ZUFwcEJvdW5kVmFsdWUoc2VydmljZVdv
cmtlcklkZW50aWZpZXIsIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpKTsKK30KKwogdm9pZCBX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmZpcmVJbnN0YWxsRXZlbnQoU2VydmljZVdv
cmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIpCiB7CiAgICAgc2VuZChNZXNz
YWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkZpcmVJbnN0YWxsRXZlbnQoc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uaAppbmRleCBlYzc3YzFkYjJlYmNiOWQ0NTA0MmE5MzU4YjRlOTEz
NTVhYTllZjA5Li5kODk4NmFhNjc4MGQ0NmExNjRmZGFlNzVhZjZlYWFjYmQyYzEyZGNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC04
Niw2ICs4Niw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBNZXNzYWdlcyB0byB0aGUgU1cgaG9zdCBX
ZWJQcm9jZXNzCiAgICAgdm9pZCBpbnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgV2Vi
Q29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQp
IGZpbmFsOworICAgIHZvaWQgdXBkYXRlQXBwQm91bmRWYWx1ZShXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCkgZmluYWw7
CiAgICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKSBmaW5hbDsKICAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIHRlcm1pbmF0ZVdvcmtlcihXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQppbmRleCA2YmVhNWRiNzJiOTE5MWVlZGE3OTM1OTYxNjZkM2NmNDc3
ZTA1YmI4Li43YTA2MWI2ZmVkYzFmODZiMTVkMzFlZjI5ZDZkNzI0NGNhZDgwZDFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTcwMSw2ICs3MDEsNyBAQCBk
ZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dlYkNvcmU6Okluc3BlY3Rvck92
ZXJsYXk6OkhpZ2hsaWdodCc6IFsnPFdlYkNvcmUvSW5zcGVjdG9yT3ZlcmxheS5oPiddLAogICAg
ICAgICAnV2ViQ29yZTo6S2V5ZnJhbWVWYWx1ZUxpc3QnOiBbJzxXZWJDb3JlL0dyYXBoaWNzTGF5
ZXIuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OktleXByZXNzQ29tbWFuZCc6IFsnPFdlYkNvcmUv
S2V5Ym9hcmRFdmVudC5oPiddLAorICAgICAgICAnV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNB
cHBCb3VuZCc6IFsnPFdlYkNvcmUvU2VydmljZVdvcmtlckNsaWVudERhdGEuaD4nXSwKICAgICAg
ICAgJ1dlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb25DbGllbnQ6Ok1lZGlhS2V5RXJyb3JDb2RlJzog
Wyc8V2ViQ29yZS9MZWdhY3lDRE1TZXNzaW9uLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpMb2Nr
QmFja0ZvcndhcmRMaXN0JzogWyc8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+J10sCiAgICAg
ICAgICdXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0aXZpdHknOiBb
JzxXZWJDb3JlL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmg+J10sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggNjNjMjI2MGVmYjRiNzFlMTEwYmYxNGJmNDYyNDg5
MjYyNThiYTA1NC4uMDkwMDU0ZjAxNjA2NTlmMDZmYjU3ZTEzMjNhYWYzYmQwY2EzODE2MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMTM1LDYgKzEzNSwxMiBAQCB2
b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp1cGRhdGVQcmVmZXJlbmNlc1N0b3Jl
KGNvbnN0IFdlYlByZWZlcmVuY2VzUwogICAgIHNldFNob3VsZFVzZVNob3J0VGltZW91dChzdG9y
ZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnNob3VsZFVzZVNlcnZpY2VX
b3JrZXJTaG9ydFRpbWVvdXRLZXkoKSkpOwogfQogCit2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uOjp1cGRhdGVBcHBCb3VuZFZhbHVlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5k
IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpCit7CisgICAgaWYgKGF1dG8qIHNlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eSA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eShzZXJ2aWNlV29ya2VySWRlbnRpZmllcikpCisgICAgICAgIHNlcnZpY2VX
b3JrZXJUaHJlYWRQcm94eS0+c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChsYXN0TmF2aWdh
dGlvbldhc0FwcEJvdW5kID09IFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6Olll
cyk7Cit9CisKIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Omluc3RhbGxTZXJ2
aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGRhdGEsIFN0cmluZyYmIHVzZXJB
Z2VudCkKIHsKICAgICBhdXRvIHBhZ2VDb25maWd1cmF0aW9uID0gcGFnZUNvbmZpZ3VyYXRpb25X
aXRoRW1wdHlDbGllbnRzKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNlc3Npb25JRCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCmluZGV4IDA0NTUyZGM3MDBiMTlkZjAwZWNjNTZj
YmFhMTQ0NGYyY2U1MGFmMWIuLjk1ZDgxODFmMjM1MzZmMGViMzJhYWRkOGI3ZTdlZDZmN2U2NjUy
NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaApAQCAtMjksNiArMjksNyBAQAog
CiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgor
I2luY2x1ZGUgIk5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmgiCiAjaW5jbHVkZSAiU2hhcmVh
YmxlUmVzb3VyY2UuaCIKICNpbmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgpAQCAtODUsNiArODYsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgc2VydmljZVdvcmtlclN0YXJ0ZWQoT3B0aW9uYWw8V2ViQ29y
ZTo6U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiwgV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIsIGJvb2wgZG9lc0hhbmRsZUZldGNoKSBmaW5hbDsKICAgICB2b2lkIHNlcnZp
Y2VXb3JrZXJGYWlsZWRUb1N0YXJ0KE9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JE
YXRhSWRlbnRpZmllcj4sIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGV4Y2VwdGlvbk1lc3NhZ2UpIGZpbmFsOwogICAgIHZvaWQgaW5zdGFsbFNlcnZpY2VX
b3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhJiYsIFN0cmluZyYmIHVzZXJB
Z2VudCk7CisgICAgdm9pZCB1cGRhdGVBcHBCb3VuZFZhbHVlKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKTsKICAgICB2
b2lkIHN0YXJ0RmV0Y2goV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OkZldGNoT3B0aW9ucyYmLCBJUEM6
OkZvcm1EYXRhUmVmZXJlbmNlJiYsIFN0cmluZyYmIHJlZmVycmVyKTsKICAgICB2b2lkIGNhbmNl
bEZldGNoKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIpOwogICAgIHZv
aWQgY29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZShXZWJDb3JlOjpTV1NlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29y
ZTo6RmV0Y2hJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KaW5kZXggZmEyZmEwYjFkMmJjZmZlYTljYTYyNmY2N2U5MmZlMjA5ODRl
NTI2Zi4uODRiMTY4YTA0MGVjZGJjODUyNjU4ZjdkNmNhZDEwNTFiYzM2YWUzYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTI0LDYgKzI0
LDcgQEAKIAogbWVzc2FnZXMgLT4gV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gTm90UmVm
Q291bnRlZCB7CiAgICAgSW5zdGFsbFNlcnZpY2VXb3JrZXIoc3RydWN0IFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YSBjb250ZXh0RGF0YSwgU3RyaW5nIHVzZXJBZ2VudCkKKyAgICBV
cGRhdGVBcHBCb3VuZFZhbHVlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBlbnVtOmJvb2wgV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNB
cHBCb3VuZCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKQogICAgIFN0YXJ0RmV0Y2goV2ViQ29y
ZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCByZXF1ZXN0LCBzdHJ1Y3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zIG9wdGlv
bnMsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVzdEJvZHksIFN0cmluZyByZWZlcnJlcikK
ICAgICBDYW5jZWxGZXRjaChXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyIGZldGNo
SWRlbnRpZmllcikKICAgICBDb250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKFdlYkNvcmU6
OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIs
IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDMyNzMxZGNjZjQzMTBmYjEy
NTgyNGQyN2VlOGU2N2VlMTc0MDczOTUuLmI0YjUwZGYwZDVjZWY1ZWRjYjhmN2E0NWYxM2JhNmZi
MTkxNmQwMzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0wNS0xOSAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVf
Y2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBNYXJrIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eSB3aXRoIGEgZGVmYXVsdCBhcHAtYm91bmQgdmFsdWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzIwMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
Nzc2NjQ0MTY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGVzdCBjb3ZlcmFnZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbToKKyAgICAgICAgKC1bU1dBcHBCb3VuZFJlcXVl
c3RNZXNzYWdlSGFuZGxlciB1c2VyQ29udGVudENvbnRyb2xsZXI6ZGlkUmVjZWl2ZVNjcmlwdE1l
c3NhZ2U6XSk6CisKIDIwMjEtMDUtMTggIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxl
LmNvbT4KIAogICAgICAgICBNYWtlIEFpckFsbG9jYXRlUmVnaXN0ZXJzQnlHcmFwaENvbG9yaW5n
IHVzZSBsZXNzIG1lbW9yeQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCmluZGV4IDM4ZDJlZTM1MWFl
MTg4YjhiZWY5NzM4MDAxNThiYzEwNWRjMDFkYjguLjQzYjMwMTRmYmI5OTUxNDQ4N2I3ODZjOTMx
ZDM0NmJhYmNiOGJlNDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KQEAgLTE4NzcsNCArMTg3
NywxNTUgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBXZWJQcm9jZXNzUGx1Z2luVGVzdE5v
bkFwcEJvdW5kKQogewogICAgIHJ1bldlYlByb2Nlc3NQbHVnSW5UZXN0KElzQXBwQm91bmQ6Ok5v
KTsKIH0KKworI2lmIFdLX0hBVkVfQ19TUEkKKworc3RhdGljIGNvbnN0IGNoYXIqIG1haW5TV0J5
dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAorPHNjcmlwdD4KKworZnVuY3Rpb24gbG9n
KG1zZykKK3sKKyAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5zdy5wb3N0TWVzc2Fn
ZShtc2cpOworfQorCituYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5hZGRFdmVudExpc3RlbmVyKCJt
ZXNzYWdlIiwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBsb2coZXZlbnQuZGF0YSk7Cit9KTsKKwor
dHJ5IHsKKyAgICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhl
bihmdW5jdGlvbihyZWcpIHsKKyAgICAgICAgaWYgKHJlZy5hY3RpdmUpIHsKKyAgICAgICAgICAg
IGxvZygnd29ya2VyIGFscmVhZHkgYWN0aXZlJyk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgd29ya2VyID0gcmVnLmluc3RhbGxpbmc7CisgICAgICAgIHdvcmtlci5h
ZGRFdmVudExpc3RlbmVyKCdzdGF0ZWNoYW5nZScsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
aWYgKHdvcmtlci5zdGF0ZSA9PSAnYWN0aXZhdGVkJykKKyAgICAgICAgICAgICAgICB3b3JrZXIu
cG9zdE1lc3NhZ2UoIlRFU1QiKTsKKyAgICAgICAgfSk7CisgICAgfSkuY2F0Y2goZnVuY3Rpb24o
ZXJyb3IpIHsKKyAgICAgICAgbG9nKCdSZWdpc3RyYXRpb24gZmFpbGVkIHdpdGg6ICcgKyBlcnJv
cik7CisgICAgfSk7Cit9IGNhdGNoKGUpIHsKKyAgICBsb2coJ0V4Y2VwdGlvbjogJyArIGUpOwor
fQorPC9zY3JpcHQ+CispU1dSRVNPVVJDRSI7CisKK3N0YXRpYyBjb25zdCBjaGFyKiBzY3JpcHRC
eXRlc0RlZmF1bHRWYWx1ZTEgPSBSIlNXUkVTT1VSQ0UoCitzZWxmLmFkZEV2ZW50TGlzdGVuZXIo
J21lc3NhZ2UnLCBhc3luYyAoZXZlbnQpID0+IHsKKyAgICBpZiAoIXNlbGYuaW50ZXJuYWxzKSB7
CisgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgnTm8gaW50ZXJuYWxzJyk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgdmFyIHJlc3VsdCA9IGF3YWl0IGludGVybmFscy5sYXN0
TmF2aWdhdGlvbldhc0FwcEJvdW5kKCk7CisgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKHJl
c3VsdCA/ICdhcHAtYm91bmQnIDogJ25vbiBhcHAtYm91bmQnKTsKK30pOworKVNXUkVTT1VSQ0Ui
OworCitzdGF0aWMgY29uc3QgY2hhciogc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUyID0gUiJTV1JF
U09VUkNFKAorc2VsZi5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgYXN5bmMgKGV2ZW50KSA9
PiB7CisgICAgaWYgKCFzZWxmLmludGVybmFscykgeworICAgICAgICBldmVudC5zb3VyY2UucG9z
dE1lc3NhZ2UoJ05vIGludGVybmFscycpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
cXVlcnlBcHBCb3VuZFZhbHVlKGV2ZW50LCB0cnVlKTsKK30pOworCithc3luYyBmdW5jdGlvbiBx
dWVyeUFwcEJvdW5kVmFsdWUoZXZlbnQsIGlzRmlyc3RUaW1lUXVlcnlpbmcpCit7CisgICAgdmFy
IHJlc3VsdCA9IGF3YWl0IGludGVybmFscy5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKCk7Cisg
ICAgaWYgKHJlc3VsdCkgeworICAgICAgICBpZiAoaXNGaXJzdFRpbWVRdWVyeWluZykKKyAgICAg
ICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgnc3RhcnRzIGFwcC1ib3VuZCcpOworICAg
ICAgICBxdWVyeUFwcEJvdW5kVmFsdWUoZXZlbnQsIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgnbm9uIGFwcC1ib3VuZCcpOwor
fQorCispU1dSRVNPVVJDRSI7CisKKworc3RhdGljIFN0cmluZyBleHBlY3RlZE1lc3NhZ2U7Citz
dGF0aWMgYm9vbCByZWNlaXZlZE1lc3NhZ2UgPSBmYWxzZTsKKworQGludGVyZmFjZSBTV0FwcEJv
dW5kUmVxdWVzdE1lc3NhZ2VIYW5kbGVyIDogTlNPYmplY3QgPFdLU2NyaXB0TWVzc2FnZUhhbmRs
ZXI+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBTV0FwcEJvdW5kUmVxdWVzdE1lc3NhZ2VIYW5k
bGVyCistICh2b2lkKXVzZXJDb250ZW50Q29udHJvbGxlcjooV0tVc2VyQ29udGVudENvbnRyb2xs
ZXIgKil1c2VyQ29udGVudENvbnRyb2xsZXIgZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6KFdLU2Ny
aXB0TWVzc2FnZSAqKW1lc3NhZ2UKK3sKKyAgICBFWFBFQ1RfV0tfU1RSRVEobWVzc2FnZS5ib2R5
LCBleHBlY3RlZE1lc3NhZ2UpOworICAgIHJlY2VpdmVkTWVzc2FnZSA9IHRydWU7Cit9CitAZW5k
CisKK1RFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgUmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50
VXBkYXRlc0FwcEJvdW5kVmFsdWUpCit7CisgICAgc3RhdGljIGJvb2wgaXNEb25lID0gZmFsc2U7
CisKKyAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSByZW1vdmVEYXRh
T2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVk
U2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKKyAgICAg
ICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmlzRG9uZSk7CisKKyAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0g
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0lu
Q2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0Zv
clRlc3Rpbmc6WUVTXTsKKyAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBh
ZG9wdFdLKFRlc3RXZWJLaXRBUEk6OlV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRs
ZVRlc3QoIkludGVybmFsc0luamVjdGVkQnVuZGxlVGVzdCIpKTsKKyAgICBjb25maWd1cmF0aW9u
LnByb2Nlc3NQb29sID0gKFdLUHJvY2Vzc1Bvb2wgKiljb250ZXh0LmdldCgpOworCisgICAgUmV0
YWluUHRyPFNXQXBwQm91bmRSZXF1ZXN0TWVzc2FnZUhhbmRsZXI+IG1lc3NhZ2VIYW5kbGVyID0g
YWRvcHROUyhbW1NXQXBwQm91bmRSZXF1ZXN0TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsK
KyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNz
YWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAic3ciXTsKKworICAgIGF1dG8g
d2ViVmlldzEgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAg
IGF1dG8gd2ViVmlldzIgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0p
OworCisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUg
bmV3XSk7CisgICAgW2RlbGVnYXRlIHNldERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTpeKFdLV2ViVmlldyAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2Us
IHZvaWQgKF5jYWxsYmFjaykoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBO
U1VSTENyZWRlbnRpYWwgKikpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGNoYWxsZW5nZS5w
cm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2QsIE5TVVJMQXV0aGVudGljYXRpb25N
ZXRob2RTZXJ2ZXJUcnVzdCk7CisgICAgICAgIGNhbGxiYWNrKE5TVVJMU2Vzc2lvbkF1dGhDaGFs
bGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxGb3JUcnVzdDpj
aGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0XSk7CisgICAgfV07CisKKyAgICB3
ZWJWaWV3MS5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICB3
ZWJWaWV3Mi5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKworICAg
IC8vIExvYWQgV2ViVmlldyB3aXRoIGFuIGFwcC1ib3VuZCByZXF1ZXN0LiBXZSBleHBlY3QgdGhl
IFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSB0byBiZSBhcHAtYm91bmQuCisgICAgVGVzdFdlYktp
dEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIxKHsKKyAgICAgICAgeyAiLyIsIHsgbWFpblNXQnl0ZXNE
ZWZhdWx0VmFsdWUgfSB9LAorICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUi
LCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlMSB9
IH0sCisgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsK
KworICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJhcHAtYm91bmQiOworICAgIFt3ZWJWaWV3MSBsb2Fk
UmVxdWVzdDpzZXJ2ZXIxLnJlcXVlc3QoKV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZyZWNlaXZlZE1lc3NhZ2UpOworCisgICAgLy8gTG9hZCBXZWJWaWV3IHdpdGggYSBub24gYXBw
LWJvdW5kIHJlcXVlc3QuIFdlIGV4cGVjdCB0aGUgU2VydmljZVdvcmtlclRocmVhZFByb3h5IHRv
IGJlIGFwcC1ib3VuZAorICAgIC8vIGF0IGZpcnN0LCBidXQgdGhlbiBiZWNvbWUgbm9uIGFwcC1i
b3VuZCBvbmNlIHRoZSBzZWNvbmQgd2ViVmlldyBpcyBjbG9zZWQgYW5kIGl0cyBjbGllbnQgaXMg
dW5yZWdpc3RlcmVkLgorICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMih7Cisg
ICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlIH0gfSwKKyAgICAgICAgeyAi
L3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19
LCBzY3JpcHRCeXRlc0RlZmF1bHRWYWx1ZTIgfSB9LAorICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhU
VFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CisKKyAgICBleHBlY3RlZE1lc3NhZ2UgPSAic3Rh
cnRzIGFwcC1ib3VuZCI7CisgICAgcmVjZWl2ZWRNZXNzYWdlID0gZmFsc2U7CisgICAgTlNNdXRh
YmxlVVJMUmVxdWVzdCAqbm9uQXBwQm91bmRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3Qg
cmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6QCJodHRwczovLzEyNy4wLjAuMTolZC8iLCBzZXJ2ZXIyLnBvcnQoKV1dXTsKKyAgICBB
UFBfQk9VTkRfUkVRVUVTVF9BRERJVElPTlMKKworICAgIFt3ZWJWaWV3MiBsb2FkUmVxdWVzdDpu
b25BcHBCb3VuZFJlcXVlc3RdOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2
ZWRNZXNzYWdlKTsKKworICAgIC8vIENsb3NlIHRoZSBhcHAtYm91bmQgdmlldy4gV2UgZXhwZWN0
IHRoYXQgdGhlIGV4aXN0aW5nIHdvcmtlciB3aWxsIGJlY29tZSBub24gYXBwLWJvdW5kCisgICAg
Ly8gbm93IHRoYXQgYWxsIGFwcC1ib3VuZCBjbGllbnRzIGhhdmUgYmVlbiByZW1vdmVkLgorICAg
IGV4cGVjdGVkTWVzc2FnZSA9ICJub24gYXBwLWJvdW5kIjsKKyAgICByZWNlaXZlZE1lc3NhZ2Ug
PSBmYWxzZTsKKyAgICBbd2ViVmlldzEgX2Nsb3NlXTsKKyAgICB3ZWJWaWV3MSA9IG51bGxwdHI7
CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkTWVzc2FnZSk7Cit9CisK
KyNlbmRpZgorCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429235</attachid>
            <date>2021-05-20 15:55:05 -0700</date>
            <delta_ts>2021-05-20 16:39:40 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-223201-20210520155504.patch</filename>
            <type>text/plain</type>
            <size>43469</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NzkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjRkMjQ2MTA2OWE4OWEy
YzI4Nzg0ZDM0NTFmZDA4MDk4YmMyYTQ0OC4uZjFkZTU2NzBhNmM2ZDBjMDQ3NWJkMjdmYzhjMGZk
YjZlODQwZTI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDIxLTA1LTIwICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIE1hcmsgU2Vy
dmljZVdvcmtlclRocmVhZFByb3h5IHdpdGggYSBkZWZhdWx0IGFwcC1ib3VuZCB2YWx1ZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzMjAxCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS83NzY2NDQxNj4KKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vl
bm4gRmFibGV0LgorCisgICAgICAgIFNlcnZpY2Ugd29ya2VyIGxvYWRzIGhhdmUgdGhlaXIgb3du
IGRvY3VtZW50IGxvYWRlciwgc28gdGhleSBkb24ndAorICAgICAgICBhbHdheXMgZ2V0IHByb3Bl
cmx5IG1hcmtlZCBhcyBhcHAtYm91bmQgYmFzZWQgb24gdGhlIG1haW4gZnJhbWUKKyAgICAgICAg
bmF2aWdhdGlvbi4gUHJpb3IgZml4ZXMgaGFuZGxlZCBzb21lIGZldGNoIGV2ZW50cywgc3ludGhl
dGljCisgICAgICAgIHJlc3BvbnNlcywgYW5kIHNvZnQgdXBkYXRlcy4gQnV0IHdlIG5lZWQgdG8g
c2V0IGEgZGVmYXVsdCB2YWx1ZSB3aGVuCisgICAgICAgIHdlIGluc3RhbGwgdGhlIHNlcnZpY2Ug
d29ya2VyLgorCisgICAgICAgIFdlIGhhZCB0byBwaWNrIGEgYmVzdC1lZmZvcnQgaGV1cmlzdGlj
IHRvIGRvIHRoaXMuIElmIGFueSBjbGllbnQgZm9yCisgICAgICAgIHRoZSB3b3JrZXIgaXMgYXBw
LWJvdW5kLCB0aGVuIGFsbCBsb2FkcyB3aXRoIHRoYXQgd29ya2VyIHdpbGwgYmUKKyAgICAgICAg
bWFya2VkIGFwcC1ib3VuZC4KKworICAgICAgICAqIHRlc3RpbmcvU2VydmljZVdvcmtlckludGVy
bmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySW50ZXJuYWxzOjpsYXN0
TmF2aWdhdGlvbldhc0FwcEJvdW5kKToKKyAgICAgICAgKiB0ZXN0aW5nL1NlcnZpY2VXb3JrZXJJ
bnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRs
OgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyUnVuTG9vcC5oOgorICAgICAgICBUbyB0ZXN0IHRo
aXMsIEkgYWRkZWQgYSBuZXcgQVBJIHRvIFNlcnZpY2VXb3JrZXJJbnRlcm5hbHMgdG8gZ2V0IHRo
ZQorICAgICAgICB3b3JrZXIncyBhcHAgYm91bmQgdmFsdWUuCisKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2VydmljZVdvcmtlckNsaWVudERhdGE6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZnJvbSk6CisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjpkZWNvZGUpOgorICAgICAgICBTdG9yZSB0aGUgbWFp
biBuYXZpZ2F0aW9uIGFwcC1ib3VuZCB2YWx1ZSB3aGVuIHdlIHJlZ2lzdGVyIGEgY2xpZW50Lgor
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Omlzb2xhdGVkQ29w
eSBjb25zdCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpk
ZWNvZGUpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHk6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHk6Omxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHMpOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1dTZXJ2ZXI6OnVwZGF0ZVdvcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpTV1Nl
cnZlcjo6Y2xpZW50SXNBcHBCb3VuZEZvclJlZ2lzdHJhYmxlRG9tYWluKToKKyAgICAgICAgQmVz
dC1lZmZvcnQgaGV1cmlzdGljIHRvIG1hcmsgYSBsb2FkIGFzIGFwcCBib3VuZCBpZiBhbnkgY2xp
ZW50IGZvcgorICAgICAgICB0aGF0IG9yaWdpbiB3YXMgcmVnaXN0ZXJlZCBhcyBhcHAtYm91bmQu
CisKIDIwMjEtMDUtMjAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAg
ICAgIFtNb2Rlcm4gTWVkaWEgQ29udHJvbHNdIHNob3VsZCBub3QgaW5jbHVkZSBgVGV4dFRyYWNr
YCB3aGVuIHNvcnRpbmcgYFRleHRUcmFja0xpc3RgIGlmIGl0IGRvZXNuJ3QgaGF2ZSBhIGRlc2ly
ZWQgYFRleHRUcmFjazo6S2luZGAgd2hlbiBgQ2FwdGlvbkRpc3BsYXlNb2RlOjpNYW51YWxgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDU3NTA0NTE1YmQ2YWM5MmI3NGEwOTc3ZjNiNGJjNDBiZDE0ZWI1MGUuLjc0M2M1
NGNjMzJmZWNmMWRjZmE0NjYxYjMzMjhiYjQxZGU2MGExOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjMgQEAKKzIwMjEtMDUtMjAgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5j
b20+CisKKyAgICAgICAgTWFyayBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgd2l0aCBhIGRlZmF1
bHQgYXBwLWJvdW5kIHZhbHVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjMyMDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc3NjY0NDE2PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y29udHJvbENsaWVudCk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
OnVwZGF0ZUFwcEJvdW5kVmFsdWUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgIChoZWFkZXJzX2Zvcl90eXBlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6dXBkYXRl
QXBwQm91bmRWYWx1ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgorCiAyMDIxLTA1LTIwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIENoZWNrZWRMb2NrIG1v
cmUgaW4gV2ViS2l0MiBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1Nl
cnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNl
V29ya2VySW50ZXJuYWxzLmNwcAppbmRleCAzNWY0YTc4YWQ1ZTkwZWM2ZmE1NmI3Mjc3NGY1YThl
ZTg3ZWEyZjBiLi43OGVmYmQyZTI3YmY1YzQ0NmJlZmUxYTE0OTcxOWJiODRjZmMxNjEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5jcHAK
QEAgLTEwOCw2ICsxMDgsMjMgQEAgaW50IFNlcnZpY2VXb3JrZXJJbnRlcm5hbHM6OnByb2Nlc3NJ
ZGVudGlmaWVyKCkgY29uc3QKICAgICByZXR1cm4gZ2V0Q3VycmVudFByb2Nlc3NJRCgpOwogfQog
Cit2b2lkIFNlcnZpY2VXb3JrZXJJbnRlcm5hbHM6Omxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQo
UmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQoreworICAgIEFTU0VSVCghbV9sYXN0TmF2
aWdhdGlvbldhc0FwcEJvdW5kUHJvbWlzZSk7CisgICAgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJv
dW5kUHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSk7CisgICAgY2FsbE9uTWFpblRocmVhZChbaWRl
bnRpZmllciA9IG1faWRlbnRpZmllciwgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0oKSBt
dXRhYmxlIHsKKyAgICAgICAgaWYgKGF1dG8qIHByb3h5ID0gU1dDb250ZXh0TWFuYWdlcjo6c2lu
Z2xldG9uKCkud29ya2VyQnlJRChpZGVudGlmaWVyKSkgeworICAgICAgICAgICAgcHJveHktPnRo
cmVhZCgpLnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFr
VGhpcyksIGFwcEJvdW5kID0gcHJveHktPmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoKV0oYXV0
byYpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVGhpcy0+bV9sYXN0
TmF2aWdhdGlvbldhc0FwcEJvdW5kUHJvbWlzZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgICAgICAgICAgd2Vha1RoaXMtPm1fbGFzdE5hdmlnYXRpb25XYXNBcHBCb3Vu
ZFByb21pc2UtPnJlc29sdmU8SURMQm9vbGVhbj4oYXBwQm91bmQpOworICAgICAgICAgICAgICAg
IHdlYWtUaGlzLT5tX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmRQcm9taXNlID0gbnVsbHB0cjsK
KyAgICAgICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOworICAgICAgICB9
CisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5oCmluZGV4IDZiYWJl
YjI4MTc4M2ZmOWNjMWY5ZDJiOTkzMTM1MWZiNGU4OGNjNzcuLmU2ODc1YmY5NzM0ZDIxYTc0MTc5
MWE5OTJjNWM2MzZkN2Y1YzI4ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
U2VydmljZVdvcmtlckludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2Vy
dmljZVdvcmtlckludGVybmFscy5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQogCiAjaW5jbHVkZSAiSURMVHlwZXMuaCIKKyNpbmNsdWRlICJKU0RPTVByb21p
c2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIApAQCAtMzksNyArNDAsNyBAQCBjbGFzcyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiBjbGFzcyBET01Q
cm9taXNlRGVmZXJyZWQ7CiAKLWNsYXNzIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIFNlcnZp
Y2VXb3JrZXJJbnRlcm5hbHMgOiBwdWJsaWMgUmVmQ291bnRlZDxTZXJ2aWNlV29ya2VySW50ZXJu
YWxzPiB7CitjbGFzcyBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCBTZXJ2aWNlV29ya2VySW50
ZXJuYWxzIDogcHVibGljIFJlZkNvdW50ZWQ8U2VydmljZVdvcmtlckludGVybmFscz4sIHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxTZXJ2aWNlV29ya2VySW50ZXJuYWxzPiB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFJlZjxTZXJ2aWNlV29ya2VySW50ZXJuYWxzPiBjcmVhdGUoU2VydmljZVdvcmtlcklk
ZW50aWZpZXIgaWRlbnRpZmllcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJ2aWNlV29ya2Vy
SW50ZXJuYWxzIHsgaWRlbnRpZmllciB9KTsgfQogICAgIH5TZXJ2aWNlV29ya2VySW50ZXJuYWxz
KCk7CkBAIC01NywxMCArNTgsMTMgQEAgcHVibGljOgogCiAgICAgaW50IHByb2Nlc3NJZGVudGlm
aWVyKCkgY29uc3Q7CiAKKyAgICB2b2lkIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoUmVmPERl
ZmVycmVkUHJvbWlzZT4mJik7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgU2VydmljZVdvcmtl
ckludGVybmFscyhTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAKICAgICBTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4gbV9s
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kUHJvbWlzZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlcklu
dGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5h
bHMuaWRsCmluZGV4IDBiODg4NDRiNDk0Njk4OTA4MDNkN2RlYTQyZDYzZTgwZmFhMWZkZTMuLjFi
MjZiN2Q1MDI4ODIxZTIyNDJlMWQzYzI3ZWE4NjAwZjRmMmMxMzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlkbApAQCAtNDAsNCArNDAs
NiBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzVGhyb3R0bGVhYmxlOwogCiAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgcHJvY2Vzc0lkZW50aWZpZXI7CisKKyAgICBQcm9t
aXNlPGJvb2xlYW4+IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoKTsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyUnVuTG9vcC5oCmluZGV4IGVlMjZiMzdmMjk5Y2E2OTljMDRjMGIxYzc0
NDE1MDQ4MDg3MTU3ZjMuLjAwZjE3MjA0MTlkOWU2ZTYwOTQ3MTA3YmVkZDVhZDM4YWJjYmQzM2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5oCkBAIC02MCwxMiArNjAsMTIg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgcG9zdFRhc2soU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzayYmKTsKICAgICAgICAgdm9pZCBwb3N0VGFza0FuZFRlcm1pbmF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYpOwotICAgICAgICB2b2lkIHBvc3RUYXNr
Rm9yTW9kZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYsIGNvbnN0IFN0cmluZyYgbW9k
ZSk7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zdFRhc2tGb3JNb2RlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKICAgICAgICAgdm9p
ZCBwb3N0RGVidWdnZXJUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJik7CiAKICAg
ICAgICAgdW5zaWduZWQgbG9uZyBjcmVhdGVVbmlxdWVJZCgpIHsgcmV0dXJuICsrbV91bmlxdWVJ
ZDsgfQogCi0gICAgICAgIHN0YXRpYyBTdHJpbmcgZGVmYXVsdE1vZGUoKTsKKyAgICAgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBkZWZhdWx0TW9kZSgpOwogICAgICAgICBjbGFzcyBU
YXNrIHsKICAgICAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRhc2spOyBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKICAgICAgICAgcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5jcHAKaW5kZXgg
NTExNjdlN2VjNzQ5MWQ0NWQ5NGYxNTE1ZTUxYzkzNjFhMGU2MmY1Yy4uYjYwNzRlMTBmNTc3YTA0
MmE0YTEzMzc2YjZiMTFjYTFhMmFkN2QyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuY3BwCkBAIC0zMCw2
ICszMCw3IEBACiAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgorI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNs
dWRlICJTV0NsaWVudENvbm5lY3Rpb24uaCIKIApAQCAtNTcsNyArNTgsNyBAQCBzdGF0aWMgU2Vy
dmljZVdvcmtlckNsaWVudEZyYW1lVHlwZSB0b1NlcnZpY2VXb3JrZXJDbGllbnRGcmFtZVR5cGUo
U2NyaXB0RXhlY3V0aQogCiBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSBTZXJ2aWNlV29ya2VyQ2xp
ZW50RGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKIHsKLSAgICByZXR1cm4geyBpZGVudGlmaWVy
LCB0eXBlLCBmcmFtZVR5cGUsIHVybC5pc29sYXRlZENvcHkoKSB9OworICAgIHJldHVybiB7IGlk
ZW50aWZpZXIsIHR5cGUsIGZyYW1lVHlwZSwgdXJsLmlzb2xhdGVkQ29weSgpLCBsYXN0TmF2aWdh
dGlvbldhc0FwcEJvdW5kIH07CiB9CiAKIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIFNlcnZpY2VX
b3JrZXJDbGllbnREYXRhOjpmcm9tKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFNX
Q2xpZW50Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKQEAgLTY1LDExICs2NiwxNCBAQCBTZXJ2aWNl
V29ya2VyQ2xpZW50RGF0YSBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZnJvbShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjbwogICAgIGJvb2wgaXNEb2N1bWVudCA9IGlzPERvY3VtZW50Pihjb250
ZXh0KTsKICAgICBSRUxFQVNFX0FTU0VSVChpc0RvY3VtZW50KTsgLy8gV2UgZG8gbm90IHN1cHBv
cnQgZGVkaWNhdGVkIHdvcmtlcnMgYXMgY2xpZW50cyB5ZXQuCiAKKyAgICBhdXRvJiBkb2N1bWVu
dCA9IGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KTsKKyAgICBhdXRvIGxhc3ROYXZpZ2F0aW9u
V2FzQXBwQm91bmQgPSBkb2N1bWVudC5sb2FkZXIoKSAmJiBkb2N1bWVudC5sb2FkZXIoKS0+bGFz
dE5hdmlnYXRpb25XYXNBcHBCb3VuZCgpID8gTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDo6WWVz
IDogTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDo6Tm87CisKICAgICByZXR1cm4gewotICAgICAg
ICB7IGNvbm5lY3Rpb24uc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSwgZG93bmNhc3Q8RG9j
dW1lbnQ+KGNvbnRleHQpLmlkZW50aWZpZXIoKSB9LAorICAgICAgICB7IGNvbm5lY3Rpb24uc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSwgZG9jdW1lbnQuaWRlbnRpZmllcigpIH0sCiAgICAg
ICAgIGlzRG9jdW1lbnQgPyBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZTo6V2luZG93IDogU2Vydmlj
ZVdvcmtlckNsaWVudFR5cGU6OldvcmtlciwKICAgICAgICAgdG9TZXJ2aWNlV29ya2VyQ2xpZW50
RnJhbWVUeXBlKGNvbnRleHQpLAotICAgICAgICBjb250ZXh0LnVybCgpCisgICAgICAgIGNvbnRl
eHQudXJsKCksIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQKICAgICB9OwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50
RGF0YS5oCmluZGV4IDA0NmUzYWMyZjU1YjllMDc2YWRmMTllYzczY2ZhYTYyMjdkMGI4YTAuLjA5
MDlhOTUzODE2NGQ5ZmQ0MGI0YmU1M2Y0Nzc5ZTA3OTNmNjU5ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5o
CkBAIC0zNywxMSArMzcsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU1dDbGllbnRD
b25uZWN0aW9uOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAorZW51bSBjbGFzcyBM
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIDogYm9vbCB7IE5vLCBZZXMgfTsKKwogc3RydWN0IFNl
cnZpY2VXb3JrZXJDbGllbnREYXRhIHsKICAgICBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmll
ciBpZGVudGlmaWVyOwogICAgIFNlcnZpY2VXb3JrZXJDbGllbnRUeXBlIHR5cGU7CiAgICAgU2Vy
dmljZVdvcmtlckNsaWVudEZyYW1lVHlwZSBmcmFtZVR5cGU7CiAgICAgVVJMIHVybDsKKyAgICBM
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7CiAKICAg
ICBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSBpc29sYXRlZENvcHkoKSBjb25zdDsKIApAQCAtNTQs
NyArNTcsNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudERhdGEgewogdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4KIHZvaWQgU2VydmljZVdvcmtlckNsaWVudERhdGE6OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIgPDwgaWRlbnRpZmllciA8PCB0eXBlIDw8
IGZyYW1lVHlwZSA8PCB1cmw7CisgICAgZW5jb2RlciA8PCBpZGVudGlmaWVyIDw8IHR5cGUgPDwg
ZnJhbWVUeXBlIDw8IHVybCA8PCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOwogfQogCiB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtODAsNyArODMsMTIgQEAgT3B0aW9uYWw8U2VydmljZVdv
cmtlckNsaWVudERhdGE+IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2QKICAgICBpZiAoIXVybCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAg
IHJldHVybiB7IHsgV1RGTW92ZSgqaWRlbnRpZmllciksIFdURk1vdmUoKnR5cGUpLCBXVEZNb3Zl
KCpmcmFtZVR5cGUpLCBXVEZNb3ZlKCp1cmwpIH0gfTsKKyAgICBPcHRpb25hbDxMYXN0TmF2aWdh
dGlvbldhc0FwcEJvdW5kPiBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOworICAgIGRlY29kZXIg
Pj4gbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDsKKyAgICBpZiAoIWxhc3ROYXZpZ2F0aW9uV2Fz
QXBwQm91bmQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7
IFdURk1vdmUoKmlkZW50aWZpZXIpLCBXVEZNb3ZlKCp0eXBlKSwgV1RGTW92ZSgqZnJhbWVUeXBl
KSwgV1RGTW92ZSgqdXJsKSwgV1RGTW92ZSgqbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCkgfSB9
OwogfQogCiB1c2luZyBTZXJ2aWNlV29ya2VyQ2xpZW50c01hdGNoQWxsQ2FsbGJhY2sgPSBXVEY6
OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYm
KT47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNvbnRleHREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEuY3BwCmluZGV4IDE2ZGYyZDgyNDlmODdmNmFlNDM3M2UyNjU2
MjNjM2Q4YTk5YjVlZGYuLmI1YWRkYjMxZGFiY2JhODBiOTRkMDAzNGVhY2YzNjc5NGYxM2FiNGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEuY3BwCkBAIC00NCw2ICs0NCw3IEBAIFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Omlzb2xhdGVkQ29weSgpIGNvbnN0
CiAgICAgICAgIHNjcmlwdFVSTC5pc29sYXRlZENvcHkoKSwKICAgICAgICAgd29ya2VyVHlwZSwK
ICAgICAgICAgbG9hZGVkRnJvbURpc2ssCisgICAgICAgIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91
bmQsCiAgICAgICAgIGNyb3NzVGhyZWFkQ29weShzY3JpcHRSZXNvdXJjZU1hcCkKICAgICB9Owog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YS5oCmluZGV4IDE0YWJjYWQ2NGM5OWExYzg3MTM2YmJjMGY2ZDljYzU2
MWVmMjgxMjAuLmVmZGZhN2M1MDJlODA4NDMwOTcyNWI2NGM4NzAzM2Y2ZWQwMzZhY2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNvbnRleHREYXRhLmgKQEAgLTM5LDYgKzM5LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitlbnVtIGNsYXNzIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgOiBib29sOworCiBzdHJ1Y3Qg
U2VydmljZVdvcmtlckNvbnRleHREYXRhIHsKICAgICBzdHJ1Y3QgSW1wb3J0ZWRTY3JpcHQgewog
ICAgICAgICBTY3JpcHRCdWZmZXIgc2NyaXB0OwpAQCAtODcsNiArODksNyBAQCBzdHJ1Y3QgU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhIHsKICAgICBVUkwgc2NyaXB0VVJMOwogICAgIFdvcmtlclR5
cGUgd29ya2VyVHlwZTsKICAgICBib29sIGxvYWRlZEZyb21EaXNrOworICAgIE9wdGlvbmFsPExh
c3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ+IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7CiAgICAg
SGFzaE1hcDxVUkwsIEltcG9ydGVkU2NyaXB0PiBzY3JpcHRSZXNvdXJjZU1hcDsKIAogICAgIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKQEAgLTk5
LDcgKzEwMiw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2Rl
ciA8PCBqb2JEYXRhSWRlbnRpZmllciA8PCByZWdpc3RyYXRpb24gPDwgc2VydmljZVdvcmtlcklk
ZW50aWZpZXIgPDwgc2NyaXB0IDw8IGNvbnRlbnRTZWN1cml0eVBvbGljeSA8PCByZWZlcnJlclBv
bGljeQotICAgICAgICA8PCBzY3JpcHRVUkwgPDwgd29ya2VyVHlwZSA8PCBsb2FkZWRGcm9tRGlz
ayA8PCBzY3JpcHRSZXNvdXJjZU1hcCA8PCBjZXJ0aWZpY2F0ZUluZm87CisgICAgICAgIDw8IHNj
cmlwdFVSTCA8PCB3b3JrZXJUeXBlIDw8IGxvYWRlZEZyb21EaXNrIDw8IGxhc3ROYXZpZ2F0aW9u
V2FzQXBwQm91bmQgPDwgc2NyaXB0UmVzb3VyY2VNYXAgPDwgY2VydGlmaWNhdGVJbmZvOwogfQog
CiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtMTQ0LDYgKzE0NywxMCBAQCBPcHRpb25hbDxT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZGVjb2Rl
KERlY29kZXImIGRlYwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobG9hZGVkRnJvbURpc2spKQog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCisgICAgT3B0aW9uYWw8TGFzdE5hdmlnYXRp
b25XYXNBcHBCb3VuZD4gbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDsKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCiAgICAgSGFzaE1hcDxVUkwsIEltcG9ydGVkU2NyaXB0PiBzY3JpcHRSZXNv
dXJjZU1hcDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNjcmlwdFJlc291cmNlTWFwKSkKICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTE2NCw2ICsxNzEsNyBAQCBPcHRpb25hbDxT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZGVjb2Rl
KERlY29kZXImIGRlYwogICAgICAgICBXVEZNb3ZlKHNjcmlwdFVSTCksCiAgICAgICAgIHdvcmtl
clR5cGUsCiAgICAgICAgIGxvYWRlZEZyb21EaXNrLAorICAgICAgICBXVEZNb3ZlKGxhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQpLAogICAgICAgICBXVEZNb3ZlKHNjcmlwdFJlc291cmNlTWFwKQog
ICAgIH19OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKaW5kZXggODBk
YzAzN2RiNzczZjY1YzVjY2QzM2JmYjQ2MjMwZDdkMDI0ZWM2My4uZjc3M2FjZDM1Y2IwMjVmNjZj
NzZjNjNkYmExNTgyMjBhMWY4MzYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHkuY3BwCkBAIC0xMTYsNiArMTE2LDkgQEAgU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpTZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHkoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmkKICAgICBt
X3JlbW90ZURlYnVnZ2FibGUtPnNldFJlbW90ZURlYnVnZ2luZ0FsbG93ZWQodHJ1ZSk7CiAgICAg
bV9yZW1vdGVEZWJ1Z2dhYmxlLT5pbml0KCk7CiAjZW5kaWYKKworICAgIGlmIChkYXRhLmxhc3RO
YXZpZ2F0aW9uV2FzQXBwQm91bmQpCisgICAgICAgIHNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91
bmQoZGF0YS5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kID09IExhc3ROYXZpZ2F0aW9uV2FzQXBw
Qm91bmQ6Olllcyk7CiB9CiAKIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6flNlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eSgpCkBAIC0xMzAsNiArMTMzLDExIEBAIHZvaWQgU2VydmljZVdvcmtlclRo
cmVhZFByb3h5OjpzZXRMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKGJvb2wgd2FzQXBwQm91bmQp
CiAgICAgICAgIG1fZG9jdW1lbnQtPmxvYWRlcigpLT5zZXRMYXN0TmF2aWdhdGlvbldhc0FwcEJv
dW5kKHdhc0FwcEJvdW5kKTsKIH0KIAorYm9vbCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6Omxh
c3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoKQoreworICAgIHJldHVybiBtX2RvY3VtZW50LT5sb2Fk
ZXIoKSA/IG1fZG9jdW1lbnQtPmxvYWRlcigpLT5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKCkg
OiBmYWxzZTsKK30KKwogYm9vbCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnBvc3RUYXNrRm9y
TW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzayYmIHRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBpZiAobV9pc1Rlcm1pbmF0
aW5nT3JUZXJtaW5hdGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaAppbmRleCBi
ZmM4N2YyNDkwNTQ3NjY5ZjliMDQxZjhhMjcxZDcyN2NlZDJmZTg5Li4xZmQ1ZGFiMzYxMTJhNjYx
ZTYxMmQ4YjRiMTY4NWVjMWQyZmMxOGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHkuaApAQCAtODIsNiArODIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRTYXZlU2NyaXB0c1Rv
RGlzayhTY3JpcHRCdWZmZXImJiwgSGFzaE1hcDxVUkwsIFNjcmlwdEJ1ZmZlcj4mJiBpbXBvcnRl
ZFNjcmlwdHMpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMYXN0TmF2aWdhdGlvbldh
c0FwcEJvdW5kKGJvb2wpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbGFzdE5hdmlnYXRpb25X
YXNBcHBCb3VuZCgpOwogCiBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIFNlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eShQYWdlQ29uZmlndXJhdGlvbiYmLCBTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGEmJiwgU3RyaW5nJiYgdXNlckFnZW50LCBDYWNoZVN0b3JhZ2VQcm92aWRlciYsIFN0b3JhZ2VC
bG9ja2luZ1BvbGljeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCmluZGV4IDlkMGRhZWFh
MmQzMGE3ZjI0ZjQ0MDIyNzkwNTBiNWIxM2ViZWIwOGMuLjY1MzdlOTUxNzM2YmVhZjE3MWZiNjE4
NWZjN2QyOGVkZTI0ODQ2MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCkBAIC01Njks
NyArNTY5LDcgQEAgU3RyaW5nIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzKCkK
ICAgICAgICAgYXV0byByZWdpc3RyYXRpb25JZGVudGlmaWVyID0gU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbklkZW50aWZpZXI6OmdlbmVyYXRlKCk7CiAgICAgICAgIGF1dG8gc2VydmljZVdvcmtl
ckRhdGEgPSBTZXJ2aWNlV29ya2VyRGF0YSB7IHdvcmtlcklkZW50aWZpZXIsIHNjcmlwdFVSTCwg
U2VydmljZVdvcmtlclN0YXRlOjpBY3RpdmF0ZWQsICp3b3JrZXJUeXBlLCByZWdpc3RyYXRpb25J
ZGVudGlmaWVyIH07CiAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uID0gU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRhdGEgeyBXVEZNb3ZlKCprZXkpLCByZWdpc3RyYXRpb25JZGVudGlmaWVyLCBX
VEZNb3ZlKHNjb3BlVVJMKSwgKnVwZGF0ZVZpYUNhY2hlLCBsYXN0VXBkYXRlQ2hlY2tUaW1lLCBX
VEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgV1RGTW92ZShzZXJ2aWNlV29ya2VyRGF0YSkgfTsK
LSAgICAgICAgYXV0byBjb250ZXh0RGF0YSA9IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7IFdU
Rjo6bnVsbG9wdCwgV1RGTW92ZShyZWdpc3RyYXRpb24pLCB3b3JrZXJJZGVudGlmaWVyLCBXVEZN
b3ZlKHNjcmlwdCksIFdURk1vdmUoKmNlcnRpZmljYXRlSW5mbyksIFdURk1vdmUoKmNvbnRlbnRT
ZWN1cml0eVBvbGljeSksIFdURk1vdmUocmVmZXJyZXJQb2xpY3kpLCBXVEZNb3ZlKHNjcmlwdFVS
TCksICp3b3JrZXJUeXBlLCB0cnVlLCBXVEZNb3ZlKHNjcmlwdFJlc291cmNlTWFwKSB9OworICAg
ICAgICBhdXRvIGNvbnRleHREYXRhID0gU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsgV1RGOjpu
dWxsb3B0LCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbiksIHdvcmtlcklkZW50aWZpZXIsIFdURk1vdmUo
c2NyaXB0KSwgV1RGTW92ZSgqY2VydGlmaWNhdGVJbmZvKSwgV1RGTW92ZSgqY29udGVudFNlY3Vy
aXR5UG9saWN5KSwgV1RGTW92ZShyZWZlcnJlclBvbGljeSksIFdURk1vdmUoc2NyaXB0VVJMKSwg
KndvcmtlclR5cGUsIHRydWUsIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6Ok5vLCBXVEZNb3Zl
KHNjcmlwdFJlc291cmNlTWFwKSB9OwogCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29udGV4dERhdGEgPSBjb250ZXh0RGF0YS5pc29s
YXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmFkZFJl
Z2lzdHJhdGlvblRvU3RvcmUoV1RGTW92ZShjb250ZXh0RGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCAxMzkyZjQ0
MTRkOWFmZWRmNDYwMDI0Zjk3OGFiNmNkYjQxMTQwYjBlLi5hZmM1ODg0MzQyOTU4MGM3ZmNhZjhh
YjA3ZDE4ZTFhNjJhNmQ0OWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtNjQ4LDcgKzY0OCwyNCBAQCB2b2lkIFNXU2Vy
dmVyOjpyZW1vdmVDbGllbnRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKENvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIFNlcgogCiB2b2lkIFNXU2VydmVyOjp1cGRhdGVXb3JrZXIoY29uc3QgU2Vydmlj
ZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBqb2JEYXRhSWRlbnRpZmllciwgU1dTZXJ2ZXJSZWdp
c3RyYXRpb24mIHJlZ2lzdHJhdGlvbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFNjcmlwdEJ1ZmZl
ciYgc2NyaXB0LCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgY29uc3Qg
Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQb2xp
Y3ksIGNvbnN0IFN0cmluZyYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUgdHlwZSwgSGFzaE1h
cDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYgc2NyaXB0
UmVzb3VyY2VNYXApCiB7Ci0gICAgdHJ5SW5zdGFsbENvbnRleHREYXRhKFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSB7IGpvYkRhdGFJZGVudGlmaWVyLCByZWdpc3RyYXRpb24uZGF0YSgpLCBTZXJ2
aWNlV29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwgc2NyaXB0LCBjZXJ0aWZpY2F0ZUluZm8s
IGNvbnRlbnRTZWN1cml0eVBvbGljeSwgcmVmZXJyZXJQb2xpY3ksIHVybCwgdHlwZSwgZmFsc2Us
IFdURk1vdmUoc2NyaXB0UmVzb3VyY2VNYXApIH0pOworICAgIHRyeUluc3RhbGxDb250ZXh0RGF0
YShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgeyBqb2JEYXRhSWRlbnRpZmllciwgcmVnaXN0cmF0
aW9uLmRhdGEoKSwgU2VydmljZVdvcmtlcklkZW50aWZpZXI6OmdlbmVyYXRlKCksIHNjcmlwdCwg
Y2VydGlmaWNhdGVJbmZvLCBjb250ZW50U2VjdXJpdHlQb2xpY3ksIHJlZmVycmVyUG9saWN5LCB1
cmwsIHR5cGUsIGZhbHNlLCBjbGllbnRJc0FwcEJvdW5kRm9yUmVnaXN0cmFibGVEb21haW4oUmVn
aXN0cmFibGVEb21haW4odXJsKSksIFdURk1vdmUoc2NyaXB0UmVzb3VyY2VNYXApIH0pOworfQor
CitMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIFNXU2VydmVyOjpjbGllbnRJc0FwcEJvdW5kRm9y
UmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikKK3sKKyAg
ICBhdXRvIGNsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluSXRlcmF0b3IgPSBtX2NsaWVudHNCeVJl
Z2lzdHJhYmxlRG9tYWluLmZpbmQoZG9tYWluKTsKKyAgICBpZiAoY2xpZW50c0J5UmVnaXN0cmFi
bGVEb21haW5JdGVyYXRvciA9PSBtX2NsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluLmVuZCgpKQor
ICAgICAgICByZXR1cm4gTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDo6Tm87CisKKyAgICBhdXRv
JiBjbGllbnRzRm9yUmVnaXN0cmFibGVEb21haW4gPSBjbGllbnRzQnlSZWdpc3RyYWJsZURvbWFp
bkl0ZXJhdG9yLT52YWx1ZTsKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IGNsaWVudHNGb3JSZWdp
c3RyYWJsZURvbWFpbikgeworICAgICAgICBhdXRvIGRhdGEgPSBtX2NsaWVudHNCeUlkLmZpbmQo
Y2xpZW50KTsKKyAgICAgICAgQVNTRVJUKGRhdGEgIT0gbV9jbGllbnRzQnlJZC5lbmQoKSk7Cisg
ICAgICAgIGlmIChkYXRhLT52YWx1ZS5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kID09IExhc3RO
YXZpZ2F0aW9uV2FzQXBwQm91bmQ6OlllcykKKyAgICAgICAgICAgIHJldHVybiBMYXN0TmF2aWdh
dGlvbldhc0FwcEJvdW5kOjpZZXM7CisgICAgfQorCisgICAgcmV0dXJuIExhc3ROYXZpZ2F0aW9u
V2FzQXBwQm91bmQ6Ok5vOwogfQogCiB2b2lkIFNXU2VydmVyOjp0cnlJbnN0YWxsQ29udGV4dERh
dGEoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgZGF0YSkKQEAgLTg2OSwxMCArODg2LDI0IEBA
IFNXU2VydmVyUmVnaXN0cmF0aW9uKiBTV1NlcnZlcjo6cmVnaXN0cmF0aW9uRnJvbVNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKFNlcnZpY2VXCiAgICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1ZS0+cmVn
aXN0cmF0aW9uKCk7CiB9CiAKK3ZvaWQgU1dTZXJ2ZXI6OnVwZGF0ZUFwcEJvdW5kVmFsdWVGb3JX
b3JrZXJzKGNvbnN0IENsaWVudE9yaWdpbiYgY2xpZW50T3JpZ2luLCBMYXN0TmF2aWdhdGlvbldh
c0FwcEJvdW5kIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpCit7CisgICAgZm9yIChhdXRvJiB3
b3JrZXIgOiBtX3J1bm5pbmdPclRlcm1pbmF0aW5nV29ya2Vycy52YWx1ZXMoKSkgeworICAgICAg
ICBpZiAod29ya2VyLT5vcmlnaW4oKS5jbGllbnRSZWdpc3RyYWJsZURvbWFpbigpID09IGNsaWVu
dE9yaWdpbi5jbGllbnRSZWdpc3RyYWJsZURvbWFpbigpKQorICAgICAgICAgICAgd29ya2VyLT51
cGRhdGVBcHBCb3VuZFZhbHVlKGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOworICAgIH0KK30K
Kwogdm9pZCBTV1NlcnZlcjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KENsaWVudE9yaWdp
biYmIGNsaWVudE9yaWdpbiwgU2VydmljZVdvcmtlckNsaWVudERhdGEmJiBkYXRhLCBjb25zdCBP
cHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4mIGNvbnRyb2xsaW5n
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFN0cmluZyYmIHVzZXJBZ2VudCkK
IHsKICAgICBhdXRvIGNsaWVudElkZW50aWZpZXIgPSBkYXRhLmlkZW50aWZpZXI7CiAKKyAgICAv
LyBVcGRhdGUgdGhlIGFwcC1ib3VuZCB2YWx1ZSBpZiB0aGUgbmV3IGNsaWVudCBpcyBhcHAtYm91
bmQgYW5kIHRoZSBjdXJyZW50IGNsaWVudHMgZm9yIHRoZSBvcmlnaW4gYXJlIG5vdCBtYXJrZWQg
YXBwLWJvdW5kLgorICAgIGlmIChkYXRhLmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgPT0gTGFz
dE5hdmlnYXRpb25XYXNBcHBCb3VuZDo6WWVzKSB7CisgICAgICAgIGlmIChjbGllbnRJc0FwcEJv
dW5kRm9yUmVnaXN0cmFibGVEb21haW4oY2xpZW50T3JpZ2luLmNsaWVudFJlZ2lzdHJhYmxlRG9t
YWluKCkpID09IExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6Ok5vKQorICAgICAgICAgICAgdXBk
YXRlQXBwQm91bmRWYWx1ZUZvcldvcmtlcnMoY2xpZW50T3JpZ2luLCBkYXRhLmxhc3ROYXZpZ2F0
aW9uV2FzQXBwQm91bmQpOworICAgIH0KKwogICAgIEFTU0VSVCghbV9jbGllbnRzQnlJZC5jb250
YWlucyhjbGllbnRJZGVudGlmaWVyKSk7CiAgICAgbV9jbGllbnRzQnlJZC5hZGQoY2xpZW50SWRl
bnRpZmllciwgV1RGTW92ZShkYXRhKSk7CiAKQEAgLTkwOCw2ICs5MzksNyBAQCB2b2lkIFNXU2Vy
dmVyOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoQ2xpZW50T3JpZ2luJiYgY2xpZW50T3Jp
Z2luLCBTZXJ2aWNlVwogdm9pZCBTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGll
bnQoY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIFNlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIpCiB7CiAgICAgYXV0byBjbGllbnRSZWdpc3RyYWJs
ZURvbWFpbiA9IGNsaWVudE9yaWdpbi5jbGllbnRSZWdpc3RyYWJsZURvbWFpbigpOworICAgIGF1
dG8gYXBwQm91bmRWYWx1ZUJlZm9yZSA9IGNsaWVudElzQXBwQm91bmRGb3JSZWdpc3RyYWJsZURv
bWFpbihjbGllbnRPcmlnaW4uY2xpZW50UmVnaXN0cmFibGVEb21haW4oKSk7CiAKICAgICBib29s
IHdhc1JlbW92ZWQgPSBtX2NsaWVudHNCeUlkLnJlbW92ZShjbGllbnRJZGVudGlmaWVyKTsKICAg
ICBBU1NFUlRfVU5VU0VEKHdhc1JlbW92ZWQsIHdhc1JlbW92ZWQpOwpAQCAtOTUwLDYgKzk4Miwx
MiBAQCB2b2lkIFNXU2VydmVyOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBD
bGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgUwogICAgIGlmIChjbGllbnRzRm9yUmVnaXN0cmFi
bGVEb21haW4uaXNFbXB0eSgpKQogICAgICAgICBtX2NsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWlu
LnJlbW92ZShjbGllbnRzQnlSZWdpc3RyYWJsZURvbWFpbkl0ZXJhdG9yKTsKIAorICAgIC8vIElm
IHRoZSBhcHAtYm91bmQgdmFsdWUgY2hhbmdlZCBhZnRlciB0aGlzIGNsaWVudCB3YXMgcmVtb3Zl
ZCwgd2Uga25vdyBpdCB3YXMgdGhlIG9ubHkgYXBwLWJvdW5kCisgICAgLy8gY2xpZW50IGZvciBp
dHMgb3JpZ2luLCBhbmQgd2Ugc2hvdWxkIHVwZGF0ZSBhbGwgd29ya2VycyB0byByZWZsZWN0IHRo
aXMuCisgICAgYXV0byBhcHBCb3VuZFZhbHVlQWZ0ZXIgPSBjbGllbnRJc0FwcEJvdW5kRm9yUmVn
aXN0cmFibGVEb21haW4oY2xpZW50T3JpZ2luLmNsaWVudFJlZ2lzdHJhYmxlRG9tYWluKCkpOwor
ICAgIGlmIChhcHBCb3VuZFZhbHVlQmVmb3JlICE9IGFwcEJvdW5kVmFsdWVBZnRlcikKKyAgICAg
ICAgdXBkYXRlQXBwQm91bmRWYWx1ZUZvcldvcmtlcnMoY2xpZW50T3JpZ2luLCBhcHBCb3VuZFZh
bHVlQWZ0ZXIpOworCiAgICAgYXV0byByZWdpc3RyYXRpb25JdGVyYXRvciA9IG1fY2xpZW50VG9D
b250cm9sbGluZ1JlZ2lzdHJhdGlvbi5maW5kKGNsaWVudElkZW50aWZpZXIpOwogICAgIGlmIChy
ZWdpc3RyYXRpb25JdGVyYXRvciA9PSBtX2NsaWVudFRvQ29udHJvbGxpbmdSZWdpc3RyYXRpb24u
ZW5kKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRleCBkMGVkN2M5MjM2N2UxN2JjOTM4MmNmODBjZDVl
OGM2ODM3YjczY2ViLi5iYTM3Y2VhOTEyOTdkNjQ5OWFhMmE5ZWJkODgyODZjNDk0ZjY5NjFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5o
CkBAIC0yMTcsNiArMjE3LDggQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBTZWNv
bmRzIGRlZmF1bHRUZXJtaW5hdGlvbkRlbGF5ID0gMTBfczsKIAorICAgIExhc3ROYXZpZ2F0aW9u
V2FzQXBwQm91bmQgY2xpZW50SXNBcHBCb3VuZEZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJik7CisKIHByaXZhdGU6CiAgICAgdm9pZCB2YWxpZGF0ZVJlZ2lzdHJh
dGlvbkRvbWFpbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJik7CiAKQEAgLTI0Miw2ICsyNDQsOCBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCBjb250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7
CiAKKyAgICB2b2lkIHVwZGF0ZUFwcEJvdW5kVmFsdWVGb3JXb3JrZXJzKGNvbnN0IENsaWVudE9y
aWdpbiYsIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOworCiAgICAgSGFzaE1hcDxTV1NlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8Q29ubmVjdGlvbj4+IG1fY29u
bmVjdGlvbnM7CiAgICAgSGFzaE1hcDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LCBXZWFr
UHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPj4gbV9zY29wZVRvUmVnaXN0cmF0aW9uTWFwOwogICAg
IEhhc2hNYXA8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVl
X3B0cjxTV1NlcnZlclJlZ2lzdHJhdGlvbj4+IG1fcmVnaXN0cmF0aW9uczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4IGJhNThmNzg3OGE0Mzg5YjQ1NDU2MmI3MmI1
YTVmNWNhNTRlMjM3NTIuLmE4YmIwNzBlY2RmNmY2NWVkYTI0ZTU4MjZkODZkNzNjZGQyN2Y2Y2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtNTIsNiArNTIsNyBA
QCBwdWJsaWM6CiAKICAgICAvLyBNZXNzYWdlcyB0byB0aGUgU1cgaG9zdCBwcm9jZXNzCiAgICAg
dmlydHVhbCB2b2lkIGluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVBcHBCb3VuZFZhbHVlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBMYXN0
TmF2aWdhdGlvbldhc0FwcEJvdW5kKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZpcmVJbnN0YWxs
RXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmly
ZUFjdGl2YXRlRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgdGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSA9IDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29y
a2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJX
b3JrZXIuY3BwCmluZGV4IDEzNTQwZWRkOTBiMzUwMWM3M2M0ZjMyMjUzNDM0MjY4M2I5ZjZhM2Qu
Ljk3MjU3MDA2ZThhMjdjZDA1YWMzNGI0MDA1YzllY2M5YmE0ZjdkODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIu
Y3BwCkBAIC02Miw2ICs2Miw3IEBAIFNXU2VydmVyV29ya2VyOjpTV1NlcnZlcldvcmtlcihTV1Nl
cnZlciYgc2VydmVyLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0CiAgICAgLCBtX3Jl
Z2lzdHJhYmxlRG9tYWluKG1fZGF0YS5zY3JpcHRVUkwpCiAgICAgLCBtX3NjcmlwdFJlc291cmNl
TWFwKFdURk1vdmUoc2NyaXB0UmVzb3VyY2VNYXApKQogICAgICwgbV90ZXJtaW5hdGlvblRpbWVy
KCp0aGlzLCAmU1dTZXJ2ZXJXb3JrZXI6OnRlcm1pbmF0aW9uVGltZXJGaXJlZCkKKyAgICAsIG1f
bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChtX3NlcnZlci0+Y2xpZW50SXNBcHBCb3VuZEZvclJl
Z2lzdHJhYmxlRG9tYWluKG1fcmVnaXN0cmFibGVEb21haW4pKQogewogICAgIG1fZGF0YS5zY3Jp
cHRVUkwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAKQEAgLTg2LDcgKzg3LDE4IEBAIFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YSBTV1NlcnZlcldvcmtlcjo6Y29udGV4dERhdGEoKSBjb25z
dAogewogICAgIEFTU0VSVChtX3JlZ2lzdHJhdGlvbik7CiAKLSAgICByZXR1cm4geyBXVEY6Om51
bGxvcHQsIG1fcmVnaXN0cmF0aW9uLT5kYXRhKCksIG1fZGF0YS5pZGVudGlmaWVyLCBtX3Njcmlw
dCwgbV9jZXJ0aWZpY2F0ZUluZm8sIG1fY29udGVudFNlY3VyaXR5UG9saWN5LCBtX3JlZmVycmVy
UG9saWN5LCBtX2RhdGEuc2NyaXB0VVJMLCBtX2RhdGEudHlwZSwgZmFsc2UsIG1fc2NyaXB0UmVz
b3VyY2VNYXAgfTsKKyAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIG1fcmVnaXN0cmF0aW9uLT5k
YXRhKCksIG1fZGF0YS5pZGVudGlmaWVyLCBtX3NjcmlwdCwgbV9jZXJ0aWZpY2F0ZUluZm8sIG1f
Y29udGVudFNlY3VyaXR5UG9saWN5LCBtX3JlZmVycmVyUG9saWN5LCBtX2RhdGEuc2NyaXB0VVJM
LCBtX2RhdGEudHlwZSwgZmFsc2UsIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCwgbV9zY3Jp
cHRSZXNvdXJjZU1hcCB9OworfQorCit2b2lkIFNXU2VydmVyV29ya2VyOjp1cGRhdGVBcHBCb3Vu
ZFZhbHVlKExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3Vu
ZCkKK3sKKyAgICBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgPSBsYXN0TmF2aWdhdGlvbldh
c0FwcEJvdW5kOworCisgICAgaWYgKCFpc1J1bm5pbmcoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBjb250ZXh0Q29ubmVjdGlvbigpKQorICAgICAgICBj
b25uZWN0aW9uLT51cGRhdGVBcHBCb3VuZFZhbHVlKGlkZW50aWZpZXIoKSwgbGFzdE5hdmlnYXRp
b25XYXNBcHBCb3VuZCk7CiB9CiAKIHZvaWQgU1dTZXJ2ZXJXb3JrZXI6OnRlcm1pbmF0ZShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKaW5kZXggOTRhZTFm
YTI2NTNmZTFjNjYwMWYxNmIxMjAwYTg1OWVlODM2ZjYyMy4uZDg2M2UyNTI0MDlmZDI3NWMwNzM1
YzZlMGQ3OWQwODk0YTMzNzc0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaApAQCAtMTI3LDYgKzEyNyw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldEhhc1RpbWVkT3V0QW55RmV0Y2hUYXNrcygpIHsgbV9oYXNUaW1l
ZE91dEFueUZldGNoVGFza3MgPSB0cnVlOyB9CiAgICAgYm9vbCBoYXNUaW1lZE91dEFueUZldGNo
VGFza3MoKSBjb25zdCB7IHJldHVybiBtX2hhc1RpbWVkT3V0QW55RmV0Y2hUYXNrczsgfQogICAg
IHZvaWQgZGlkRmFpbEhlYXJ0QmVhdENoZWNrKCk7CisgICAgdm9pZCB1cGRhdGVBcHBCb3VuZFZh
bHVlKExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOwogCiBwcml2YXRlOgogICAgIFNXU2VydmVy
V29ya2VyKFNXU2VydmVyJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBjb25zdCBVUkwmLCBjb25z
dCBTY3JpcHRCdWZmZXImLCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mLCBjb25zdCBDb250ZW50U2Vj
dXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBTdHJpbmcmJiByZWZlcnJlclBvbGljeSwgV29y
a2VyVHlwZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmKTsKQEAgLTE1Nyw2ICsxNTgsNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV9oYXNUaW1lZE91dEFueUZldGNoVGFza3MgeyBmYWxzZSB9Owog
ICAgIFZlY3RvcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+PiBtX3Rlcm1pbmF0aW9uQ2FsbGJh
Y2tzOwogICAgIFRpbWVyIG1fdGVybWluYXRpb25UaW1lcjsKKyAgICBMYXN0TmF2aWdhdGlvbldh
c0FwcEJvdW5kIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKaW5kZXgg
Y2Y4Njg2ZTc3NDE3MTU0ODE2ZThiNjJlOTIzMzAzY2MzN2MzMTQ4ZC4uYjI0M2QxNGNiMjNjNjNj
YTc1YTI0M2U1M2Y4NTA1Mjc1MDNjMjIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29u
bmVjdGlvbi5jcHAKQEAgLTE0Nyw3ICsxNDcsNyBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlv
bjo6Y29udHJvbENsaWVudChTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZAog
ICAgICAgICB1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjbGllbnRJZGVudGlmaWVyKTsK
ICAgICB9KTsKIAotICAgIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIGRhdGEgeyBjbGllbnRJZGVu
dGlmaWVyLCBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZTo6V2luZG93LCBTZXJ2aWNlV29ya2VyQ2xp
ZW50RnJhbWVUeXBlOjpOb25lLCByZXF1ZXN0LnVybCgpIH07CisgICAgU2VydmljZVdvcmtlckNs
aWVudERhdGEgZGF0YSB7IGNsaWVudElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGllbnRUeXBl
OjpXaW5kb3csIFNlcnZpY2VXb3JrZXJDbGllbnRGcmFtZVR5cGU6Ok5vbmUsIHJlcXVlc3QudXJs
KCksIHJlcXVlc3QuaXNBcHBCb3VuZCgpID8gV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBC
b3VuZDo6WWVzIDogV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDo6Tm8gfTsKICAg
ICByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoU2VjdXJpdHlPcmlnaW5EYXRhIHsgcmVnaXN0
cmF0aW9uLmtleSgpLnRvcE9yaWdpbigpIH0sIFdURk1vdmUoZGF0YSksIHJlZ2lzdHJhdGlvbi5p
ZGVudGlmaWVyKCksIHJlcXVlc3QuaHR0cFVzZXJBZ2VudCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRleCA0ZjE4YTM1
NzhhODE4Y2ExMmEwM2I3ZjkwZThmNjU5NTg1MjdkOTY4Li44NGQ3YjQ2OWE3M2U3MTgwNzkyZmVi
M2Y3ZWRkNmY2ZTFkY2UwNzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtOTIsNiArOTIsMTEgQEAgdm9pZCBXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb246Omluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBT
ZXJ2aWNlV28KICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6SW5zdGFsbFNlcnZpY2VXb3JrZXIgeyBkYXRhLCB1c2VyQWdlbnQgfSk7CiB9CiAKK3ZvaWQg
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp1cGRhdGVBcHBCb3VuZFZhbHVlKFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpMYXN0
TmF2aWdhdGlvbldhc0FwcEJvdW5kIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpCit7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlVwZGF0ZUFwcEJv
dW5kVmFsdWUoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91
bmQpKTsKK30KKwogdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmZpcmVJbnN0
YWxsRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIp
CiB7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkZp
cmVJbnN0YWxsRXZlbnQoc2VydmljZVdvcmtlcklkZW50aWZpZXIpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCBlYzc3YzFkYjJlYmNi
OWQ0NTA0MmE5MzU4YjRlOTEzNTVhYTllZjA5Li5kODk4NmFhNjc4MGQ0NmExNjRmZGFlNzVhZjZl
YWFjYmQyYzEyZGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5oCkBAIC04Niw2ICs4Niw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBNZXNzYWdl
cyB0byB0aGUgU1cgaG9zdCBXZWJQcm9jZXNzCiAgICAgdm9pZCBpbnN0YWxsU2VydmljZVdvcmtl
ckNvbnRleHQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhJiwgY29uc3Qg
U3RyaW5nJiB1c2VyQWdlbnQpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlQXBwQm91bmRWYWx1ZShX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25X
YXNBcHBCb3VuZCkgZmluYWw7CiAgICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIHRlcm1p
bmF0ZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCA2YmVhNWRiNzJiOTE5MWVl
ZGE3OTM1OTYxNjZkM2NmNDc3ZTA1YmI4Li43YTA2MWI2ZmVkYzFmODZiMTVkMzFlZjI5ZDZkNzI0
NGNhZDgwZDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAg
LTcwMSw2ICs3MDEsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dl
YkNvcmU6Okluc3BlY3Rvck92ZXJsYXk6OkhpZ2hsaWdodCc6IFsnPFdlYkNvcmUvSW5zcGVjdG9y
T3ZlcmxheS5oPiddLAogICAgICAgICAnV2ViQ29yZTo6S2V5ZnJhbWVWYWx1ZUxpc3QnOiBbJzxX
ZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OktleXByZXNzQ29t
bWFuZCc6IFsnPFdlYkNvcmUvS2V5Ym9hcmRFdmVudC5oPiddLAorICAgICAgICAnV2ViQ29yZTo6
TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCc6IFsnPFdlYkNvcmUvU2VydmljZVdvcmtlckNsaWVu
dERhdGEuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkxlZ2FjeUNETVNlc3Npb25DbGllbnQ6Ok1l
ZGlhS2V5RXJyb3JDb2RlJzogWyc8V2ViQ29yZS9MZWdhY3lDRE1TZXNzaW9uLmg+J10sCiAgICAg
ICAgICdXZWJDb3JlOjpMb2NrQmFja0ZvcndhcmRMaXN0JzogWyc8V2ViQ29yZS9GcmFtZUxvYWRl
clR5cGVzLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
cjo6SGFzQWN0aXZpdHknOiBbJzxXZWJDb3JlL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmg+
J10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggNjNjMjI2MGVmYjRi
NzFlMTEwYmYxNGJmNDYyNDg5MjYyNThiYTA1NC4uMDkwMDU0ZjAxNjA2NTlmMDZmYjU3ZTEzMjNh
YWYzYmQwY2EzODE2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAt
MTM1LDYgKzEzNSwxMiBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp1cGRh
dGVQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzUwogICAgIHNldFNob3VsZFVz
ZVNob3J0VGltZW91dChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6
OnNob3VsZFVzZVNlcnZpY2VXb3JrZXJTaG9ydFRpbWVvdXRLZXkoKSkpOwogfQogCit2b2lkIFdl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp1cGRhdGVBcHBCb3VuZFZhbHVlKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpMYXN0TmF2
aWdhdGlvbldhc0FwcEJvdW5kIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpCit7CisgICAgaWYg
KGF1dG8qIHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmds
ZXRvbigpLnNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShzZXJ2aWNlV29ya2VySWRlbnRpZmllcikp
CisgICAgICAgIHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS0+c2V0TGFzdE5hdmlnYXRpb25XYXNB
cHBCb3VuZChsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kID09IFdlYkNvcmU6Okxhc3ROYXZpZ2F0
aW9uV2FzQXBwQm91bmQ6Olllcyk7Cit9CisKIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246Omluc3RhbGxTZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGRh
dGEsIFN0cmluZyYmIHVzZXJBZ2VudCkKIHsKICAgICBhdXRvIHBhZ2VDb25maWd1cmF0aW9uID0g
cGFnZUNvbmZpZ3VyYXRpb25XaXRoRW1wdHlDbGllbnRzKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnNlc3Npb25JRCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCmluZGV4IDA0NTUy
ZGM3MDBiMTlkZjAwZWNjNTZjYmFhMTQ0NGYyY2U1MGFmMWIuLjk1ZDgxODFmMjM1MzZmMGViMzJh
YWRkOGI3ZTdlZDZmN2U2NjUyNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaApA
QCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIk5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmgi
CiAjaW5jbHVkZSAiU2hhcmVhYmxlUmVzb3VyY2UuaCIKICNpbmNsdWRlICJVc2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5o
IgpAQCAtODUsNiArODYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VydmljZVdvcmtlclN0YXJ0
ZWQoT3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiwgV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgZG9lc0hhbmRsZUZldGNoKSBmaW5h
bDsKICAgICB2b2lkIHNlcnZpY2VXb3JrZXJGYWlsZWRUb1N0YXJ0KE9wdGlvbmFsPFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4sIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGV4Y2VwdGlvbk1lc3NhZ2UpIGZpbmFsOwogICAgIHZv
aWQgaW5zdGFsbFNlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRh
JiYsIFN0cmluZyYmIHVzZXJBZ2VudCk7CisgICAgdm9pZCB1cGRhdGVBcHBCb3VuZFZhbHVlKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpMYXN0TmF2aWdhdGlvbldh
c0FwcEJvdW5kKTsKICAgICB2b2lkIHN0YXJ0RmV0Y2goV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6
OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OkZl
dGNoT3B0aW9ucyYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYsIFN0cmluZyYmIHJlZmVycmVy
KTsKICAgICB2b2lkIGNhbmNlbEZldGNoKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElk
ZW50aWZpZXIpOwogICAgIHZvaWQgY29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZShXZWJD
b3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggZmEyZmEwYjFkMmJjZmZlYTlj
YTYyNmY2N2U5MmZlMjA5ODRlNTI2Zi4uODRiMTY4YTA0MGVjZGJjODUyNjU4ZjdkNmNhZDEwNTFi
YzM2YWUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4KQEAgLTI0LDYgKzI0LDcgQEAKIAogbWVzc2FnZXMgLT4gV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CiAgICAgSW5zdGFsbFNlcnZpY2VXb3JrZXIoc3Ry
dWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBjb250ZXh0RGF0YSwgU3RyaW5n
IHVzZXJBZ2VudCkKKyAgICBVcGRhdGVBcHBCb3VuZFZhbHVlKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBlbnVtOmJvb2wgV2ViQ29yZTo6
TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKQogICAg
IFN0YXJ0RmV0Y2goV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciBmZXRjaElkZW50
aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBzdHJ1Y3QgV2ViQ29yZTo6
RmV0Y2hPcHRpb25zIG9wdGlvbnMsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVzdEJvZHks
IFN0cmluZyByZWZlcnJlcikKICAgICBDYW5jZWxGZXRjaChXZWJDb3JlOjpTV1NlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6RmV0
Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllcikKICAgICBDb250aW51ZURpZFJlY2VpdmVGZXRj
aFJlc3BvbnNlKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlm
aWVyKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDBkZjM2MjMwNGI3ZmE1M2I0YjU2MmM1ZjRmMGNjNWRjYWYyYzRhOGMuLmI5NzJlY2E2YzNmYTA0
MzBiMTAzODI2NWI0NmU2ZWRkZWQ2MDExMDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0wNS0yMCAgS2F0ZSBD
aGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBNYXJrIFNlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eSB3aXRoIGEgZGVmYXVsdCBhcHAtYm91bmQgdmFsdWUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzIwMQorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNzc2NjQ0MTY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5u
IEZhYmxldC4KKworICAgICAgICBUZXN0IGNvdmVyYWdlLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tOgorICAgICAgICAo
LVtTV0FwcEJvdW5kUmVxdWVzdE1lc3NhZ2VIYW5kbGVyIHVzZXJDb250ZW50Q29udHJvbGxlcjpk
aWRSZWNlaXZlU2NyaXB0TWVzc2FnZTpdKToKKwogMjAyMS0wNS0yMCAgSm9uYXRoYW4gQmVkYXJk
ICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgW3dlYmtpdHB5XSBGb3J3YXJkIGJvb3Rl
ZCBzaW11bGF0b3JzIHRvIGNoaWxkcmVuIHByb2Nlc3NlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1t
CmluZGV4IDM4ZDJlZTM1MWFlMTg4YjhiZWY5NzM4MDAxNThiYzEwNWRjMDFkYjguLjJhZTk1NTNi
ODFmNWQ4NDUzOWE4ZGE3MTQzMGQ5N2E1ZWY1YmU5MzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3ku
bW0KQEAgLTE4NzcsNCArMTg3NywxNDkgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBXZWJQ
cm9jZXNzUGx1Z2luVGVzdE5vbkFwcEJvdW5kKQogewogICAgIHJ1bldlYlByb2Nlc3NQbHVnSW5U
ZXN0KElzQXBwQm91bmQ6Ok5vKTsKIH0KKworI2lmIFdLX0hBVkVfQ19TUEkKKworc3RhdGljIGNv
bnN0IGNoYXIqIG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAorPHNjcmlw
dD4KKworZnVuY3Rpb24gbG9nKG1zZykKK3sKKyAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5k
bGVycy5zdy5wb3N0TWVzc2FnZShtc2cpOworfQorCituYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5h
ZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBsb2coZXZl
bnQuZGF0YSk7Cit9KTsKKwordHJ5IHsKKyAgICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdp
c3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsKKyAgICAgICAgaWYgKHJlZy5hY3Rp
dmUpIHsKKyAgICAgICAgICAgIHdvcmtlciA9IHJlZy5hY3RpdmU7CisgICAgICAgICAgICB3b3Jr
ZXIucG9zdE1lc3NhZ2UoIlNFQ09ORCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIHdvcmtlciA9IHJlZy5pbnN0YWxsaW5nOworICAgICAgICB3b3JrZXIuYWRkRXZl
bnRMaXN0ZW5lcignc3RhdGVjaGFuZ2UnLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGlmICh3
b3JrZXIuc3RhdGUgPT0gJ2FjdGl2YXRlZCcpCisgICAgICAgICAgICAgICAgd29ya2VyLnBvc3RN
ZXNzYWdlKCJGSVJTVCIpOworICAgICAgICB9KTsKKyAgICB9KS5jYXRjaChmdW5jdGlvbihlcnJv
cikgeworICAgICAgICBsb2coJ1JlZ2lzdHJhdGlvbiBmYWlsZWQgd2l0aDogJyArIGVycm9yKTsK
KyAgICB9KTsKK30gY2F0Y2goZSkgeworICAgIGxvZygnRXhjZXB0aW9uOiAnICsgZSk7Cit9Cis8
L3NjcmlwdD4KKylTV1JFU09VUkNFIjsKKworc3RhdGljIGNvbnN0IGNoYXIqIHNjcmlwdEJ5dGVz
RGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAorc2VsZi5hZGRFdmVudExpc3RlbmVyKCdtZXNz
YWdlJywgYXN5bmMgKGV2ZW50KSA9PiB7CisgICAgaWYgKCFzZWxmLmludGVybmFscykgeworICAg
ICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoJ05vIGludGVybmFscycpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgcXVlcnlBcHBCb3VuZFZhbHVlKGV2ZW50LCBmYWxzZSk7Cit9
KTsKKworYXN5bmMgZnVuY3Rpb24gcXVlcnlBcHBCb3VuZFZhbHVlKGV2ZW50LCBoYXZlU2VudElu
aXRpYWxNZXNzYWdlKQoreworICAgIHZhciByZXN1bHQgPSBhd2FpdCBpbnRlcm5hbHMubGFzdE5h
dmlnYXRpb25XYXNBcHBCb3VuZCgpOworICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgaWYgKGV2
ZW50LmRhdGEgPT0gIkZJUlNUIikgeworICAgICAgICAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNz
YWdlKCdhcHAtYm91bmQnKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmICghaGF2ZVNlbnRJbml0aWFsTWVzc2FnZSkKKyAgICAgICAgICAgIGV2ZW50LnNvdXJj
ZS5wb3N0TWVzc2FnZSgnc3RhcnRzIGFwcC1ib3VuZCcpOworCisgICAgICAgIHF1ZXJ5QXBwQm91
bmRWYWx1ZShldmVudCwgdHJ1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBldmVu
dC5zb3VyY2UucG9zdE1lc3NhZ2UoJ25vbiBhcHAtYm91bmQnKTsKK30KKworKVNXUkVTT1VSQ0Ui
OworCisKK3N0YXRpYyBTdHJpbmcgZXhwZWN0ZWRNZXNzYWdlOworc3RhdGljIGJvb2wgcmVjZWl2
ZWRNZXNzYWdlID0gZmFsc2U7CisKK0BpbnRlcmZhY2UgU1dBcHBCb3VuZFJlcXVlc3RNZXNzYWdl
SGFuZGxlciA6IE5TT2JqZWN0IDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyPgorQGVuZAorCitAaW1w
bGVtZW50YXRpb24gU1dBcHBCb3VuZFJlcXVlc3RNZXNzYWdlSGFuZGxlcgorLSAodm9pZCl1c2Vy
Q29udGVudENvbnRyb2xsZXI6KFdLVXNlckNvbnRlbnRDb250cm9sbGVyICopdXNlckNvbnRlbnRD
b250cm9sbGVyIGRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOihXS1NjcmlwdE1lc3NhZ2UgKiltZXNz
YWdlCit7CisgICAgRVhQRUNUX1dLX1NUUkVRKG1lc3NhZ2UuYm9keSwgZXhwZWN0ZWRNZXNzYWdl
KTsKKyAgICByZWNlaXZlZE1lc3NhZ2UgPSB0cnVlOworfQorQGVuZAorCitURVNUKEluQXBwQnJv
d3NlclByaXZhY3ksIFJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFVwZGF0ZXNBcHBCb3VuZFZh
bHVlKQoreworICAgIHN0YXRpYyBib29sIGlzRG9uZSA9IGZhbHNlOworCisgICAgW1tXS1dlYnNp
dGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0
ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlz
dGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAgICAgIGlzRG9uZSA9IHRydWU7
CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworCisgICAg
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1
cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlBy
b2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107Cisg
ICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhUZXN0V2ViS2l0
QVBJOjpVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJJbnRlcm5hbHNJ
bmplY3RlZEJ1bmRsZVRlc3QiKSk7CisgICAgY29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbCA9IChX
S1Byb2Nlc3NQb29sICopY29udGV4dC5nZXQoKTsKKworICAgIFJldGFpblB0cjxTV0FwcEJvdW5k
UmVxdWVzdE1lc3NhZ2VIYW5kbGVyPiBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tTV0FwcEJv
dW5kUmVxdWVzdE1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgW1tjb25maWd1cmF0
aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2Fn
ZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInN3Il07CisKKyAgICBhdXRvIHdlYlZpZXcxID0gYWRvcHRO
UyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwg
NjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIHdlYlZpZXcyID0g
YWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKworICAgIGF1dG8gZGVs
ZWdhdGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOworICAgIFtkZWxl
Z2F0ZSBzZXREaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6XihXS1dlYlZpZXcgKiwg
TlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCB2b2lkICheY2FsbGJhY2sp
KE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICop
KSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLmF1
dGhlbnRpY2F0aW9uTWV0aG9kLCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmVyVHJ1c3Qp
OworICAgICAgICBjYWxsYmFjayhOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlh
bCwgW05TVVJMQ3JlZGVudGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6Y2hhbGxlbmdlLnByb3RlY3Rp
b25TcGFjZS5zZXJ2ZXJUcnVzdF0pOworICAgIH1dOworCisgICAgd2ViVmlldzEuZ2V0KCkubmF2
aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgd2ViVmlldzIuZ2V0KCkubmF2
aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisKKyAgICBTZXJ2aWNlV29ya2VyVENQ
U2VydmVyIHNlcnZlcih7CisgICAgICAgIHsgInRleHQvaHRtbCIsIG1haW5TV0J5dGVzRGVmYXVs
dFZhbHVlIH0sCisgICAgICAgIHsgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiLCBzY3JpcHRCeXRl
c0RlZmF1bHRWYWx1ZSB9LAorICAgIH0sIHsKKyAgICAgICAgeyAidGV4dC9odG1sIiwgbWFpblNX
Qnl0ZXNEZWZhdWx0VmFsdWUgfSwKKyAgICAgICAgeyAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIs
IHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlIH0sCisgICAgfSk7CisKKyAgICAvLyBMb2FkIFdlYlZp
ZXcgd2l0aCBhbiBhcHAtYm91bmQgcmVxdWVzdC4gV2UgZXhwZWN0IHRoZSBTZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkgdG8gYmUgYXBwLWJvdW5kLgorICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJhcHAt
Ym91bmQiOworICAgIFt3ZWJWaWV3MSBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkTWVzc2FnZSk7CisKKyAgICAvLyBM
b2FkIFdlYlZpZXcgd2l0aCBhIG5vbiBhcHAtYm91bmQgcmVxdWVzdC4gV2UgZXhwZWN0IHRoZSBT
ZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgdG8gYmUgYXBwLWJvdW5kCisgICAgLy8gYXQgZmlyc3Qs
IGJ1dCB0aGVuIGJlY29tZSBub24gYXBwLWJvdW5kIG9uY2UgdGhlIHNlY29uZCB3ZWJWaWV3IGlz
IGNsb3NlZCBhbmQgaXRzIGNsaWVudCBpcyB1bnJlZ2lzdGVyZWQuCisgICAgZXhwZWN0ZWRNZXNz
YWdlID0gInN0YXJ0cyBhcHAtYm91bmQiOworICAgIHJlY2VpdmVkTWVzc2FnZSA9IGZhbHNlOwor
ICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5vbkFwcEJvdW5kUmVxdWVzdCA9IFtOU011dGFibGVV
UkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAiaHR0cDovLzEyNy4wLjAuMTolZC9tYWluLmh0bWwiLCBzZXJ2ZXIu
cG9ydCgpXV1dOworICAgIEFQUF9CT1VORF9SRVFVRVNUX0FERElUSU9OUworCisgICAgW3dlYlZp
ZXcyIGxvYWRSZXF1ZXN0Om5vbkFwcEJvdW5kUmVxdWVzdF07CisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZyZWNlaXZlZE1lc3NhZ2UpOworCisgICAgLy8gQ2xvc2UgdGhlIGFwcC1ib3Vu
ZCB2aWV3LiBXZSBleHBlY3QgdGhhdCB0aGUgZXhpc3Rpbmcgd29ya2VyIHdpbGwgYmVjb21lIG5v
biBhcHAtYm91bmQKKyAgICAvLyBub3cgdGhhdCBhbGwgYXBwLWJvdW5kIGNsaWVudHMgaGF2ZSBi
ZWVuIHJlbW92ZWQuCisgICAgZXhwZWN0ZWRNZXNzYWdlID0gIm5vbiBhcHAtYm91bmQiOworICAg
IHJlY2VpdmVkTWVzc2FnZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3MSBfY2xvc2VdOworICAgIHdl
YlZpZXcxID0gbnVsbHB0cjsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2
ZWRNZXNzYWdlKTsKK30KKworI2VuZGlmCisKICNlbmRpZgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>