<?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>178475</bug_id>
          
          <creation_ts>2017-10-18 11:11:47 -0700</creation_ts>
          <short_desc>Add preliminary support for ServiceWorker Handle Fetch</short_desc>
          <delta_ts>2017-10-20 11:47:32 -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>WebCore 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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=174541</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>178527</dependson>
          <blocked>178491</blocked>
    
    <blocked>178534</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>japhet</cc>
    
    <cc>jlewis3</cc>
    
    <cc>kangil.han</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1361790</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-10-18 11:11:47 -0700</bug_when>
    <thetext>Let&apos;s implement Handle Fetch up to the creation of the fetch event</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361813</commentid>
    <comment_count>1</comment_count>
      <attachid>324142</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-10-18 11:37:50 -0700</bug_when>
    <thetext>Created attachment 324142
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361832</commentid>
    <comment_count>2</comment_count>
      <attachid>324146</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-10-18 12:16:05 -0700</bug_when>
    <thetext>Created attachment 324146
Rebasing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361849</commentid>
    <comment_count>3</comment_count>
      <attachid>324150</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-10-18 12:47:27 -0700</bug_when>
    <thetext>Created attachment 324150
GTK fix try</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361852</commentid>
    <comment_count>4</comment_count>
      <attachid>324146</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-18 12:56:06 -0700</bug_when>
    <thetext>Comment on attachment 324146
Rebasing

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        A script context is now storing its selected service worker identifer. This should be fully implemented later on.

typo: identifer

&gt; Source/WebKit/ChangeLog:19
&gt; +        Future work should try to reduce the cases where the IPC danse is done unnecessarily.

typo: s/danse/dance/g

&gt; Source/WebCore/loader/ResourceLoaderOptions.h:95
&gt; +enum class ServiceWorkersMode {

Is ServiceWorkersMode better than ServiceWorkerMode?

&gt; Source/WebCore/workers/service/ServiceWorkerProvider.h:28
&gt; +#include &lt;wtf/Function.h&gt;

Why is this needed?

&gt; Source/WebCore/workers/service/ServiceWorkerProvider.h:38
&gt; +class CachedResource;

Why are those needed?

&gt; Source/WebKit/StorageProcess/ServiceWorker/WebSWServerConnection.cpp:102
&gt; +void WebSWServerConnection::didReceiveFetchResponse(uint64_t fetchIdentifier, const WebCore::ResourceResponse&amp; response)

Unnecessary WebCore::

&gt; Source/WebKit/StorageProcess/ServiceWorker/WebSWServerConnection.h:57
&gt; +    void failedFetch(uint64_t fetchIdentifier);

naming is not very consistent with other fetch-related methods.

&gt; Source/WebKit/StorageProcess/ServiceWorker/WebSWServerConnection.h:70
&gt; +

One too many blank lines?

&gt; Source/WebKit/StorageProcess/StorageProcess.messages.in:44
&gt; +    FailedFetch(uint64_t serverConnectionIdentifier, uint64_t fetchIdentifier)

Naming is not consistent with other fetch messages.

&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:222
&gt; +        WebProcess::singleton().webLoaderStrategy().scheduleLoadFromNetworkProcess(resourceLoader, request, WTFMove(trackingParameters), shouldClearReferrerOnHTTPSToHTTPRedirect, maximumBufferingTime);

This is confusing, it makes it look like we ask the service worker to handle to load, and then when it is not, we ask the networkProcess. We have to clarify this somehow. Lambda passed to methods are usually completion handlers.
Maybe this could be a completion handler with an error parameter and we would only ask the network process if the error is set?

&gt; Source/WebKit/WebProcess/Storage/ServiceWorkerClientFetch.cpp:27
&gt; +#include &quot;ServiceWorkerClientFetch.h&quot;

I think we usually put this include inside the #if ENABLE().

&gt; Source/WebKit/WebProcess/Storage/ServiceWorkerClientFetch.cpp:37
&gt; +static bool shouldRedirectAsGET(const ResourceRequest&amp; oldRequest, const WebCore::ResourceResponse&amp; response, URL&amp; newURL, bool crossOrigin)

Unnecessary WebCore::

I prefer originalRequest than oldRequest.

The boolean should have a prefix, like isCrossOrigin.

Seems like this method is generic and reusable. We may want to move it to the right header in WebCore. Also, isn&apos;t there already logic for this in WebCore somewhere?

&gt; Source/WebKit/WebProcess/Storage/ServiceWorkerClientFetch.cpp:62
&gt; +static inline ResourceRequest computeNewRequest(const ResourceRequest&amp; oldRequest, const WebCore::ResourceResponse&amp; response)

originalRequest, necessary WebCore::

&gt; Source/WebKit/WebProcess/Storage/ServiceWorkerClientFetch.cpp:68
&gt; +    bool crossOrigin = !protocolHostAndPortAreEqual(oldRequest.url(), newURL);

isCrossOrigin

&gt; Source/WebKit/WebProcess/Storage/ServiceWorkerClientFetch.cpp:71
&gt; +        if (shouldRedirectAsGET(oldRequest, response, newURL, crossOrigin)) {

Should probably be merged with a &amp;&amp; with the previous condition.

&gt; Source/WebKit/WebProcess/Storage/ServiceWorkerClientFetch.cpp:78
&gt; +    // FIXME: Properly handle Referer

Missing period at the end.

&gt; Source/WebKit/WebProcess/Storage/ServiceWorkerClientFetch.h:48
&gt; +    ServiceWorkerClientFetch(Ref&lt;WebCore::ResourceLoader&gt;&amp;&amp; loader, uint64_t identifier, Ref&lt;IPC::Connection&gt;&amp;&amp; connection, WTF::Function&lt;void(WebCore::ResourceLoader&amp;, const WebCore::ResourceRequest&amp;)&gt;&amp;&amp; fallback)

We should probably move this to the cpp.

&gt; Source/WebKit/WebProcess/Storage/ServiceWorkerContextManager.cpp:63
&gt; +    // Hard coding some fetches for testing purpose until we implement the creation of fetch event.

FIXME?

&gt; Source/WebKit/WebProcess/Storage/ServiceWorkerContextManager.h:31
&gt; +#include &lt;WebCore/ExceptionOr.h&gt;

Seems unused?

&gt; Source/WebKit/WebProcess/Storage/WebSWClientConnection.cpp:82
&gt; +//    ASSERT(loader-&gt;options().serviceWorkerIdentifier);

Why is this commented?

&gt; Source/WebKit/WebProcess/Storage/WebSWClientConnection.h:34
&gt; +#include &lt;WebCore/ResourceLoader.h&gt;

Can this be a forward declaration?

&gt; Source/WebKit/WebProcess/Storage/WebServiceWorkerProvider.cpp:61
&gt; +static inline bool shouldHandleFetch(const WebSWClientConnection&amp; connection, CachedResource&amp; resource, const ResourceLoaderOptions&amp; options)

Feels like this should maybe be a method on WebSWClientConnection.

&gt; Source/WebKit/WebProcess/Storage/WebServiceWorkerProvider.h:50
&gt; +    HashMap&lt;uint64_t, Ref&lt;ServiceWorkerClientFetch&gt;&gt; m_ongoingFetches;

I don&apos;t think we should use &quot;Fetches&quot; since this is a verb. Maybe &quot;FetchRequests&quot;? Also, doesn&apos;t the spec use inflight instead of ongoing?

&gt; Source/WebKit/WebProcess/Storage/WebServiceWorkerProvider.h:51
&gt; +    uint64_t m_nextOngoingFetchIdentifier { 0 };

Since we always need to increment it before using it, maybe m_lastFetchRequestIdentifier or m_previousFetchRequestIdentifier or m_currentFetchRequestIdentifier would be better.

&gt; Source/WebKit/WebProcess/WebProcess.cpp:1653
&gt; +    if (!m_serviceWorkerManager)

Can this happen? It seems like this method used to always start a context and now it may fail. Why is it OK?

&gt; Source/WebKit/WebProcess/WebProcess.messages.in:120
&gt; +StartFetchInServiceWorker(uint64_t serverConnectionIdentifier, uint64_t fetchIdentifier, uint64_t serviceWorkerIdentifier, WebCore::ResourceRequest request, struct WebCore::FetchOptions options)

Indentation problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361858</commentid>
    <comment_count>5</comment_count>
      <attachid>324154</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-10-18 12:59:02 -0700</bug_when>
    <thetext>Created attachment 324154
GTK fix try</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361900</commentid>
    <comment_count>6</comment_count>
      <attachid>324169</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-10-18 14:49:05 -0700</bug_when>
    <thetext>Created attachment 324169
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361913</commentid>
    <comment_count>7</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-10-18 15:04:39 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #4)
&gt; Comment on attachment 324146 [details]
&gt; Rebasing

Thanks for the review.
I updated according your comments.
I removed redirection support for now.
I moved to a completion handler taking an enum as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361917</commentid>
    <comment_count>8</comment_count>
      <attachid>324169</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-18 15:20:31 -0700</bug_when>
    <thetext>Comment on attachment 324169
Patch

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

&gt; Source/WebCore/dom/ScriptExecutionContext.h:306
&gt; +    uint64_t m_serviceWorkerIdentifier { 0 };

#if ENABLE(SERVICE_WORKER)

&gt; Source/WebCore/workers/service/server/SWServer.h:43
&gt; +class ResourceRequest;

Does not look needed.

&gt; Source/WebCore/workers/service/server/SWServer.h:47
&gt; +struct FetchOptions;

Does not look needed.

&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:220
&gt; +    WebServiceWorkerProvider::singleton().handleFetch(resourceLoader, resource, webPage ? webPage-&gt;sessionID() : PAL::SessionID::defaultSessionID(), [trackingParameters, shouldClearReferrerOnHTTPSToHTTPRedirect, maximumBufferingTime = maximumBufferingTime(resource), resourceLoader = makeRef(resourceLoader)] (ServiceWorkerClientFetchResult result) mutable {

How about we expose a &apos;canHandleFetch() method on WebServiceWorkerProvider? Then it&apos;s like:
if (provider.canHandleFetch()) {
    provider.handleFetch()
    return;
}
scheduleLoadFromNetworkProcess();

Then I do not think we need the None/Unhandled enum value. We may not need an enum at all.

&gt; Source/WebKit/WebProcess/Storage/ServiceWorkerClientFetch.cpp:27
&gt; +#include &quot;ServiceWorkerClientFetch.h&quot;

This is usually in the #if ENABLE() I believe.

&gt; Source/WebKit/WebProcess/Storage/ServiceWorkerClientFetch.cpp:53
&gt; +    ASSERT(response.httpStatusCode() &lt;= 300 || response.httpStatusCode() &gt;= 400 || response.httpStatusCode() == 304 || response.httpStatusCode() == 305 || response.httpStatusCode() == 306);

I do not think this should be an assertion since it can happen.

&gt; Source/WebKit/WebProcess/Storage/ServiceWorkerClientFetch.h:39
&gt; +enum class ServiceWorkerClientFetchResult { Done, Cancelled, None };

I think this should be moved to ServiceWorkerClientFetch class and simply called &quot;Result&quot;. Also, I do not like the &quot;None&quot; result as I think it is unclear.

How about &quot;Succeeded / Cancelled / Unhandled&quot;?

&gt; Source/WebKit/WebProcess/Storage/ServiceWorkerContextManager.cpp:45
&gt; +    // FIXME: Provide a sensical session ID

Missing period at the end.

&gt; Source/WebKit/WebProcess/Storage/ServiceWorkerContextManager.cpp:46
&gt; +

No need for this extra blank line since the comment also applies to the next line.

&gt; Source/WebKit/WebProcess/Storage/WebToStorageProcessConnection.cpp:37
&gt; +#if ENABLE(SERVICE_WORKER)

Is this really needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361920</commentid>
    <comment_count>9</comment_count>
      <attachid>324174</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-10-18 15:23:14 -0700</bug_when>
    <thetext>Created attachment 324174
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361924</commentid>
    <comment_count>10</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-10-18 15:26:56 -0700</bug_when>
    <thetext> 
&gt; &gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:220
&gt; &gt; +    WebServiceWorkerProvider::singleton().handleFetch(resourceLoader, resource, webPage ? webPage-&gt;sessionID() : PAL::SessionID::defaultSessionID(), [trackingParameters, shouldClearReferrerOnHTTPSToHTTPRedirect, maximumBufferingTime = maximumBufferingTime(resource), resourceLoader = makeRef(resourceLoader)] (ServiceWorkerClientFetchResult result) mutable {
&gt; 
&gt; How about we expose a &apos;canHandleFetch() method on WebServiceWorkerProvider?
&gt; Then it&apos;s like:
&gt; if (provider.canHandleFetch()) {
&gt;     provider.handleFetch()
&gt;     return;
&gt; }
&gt; scheduleLoadFromNetworkProcess();
&gt; 
&gt; Then I do not think we need the None/Unhandled enum value. We may not need
&gt; an enum at all.

canHandleFetch might be asynchronous since we might need to go up to the service worker or storage process to discover we took the wrong path.

I&apos;ll take care of the other comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361927</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-18 15:28:23 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #10)
&gt;  
&gt; &gt; &gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:220
&gt; &gt; &gt; +    WebServiceWorkerProvider::singleton().handleFetch(resourceLoader, resource, webPage ? webPage-&gt;sessionID() : PAL::SessionID::defaultSessionID(), [trackingParameters, shouldClearReferrerOnHTTPSToHTTPRedirect, maximumBufferingTime = maximumBufferingTime(resource), resourceLoader = makeRef(resourceLoader)] (ServiceWorkerClientFetchResult result) mutable {
&gt; &gt; 
&gt; &gt; How about we expose a &apos;canHandleFetch() method on WebServiceWorkerProvider?
&gt; &gt; Then it&apos;s like:
&gt; &gt; if (provider.canHandleFetch()) {
&gt; &gt;     provider.handleFetch()
&gt; &gt;     return;
&gt; &gt; }
&gt; &gt; scheduleLoadFromNetworkProcess();
&gt; &gt; 
&gt; &gt; Then I do not think we need the None/Unhandled enum value. We may not need
&gt; &gt; an enum at all.
&gt; 
&gt; canHandleFetch might be asynchronous since we might need to go up to the
&gt; service worker or storage process to discover we took the wrong path.
&gt; 
&gt; I&apos;ll take care of the other comments.

Then can we rename handleFetch() to something that indicates it may not handle it? e.g. tryHandleFetch() or handleFetchIfNecessary()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361933</commentid>
    <comment_count>12</comment_count>
      <attachid>324169</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-10-18 15:36:22 -0700</bug_when>
    <thetext>Comment on attachment 324169
Patch

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

&gt;&gt; Source/WebKit/WebProcess/Storage/ServiceWorkerClientFetch.cpp:27
&gt;&gt; +#include &quot;ServiceWorkerClientFetch.h&quot;
&gt; 
&gt; This is usually in the #if ENABLE() I believe.

Style is usually to put both together.
Since the header is wrapped in compile flag, this does not change any behavior.

&gt;&gt; Source/WebKit/WebProcess/Storage/WebToStorageProcessConnection.cpp:37
&gt;&gt; +#if ENABLE(SERVICE_WORKER)
&gt; 
&gt; Is this really needed?

This is needed for build systems that do not generate this file yet.
I guess we could add generation in CMakeLists.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361936</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-18 15:37:51 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #12)
&gt; Comment on attachment 324169 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=324169&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit/WebProcess/Storage/ServiceWorkerClientFetch.cpp:27
&gt; &gt;&gt; +#include &quot;ServiceWorkerClientFetch.h&quot;
&gt; &gt; 
&gt; &gt; This is usually in the #if ENABLE() I believe.
&gt; 
&gt; Style is usually to put both together.
&gt; Since the header is wrapped in compile flag, this does not change any
&gt; behavior.
&gt; 
&gt; &gt;&gt; Source/WebKit/WebProcess/Storage/WebToStorageProcessConnection.cpp:37
&gt; &gt;&gt; +#if ENABLE(SERVICE_WORKER)
&gt; &gt; 
&gt; &gt; Is this really needed?
&gt; 
&gt; This is needed for build systems that do not generate this file yet.
&gt; I guess we could add generation in CMakeLists.txt

It looks like people do try to keep CMakeLists up to date when it comes to Service Workers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361938</commentid>
    <comment_count>14</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-10-18 15:45:01 -0700</bug_when>
    <thetext>&gt; Then can we rename handleFetch() to something that indicates it may not
&gt; handle it? e.g. tryHandleFetch() or handleFetchIfNecessary()

I prefer keeping handleFetch.
It refers to the https://w3c.github.io/ServiceWorker/#handle-fetch algorithm which can return null.
As per fetch spec, if returning null, an http fetch will be triggered.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361942</commentid>
    <comment_count>15</comment_count>
      <attachid>324178</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-10-18 15:59:35 -0700</bug_when>
    <thetext>Created attachment 324178
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361952</commentid>
    <comment_count>16</comment_count>
      <attachid>324178</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-18 16:31:56 -0700</bug_when>
    <thetext>Comment on attachment 324178
Patch

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

r=me with comments.

&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.h:80
&gt; +    void scheduleLoadFromNetworkProcess(WebCore::ResourceLoader&amp;, const WebCore::ResourceRequest&amp;, const WebResourceLoader::TrackingParameters&amp;, bool shouldClearReferrerOnHTTPSToHTTPRedirect, Seconds);

I think we should provide the name of the last parameter as it is non-obvious.

&gt; Source/WebKit/WebProcess/Storage/ServiceWorkerClientFetch.cpp:53
&gt; +    if (!(response.httpStatusCode() &lt;= 300 || response.httpStatusCode() &gt;= 400 || response.httpStatusCode() == 304 || response.httpStatusCode() == 305 || response.httpStatusCode() == 306)) {

Can we add a isRedirect() method to ResourceResponseBase so this is reusable? Or a isRedirectResponse(response) function is some Webcore header?

&gt; Source/WebKit/WebProcess/Storage/ServiceWorkerClientFetch.cpp:67
&gt; +    if (auto callback = WTFMove(m_callback))

Why are we calling the completion callback with success here and not in didFinish()?

&gt; Source/WebKit/WebProcess/Storage/ServiceWorkerClientFetch.h:64
&gt; +    RefPtr&lt;WebCore::ResourceLoader&gt; m_loader;

It looks like m_loader cannot currently be null. If so, it should probably be a Ref&lt;&gt; and we should get rid of all the null checks.

&gt; Source/WebKit/WebProcess/Storage/WebServiceWorkerProvider.cpp:90
&gt; +    auto fetch = connection.startFetch(*this, loader, loader.identifier(), WTFMove(callback));

This is a risky pattern. It is common for networking code to fail synchronously, in which case, you&apos;d try to remove the object from m_ongoingFetchTasks (and fail silently) and then add it to m_ongoingFetchTasks even though it is already finished.

&gt; Source/WebKit/WebProcess/WebProcess.h:443
&gt; +    std::optional&lt;ServiceWorkerContextManager&gt; m_serviceWorkerManager;

Why optional and not unique_ptr?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361962</commentid>
    <comment_count>17</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-10-18 17:24:37 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #16)
&gt; Comment on attachment 324178 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=324178&amp;action=review
&gt; 
&gt; r=me with comments.
&gt; 
&gt; &gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.h:80
&gt; &gt; +    void scheduleLoadFromNetworkProcess(WebCore::ResourceLoader&amp;, const WebCore::ResourceRequest&amp;, const WebResourceLoader::TrackingParameters&amp;, bool shouldClearReferrerOnHTTPSToHTTPRedirect, Seconds);
&gt; 
&gt; I think we should provide the name of the last parameter as it is
&gt; non-obvious.

OK
 
&gt; &gt; Source/WebKit/WebProcess/Storage/ServiceWorkerClientFetch.cpp:53
&gt; &gt; +    if (!(response.httpStatusCode() &lt;= 300 || response.httpStatusCode() &gt;= 400 || response.httpStatusCode() == 304 || response.httpStatusCode() == 305 || response.httpStatusCode() == 306)) {
&gt; 
&gt; Can we add a isRedirect() method to ResourceResponseBase so this is
&gt; reusable? Or a isRedirectResponse(response) function is some Webcore header?

Let&apos;s add it when implementing redirections, since this check might be made differently.

&gt; &gt; Source/WebKit/WebProcess/Storage/ServiceWorkerClientFetch.cpp:67
&gt; &gt; +    if (auto callback = WTFMove(m_callback))
&gt; 
&gt; Why are we calling the completion callback with success here and not in
&gt; didFinish()?

We know that we will follow the SW path since we have a response that will go to the ResourceLoader.
So SW handle fetch is returning a non null response, hence why calling the completion handler.
SW may later on return an error if body has an issue.

&gt; &gt; Source/WebKit/WebProcess/Storage/ServiceWorkerClientFetch.h:64
&gt; &gt; +    RefPtr&lt;WebCore::ResourceLoader&gt; m_loader;
&gt; 
&gt; It looks like m_loader cannot currently be null. If so, it should probably
&gt; be a Ref&lt;&gt; and we should get rid of all the null checks.

OK, I put it as a RefPtr so that we can clean the loader in case of cancellation.
But we are cleaning the whole fetch object so it can probably be a Ref.

&gt; &gt; Source/WebKit/WebProcess/Storage/WebServiceWorkerProvider.cpp:90
&gt; &gt; +    auto fetch = connection.startFetch(*this, loader, loader.identifier(), WTFMove(callback));
&gt; 
&gt; This is a risky pattern. It is common for networking code to fail
&gt; synchronously, in which case, you&apos;d try to remove the object from
&gt; m_ongoingFetchTasks (and fail silently) and then add it to
&gt; m_ongoingFetchTasks even though it is already finished.

I would guess in that case that fetch would be null, in which case it would be a RefPtr and we would not add it to the map.

&gt; &gt; Source/WebKit/WebProcess/WebProcess.h:443
&gt; &gt; +    std::optional&lt;ServiceWorkerContextManager&gt; m_serviceWorkerManager;
&gt; 
&gt; Why optional and not unique_ptr?

It removes the need for an additional memory allocation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361992</commentid>
    <comment_count>18</comment_count>
      <attachid>324192</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-10-18 18:29:54 -0700</bug_when>
    <thetext>Created attachment 324192
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362021</commentid>
    <comment_count>19</comment_count>
      <attachid>324192</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-18 19:26:04 -0700</bug_when>
    <thetext>Comment on attachment 324192
Patch for landing

Clearing flags on attachment: 324192

Committed r223650: &lt;https://trac.webkit.org/changeset/223650&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362022</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-18 19:26:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362023</commentid>
    <comment_count>21</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-10-18 19:27:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/35066424&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362200</commentid>
    <comment_count>22</comment_count>
    <who name="Matt Lewis">jlewis3</who>
    <bug_when>2017-10-19 10:48:24 -0700</bug_when>
    <thetext>This revision cause multiple API Failures on all platforms. On Debug platforms it caused additional Assertion failures in API tests.

Debug build:
https://build.webkit.org/builders/Apple%20High%20Sierra%20Debug%20WK2%20%28Tests%29/builds/403
https://build.webkit.org/builders/Apple%20High%20Sierra%20Debug%20WK2%20%28Tests%29/builds/403/steps/run-api-tests/logs/stdio

Release build:
https://build.webkit.org/builders/Apple%20High%20Sierra%20Release%20WK2%20%28Tests%29/builds/536
https://build.webkit.org/builders/Apple%20High%20Sierra%20Release%20WK2%20%28Tests%29/builds/536/steps/run-api-tests/logs/stdio

Talked to Chris and this doe not seem like an easy fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362202</commentid>
    <comment_count>23</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-19 10:58:51 -0700</bug_when>
    <thetext>(In reply to Matt Lewis from comment #22)
&gt; This revision cause multiple API Failures on all platforms. On Debug
&gt; platforms it caused additional Assertion failures in API tests.
&gt; 
&gt; Debug build:
&gt; https://build.webkit.org/builders/
&gt; Apple%20High%20Sierra%20Debug%20WK2%20%28Tests%29/builds/403
&gt; https://build.webkit.org/builders/
&gt; Apple%20High%20Sierra%20Debug%20WK2%20%28Tests%29/builds/403/steps/run-api-
&gt; tests/logs/stdio
&gt; 
&gt; Release build:
&gt; https://build.webkit.org/builders/
&gt; Apple%20High%20Sierra%20Release%20WK2%20%28Tests%29/builds/536
&gt; https://build.webkit.org/builders/
&gt; Apple%20High%20Sierra%20Release%20WK2%20%28Tests%29/builds/536/steps/run-api-
&gt; tests/logs/stdio
&gt; 
&gt; Talked to Chris and this doe not seem like an easy fix.

Reverted in &lt;https://trac.webkit.org/changeset/223692&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362297</commentid>
    <comment_count>24</comment_count>
      <attachid>324278</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-10-19 13:37:52 -0700</bug_when>
    <thetext>Created attachment 324278
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362403</commentid>
    <comment_count>25</comment_count>
      <attachid>324278</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-19 15:45:03 -0700</bug_when>
    <thetext>Comment on attachment 324278
Patch

Clearing flags on attachment: 324278

Committed r223718: &lt;https://trac.webkit.org/changeset/223718&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362404</commentid>
    <comment_count>26</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-19 15:45:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362736</commentid>
    <comment_count>27</comment_count>
    <who name="Matt Lewis">jlewis3</who>
    <bug_when>2017-10-20 09:55:45 -0700</bug_when>
    <thetext>The new patch caused an api failure in WebKit.WebsiteDataStoreCustomPaths on all platforms.
I was able to reproduce the issue:

FAIL WebKit.WebsiteDataStoreCustomPaths

/Volumes/Data/slave/highsierra-debug/build/Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:219
Value of: [WKWebsiteDataStore _defaultDataStoreExists]
  Actual: true
Expected: false

https://build.webkit.org/builders/Apple%20High%20Sierra%20Debug%20WK2%20(Tests)/builds/433/steps/run-api-tests/logs/stdio
https://build.webkit.org/builders/Apple%20High%20Sierra%20Debug%20WK2%20(Tests)/builds/433

Could this just need to have the expectations updated?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362784</commentid>
    <comment_count>28</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-10-20 11:47:32 -0700</bug_when>
    <thetext>(In reply to Matt Lewis from comment #27)
&gt; The new patch caused an api failure in WebKit.WebsiteDataStoreCustomPaths on
&gt; all platforms.
&gt; I was able to reproduce the issue:
&gt; 
&gt; FAIL WebKit.WebsiteDataStoreCustomPaths
&gt; 
&gt; /Volumes/Data/slave/highsierra-debug/build/Tools/TestWebKitAPI/Tests/
&gt; WebKitCocoa/WebsiteDataStoreCustomPaths.mm:219
&gt; Value of: [WKWebsiteDataStore _defaultDataStoreExists]
&gt;   Actual: true
&gt; Expected: false
&gt; 
&gt; https://build.webkit.org/builders/
&gt; Apple%20High%20Sierra%20Debug%20WK2%20(Tests)/builds/433/steps/run-api-tests/
&gt; logs/stdio
&gt; https://build.webkit.org/builders/
&gt; Apple%20High%20Sierra%20Debug%20WK2%20(Tests)/builds/433
&gt; 
&gt; Could this just need to have the expectations updated?

Filed https://bugs.webkit.org/show_bug.cgi?id=178596.
I will update the expectation and reopen the bug for further investigation.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324142</attachid>
            <date>2017-10-18 11:37:50 -0700</date>
            <delta_ts>2017-10-18 12:16:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178475-20171018113749.patch</filename>
            <type>text/plain</type>
            <size>105303</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzNTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzY5MDU0YzFiZDYwMWM4
MjczMjNmOWRhYzk2NjUzNjg4MmYzOTVlYy4uOTY4ZWIzODVjNmI2MDAwYTEyNjUwNTczYjQ4NGM5
NjU5OWUzOWJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE3LTEwLTE4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgcHJlbGltaW5hcnkg
c3VwcG9ydCBmb3IgU2VydmljZVdvcmtlciBIYW5kbGUgRmV0Y2gKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODQ3NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvd29ya2Vycy9z
ZXJ2aWNlL2Jhc2ljLWZldGNoLmh0dHBzLmh0bWwKKworICAgICAgICBBZGRpbmcgcGFyYW1ldGVy
cyB0byBhbGxvdyBXZWJLaXQgdG8gZG8gbG9hZGluZyB0aHJvdWdoIFNlcnZpY2UgV29ya2VyIG9y
IHRocm91Z2ggcmVndWxhciBuZXR3b3JraW5nLgorICAgICAgICBBIHNjcmlwdCBjb250ZXh0IGlz
IG5vdyBzdG9yaW5nIGl0cyBzZWxlY3RlZCBzZXJ2aWNlIHdvcmtlciBpZGVudGlmZXIuIFRoaXMg
c2hvdWxkIGJlIGZ1bGx5IGltcGxlbWVudGVkIGxhdGVyIG9uLgorICAgICAgICBUaGlzIHNlbGVj
dGVkIHNlcnZpY2Ugd29ya2VyIGlkZW50aWZpZXIgaXMgcGFzc2VkIHRvIGxvYWRpbmcgY29kZSBh
cyBhIFJlc291cmNlTG9hZGVyT3B0aW9ucyBmaWVsZC4KKyAgICAgICAgU2VydmljZSB3b3JrZXJz
IG1vZGUgaXMgYWxzbyBhZGRlZCBhcyBhIFJlc291cmNlTG9hZGVyT3B0aW9ucyBmaWVsZCBzbyB0
aGF0IHRoZSBzZXJ2aWNlIHdvcmtlciBjYW4gYmUgYnlwYXNzZWQuCisKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OnNlbGVjdGVkU2VydmljZVdvcmtlcklkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c2V0U2VsZWN0ZWRTZXJ2aWNlV29ya2VySWRlbnRp
Zmllcik6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OkRvY3VtZW50VGhyZWFk
YWJsZUxvYWRlcik6CisgICAgICAgICogbG9hZGVyL0ZldGNoT3B0aW9ucy5oOgorICAgICAgICAo
V2ViQ29yZTo6aXNQb3RlbnRpYWxOYXZpZ2F0aW9uT3JTdWJyZXNvdXJjZVJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6aXNOb25TdWJyZXNvdXJjZVJlcXVlc3QpOgorICAgICAgICAqIGxvYWRl
ci9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaDoKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFk
YWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVy
OjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVh
ZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Ok1haW5UaHJlYWRCcmlkZ2UpOgorICAgICAg
ICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFk
Lmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRX
aXRoUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
clByb3ZpZGVyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0
TWFuYWdlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlclRocmVhZC5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXIuaDoKKwogMjAxNy0xMC0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgogCiAgICAgICAgIEFkZCBhbiBlZmZpY2llbnQgZGF0YSBzdHJ1Y3R1cmUgZm9yIFdlYkNvcmUg
dG8gcXVlcnkgaWYgdGhlcmUgaXMgYSBTZXJ2aWNlIFdvcmtlciByZWdpc3RlcmVkIGZvciBhIGdp
dmVuIG9yaWdpbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCAxYTcwZTBhNTZhMTU3ZmE2YzAxZTc0M2E5OTFhOTliZDM3
NjkxNTg5Li4zNTY4NzI2N2FjZTBiYTMyNzEwNjA0M2FjYjg0NjgwMWM2ZTI5NDNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDg2IEBACisyMDE3LTEwLTE4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KKworICAgICAgICBBZGQgcHJlbGltaW5hcnkgc3VwcG9ydCBmb3IgU2VydmljZVdv
cmtlciBIYW5kbGUgRmV0Y2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3ODQ3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFByZWxpbWluYXJ5IHN1cHBvcnQgb2YgSGFuZGxlIEZldGNoIGFsZ29yaXRobSBh
bmQgaW50ZWdyYXRpb24gd2l0aCBmZXRjaCBzcGVjLgorICAgICAgICBBZGRpbmcgU2VydmljZVdv
cmtlckNsaWVudEZldGNoIGFzIHRoZSBjbGFzcyByZXNwb25zaWJsZSB0byBkbyB0aGUgbG9hZCB0
aHJvdWdoIFNlcnZpY2VXb3JrZXIuCisgICAgICAgIEl0IGlzIHNpbWlsYXIgdG8gV2ViUmVzb3Vy
Y2VMb2FkZXIgdGhhdCBkbyB0aGUgbG9hZCB0aHJvdWdoIE5ldHdvcmtQcm9jZXNzLgorICAgICAg
ICBJbiBjYXNlIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaCBpcyBub3QgYWJsZSB0byBsb2FkIHRo
cm91Z2ggU2VydmljZVdvcmtlciwKKyAgICAgICAgaXQgd2lsbCBmYWxsYmFjayB0byBXZWJSZXNv
dXJjZUxvYWRlciB0aHJvdWdoIGEgZmFsbGJhY2sgY2FsbGJhY2suCisKKyAgICAgICAgTG9hZGlu
ZyB0aHJvdWdoIFNlcnZpY2UgV29ya2VyIGlzIGRvbmUgY3VycmVudGx5IGlmOgorICAgICAgICAt
IFRoZXJlIGlzIGEgc2VydmljZSB3b3JrZXIgcmVnaXN0ZXJlZCBmb3IgdGhhdCBvcmlnaW4KKyAg
ICAgICAgLSBSZXF1ZXN0IGlzIGEgc3VicmVzb3VyY2UKKyAgICAgICAgLSBzZXJ2aWNlIHdvcmtl
cnMgbW9kZSBpcyBhbGwKKyAgICAgICAgVGhlcmUgd2lsbCBiZSBjYXNlcyB3aGVyZSB0aGUgc2Vy
dmljZSB3b3JrZXIgd2lsbCBub3QgZG8gdGhlIGxvYWRpbmcsIGZvciBpbnN0YW5jZSB3aGVuIGZl
dGNoIGV2ZW50IGhhbmRsZXIgaXMgbm90IHNldC4KKyAgICAgICAgRnV0dXJlIHdvcmsgc2hvdWxk
IHRyeSB0byByZWR1Y2UgdGhlIGNhc2VzIHdoZXJlIHRoZSBJUEMgZGFuc2UgaXMgZG9uZSB1bm5l
Y2Vzc2FyaWx5LgorCisgICAgICAgIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaCBpcyByZXNwb25z
aWJsZSB0byBhZGFwdCB0aGUgU2VydmljZVdvcmtlciByZXNwb25zZSB0byBSZXNvdXJjZUxvYWRl
ci4KKyAgICAgICAgSW4gcGFydGljdWxhciwgaXQgaXMgY2FsbGluZyBSZXNvdXJjZUxvYWRlciBl
cnJvciBjYWxsYmFjayBpZiByZXNwb25zZSBpcyBvZiB0eXBlIGVycm9yLgorICAgICAgICBJdCBp
cyBjYWxsaW5nIFJlc291cmNlTG9hZGVyIHJlZGlyZWN0aW9uIGNhbGxiYWNrIGlmIHJlc3BvbnNl
IGlzIGEgcmVkaXJlY3Rpb24gcmVzcG9uc2UuCisKKyAgICAgICAgSW1wbGVtZW50aW5nIHRoZSBJ
UEMgY29tbXVuaWNhdGlvbiBkZWRpY2F0ZWQgdG8gZmV0Y2ggYmV0d2VlbiBXZWJQcm9jZXNzIGFu
ZCBTZXJ2aWNlV29ya2VyIHRocm91Z2ggU3RvcmFnZVByb2Nlc3MuCisgICAgICAgIEluIHRoZSBm
dXR1cmUsIFdlYlByb2Nlc3Mgc2hvdWxkIGNyZWF0ZSBhIGRpcmVjdCBJUEMgY29tbXVuaWNhdGlv
biB0byB0aGUgU2VydmljZVdvcmtlciBwcm9jZXNzLgorCisgICAgICAgIE1vdmVkIFNXQ29udGV4
dE1hbmFnZXIgZnJvbSBXZWJDb3JlIHRvIFdlYktpdCBhbmQgcmVuYW1lZCBpdCB0byBTZXJ2aWNl
V29ya2VyQ29udGV4dE1hbmFnZXIuCisgICAgICAgIFRoaXMgY2xhc3MgaXMgbW92ZWQgdG8gV2Vi
S2l0IGFzIGl0IHdpbGwgaGF2ZSB0byBoYW5kbGUgSVBDIGFuZCBoYXZpbmcgYSBzZXBhcmF0aW9u
IHdpbGwgYWRkIHNvbWUgdW5uZWNlc3NhcnkgYm9pbGVycGxhdGUuCisKKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpzdGFydEZldGNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uOjpkaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNX
U2VydmVyQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUZldGNoRGF0YSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6ZGlkRmluaXNoRmV0Y2gpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OmZhaWxlZEZldGNoKToKKyAgICAgICAgKiBTdG9yYWdl
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oOgorICAgICAgICAq
IFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OmZhaWxlZEZldGNoKToKKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZVByb2Nlc3M6OmRpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKToKKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OmRpZFJlY2VpdmVGZXRjaERhdGEpOgorICAgICAgICAo
V2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6ZGlkRmluaXNoRmV0Y2gpOgorICAgICAgICAqIFN0b3Jh
Z2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmg6CisgICAgICAgICogU3RvcmFnZVByb2Nlc3MvU3Rv
cmFnZVByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0
ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9h
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9t
TmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJT
dHJhdGVneS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xp
ZW50RmV0Y2guY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6c2hvdWxkUmVkaXJlY3RBc0dF
VCk6CisgICAgICAgIChXZWJLaXQ6OmNvbXB1dGVOZXdSZXF1ZXN0KToKKyAgICAgICAgKFdlYktp
dDo6c2hvdWxkUmVkaXJlY3QpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyQ2xpZW50
RmV0Y2g6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3Jr
ZXJDbGllbnRGZXRjaDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNl
V29ya2VyQ2xpZW50RmV0Y2g6OmRpZEZpbmlzaEZldGNoKToKKyAgICAgICAgKFdlYktpdDo6U2Vy
dmljZVdvcmtlckNsaWVudEZldGNoOjpkaWRGYWlsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0
b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gubWVzc2FnZXMuaW46IEFkZGVk
LgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFn
ZXIuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU1dDb250ZXh0TWFuYWdlci5jcHAuCisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJD
b250ZXh0TWFuYWdlcjo6c3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4dCk6CisgICAgICAgIChXZWJL
aXQ6OlNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlcjo6c3RhcnRGZXRjaCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFu
YWdlci5oLgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXI6OlNl
cnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50
Q29ubmVjdGlvbjo6c3RhcnRGZXRjaCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ2xpZW50Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
ZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpzaG91bGRIYW5kbGVG
ZXRjaCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6aGFuZGxl
RmV0Y2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OmRpZFJl
Y2VpdmVTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjpnZXRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3M6OnN0YXJ0U2VydmljZVdvcmtlckNvbnRleHQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpzdGFydEZldGNoSW5TZXJ2aWNlV29ya2VyKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW46CisKIDIwMTctMTAtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBBZGQgYW4gZWZmaWNpZW50IGRhdGEgc3RydWN0dXJlIGZvciBXZWJDb3Jl
IHRvIHF1ZXJ5IGlmIHRoZXJlIGlzIGEgU2VydmljZSBXb3JrZXIgcmVnaXN0ZXJlZCBmb3IgYSBn
aXZlbiBvcmlnaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCAwOWIwMjNiMDk1YzJjMjQxOTc1OTIzNWVkZjZhYWNkYjM5NzFjNGIz
Li4wYjJiYjRhZDUxZjgzOTIzNzA3M2QwNmRkODEyOWYxMzMzMzAyYzFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNjc0LDEy
ICsxNjc0LDEyIEBACiAJCTNGRkZGOUFFMTU5RDlCMDYwMDIwQkJENSAvKiBWaWV3cG9ydFN0eWxl
UmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDNGRkZGOUFDMTU5RDlCMDYwMDIwQkJENSAvKiBWaWV3cG9ydFN0eWxlUmVzb2x2ZXIuaCAqLzsg
fTsKIAkJNDEwQjdFNzIxMDQ1RkFCMDAwRDgyMjRGIC8qIEpTTWVzc2FnZUV2ZW50Q3VzdG9tLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMEI3RTcx
MTA0NUZBQjAwMEQ4MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAgKi87IH07CiAJCTQx
MTAzQUFCMUUzOTc5MTAwMDc2OUYwMyAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMDNBQTcx
RTM5NzkwQTAwNzY5RjAzIC8qIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAgKi87IH07
Ci0JCTQxMTAzQUFDMUUzOTc5MTAwMDc2OUYwMyAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTAz
QUE4MUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuaCAqLzsg
fTsKIAkJNDExMDNBQUIxRTM5NzkxMDAwNzY5RjE0IC8qIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZUNvY29hLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxMTAzQUE3MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2VDb2NvYS5jcHAgKi87IH07CisJCTQxMTAzQUFDMUUzOTc5MTAwMDc2OUYwMyAvKiBSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxMTAzQUE4MUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZU91dGdvaW5n
QXVkaW9Tb3VyY2UuaCAqLzsgfTsKIAkJNDExMDNBQUMxRTM5NzkxMDAwNzY5RjE0IC8qIFJlYWx0
aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTEwM0FBODFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlQ29jb2EuaCAqLzsgfTsKIAkJNDExMDNBQUQxRTM5NzkxMDAwNzY5
RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDExMDNBQTkxRTM5NzkwQTAwNzY5RjAzIC8qIFJl
YWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oICovOyB9OwotCQk0MTEwM0FBRTFFMzk3OTEwMDA3
NjlGMDMgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTAzQUFBMUUzOTc5MEEwMDc2OUYwMyAv
KiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwICovOyB9OwogCQk0MTEwM0FBRDFFMzk3
OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTAzQUE5MUUzOTc5MEEw
MDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oICovOyB9OworCQk0
MTEwM0FBRTFFMzk3OTEwMDA3NjlGMDMgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMTAzQUFB
MUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwICovOyB9
OwogCQk0MTEwM0FBRTFFMzk3OTEwMDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291
cmNlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDExMDNBQUExRTM5NzkwQTAwNzY5RjE0IC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJj
ZUNvY29hLmNwcCAqLzsgfTsKIAkJNDEyMzA4MUIxMzhDNDI5NzAwQkNDRkNBIC8qIFdlYkNvcmUu
ZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTNGMTlCMUEwODI0NUU1QTAwMUU5QUJDIC8qIFdlYkNvcmUuZnJhbWV3b3JrICovOyB9Owog
CQk0MTIzMDkxMzEzOEM0MkZGMDBCQ0NGQ0EgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIGlu
IEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjgyMTYyOTkw
MjlGNEZCNTAxMDAwMTMxIC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLzsgfTsKQEAgLTIz
MzMsOCArMjMzMyw2IEBACiAJCTUxN0E2M0M2MUI3NDMxOTIwMEU3RENEQyAvKiBLZXllZEVuY29k
ZXJDRi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3
QTYzQzIxQjc0MzE3RTAwRTdEQ0RDIC8qIEtleWVkRW5jb2RlckNGLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE3QjI1QTkxQ0M4MkIyQTAwNjFD
MDExIC8qIElEQkNvbm5lY3Rpb25Qcm94eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdCMjVBNzFDQzgyMDMyMDA2MUMwMTEgLyogSURCQ29ubmVj
dGlvblByb3h5LmNwcCAqLzsgfTsKIAkJNTE3QjI1QUExQ0M4MkIyQTAwNjFDMDExIC8qIElEQkNv
bm5lY3Rpb25Qcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE3QjI1QTgxQ0M4MjAzMjAwNjFDMDExIC8qIElEQkNvbm5lY3Rpb25Qcm94eS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTUxN0M4NzBB
MUY4RUJCMjUwMEVCODA3NiAvKiBTV0NvbnRleHRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0M4NzA4MUY4RUI5QkYwMEVCODA3NiAv
KiBTV0NvbnRleHRNYW5hZ2VyLmNwcCAqLzsgfTsKLQkJNTE3Qzg3MEIxRjhFQkIyNTAwRUI4MDc2
IC8qIFNXQ29udGV4dE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxN0M4NzA5MUY4RUI5QzAwMEVCODA3NiAvKiBTV0NvbnRleHRNYW5hZ2Vy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE3
Qzg3MTgxRjhGRDREOTAwRUI4MDc2IC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdDODcxNjFGOEZE
NEQzMDBFQjgwNzYgLyogU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcCAqLzsgfTsKIAkJNTE3
REVFRTUxREU5NEFEQzAwQjkxNjQ0IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0RFRUUz
MURFOTRBREMwMEI5MTY0NCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMubW0gKi87
IH07CiAJCTUxN0RFRUU4MURFOTRCMDgwMEI5MTY0NCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1
bGF0b3JNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxN0RFRUU3MURFOTRCMDgwMEI5MTY0NCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JN
YWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
Mjc0NiwxMCArMjc0NCwxMCBAQAogCQk1Q0Q5RjU2NjFBQTBGNzNDMDBEQTQ1RkYgLyogREZBQnl0
ZWNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
MzkzMDVEMUFBMEY2QTkwMDI5QzgxNiAvKiBERkFCeXRlY29kZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDRDlGNTY3MUFBMEY3NDIwMERBNDVG
RiAvKiBERkFCeXRlY29kZUNvbXBpbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1QzM5MzA1RjFBQTBGNkE5MDAyOUM4MTYgLyogREZBQnl0ZWNvZGVD
b21waWxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTVDRDlGNTY4MUFBMEY3NDYwMERBNDVGRiAvKiBERkFCeXRlY29kZUludGVycHJldGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzM5MzA2MTFB
QTBGNkE5MDAyOUM4MTYgLyogREZBQnl0ZWNvZGVJbnRlcnByZXRlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTVDREQ4MzNEMUU0MzI0RDkwMDYy
MUU5MiAvKiBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNERDgzM0IxRTQzMjRCQjAwNjIxRTkyIC8q
IFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5jcHAgKi87IH07CiAJCTVDREQ4MzNEMUU0MzI0
RDkwMDYyMUI4MyAvKiBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0REODMzQjFFNDMyNEJC
MDA2MjFCODMgLyogUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EuY3BwICovOyB9Owot
CQk1Q0REODMzRTFFNDMyNERDMDA2MjFFOTIgLyogUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDREQ4
MzM5MUU0MzI0QkIwMDYyMUU5MiAvKiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuY3BwICov
OyB9OworCQk1Q0REODMzRDFFNDMyNEQ5MDA2MjFFOTIgLyogUmVhbHRpbWVPdXRnb2luZ1ZpZGVv
U291cmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVDREQ4MzNCMUU0MzI0QkIwMDYyMUU5MiAvKiBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2Uu
Y3BwICovOyB9OwogCQk1Q0REODMzRTFFNDMyNERDMDA2MjFFODMgLyogUmVhbHRpbWVJbmNvbWlu
Z1ZpZGVvU291cmNlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNUNERDgzMzkxRTQzMjRCQjAwNjIxRTgzIC8qIFJlYWx0aW1lSW5jb21pbmdW
aWRlb1NvdXJjZUNvY29hLmNwcCAqLzsgfTsKKwkJNUNERDgzM0UxRTQzMjREQzAwNjIxRTkyIC8q
IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0REODMzOTFFNDMyNEJCMDA2MjFFOTIgLyogUmVhbHRp
bWVJbmNvbWluZ1ZpZGVvU291cmNlLmNwcCAqLzsgfTsKIAkJNUNERDgzNjQxRTQzMjVBMDAwNjIx
RTkyIC8qIExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0REODMzRjFFNDMyNTNEMDA2MjFFOTIgLyog
TGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCAqLzsgfTsKIAkJNUNERkE2QzgxQUE0RjJE
QTAwRUE4NzQ2IC8qIENvbnRlbnRFeHRlbnNpb25BY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0RGQTZDNzFBQTRGMkRBMDBFQTg3NDYgLyog
Q29udGVudEV4dGVuc2lvbkFjdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1Q0U1RDlBQjFEQjg5QTAzMDBDRTdBOEQgLyogSlNUZXh0RGVj
b2Rlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
Q0U1RDlBNzFEQjg5OUZDMDBDRTdBOEQgLyogSlNUZXh0RGVjb2Rlci5jcHAgKi87IH07CkBAIC05
NDc1LDEyICs5NDczLDEyIEBACiAJCTNGRkZGOUFDMTU5RDlCMDYwMDIwQkJENSAvKiBWaWV3cG9y
dFN0eWxlUmVzb2x2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlld3Bv
cnRTdHlsZVJlc29sdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMEI3RTcx
MTA0NUZBQjAwMEQ4MjI0RiAvKiBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lc3NhZ2VFdmVudEN1c3RvbS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTAzQUE3MUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNDExMDNBQTgxRTM5NzkwQTAwNzY5RjAzIC8qIFJlYWx0aW1lT3V0Z29p
bmdBdWRpb1NvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFsdGlt
ZU91dGdvaW5nQXVkaW9Tb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEx
MDNBQTcxRTM5NzkwQTAwNzY5RjE0IC8qIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29h
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlYWx0aW1lT3V0Z29p
bmdBdWRpb1NvdXJjZUNvY29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEx
MDNBQTgxRTM5NzkwQTAwNzY5RjAzIC8qIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExMDNBQTgxRTM5NzkwQTAwNzY5
RjE0IC8qIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29hLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYwMyAvKiBS
ZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTQxMTAzQUFBMUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZUluY29taW5nQXVk
aW9Tb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDExMDNBQTkxRTM5NzkwQTAwNzY5RjE0IC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNv
Y29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWx0aW1lSW5jb21pbmdB
dWRpb1NvdXJjZUNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMTAzQUFB
MUUzOTc5MEEwMDc2OUYwMyAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291
cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExMDNBQUExRTM5NzkwQTAw
NzY5RjE0IC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNvY29hLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZUNv
Y29hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExODlFRjcxQUQ4MjMyODAw
QjkwQTBEIC8qIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTE4OUVGNzFBRDgyMzI4MDBCOTNGNjQgLyogUmVhZGFi
bGVCeXRlU3RyZWFtQ29udHJvbGxlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVhZGFi
bGVCeXRlU3RyZWFtQ29udHJvbGxlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xMDI1MCw4ICsxMDI0OCw2IEBACiAJCTUxN0E2M0MyMUI3NDMxN0UwMEU3RENEQyAvKiBLZXll
ZEVuY29kZXJDRi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLZXllZEVuY29k
ZXJDRi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdCMjVBNzFDQzgyMDMyMDA2
MUMwMTEgLyogSURCQ29ubmVjdGlvblByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IElEQkNvbm5lY3Rpb25Qcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxN0IyNUE4MUNDODIwMzIwMDYxQzAxMSAvKiBJREJDb25uZWN0aW9uUHJveHku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCQ29ubmVjdGlvblByb3h5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxN0M4NzA4MUY4RUI5QkYwMEVCODA3NiAv
KiBTV0NvbnRleHRNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IFNXQ29udGV4dE1hbmFnZXIuY3BwOyBwYXRoID0gd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U1dDb250ZXh0TWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKLQkJNTE3
Qzg3MDkxRjhFQjlDMDAwRUI4MDc2IC8qIFNXQ29udGV4dE1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gU1dDb250ZXh0TWFuYWdlci5oOyBwYXRoID0gd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JP
T1Q7IH07CiAJCTUxN0M4NzEwMUY4RUU3MkUwMEVCODA3NiAvKiBTZXJ2aWNlV29ya2VyVGhyZWFk
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNlcnZpY2VXb3JrZXJUaHJlYWQu
aDsgcGF0aCA9IHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaDsg
c291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQk1MTdDODcxMTFGOEVFNzJGMDBFQjgwNzYg
LyogU2VydmljZVdvcmtlclRocmVhZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBTZXJ2aWNlV29ya2VyVGhyZWFkLmNwcDsgcGF0aCA9IHdvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7
IH07CiAJCTUxN0M4NzE2MUY4RkQ0RDMwMEVCODA3NiAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtl
ckNvbnRleHREYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNzA0LDE0
ICsxMDcwMCwxNCBAQAogCQk1Q0IzN0ZGRDFDNjJEMjc4MDBGMjAxODggLyogU2Nyb2xsQW5pbWF0
b3JNb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbEFuaW1hdG9y
TW9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0JDOERBQTFBQUEzMDIyMDBF
MUM4MDMgLyogTWVkaWFBY2Nlc3NpYmlsaXR5U29mdExpbmsuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFBY2Nlc3NpYmlsaXR5U29mdExpbmsuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0JDOERBQjFBQUEzMDIyMDBFMUM4MDMgLyogTWVk
aWFBY2Nlc3NpYmlsaXR5U29mdExpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTWVkaWFBY2Nlc3NpYmlsaXR5U29mdExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNUNERDgzMzkxRTQzMjRCQjAwNjIxRTkyIC8qIFJlYWx0aW1lSW5jb21pbmdWaWRlb1Nv
dXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWFsdGltZUlu
Y29taW5nVmlkZW9Tb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1Q0RE
ODMzQTFFNDMyNEJCMDA2MjFFOTIgLyogUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJj
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0REODMzOTFFNDMyNEJCMDA2MjFF
ODMgLyogUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2Eu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0REODMzOTFFNDMyNEJCMDA2MjFF
OTIgLyogUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDREQ4MzNBMUU0MzI0QkIwMDYyMUU4MyAvKiBSZWFs
dGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2VDb2NvYS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk1Q0REODMzQjFFNDMyNEJCMDA2MjFFOTIgLyogUmVhbHRpbWVPdXRn
b2luZ1ZpZGVvU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTVDREQ4MzNDMUU0MzI0QkIwMDYyMUU5MiAvKiBSZWFsdGltZU91dGdvaW5nVmlkZW9T
b3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhbHRpbWVPdXRnb2lu
Z1ZpZGVvU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDREQ4MzNBMUU0
MzI0QkIwMDYyMUU5MiAvKiBSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDREQ4MzNCMUU0MzI0QkIwMDYyMUI4MyAvKiBS
ZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDREQ4MzNCMUU0MzI0QkIwMDYyMUU5MiAvKiBS
ZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNUNERDgzM0MxRTQzMjRCQjAwNjIxQjgzIC8qIFJlYWx0aW1lT3V0
Z29pbmdWaWRlb1NvdXJjZUNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTVDREQ4MzNDMUU0MzI0QkIwMDYyMUU5MiAvKiBSZWFsdGltZU91dGdvaW5nVmlk
ZW9Tb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhbHRpbWVPdXRn
b2luZ1ZpZGVvU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDREQ4MzNG
MUU0MzI1M0QwMDYyMUU5MiAvKiBMaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyLmNwcDsgcGF0aCA9IGxpYndlYnJ0Yy9MaWJXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0REODM0MDFFNDMyNTNEMDA2MjFFOTIg
LyogTGliV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IExpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oOyBwYXRoID0gbGlid2VicnRj
L0xpYldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1Q0RGQTZDNzFBQTRGMkRBMDBFQTg3NDYgLyogQ29udGVudEV4dGVuc2lvbkFjdGlvbnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGVudEV4dGVuc2lvbkFjdGlv
bnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2NjM3LDE2ICsxNjYzMywxMiBA
QAogCQkJCTA3NDRFQ0VDMUUwQzRBRTUwMDBEMDk0NCAvKiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJj
ZU1hYy5tbSAqLywKIAkJCQkwN0VFNzZFRDFCRUE2MTk4MDBGODkxMzMgLyogTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2VNYWMuaCAqLywKIAkJCQkwN0VFNzZFRTFCRUE2MTk4MDBGODkxMzMgLyogTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0gKi8sCi0JCQkJNDExMDNBQUExRTM5NzkwQTAwNzY5
RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgKi8sCi0JCQkJNDExMDNBQTkx
RTM5NzkwQTAwNzY5RjAzIC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5oICovLAogCQkJ
CTQxMTAzQUFBMUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VD
b2NvYS5jcHAgKi8sCiAJCQkJNDExMDNBQTkxRTM5NzkwQTAwNzY5RjE0IC8qIFJlYWx0aW1lSW5j
b21pbmdBdWRpb1NvdXJjZUNvY29hLmggKi8sCiAJCQkJNUNERDgzMzkxRTQzMjRCQjAwNjIxRTgz
IC8qIFJlYWx0aW1lSW5jb21pbmdWaWRlb1NvdXJjZUNvY29hLmNwcCAqLywKIAkJCQk1Q0REODMz
QTFFNDMyNEJCMDA2MjFFODMgLyogUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlQ29jb2EuaCAq
LywKIAkJCQk0QTBGRkFBMzFBQUY1RUY2MDA2MjgwM0IgLyogUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlck1hYy5jcHAgKi8sCiAJCQkJNEEwRkZBQTQxQUFGNUVGNjAwNjI4MDNCIC8qIFJlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXJNYWMuaCAqLywKLQkJCQk0MTEwM0FBNzFFMzk3OTBBMDA3NjlGMDMg
LyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcCAqLywKLQkJCQk0MTEwM0FBODFFMzk3
OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmggKi8sCiAJCQkJNDEx
MDNBQTcxRTM5NzkwQTAwNzY5RjE0IC8qIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNvY29h
LmNwcCAqLywKIAkJCQk0MTEwM0FBODFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRpbWVPdXRnb2lu
Z0F1ZGlvU291cmNlQ29jb2EuaCAqLywKIAkJCQk1Q0REODMzQjFFNDMyNEJCMDA2MjFCODMgLyog
UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EuY3BwICovLApAQCAtMTkwOTMsOCArMTkw
ODUsNiBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNTE3Qzg3MTExRjhFRTcyRjAwRUI4MDc2IC8q
IFNlcnZpY2VXb3JrZXJUaHJlYWQuY3BwICovLAogCQkJCTUxN0M4NzEwMUY4RUU3MkUwMEVCODA3
NiAvKiBTZXJ2aWNlV29ya2VyVGhyZWFkLmggKi8sCi0JCQkJNTE3Qzg3MDgxRjhFQjlCRjAwRUI4
MDc2IC8qIFNXQ29udGV4dE1hbmFnZXIuY3BwICovLAotCQkJCTUxN0M4NzA5MUY4RUI5QzAwMEVC
ODA3NiAvKiBTV0NvbnRleHRNYW5hZ2VyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNvbnRleHQ7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzA1NzMsNyArMzA1NjMsNiBAQAogCQkJ
CUIyMjI3QUY2MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdab29tQW5kUGFuLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCMkU0RUM5ODBEMDBDMjJCMDA0MzI2NDMgLyogU1ZHWm9vbUV2ZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTdBNTMxRDFGNEI1M0IxMDBEQ0RDMEEgLyogU1dDbGllbnRDb25uZWN0
aW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTdDODcwQjFGOEVCQjI1MDBFQjgwNzYgLyogU1dD
b250ZXh0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE3QTUyRjAxRjQ3NTM1QjAwRENE
QzBBIC8qIFNXU2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUY2NDU5NzFGNEE2ODZGMDBC
NTRERUQgLyogU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTUxN0E1
MzQ2MUY1MEMxN0YwMERDREMwQSAvKiBTV1NlcnZlcldvcmtlci5oIGluIEhlYWRlcnMgKi8sCkBA
IC0zNDM4MCw3ICszNDM2OSw2IEBACiAJCQkJQjIyMjdBRjUwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R1pvb21BbmRQYW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJFNEVDOTcwRDAwQzIyQjAwNDMy
NjQzIC8qIFNWR1pvb21FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTdBNTMxQzFGNEI1
M0IxMDBEQ0RDMEEgLyogU1dDbGllbnRDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAotCQkJ
CTUxN0M4NzBBMUY4RUJCMjUwMEVCODA3NiAvKiBTV0NvbnRleHRNYW5hZ2VyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxN0E1MkYxMUY0NzU0RTcwMERDREMwQSAvKiBTV1NlcnZlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1MUY2NDU5NjFGNEE2ODZGMDBCNTRERUQgLyogU1dTZXJ2ZXJSZWdp
c3RyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE3QTUzNDUxRjUwQzE3RjAwRENEQzBB
IC8qIFNXU2VydmVyV29ya2VyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggMzJmMTljMzAzZmYwOWMwMzM4MGE0ZjE5
MWEyMDRiMDA5YzBiOWY2MS4uOTY2ZDllN2IyNjIxYjE2MGQwYmM0ODdjMWQ3ODU0YzJjYTdhNGFl
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0y
MzAsNiArMjMwLDExIEBAIHB1YmxpYzoKIAogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGUo
KTsKIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICB1aW50NjRfdCBzZWxlY3RlZFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VySWRl
bnRpZmllcjsgfQorICAgIHZvaWQgc2V0U2VsZWN0ZWRTZXJ2aWNlV29ya2VySWRlbnRpZmllcih1
aW50NjRfdCBpZGVudGlmaWVyKSB7IG1fc2VydmljZVdvcmtlcklkZW50aWZpZXIgPSBpZGVudGlm
aWVyOyB9CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIGNsYXNzIEFkZENvbnNvbGVNZXNzYWdl
VGFzayA6IHB1YmxpYyBUYXNrIHsKICAgICBwdWJsaWM6CkBAIC0yOTcsNiArMzAyLDggQEAgcHJp
dmF0ZToKICNpZiAhQVNTRVJUX0RJU0FCTEVEIHx8IEVOQUJMRShTRUNVUklUWV9BU1NFUlRJT05T
KQogICAgIGJvb2wgbV9hY3RpdmVET01PYmplY3RSZW1vdmFsRm9yYmlkZGVuIHsgZmFsc2UgfTsK
ICNlbmRpZgorCisgICAgdWludDY0X3QgbV9zZXJ2aWNlV29ya2VySWRlbnRpZmllciB7IDAgfTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggOTAyYzg5ZTM5NzM3YzQxMTQx
ZTM1YzJjZTQyZTkyNjY5NzQwYzI5ZS4uNGI0OGY1MWVjMDE3NWZjNmYwMWVlYjRjZTFjOTE3YmYy
MDNmZTg3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5jcHAKQEAgLTEwMyw2ICsxMDMsMTEgQEAgRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBUaHJlYWRh
YmwKIHsKICAgICByZWxheEFkb3B0aW9uUmVxdWlyZW1lbnQoKTsKIAorI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKKyAgICBpZiAobV9vcHRpb25zLnNlcnZpY2VXb3JrZXJzTW9kZSA9PSBTZXJ2
aWNlV29ya2Vyc01vZGU6OkFsbCAmJiAhbV9vcHRpb25zLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KQorICAgICAgICBtX29wdGlvbnMuc2VydmljZVdvcmtlcklkZW50aWZpZXIgPSBkb2N1bWVudC5z
ZWxlY3RlZFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCk7CisjZW5kaWYKKwogICAgIC8vIFNldHRp
bmcgYSByZWZlcnJlciBoZWFkZXIgaXMgb25seSBzdXBwb3J0ZWQgaW4gdGhlIGFzeW5jIGNvZGUg
cGF0aC4KICAgICBBU1NFUlQobV9hc3luYyB8fCBtX3JlZmVycmVyLmlzRW1wdHkoKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GZXRjaE9wdGlvbnMuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GZXRjaE9wdGlvbnMuaAppbmRleCBhNDA0MjAzMDc3NDQwNDJmMWFjMjc2
MmQ2MzIzNjlmOWVhY2I1MTI0Li43M2I5NjI0Yzg2MDkxNmRlYjk5Mzc3NGNhZjgyOGY5NzRmN2Qy
MTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRmV0Y2hPcHRpb25zLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZldGNoT3B0aW9ucy5oCkBAIC02OSw2ICs2OSwyMSBA
QCBpbmxpbmUgRmV0Y2hPcHRpb25zOjpGZXRjaE9wdGlvbnMoRGVzdGluYXRpb24gZGVzdGluYXRp
b24sIE1vZGUgbW9kZSwgQ3JlZGVudGlhbAogewogfQogCitpbmxpbmUgYm9vbCBpc1BvdGVudGlh
bE5hdmlnYXRpb25PclN1YnJlc291cmNlUmVxdWVzdChGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9u
IGRlc3RpbmF0aW9uKQoreworICAgIHJldHVybiBkZXN0aW5hdGlvbiA9PSBGZXRjaE9wdGlvbnM6
OkRlc3RpbmF0aW9uOjpPYmplY3QKKyAgICAgICAgfHwgZGVzdGluYXRpb24gPT0gRmV0Y2hPcHRp
b25zOjpEZXN0aW5hdGlvbjo6RW1iZWQ7Cit9CisKK2lubGluZSBib29sIGlzTm9uU3VicmVzb3Vy
Y2VSZXF1ZXN0KEZldGNoT3B0aW9uczo6RGVzdGluYXRpb24gZGVzdGluYXRpb24pCit7CisgICAg
cmV0dXJuIGRlc3RpbmF0aW9uID09IEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OkRvY3VtZW50
CisgICAgICAgIHx8IGRlc3RpbmF0aW9uID09IEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OlJl
cG9ydAorICAgICAgICB8fCBkZXN0aW5hdGlvbiA9PSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9u
OjpTZXJ2aWNld29ya2VyCisgICAgICAgIHx8IGRlc3RpbmF0aW9uID09IEZldGNoT3B0aW9uczo6
RGVzdGluYXRpb246OlNoYXJlZHdvcmtlcgorICAgICAgICB8fCBkZXN0aW5hdGlvbiA9PSBGZXRj
aE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpXb3JrZXI7Cit9CisKIH0KIAogbmFtZXNwYWNlIFdURiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25z
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgKaW5kZXgg
ZDJhOTJjM2QzZGNmODJlNThmMjJkMDM1Y2JjN2ZkMGIyNTA1NmYzZS4uNWM1YTBkNDI3YjRlOTk2
MGJiN2M1YzdkMWYxZmFjZTU5YTQ0NTRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlck9wdGlvbnMuaApAQCAtOTIsNiArOTIsMTEgQEAgZW51bSBjbGFzcyBJbml0
aWF0b3JDb250ZXh0IHsKICAgICBXb3JrZXIsCiB9OwogCitlbnVtIGNsYXNzIFNlcnZpY2VXb3Jr
ZXJzTW9kZSB7CisgICAgQWxsLAorICAgIE5vbmUsCit9OworCiBzdHJ1Y3QgUmVzb3VyY2VMb2Fk
ZXJPcHRpb25zIDogcHVibGljIEZldGNoT3B0aW9ucyB7CiAgICAgUmVzb3VyY2VMb2FkZXJPcHRp
b25zKCkgeyB9CiAKQEAgLTEyNCw2ICsxMjksOCBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkZXJPcHRp
b25zIDogcHVibGljIEZldGNoT3B0aW9ucyB7CiAgICAgQ2FjaGluZ1BvbGljeSBjYWNoaW5nUG9s
aWN5IHsgQ2FjaGluZ1BvbGljeTo6QWxsb3dDYWNoaW5nIH07CiAgICAgU2FtZU9yaWdpbkRhdGFV
UkxGbGFnIHNhbWVPcmlnaW5EYXRhVVJMRmxhZyB7IFNhbWVPcmlnaW5EYXRhVVJMRmxhZzo6VW5z
ZXQgfTsKICAgICBJbml0aWF0b3JDb250ZXh0IGluaXRpYXRvckNvbnRleHQgeyBJbml0aWF0b3JD
b250ZXh0OjpEb2N1bWVudCB9OworICAgIFNlcnZpY2VXb3JrZXJzTW9kZSBzZXJ2aWNlV29ya2Vy
c01vZGUgeyBTZXJ2aWNlV29ya2Vyc01vZGU6OkFsbCB9OworICAgIHVpbnQ2NF90IHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIHsgMCB9OwogCiAgICAgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGll
bnRDcmVkZW50aWFsUG9saWN5IHsgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xp
ZW50Rm9yQ3JlZGVudGlhbHMgfTsKICAgICB1bnNpZ25lZCBtYXhSZWRpcmVjdENvdW50IHsgMjAg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNw
cAppbmRleCAzM2JiMTJlODFiOGExYzQ5YTBhODY3OTFiOTVkYzhhMjVlNjVjM2U4Li5lMjdhYWE4
ZGI0YzRiNmExMzY1ZjA4Y2VhYWI0MmUzODhmN2FlYTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC01NSw3ICs1NSw3IEBAIHN0
YXRpYyBjb25zdCBjaGFyIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHlNb2RlW10gPSAibG9hZFJl
c291cmNlU3luY2hyb25vdXNseU1vCiBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpXb3JrZXJUaHJl
YWRhYmxlTG9hZGVyKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSwgVGhyZWFk
YWJsZUxvYWRlckNsaWVudCYgY2xpZW50LCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLCBSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9u
cywgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKICAgICA6IG1fd29ya2VyR2xvYmFsU2NvcGUod29y
a2VyR2xvYmFsU2NvcGUpCiAgICAgLCBtX3dvcmtlckNsaWVudFdyYXBwZXIoVGhyZWFkYWJsZUxv
YWRlckNsaWVudFdyYXBwZXI6OmNyZWF0ZShjbGllbnQsIG9wdGlvbnMuaW5pdGlhdG9yKSkKLSAg
ICAsIG1fYnJpZGdlKCpuZXcgTWFpblRocmVhZEJyaWRnZShtX3dvcmtlckNsaWVudFdyYXBwZXIu
Z2V0KCksIHdvcmtlckdsb2JhbFNjb3BlLnRocmVhZCgpLndvcmtlckxvYWRlclByb3h5KCksIHRh
c2tNb2RlLCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCByZWZlcnJlci5pc0VtcHR5KCkgPyB3
b3JrZXJHbG9iYWxTY29wZS51cmwoKS5zdHJpcHBlZEZvclVzZUFzUmVmZXJyZXIoKSA6IHJlZmVy
cmVyLCB3b3JrZXJHbG9iYWxTY29wZS5zZWN1cml0eU9yaWdpbigpLCB3b3JrZXJHbG9iYWxTY29w
ZS5jb250ZW50U2VjdXJpdHlQb2xpY3koKSkpCisgICAgLCBtX2JyaWRnZSgqbmV3IE1haW5UaHJl
YWRCcmlkZ2UobV93b3JrZXJDbGllbnRXcmFwcGVyLmdldCgpLCB3b3JrZXJHbG9iYWxTY29wZS50
aHJlYWQoKS53b3JrZXJMb2FkZXJQcm94eSgpLCB0YXNrTW9kZSwgV1RGTW92ZShyZXF1ZXN0KSwg
b3B0aW9ucywgcmVmZXJyZXIuaXNFbXB0eSgpID8gd29ya2VyR2xvYmFsU2NvcGUudXJsKCkuc3Ry
aXBwZWRGb3JVc2VBc1JlZmVycmVyKCkgOiByZWZlcnJlciwgd29ya2VyR2xvYmFsU2NvcGUpKQog
ewogfQogCkBAIC0xMDEsMTIgKzEwMSwxNSBAQCBMb2FkZXJUYXNrT3B0aW9uczo6TG9hZGVyVGFz
a09wdGlvbnMoY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIGNvbgogfQog
CiBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJp
ZGdlKFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyJiB3b3JrZXJDbGllbnRXcmFwcGVyLCBX
b3JrZXJMb2FkZXJQcm94eSYgbG9hZGVyUHJveHksIGNvbnN0IFN0cmluZyYgdGFza01vZGUsCi0g
ICAgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlv
bnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgb3V0Z29pbmdSZWZlcnJlciwKLSAgICBjb25zdCBT
ZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGlj
eSogY29udGVudFNlY3VyaXR5UG9saWN5KQorICAgIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIG91
dGdvaW5nUmVmZXJyZXIsIFdvcmtlckdsb2JhbFNjb3BlJiBnbG9iYWxTY29wZSkKICAgICA6IG1f
d29ya2VyQ2xpZW50V3JhcHBlcigmd29ya2VyQ2xpZW50V3JhcHBlcikKICAgICAsIG1fbG9hZGVy
UHJveHkobG9hZGVyUHJveHkpCiAgICAgLCBtX3Rhc2tNb2RlKHRhc2tNb2RlLmlzb2xhdGVkQ29w
eSgpKQogeworCisgICAgYXV0byogc2VjdXJpdHlPcmlnaW4gPSBnbG9iYWxTY29wZS5zZWN1cml0
eU9yaWdpbigpOworICAgIGF1dG8qIGNvbnRlbnRTZWN1cml0eVBvbGljeSA9IGdsb2JhbFNjb3Bl
LmNvbnRlbnRTZWN1cml0eVBvbGljeSgpOworCiAgICAgQVNTRVJUKHNlY3VyaXR5T3JpZ2luKTsK
ICAgICBBU1NFUlQoY29udGVudFNlY3VyaXR5UG9saWN5KTsKIApAQCAtMTIxLDYgKzEyNCwxMSBA
QCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJp
ZGdlKFRocmVhZGFibGVMb2FkZXJDbGllbgogICAgIEFTU0VSVChvcHRpb25zQ29weS0+b3B0aW9u
cy5pbml0aWF0b3JDb250ZXh0ID09IEluaXRpYXRvckNvbnRleHQ6OkRvY3VtZW50KTsKICAgICBv
cHRpb25zQ29weS0+b3B0aW9ucy5pbml0aWF0b3JDb250ZXh0ID0gSW5pdGlhdG9yQ29udGV4dDo6
V29ya2VyOwogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIG9wdGlvbnNDb3B5LT5v
cHRpb25zLnNlcnZpY2VXb3JrZXJzTW9kZSA9IGdsb2JhbFNjb3BlLmlzU2VydmljZVdvcmtlckds
b2JhbFNjb3BlKCkgPyBTZXJ2aWNlV29ya2Vyc01vZGU6Ok5vbmUgOiBTZXJ2aWNlV29ya2Vyc01v
ZGU6OkFsbDsKKyAgICBvcHRpb25zQ29weS0+b3B0aW9ucy5zZXJ2aWNlV29ya2VySWRlbnRpZmll
ciA9IGdsb2JhbFNjb3BlLnNlbGVjdGVkU2VydmljZVdvcmtlcklkZW50aWZpZXIoKTsKKyNlbmRp
ZgorCiAgICAgLy8gQ2FuIHdlIGJlbmVmaXQgZnJvbSByZXF1ZXN0IGJlaW5nIGFuIHItdmFsdWUg
dG8gY3JlYXRlIG1vcmUgZWZmaWNpZW50bHkgaXRzIGlzb2xhdGVkIGNvcHk/CiAgICAgbV9sb2Fk
ZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKFt0aGlzLCByZXF1ZXN0ID0gcmVxdWVzdC5pc29sYXRl
ZENvcHkoKSwgb3B0aW9ucyA9IFdURk1vdmUob3B0aW9uc0NvcHkpLCBjb250ZW50U2VjdXJpdHlQ
b2xpY3lDb3B5ID0gV1RGTW92ZShjb250ZW50U2VjdXJpdHlQb2xpY3lDb3B5KV0oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFk
YWJsZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2Fk
ZXIuaAppbmRleCA5N2VjMmQ0MWY5ZDllMDFkY2JiNzE3OWM2MjNkYjczYWIxYzVhMzU0Li4yMmFi
MTQ5ZmVmNzQ3MzdlZmI2NGRiOWRjYzdmMTYxMGRmNTFmYmY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgKQEAgLTg4LDcgKzg4LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjbGFzcyBNYWluVGhyZWFkQnJpZGdlIDogcHVibGlj
IFRocmVhZGFibGVMb2FkZXJDbGllbnQgewogICAgICAgICBwdWJsaWM6CiAgICAgICAgICAgICAv
LyBBbGwgZXhlY3V0ZWQgb24gdGhlIHdvcmtlciBjb250ZXh0J3MgdGhyZWFkLgotICAgICAgICAg
ICAgTWFpblRocmVhZEJyaWRnZShUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlciYsIFdvcmtl
ckxvYWRlclByb3h5JiwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSwgUmVzb3VyY2VSZXF1ZXN0JiYs
IGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiwgY29uc3QgU3RyaW5nJiBvdXRnb2luZ1Jl
ZmVycmVyLCBjb25zdCBTZWN1cml0eU9yaWdpbiosIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGlj
eSopOworICAgICAgICAgICAgTWFpblRocmVhZEJyaWRnZShUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
V3JhcHBlciYsIFdvcmtlckxvYWRlclByb3h5JiwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSwgUmVz
b3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiwgY29uc3QgU3Ry
aW5nJiBvdXRnb2luZ1JlZmVycmVyLCBXb3JrZXJHbG9iYWxTY29wZSYpOwogICAgICAgICAgICAg
dm9pZCBjYW5jZWwoKTsKICAgICAgICAgICAgIHZvaWQgZGVzdHJveSgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCmlu
ZGV4IGI1ZTk0OGVhZWVjMWZkOTBkZGJlNjk4Zjk2NmZiYzdlODVjZTljZGQuLmRhNmFkNjVmMTE4
MjBhNTJlZTU0MTI4ZjM3MDdjZWUwMGY0MTc0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCkBAIC0xMDAsNyArMTAw
LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGh0dHBDb250ZW50VHlw
ZSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SFRUUENvbnRlbnRUeXBlKGNv
bnN0IFN0cmluZyYpOwotICAgIHZvaWQgY2xlYXJIVFRQQ29udGVudFR5cGUoKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGNsZWFySFRUUENvbnRlbnRUeXBlKCk7CiAKICAgICBib29sIGhhc0hU
VFBIZWFkZXIoSFRUUEhlYWRlck5hbWUpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKaW5kZXggYWJjZGNl
YWQ3NzljYWNkYjc0ZjJmZjJmYjZkYmFjYmRiNDllZWEzZi4uZWUzNzNkZGVlYWExNTFhNDA4MzNk
MjFiYzM2OWViNDRjODFlNjY3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaApAQCAtMTUzLDcgKzE1Myw3IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIDEyODA7CiAgICAgfQogCi0gICAgdm9pZCBzZXRUeXBlKFR5
cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VHlwZShUeXBlKTsKICAgICBUeXBlIHR5
cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAogICAgIHZvaWQgc2V0UmVkaXJlY3RlZChi
b29sIGlzUmVkaXJlY3RlZCkgeyBtX2lzUmVkaXJlY3RlZCA9IGlzUmVkaXJlY3RlZDsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKaW5kZXggY2ZlMzQzZWVmNGE1YWY1YjI3MGMx
OGI2ODUwOGYwZjY4YzZhYWI2Yy4uMzk1ZmQ4MDQ5OThjNjBiN2NiNTM3Mzg4YWUwZmQ0ZDA3OGU0
ZGIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCkBAIC02MSw3ICs2MSw3
IEBAIGNsYXNzIFdvcmtlclRocmVhZCA6IHB1YmxpYyBSZWZDb3VudGVkPFdvcmtlclRocmVhZD4g
ewogcHVibGljOgogICAgIHZpcnR1YWwgfldvcmtlclRocmVhZCgpOwogCi0gICAgYm9vbCBzdGFy
dCgpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc3RhcnQoKTsKICAgICB2b2lkIHN0b3AoKTsK
IAogICAgIFRocmVhZElkZW50aWZpZXIgdGhyZWFkSUQoKSBjb25zdCB7IHJldHVybiBtX3RocmVh
ZCA/IG1fdGhyZWFkLT5pZCgpIDogMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCmluZGV4IGQzMGRjNTdh
NmQ4ZGIwNDAxODE5N2U4NjIxZjZjYTI5MTg4MThkYzkuLjk1MzQ1MTc3ZDcwMjZiOTE3ODZlYTAy
YjM1NTVlZjlmNmVmNWE1YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAgLTE3OSw2ICsxNzksOSBA
QCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29sdmVkV2l0aFJlZ2lzdHJhdGlv
bihTZXJ2aWNlV29ya2VySm9iJiBqb2IsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICAv
LyBGSVhNRTogSW1wbGVtZW50IHByb3BlciBzZWxlY3Rpb24gb2Ygc2VydmljZSB3b3JrZXJzLgor
ICAgIGNvbnRleHQtPnNldFNlbGVjdGVkU2VydmljZVdvcmtlcklkZW50aWZpZXIoZGF0YS5pZGVu
dGlmaWVyKTsKKwogICAgIGF1dG8gcmVnaXN0cmF0aW9uID0gU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbjo6Y3JlYXRlKCpjb250ZXh0LCBkYXRhKTsKICAgICBqb2IucHJvbWlzZSgpLnJlc29sdmU8
SURMSW50ZXJmYWNlPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24+PihyZWdpc3RyYXRpb24uZ2V0
KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJQcm92aWRlci5oCmluZGV4IDc2NjFjNTYzMWIxMjNkYTQzY2JiOTcxMGUxYWE1NzFl
NWNkZWFmMjkuLmIwZjNkZmI5NTNmNjU4NWRmMTE2ZjdjMjYyYmVhMDhiYjkwYzU2YTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUHJvdmlk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclBy
b3ZpZGVyLmgKQEAgLTI1LDYgKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDx3
dGYvRnVuY3Rpb24uaD4KKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAogbmFtZXNwYWNl
IFBBTCB7CkBAIC0zMyw2ICszNSwxMCBAQCBjbGFzcyBTZXNzaW9uSUQ7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CitzdHJ1Y3QgRmV0Y2hPcHRpb25zOwor
Y2xhc3MgUmVzb3VyY2VMb2FkZXI7CitjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBTV0Ns
aWVudENvbm5lY3Rpb247CiBjbGFzcyBTZXJ2aWNlV29ya2VySm9iOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFn
ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NGZlNTdlMzEyMTU3NzFjNmE3
YjgzZjVmZGJiNjYyM2RkNDJhMGJlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29u
dGV4dE1hbmFnZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTV0NvbnRleHRNYW5hZ2VyLmgiCi0K
LSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0KLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5j
bHVkZSA8cGFsL1Nlc3Npb25JRC5oPgotCi11c2luZyBuYW1lc3BhY2UgUEFMOwotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLVNXQ29udGV4dE1hbmFnZXImIFNXQ29udGV4dE1hbmFnZXI6OnNpbmds
ZXRvbigpCi17Ci0gICAgc3RhdGljIFNXQ29udGV4dE1hbmFnZXIqIHNoYXJlZE1hbmFnZXIgPSBu
ZXcgU1dDb250ZXh0TWFuYWdlcjsKLSAgICByZXR1cm4gKnNoYXJlZE1hbmFnZXI7Ci19Ci0KLVNX
Q29udGV4dE1hbmFnZXI6OlNXQ29udGV4dE1hbmFnZXIoKQotewotCi19Ci0KLUV4Y2VwdGlvbk9y
PHVpbnQ2NF90PiBTV0NvbnRleHRNYW5hZ2VyOjpzdGFydFNlcnZpY2VXb3JrZXJDb250ZXh0KHVp
bnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEmIGRhdGEpCi17Ci0gICAgLy8gRklYTUU6IFByb3ZpZGUgYSBzZW5zaWNhbCBzZXNz
aW9uIElECi0KLSAgICBhdXRvIHRocmVhZCA9IFNlcnZpY2VXb3JrZXJUaHJlYWQ6OmNyZWF0ZShz
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgZGF0YSwgU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lv
bklEKCkpOwotICAgIGF1dG8gdGhyZWFkSWRlbnRpZmllciA9IHRocmVhZC0+aWRlbnRpZmllcigp
OwotICAgIGF1dG8gcmVzdWx0ID0gbV93b3JrZXJUaHJlYWRNYXAuYWRkKHRocmVhZElkZW50aWZp
ZXIsIFdURk1vdmUodGhyZWFkKSk7Ci0gICAgQVNTRVJUKHJlc3VsdC5pc05ld0VudHJ5KTsKLQot
ICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPnN0YXJ0KCk7Ci0gICAgCi0gICAgTE9HKFNlcnZp
Y2VXb3JrZXIsICJDb250ZXh0IHByb2Nlc3MgUElEOiAlaSBzdGFydGVkIHdvcmtlciB0aHJlYWQg
JXNcbiIsIGdldHBpZCgpLCBkYXRhLndvcmtlcklELnV0ZjgoKS5kYXRhKCkpOwotICAgIAotICAg
IHJldHVybiB0aHJlYWRJZGVudGlmaWVyOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmggYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxNWQ3ZTY5ODIzMjE0NzIzMGI0NzZhZmI4MzFlNDhh
MGYyMGUzMDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5o
CisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotCi0jaW5jbHVkZSAiRXhjZXB0aW9uT3Iu
aCIKLSNpbmNsdWRlICJTZXJ2aWNlV29ya2VyVGhyZWFkLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRl
eHREYXRhOwotCi1jbGFzcyBTV0NvbnRleHRNYW5hZ2VyIHsKLXB1YmxpYzoKLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgU1dDb250ZXh0TWFuYWdlciYgc2luZ2xldG9uKCk7Ci0KLSAgICBXRUJD
T1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx1aW50NjRfdD4gc3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4
dCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhJik7Ci0KLXByaXZhdGU6Ci0gICAgU1dDb250ZXh0TWFuYWdlcigpOwotICAg
IAotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxTZXJ2aWNlV29ya2VyVGhyZWFkPj4gbV93
b3JrZXJUaHJlYWRNYXA7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKaW5kZXggMjJh
MDdiODlmNTljZTU4MDQyYWIwNTI3OWE5YWIwOThlOGE0NTk2MC4uOGRiYTQ4OTg4OTNiNzAwNDRi
NWU3ZjYyZjcyNmEyZGYwY2RmOTU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaApAQCAtNTIs
NyArNTIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBydW5FdmVudExvb3AoKSBvdmVycmlkZTsK
IAogcHJpdmF0ZToKLSAgICBTZXJ2aWNlV29ya2VyVGhyZWFkKHVpbnQ2NF90IHNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmLCBQQUw6OlNl
c3Npb25JRCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU2VydmljZVdvcmtlclRocmVhZCh1aW50NjRf
dCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlckNvbnRleHRE
YXRhJiwgUEFMOjpTZXNzaW9uSUQpOwogCiAgICAgdWludDY0X3QgbV9zZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllcjsKICAgICBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgbV9kYXRhOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCmluZGV4IDFj
MWEyYzkyZTg2N2IzODEzZDkxY2UxZmY4M2YyYmE4Y2NkMDFhMTYuLjZmMGU5MzdiZWQ3NGVlMjA0
OWFlYzY1YWRkYzgzZjdlYjE1ZDhmMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTQwLDkgKzQwLDExIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgU1dTZXJ2ZXJSZWdp
c3RyYXRpb247CiBjbGFzcyBTV1NlcnZlcldvcmtlcjsKIHN0cnVjdCBFeGNlcHRpb25EYXRhOwor
c3RydWN0IEZldGNoT3B0aW9uczsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE7CiBz
dHJ1Y3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0Owogc3RydWN0IFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5t
YWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGJhNDRjYmEyY2Ji
ZDhkNjc5YjRkYjQyNDQ5NWRmODM4NTFjNTQ4YzMuLjA4YjgwOWEyMzA4YTliN2UwYzMzNjhlYmZi
YjdkNTAyYWY4ZTg3NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMu
bWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTEyNSw2ICsx
MjUsNyBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAgICBSZW1vdGVXZWJJbnNwZWN0b3JQcm94
eSBcCiAgICAgUmVtb3RlV2ViSW5zcGVjdG9yVUkgXAogICAgIFNlY0l0ZW1TaGltUHJveHkgXAor
ICAgIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaCBcCiAgICAgU21hcnRNYWduaWZpY2F0aW9uQ29u
dHJvbGxlciBcCiAgICAgU3RvcmFnZUFyZWFNYXAgXAogICAgIFN0b3JhZ2VNYW5hZ2VyIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKaW5kZXggNzI5N2Y0YjUzZTg3NTdk
OTYzNjJkODlkZDZjNjY5NTJhZDU2MDk5ZS4uZTlhYjRiZWQ3Zjc2YWVlMzRmYmViN2IxNmIxMzg2
M2NjMmI1ZDk3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAg
LTMwLDggKzMwLDEwIEBACiAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiU3RvcmFnZVByb2Nlc3MuaCIKICNpbmNsdWRlICJTdG9yYWdlVG9XZWJQcm9j
ZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldlYlNXQ2xpZW50Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCkBAIC05Miw2
ICs5NCwzMSBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRTZXJ2aWNlV29ya2Vy
Q29udGV4dChjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dAogICAgIG1fcGVuZGluZ0NvbnRleHRE
YXRhcy5hcHBlbmQoZGF0YSk7CiB9CiAKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzdGFy
dEZldGNoKHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgdWludDY0X3Qgc2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgRmV0Y2hPcHRp
b25zJiBvcHRpb25zKQoreworICAgIHNlbmRUb0NvbnRleHRQcm9jZXNzKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzOjpTdGFydEZldGNoSW5TZXJ2aWNlV29ya2VyKGlkZW50aWZpZXIoKSwgZmV0Y2hJZGVu
dGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9ucykpOworfQor
Cit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UodWlu
dDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkKK3sKKyAgICBtX2NvbnRlbnRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2
aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJlc3BvbnNlIH0sIGZl
dGNoSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpkaWRSZWNl
aXZlRmV0Y2hEYXRhKHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQoreworICAgIG1fY29udGVu
dENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlk
UmVjZWl2ZURhdGEgeyBkYXRhLCBlbmNvZGVkRGF0YUxlbmd0aCB9LCBmZXRjaElkZW50aWZpZXIp
OworfQorCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6ZGlkRmluaXNoRmV0Y2godWludDY0
X3QgZmV0Y2hJZGVudGlmaWVyKQoreworICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkRmluaXNoRmV0Y2ggeyB9LCBmZXRj
aElkZW50aWZpZXIpOworfQorCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6ZmFpbGVkRmV0
Y2godWludDY0X3QgZmV0Y2hJZGVudGlmaWVyKQoreworICAgIG1fY29udGVudENvbm5lY3Rpb24t
PnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkRmFpbCB7IH0sIGZl
dGNoSWRlbnRpZmllcik7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uOjpzZW5kVG9Db250ZXh0UHJvY2VzcyhVJiYgbWVzc2FnZSkKIHsKICAgICBp
ZiAoIW1fY29udGV4dENvbm5lY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3Jh
Z2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
LmgKaW5kZXggZGNjNDk2MTY1MmEzZDcxYjZmOTg0NjQzMWQ3Mzc2YjhmYzU1NTIyMy4uYjNlNDIx
NmRiMGEzMzM4MjdiZjdiZWVlODQ5ZmJlNTk4NGQwNmRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24uaApAQCAtNTEsMTUgKzUxLDIzIEBAIHB1YmxpYzoKIAogICAgIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9CiAKKyAg
ICB2b2lkIGRpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHZvaWQgZGlkUmVjZWl2ZUZl
dGNoRGF0YSh1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGlkRmluaXNoRmV0Y2go
dWludDY0X3QgZmV0Y2hJZGVudGlmaWVyKTsKKyAgICB2b2lkIGZhaWxlZEZldGNoKHVpbnQ2NF90
IGZldGNoSWRlbnRpZmllcik7CisKIHByaXZhdGU6CiAgICAgLy8gSW1wbGVtZW50IFNXU2VydmVy
OjpDb25uZWN0aW9uIChNZXNzYWdlcyB0byB0aGUgY2xpZW50IFdlYlByb2Nlc3MpCiAgICAgdm9p
ZCByZWplY3RKb2JJbkNsaWVudCh1aW50NjRfdCBqb2JJZGVudGlmaWVyLCBjb25zdCBXZWJDb3Jl
OjpFeGNlcHRpb25EYXRhJikgZmluYWw7CiAgICAgdm9pZCByZXNvbHZlSm9iSW5DbGllbnQodWlu
dDY0X3Qgam9iSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRhdGEmKSBmaW5hbDsKICAgICB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2hJbkNsaWVudCh1aW50
NjRfdCBqb2JJZGVudGlmaWVyKSBmaW5hbDsKIAorICAgIHZvaWQgc3RhcnRGZXRjaCh1aW50NjRf
dCBmZXRjaElkZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMm
KTsKKwogICAgIC8vIE1lc3NhZ2VzIHRvIHRoZSBTVyBjb250ZXh0IFdlYlByb2Nlc3MKICAgICB2
b2lkIHN0YXJ0U2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtl
ckNvbnRleHREYXRhJikgZmluYWw7Ci0gICAgCisKKwogICAgIElQQzo6Q29ubmVjdGlvbiogbWVz
c2FnZVNlbmRlckNvbm5lY3Rpb24oKSBmaW5hbCB7IHJldHVybiBtX2NvbnRlbnRDb25uZWN0aW9u
LnB0cigpOyB9CiAgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBmaW5h
bCB7IHJldHVybiBpZGVudGlmaWVyKCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggZTRjZmI5NjA1YTZjZTUwMTkyMTZmMjFj
ZjZkNjkxN2JlYjMwMmRjMC4uZjNkYjNiOTBkYWU5M2E5MjZkZjViYmRlYTFhMzc3OTUzNDY2NDkx
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1N0
b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCkBAIC0yNiw2ICsyNiw4IEBAIG1lc3NhZ2VzIC0+IFdlYlNXU2VydmVyQ29ubmVjdGlvbiB7
CiAgICAgIyBXaGVuIHBvc3NpYmxlLCB0aGVzZSBtZXNzYWdlcyBjYW4gYmUgaW1wbGVtZW50ZWQg
ZGlyZWN0bHkgYnkgV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uCiAgICAgU2NoZWR1bGVKb2JJ
blNlcnZlcihzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGEgam9iRGF0YSkKICAg
ICBGaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyRmV0Y2hSZXN1bHQgcmVzdWx0KQorCisgICAgU3RhcnRGZXRjaCh1aW50NjRfdCBpZGVudGlm
aWVyLCB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0IHJlcXVlc3QsIHN0cnVjdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMgb3B0aW9ucykKIH0K
IAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAKaW5kZXggOTk1OTZmMzUxM2E0YmM2MjA1
ZjYzYzllNzNiMDZiOTliNTA4YWJjOS4uY2MwNGNmOTQyM2RmNGVmZWFiNTE3NmQ0NGI5ZTIwMjUy
ZjA1Y2NiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdl
UHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJv
Y2Vzcy5jcHAKQEAgLTQwNSw2ICs0MDUsMzAgQEAgdm9pZCBTdG9yYWdlUHJvY2Vzczo6c2Vydmlj
ZVdvcmtlckNvbnRleHRTdGFydGVkKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGkKICAg
ICAgICAgY29ubmVjdGlvbi0+c2NyaXB0Q29udGV4dFN0YXJ0ZWQocmVnaXN0cmF0aW9uS2V5LCBp
ZGVudGlmaWVyLCB3b3JrZXJJRCk7CiB9CiAKK3ZvaWQgU3RvcmFnZVByb2Nlc3M6OmZhaWxlZEZl
dGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElk
ZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBtX3N3U2VydmVyQ29ubmVj
dGlvbnMuZ2V0KHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgY29ubmVjdGlv
bi0+ZmFpbGVkRmV0Y2goZmV0Y2hJZGVudGlmaWVyKTsKK30KKwordm9pZCBTdG9yYWdlUHJvY2Vz
czo6ZGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCit7CisgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBtX3N3U2Vy
dmVyQ29ubmVjdGlvbnMuZ2V0KHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAg
Y29ubmVjdGlvbi0+ZGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoZmV0Y2hJZGVudGlmaWVyLCByZXNw
b25zZSk7Cit9CisKK3ZvaWQgU3RvcmFnZVByb2Nlc3M6OmRpZFJlY2VpdmVGZXRjaERhdGEodWlu
dDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmll
ciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVu
Z3RoKQoreworICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gbV9zd1NlcnZlckNvbm5lY3Rpb25z
LmdldChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIGNvbm5lY3Rpb24tPmRp
ZFJlY2VpdmVGZXRjaERhdGEoZmV0Y2hJZGVudGlmaWVyLCBkYXRhLCBlbmNvZGVkRGF0YUxlbmd0
aCk7Cit9CisKK3ZvaWQgU3RvcmFnZVByb2Nlc3M6OmRpZEZpbmlzaEZldGNoKHVpbnQ2NF90IHNl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIpCit7Cisg
ICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBtX3N3U2VydmVyQ29ubmVjdGlvbnMuZ2V0KHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgY29ubmVjdGlvbi0+ZGlkRmluaXNoRmV0
Y2goZmV0Y2hJZGVudGlmaWVyKTsKK30KKwogdm9pZCBTdG9yYWdlUHJvY2Vzczo6cmVnaXN0ZXJT
V1NlcnZlckNvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewog
ICAgIEFTU0VSVCghbV9zd1NlcnZlckNvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb24uaWRl
bnRpZmllcigpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0
b3JhZ2VQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9j
ZXNzLmgKaW5kZXggZDRjZTUxMTcxOTdlNWMwYWQ0YmNlOTAyNDczYmJkZjdkZWVhOWQ4Zi4uZDg5
YTE2YjA2ZGI0ZWExYzA2OWZmYjVmYWJlZDA4NDBjYTFiY2ZjMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaApAQCAtMTE5LDYgKzExOSwxMSBAQCBw
cml2YXRlOgogICAgIHZvaWQgZGlkR2V0V29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKGNv
bnN0IElQQzo6QXR0YWNobWVudCYgZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyKTsKICAgICB2
b2lkIHNlcnZpY2VXb3JrZXJDb250ZXh0RmFpbGVkVG9TdGFydCh1aW50NjRfdCBzZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleSYsIGNvbnN0IFN0cmluZyYgd29ya2VySUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAg
ICAgdm9pZCBzZXJ2aWNlV29ya2VyQ29udGV4dFN0YXJ0ZWQodWludDY0X3Qgc2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25L
ZXkmLCB1aW50NjRfdCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHdvcmtlcklEKTsKKworICAg
IHZvaWQgZGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYpOworICAgIHZvaWQgZGlkUmVjZWl2ZUZldGNoRGF0YSh1aW50NjRfdCBzZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lk
IGRpZEZpbmlzaEZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50
NjRfdCBmZXRjaElkZW50aWZpZXIpOworICAgIHZvaWQgZmFpbGVkRmV0Y2godWludDY0X3Qgc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcik7CiAjZW5k
aWYKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBWZWN0b3I8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhPiBpbmRleGVkRGF0YWJhc2VPcmlnaW5zKGNvbnN0IFN0cmluZyYgcGF0
aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9j
ZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJv
Y2Vzcy5tZXNzYWdlcy5pbgppbmRleCBlZTYyOGQ1Mzc3Y2I1NmQyNjUwMThjZWZkM2EyMTA4MDVl
OWI0MmYyLi5hODNkNzMwZTczODNkZDc1ZmE2MTg0YWExMDIzODFmOTBkYTg4ODhjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MubWVz
c2FnZXMuaW4KQEAgLTM3LDcgKzM3LDEzIEBAIG1lc3NhZ2VzIC0+IFN0b3JhZ2VQcm9jZXNzIExl
Z2FjeVJlY2VpdmVyIHsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBEaWRHZXRX
b3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25I
YW5kbGUpCisKICAgICBTZXJ2aWNlV29ya2VyQ29udGV4dEZhaWxlZFRvU3RhcnQodWludDY0X3Qg
c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5IHJlZ2lzdHJhdGlvbktleSwgU3RyaW5nIHdvcmtlcklELCBTdHJpbmcg
bWVzc2FnZSkKICAgICBTZXJ2aWNlV29ya2VyQ29udGV4dFN0YXJ0ZWQodWludDY0X3Qgc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uS2V5IHJlZ2lzdHJhdGlvbktleSwgdWludDY0X3QgaWRlbnRpZmllciwgU3RyaW5nIHdv
cmtlcklEKQorCisgICAgRmFpbGVkRmV0Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcikKKyAgICBEaWRSZWNlaXZlRmV0Y2hSZXNw
b25zZSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKQorICAgIERpZFJl
Y2VpdmVGZXRjaERhdGEodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2
NF90IGZldGNoSWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEsIGludDY0X3QgZW5j
b2RlZERhdGFMZW5ndGgpCisgICAgRGlkRmluaXNoRmV0Y2godWludDY0X3Qgc2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcikKICNlbmRpZgogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOGI4
Njk1MGMxODExNmY2MDFjOThkMWM4NjY1NTYyYjQ2MjRhYjIyMi4uNDYzMmJjYTJjNTQ2NTMwZWIw
MzYwYzlmYjM5MjEzNjkzYjg3OGI4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04OTAsNiArODkwLDkgQEAKIAkJNDEzMDc1QjIxREU4
NUY1ODAwMzlFQzY5IC8qIExpYldlYlJUQ1NvY2tldEZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzA3NUE2MURFODVFRTcwMDM5RUM2OSAv
KiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5LmggKi87IH07CiAJCTQxMzA3NUIzMURFODVGNTgwMDM5
RUM2OSAvKiBMaWJXZWJSVENQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTMwNzVBNzFERTg1RUU3MDAzOUVDNjkgLyogTGliV2ViUlRD
UHJvdmlkZXIuY3BwICovOyB9OwogCQk0MTMwNzVCNDFERTg1RjU4MDAzOUVDNjkgLyogTGliV2Vi
UlRDUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxMzA3NUE4MURFODVFRTcwMDM5RUM2OSAvKiBMaWJXZWJSVENQcm92aWRlci5oICovOyB9
OworCQk0MTMxRjNEMTFGOTZCQ0NDMDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNo
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzFG
M0QwMUY5NkJDQzgwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guY3BwICovOyB9
OworCQk0MTMxRjNENDFGOTZFOTM1MDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNvbnRleHRNYW5h
Z2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
MzFGM0QzMUY5NkU5MzEwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuY3Bw
ICovOyB9OworCQk0MTMxRjNENTFGOTZFOTM1MDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNvbnRl
eHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTMxRjNEMjFGOTZFOTMwMDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2Vy
LmggKi87IH07CiAJCTQxMzVGQkQxMUY0RkI4MDkwMDc0QzQ3QiAvKiBDYWNoZVN0b3JhZ2VFbmdp
bmVDYWNoZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDEzNUZCQ0YxRjRGQjdGMjAwNzRDNDdCIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5j
cHAgKi87IH07CiAJCTQxODk3RUNGMUY0MTVENjIwMDE2RkE0MiAvKiBXZWJDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxODk3RUNFMUY0MTVENUMwMDE2RkE0MiAvKiBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
LmNwcCAqLzsgfTsKIAkJNDE4OTdFRDAxRjQxNUQ2NTAwMTZGQTQyIC8qIFdlYkNhY2hlU3RvcmFn
ZVByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQxODk3RUNDMUY0MTVENUMwMDE2RkE0MiAvKiBXZWJDYWNoZVN0b3JhZ2VQcm92aWRlci5j
cHAgKi87IH07CkBAIC0xMDI5LDcgKzEwMzIsOSBAQAogCQk1MTc5NTU2QTE2Mjg3NkYzMDBGQTQz
QjYgLyogTmV0d29ya1Byb2Nlc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxMENDN0UwMTYxMzhFMjkwMEQwM0VEMyAvKiBOZXR3b3JrUHJvY2Vzcy5o
ICovOyB9OwogCQk1MTc5NTU2RDE2Mjg3N0IxMDBGQTQzQjYgLyogTmV0d29ya1Byb2Nlc3NQcm94
eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBD
QzdFQTE2MTM4RTcyMDBEMDNFRDMgLyogTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgKi87IH07CiAJ
CTUxNzk1NTZFMTYyODc3QjMwMEZBNDNCNiAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBDQzdFQjE2MTM4RTcy
MDBEMDNFRDMgLyogTmV0d29ya1Byb2Nlc3NQcm94eS5oICovOyB9OworCQk2MTdBNTJEODFGNDNB
OURBMDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZVJlY2VpdmVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYxN0E1MkQ3
MUY0M0E5QjYwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hDb25uZWN0aW9uTWVz
c2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJNTE3QTUyRDgxRjQzQTlEQTAwRENEQzBBIC8qIFdl
YlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdBNTJENzFGNDNBOUI2MDBEQ0RDMEEgLyog
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJNjE3QTUy
RDkxRjQzQTlEQTAwRENEQzBBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MTdBNTJENjFG
NDNBOUI2MDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZXMuaCAqLzsg
fTsKIAkJNTE3QTUyRDkxRjQzQTlEQTAwRENEQzBBIC8qIFdlYlNXU2VydmVyQ29ubmVjdGlvbk1l
c3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTdBNTJENjFGNDNBOUI2MDBEQ0RDMEEgLyogV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMu
aCAqLzsgfTsKIAkJNTE3QTUzMDQxRjQ3OTNDNjAwRENEQzBBIC8qIFdlYlNXQ2xpZW50Q29ubmVj
dGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTdBNTMwMzFGNDc5M0IyMDBEQ0RDMEEgLyogV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcCAqLzsg
fTsKIAkJNTE3QTUzMDUxRjQ3OTNDNjAwRENEQzBBIC8qIFdlYlNXQ2xpZW50Q29ubmVjdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3QTUzMDIx
RjQ3OTNCMjAwRENEQzBBIC8qIFdlYlNXQ2xpZW50Q29ubmVjdGlvbi5oICovOyB9OwpAQCAtMzE3
OCw2ICszMTgzLDExIEBACiAJCTQxMzA3NUE2MURFODVFRTcwMDM5RUM2OSAvKiBMaWJXZWJSVENT
b2NrZXRGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJU
Q1NvY2tldEZhY3RvcnkuaDsgcGF0aCA9IE5ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldEZh
Y3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzMDc1QTcxREU4NUVFNzAw
MzlFQzY5IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbGluZUVuZGluZyA9IDA7IG5hbWUgPSBMaWJXZWJSVENQcm92aWRlci5jcHA7IHBhdGgg
PSBOZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcuY3Bw
OyB9OwogCQk0MTMwNzVBODFERTg1RUU3MDAzOUVDNjkgLyogTGliV2ViUlRDUHJvdmlkZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBsaW5lRW5kaW5nID0gMDsgbmFtZSA9IExpYldlYlJU
Q1Byb3ZpZGVyLmg7IHBhdGggPSBOZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIg
PSB4Y29kZS5sYW5nLm9iamNwcDsgfTsKKwkJNDEzMUYzQ0UxRjk2QTQ5NTAwNTk5OTVBIC8qIFNl
cnZpY2VXb3JrZXJDbGllbnRGZXRjaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDEzMUYzQ0YxRjk2QTkzNjAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5t
ZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0
Y2gubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMzFGM0QwMUY5
NkJDQzgwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtlckNsaWVudEZldGNoLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEzMUYzRDIxRjk2RTkzMDAwNTk5OTVBIC8q
IFNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDEzMUYzRDMxRjk2RTkzMTAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDb250
ZXh0TWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2
aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MTM1RkJDRjFGNEZCN0YyMDA3NEM0N0IgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlU3RvcmFnZUVuZ2lu
ZUNhY2hlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzVGQkQwMUY0RkI3
RjIwMDc0QzQ3QiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxODk3RUNCMUY0MTVENUMwMDE2RkE0MiAvKiBXZWJDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rp
b24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMzM0LDcgKzMz
NDQsOSBAQAogCQk1MTZBNEE1QjEyMEEyQ0NEMDBDMDVCN0YgLyogQVBJRXJyb3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTE3QTMzQjMxMzBCMzA4QzAwRjgwQ0I1IC8qIFdLQXBwbGljYXRpb25DYWNo
ZU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
N0EzM0I0MTMwQjMwOEMwMEY4MENCNSAvKiBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjE3QTUyRDYxRjQzQTlCNjAwRENEQzBB
IC8qIFNlcnZpY2VXb3JrZXJGZXRjaENsaWVudE1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0E1MkQ2MUY0M0E5QjYwMERDREMwQSAvKiBXZWJTV1Nl
cnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk2MTdBNTJENzFGNDNBOUI2MDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckNsaWVudEZl
dGNoTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0E1MkQ3MUY0M0E5QjYwMERDREMwQSAvKiBXZWJTV1Nl
cnZlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3QTUzMDIxRjQ3OTNCMjAwRENEQzBBIC8q
IFdlYlNXQ2xpZW50Q29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJTV0NsaWVudENvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTE3QTUzMDMxRjQ3OTNCMjAwRENEQzBBIC8qIFdlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTV0NsaWVudENvbm5lY3Rpb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjE2OCw2ICs2MTgwLDExIEBACiAJ
CTUxMThFOTk4MUYyOTUyNTkwMDNFRjlGNSAvKiBTdG9yYWdlICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0MTMxRjNEMzFGOTZFOTMxMDA1OTk5NUEgLyog
U2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcCAqLywKKwkJCQk0MTMxRjNEMjFGOTZFOTMw
MDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmggKi8sCisJCQkJNDEzMUYz
RDAxRjk2QkNDODAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5jcHAgKi8sCisJ
CQkJNDEzMUYzQ0UxRjk2QTQ5NTAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5o
ICovLAorCQkJCTQxMzFGM0NGMUY5NkE5MzYwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50
RmV0Y2gubWVzc2FnZXMuaW4gKi8sCiAJCQkJNTFCRUI2MjkxRjNBNUFDRDAwNTAyOUI5IC8qIFdl
YlNlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAgKi8sCiAJCQkJNTFCRUI2MkExRjNBNUFDRDAwNTAy
OUI5IC8qIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oICovLAogCQkJCTUxN0E1MzAzMUY0Nzkz
QjIwMERDREMwQSAvKiBXZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwICovLApAQCAtODEwMyw2ICs4
MTIwLDcgQEAKIAkJCQk1QzBCMTc3NzFFN0M4NzlDMDBFOTEyM0MgLyogV2ViU29ja2V0U3RyZWFt
TWVzc2FnZXMuaCAqLywKIAkJCQk1MTdBNTMwRTFGNDdBODQzMDBEQ0RDMEEgLyogV2ViU1dDbGll
bnRDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQk1MTdBNTMwRDFGNDdBODQz
MDBEQ0RDMEEgLyogV2ViU1dDbGllbnRDb25uZWN0aW9uTWVzc2FnZXMuaCAqLywKKwkJCQk2MTdB
NTJENzFGNDNBOUI2MDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoQ29ubmVjdGlv
bk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJNTE3QTUyRDcxRjQzQTlCNjAwRENEQzBBIC8q
IFdlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJNTE3QTUy
RDYxRjQzQTlCNjAwRENEQzBBIC8qIFdlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi8s
CiAJCQkJMUFBRjA4QjUxOTI2OUU2RDAwQjYzOTBDIC8qIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
ck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCkBAIC04NzE0LDYgKzg3MzIsNyBAQAogCQkJCTFBOEVG
OTZGMTI1MkFGNkIwMEY3MDY3RiAvKiBQbHVnaW5Db250cm9sbGVyUHJveHlNZXNzYWdlcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUExNzk3ODAxMzdFRTgyQzAwRjk3RDQ1IC8qIFBsdWdpbkNyZWF0
aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0MzRjhDOTExNzNBRjUyRDAwN0I3
RjM5IC8qIFBsdWdpbkluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTMxRjNENTFG
OTZFOTM1MDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQUVGQ0MxMjExRDAxRjk2MDA4MjE5RDMgLyogUGx1Z2luSW5mb1N0b3JlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQTNENjEwMjEzQTdDQzJBMDBGOTVENEUgLyogUGx1Z2luTW9k
dWxlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwNDM5NzYxMjREMDM0ODAwRkZCRkI1IC8q
IFBsdWdpblByb2Nlc3MuaCBpbiBIZWFkZXJzICovLApAQCAtMTAxMDYsNiArMTAxMjUsNyBAQAog
CQkJCUJDMDMyREE3MTBGNDM3RDEwMDU4QzE1QSAvKiBFbmNvZGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTUxQjE1QTg0MTM4NDNBMzkwMDMyMUFEOCAvKiBFbnZpcm9ubWVudFV0aWxpdGllcy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUE1NzVGQTE0OTZCNTI2MDBBNEVFMDYgLyogRXZlbnRE
aXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxMzFGM0Q0MUY5NkU5MzUwMDU5OTk1
QSAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUFBNTc2MDIxNDk2Qjk3OTAwQTRFRTA2IC8qIEV2ZW50RGlzcGF0Y2hlck1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwMEI5NjYxOTE4RTI1QUUxMDBDRTFGODggLyogRmlu
ZENsaWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBOTBDMUY1MTI2NEZENzEwMDNFNDRENCAv
KiBGaW5kQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEwMzg1LDYgKzEwNDA1LDcg
QEAKIAkJCQkyREU2OTQzRDE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29u
dHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MjcyQjI4QTE0
MDY5ODVEMDA5NkE1RDAgLyogU3RhdGlzdGljc0RhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTFBNEQ1QTkxNkNBQzRGRjAwMEU2MTVFIC8qIFN0YXRpc3RpY3NSZXF1ZXN0LmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTQxMzFGM0QxMUY5NkJDQ0MwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ2xp
ZW50RmV0Y2guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFEMzMwNkUxNkIxRDk5MTAwNEY2MEU3
IC8qIFN0b3JhZ2VBcmVhSW1wbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUNFQ0QyNDE3MTYy
REIxMDAxRkM5RUYgLyogU3RvcmFnZUFyZWFNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEz
MzRERUQxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVzc2FnZVJlY2VpdmVyLmNw
cCBpbiBTb3VyY2VzICovLApAQCAtMTA2NjgsNiArMTA2ODksNyBAQAogCQkJCTgzMjk5NEE3MUY5
NkY1MDIwMEFDNTdCMSAvKiBXZWJTV09yaWdpblN0b3JlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTgzRjFBMDc5MUY5NkU3NzkwMDQ1Qjk0RSAvKiBXZWJTV09yaWdpblRhYmxlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxN0E1MzBBMUY0NzlFMzYwMERDREMwQSAvKiBXZWJTV1NlcnZlckNvbm5l
Y3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNjE3QTUyRDgxRjQzQTlEQTAwRENEQzBBIC8q
IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTE3QTUyRDgxRjQzQTlEQTAwRENEQzBBIC8qIFdlYlNXU2VydmVy
Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTE4RTk5
QjFGMjk1MjY2MDAzRUY5RjUgLyogV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQzAzMzdERDgxMjdBNTFCNjAwOEZGNEY0IC8qIFdlYlRvdWNoRXZl
bnQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKaW5kZXggYjg5NWQwYjhmYTMxY2UwMTY2
ZDJhNDBkYmM5NDkxZjA4MTQzNWJiMS4uM2QwNWMwNjk4MzJjZDAxYTUyZWFmYmU0ZmE5ZmIyZTZk
ZTYxNWIzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYkxvYWRlclN0cmF0ZWd5LmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIldlYlBh
Z2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIldl
YlJlc291cmNlTG9hZGVyLmgiCisjaW5jbHVkZSAiV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmgi
CiAjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViVVJM
U2NoZW1lVGFza1Byb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlSG9z
dC5oPgpAQCAtMjE1LDYgKzIxNiwyNiBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVs
ZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogICAgICAg
ICB9CiAgICAgfQogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIFdlYlNlcnZpY2VX
b3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuaGFuZGxlRmV0Y2gocmVzb3VyY2VMb2FkZXIsICpy
ZXNvdXJjZSwgd2ViUGFnZSA/IHdlYlBhZ2UtPnNlc3Npb25JRCgpIDogUEFMOjpTZXNzaW9uSUQ6
OmRlZmF1bHRTZXNzaW9uSUQoKSwgW3RyYWNraW5nUGFyYW1ldGVycywgc2hvdWxkQ2xlYXJSZWZl
cnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgbWF4aW11bUJ1ZmZlcmluZ1RpbWUgPSBtYXhpbXVt
QnVmZmVyaW5nVGltZShyZXNvdXJjZSldIChSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkgbXV0YWJsZSB7CisgICAgICAgIExPRyhO
ZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1
bGVMb2FkLCB1cmwgJyVzJyB3aWxsIGJlIHNjaGVkdWxlZCB0aHJvdWdoIFNlcnZpY2VXb3JrZXIg
aGFuZGxlIGZldGNoIGFsZ29yaXRobSIsIHJlc291cmNlTG9hZGVyLnVybCgpLnN0cmluZygpLmxh
dGluMSgpLmRhdGEoKSk7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkxvYWRl
clN0cmF0ZWd5KCkuc2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKHJlc291cmNlTG9hZGVy
LCByZXF1ZXN0LCBXVEZNb3ZlKHRyYWNraW5nUGFyYW1ldGVycyksIHNob3VsZENsZWFyUmVmZXJy
ZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIG1heGltdW1CdWZmZXJpbmdUaW1lKTsKKyAgICB9KTsK
KyNlbHNlCisgICAgTE9HKE5ldHdvcmtTY2hlZHVsaW5nLCAiKFdlYlByb2Nlc3MpIFdlYkxvYWRl
clN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQsIHVybCAnJXMnIHdpbGwgYmUgc2NoZWR1bGVkIHRocm91
Z2ggU2VydmljZVdvcmtlciBoYW5kbGUgZmV0Y2ggYWxnb3JpdGhtIiwgcmVzb3VyY2VMb2FkZXIu
dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKKyAgICBzY2hlZHVsZUxvYWRGcm9tTmV0
d29ya1Byb2Nlc3MocmVzb3VyY2VMb2FkZXIsIHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKSwgdHJh
Y2tpbmdQYXJhbWV0ZXJzLCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0
KTsKKyNlbmRpZgorfQorCit2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9t
TmV0d29ya1Byb2Nlc3MoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYlJlc291cmNlTG9hZGVyOjpUcmFja2luZ1Bh
cmFtZXRlcnMmIHRyYWNraW5nUGFyYW1ldGVycywgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25I
VFRQU1RvSFRUUFJlZGlyZWN0LCBTZWNvbmRzIG1heGltdW1CdWZmZXJpbmdUaW1lKQoreworICAg
IFJlc291cmNlTG9hZElkZW50aWZpZXIgaWRlbnRpZmllciA9IHJlc291cmNlTG9hZGVyLmlkZW50
aWZpZXIoKTsKKyAgICBBU1NFUlQoaWRlbnRpZmllcik7CisKKyAgICBXZWJGcmFtZUxvYWRlckNs
aWVudCogd2ViRnJhbWVMb2FkZXJDbGllbnQgPSB0b1dlYkZyYW1lTG9hZGVyQ2xpZW50KHJlc291
cmNlTG9hZGVyLmZyYW1lTG9hZGVyKCktPmNsaWVudCgpKTsKKyAgICBXZWJGcmFtZSogd2ViRnJh
bWUgPSB3ZWJGcmFtZUxvYWRlckNsaWVudCA/IHdlYkZyYW1lTG9hZGVyQ2xpZW50LT53ZWJGcmFt
ZSgpIDogbnVsbHB0cjsKKyAgICBXZWJQYWdlKiB3ZWJQYWdlID0gd2ViRnJhbWUgPyB3ZWJGcmFt
ZS0+cGFnZSgpIDogbnVsbHB0cjsKKwogICAgIExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQ
cm9jZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkLCB1cmwgJyVzJyB3aWxsIGJl
IHNjaGVkdWxlZCB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyB3aXRoIHByaW9yaXR5ICVkIiwgcmVz
b3VyY2VMb2FkZXIudXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpLCBzdGF0aWNfY2FzdDxp
bnQ+KHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSk7CiAKICAgICBDb250ZW50
U25pZmZpbmdQb2xpY3kgY29udGVudFNuaWZmaW5nUG9saWN5ID0gcmVzb3VyY2VMb2FkZXIuc2hv
dWxkU25pZmZDb250ZW50KCkgPyBTbmlmZkNvbnRlbnQgOiBEb05vdFNuaWZmQ29udGVudDsKQEAg
LTIyNSw3ICsyNDYsNyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVz
b3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogICAgIGxvYWRQYXJhbWV0
ZXJzLndlYlBhZ2VJRCA9IHdlYlBhZ2UgPyB3ZWJQYWdlLT5wYWdlSUQoKSA6IDA7CiAgICAgbG9h
ZFBhcmFtZXRlcnMud2ViRnJhbWVJRCA9IHdlYkZyYW1lID8gd2ViRnJhbWUtPmZyYW1lSUQoKSA6
IDA7CiAgICAgbG9hZFBhcmFtZXRlcnMuc2Vzc2lvbklEID0gd2ViUGFnZSA/IHdlYlBhZ2UtPnNl
c3Npb25JRCgpIDogUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsKLSAgICBsb2Fk
UGFyYW1ldGVycy5yZXF1ZXN0ID0gcmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpOworICAgIGxvYWRQ
YXJhbWV0ZXJzLnJlcXVlc3QgPSByZXF1ZXN0OwogICAgIGxvYWRQYXJhbWV0ZXJzLmNvbnRlbnRT
bmlmZmluZ1BvbGljeSA9IGNvbnRlbnRTbmlmZmluZ1BvbGljeTsKICAgICBsb2FkUGFyYW1ldGVy
cy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5OwogICAg
IC8vIElmIHRoZXJlIGlzIG5vIFdlYkZyYW1lIHRoZW4gdGhpcyByZXNvdXJjZSBjYW5ub3QgYmUg
YXV0aGVudGljYXRlZCB3aXRoIHRoZSBjbGllbnQuCkBAIC0yMzMsNyArMjU0LDcgQEAgdm9pZCBX
ZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxv
YWRlciwgQ2FjaGVkUmVzb3UKICAgICBsb2FkUGFyYW1ldGVycy5zaG91bGRDbGVhclJlZmVycmVy
T25IVFRQU1RvSFRUUFJlZGlyZWN0ID0gc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBS
ZWRpcmVjdDsKICAgICBsb2FkUGFyYW1ldGVycy5kZWZlcnNMb2FkaW5nID0gcmVzb3VyY2VMb2Fk
ZXIuZGVmZXJzTG9hZGluZygpOwogICAgIGxvYWRQYXJhbWV0ZXJzLm5lZWRzQ2VydGlmaWNhdGVJ
bmZvID0gcmVzb3VyY2VMb2FkZXIuc2hvdWxkSW5jbHVkZUNlcnRpZmljYXRlSW5mbygpOwotICAg
IGxvYWRQYXJhbWV0ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1lID0gbWF4aW11bUJ1ZmZlcmluZ1Rp
bWUocmVzb3VyY2UpOworICAgIGxvYWRQYXJhbWV0ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1lID0g
bWF4aW11bUJ1ZmZlcmluZ1RpbWU7CiAgICAgbG9hZFBhcmFtZXRlcnMuZGVyaXZlZENhY2hlZERh
dGFUeXBlc1RvUmV0cmlldmUgPSByZXNvdXJjZUxvYWRlci5vcHRpb25zKCkuZGVyaXZlZENhY2hl
ZERhdGFUeXBlc1RvUmV0cmlldmU7CiAKICAgICBBU1NFUlQoKGxvYWRQYXJhbWV0ZXJzLndlYlBh
Z2VJRCAmJiBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlEKSB8fCBsb2FkUGFyYW1ldGVycy5jbGll
bnRDcmVkZW50aWFsUG9saWN5ID09IENsaWVudENyZWRlbnRpYWxQb2xpY3k6OkNhbm5vdEFza0Ns
aWVudEZvckNyZWRlbnRpYWxzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCmluZGV4IGI0OGY2ODExOGY0NDljNzc2OGQxNzk2
NjE2NWJiNjZhMzI1YjIzNmYuLmVhYjRlY2U3ZWU2YmZmZmY3MzhlMmJkZmEzNTVhMDg0YzJkYWE2
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRl
clN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9h
ZGVyU3RyYXRlZ3kuaApAQCAtNzcsNiArNzcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRVUkxT
Y2hlbWVUYXNrUHJveHkoV2ViVVJMU2NoZW1lVGFza1Byb3h5Jik7CiAgICAgdm9pZCByZW1vdmVV
UkxTY2hlbWVUYXNrUHJveHkoV2ViVVJMU2NoZW1lVGFza1Byb3h5Jik7CiAKKyAgICB2b2lkIHNj
aGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYlJlc291cmNlTG9hZGVyOjpU
cmFja2luZ1BhcmFtZXRlcnMmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQ
UmVkaXJlY3QsIFNlY29uZHMpOworCiBwcml2YXRlOgogICAgIHZvaWQgc2NoZWR1bGVMb2FkKFdl
YkNvcmU6OlJlc291cmNlTG9hZGVyJiwgV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2UqLCBib29sIHNo
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QpOwogICAgIHZvaWQgc2NoZWR1
bGVJbnRlcm5hbGx5RmFpbGVkTG9hZChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNsaWVu
dEZldGNoLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3Jr
ZXJDbGllbnRGZXRjaC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzZlMGEwZmEwYzlmMWU2YmYzZTYxYTIzODJh
YzVmM2I1NWJlYzBkNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5jcHAKQEAgLTAsMCArMSwxNTQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtl
ckNsaWVudEZldGNoLmgiCisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKKyNpbmNsdWRl
ICJEYXRhUmVmZXJlbmNlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworc3RhdGljIGJvb2wgc2hvdWxkUmVkaXJlY3RBc0dFVChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIG9sZFJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBVUkwmIG5ld1VSTCwgYm9vbCBjcm9zc09yaWdpbikKK3sKKyAgICBpZiAob2xk
UmVxdWVzdC5odHRwTWV0aG9kKCkgPT0gIkdFVCIgfHwgb2xkUmVxdWVzdC5odHRwTWV0aG9kKCkg
PT0gIkhFQUQiKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIW5ld1VSTC5wcm90
b2NvbElzSW5IVFRQRmFtaWx5KCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgc3dpdGNo
IChyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKSB7CisgICAgY2FzZSAzMDM6CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIGNhc2UgMzAyOgorICAgIGNhc2UgMzAxOgorICAgICAgICBpZiAob2xk
UmVxdWVzdC5odHRwTWV0aG9kKCkgPT0gIlBPU1QiKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIGJyZWFrOworICAgIH07CisKKyAgICBpZiAoY3Jvc3NPcmlnaW4gJiYgb2xkUmVx
dWVzdC5odHRwTWV0aG9kKCkgPT0gIkRFTEVURSIpCisgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgcmV0dXJuIGZhbHNlOworfQorCisvLyBGSVhNRTogUHJvcGVybHkgc3ludGhlc2l6ZSBhIG5l
dyByZXF1ZXN0IGFzIHBlciBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jaHR0cC1yZWRp
cmVjdC1mZXRjaC4KK3N0YXRpYyBpbmxpbmUgUmVzb3VyY2VSZXF1ZXN0IGNvbXB1dGVOZXdSZXF1
ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgb2xkUmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit7CisgICAgUmVzb3VyY2VSZXF1ZXN0IG5ld1JlcXVl
c3QgPSBvbGRSZXF1ZXN0OworICAgIFVSTCBuZXdVUkwgPSBVUkwgeyBvbGRSZXF1ZXN0LnVybCgp
LCByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkxvY2F0aW9uKSB9Owor
ICAgIG5ld1JlcXVlc3Quc2V0VVJMKG5ld1VSTCk7CisKKyAgICBib29sIGNyb3NzT3JpZ2luID0g
IXByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChvbGRSZXF1ZXN0LnVybCgpLCBuZXdVUkwpOwor
CisgICAgaWYgKG5ld1JlcXVlc3QuaHR0cE1ldGhvZCgpICE9ICJHRVQiKSB7CisgICAgICAgIGlm
IChzaG91bGRSZWRpcmVjdEFzR0VUKG9sZFJlcXVlc3QsIHJlc3BvbnNlLCBuZXdVUkwsIGNyb3Nz
T3JpZ2luKSkgeworICAgICAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsK
KyAgICAgICAgICAgIG5ld1JlcXVlc3Quc2V0SFRUUEJvZHkobnVsbHB0cik7CisgICAgICAgICAg
ICBuZXdSZXF1ZXN0LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICAvLyBGSVhNRTogUHJvcGVybHkgaGFuZGxlIFJlZmVyZXIKKyAgICBpZiAoIW5ld1VSTC5w
cm90b2NvbElzKCJodHRwcyIpICYmIHByb3RvY29sSXMobmV3UmVxdWVzdC5odHRwUmVmZXJyZXIo
KSwgImh0dHBzIikpCisgICAgICAgIG5ld1JlcXVlc3QuY2xlYXJIVFRQUmVmZXJyZXIoKTsKKwor
ICAgIG5ld1JlcXVlc3QucmVtb3ZlQ3JlZGVudGlhbHMoKTsKKworICAgIGlmIChjcm9zc09yaWdp
bikgeworICAgICAgICBuZXdSZXF1ZXN0LmNsZWFySFRUUEF1dGhvcml6YXRpb24oKTsKKyAgICAg
ICAgbmV3UmVxdWVzdC5jbGVhckhUVFBPcmlnaW4oKTsKKyAgICB9CisKKyAgICByZXR1cm4gbmV3
UmVxdWVzdDsKK30KKworc3RhdGljIGlubGluZSBib29sIHNob3VsZFJlZGlyZWN0KGludCBzdGF0
dXNDb2RlKQoreworICAgIGlmIChzdGF0dXNDb2RlIDw9IDMwMCB8fCBzdGF0dXNDb2RlID49IDQw
MCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChzdGF0dXNDb2RlID09IDMwNCB8fCBz
dGF0dXNDb2RlID09IDMwNSB8fCBzdGF0dXNDb2RlID09IDMwNikKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRj
aDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKQoreworICAgIGlmICghbV9sb2FkZXIpCisgICAgICAgIHJldHVybjsKKworICAgIC8v
IEZJWE1FOiBQcm9wZXJseSBoYW5kbGUgb3BhcXVlIHJlZGlyZWN0IHJlc3BvbnNlcy4KKyAgICBp
ZiAoc2hvdWxkUmVkaXJlY3QocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSkpIHsKKyAgICAgICAg
bV9sb2FkZXItPndpbGxTZW5kUmVxdWVzdChjb21wdXRlTmV3UmVxdWVzdChtX2xvYWRlci0+b3Jp
Z2luYWxSZXF1ZXN0KCksIHJlc3BvbnNlKSwgcmVzcG9uc2UsIFtwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyldKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpIG11dGFibGUgeworICAgICAg
ICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYW5kbGUgcmVkaXJlY3Rpb25zIHRoYXQgY2FuIGdv
IGJhY2sgdG8gc2VydmljZSB3b3JrZXIuCisgICAgICAgICAgICBpZiAoIXByb3RlY3RlZFRoaXMt
Pm1fbG9hZGVyKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgaWYgKGF1
dG8gZmFsbGJhY2sgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMtPm1fZmFsbGJhY2spKQorICAgICAg
ICAgICAgICAgIGZhbGxiYWNrKCpwcm90ZWN0ZWRUaGlzLT5tX2xvYWRlciwgcmVxdWVzdCk7Cisg
ICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHJlc3BvbnNlLnR5
cGUoKSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpUeXBlOjpFcnJvcikgeworICAgICAgICAvLyBBZGQg
c3VwcG9ydCBmb3IgYSBiZXR0ZXIgZXJyb3IuCisgICAgICAgIG1fbG9hZGVyLT5kaWRGYWlsKHsg
fSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9sb2FkZXItPmRpZFJlY2VpdmVSZXNw
b25zZShyZXNwb25zZSk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpkaWRS
ZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZW5jb2Rl
ZERhdGFMZW5ndGgpCit7CisgICAgaWYgKCFtX2xvYWRlcikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9sb2FkZXItPmRpZFJlY2VpdmVEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZEJ5dGVzKTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OmRpZEZpbmlzaEZl
dGNoKCkKK3sKKyAgICBpZiAoIW1fbG9hZGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2xv
YWRlci0+ZGlkRmluaXNoTG9hZGluZyhOZXR3b3JrTG9hZE1ldHJpY3MgeyB9KTsKK30KKwordm9p
ZCBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OmRpZEZhaWwoKQoreworICAgIGlmICghbV9sb2Fk
ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChhdXRvIGZhbGxiYWNrID0gV1RGTW92ZSht
X2ZhbGxiYWNrKSkKKyAgICAgICAgZmFsbGJhY2soKm1fbG9hZGVyLCBtX2xvYWRlci0+b3JpZ2lu
YWxSZXF1ZXN0KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTY1
YTM0ZmE0NTQxMDIyODFhZTBmMDAyNTE2YzQ1MGUwNDRjNGFlYgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRj
aC5oCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2lu
Y2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZGVy
Lmg+CisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2ggZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxT
ZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g+LCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJs
aWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8U2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoPiBjcmVhdGUoUmVmPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyPiYm
IGxvYWRlciwgdWludDY0X3QgaWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25u
ZWN0aW9uLCBXVEY6OkZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXImLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKT4mJiBmYWxsYmFjaykKKworICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtlckNsaWVudEZldGNoIHsgV1RGTW92
ZShsb2FkZXIpLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGNvbm5lY3Rpb24pLCBXVEZNb3ZlKGZhbGxi
YWNrKSB9KTsKKyAgICB9CisKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworCitwcml2YXRlOgorICAgIFNlcnZpY2VXb3Jr
ZXJDbGllbnRGZXRjaChSZWY8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI+JiYgbG9hZGVyLCB1aW50
NjRfdCBpZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFdURjo6
RnVuY3Rpb248dm9pZChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYpPiYmIGZhbGxiYWNrKQorICAgICAgICA6IG1fbG9hZGVyKFdURk1vdmUo
bG9hZGVyKSkKKyAgICAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAgICAgLCBt
X2Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKKyAgICAgICAgLCBtX2ZhbGxiYWNrKFdU
Rk1vdmUoZmFsbGJhY2spKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVu
Z3RoKTsKKyAgICB2b2lkIGRpZEZpbmlzaEZldGNoKCk7CisgICAgdm9pZCBkaWRGYWlsKCk7CisK
KyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgZmluYWwgeyBy
ZXR1cm4gbV9jb25uZWN0aW9uLnB0cigpOyB9CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRl
c3RpbmF0aW9uSUQoKSBmaW5hbCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKworICAgIFJlZlB0
cjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcj4gbV9sb2FkZXI7CisgICAgdWludDY0X3QgbV9pZGVu
dGlmaWVyIHsgMCB9OworICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAg
ICBXVEY6OkZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXImLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmKT4gbV9mYWxsYmFjazsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZldGNo
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdv
cmtlckNsaWVudEZldGNoLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmNzdlNjIxN2MwMWUwMTg4
ZjNkYjU3YmI4NzQwMWYxMTEwOGQwNjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gubWVzc2FnZXMuaW4K
QEAgLTAsMCArMSwzMyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6Cisj
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCittZXNzYWdlcyAtPiBTZXJ2aWNlV29ya2Vy
Q2xpZW50RmV0Y2ggeworICAgIERpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlIHJlc3BvbnNlKQorICAgIERpZFJlY2VpdmVEYXRhKElQQzo6RGF0YVJlZmVyZW5jZSBk
YXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQorICAgIERpZEZpbmlzaEZldGNoKCkKKyAg
ICBEaWRGYWlsKCkKK30KKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNv
bnRleHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZp
Y2VXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjIxMzU1ZTI2ODYzMDU1YzBk
MWExMzMzZGU1Mjc0OWIxZTFjMGZjNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAKQEAgLTAs
MCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJT
ZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuaCIKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTdG9yYWdlUHJvY2Vzc01lc3Nh
Z2VzLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9u
c2UuaD4KKyNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CisKK3VzaW5nIG5hbWVzcGFjZSBQQUw7
Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQg
U2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyOjpzdGFydFNlcnZpY2VXb3JrZXJDb250ZXh0KHVp
bnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEmIGRhdGEpCit7CisgICAgLy8gRklYTUU6IFByb3ZpZGUgYSBzZW5zaWNhbCBzZXNz
aW9uIElECisKKyAgICBhdXRvIHRocmVhZCA9IFNlcnZpY2VXb3JrZXJUaHJlYWQ6OmNyZWF0ZShz
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgZGF0YSwgU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lv
bklEKCkpOworICAgIGF1dG8gdGhyZWFkSWRlbnRpZmllciA9IHRocmVhZC0+aWRlbnRpZmllcigp
OworICAgIGF1dG8gcmVzdWx0ID0gbV93b3JrZXJUaHJlYWRNYXAuYWRkKHRocmVhZElkZW50aWZp
ZXIsIFdURk1vdmUodGhyZWFkKSk7CisgICAgQVNTRVJUKHJlc3VsdC5pc05ld0VudHJ5KTsKKwor
ICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPnN0YXJ0KCk7CisKKyAgICBMT0coU2VydmljZVdv
cmtlciwgIkNvbnRleHQgcHJvY2VzcyBQSUQ6ICVpIHN0YXJ0ZWQgd29ya2VyIHRocmVhZCAlc1xu
IiwgZ2V0cGlkKCksIGRhdGEud29ya2VySUQudXRmOCgpLmRhdGEoKSk7CisKKyAgICBtX2Nvbm5l
Y3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6U2Vy
dmljZVdvcmtlckNvbnRleHRTdGFydGVkKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBkYXRh
LnJlZ2lzdHJhdGlvbktleSwgdGhyZWFkSWRlbnRpZmllciwgZGF0YS53b3JrZXJJRCksIDApOwor
fQorCit2b2lkIFNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlcjo6c3RhcnRGZXRjaCh1aW50NjRf
dCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCB1
aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgVU5VU0VEX1BBUkFN
KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKworICAgIC8vIEhhcmQgY29kaW5nIHNvbWUgZmV0
Y2hlcyBmb3IgdGVzdGluZyBwdXJwb3NlIHVudGlsIHdlIGltcGxlbWVudCB0aGUgY3JlYXRpb24g
b2YgZmV0Y2ggZXZlbnQuCisgICAgaWYgKHJlcXVlc3QudXJsKCkuc3RyaW5nKCkuY29udGFpbnMo
InRlc3QxIikpIHsKKyAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKKyAgICAgICAg
cmVzcG9uc2Uuc2V0VVJMKHJlcXVlc3QudXJsKCkpOworICAgICAgICByZXNwb25zZS5zZXRIVFRQ
U3RhdHVzQ29kZSgyMDApOworICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChBU0NJ
SUxpdGVyYWwoIkhlbGxvIGZyb20gc2VydmljZSB3b3JrZXIiKSk7CisgICAgICAgIG1fY29ubmVj
dGlvblRvU3RvcmFnZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpEaWRS
ZWNlaXZlRmV0Y2hSZXNwb25zZShzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVu
dGlmaWVyLCByZXNwb25zZSksIDApOworICAgICAgICBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6RGlkRmluaXNoRmV0Y2goc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIsIGZldGNoSWRlbnRpZmllciksIDApOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGlmIChyZXF1ZXN0LnVybCgpLnN0cmluZygpLmNvbnRhaW5zKCJ0ZXN0
MiIpKSB7CisgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CisgICAgICAgIHJlc3Bv
bnNlLnNldFVSTChyZXF1ZXN0LnVybCgpKTsKKyAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1
c0NvZGUoNTAwKTsKKyAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoQVNDSUlMaXRl
cmFsKCJFcnJvciBmcm9tIHNlcnZpY2Ugd29ya2VyIikpOworICAgICAgICBtX2Nvbm5lY3Rpb25U
b1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6RGlkUmVjZWl2
ZUZldGNoUmVzcG9uc2Uoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGZldGNoSWRlbnRpZmll
ciwgcmVzcG9uc2UpLCAwKTsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9TdG9yYWdlUHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OkRpZEZpbmlzaEZldGNoKHNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIpLCAwKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBpZiAocmVxdWVzdC51cmwoKS5zdHJpbmcoKS5jb250YWlucygidGVzdDMiKSkg
eworICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOworICAgICAgICByZXNwb25zZS5z
ZXRVUkwocmVxdWVzdC51cmwoKSk7CisgICAgICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2Rl
KDUwMCk7CisgICAgICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNUZXh0KEFTQ0lJTGl0ZXJhbCgi
RXJyb3IgZnJvbSBzZXJ2aWNlIHdvcmtlciIpKTsKKyAgICAgICAgcmVzcG9uc2Uuc2V0VHlwZShS
ZXNvdXJjZVJlc3BvbnNlOjpUeXBlOjpFcnJvcik7CisgICAgICAgIG1fY29ubmVjdGlvblRvU3Rv
cmFnZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpEaWRSZWNlaXZlRmV0
Y2hSZXNwb25zZShzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyLCBy
ZXNwb25zZSksIDApOworICAgICAgICBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6RGlkRmluaXNoRmV0Y2goc2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIsIGZldGNoSWRlbnRpZmllciksIDApOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgbV9jb25uZWN0aW9uVG9TdG9yYWdlUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6U3Rv
cmFnZVByb2Nlc3M6OkZhaWxlZEZldGNoKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBmZXRj
aElkZW50aWZpZXIpLCAwKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mOTgyYTdjN2NlZTVlMTcxY2U2MTMxNTU4ZmMwNGE0MDlmY2NhYjRiCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtl
ckNvbnRleHRNYW5hZ2VyLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSAiQ29ubmVjdGlv
bi5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9uT3IuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1NlcnZpY2VXb3JrZXJUaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgRmV0Y2hPcHRpb25zOworY2xhc3MgUmVzb3VyY2VSZXF1
ZXN0Oworc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTsKK30KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlciB7CitwdWJsaWM6Cisg
ICAgZXhwbGljaXQgU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyKFJlZjxJUEM6OkNvbm5lY3Rp
b24+JiYgY29ubmVjdGlvbikKKyAgICAgICAgOiBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNz
KFdURk1vdmUoY29ubmVjdGlvbikpCisgICAgeworICAgIH0KKworICAgIHZvaWQgc3RhcnRTZXJ2
aWNlV29ya2VyQ29udGV4dCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29u
c3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhJik7CisgICAgdm9pZCBzdGFydEZl
dGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElk
ZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmKTsKKworcHJp
dmF0ZToKKyAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9j
ZXNzOworICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
VGhyZWFkPj4gbV93b3JrZXJUaHJlYWRNYXA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcApp
bmRleCA3NmFlN2I1NWJhMDMwY2NiMDM4Mzc4NmU4ODcyODU5OWZmYmQ2YWRhLi42OGY2MmVlODE0
NmRhOGJkZWZlMTlhZTFiZmI4YTRkZjAyOWNkYzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAg
LTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKICNpbmNsdWRlICJM
b2dnaW5nLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudEZldGNoLmgiCiAjaW5jbHVk
ZSAiU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldl
YkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYlNXT3JpZ2luVGFibGUuaCIKQEAg
LTc1LDYgKzc2LDE1IEBAIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpzZXRTV09yaWdpblRh
YmxlU2hhcmVkTWVtb3J5KGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuCiAgICAgbV9zd09yaWdpblRh
YmxlLT5zZXRTaGFyZWRNZW1vcnkoaGFuZGxlKTsKIH0KIAorUmVmPFNlcnZpY2VXb3JrZXJDbGll
bnRGZXRjaD4gV2ViU1dDbGllbnRDb25uZWN0aW9uOjpzdGFydEZldGNoKFJlZjxXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRlcj4mJiBsb2FkZXIsIHVpbnQ2NF90IGlkZW50aWZpZXIsIFdURjo6RnVuY3Rp
b248dm9pZChSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYmIGZhbGxi
YWNrKQoreworICAgIEFTU0VSVChsb2FkZXItPm9wdGlvbnMoKS5zZXJ2aWNlV29ya2Vyc01vZGUg
PT0gU2VydmljZVdvcmtlcnNNb2RlOjpBbGwpOworLy8gICAgQVNTRVJUKGxvYWRlci0+b3B0aW9u
cygpLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNX
U2VydmVyQ29ubmVjdGlvbjo6U3RhcnRGZXRjaChpZGVudGlmaWVyLCBsb2FkZXItPm9wdGlvbnMo
KS5zZXJ2aWNlV29ya2VySWRlbnRpZmllciwgbG9hZGVyLT5vcmlnaW5hbFJlcXVlc3QoKSwgbG9h
ZGVyLT5vcHRpb25zKCkpKTsKKyAgICByZXR1cm4gU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpj
cmVhdGUoV1RGTW92ZShsb2FkZXIpLCBpZGVudGlmaWVyLCBtX2Nvbm5lY3Rpb24uZ2V0KCksIFdU
Rk1vdmUoZmFsbGJhY2spKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAv
LyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oCmluZGV4IDI2MTdlYzJlNzRm
MGU1NGUyNDQ2NjhjMmMyMzVkMzYzYmRhZGQ2NTMuLjM0M2M4MjBkNjZhMGEzYzEyODhiYzFmZjcx
YmEzNTU5NzliNjhmOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5j
bHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2lu
Y2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1NXQ2xpZW50Q29ubmVjdGlvbi5oPgogI2luY2x1ZGUgPHBh
bC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CkBAIC00MSw2ICs0Miw3
IEBAIHN0cnVjdCBFeGNlcHRpb25EYXRhOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3Mg
U2VydmljZVdvcmtlckNsaWVudEZldGNoOwogY2xhc3MgV2ViU1dPcmlnaW5UYWJsZTsKIAogY2xh
c3MgV2ViU1dDbGllbnRDb25uZWN0aW9uIDogcHVibGljIFdlYkNvcmU6OlNXQ2xpZW50Q29ubmVj
dGlvbiwgcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVzc2FnZVJlY2Vp
dmVyIHsKQEAgLTU4LDYgKzYwLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAKICAgICBib29sIGhh
c1NlcnZpY2VXb3JrZXJSZWdpc3RlcmVkRm9yT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luJikgY29uc3QgZmluYWw7CisgICAgUmVmPFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaD4g
c3RhcnRGZXRjaChSZWY8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI+JiYsIHVpbnQ2NF90IGlkZW50
aWZpZXIsIFdURjo6RnVuY3Rpb248dm9pZChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpPiYmIGZhbGxiYWNrKTsKIAogcHJpdmF0ZToKICAg
ICB2b2lkIHNjaGVkdWxlU3RvcmFnZUpvYihjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9i
RGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlclByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAKaW5kZXggNjFkOGNlNTZlZWM1YmQ0MTcz
YjY0MmJlOTA2MWU3M2M3NzM3NmY5OS4uYzRhNmI1NWY2YjhiMjQxMTZlOTMyNjZlMGUzNDA4NDcy
ZWI4ZGQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlclByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwCkBAIC01OCw2ICs1OCw0MiBAQCBX
ZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb24mIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2Vy
dmljZVdvcmtlckNvbm5lY3Rpb25GbwogICAgIHJldHVybiBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS53ZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbigpLT5zZXJ2aWNlV29ya2VyQ29ubmVjdGlv
bkZvclNlc3Npb24oc2Vzc2lvbklEKTsKIH0KIAorc3RhdGljIGlubGluZSBib29sIHNob3VsZEhh
bmRsZUZldGNoKGNvbnN0IFdlYlNXQ2xpZW50Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMp
Cit7CisgICAgaWYgKG9wdGlvbnMuc2VydmljZVdvcmtlcnNNb2RlICE9IFNlcnZpY2VXb3JrZXJz
TW9kZTo6QWxsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIHByb2JhYmx5IGFzc2VydCB0aGF0IG9wdGlvbnMuc2VydmljZVdvcmtlcnNJZGVudGlmaWVy
IGlzIG5vdCBudWxsLgorICAgIGlmIChpc1BvdGVudGlhbE5hdmlnYXRpb25PclN1YnJlc291cmNl
UmVxdWVzdChvcHRpb25zLmRlc3RpbmF0aW9uKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgLy8gRklYTUU6IEltcGxlbWVudCBub24tc3VicmVzb3VyY2UgcmVxdWVzdCBsb2Fkcy4KKyAg
ICBpZiAoaXNOb25TdWJyZXNvdXJjZVJlcXVlc3Qob3B0aW9ucy5kZXN0aW5hdGlvbikpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBjb25uZWN0aW9uLmhhc1NlcnZpY2VXb3Jr
ZXJSZWdpc3RlcmVkRm9yT3JpZ2luKCpyZXNvdXJjZS5vcmlnaW4oKSk7Cit9CisKK3ZvaWQgV2Vi
U2VydmljZVdvcmtlclByb3ZpZGVyOjpoYW5kbGVGZXRjaChSZXNvdXJjZUxvYWRlciYgbG9hZGVy
LCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV1RG
OjpGdW5jdGlvbjx2b2lkKFJlc291cmNlTG9hZGVyJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+
JiYgZmFsbGJhY2spCit7CisgICAgYXV0byYgY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLndlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKCktPnNlcnZpY2VXb3JrZXJDb25u
ZWN0aW9uRm9yU2Vzc2lvbihzZXNzaW9uSUQpOworCisgICAgaWYgKCFzaG91bGRIYW5kbGVGZXRj
aChjb25uZWN0aW9uLCByZXNvdXJjZSwgbG9hZGVyLm9wdGlvbnMoKSkpIHsKKyAgICAgICAgLy8g
QWRkIGFuIG9wdGlvbiB0byBlcnJvciByZXNvdXJjZSBsb2FkIGZvciBEVEwgdG8gYWN0dWFsbHkg
Z28gdGhyb3VnaCBwcmVmbGlnaHQuCisgICAgICAgIGZhbGxiYWNrKGxvYWRlciwgbG9hZGVyLm9y
aWdpbmFsUmVxdWVzdCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gZmV0
Y2ggPSBjb25uZWN0aW9uLnN0YXJ0RmV0Y2gobG9hZGVyLCArK21fbmV4dE9uZ29pbmdGZXRjaElk
ZW50aWZpZXIsIFdURk1vdmUoZmFsbGJhY2spKTsKKyAgICBtX29uZ29pbmdGZXRjaGVzLmFkZCht
X25leHRPbmdvaW5nRmV0Y2hJZGVudGlmaWVyLCBXVEZNb3ZlKGZldGNoKSk7Cit9CisKK3ZvaWQg
V2ViU2VydmljZVdvcmtlclByb3ZpZGVyOjpkaWRSZWNlaXZlU2VydmljZVdvcmtlckNsaWVudEZl
dGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVj
b2RlcikKK3sKKyAgICBpZiAoYXV0byBmZXRjaCA9IG1fb25nb2luZ0ZldGNoZXMuZ2V0KGRlY29k
ZXIuZGVzdGluYXRpb25JRCgpKSkKKyAgICAgICAgZmV0Y2gtPmRpZFJlY2VpdmVNZXNzYWdlKGNv
bm5lY3Rpb24sIGRlY29kZXIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlm
IC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmgKaW5kZXggNzc1
ZjVlZTA0YjJjNmZkZDc1NmEyZWNlODhjNjhhNzcwZmM3MDEwZi4uOWNmMDFjMmEwZWI5NWFhMmMw
Y2I3MjUwYmQ3NjE0MzU3OWNmMmRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmgKQEAgLTI3LDYg
KzI3LDcgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorI2luY2x1ZGUgIlNlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclBy
b3ZpZGVyLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAgLTM2LDEyICsz
NywxOSBAQCBjbGFzcyBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgV2Vi
Q29yZTo6U2VydmljZVdvcmtlclByb3ZpZGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViU2Vy
dmljZVdvcmtlclByb3ZpZGVyJiBzaW5nbGV0b24oKTsKIAorICAgIHZvaWQgaGFuZGxlRmV0Y2go
V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXImLCBXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZSYsIFBBTDo6
U2Vzc2lvbklELCBXVEY6OkZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXImLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKT4mJiBmYWxsYmFjayk7CisKKyAgICB2b2lk
IGRpZFJlY2VpdmVTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYpOworCiBwcml2YXRlOgogICAgIGZyaWVuZCBOZXZlckRlc3Ryb3ll
ZDxXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI+OwogICAgIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRl
cigpOwogCiAgICAgV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uJiBzZXJ2aWNlV29ya2VyQ29u
bmVjdGlvbkZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQpIGZpbmFsOwogCisgICAgSGFzaE1hcDx1
aW50NjRfdCwgUmVmPFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaD4+IG1fb25nb2luZ0ZldGNoZXM7
CisgICAgdWludDY0X3QgbV9uZXh0T25nb2luZ0ZldGNoSWRlbnRpZmllciB7IDAgfTsKKwogfTsg
Ly8gY2xhc3MgV2ViU2VydmljZVdvcmtlclByb3ZpZGVyCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViVG9TdG9y
YWdlUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDVhMTJkMDRkY2JkMjMx
MTJjNDAzOTMxOTQ1ZTVmYzU1NjEwMzA3NzYuLmIyZGY4MzdlMWQ4MzM1OTFmYTViNDg0ZTMzOWJj
ZDg1NjNjMTUwMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTI3
LDExICsyNywxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlRvU3RvcmFn
ZVByb2Nlc3NDb25uZWN0aW9uLmgiCiAKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50RmV0
Y2hNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXJNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJXZWJTV0NsaWVudENvbm5lY3Rpb24u
aCIKICNpbmNsdWRlICJXZWJTV0NsaWVudENvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUg
IldlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oIgogCiB1c2luZyBuYW1lc3BhY2UgUEFMOwogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC02Nyw2ICs2OSwxMCBAQCB2b2lkIFdlYlRvU3RvcmFn
ZVByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3RpbwogICAgICAgICAgICAgc2VydmljZVdvcmtlckNvbm5lY3Rpb24tPmRpZFJlY2VpdmVN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6U2VydmljZVdv
cmtlckNsaWVudEZldGNoOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAgV2ViU2Vy
dmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKS5kaWRSZWNlaXZlU2VydmljZVdvcmtlckNs
aWVudEZldGNoTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KICNlbmRpZgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDZlMjc2NzExZWNjNTg3Yjk3NGFjYTMxMzE2
ZGJkMWNhM2NmNzE5MWIuLmRlYjkwNzc4ZTQ5OWRhMDJhOWU5OWRhMzU5NThlNDFlMWU5NWM2OTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTQwLDYgKzQwLDcg
QEAKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJOZXR3
b3JrU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5o
IgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5oIgogI2luY2x1ZGUgIlNl
c3Npb25UcmFja2VyLmgiCiAjaW5jbHVkZSAiU3RhdGlzdGljc0RhdGEuaCIKICNpbmNsdWRlICJT
dG9yYWdlUHJvY2Vzc01lc3NhZ2VzLmgiCkBAIC0xMDUsNyArMTA2LDYgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlTG9hZE9ic2VydmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25D
aGVja3MuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NXQ29udGV4dE1hbmFnZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NjaGVtZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9y
aWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmg+CkBA
IC0xNjIyLDcgKzE2MjIsNyBAQCBMaWJXZWJSVENOZXR3b3JrJiBXZWJQcm9jZXNzOjpsaWJXZWJS
VENOZXR3b3JrKCkKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiB2b2lkIFdlYlByb2Nlc3M6
OmdldFdvcmtlckNvbnRleHRDb25uZWN0aW9uKCkKIHsKLSAgICBBU1NFUlQoIW1fd29ya2VyQ29u
dGV4dENvbm5lY3Rpb24pOworICAgIEFTU0VSVCghbV9zZXJ2aWNlV29ya2VyTWFuYWdlcik7CiAK
ICNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKICAgICBJUEM6OkNvbm5lY3Rpb246OlNvY2tl
dFBhaXIgc29ja2V0UGFpciA9IElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0
aW9uKCk7CkBAIC0xNjQyLDIwICsxNjQyLDI2IEBAIHZvaWQgV2ViUHJvY2Vzczo6Z2V0V29ya2Vy
Q29udGV4dENvbm5lY3Rpb24oKQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAj
ZW5kaWYKIAotICAgIG1fd29ya2VyQ29udGV4dENvbm5lY3Rpb24gPSBJUEM6OkNvbm5lY3Rpb246
OmNyZWF0ZVNlcnZlckNvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIsICp0aGlzKTsKLSAg
ICBtX3dvcmtlckNvbnRleHRDb25uZWN0aW9uLT5vcGVuKCk7Ci0KKyAgICBhdXRvIHdvcmtlckNv
bnRleHRDb25uZWN0aW9uID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJDb25uZWN0aW9u
KGNvbm5lY3Rpb25JZGVudGlmaWVyLCAqdGhpcyk7CisgICAgd29ya2VyQ29udGV4dENvbm5lY3Rp
b24tPm9wZW4oKTsKKyAgICBtX3NlcnZpY2VXb3JrZXJNYW5hZ2VyID0gIFNlcnZpY2VXb3JrZXJD
b250ZXh0TWFuYWdlcihXVEZNb3ZlKHdvcmtlckNvbnRleHRDb25uZWN0aW9uKSk7CiAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpEaWRHZXRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbihjb25u
ZWN0aW9uQ2xpZW50UG9ydCksIDApOwogfQogCiB2b2lkIFdlYlByb2Nlc3M6OnN0YXJ0U2Vydmlj
ZVdvcmtlckNvbnRleHQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0
IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSkKIHsKLSAgICBhdXRvIGNvbnRleHRSZXN1
bHQgPSBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zdGFydFNlcnZpY2VXb3JrZXJDb250
ZXh0KHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBkYXRhKTsKLSAgICAKLSAgICBpZiAoY29u
dGV4dFJlc3VsdC5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgbV93b3JrZXJDb250ZXh0Q29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OlNlcnZpY2VXb3JrZXJDb250ZXh0
RmFpbGVkVG9TdGFydChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgZGF0YS5yZWdpc3RyYXRp
b25LZXksIGRhdGEud29ya2VySUQsIGNvbnRleHRSZXN1bHQuZXhjZXB0aW9uKCkubWVzc2FnZSgp
KSwgMCk7Ci0gICAgZWxzZQotICAgICAgICBtX3dvcmtlckNvbnRleHRDb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6U2VydmljZVdvcmtlckNvbnRleHRTdGFydGVkKHNl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBkYXRhLnJlZ2lzdHJhdGlvbktleSwgY29udGV4dFJl
c3VsdC5yZXR1cm5WYWx1ZSgpLCBkYXRhLndvcmtlcklEKSwgMCk7CisgICAgaWYgKCFtX3NlcnZp
Y2VXb3JrZXJNYW5hZ2VyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3NlcnZpY2VXb3JrZXJN
YW5hZ2VyLT5zdGFydFNlcnZpY2VXb3JrZXJDb250ZXh0KHNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyLCBkYXRhKTsKK30KKwordm9pZCBXZWJQcm9jZXNzOjpzdGFydEZldGNoSW5TZXJ2aWNlV29y
a2VyKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElk
ZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucykKK3sKKyAgICBp
ZiAoIW1fc2VydmljZVdvcmtlck1hbmFnZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc2Vy
dmljZVdvcmtlck1hbmFnZXItPnN0YXJ0RmV0Y2goc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIs
IGZldGNoSWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHJlcXVlc3QsIG9wdGlv
bnMpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4
IDVjMmU2Yzc2ZGY3ODI0NWExYjMxNTQ5YzZlMDExZmU0ZjVkNGQzZjcuLmZlZTE0MzYyNmI3MWVi
OTEwYzg3MzUwZjA1NmQyMjc2YWJmYzkxYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NDb25uZWN0
aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIlJlc291cmNlQ2FjaGVzVG9DbGVhci5oIgogI2luY2x1
ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ29udGV4dE1h
bmFnZXIuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlclN0YXRlLmgiCiAjaW5jbHVkZSAiVmlld1Vw
ZGF0ZURpc3BhdGNoZXIuaCIKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRj
aGVyLmgiCkBAIC0zMDAsNyArMzAxLDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiAgICAgdm9pZCBnZXRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbigpOwogICAgIHZvaWQg
c3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4dCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhJik7Ci0gICAgUmVm
UHRyPElQQzo6Q29ubmVjdGlvbj4gbV93b3JrZXJDb250ZXh0Q29ubmVjdGlvbjsKKyAgICB2b2lk
IHN0YXJ0RmV0Y2hJblNlcnZpY2VXb3JrZXIodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgdWludDY0X3Qgc2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6
OkZldGNoT3B0aW9ucyYpOwogI2VuZGlmCiAKICAgICB2b2lkIHJlbGVhc2VQYWdlQ2FjaGUoKTsK
QEAgLTQzOCw2ICs0MzksOSBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKFdBWUxBTkQpCiAgICAg
c3RkOjp1bmlxdWVfcHRyPFdheWxhbmRDb21wb3NpdG9yRGlzcGxheT4gbV93YXlsYW5kQ29tcG9z
aXRvckRpc3BsYXk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgc3Rk
OjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXI+IG1fc2VydmljZVdvcmtlck1h
bmFnZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAyMjA2MzYwMWUw
NjNhYjViMjE3OGZmN2IzNmM5Yzk5MTI4MTA3OTdmLi4xYTdiNzY4ODkwNDBlODRiNzViNWFjYTI3
MTY1ZGI5NWUzODQ0MDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTE3LDUgKzExNyw2IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nl
c3MgTGVnYWN5UmVjZWl2ZXIgewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBHZXRX
b3JrZXJDb250ZXh0Q29ubmVjdGlvbigpCiAgICAgU3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4dCh1
aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YSBjb250ZXh0RGF0YSkKK1N0YXJ0RmV0Y2hJblNlcnZpY2VXb3Jr
ZXIodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRl
bnRpZmllciwgdWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCByZXF1ZXN0LCBzdHJ1Y3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zIG9wdGlvbnMp
CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCBiZjJmZTY0NzMxNWY3YjliOTkxNmNjYWNlNmZkNGRiNzE0NjJj
ZGZmLi5iMDVkNzU3ZWNiMzhmZTNlZjRmZjdhZDZmNzdjYTdkOWVkNzFjZGExIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTctMTAtMTggIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgorCisgICAgICAgIEFkZCBwcmVsaW1pbmFyeSBzdXBwb3J0IGZvciBTZXJ2aWNlV29ya2VyIEhh
bmRsZSBGZXRjaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc4NDc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1mZXRjaC5odHRwcy1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2lj
LWZldGNoLmh0dHBzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy9z
ZXJ2aWNlL3Jlc291cmNlcy9iYXNpYy1mZXRjaC13b3JrZXIuanM6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9iYXNpYy1mZXRjaC5qczogQWRk
ZWQuCisKIDIwMTctMTAtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGQgYW4gZWZmaWNpZW50IGRhdGEgc3RydWN0dXJlIGZvciBXZWJDb3JlIHRvIHF1ZXJ5
IGlmIHRoZXJlIGlzIGEgU2VydmljZSBXb3JrZXIgcmVnaXN0ZXJlZCBmb3IgYSBnaXZlbiBvcmln
aW4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jh
c2ljLWZldGNoLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29y
a2Vycy9zZXJ2aWNlL2Jhc2ljLWZldGNoLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
ZmQ2NDlmMDliZjE0MzAxY2U4N2NkMGM5ZmM2MjRhZGM2MGQ2NGZlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvYmFzaWMtZmV0Y2guaHR0
cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEy
OiB0ZXN0MSBzdGF0dXMgY29kZTogMjAwCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTM6IHRlc3Qx
IHN0YXR1cyB0ZXh0OiBIZWxsbyBmcm9tIHNlcnZpY2Ugd29ya2VyCitDT05TT0xFIE1FU1NBR0U6
IGxpbmUgMTY6IHRlc3QyIHN0YXR1cyBjb2RlOiA1MDAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAx
NzogdGVzdDIgc3RhdHVzIHRleHQ6IEVycm9yIGZyb20gc2VydmljZSB3b3JrZXIKK0NPTlNPTEUg
TUVTU0FHRTogbGluZSAyNjogdGVzdDMgZmV0Y2ggZmFpbGVkIGFzIGV4cGVjdGVkCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2ljLWZldGNo
Lmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNp
Yy1mZXRjaC5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyYTA2NmFjOThlZjc4Yjg4NGY1ZmNhZTQ2
YTk0MThhNThhNWNiYWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dvcmtlcnMvc2VydmljZS9iYXNpYy1mZXRjaC5odHRwcy5odG1sCkBAIC0wLDAgKzEsOSBAQAor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc3ctdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYmFzaWMt
ZmV0Y2guanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2ljLWZldGNoLXdv
cmtlci5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNl
cy9iYXNpYy1mZXRjaC13b3JrZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjlkOGEyYmQzMDE1Y2FlNGE0YTQ4
NTZhMjRmMzlhZjg2YzE2ZDE3NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9iYXNpYy1mZXRjaC13b3JrZXIuanMKQEAg
LTAsMCArMSBAQAorLy8gRklYTUU6IHJlZ2lzdGVyIGFuIG9uZmV0Y2ggZXZlbnQgaGFuZGxlciBh
bmQgaGFuZGxlICJ0ZXN0MSIsICJ0ZXN0MiIgYW5kICJ0ZXN0MyIgVVJMcwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2ljLWZl
dGNoLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2Vz
L2Jhc2ljLWZldGNoLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4NzQzYTI2NDI5YjE3NzdiMjRjYjc2MTI1Zjgw
MDNjYzljNDhkNGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dv
cmtlcnMvc2VydmljZS9yZXNvdXJjZXMvYmFzaWMtZmV0Y2guanMKQEAgLTAsMCArMSwzNCBAQAor
ZnVuY3Rpb24gZG9uZSgpCit7CisgICAgZmluaXNoU1dUZXN0KCk7Cit9CisKK2FzeW5jIGZ1bmN0
aW9uIHRlc3QoKQoreworICAgIHRyeSB7CisgICAgICAgIGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNl
V29ya2VyLnJlZ2lzdGVyKCJyZXNvdXJjZXMvYmFzaWMtZmV0Y2gtd29ya2VyLmpzIiwgeyB9KTsK
KworICAgICAgICB2YXIgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCgidGVzdDEiKTsKKyAgICAgICAg
Y29uc29sZS5sb2coInRlc3QxIHN0YXR1cyBjb2RlOiAiICsgcmVzcG9uc2Uuc3RhdHVzKTsKKyAg
ICAgICAgY29uc29sZS5sb2coInRlc3QxIHN0YXR1cyB0ZXh0OiAiICsgcmVzcG9uc2Uuc3RhdHVz
VGV4dCk7CisKKyAgICAgICAgdmFyIHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goInRlc3QyIik7Cisg
ICAgICAgIGNvbnNvbGUubG9nKCJ0ZXN0MiBzdGF0dXMgY29kZTogIiArIHJlc3BvbnNlLnN0YXR1
cyk7CisgICAgICAgIGNvbnNvbGUubG9nKCJ0ZXN0MiBzdGF0dXMgdGV4dDogIiArIHJlc3BvbnNl
LnN0YXR1c1RleHQpOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXNwb25zZSA9IGF3
YWl0IGZldGNoKCJ0ZXN0MyIpOworICAgICAgICAgICAgY29uc29sZS5sb2coInRlc3QzIGZldGNo
IHN1Y2NlZWRlZCB1bmV4cGVjdGVkbHkiKTsKKyAgICAgICAgICAgIGNvbnNvbGUubG9nKCJ0ZXN0
MyBzdGF0dXMgY29kZTogIiArIHJlc3BvbnNlLnN0YXR1cyk7CisgICAgICAgICAgICBjb25zb2xl
LmxvZygidGVzdDMgc3RhdHVzIHRleHQ6ICIgKyByZXNwb25zZS5zdGF0dXNUZXh0KTsKKworICAg
ICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBjb25zb2xlLmxvZygidGVzdDMgZmV0Y2gg
ZmFpbGVkIGFzIGV4cGVjdGVkIik7CisgICAgICAgIH0KKyAgICB9IGNhdGNoKGUpIHsKKyAgICAg
ICAgY29uc29sZS5sb2coIkdvdCBleGNlcHRpb246ICIgKyBlKTsKKyAgICB9CisgICAgZmluaXNo
U1dUZXN0KCk7Cit9CisKK3Rlc3QoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324146</attachid>
            <date>2017-10-18 12:16:05 -0700</date>
            <delta_ts>2017-10-18 12:58:59 -0700</delta_ts>
            <desc>Rebasing</desc>
            <filename>bug-178475-20171018121604.patch</filename>
            <type>text/plain</type>
            <size>91450</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzNjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmViOTQ5MjMwM2Q1Y2Vh
ZWRkYzcxNjZiMGYwZDEyM2E5ZTA2MzMyMy4uMzQ5ZjcwMjU3YzExYTcyODBkZGE4NjMwYjRjN2Vk
ZjNmOTJiZjNkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE3LTEwLTE4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgcHJlbGltaW5hcnkg
c3VwcG9ydCBmb3IgU2VydmljZVdvcmtlciBIYW5kbGUgRmV0Y2gKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODQ3NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvd29ya2Vycy9z
ZXJ2aWNlL2Jhc2ljLWZldGNoLmh0dHBzLmh0bWwKKworICAgICAgICBBZGRpbmcgcGFyYW1ldGVy
cyB0byBhbGxvdyBXZWJLaXQgdG8gZG8gbG9hZGluZyB0aHJvdWdoIFNlcnZpY2UgV29ya2VyIG9y
IHRocm91Z2ggcmVndWxhciBuZXR3b3JraW5nLgorICAgICAgICBBIHNjcmlwdCBjb250ZXh0IGlz
IG5vdyBzdG9yaW5nIGl0cyBzZWxlY3RlZCBzZXJ2aWNlIHdvcmtlciBpZGVudGlmZXIuIFRoaXMg
c2hvdWxkIGJlIGZ1bGx5IGltcGxlbWVudGVkIGxhdGVyIG9uLgorICAgICAgICBUaGlzIHNlbGVj
dGVkIHNlcnZpY2Ugd29ya2VyIGlkZW50aWZpZXIgaXMgcGFzc2VkIHRvIGxvYWRpbmcgY29kZSBh
cyBhIFJlc291cmNlTG9hZGVyT3B0aW9ucyBmaWVsZC4KKyAgICAgICAgU2VydmljZSB3b3JrZXJz
IG1vZGUgaXMgYWxzbyBhZGRlZCBhcyBhIFJlc291cmNlTG9hZGVyT3B0aW9ucyBmaWVsZCBzbyB0
aGF0IHRoZSBzZXJ2aWNlIHdvcmtlciBjYW4gYmUgYnlwYXNzZWQuCisKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OnNlbGVjdGVkU2VydmljZVdvcmtlcklkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c2V0U2VsZWN0ZWRTZXJ2aWNlV29ya2VySWRlbnRp
Zmllcik6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OkRvY3VtZW50VGhyZWFk
YWJsZUxvYWRlcik6CisgICAgICAgICogbG9hZGVyL0ZldGNoT3B0aW9ucy5oOgorICAgICAgICAo
V2ViQ29yZTo6aXNQb3RlbnRpYWxOYXZpZ2F0aW9uT3JTdWJyZXNvdXJjZVJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6aXNOb25TdWJyZXNvdXJjZVJlcXVlc3QpOgorICAgICAgICAqIGxvYWRl
ci9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaDoKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFk
YWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVy
OjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVh
ZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Ok1haW5UaHJlYWRCcmlkZ2UpOgorICAgICAg
ICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFk
Lmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRX
aXRoUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
clByb3ZpZGVyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0
TWFuYWdlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlclRocmVhZC5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXIuaDoKKwogMjAxNy0xMC0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgogCiAgICAgICAgIEFkZCBhbiBlZmZpY2llbnQgZGF0YSBzdHJ1Y3R1cmUgZm9yIFdlYkNvcmUg
dG8gcXVlcnkgaWYgdGhlcmUgaXMgYSBTZXJ2aWNlIFdvcmtlciByZWdpc3RlcmVkIGZvciBhIGdp
dmVuIG9yaWdpbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCA1MGNkNjQyOGEyYTBjYmJmOTNhZmQ4M2ZiOGMzNjBkMmFj
MzA1ZjAyLi4xYTI5OGQwYWY1Y2ZkOTZiNzk5MTczOTkyZTRmZjA5NjE4YWRmMTkwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDg2IEBACisyMDE3LTEwLTE4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KKworICAgICAgICBBZGQgcHJlbGltaW5hcnkgc3VwcG9ydCBmb3IgU2VydmljZVdv
cmtlciBIYW5kbGUgRmV0Y2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3ODQ3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFByZWxpbWluYXJ5IHN1cHBvcnQgb2YgSGFuZGxlIEZldGNoIGFsZ29yaXRobSBh
bmQgaW50ZWdyYXRpb24gd2l0aCBmZXRjaCBzcGVjLgorICAgICAgICBBZGRpbmcgU2VydmljZVdv
cmtlckNsaWVudEZldGNoIGFzIHRoZSBjbGFzcyByZXNwb25zaWJsZSB0byBkbyB0aGUgbG9hZCB0
aHJvdWdoIFNlcnZpY2VXb3JrZXIuCisgICAgICAgIEl0IGlzIHNpbWlsYXIgdG8gV2ViUmVzb3Vy
Y2VMb2FkZXIgdGhhdCBkbyB0aGUgbG9hZCB0aHJvdWdoIE5ldHdvcmtQcm9jZXNzLgorICAgICAg
ICBJbiBjYXNlIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaCBpcyBub3QgYWJsZSB0byBsb2FkIHRo
cm91Z2ggU2VydmljZVdvcmtlciwKKyAgICAgICAgaXQgd2lsbCBmYWxsYmFjayB0byBXZWJSZXNv
dXJjZUxvYWRlciB0aHJvdWdoIGEgZmFsbGJhY2sgY2FsbGJhY2suCisKKyAgICAgICAgTG9hZGlu
ZyB0aHJvdWdoIFNlcnZpY2UgV29ya2VyIGlzIGRvbmUgY3VycmVudGx5IGlmOgorICAgICAgICAt
IFRoZXJlIGlzIGEgc2VydmljZSB3b3JrZXIgcmVnaXN0ZXJlZCBmb3IgdGhhdCBvcmlnaW4KKyAg
ICAgICAgLSBSZXF1ZXN0IGlzIGEgc3VicmVzb3VyY2UKKyAgICAgICAgLSBzZXJ2aWNlIHdvcmtl
cnMgbW9kZSBpcyBhbGwKKyAgICAgICAgVGhlcmUgd2lsbCBiZSBjYXNlcyB3aGVyZSB0aGUgc2Vy
dmljZSB3b3JrZXIgd2lsbCBub3QgZG8gdGhlIGxvYWRpbmcsIGZvciBpbnN0YW5jZSB3aGVuIGZl
dGNoIGV2ZW50IGhhbmRsZXIgaXMgbm90IHNldC4KKyAgICAgICAgRnV0dXJlIHdvcmsgc2hvdWxk
IHRyeSB0byByZWR1Y2UgdGhlIGNhc2VzIHdoZXJlIHRoZSBJUEMgZGFuc2UgaXMgZG9uZSB1bm5l
Y2Vzc2FyaWx5LgorCisgICAgICAgIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaCBpcyByZXNwb25z
aWJsZSB0byBhZGFwdCB0aGUgU2VydmljZVdvcmtlciByZXNwb25zZSB0byBSZXNvdXJjZUxvYWRl
ci4KKyAgICAgICAgSW4gcGFydGljdWxhciwgaXQgaXMgY2FsbGluZyBSZXNvdXJjZUxvYWRlciBl
cnJvciBjYWxsYmFjayBpZiByZXNwb25zZSBpcyBvZiB0eXBlIGVycm9yLgorICAgICAgICBJdCBp
cyBjYWxsaW5nIFJlc291cmNlTG9hZGVyIHJlZGlyZWN0aW9uIGNhbGxiYWNrIGlmIHJlc3BvbnNl
IGlzIGEgcmVkaXJlY3Rpb24gcmVzcG9uc2UuCisKKyAgICAgICAgSW1wbGVtZW50aW5nIHRoZSBJ
UEMgY29tbXVuaWNhdGlvbiBkZWRpY2F0ZWQgdG8gZmV0Y2ggYmV0d2VlbiBXZWJQcm9jZXNzIGFu
ZCBTZXJ2aWNlV29ya2VyIHRocm91Z2ggU3RvcmFnZVByb2Nlc3MuCisgICAgICAgIEluIHRoZSBm
dXR1cmUsIFdlYlByb2Nlc3Mgc2hvdWxkIGNyZWF0ZSBhIGRpcmVjdCBJUEMgY29tbXVuaWNhdGlv
biB0byB0aGUgU2VydmljZVdvcmtlciBwcm9jZXNzLgorCisgICAgICAgIE1vdmVkIFNXQ29udGV4
dE1hbmFnZXIgZnJvbSBXZWJDb3JlIHRvIFdlYktpdCBhbmQgcmVuYW1lZCBpdCB0byBTZXJ2aWNl
V29ya2VyQ29udGV4dE1hbmFnZXIuCisgICAgICAgIFRoaXMgY2xhc3MgaXMgbW92ZWQgdG8gV2Vi
S2l0IGFzIGl0IHdpbGwgaGF2ZSB0byBoYW5kbGUgSVBDIGFuZCBoYXZpbmcgYSBzZXBhcmF0aW9u
IHdpbGwgYWRkIHNvbWUgdW5uZWNlc3NhcnkgYm9pbGVycGxhdGUuCisKKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpzdGFydEZldGNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uOjpkaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNX
U2VydmVyQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUZldGNoRGF0YSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6ZGlkRmluaXNoRmV0Y2gpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OmZhaWxlZEZldGNoKToKKyAgICAgICAgKiBTdG9yYWdl
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oOgorICAgICAgICAq
IFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OmZhaWxlZEZldGNoKToKKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZVByb2Nlc3M6OmRpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKToKKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OmRpZFJlY2VpdmVGZXRjaERhdGEpOgorICAgICAgICAo
V2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6ZGlkRmluaXNoRmV0Y2gpOgorICAgICAgICAqIFN0b3Jh
Z2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmg6CisgICAgICAgICogU3RvcmFnZVByb2Nlc3MvU3Rv
cmFnZVByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0
ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9h
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9t
TmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJT
dHJhdGVneS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xp
ZW50RmV0Y2guY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6c2hvdWxkUmVkaXJlY3RBc0dF
VCk6CisgICAgICAgIChXZWJLaXQ6OmNvbXB1dGVOZXdSZXF1ZXN0KToKKyAgICAgICAgKFdlYktp
dDo6c2hvdWxkUmVkaXJlY3QpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyQ2xpZW50
RmV0Y2g6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3Jr
ZXJDbGllbnRGZXRjaDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNl
V29ya2VyQ2xpZW50RmV0Y2g6OmRpZEZpbmlzaEZldGNoKToKKyAgICAgICAgKFdlYktpdDo6U2Vy
dmljZVdvcmtlckNsaWVudEZldGNoOjpkaWRGYWlsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0
b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gubWVzc2FnZXMuaW46IEFkZGVk
LgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFn
ZXIuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU1dDb250ZXh0TWFuYWdlci5jcHAuCisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJD
b250ZXh0TWFuYWdlcjo6c3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4dCk6CisgICAgICAgIChXZWJL
aXQ6OlNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlcjo6c3RhcnRGZXRjaCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFu
YWdlci5oLgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXI6OlNl
cnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50
Q29ubmVjdGlvbjo6c3RhcnRGZXRjaCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ2xpZW50Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
ZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpzaG91bGRIYW5kbGVG
ZXRjaCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6aGFuZGxl
RmV0Y2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OmRpZFJl
Y2VpdmVTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjpnZXRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3M6OnN0YXJ0U2VydmljZVdvcmtlckNvbnRleHQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpzdGFydEZldGNoSW5TZXJ2aWNlV29ya2VyKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW46CisKIDIwMTctMTAtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBBZGQgYW4gZWZmaWNpZW50IGRhdGEgc3RydWN0dXJlIGZvciBXZWJDb3Jl
IHRvIHF1ZXJ5IGlmIHRoZXJlIGlzIGEgU2VydmljZSBXb3JrZXIgcmVnaXN0ZXJlZCBmb3IgYSBn
aXZlbiBvcmlnaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBkNWE5MjA0OTQ5ZDhiYmU4ZGJhYjY5MDY5OTY5NmVlOTQ1Mzg3ZTk0
Li43M2Q1MmNhMzUwYmNlOGUzNWFhOTk1ODJjNThlZjdlM2YyNmJiNzdiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMzM2LDgg
KzIzMzYsNiBAQAogCQk1MTdBNjNDNjFCNzQzMTkyMDBFN0RDREMgLyogS2V5ZWRFbmNvZGVyQ0Yu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0E2M0My
MUI3NDMxN0UwMEU3RENEQyAvKiBLZXllZEVuY29kZXJDRi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxN0IyNUE5MUNDODJCMkEwMDYxQzAxMSAv
KiBJREJDb25uZWN0aW9uUHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE3QjI1QTcxQ0M4MjAzMjAwNjFDMDExIC8qIElEQkNvbm5lY3Rpb25Q
cm94eS5jcHAgKi87IH07CiAJCTUxN0IyNUFBMUNDODJCMkEwMDYxQzAxMSAvKiBJREJDb25uZWN0
aW9uUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxN0IyNUE4MUNDODIwMzIwMDYxQzAxMSAvKiBJREJDb25uZWN0aW9uUHJveHkuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MTdDODcwQTFGOEVC
QjI1MDBFQjgwNzYgLyogU1dDb250ZXh0TWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdDODcwODFGOEVCOUJGMDBFQjgwNzYgLyogU1dD
b250ZXh0TWFuYWdlci5jcHAgKi87IH07Ci0JCTUxN0M4NzBCMUY4RUJCMjUwMEVCODA3NiAvKiBT
V0NvbnRleHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTdDODcwOTFGOEVCOUMwMDBFQjgwNzYgLyogU1dDb250ZXh0TWFuYWdlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxN0M4NzE4
MUY4RkQ0RDkwMEVCODA3NiAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3Qzg3MTYxRjhGRDREMzAw
RUI4MDc2IC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAgKi87IH07CiAJCTUxN0RFRUU1
MURFOTRBREMwMEI5MTY0NCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdERUVFMzFERTk0
QURDMDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tICovOyB9Owog
CQk1MTdERUVFODFERTk0QjA4MDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
TWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdE
RUVFNzFERTk0QjA4MDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwMjY5
LDggKzEwMjY3LDYgQEAKIAkJNTE3QTYzQzIxQjc0MzE3RTAwRTdEQ0RDIC8qIEtleWVkRW5jb2Rl
ckNGLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtleWVkRW5jb2RlckNGLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0IyNUE3MUNDODIwMzIwMDYxQzAxMSAv
KiBJREJDb25uZWN0aW9uUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSURCQ29ubmVjdGlvblByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTE3QjI1QTgxQ0M4MjAzMjAwNjFDMDExIC8qIElEQkNvbm5lY3Rpb25Qcm94eS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJDb25uZWN0aW9uUHJveHkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE3Qzg3MDgxRjhFQjlCRjAwRUI4MDc2IC8qIFNXQ29u
dGV4dE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU1dD
b250ZXh0TWFuYWdlci5jcHA7IHBhdGggPSB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRl
eHRNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwotCQk1MTdDODcwOTFG
OEVCOUMwMDBFQjgwNzYgLyogU1dDb250ZXh0TWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBTV0NvbnRleHRNYW5hZ2VyLmg7IHBhdGggPSB3b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsK
IAkJNTE3Qzg3MTAxRjhFRTcyRTAwRUI4MDc2IC8qIFNlcnZpY2VXb3JrZXJUaHJlYWQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU2VydmljZVdvcmtlclRocmVhZC5oOyBwYXRo
ID0gd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oOyBzb3VyY2VU
cmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTUxN0M4NzExMUY4RUU3MkYwMEVCODA3NiAvKiBTZXJ2
aWNlV29ya2VyVGhyZWFkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IFNlcnZpY2VXb3JrZXJUaHJlYWQuY3BwOyBwYXRoID0gd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlclRocmVhZC5jcHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJ
NTE3Qzg3MTYxRjhGRDREMzAwRUI4MDc2IC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTkxMDUsOCArMTkxMDEs
NiBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNTE3Qzg3MTExRjhFRTcyRjAwRUI4MDc2IC8qIFNl
cnZpY2VXb3JrZXJUaHJlYWQuY3BwICovLAogCQkJCTUxN0M4NzEwMUY4RUU3MkUwMEVCODA3NiAv
KiBTZXJ2aWNlV29ya2VyVGhyZWFkLmggKi8sCi0JCQkJNTE3Qzg3MDgxRjhFQjlCRjAwRUI4MDc2
IC8qIFNXQ29udGV4dE1hbmFnZXIuY3BwICovLAotCQkJCTUxN0M4NzA5MUY4RUI5QzAwMEVCODA3
NiAvKiBTV0NvbnRleHRNYW5hZ2VyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNvbnRleHQ7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzA2MDAsNyArMzA1OTQsNiBAQAogCQkJCUIy
MjI3QUY2MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdab29tQW5kUGFuLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMkU0RUM5ODBEMDBDMjJCMDA0MzI2NDMgLyogU1ZHWm9vbUV2ZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MTdBNTMxRDFGNEI1M0IxMDBEQ0RDMEEgLyogU1dDbGllbnRDb25uZWN0aW9u
LmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTdDODcwQjFGOEVCQjI1MDBFQjgwNzYgLyogU1dDb250
ZXh0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE3QTUyRjAxRjQ3NTM1QjAwRENEQzBB
IC8qIFNXU2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUY2NDU5NzFGNEE2ODZGMDBCNTRE
RUQgLyogU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTUxN0E1MzQ2
MUY1MEMxN0YwMERDREMwQSAvKiBTV1NlcnZlcldvcmtlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0z
NDQxMSw3ICszNDQwNCw2IEBACiAJCQkJQjIyMjdBRjUwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1pv
b21BbmRQYW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJFNEVDOTcwRDAwQzIyQjAwNDMyNjQz
IC8qIFNWR1pvb21FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTdBNTMxQzFGNEI1M0Ix
MDBEQ0RDMEEgLyogU1dDbGllbnRDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUx
N0M4NzBBMUY4RUJCMjUwMEVCODA3NiAvKiBTV0NvbnRleHRNYW5hZ2VyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTUxN0E1MkYxMUY0NzU0RTcwMERDREMwQSAvKiBTV1NlcnZlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1MUY2NDU5NjFGNEE2ODZGMDBCNTRERUQgLyogU1dTZXJ2ZXJSZWdpc3Ry
YXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE3QTUzNDUxRjUwQzE3RjAwRENEQzBBIC8q
IFNXU2VydmVyV29ya2VyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggMzJmMTljMzAzZmYwOWMwMzM4MGE0ZjE5MWEy
MDRiMDA5YzBiOWY2MS4uOTY2ZDllN2IyNjIxYjE2MGQwYmM0ODdjMWQ3ODU0YzJjYTdhNGFlMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0yMzAs
NiArMjMwLDExIEBAIHB1YmxpYzoKIAogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGUoKTsK
IAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICB1aW50NjRfdCBzZWxlY3RlZFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VySWRlbnRp
ZmllcjsgfQorICAgIHZvaWQgc2V0U2VsZWN0ZWRTZXJ2aWNlV29ya2VySWRlbnRpZmllcih1aW50
NjRfdCBpZGVudGlmaWVyKSB7IG1fc2VydmljZVdvcmtlcklkZW50aWZpZXIgPSBpZGVudGlmaWVy
OyB9CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIGNsYXNzIEFkZENvbnNvbGVNZXNzYWdlVGFz
ayA6IHB1YmxpYyBUYXNrIHsKICAgICBwdWJsaWM6CkBAIC0yOTcsNiArMzAyLDggQEAgcHJpdmF0
ZToKICNpZiAhQVNTRVJUX0RJU0FCTEVEIHx8IEVOQUJMRShTRUNVUklUWV9BU1NFUlRJT05TKQog
ICAgIGJvb2wgbV9hY3RpdmVET01PYmplY3RSZW1vdmFsRm9yYmlkZGVuIHsgZmFsc2UgfTsKICNl
bmRpZgorCisgICAgdWludDY0X3QgbV9zZXJ2aWNlV29ya2VySWRlbnRpZmllciB7IDAgfTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggOTAyYzg5ZTM5NzM3YzQxMTQxZTM1
YzJjZTQyZTkyNjY5NzQwYzI5ZS4uNGI0OGY1MWVjMDE3NWZjNmYwMWVlYjRjZTFjOTE3YmYyMDNm
ZTg3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHAKQEAgLTEwMyw2ICsxMDMsMTEgQEAgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
OjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBUaHJlYWRhYmwK
IHsKICAgICByZWxheEFkb3B0aW9uUmVxdWlyZW1lbnQoKTsKIAorI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKKyAgICBpZiAobV9vcHRpb25zLnNlcnZpY2VXb3JrZXJzTW9kZSA9PSBTZXJ2aWNl
V29ya2Vyc01vZGU6OkFsbCAmJiAhbV9vcHRpb25zLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQor
ICAgICAgICBtX29wdGlvbnMuc2VydmljZVdvcmtlcklkZW50aWZpZXIgPSBkb2N1bWVudC5zZWxl
Y3RlZFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCk7CisjZW5kaWYKKwogICAgIC8vIFNldHRpbmcg
YSByZWZlcnJlciBoZWFkZXIgaXMgb25seSBzdXBwb3J0ZWQgaW4gdGhlIGFzeW5jIGNvZGUgcGF0
aC4KICAgICBBU1NFUlQobV9hc3luYyB8fCBtX3JlZmVycmVyLmlzRW1wdHkoKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GZXRjaE9wdGlvbnMuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GZXRjaE9wdGlvbnMuaAppbmRleCBhNDA0MjAzMDc3NDQwNDJmMWFjMjc2MmQ2
MzIzNjlmOWVhY2I1MTI0Li43M2I5NjI0Yzg2MDkxNmRlYjk5Mzc3NGNhZjgyOGY5NzRmN2QyMTc5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRmV0Y2hPcHRpb25zLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZldGNoT3B0aW9ucy5oCkBAIC02OSw2ICs2OSwyMSBAQCBp
bmxpbmUgRmV0Y2hPcHRpb25zOjpGZXRjaE9wdGlvbnMoRGVzdGluYXRpb24gZGVzdGluYXRpb24s
IE1vZGUgbW9kZSwgQ3JlZGVudGlhbAogewogfQogCitpbmxpbmUgYm9vbCBpc1BvdGVudGlhbE5h
dmlnYXRpb25PclN1YnJlc291cmNlUmVxdWVzdChGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uIGRl
c3RpbmF0aW9uKQoreworICAgIHJldHVybiBkZXN0aW5hdGlvbiA9PSBGZXRjaE9wdGlvbnM6OkRl
c3RpbmF0aW9uOjpPYmplY3QKKyAgICAgICAgfHwgZGVzdGluYXRpb24gPT0gRmV0Y2hPcHRpb25z
OjpEZXN0aW5hdGlvbjo6RW1iZWQ7Cit9CisKK2lubGluZSBib29sIGlzTm9uU3VicmVzb3VyY2VS
ZXF1ZXN0KEZldGNoT3B0aW9uczo6RGVzdGluYXRpb24gZGVzdGluYXRpb24pCit7CisgICAgcmV0
dXJuIGRlc3RpbmF0aW9uID09IEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OkRvY3VtZW50Cisg
ICAgICAgIHx8IGRlc3RpbmF0aW9uID09IEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OlJlcG9y
dAorICAgICAgICB8fCBkZXN0aW5hdGlvbiA9PSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpT
ZXJ2aWNld29ya2VyCisgICAgICAgIHx8IGRlc3RpbmF0aW9uID09IEZldGNoT3B0aW9uczo6RGVz
dGluYXRpb246OlNoYXJlZHdvcmtlcgorICAgICAgICB8fCBkZXN0aW5hdGlvbiA9PSBGZXRjaE9w
dGlvbnM6OkRlc3RpbmF0aW9uOjpXb3JrZXI7Cit9CisKIH0KIAogbmFtZXNwYWNlIFdURiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgKaW5kZXggZDJh
OTJjM2QzZGNmODJlNThmMjJkMDM1Y2JjN2ZkMGIyNTA1NmYzZS4uNWM1YTBkNDI3YjRlOTk2MGJi
N2M1YzdkMWYxZmFjZTU5YTQ0NTRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlck9wdGlvbnMuaApAQCAtOTIsNiArOTIsMTEgQEAgZW51bSBjbGFzcyBJbml0aWF0
b3JDb250ZXh0IHsKICAgICBXb3JrZXIsCiB9OwogCitlbnVtIGNsYXNzIFNlcnZpY2VXb3JrZXJz
TW9kZSB7CisgICAgQWxsLAorICAgIE5vbmUsCit9OworCiBzdHJ1Y3QgUmVzb3VyY2VMb2FkZXJP
cHRpb25zIDogcHVibGljIEZldGNoT3B0aW9ucyB7CiAgICAgUmVzb3VyY2VMb2FkZXJPcHRpb25z
KCkgeyB9CiAKQEAgLTEyNCw2ICsxMjksOCBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkZXJPcHRpb25z
IDogcHVibGljIEZldGNoT3B0aW9ucyB7CiAgICAgQ2FjaGluZ1BvbGljeSBjYWNoaW5nUG9saWN5
IHsgQ2FjaGluZ1BvbGljeTo6QWxsb3dDYWNoaW5nIH07CiAgICAgU2FtZU9yaWdpbkRhdGFVUkxG
bGFnIHNhbWVPcmlnaW5EYXRhVVJMRmxhZyB7IFNhbWVPcmlnaW5EYXRhVVJMRmxhZzo6VW5zZXQg
fTsKICAgICBJbml0aWF0b3JDb250ZXh0IGluaXRpYXRvckNvbnRleHQgeyBJbml0aWF0b3JDb250
ZXh0OjpEb2N1bWVudCB9OworICAgIFNlcnZpY2VXb3JrZXJzTW9kZSBzZXJ2aWNlV29ya2Vyc01v
ZGUgeyBTZXJ2aWNlV29ya2Vyc01vZGU6OkFsbCB9OworICAgIHVpbnQ2NF90IHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHsgMCB9OwogCiAgICAgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGllbnRD
cmVkZW50aWFsUG9saWN5IHsgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xpZW50
Rm9yQ3JlZGVudGlhbHMgfTsKICAgICB1bnNpZ25lZCBtYXhSZWRpcmVjdENvdW50IHsgMjAgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApp
bmRleCAzM2JiMTJlODFiOGExYzQ5YTBhODY3OTFiOTVkYzhhMjVlNjVjM2U4Li5lMjdhYWE4ZGI0
YzRiNmExMzY1ZjA4Y2VhYWI0MmUzODhmN2FlYTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC01NSw3ICs1NSw3IEBAIHN0YXRp
YyBjb25zdCBjaGFyIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHlNb2RlW10gPSAibG9hZFJlc291
cmNlU3luY2hyb25vdXNseU1vCiBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpXb3JrZXJUaHJlYWRh
YmxlTG9hZGVyKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSwgVGhyZWFkYWJs
ZUxvYWRlckNsaWVudCYgY2xpZW50LCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLCBSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucywg
Y29uc3QgU3RyaW5nJiByZWZlcnJlcikKICAgICA6IG1fd29ya2VyR2xvYmFsU2NvcGUod29ya2Vy
R2xvYmFsU2NvcGUpCiAgICAgLCBtX3dvcmtlckNsaWVudFdyYXBwZXIoVGhyZWFkYWJsZUxvYWRl
ckNsaWVudFdyYXBwZXI6OmNyZWF0ZShjbGllbnQsIG9wdGlvbnMuaW5pdGlhdG9yKSkKLSAgICAs
IG1fYnJpZGdlKCpuZXcgTWFpblRocmVhZEJyaWRnZShtX3dvcmtlckNsaWVudFdyYXBwZXIuZ2V0
KCksIHdvcmtlckdsb2JhbFNjb3BlLnRocmVhZCgpLndvcmtlckxvYWRlclByb3h5KCksIHRhc2tN
b2RlLCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCByZWZlcnJlci5pc0VtcHR5KCkgPyB3b3Jr
ZXJHbG9iYWxTY29wZS51cmwoKS5zdHJpcHBlZEZvclVzZUFzUmVmZXJyZXIoKSA6IHJlZmVycmVy
LCB3b3JrZXJHbG9iYWxTY29wZS5zZWN1cml0eU9yaWdpbigpLCB3b3JrZXJHbG9iYWxTY29wZS5j
b250ZW50U2VjdXJpdHlQb2xpY3koKSkpCisgICAgLCBtX2JyaWRnZSgqbmV3IE1haW5UaHJlYWRC
cmlkZ2UobV93b3JrZXJDbGllbnRXcmFwcGVyLmdldCgpLCB3b3JrZXJHbG9iYWxTY29wZS50aHJl
YWQoKS53b3JrZXJMb2FkZXJQcm94eSgpLCB0YXNrTW9kZSwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0
aW9ucywgcmVmZXJyZXIuaXNFbXB0eSgpID8gd29ya2VyR2xvYmFsU2NvcGUudXJsKCkuc3RyaXBw
ZWRGb3JVc2VBc1JlZmVycmVyKCkgOiByZWZlcnJlciwgd29ya2VyR2xvYmFsU2NvcGUpKQogewog
fQogCkBAIC0xMDEsMTIgKzEwMSwxNSBAQCBMb2FkZXJUYXNrT3B0aW9uczo6TG9hZGVyVGFza09w
dGlvbnMoY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIGNvbgogfQogCiBX
b3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdl
KFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyJiB3b3JrZXJDbGllbnRXcmFwcGVyLCBXb3Jr
ZXJMb2FkZXJQcm94eSYgbG9hZGVyUHJveHksIGNvbnN0IFN0cmluZyYgdGFza01vZGUsCi0gICAg
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMm
IG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgb3V0Z29pbmdSZWZlcnJlciwKLSAgICBjb25zdCBTZWN1
cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeSog
Y29udGVudFNlY3VyaXR5UG9saWN5KQorICAgIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNv
bnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIG91dGdv
aW5nUmVmZXJyZXIsIFdvcmtlckdsb2JhbFNjb3BlJiBnbG9iYWxTY29wZSkKICAgICA6IG1fd29y
a2VyQ2xpZW50V3JhcHBlcigmd29ya2VyQ2xpZW50V3JhcHBlcikKICAgICAsIG1fbG9hZGVyUHJv
eHkobG9hZGVyUHJveHkpCiAgICAgLCBtX3Rhc2tNb2RlKHRhc2tNb2RlLmlzb2xhdGVkQ29weSgp
KQogeworCisgICAgYXV0byogc2VjdXJpdHlPcmlnaW4gPSBnbG9iYWxTY29wZS5zZWN1cml0eU9y
aWdpbigpOworICAgIGF1dG8qIGNvbnRlbnRTZWN1cml0eVBvbGljeSA9IGdsb2JhbFNjb3BlLmNv
bnRlbnRTZWN1cml0eVBvbGljeSgpOworCiAgICAgQVNTRVJUKHNlY3VyaXR5T3JpZ2luKTsKICAg
ICBBU1NFUlQoY29udGVudFNlY3VyaXR5UG9saWN5KTsKIApAQCAtMTIxLDYgKzEyNCwxMSBAQCBX
b3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdl
KFRocmVhZGFibGVMb2FkZXJDbGllbgogICAgIEFTU0VSVChvcHRpb25zQ29weS0+b3B0aW9ucy5p
bml0aWF0b3JDb250ZXh0ID09IEluaXRpYXRvckNvbnRleHQ6OkRvY3VtZW50KTsKICAgICBvcHRp
b25zQ29weS0+b3B0aW9ucy5pbml0aWF0b3JDb250ZXh0ID0gSW5pdGlhdG9yQ29udGV4dDo6V29y
a2VyOwogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIG9wdGlvbnNDb3B5LT5vcHRp
b25zLnNlcnZpY2VXb3JrZXJzTW9kZSA9IGdsb2JhbFNjb3BlLmlzU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlKCkgPyBTZXJ2aWNlV29ya2Vyc01vZGU6Ok5vbmUgOiBTZXJ2aWNlV29ya2Vyc01vZGU6
OkFsbDsKKyAgICBvcHRpb25zQ29weS0+b3B0aW9ucy5zZXJ2aWNlV29ya2VySWRlbnRpZmllciA9
IGdsb2JhbFNjb3BlLnNlbGVjdGVkU2VydmljZVdvcmtlcklkZW50aWZpZXIoKTsKKyNlbmRpZgor
CiAgICAgLy8gQ2FuIHdlIGJlbmVmaXQgZnJvbSByZXF1ZXN0IGJlaW5nIGFuIHItdmFsdWUgdG8g
Y3JlYXRlIG1vcmUgZWZmaWNpZW50bHkgaXRzIGlzb2xhdGVkIGNvcHk/CiAgICAgbV9sb2FkZXJQ
cm94eS5wb3N0VGFza1RvTG9hZGVyKFt0aGlzLCByZXF1ZXN0ID0gcmVxdWVzdC5pc29sYXRlZENv
cHkoKSwgb3B0aW9ucyA9IFdURk1vdmUob3B0aW9uc0NvcHkpLCBjb250ZW50U2VjdXJpdHlQb2xp
Y3lDb3B5ID0gV1RGTW92ZShjb250ZW50U2VjdXJpdHlQb2xpY3lDb3B5KV0oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJs
ZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIu
aAppbmRleCA5N2VjMmQ0MWY5ZDllMDFkY2JiNzE3OWM2MjNkYjczYWIxYzVhMzU0Li4yMmFiMTQ5
ZmVmNzQ3MzdlZmI2NGRiOWRjYzdmMTYxMGRmNTFmYmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgKQEAgLTg4LDcgKzg4LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBjbGFzcyBNYWluVGhyZWFkQnJpZGdlIDogcHVibGljIFRo
cmVhZGFibGVMb2FkZXJDbGllbnQgewogICAgICAgICBwdWJsaWM6CiAgICAgICAgICAgICAvLyBB
bGwgZXhlY3V0ZWQgb24gdGhlIHdvcmtlciBjb250ZXh0J3MgdGhyZWFkLgotICAgICAgICAgICAg
TWFpblRocmVhZEJyaWRnZShUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlciYsIFdvcmtlckxv
YWRlclByb3h5JiwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNv
bnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiwgY29uc3QgU3RyaW5nJiBvdXRnb2luZ1JlZmVy
cmVyLCBjb25zdCBTZWN1cml0eU9yaWdpbiosIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeSop
OworICAgICAgICAgICAgTWFpblRocmVhZEJyaWRnZShUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3Jh
cHBlciYsIFdvcmtlckxvYWRlclByb3h5JiwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSwgUmVzb3Vy
Y2VSZXF1ZXN0JiYsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiwgY29uc3QgU3RyaW5n
JiBvdXRnb2luZ1JlZmVycmVyLCBXb3JrZXJHbG9iYWxTY29wZSYpOwogICAgICAgICAgICAgdm9p
ZCBjYW5jZWwoKTsKICAgICAgICAgICAgIHZvaWQgZGVzdHJveSgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCmluZGV4
IGI1ZTk0OGVhZWVjMWZkOTBkZGJlNjk4Zjk2NmZiYzdlODVjZTljZGQuLmRhNmFkNjVmMTE4MjBh
NTJlZTU0MTI4ZjM3MDdjZWUwMGY0MTc0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCkBAIC0xMDAsNyArMTAwLDcg
QEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGh0dHBDb250ZW50VHlwZSgp
IGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SFRUUENvbnRlbnRUeXBlKGNvbnN0
IFN0cmluZyYpOwotICAgIHZvaWQgY2xlYXJIVFRQQ29udGVudFR5cGUoKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGNsZWFySFRUUENvbnRlbnRUeXBlKCk7CiAKICAgICBib29sIGhhc0hUVFBI
ZWFkZXIoSFRUUEhlYWRlck5hbWUpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKaW5kZXggYWJjZGNlYWQ3
NzljYWNkYjc0ZjJmZjJmYjZkYmFjYmRiNDllZWEzZi4uZWUzNzNkZGVlYWExNTFhNDA4MzNkMjFi
YzM2OWViNDRjODFlNjY3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaApAQCAtMTUzLDcgKzE1Myw3IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIDEyODA7CiAgICAgfQogCi0gICAgdm9pZCBzZXRUeXBlKFR5cGUp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VHlwZShUeXBlKTsKICAgICBUeXBlIHR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAogICAgIHZvaWQgc2V0UmVkaXJlY3RlZChib29s
IGlzUmVkaXJlY3RlZCkgeyBtX2lzUmVkaXJlY3RlZCA9IGlzUmVkaXJlY3RlZDsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKaW5kZXggY2ZlMzQzZWVmNGE1YWY1YjI3MGMxOGI2
ODUwOGYwZjY4YzZhYWI2Yy4uMzk1ZmQ4MDQ5OThjNjBiN2NiNTM3Mzg4YWUwZmQ0ZDA3OGU0ZGIy
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCkBAIC02MSw3ICs2MSw3IEBA
IGNsYXNzIFdvcmtlclRocmVhZCA6IHB1YmxpYyBSZWZDb3VudGVkPFdvcmtlclRocmVhZD4gewog
cHVibGljOgogICAgIHZpcnR1YWwgfldvcmtlclRocmVhZCgpOwogCi0gICAgYm9vbCBzdGFydCgp
OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc3RhcnQoKTsKICAgICB2b2lkIHN0b3AoKTsKIAog
ICAgIFRocmVhZElkZW50aWZpZXIgdGhyZWFkSUQoKSBjb25zdCB7IHJldHVybiBtX3RocmVhZCA/
IG1fdGhyZWFkLT5pZCgpIDogMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCmluZGV4IGQzMGRjNTdhNmQ4
ZGIwNDAxODE5N2U4NjIxZjZjYTI5MTg4MThkYzkuLjk1MzQ1MTc3ZDcwMjZiOTE3ODZlYTAyYjM1
NTVlZjlmNmVmNWE1YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAgLTE3OSw2ICsxNzksOSBAQCB2
b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29sdmVkV2l0aFJlZ2lzdHJhdGlvbihT
ZXJ2aWNlV29ya2VySm9iJiBqb2IsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICAvLyBG
SVhNRTogSW1wbGVtZW50IHByb3BlciBzZWxlY3Rpb24gb2Ygc2VydmljZSB3b3JrZXJzLgorICAg
IGNvbnRleHQtPnNldFNlbGVjdGVkU2VydmljZVdvcmtlcklkZW50aWZpZXIoZGF0YS5pZGVudGlm
aWVyKTsKKwogICAgIGF1dG8gcmVnaXN0cmF0aW9uID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bjo6Y3JlYXRlKCpjb250ZXh0LCBkYXRhKTsKICAgICBqb2IucHJvbWlzZSgpLnJlc29sdmU8SURM
SW50ZXJmYWNlPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24+PihyZWdpc3RyYXRpb24uZ2V0KCkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJQcm92aWRlci5oCmluZGV4IDc2NjFjNTYzMWIxMjNkYTQzY2JiOTcxMGUxYWE1NzFlNWNk
ZWFmMjkuLmIwZjNkZmI5NTNmNjU4NWRmMTE2ZjdjMjYyYmVhMDhiYjkwYzU2YTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUHJvdmlkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclByb3Zp
ZGVyLmgKQEAgLTI1LDYgKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDx3dGYv
RnVuY3Rpb24uaD4KKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAogbmFtZXNwYWNlIFBB
TCB7CkBAIC0zMyw2ICszNSwxMCBAQCBjbGFzcyBTZXNzaW9uSUQ7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CitzdHJ1Y3QgRmV0Y2hPcHRpb25zOworY2xh
c3MgUmVzb3VyY2VMb2FkZXI7CitjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBTV0NsaWVu
dENvbm5lY3Rpb247CiBjbGFzcyBTZXJ2aWNlV29ya2VySm9iOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NGZlNTdlMzEyMTU3NzFjNmE3Yjgz
ZjVmZGJiNjYyM2RkNDJhMGJlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4
dE1hbmFnZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTV0NvbnRleHRNYW5hZ2VyLmgiCi0KLSNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0KLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVk
ZSA8cGFsL1Nlc3Npb25JRC5oPgotCi11c2luZyBuYW1lc3BhY2UgUEFMOwotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLVNXQ29udGV4dE1hbmFnZXImIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRv
bigpCi17Ci0gICAgc3RhdGljIFNXQ29udGV4dE1hbmFnZXIqIHNoYXJlZE1hbmFnZXIgPSBuZXcg
U1dDb250ZXh0TWFuYWdlcjsKLSAgICByZXR1cm4gKnNoYXJlZE1hbmFnZXI7Ci19Ci0KLVNXQ29u
dGV4dE1hbmFnZXI6OlNXQ29udGV4dE1hbmFnZXIoKQotewotCi19Ci0KLUV4Y2VwdGlvbk9yPHVp
bnQ2NF90PiBTV0NvbnRleHRNYW5hZ2VyOjpzdGFydFNlcnZpY2VXb3JrZXJDb250ZXh0KHVpbnQ2
NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEmIGRhdGEpCi17Ci0gICAgLy8gRklYTUU6IFByb3ZpZGUgYSBzZW5zaWNhbCBzZXNzaW9u
IElECi0KLSAgICBhdXRvIHRocmVhZCA9IFNlcnZpY2VXb3JrZXJUaHJlYWQ6OmNyZWF0ZShzZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgZGF0YSwgU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklE
KCkpOwotICAgIGF1dG8gdGhyZWFkSWRlbnRpZmllciA9IHRocmVhZC0+aWRlbnRpZmllcigpOwot
ICAgIGF1dG8gcmVzdWx0ID0gbV93b3JrZXJUaHJlYWRNYXAuYWRkKHRocmVhZElkZW50aWZpZXIs
IFdURk1vdmUodGhyZWFkKSk7Ci0gICAgQVNTRVJUKHJlc3VsdC5pc05ld0VudHJ5KTsKLQotICAg
IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPnN0YXJ0KCk7Ci0gICAgCi0gICAgTE9HKFNlcnZpY2VX
b3JrZXIsICJDb250ZXh0IHByb2Nlc3MgUElEOiAlaSBzdGFydGVkIHdvcmtlciB0aHJlYWQgJXNc
biIsIGdldHBpZCgpLCBkYXRhLndvcmtlcklELnV0ZjgoKS5kYXRhKCkpOwotICAgIAotICAgIHJl
dHVybiB0aHJlYWRJZGVudGlmaWVyOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxNWQ3ZTY5ODIzMjE0NzIzMGI0NzZhZmI4MzFlNDhhMGYy
MGUzMDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCisr
KyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotCi0jaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIK
LSNpbmNsdWRlICJTZXJ2aWNlV29ya2VyVGhyZWFkLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHRE
YXRhOwotCi1jbGFzcyBTV0NvbnRleHRNYW5hZ2VyIHsKLXB1YmxpYzoKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgU1dDb250ZXh0TWFuYWdlciYgc2luZ2xldG9uKCk7Ci0KLSAgICBXRUJDT1JF
X0VYUE9SVCBFeGNlcHRpb25Pcjx1aW50NjRfdD4gc3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4dCh1
aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlckNv
bnRleHREYXRhJik7Ci0KLXByaXZhdGU6Ci0gICAgU1dDb250ZXh0TWFuYWdlcigpOwotICAgIAot
ICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxTZXJ2aWNlV29ya2VyVGhyZWFkPj4gbV93b3Jr
ZXJUaHJlYWRNYXA7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKaW5kZXggMjJhMDdi
ODlmNTljZTU4MDQyYWIwNTI3OWE5YWIwOThlOGE0NTk2MC4uOGRiYTQ4OTg4OTNiNzAwNDRiNWU3
ZjYyZjcyNmEyZGYwY2RmOTU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaApAQCAtNTIsNyAr
NTIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBydW5FdmVudExvb3AoKSBvdmVycmlkZTsKIAog
cHJpdmF0ZToKLSAgICBTZXJ2aWNlV29ya2VyVGhyZWFkKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmLCBQQUw6OlNlc3Np
b25JRCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU2VydmljZVdvcmtlclRocmVhZCh1aW50NjRfdCBz
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRh
JiwgUEFMOjpTZXNzaW9uSUQpOwogCiAgICAgdWludDY0X3QgbV9zZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllcjsKICAgICBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgbV9kYXRhOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCmluZGV4IDFjMWEy
YzkyZTg2N2IzODEzZDkxY2UxZmY4M2YyYmE4Y2NkMDFhMTYuLjZmMGU5MzdiZWQ3NGVlMjA0OWFl
YzY1YWRkYzgzZjdlYjE1ZDhmMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTQwLDkgKzQwLDExIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgU1dTZXJ2ZXJSZWdpc3Ry
YXRpb247CiBjbGFzcyBTV1NlcnZlcldvcmtlcjsKIHN0cnVjdCBFeGNlcHRpb25EYXRhOworc3Ry
dWN0IEZldGNoT3B0aW9uczsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE7CiBzdHJ1
Y3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0Owogc3RydWN0IFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtl
IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGJhNDRjYmEyY2JiZDhk
Njc5YjRkYjQyNDQ5NWRmODM4NTFjNTQ4YzMuLjA4YjgwOWEyMzA4YTliN2UwYzMzNjhlYmZiYjdk
NTAyYWY4ZTg3NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFr
ZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTEyNSw2ICsxMjUs
NyBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAgICBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eSBc
CiAgICAgUmVtb3RlV2ViSW5zcGVjdG9yVUkgXAogICAgIFNlY0l0ZW1TaGltUHJveHkgXAorICAg
IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaCBcCiAgICAgU21hcnRNYWduaWZpY2F0aW9uQ29udHJv
bGxlciBcCiAgICAgU3RvcmFnZUFyZWFNYXAgXAogICAgIFN0b3JhZ2VNYW5hZ2VyIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKaW5kZXggNzI5N2Y0YjUzZTg3NTdkOTYz
NjJkODlkZDZjNjY5NTJhZDU2MDk5ZS4uZTlhYjRiZWQ3Zjc2YWVlMzRmYmViN2IxNmIxMzg2M2Nj
MmI1ZDk3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TdG9y
YWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTMw
LDggKzMwLDEwIEBACiAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiU3RvcmFnZVByb2Nlc3MuaCIKICNpbmNsdWRlICJTdG9yYWdlVG9XZWJQcm9jZXNz
Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIldlYlNXQ2xpZW50Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCkBAIC05Miw2ICs5
NCwzMSBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRTZXJ2aWNlV29ya2VyQ29u
dGV4dChjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dAogICAgIG1fcGVuZGluZ0NvbnRleHREYXRh
cy5hcHBlbmQoZGF0YSk7CiB9CiAKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzdGFydEZl
dGNoKHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgdWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50
aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgRmV0Y2hPcHRpb25z
JiBvcHRpb25zKQoreworICAgIHNlbmRUb0NvbnRleHRQcm9jZXNzKE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzOjpTdGFydEZldGNoSW5TZXJ2aWNlV29ya2VyKGlkZW50aWZpZXIoKSwgZmV0Y2hJZGVudGlm
aWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9ucykpOworfQorCit2
b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UodWludDY0
X3QgZmV0Y2hJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkKK3sKKyAgICBtX2NvbnRlbnRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNl
V29ya2VyQ2xpZW50RmV0Y2g6OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJlc3BvbnNlIH0sIGZldGNo
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpkaWRSZWNlaXZl
RmV0Y2hEYXRhKHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQoreworICAgIG1fY29udGVudENv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVj
ZWl2ZURhdGEgeyBkYXRhLCBlbmNvZGVkRGF0YUxlbmd0aCB9LCBmZXRjaElkZW50aWZpZXIpOwor
fQorCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6ZGlkRmluaXNoRmV0Y2godWludDY0X3Qg
ZmV0Y2hJZGVudGlmaWVyKQoreworICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkRmluaXNoRmV0Y2ggeyB9LCBmZXRjaElk
ZW50aWZpZXIpOworfQorCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6ZmFpbGVkRmV0Y2go
dWludDY0X3QgZmV0Y2hJZGVudGlmaWVyKQoreworICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNl
bmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkRmFpbCB7IH0sIGZldGNo
SWRlbnRpZmllcik7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpzZW5kVG9Db250ZXh0UHJvY2VzcyhVJiYgbWVzc2FnZSkKIHsKICAgICBpZiAo
IW1fY29udGV4dENvbm5lY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgK
aW5kZXggZGNjNDk2MTY1MmEzZDcxYjZmOTg0NjQzMWQ3Mzc2YjhmYzU1NTIyMy4uYjNlNDIxNmRi
MGEzMzM4MjdiZjdiZWVlODQ5ZmJlNTk4NGQwNmRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
ckNvbm5lY3Rpb24uaApAQCAtNTEsMTUgKzUxLDIzIEBAIHB1YmxpYzoKIAogICAgIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9CiAKKyAgICB2
b2lkIGRpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHZvaWQgZGlkUmVjZWl2ZUZldGNo
RGF0YSh1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYs
IGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGlkRmluaXNoRmV0Y2godWlu
dDY0X3QgZmV0Y2hJZGVudGlmaWVyKTsKKyAgICB2b2lkIGZhaWxlZEZldGNoKHVpbnQ2NF90IGZl
dGNoSWRlbnRpZmllcik7CisKIHByaXZhdGU6CiAgICAgLy8gSW1wbGVtZW50IFNXU2VydmVyOjpD
b25uZWN0aW9uIChNZXNzYWdlcyB0byB0aGUgY2xpZW50IFdlYlByb2Nlc3MpCiAgICAgdm9pZCBy
ZWplY3RKb2JJbkNsaWVudCh1aW50NjRfdCBqb2JJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpF
eGNlcHRpb25EYXRhJikgZmluYWw7CiAgICAgdm9pZCByZXNvbHZlSm9iSW5DbGllbnQodWludDY0
X3Qgam9iSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRhdGEmKSBmaW5hbDsKICAgICB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2hJbkNsaWVudCh1aW50NjRf
dCBqb2JJZGVudGlmaWVyKSBmaW5hbDsKIAorICAgIHZvaWQgc3RhcnRGZXRjaCh1aW50NjRfdCBm
ZXRjaElkZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmKTsK
KwogICAgIC8vIE1lc3NhZ2VzIHRvIHRoZSBTVyBjb250ZXh0IFdlYlByb2Nlc3MKICAgICB2b2lk
IHN0YXJ0U2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNv
bnRleHREYXRhJikgZmluYWw7Ci0gICAgCisKKwogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2Fn
ZVNlbmRlckNvbm5lY3Rpb24oKSBmaW5hbCB7IHJldHVybiBtX2NvbnRlbnRDb25uZWN0aW9uLnB0
cigpOyB9CiAgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBmaW5hbCB7
IHJldHVybiBpZGVudGlmaWVyKCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9y
YWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
ckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggZTRjZmI5NjA1YTZjZTUwMTkyMTZmMjFjZjZk
NjkxN2JlYjMwMmRjMC4uZjNkYjNiOTBkYWU5M2E5MjZkZjViYmRlYTFhMzc3OTUzNDY2NDkxMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3Jh
Z2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
CkBAIC0yNiw2ICsyNiw4IEBAIG1lc3NhZ2VzIC0+IFdlYlNXU2VydmVyQ29ubmVjdGlvbiB7CiAg
ICAgIyBXaGVuIHBvc3NpYmxlLCB0aGVzZSBtZXNzYWdlcyBjYW4gYmUgaW1wbGVtZW50ZWQgZGly
ZWN0bHkgYnkgV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uCiAgICAgU2NoZWR1bGVKb2JJblNl
cnZlcihzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGEgam9iRGF0YSkKICAgICBG
aW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
RmV0Y2hSZXN1bHQgcmVzdWx0KQorCisgICAgU3RhcnRGZXRjaCh1aW50NjRfdCBpZGVudGlmaWVy
LCB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0IHJlcXVlc3QsIHN0cnVjdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMgb3B0aW9ucykKIH0KIAog
I2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9TdG9y
YWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAKaW5kZXggOTk1OTZmMzUxM2E0YmM2MjA1ZjYz
YzllNzNiMDZiOTliNTA4YWJjOS4uY2MwNGNmOTQyM2RmNGVmZWFiNTE3NmQ0NGI5ZTIwMjUyZjA1
Y2NiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vz
cy5jcHAKQEAgLTQwNSw2ICs0MDUsMzAgQEAgdm9pZCBTdG9yYWdlUHJvY2Vzczo6c2VydmljZVdv
cmtlckNvbnRleHRTdGFydGVkKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGkKICAgICAg
ICAgY29ubmVjdGlvbi0+c2NyaXB0Q29udGV4dFN0YXJ0ZWQocmVnaXN0cmF0aW9uS2V5LCBpZGVu
dGlmaWVyLCB3b3JrZXJJRCk7CiB9CiAKK3ZvaWQgU3RvcmFnZVByb2Nlc3M6OmZhaWxlZEZldGNo
KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50
aWZpZXIpCit7CisgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBtX3N3U2VydmVyQ29ubmVjdGlv
bnMuZ2V0KHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgY29ubmVjdGlvbi0+
ZmFpbGVkRmV0Y2goZmV0Y2hJZGVudGlmaWVyKTsKK30KKwordm9pZCBTdG9yYWdlUHJvY2Vzczo6
ZGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCit7CisgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBtX3N3U2VydmVy
Q29ubmVjdGlvbnMuZ2V0KHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgY29u
bmVjdGlvbi0+ZGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoZmV0Y2hJZGVudGlmaWVyLCByZXNwb25z
ZSk7Cit9CisKK3ZvaWQgU3RvcmFnZVByb2Nlc3M6OmRpZFJlY2VpdmVGZXRjaERhdGEodWludDY0
X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwg
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3Ro
KQoreworICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gbV9zd1NlcnZlckNvbm5lY3Rpb25zLmdl
dChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIGNvbm5lY3Rpb24tPmRpZFJl
Y2VpdmVGZXRjaERhdGEoZmV0Y2hJZGVudGlmaWVyLCBkYXRhLCBlbmNvZGVkRGF0YUxlbmd0aCk7
Cit9CisKK3ZvaWQgU3RvcmFnZVByb2Nlc3M6OmRpZEZpbmlzaEZldGNoKHVpbnQ2NF90IHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIpCit7CisgICAg
aWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBtX3N3U2VydmVyQ29ubmVjdGlvbnMuZ2V0KHNlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgY29ubmVjdGlvbi0+ZGlkRmluaXNoRmV0Y2go
ZmV0Y2hJZGVudGlmaWVyKTsKK30KKwogdm9pZCBTdG9yYWdlUHJvY2Vzczo6cmVnaXN0ZXJTV1Nl
cnZlckNvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewogICAg
IEFTU0VSVCghbV9zd1NlcnZlckNvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb24uaWRlbnRp
ZmllcigpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3Jh
Z2VQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNz
LmgKaW5kZXggZDRjZTUxMTcxOTdlNWMwYWQ0YmNlOTAyNDczYmJkZjdkZWVhOWQ4Zi4uZDg5YTE2
YjA2ZGI0ZWExYzA2OWZmYjVmYWJlZDA4NDBjYTFiY2ZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaApAQCAtMTE5LDYgKzExOSwxMSBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGlkR2V0V29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKGNvbnN0
IElQQzo6QXR0YWNobWVudCYgZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyKTsKICAgICB2b2lk
IHNlcnZpY2VXb3JrZXJDb250ZXh0RmFpbGVkVG9TdGFydCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eSYsIGNvbnN0IFN0cmluZyYgd29ya2VySUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAgICAg
dm9pZCBzZXJ2aWNlV29ya2VyQ29udGV4dFN0YXJ0ZWQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkm
LCB1aW50NjRfdCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHdvcmtlcklEKTsKKworICAgIHZv
aWQgZGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYpOworICAgIHZvaWQgZGlkUmVjZWl2ZUZldGNoRGF0YSh1aW50NjRfdCBzZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRp
ZEZpbmlzaEZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRf
dCBmZXRjaElkZW50aWZpZXIpOworICAgIHZvaWQgZmFpbGVkRmV0Y2godWludDY0X3Qgc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcik7CiAjZW5kaWYK
ICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBWZWN0b3I8V2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhPiBpbmRleGVkRGF0YWJhc2VPcmlnaW5zKGNvbnN0IFN0cmluZyYgcGF0aCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNz
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vz
cy5tZXNzYWdlcy5pbgppbmRleCBlZTYyOGQ1Mzc3Y2I1NmQyNjUwMThjZWZkM2EyMTA4MDVlOWI0
MmYyLi5hODNkNzMwZTczODNkZDc1ZmE2MTg0YWExMDIzODFmOTBkYTg4ODhjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MubWVzc2Fn
ZXMuaW4KQEAgLTM3LDcgKzM3LDEzIEBAIG1lc3NhZ2VzIC0+IFN0b3JhZ2VQcm9jZXNzIExlZ2Fj
eVJlY2VpdmVyIHsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBEaWRHZXRXb3Jr
ZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25IYW5k
bGUpCisKICAgICBTZXJ2aWNlV29ya2VyQ29udGV4dEZhaWxlZFRvU3RhcnQodWludDY0X3Qgc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5IHJlZ2lzdHJhdGlvbktleSwgU3RyaW5nIHdvcmtlcklELCBTdHJpbmcgbWVz
c2FnZSkKICAgICBTZXJ2aWNlV29ya2VyQ29udGV4dFN0YXJ0ZWQodWludDY0X3Qgc2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5IHJlZ2lzdHJhdGlvbktleSwgdWludDY0X3QgaWRlbnRpZmllciwgU3RyaW5nIHdvcmtl
cklEKQorCisgICAgRmFpbGVkRmV0Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcikKKyAgICBEaWRSZWNlaXZlRmV0Y2hSZXNwb25z
ZSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKQorICAgIERpZFJlY2Vp
dmVGZXRjaERhdGEodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90
IGZldGNoSWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEsIGludDY0X3QgZW5jb2Rl
ZERhdGFMZW5ndGgpCisgICAgRGlkRmluaXNoRmV0Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcikKICNlbmRpZgogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOGI4Njk1
MGMxODExNmY2MDFjOThkMWM4NjY1NTYyYjQ2MjRhYjIyMi4uYTFjYjdjYzJjYzFkZmExYjc3MzNh
Y2U5Y2I3NTRiODdjMjI2ZDE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC04OTAsNiArODkwLDkgQEAKIAkJNDEzMDc1QjIxREU4NUY1
ODAwMzlFQzY5IC8qIExpYldlYlJUQ1NvY2tldEZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzA3NUE2MURFODVFRTcwMDM5RUM2OSAvKiBM
aWJXZWJSVENTb2NrZXRGYWN0b3J5LmggKi87IH07CiAJCTQxMzA3NUIzMURFODVGNTgwMDM5RUM2
OSAvKiBMaWJXZWJSVENQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTMwNzVBNzFERTg1RUU3MDAzOUVDNjkgLyogTGliV2ViUlRDUHJv
dmlkZXIuY3BwICovOyB9OwogCQk0MTMwNzVCNDFERTg1RjU4MDAzOUVDNjkgLyogTGliV2ViUlRD
UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxMzA3NUE4MURFODVFRTcwMDM5RUM2OSAvKiBMaWJXZWJSVENQcm92aWRlci5oICovOyB9Owor
CQk0MTMxRjNEMTFGOTZCQ0NDMDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzFGM0Qw
MUY5NkJDQzgwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guY3BwICovOyB9Owor
CQk0MTMxRjNENDFGOTZFOTM1MDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2Vy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzFG
M0QzMUY5NkU5MzEwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwICov
OyB9OworCQk0MTMxRjNENTFGOTZFOTM1MDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNvbnRleHRN
YW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTMxRjNEMjFGOTZFOTMwMDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmgg
Ki87IH07CiAJCTQxMzVGQkQxMUY0RkI4MDkwMDc0QzQ3QiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVD
YWNoZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDEzNUZCQ0YxRjRGQjdGMjAwNzRDNDdCIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAg
Ki87IH07CiAJCTQxODk3RUNGMUY0MTVENjIwMDE2RkE0MiAvKiBXZWJDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxODk3RUNFMUY0MTVENUMwMDE2RkE0MiAvKiBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNw
cCAqLzsgfTsKIAkJNDE4OTdFRDAxRjQxNUQ2NTAwMTZGQTQyIC8qIFdlYkNhY2hlU3RvcmFnZVBy
b3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxODk3RUNDMUY0MTVENUMwMDE2RkE0MiAvKiBXZWJDYWNoZVN0b3JhZ2VQcm92aWRlci5jcHAg
Ki87IH07CkBAIC0xMDI5LDcgKzEwMzIsOSBAQAogCQk1MTc5NTU2QTE2Mjg3NkYzMDBGQTQzQjYg
LyogTmV0d29ya1Byb2Nlc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxMENDN0UwMTYxMzhFMjkwMEQwM0VEMyAvKiBOZXR3b3JrUHJvY2Vzcy5oICov
OyB9OwogCQk1MTc5NTU2RDE2Mjg3N0IxMDBGQTQzQjYgLyogTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBDQzdF
QTE2MTM4RTcyMDBEMDNFRDMgLyogTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgKi87IH07CiAJCTUx
Nzk1NTZFMTYyODc3QjMwMEZBNDNCNiAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBDQzdFQjE2MTM4RTcyMDBE
MDNFRDMgLyogTmV0d29ya1Byb2Nlc3NQcm94eS5oICovOyB9OworCQk2MTdBNTJEODFGNDNBOURB
MDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYxN0E1MkQ3MUY0
M0E5QjYwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hDb25uZWN0aW9uTWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJNTE3QTUyRDgxRjQzQTlEQTAwRENEQzBBIC8qIFdlYlNX
U2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdBNTJENzFGNDNBOUI2MDBEQ0RDMEEgLyogV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJNjE3QTUyRDkx
RjQzQTlEQTAwRENEQzBBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MTdBNTJENjFGNDNB
OUI2MDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZXMuaCAqLzsgfTsK
IAkJNTE3QTUyRDkxRjQzQTlEQTAwRENEQzBBIC8qIFdlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3Nh
Z2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdB
NTJENjFGNDNBOUI2MDBEQ0RDMEEgLyogV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCAq
LzsgfTsKIAkJNTE3QTUzMDQxRjQ3OTNDNjAwRENEQzBBIC8qIFdlYlNXQ2xpZW50Q29ubmVjdGlv
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdB
NTMwMzFGNDc5M0IyMDBEQ0RDMEEgLyogV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcCAqLzsgfTsK
IAkJNTE3QTUzMDUxRjQ3OTNDNjAwRENEQzBBIC8qIFdlYlNXQ2xpZW50Q29ubmVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3QTUzMDIxRjQ3
OTNCMjAwRENEQzBBIC8qIFdlYlNXQ2xpZW50Q29ubmVjdGlvbi5oICovOyB9OwpAQCAtMzE3OCw2
ICszMTgzLDExIEBACiAJCTQxMzA3NUE2MURFODVFRTcwMDM5RUM2OSAvKiBMaWJXZWJSVENTb2Nr
ZXRGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJUQ1Nv
Y2tldEZhY3RvcnkuaDsgcGF0aCA9IE5ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldEZhY3Rv
cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzMDc1QTcxREU4NUVFNzAwMzlF
QzY5IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbGluZUVuZGluZyA9IDA7IG5hbWUgPSBMaWJXZWJSVENQcm92aWRlci5jcHA7IHBhdGggPSBO
ZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcuY3BwOyB9
OwogCQk0MTMwNzVBODFERTg1RUU3MDAzOUVDNjkgLyogTGliV2ViUlRDUHJvdmlkZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBsaW5lRW5kaW5nID0gMDsgbmFtZSA9IExpYldlYlJUQ1By
b3ZpZGVyLmg7IHBhdGggPSBOZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4
Y29kZS5sYW5nLm9iamNwcDsgfTsKKwkJNDEzMUYzQ0UxRjk2QTQ5NTAwNTk5OTVBIC8qIFNlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
ZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDEzMUYzQ0YxRjk2QTkzNjAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5tZXNz
YWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gu
bWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMzFGM0QwMUY5NkJD
QzgwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtlckNsaWVudEZldGNoLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEzMUYzRDIxRjk2RTkzMDAwNTk5OTVBIC8qIFNl
cnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDEzMUYzRDMxRjk2RTkzMTAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0
TWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNl
V29ya2VyQ29udGV4dE1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MTM1RkJDRjFGNEZCN0YyMDA3NEM0N0IgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlU3RvcmFnZUVuZ2luZUNh
Y2hlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzVGQkQwMUY0RkI3RjIw
MDc0QzQ3QiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxODk3RUNCMUY0MTVENUMwMDE2RkE0MiAvKiBXZWJDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24u
bWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMzM0LDcgKzMzNDQs
OSBAQAogCQk1MTZBNEE1QjEyMEEyQ0NEMDBDMDVCN0YgLyogQVBJRXJyb3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTE3QTMzQjMxMzBCMzA4QzAwRjgwQ0I1IC8qIFdLQXBwbGljYXRpb25DYWNoZU1h
bmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tBcHBsaWNh
dGlvbkNhY2hlTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0Ez
M0I0MTMwQjMwOEMwMEY4MENCNSAvKiBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjE3QTUyRDYxRjQzQTlCNjAwRENEQzBBIC8q
IFNlcnZpY2VXb3JrZXJGZXRjaENsaWVudE1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxN0E1MkQ2MUY0M0E5QjYwMERDREMwQSAvKiBXZWJTV1NlcnZl
ckNvbm5lY3Rpb25NZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk2MTdBNTJENzFGNDNBOUI2MDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNo
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxN0E1MkQ3MUY0M0E5QjYwMERDREMwQSAvKiBXZWJTV1NlcnZl
ckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3QTUzMDIxRjQ3OTNCMjAwRENEQzBBIC8qIFdl
YlNXQ2xpZW50Q29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJTV0NsaWVudENvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3
QTUzMDMxRjQ3OTNCMjAwRENEQzBBIC8qIFdlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTV0NsaWVudENvbm5lY3Rpb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjE2OCw2ICs2MTgwLDExIEBACiAJCTUx
MThFOTk4MUYyOTUyNTkwMDNFRjlGNSAvKiBTdG9yYWdlICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0MTMxRjNEMDFGOTZCQ0M4MDA1OTk5NUEgLyogU2Vy
dmljZVdvcmtlckNsaWVudEZldGNoLmNwcCAqLywKKwkJCQk0MTMxRjNDRTFGOTZBNDk1MDA1OTk5
NUEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoLmggKi8sCisJCQkJNDEzMUYzQ0YxRjk2QTkz
NjAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5tZXNzYWdlcy5pbiAqLywKKwkJ
CQk0MTMxRjNEMzFGOTZFOTMxMDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2Vy
LmNwcCAqLywKKwkJCQk0MTMxRjNEMjFGOTZFOTMwMDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNv
bnRleHRNYW5hZ2VyLmggKi8sCiAJCQkJNTFCRUI2MjkxRjNBNUFDRDAwNTAyOUI5IC8qIFdlYlNl
cnZpY2VXb3JrZXJQcm92aWRlci5jcHAgKi8sCiAJCQkJNTFCRUI2MkExRjNBNUFDRDAwNTAyOUI5
IC8qIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oICovLAogCQkJCTUxN0E1MzAzMUY0NzkzQjIw
MERDREMwQSAvKiBXZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwICovLApAQCAtODAxMCw2ICs4MDI3
LDcgQEAKIAkJCQkxQkJCRTQ5RTE5QjY2QzUzMDA2QjdEODEgLyogUmVtb3RlV2ViSW5zcGVjdG9y
VUlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCUUxOEU2OTEzMTY5QjY2N0IwMDlCNjY3MCAv
KiBTZWNJdGVtU2hpbVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQlFMThFNjkxNDE2
OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eU1lc3NhZ2VzLmggKi8sCisJCQkJNjE3
QTUyRDcxRjQzQTlCNjAwRENEQzBBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaENvbm5lY3Rp
b25NZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTJERTY5NDNCMThCRDJBNjgwMDVDMTVFNSAv
KiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJ
CQkyREU2OTQzQzE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxl
ck1lc3NhZ2VzLmggKi8sCiAJCQkJMUEzMzRERUIxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VB
cmVhTWFwTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKQEAgLTg3ODEsNiArODc5OSw3IEBACiAJCQkJ
RTE4RTY5MEMxNjlCNTYzRjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUUxOEU2OTE4MTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5TWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNEQ5RjU3MTkxMTlEMzUwMDAwNjNBNyAvKiBT
ZXJ2aWNlc0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxMzFGM0Q1MUY5NkU5MzUw
MDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBRkRFNjVBMTk1NEE0MkIwMEM0OEZGQSAvKiBTZXNzaW9uU3RhdGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBMDAyRDQ5MTk2QjM0NUQwMEI5QUQ0NCAvKiBTZXNzaW9uU3RhdGVDb2Rpbmcu
aCBpbiBIZWFkZXJzICovLAogCQkJCTc1M0UzRTBFMTg4NzM5ODkwMDE4ODQ5NiAvKiBTZXNzaW9u
VHJhY2tlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDM3MCw2ICsxMDM4OSw5IEBACiAJCQkJRTE4
RTY5MEIxNjlCNTYzRjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHkuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRTE4RTY5MTcxNjlCNjY3QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0RDlGNTgxOTExOUQzNTAwMDA2
M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQxMzFGM0Qx
MUY5NkJDQ0MwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJNjE3QTUyRDgxRjQzQTlEQTAwRENEQzBBIC8qIFNlcnZpY2VXb3JrZXJDbGll
bnRGZXRjaENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
NDEzMUYzRDQxRjk2RTkzNTAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUZERTY1OTE5NTRBNDJCMDBDNDhGRkEgLyogU2Vzc2lv
blN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMDAyRDQ4MTk2QjM0NUQwMEI5QUQ0NCAv
KiBTZXNzaW9uU3RhdGVDb2RpbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTcyODQ0ODE5NTlG
ODA0MDAwN0JDRTUgLyogU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAgaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0
cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0
cmF0ZWd5LmNwcAppbmRleCBiODk1ZDBiOGZhMzFjZTAxNjZkMmE0MGRiYzk0OTFmMDgxNDM1YmIx
Li4zZDA1YzA2OTgzMmNkMDFhNTJlYWZiZTRmYTlmYjJlNmRlNjE1YjM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3Bw
CkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkZXIuaCIKKyNp
bmNsdWRlICJXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXZWJVUkxTY2hl
bWVIYW5kbGVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJVUkxTY2hlbWVUYXNrUHJveHkuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0Lmg+CkBAIC0yMTUsNiArMjE2LDI2
IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciYg
cmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291CiAgICAgICAgIH0KICAgICB9CiAKKyNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCisgICAgV2ViU2VydmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0
b24oKS5oYW5kbGVGZXRjaChyZXNvdXJjZUxvYWRlciwgKnJlc291cmNlLCB3ZWJQYWdlID8gd2Vi
UGFnZS0+c2Vzc2lvbklEKCkgOiBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBb
dHJhY2tpbmdQYXJhbWV0ZXJzLCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGly
ZWN0LCBtYXhpbXVtQnVmZmVyaW5nVGltZSA9IG1heGltdW1CdWZmZXJpbmdUaW1lKHJlc291cmNl
KV0gKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KSBtdXRhYmxlIHsKKyAgICAgICAgTE9HKE5ldHdvcmtTY2hlZHVsaW5nLCAiKFdl
YlByb2Nlc3MpIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQsIHVybCAnJXMnIHdpbGwg
YmUgc2NoZWR1bGVkIHRocm91Z2ggU2VydmljZVdvcmtlciBoYW5kbGUgZmV0Y2ggYWxnb3JpdGht
IiwgcmVzb3VyY2VMb2FkZXIudXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKKyAgICAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViTG9hZGVyU3RyYXRlZ3koKS5zY2hlZHVsZUxv
YWRGcm9tTmV0d29ya1Byb2Nlc3MocmVzb3VyY2VMb2FkZXIsIHJlcXVlc3QsIFdURk1vdmUodHJh
Y2tpbmdQYXJhbWV0ZXJzKSwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVj
dCwgbWF4aW11bUJ1ZmZlcmluZ1RpbWUpOworICAgIH0pOworI2Vsc2UKKyAgICBMT0coTmV0d29y
a1NjaGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9h
ZCwgdXJsICclcycgd2lsbCBiZSBzY2hlZHVsZWQgdGhyb3VnaCBTZXJ2aWNlV29ya2VyIGhhbmRs
ZSBmZXRjaCBhbGdvcml0aG0iLCByZXNvdXJjZUxvYWRlci51cmwoKS5zdHJpbmcoKS5sYXRpbjEo
KS5kYXRhKCkpOworICAgIHNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhyZXNvdXJjZUxv
YWRlciwgcmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLCB0cmFja2luZ1BhcmFtZXRlcnMsIHNob3Vs
ZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QpOworI2VuZGlmCit9CisKK3ZvaWQg
V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhSZXNvdXJj
ZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgV2ViUmVzb3VyY2VMb2FkZXI6OlRyYWNraW5nUGFyYW1ldGVycyYgdHJhY2tpbmdQYXJh
bWV0ZXJzLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFNl
Y29uZHMgbWF4aW11bUJ1ZmZlcmluZ1RpbWUpCit7CisgICAgUmVzb3VyY2VMb2FkSWRlbnRpZmll
ciBpZGVudGlmaWVyID0gcmVzb3VyY2VMb2FkZXIuaWRlbnRpZmllcigpOworICAgIEFTU0VSVChp
ZGVudGlmaWVyKTsKKworICAgIFdlYkZyYW1lTG9hZGVyQ2xpZW50KiB3ZWJGcmFtZUxvYWRlckNs
aWVudCA9IHRvV2ViRnJhbWVMb2FkZXJDbGllbnQocmVzb3VyY2VMb2FkZXIuZnJhbWVMb2FkZXIo
KS0+Y2xpZW50KCkpOworICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IHdlYkZyYW1lTG9hZGVyQ2xp
ZW50ID8gd2ViRnJhbWVMb2FkZXJDbGllbnQtPndlYkZyYW1lKCkgOiBudWxscHRyOworICAgIFdl
YlBhZ2UqIHdlYlBhZ2UgPSB3ZWJGcmFtZSA/IHdlYkZyYW1lLT5wYWdlKCkgOiBudWxscHRyOwor
CiAgICAgTE9HKE5ldHdvcmtTY2hlZHVsaW5nLCAiKFdlYlByb2Nlc3MpIFdlYkxvYWRlclN0cmF0
ZWd5OjpzY2hlZHVsZUxvYWQsIHVybCAnJXMnIHdpbGwgYmUgc2NoZWR1bGVkIHdpdGggdGhlIE5l
dHdvcmtQcm9jZXNzIHdpdGggcHJpb3JpdHkgJWQiLCByZXNvdXJjZUxvYWRlci51cmwoKS5zdHJp
bmcoKS5sYXRpbjEoKS5kYXRhKCksIHN0YXRpY19jYXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVx
dWVzdCgpLnByaW9yaXR5KCkpKTsKIAogICAgIENvbnRlbnRTbmlmZmluZ1BvbGljeSBjb250ZW50
U25pZmZpbmdQb2xpY3kgPSByZXNvdXJjZUxvYWRlci5zaG91bGRTbmlmZkNvbnRlbnQoKSA/IFNu
aWZmQ29udGVudCA6IERvTm90U25pZmZDb250ZW50OwpAQCAtMjI1LDcgKzI0Niw3IEBAIHZvaWQg
V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VM
b2FkZXIsIENhY2hlZFJlc291CiAgICAgbG9hZFBhcmFtZXRlcnMud2ViUGFnZUlEID0gd2ViUGFn
ZSA/IHdlYlBhZ2UtPnBhZ2VJRCgpIDogMDsKICAgICBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlE
ID0gd2ViRnJhbWUgPyB3ZWJGcmFtZS0+ZnJhbWVJRCgpIDogMDsKICAgICBsb2FkUGFyYW1ldGVy
cy5zZXNzaW9uSUQgPSB3ZWJQYWdlID8gd2ViUGFnZS0+c2Vzc2lvbklEKCkgOiBQQUw6OlNlc3Np
b25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOwotICAgIGxvYWRQYXJhbWV0ZXJzLnJlcXVlc3QgPSBy
ZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCk7CisgICAgbG9hZFBhcmFtZXRlcnMucmVxdWVzdCA9IHJl
cXVlc3Q7CiAgICAgbG9hZFBhcmFtZXRlcnMuY29udGVudFNuaWZmaW5nUG9saWN5ID0gY29udGVu
dFNuaWZmaW5nUG9saWN5OwogICAgIGxvYWRQYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5ID0gc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k7CiAgICAgLy8gSWYgdGhlcmUgaXMgbm8gV2Vi
RnJhbWUgdGhlbiB0aGlzIHJlc291cmNlIGNhbm5vdCBiZSBhdXRoZW50aWNhdGVkIHdpdGggdGhl
IGNsaWVudC4KQEAgLTIzMyw3ICsyNTQsNyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hl
ZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogICAg
IGxvYWRQYXJhbWV0ZXJzLnNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3Qg
PSBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0OwogICAgIGxvYWRQYXJh
bWV0ZXJzLmRlZmVyc0xvYWRpbmcgPSByZXNvdXJjZUxvYWRlci5kZWZlcnNMb2FkaW5nKCk7CiAg
ICAgbG9hZFBhcmFtZXRlcnMubmVlZHNDZXJ0aWZpY2F0ZUluZm8gPSByZXNvdXJjZUxvYWRlci5z
aG91bGRJbmNsdWRlQ2VydGlmaWNhdGVJbmZvKCk7Ci0gICAgbG9hZFBhcmFtZXRlcnMubWF4aW11
bUJ1ZmZlcmluZ1RpbWUgPSBtYXhpbXVtQnVmZmVyaW5nVGltZShyZXNvdXJjZSk7CisgICAgbG9h
ZFBhcmFtZXRlcnMubWF4aW11bUJ1ZmZlcmluZ1RpbWUgPSBtYXhpbXVtQnVmZmVyaW5nVGltZTsK
ICAgICBsb2FkUGFyYW1ldGVycy5kZXJpdmVkQ2FjaGVkRGF0YVR5cGVzVG9SZXRyaWV2ZSA9IHJl
c291cmNlTG9hZGVyLm9wdGlvbnMoKS5kZXJpdmVkQ2FjaGVkRGF0YVR5cGVzVG9SZXRyaWV2ZTsK
IAogICAgIEFTU0VSVCgobG9hZFBhcmFtZXRlcnMud2ViUGFnZUlEICYmIGxvYWRQYXJhbWV0ZXJz
LndlYkZyYW1lSUQpIHx8IGxvYWRQYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPT0g
Q2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3Ry
YXRlZ3kuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0
ZWd5LmgKaW5kZXggYjQ4ZjY4MTE4ZjQ0OWM3NzY4ZDE3OTY2MTY1YmI2NmEzMjViMjM2Zi4uZWFi
NGVjZTdlZTZiZmZmZjczOGUyYmRmYTM1NWEwODRjMmRhYTZkNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCkBAIC03Nyw2
ICs3Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFVSTFNjaGVtZVRhc2tQcm94eShXZWJVUkxT
Y2hlbWVUYXNrUHJveHkmKTsKICAgICB2b2lkIHJlbW92ZVVSTFNjaGVtZVRhc2tQcm94eShXZWJV
UkxTY2hlbWVUYXNrUHJveHkmKTsKIAorICAgIHZvaWQgc2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQ
cm9jZXNzKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgV2ViUmVzb3VyY2VMb2FkZXI6OlRyYWNraW5nUGFyYW1ldGVycyYsIGJv
b2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgU2Vjb25kcyk7CisK
IHByaXZhdGU6CiAgICAgdm9pZCBzY2hlZHVsZUxvYWQoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIm
LCBXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZSosIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRU
UFNUb0hUVFBSZWRpcmVjdCk7CiAgICAgdm9pZCBzY2hlZHVsZUludGVybmFsbHlGYWlsZWRMb2Fk
KFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43NmUwYTBmYTBjOWYxZTZiZjNlNjFhMjM4MmFjNWYzYjU1YmVjMGQ1Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtl
ckNsaWVudEZldGNoLmNwcApAQCAtMCwwICsxLDE1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guaCIKKworI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKKworI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKwor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMg
Ym9vbCBzaG91bGRSZWRpcmVjdEFzR0VUKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgb2xkUmVxdWVz
dCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFVSTCYgbmV3VVJM
LCBib29sIGNyb3NzT3JpZ2luKQoreworICAgIGlmIChvbGRSZXF1ZXN0Lmh0dHBNZXRob2QoKSA9
PSAiR0VUIiB8fCBvbGRSZXF1ZXN0Lmh0dHBNZXRob2QoKSA9PSAiSEVBRCIpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGlmICghbmV3VVJMLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBzd2l0Y2ggKHJlc3BvbnNlLmh0dHBTdGF0dXND
b2RlKCkpIHsKKyAgICBjYXNlIDMwMzoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSAz
MDI6CisgICAgY2FzZSAzMDE6CisgICAgICAgIGlmIChvbGRSZXF1ZXN0Lmh0dHBNZXRob2QoKSA9
PSAiUE9TVCIpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAg
fTsKKworICAgIGlmIChjcm9zc09yaWdpbiAmJiBvbGRSZXF1ZXN0Lmh0dHBNZXRob2QoKSA9PSAi
REVMRVRFIikKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
Ky8vIEZJWE1FOiBQcm9wZXJseSBzeW50aGVzaXplIGEgbmV3IHJlcXVlc3QgYXMgcGVyIGh0dHBz
Oi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNodHRwLXJlZGlyZWN0LWZldGNoLgorc3RhdGljIGlu
bGluZSBSZXNvdXJjZVJlcXVlc3QgY29tcHV0ZU5ld1JlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiBvbGRSZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKK3sKKyAgICBSZXNvdXJjZVJlcXVlc3QgbmV3UmVxdWVzdCA9IG9sZFJlcXVlc3Q7CisgICAg
VVJMIG5ld1VSTCA9IFVSTCB7IG9sZFJlcXVlc3QudXJsKCksIHJlc3BvbnNlLmh0dHBIZWFkZXJG
aWVsZChIVFRQSGVhZGVyTmFtZTo6TG9jYXRpb24pIH07CisgICAgbmV3UmVxdWVzdC5zZXRVUkwo
bmV3VVJMKTsKKworICAgIGJvb2wgY3Jvc3NPcmlnaW4gPSAhcHJvdG9jb2xIb3N0QW5kUG9ydEFy
ZUVxdWFsKG9sZFJlcXVlc3QudXJsKCksIG5ld1VSTCk7CisKKyAgICBpZiAobmV3UmVxdWVzdC5o
dHRwTWV0aG9kKCkgIT0gIkdFVCIpIHsKKyAgICAgICAgaWYgKHNob3VsZFJlZGlyZWN0QXNHRVQo
b2xkUmVxdWVzdCwgcmVzcG9uc2UsIG5ld1VSTCwgY3Jvc3NPcmlnaW4pKSB7CisgICAgICAgICAg
ICBuZXdSZXF1ZXN0LnNldEhUVFBNZXRob2QoIkdFVCIpOworICAgICAgICAgICAgbmV3UmVxdWVz
dC5zZXRIVFRQQm9keShudWxscHRyKTsKKyAgICAgICAgICAgIG5ld1JlcXVlc3QuY2xlYXJIVFRQ
Q29udGVudFR5cGUoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEZJWE1FOiBQcm9wZXJs
eSBoYW5kbGUgUmVmZXJlcgorICAgIGlmICghbmV3VVJMLnByb3RvY29sSXMoImh0dHBzIikgJiYg
cHJvdG9jb2xJcyhuZXdSZXF1ZXN0Lmh0dHBSZWZlcnJlcigpLCAiaHR0cHMiKSkKKyAgICAgICAg
bmV3UmVxdWVzdC5jbGVhckhUVFBSZWZlcnJlcigpOworCisgICAgbmV3UmVxdWVzdC5yZW1vdmVD
cmVkZW50aWFscygpOworCisgICAgaWYgKGNyb3NzT3JpZ2luKSB7CisgICAgICAgIG5ld1JlcXVl
c3QuY2xlYXJIVFRQQXV0aG9yaXphdGlvbigpOworICAgICAgICBuZXdSZXF1ZXN0LmNsZWFySFRU
UE9yaWdpbigpOworICAgIH0KKworICAgIHJldHVybiBuZXdSZXF1ZXN0OworfQorCitzdGF0aWMg
aW5saW5lIGJvb2wgc2hvdWxkUmVkaXJlY3QoaW50IHN0YXR1c0NvZGUpCit7CisgICAgaWYgKHN0
YXR1c0NvZGUgPD0gMzAwIHx8IHN0YXR1c0NvZGUgPj0gNDAwKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKHN0YXR1c0NvZGUgPT0gMzA0IHx8IHN0YXR1c0NvZGUgPT0gMzA1IHx8IHN0
YXR1c0NvZGUgPT0gMzA2KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit7CisgICAgaWYgKCFt
X2xvYWRlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6IFByb3Blcmx5IGhhbmRs
ZSBvcGFxdWUgcmVkaXJlY3QgcmVzcG9uc2VzLgorICAgIGlmIChzaG91bGRSZWRpcmVjdChyZXNw
b25zZS5odHRwU3RhdHVzQ29kZSgpKSkgeworICAgICAgICBtX2xvYWRlci0+d2lsbFNlbmRSZXF1
ZXN0KGNvbXB1dGVOZXdSZXF1ZXN0KG1fbG9hZGVyLT5vcmlnaW5hbFJlcXVlc3QoKSwgcmVzcG9u
c2UpLCByZXNwb25zZSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCkgbXV0YWJsZSB7CisgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIGhhbmRsZSByZWRpcmVjdGlvbnMgdGhhdCBjYW4gZ28gYmFjayB0byBzZXJ2aWNlIHdvcmtl
ci4KKyAgICAgICAgICAgIGlmICghcHJvdGVjdGVkVGhpcy0+bV9sb2FkZXIpCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBpZiAoYXV0byBmYWxsYmFjayA9IFdURk1vdmUo
cHJvdGVjdGVkVGhpcy0+bV9mYWxsYmFjaykpCisgICAgICAgICAgICAgICAgZmFsbGJhY2soKnBy
b3RlY3RlZFRoaXMtPm1fbG9hZGVyLCByZXF1ZXN0KTsKKyAgICAgICAgfSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAocmVzcG9uc2UudHlwZSgpID09IFJlc291cmNlUmVzcG9u
c2U6OlR5cGU6OkVycm9yKSB7CisgICAgICAgIC8vIEFkZCBzdXBwb3J0IGZvciBhIGJldHRlciBl
cnJvci4KKyAgICAgICAgbV9sb2FkZXItPmRpZEZhaWwoeyB9KTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBtX2xvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKK30KKwor
dm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKK3sKKyAgICBp
ZiAoIW1fbG9hZGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2xvYWRlci0+ZGlkUmVjZWl2
ZURhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNp
emUoKSwgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkQnl0ZXMpOworfQorCit2b2lkIFNl
cnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6ZGlkRmluaXNoRmV0Y2goKQoreworICAgIGlmICghbV9s
b2FkZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbG9hZGVyLT5kaWRGaW5pc2hMb2FkaW5n
KE5ldHdvcmtMb2FkTWV0cmljcyB7IH0pOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRG
ZXRjaDo6ZGlkRmFpbCgpCit7CisgICAgaWYgKCFtX2xvYWRlcikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKGF1dG8gZmFsbGJhY2sgPSBXVEZNb3ZlKG1fZmFsbGJhY2spKQorICAgICAgICBm
YWxsYmFjaygqbV9sb2FkZXIsIG1fbG9hZGVyLT5vcmlnaW5hbFJlcXVlc3QoKSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtl
ckNsaWVudEZldGNoLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNl
V29ya2VyQ2xpZW50RmV0Y2guaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NjVhMzRmYTQ1NDEwMjI4MWFlMGYwMDI1
MTZjNDUwZTA0NGM0YWViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLmgKQEAgLTAsMCArMSw3MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQor
CisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXIuaD4KKyNpbmNsdWRlIDx3dGYvRnVu
Y3Rpb24uaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFNlcnZpY2VXb3JrZXJDbGll
bnRGZXRjaCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFNlcnZpY2VXb3JrZXJDbGllbnRGZXRj
aD4sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ciB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g+IGNy
ZWF0ZShSZWY8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI+JiYgbG9hZGVyLCB1aW50NjRfdCBpZGVu
dGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFdURjo6RnVuY3Rpb248
dm9pZChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpPiYmIGZhbGxiYWNrKQorCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2ggeyBXVEZNb3ZlKGxvYWRlciksIGlkZW50aWZpZXIs
IFdURk1vdmUoY29ubmVjdGlvbiksIFdURk1vdmUoZmFsbGJhY2spIH0pOworICAgIH0KKworICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikg
ZmluYWw7CisKK3ByaXZhdGU6CisgICAgU2VydmljZVdvcmtlckNsaWVudEZldGNoKFJlZjxXZWJD
b3JlOjpSZXNvdXJjZUxvYWRlcj4mJiBsb2FkZXIsIHVpbnQ2NF90IGlkZW50aWZpZXIsIFJlZjxJ
UEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgV1RGOjpGdW5jdGlvbjx2b2lkKFdlYkNvcmU6
OlJlc291cmNlTG9hZGVyJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik+JiYgZmFs
bGJhY2spCisgICAgICAgIDogbV9sb2FkZXIoV1RGTW92ZShsb2FkZXIpKQorICAgICAgICAsIG1f
aWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICAgICAsIG1fY29ubmVjdGlvbihXVEZNb3ZlKGNv
bm5lY3Rpb24pKQorICAgICAgICAsIG1fZmFsbGJhY2soV1RGTW92ZShmYWxsYmFjaykpCisgICAg
eworICAgIH0KKworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGlkRmlu
aXNoRmV0Y2goKTsKKyAgICB2b2lkIGRpZEZhaWwoKTsKKworICAgIElQQzo6Q29ubmVjdGlvbiog
bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBmaW5hbCB7IHJldHVybiBtX2Nvbm5lY3Rpb24ucHRy
KCk7IH0KKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGZpbmFsIHsg
cmV0dXJuIG1faWRlbnRpZmllcjsgfQorCisgICAgUmVmUHRyPFdlYkNvcmU6OlJlc291cmNlTG9h
ZGVyPiBtX2xvYWRlcjsKKyAgICB1aW50NjRfdCBtX2lkZW50aWZpZXIgeyAwIH07CisgICAgUmVm
PElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgIFdURjo6RnVuY3Rpb248dm9pZChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYp
PiBtX2ZhbGxiYWNrOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gubWVzc2Fn
ZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMGY3N2U2MjE3YzAxZTAxODhmM2RiNTdiYjg3NDAxZjExMTA4ZDA2
NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1Nl
cnZpY2VXb3JrZXJDbGllbnRGZXRjaC5tZXNzYWdlcy5pbgpAQCAtMCwwICsxLDMzIEBACisjIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCisKK21lc3NhZ2VzIC0+IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaCB7CisgICAgRGlk
UmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UpCisgICAg
RGlkUmVjZWl2ZURhdGEoSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEsIGludDY0X3QgZW5jb2RlZERh
dGFMZW5ndGgpCisgICAgRGlkRmluaXNoRmV0Y2goKQorICAgIERpZEZhaWwoKQorfQorCisjZW5k
aWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2Vy
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iMjEzNTVlMjY4NjMwNTVjMGQxYTEzMzNkZTUyNzQ5YjFlMWMwZmM1
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2Vy
dmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDb250ZXh0TWFu
YWdlci5oIgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgorI2luY2x1ZGUgIlN0b3JhZ2VQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJD
b3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgorI2luY2x1ZGUgPHBhbC9T
ZXNzaW9uSUQuaD4KKwordXNpbmcgbmFtZXNwYWNlIFBBTDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBTZXJ2aWNlV29ya2VyQ29udGV4dE1h
bmFnZXI6OnN0YXJ0U2VydmljZVdvcmtlckNvbnRleHQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSkKK3sKKyAg
ICAvLyBGSVhNRTogUHJvdmlkZSBhIHNlbnNpY2FsIHNlc3Npb24gSUQKKworICAgIGF1dG8gdGhy
ZWFkID0gU2VydmljZVdvcmtlclRocmVhZDo6Y3JlYXRlKHNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyLCBkYXRhLCBTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CisgICAgYXV0byB0aHJl
YWRJZGVudGlmaWVyID0gdGhyZWFkLT5pZGVudGlmaWVyKCk7CisgICAgYXV0byByZXN1bHQgPSBt
X3dvcmtlclRocmVhZE1hcC5hZGQodGhyZWFkSWRlbnRpZmllciwgV1RGTW92ZSh0aHJlYWQpKTsK
KyAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50cnkpOworCisgICAgcmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZS0+c3RhcnQoKTsKKworICAgIExPRyhTZXJ2aWNlV29ya2VyLCAiQ29udGV4dCBwcm9jZXNz
IFBJRDogJWkgc3RhcnRlZCB3b3JrZXIgdGhyZWFkICVzXG4iLCBnZXRwaWQoKSwgZGF0YS53b3Jr
ZXJJRC51dGY4KCkuZGF0YSgpKTsKKworICAgIG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpTZXJ2aWNlV29ya2VyQ29udGV4dFN0YXJ0
ZWQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGRhdGEucmVnaXN0cmF0aW9uS2V5LCB0aHJl
YWRJZGVudGlmaWVyLCBkYXRhLndvcmtlcklEKSwgMCk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtl
ckNvbnRleHRNYW5hZ2VyOjpzdGFydEZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEZldGNoT3B0
aW9ucyYgb3B0aW9ucykKK3sKKyAgICBVTlVTRURfUEFSQU0oc2VydmljZVdvcmtlcklkZW50aWZp
ZXIpOworCisgICAgLy8gSGFyZCBjb2Rpbmcgc29tZSBmZXRjaGVzIGZvciB0ZXN0aW5nIHB1cnBv
c2UgdW50aWwgd2UgaW1wbGVtZW50IHRoZSBjcmVhdGlvbiBvZiBmZXRjaCBldmVudC4KKyAgICBp
ZiAocmVxdWVzdC51cmwoKS5zdHJpbmcoKS5jb250YWlucygidGVzdDEiKSkgeworICAgICAgICBS
ZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOworICAgICAgICByZXNwb25zZS5zZXRVUkwocmVxdWVz
dC51cmwoKSk7CisgICAgICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2RlKDIwMCk7CisgICAg
ICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNUZXh0KEFTQ0lJTGl0ZXJhbCgiSGVsbG8gZnJvbSBz
ZXJ2aWNlIHdvcmtlciIpKTsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9TdG9yYWdlUHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OkRpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKHNl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIsIHJlc3BvbnNlKSwgMCk7
CisgICAgICAgIG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlN0
b3JhZ2VQcm9jZXNzOjpEaWRGaW5pc2hGZXRjaChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwg
ZmV0Y2hJZGVudGlmaWVyKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKHJl
cXVlc3QudXJsKCkuc3RyaW5nKCkuY29udGFpbnMoInRlc3QyIikpIHsKKyAgICAgICAgUmVzb3Vy
Y2VSZXNwb25zZSByZXNwb25zZTsKKyAgICAgICAgcmVzcG9uc2Uuc2V0VVJMKHJlcXVlc3QudXJs
KCkpOworICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZSg1MDApOworICAgICAgICBy
ZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChBU0NJSUxpdGVyYWwoIkVycm9yIGZyb20gc2Vydmlj
ZSB3b3JrZXIiKSk7CisgICAgICAgIG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZShzZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyLCByZXNwb25zZSksIDApOworICAg
ICAgICBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdl
UHJvY2Vzczo6RGlkRmluaXNoRmV0Y2goc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGZldGNo
SWRlbnRpZmllciksIDApOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChyZXF1ZXN0
LnVybCgpLnN0cmluZygpLmNvbnRhaW5zKCJ0ZXN0MyIpKSB7CisgICAgICAgIFJlc291cmNlUmVz
cG9uc2UgcmVzcG9uc2U7CisgICAgICAgIHJlc3BvbnNlLnNldFVSTChyZXF1ZXN0LnVybCgpKTsK
KyAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoNTAwKTsKKyAgICAgICAgcmVzcG9u
c2Uuc2V0SFRUUFN0YXR1c1RleHQoQVNDSUlMaXRlcmFsKCJFcnJvciBmcm9tIHNlcnZpY2Ugd29y
a2VyIikpOworICAgICAgICByZXNwb25zZS5zZXRUeXBlKFJlc291cmNlUmVzcG9uc2U6OlR5cGU6
OkVycm9yKTsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9TdG9yYWdlUHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6U3RvcmFnZVByb2Nlc3M6OkRpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKHNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIsIHJlc3BvbnNlKSwgMCk7CisgICAgICAg
IG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9j
ZXNzOjpEaWRGaW5pc2hGZXRjaChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVu
dGlmaWVyKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2Nvbm5lY3Rpb25U
b1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6RmFpbGVkRmV0
Y2goc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGZldGNoSWRlbnRpZmllciksIDApOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNl
V29ya2VyQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1NlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5ODJhN2M3Y2VlNWUx
NzFjZTYxMzE1NThmYzA0YTQwOWZjY2FiNGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuaApAQCAt
MCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9FeGNlcHRpb25Pci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclRocmVhZC5o
PgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVj
dCBGZXRjaE9wdGlvbnM7CitjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CitzdHJ1Y3QgU2VydmljZVdv
cmtlckNvbnRleHREYXRhOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgU2Vydmlj
ZVdvcmtlckNvbnRleHRNYW5hZ2VyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTZXJ2aWNlV29y
a2VyQ29udGV4dE1hbmFnZXIoUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQorICAg
ICAgICA6IG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MoV1RGTW92ZShjb25uZWN0aW9uKSkK
KyAgICB7CisgICAgfQorCisgICAgdm9pZCBzdGFydFNlcnZpY2VXb3JrZXJDb250ZXh0KHVpbnQ2
NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEmKTsKKyAgICB2b2lkIHN0YXJ0RmV0Y2godWludDY0X3Qgc2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgdWludDY0X3Qgc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFdlYkNvcmU6OkZldGNoT3B0aW9ucyYpOworCitwcml2YXRlOgorICAgIFJlZjxJUEM6OkNv
bm5lY3Rpb24+IG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3M7CisgICAgSGFzaE1hcDx1aW50
NjRfdCwgUmVmUHRyPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ+PiBtX3dvcmtlclRocmVh
ZE1hcDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCmluZGV4IDc2YWU3YjU1YmEwMzBjY2Iw
MzgzNzg2ZTg4NzI4NTk5ZmZiZDZhZGEuLjY4ZjYyZWU4MTQ2ZGE4YmRlZmUxOWFlMWJmYjhhNGRm
MDI5Y2RjOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKIAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJT
ZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guaCIKICNpbmNsdWRlICJTdG9yYWdlVG9XZWJQcm9jZXNz
Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgi
CiAjaW5jbHVkZSAiV2ViU1dPcmlnaW5UYWJsZS5oIgpAQCAtNzUsNiArNzYsMTUgQEAgdm9pZCBX
ZWJTV0NsaWVudENvbm5lY3Rpb246OnNldFNXT3JpZ2luVGFibGVTaGFyZWRNZW1vcnkoY29uc3Qg
U2hhcmVkTWVtb3J5OjpIYW4KICAgICBtX3N3T3JpZ2luVGFibGUtPnNldFNoYXJlZE1lbW9yeSho
YW5kbGUpOwogfQogCitSZWY8U2VydmljZVdvcmtlckNsaWVudEZldGNoPiBXZWJTV0NsaWVudENv
bm5lY3Rpb246OnN0YXJ0RmV0Y2goUmVmPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyPiYmIGxvYWRl
ciwgdWludDY0X3QgaWRlbnRpZmllciwgV1RGOjpGdW5jdGlvbjx2b2lkKFJlc291cmNlTG9hZGVy
JiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYgZmFsbGJhY2spCit7CisgICAgQVNTRVJUKGxv
YWRlci0+b3B0aW9ucygpLnNlcnZpY2VXb3JrZXJzTW9kZSA9PSBTZXJ2aWNlV29ya2Vyc01vZGU6
OkFsbCk7CisvLyAgICBBU1NFUlQobG9hZGVyLT5vcHRpb25zKCkuc2VydmljZVdvcmtlcklkZW50
aWZpZXIpOworCisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpTdGFy
dEZldGNoKGlkZW50aWZpZXIsIGxvYWRlci0+b3B0aW9ucygpLnNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBsb2FkZXItPm9yaWdpbmFsUmVxdWVzdCgpLCBsb2FkZXItPm9wdGlvbnMoKSkpOworICAg
IHJldHVybiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OmNyZWF0ZShXVEZNb3ZlKGxvYWRlciks
IGlkZW50aWZpZXIsIG1fY29ubmVjdGlvbi5nZXQoKSwgV1RGTW92ZShmYWxsYmFjaykpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xp
ZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
bGllbnRDb25uZWN0aW9uLmgKaW5kZXggMjYxN2VjMmU3NGYwZTU0ZTI0NDY2OGMyYzIzNWQzNjNi
ZGFkZDY1My4uMzQzYzgyMGQ2NmEwYTNjMTI4OGJjMWZmNzFiYTM1NTk3OWI2OGY5MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRD
b25uZWN0aW9uLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5Lmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U1dDbGllbnRDb25uZWN0aW9uLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1
ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KQEAgLTQxLDYgKzQyLDcgQEAgc3RydWN0IEV4Y2VwdGlvbkRh
dGE7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0
Y2g7CiBjbGFzcyBXZWJTV09yaWdpblRhYmxlOwogCiBjbGFzcyBXZWJTV0NsaWVudENvbm5lY3Rp
b24gOiBwdWJsaWMgV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uLCBwdWJsaWMgSVBDOjpNZXNz
YWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewpAQCAtNTgsNiArNjAsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImKSBmaW5hbDsKIAogICAgIGJvb2wgaGFzU2VydmljZVdvcmtlclJlZ2lzdGVy
ZWRGb3JPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mKSBjb25zdCBmaW5hbDsK
KyAgICBSZWY8U2VydmljZVdvcmtlckNsaWVudEZldGNoPiBzdGFydEZldGNoKFJlZjxXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRlcj4mJiwgdWludDY0X3QgaWRlbnRpZmllciwgV1RGOjpGdW5jdGlvbjx2
b2lkKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0Jik+JiYgZmFsbGJhY2spOwogCiBwcml2YXRlOgogICAgIHZvaWQgc2NoZWR1bGVTdG9yYWdl
Sm9iKGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclBy
b3ZpZGVyLmNwcAppbmRleCA2MWQ4Y2U1NmVlYzViZDQxNzNiNjQyYmU5MDYxZTczYzc3Mzc2Zjk5
Li5jNGE2YjU1ZjZiOGIyNDExNmU5MzI2NmUwZTM0MDg0NzJlYjhkZDA3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3Jr
ZXJQcm92aWRlci5jcHAKQEAgLTU4LDYgKzU4LDQyIEBAIFdlYkNvcmU6OlNXQ2xpZW50Q29ubmVj
dGlvbiYgV2ViU2VydmljZVdvcmtlclByb3ZpZGVyOjpzZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZv
CiAgICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlRvU3RvcmFnZVByb2Nlc3ND
b25uZWN0aW9uKCktPnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uRm9yU2Vzc2lvbihzZXNzaW9uSUQp
OwogfQogCitzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkSGFuZGxlRmV0Y2goY29uc3QgV2ViU1dD
bGllbnRDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNv
bnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKK3sKKyAgICBpZiAob3B0aW9ucy5z
ZXJ2aWNlV29ya2Vyc01vZGUgIT0gU2VydmljZVdvcmtlcnNNb2RlOjpBbGwpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcHJvYmFibHkgYXNzZXJ0IHRo
YXQgb3B0aW9ucy5zZXJ2aWNlV29ya2Vyc0lkZW50aWZpZXIgaXMgbm90IG51bGwuCisgICAgaWYg
KGlzUG90ZW50aWFsTmF2aWdhdGlvbk9yU3VicmVzb3VyY2VSZXF1ZXN0KG9wdGlvbnMuZGVzdGlu
YXRpb24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50
IG5vbi1zdWJyZXNvdXJjZSByZXF1ZXN0IGxvYWRzLgorICAgIGlmIChpc05vblN1YnJlc291cmNl
UmVxdWVzdChvcHRpb25zLmRlc3RpbmF0aW9uKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgcmV0dXJuIGNvbm5lY3Rpb24uaGFzU2VydmljZVdvcmtlclJlZ2lzdGVyZWRGb3JPcmlnaW4o
KnJlc291cmNlLm9yaWdpbigpKTsKK30KKwordm9pZCBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6
OmhhbmRsZUZldGNoKFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIENhY2hlZFJlc291cmNlJiByZXNv
dXJjZSwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXVEY6OkZ1bmN0aW9uPHZvaWQoUmVzb3Vy
Y2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKT4mJiBmYWxsYmFjaykKK3sKKyAgICBh
dXRvJiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViVG9TdG9yYWdlUHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VydmljZVdvcmtlckNvbm5lY3Rpb25Gb3JTZXNzaW9uKHNlc3Np
b25JRCk7CisKKyAgICBpZiAoIXNob3VsZEhhbmRsZUZldGNoKGNvbm5lY3Rpb24sIHJlc291cmNl
LCBsb2FkZXIub3B0aW9ucygpKSkgeworICAgICAgICAvLyBBZGQgYW4gb3B0aW9uIHRvIGVycm9y
IHJlc291cmNlIGxvYWQgZm9yIERUTCB0byBhY3R1YWxseSBnbyB0aHJvdWdoIHByZWZsaWdodC4K
KyAgICAgICAgZmFsbGJhY2sobG9hZGVyLCBsb2FkZXIub3JpZ2luYWxSZXF1ZXN0KCkpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBmZXRjaCA9IGNvbm5lY3Rpb24uc3RhcnRG
ZXRjaChsb2FkZXIsICsrbV9uZXh0T25nb2luZ0ZldGNoSWRlbnRpZmllciwgV1RGTW92ZShmYWxs
YmFjaykpOworICAgIG1fb25nb2luZ0ZldGNoZXMuYWRkKG1fbmV4dE9uZ29pbmdGZXRjaElkZW50
aWZpZXIsIFdURk1vdmUoZmV0Y2gpKTsKK30KKwordm9pZCBXZWJTZXJ2aWNlV29ya2VyUHJvdmlk
ZXI6OmRpZFJlY2VpdmVTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGlmIChhdXRv
IGZldGNoID0gbV9vbmdvaW5nRmV0Y2hlcy5nZXQoZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKQor
ICAgICAgICBmZXRjaC0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vy
dmljZVdvcmtlclByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaAppbmRleCA3NzVmNWVlMDRiMmM2ZmRkNzU2YTJlY2U4
OGM2OGE3NzBmYzcwMTBmLi45Y2YwMWMyYTBlYjk1YWEyYzBjYjcyNTBiZDc2MTQzNTc5Y2YyZGE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNl
V29ya2VyUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudEZldGNoLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyUHJvdmlkZXIuaD4KICNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApAQCAtMzYsMTIgKzM3LDE5IEBAIGNsYXNzIFdlYlNlcnZp
Y2VXb3JrZXJQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUHJv
dmlkZXIgewogcHVibGljOgogICAgIHN0YXRpYyBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXImIHNp
bmdsZXRvbigpOwogCisgICAgdm9pZCBoYW5kbGVGZXRjaChXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
ciYsIFdlYkNvcmU6OkNhY2hlZFJlc291cmNlJiwgUEFMOjpTZXNzaW9uSUQsIFdURjo6RnVuY3Rp
b248dm9pZChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYpPiYmIGZhbGxiYWNrKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZpY2VXb3Jr
ZXJDbGllbnRGZXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CisK
IHByaXZhdGU6CiAgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPFdlYlNlcnZpY2VXb3JrZXJQcm92
aWRlcj47CiAgICAgV2ViU2VydmljZVdvcmtlclByb3ZpZGVyKCk7CiAKICAgICBXZWJDb3JlOjpT
V0NsaWVudENvbm5lY3Rpb24mIHNlcnZpY2VXb3JrZXJDb25uZWN0aW9uRm9yU2Vzc2lvbihQQUw6
OlNlc3Npb25JRCkgZmluYWw7CiAKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWY8U2VydmljZVdv
cmtlckNsaWVudEZldGNoPj4gbV9vbmdvaW5nRmV0Y2hlczsKKyAgICB1aW50NjRfdCBtX25leHRP
bmdvaW5nRmV0Y2hJZGVudGlmaWVyIHsgMCB9OworCiB9OyAvLyBjbGFzcyBXZWJTZXJ2aWNlV29y
a2VyUHJvdmlkZXIKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJUb1N0b3JhZ2VQcm9jZXNz
Q29ubmVjdGlvbi5jcHAKaW5kZXggNWExMmQwNGRjYmQyMzExMmM0MDM5MzE5NDVlNWZjNTU2MTAz
MDc3Ni4uYjJkZjgzN2UxZDgzMzU5MWZhNWI0ODRlMzM5YmNkODU2M2MxNTAxYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViVG9TdG9yYWdlUHJvY2Vzc0Nv
bm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlRv
U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMjcsMTEgKzI3LDEzIEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24uaCIK
IAorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIldl
YklEQkNvbm5lY3Rpb25Ub1NlcnZlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5o
IgogI2luY2x1ZGUgIldlYlNXQ2xpZW50Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYlNXQ2xp
ZW50Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2VydmljZVdvcmtlclByb3Zp
ZGVyLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBQQUw7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
QEAgLTY3LDYgKzY5LDEwIEBAIHZvaWQgV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OmRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvCiAgICAgICAgICAgICBz
ZXJ2aWNlV29ya2VyQ29ubmVjdGlvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVj
b2Rlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJl
Y2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNp
bmdsZXRvbigpLmRpZFJlY2VpdmVTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlKGNvbm5l
Y3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQogI2VuZGlmCiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAKaW5kZXggNmUyNzY3MTFlY2M1ODdiOTc0YWNhMzEzMTZkYmQxY2EzY2Y3MTkxYi4uZGViOTA3
NzhlNDk5ZGEwMmE5ZTk5ZGEzNTk1OGU0MWUxZTk1YzY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCiAjaW5jbHVk
ZSAiUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmgiCisjaW5jbHVkZSAiU2VydmljZVdv
cmtlckNvbnRleHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKICNpbmNs
dWRlICJTdGF0aXN0aWNzRGF0YS5oIgogI2luY2x1ZGUgIlN0b3JhZ2VQcm9jZXNzTWVzc2FnZXMu
aCIKQEAgLTEwNSw3ICsxMDYsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgotI2luY2x1ZGUgPFdl
YkNvcmUvU1dDb250ZXh0TWFuYWdlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NoZW1lUmVnaXN0
cnkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaD4KQEAgLTE2MjIsNyArMTYyMiw3IEBAIExp
YldlYlJUQ05ldHdvcmsmIFdlYlByb2Nlc3M6OmxpYldlYlJUQ05ldHdvcmsoKQogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKIHZvaWQgV2ViUHJvY2Vzczo6Z2V0V29ya2VyQ29udGV4dENvbm5l
Y3Rpb24oKQogewotICAgIEFTU0VSVCghbV93b3JrZXJDb250ZXh0Q29ubmVjdGlvbik7CisgICAg
QVNTRVJUKCFtX3NlcnZpY2VXb3JrZXJNYW5hZ2VyKTsKIAogI2lmIFVTRShVTklYX0RPTUFJTl9T
T0NLRVRTKQogICAgIElQQzo6Q29ubmVjdGlvbjo6U29ja2V0UGFpciBzb2NrZXRQYWlyID0gSVBD
OjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsKQEAgLTE2NDIsMjAgKzE2
NDIsMjYgQEAgdm9pZCBXZWJQcm9jZXNzOjpnZXRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbigpCiAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICNlbmRpZgogCi0gICAgbV93b3JrZXJD
b250ZXh0Q29ubmVjdGlvbiA9IElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQ29ubmVjdGlv
bihjb25uZWN0aW9uSWRlbnRpZmllciwgKnRoaXMpOwotICAgIG1fd29ya2VyQ29udGV4dENvbm5l
Y3Rpb24tPm9wZW4oKTsKLQorICAgIGF1dG8gd29ya2VyQ29udGV4dENvbm5lY3Rpb24gPSBJUEM6
OkNvbm5lY3Rpb246OmNyZWF0ZVNlcnZlckNvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIs
ICp0aGlzKTsKKyAgICB3b3JrZXJDb250ZXh0Q29ubmVjdGlvbi0+b3BlbigpOworICAgIG1fc2Vy
dmljZVdvcmtlck1hbmFnZXIgPSAgU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyKFdURk1vdmUo
d29ya2VyQ29udGV4dENvbm5lY3Rpb24pKTsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6
OkRpZEdldFdvcmtlckNvbnRleHRDb25uZWN0aW9uKGNvbm5lY3Rpb25DbGllbnRQb3J0KSwgMCk7
CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6c3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4dCh1aW50NjRf
dCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlckNvbnRleHRE
YXRhJiBkYXRhKQogewotICAgIGF1dG8gY29udGV4dFJlc3VsdCA9IFNXQ29udGV4dE1hbmFnZXI6
OnNpbmdsZXRvbigpLnN0YXJ0U2VydmljZVdvcmtlckNvbnRleHQoc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIsIGRhdGEpOwotICAgIAotICAgIGlmIChjb250ZXh0UmVzdWx0Lmhhc0V4Y2VwdGlv
bigpKQotICAgICAgICBtX3dvcmtlckNvbnRleHRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpT
dG9yYWdlUHJvY2Vzczo6U2VydmljZVdvcmtlckNvbnRleHRGYWlsZWRUb1N0YXJ0KHNlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyLCBkYXRhLnJlZ2lzdHJhdGlvbktleSwgZGF0YS53b3JrZXJJRCwg
Y29udGV4dFJlc3VsdC5leGNlcHRpb24oKS5tZXNzYWdlKCkpLCAwKTsKLSAgICBlbHNlCi0gICAg
ICAgIG1fd29ya2VyQ29udGV4dENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9j
ZXNzOjpTZXJ2aWNlV29ya2VyQ29udGV4dFN0YXJ0ZWQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIsIGRhdGEucmVnaXN0cmF0aW9uS2V5LCBjb250ZXh0UmVzdWx0LnJldHVyblZhbHVlKCksIGRh
dGEud29ya2VySUQpLCAwKTsKKyAgICBpZiAoIW1fc2VydmljZVdvcmtlck1hbmFnZXIpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fc2VydmljZVdvcmtlck1hbmFnZXItPnN0YXJ0U2VydmljZVdv
cmtlckNvbnRleHQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGRhdGEpOworfQorCit2b2lk
IFdlYlByb2Nlc3M6OnN0YXJ0RmV0Y2hJblNlcnZpY2VXb3JrZXIodWludDY0X3Qgc2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgdWludDY0X3Qgc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29u
c3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zKQoreworICAgIGlmICghbV9zZXJ2aWNlV29ya2VyTWFu
YWdlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zZXJ2aWNlV29ya2VyTWFuYWdlci0+c3Rh
cnRGZXRjaChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyLCBzZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9ucyk7CiB9CiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggNWMyZTZjNzZkZjc4MjQ1YTFiMzE1
NDljNmUwMTFmZTRmNWQ0ZDNmNy4uZmVlMTQzNjI2YjcxZWI5MTBjODczNTBmMDU2ZDIyNzZhYmZj
OTFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VDYWNoZXNUb0NsZWFyLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5o
IgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5oIgogI2luY2x1ZGUgIlRl
eHRDaGVja2VyU3RhdGUuaCIKICNpbmNsdWRlICJWaWV3VXBkYXRlRGlzcGF0Y2hlci5oIgogI2lu
Y2x1ZGUgIldlYkluc3BlY3RvckludGVycnVwdERpc3BhdGNoZXIuaCIKQEAgLTMwMCw3ICszMDEs
NyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGdldFdv
cmtlckNvbnRleHRDb25uZWN0aW9uKCk7CiAgICAgdm9pZCBzdGFydFNlcnZpY2VXb3JrZXJDb250
ZXh0KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmKTsKLSAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBt
X3dvcmtlckNvbnRleHRDb25uZWN0aW9uOworICAgIHZvaWQgc3RhcnRGZXRjaEluU2VydmljZVdv
cmtlcih1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJ
ZGVudGlmaWVyLCB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJik7CiAjZW5k
aWYKIAogICAgIHZvaWQgcmVsZWFzZVBhZ2VDYWNoZSgpOwpAQCAtNDM4LDYgKzQzOSw5IEBAIHBy
aXZhdGU6CiAjaWYgUExBVEZPUk0oV0FZTEFORCkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2F5bGFu
ZENvbXBvc2l0b3JEaXNwbGF5PiBtX3dheWxhbmRDb21wb3NpdG9yRGlzcGxheTsKICNlbmRpZgor
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJDb250ZXh0TWFuYWdlcj4gbV9zZXJ2aWNlV29ya2VyTWFuYWdlcjsKKyNlbmRpZgogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDIyMDYzNjAxZTA2M2FiNWIyMTc4ZmY3YjM2YzljOTkx
MjgxMDc5N2YuLjFhN2I3Njg4OTA0MGU4NGI3NWI1YWNhMjcxNjVkYjk1ZTM4NDQwNDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0x
MTcsNSArMTE3LDYgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIEdldFdvcmtlckNvbnRleHRDb25uZWN0aW9u
KCkKICAgICBTdGFydFNlcnZpY2VXb3JrZXJDb250ZXh0KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhIGNv
bnRleHREYXRhKQorU3RhcnRGZXRjaEluU2VydmljZVdvcmtlcih1aW50NjRfdCBzZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCB1aW50NjRfdCBzZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHN0
cnVjdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMgb3B0aW9ucykKICNlbmRpZgogfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGRh
ODdlMzk4MWVhNGUwNDU5YzdhZTc2ODI1MGUwNDI0MjRlZWJmNzguLjdlYmE4N2NlNTdhNmZjNjY2
NjE3ZmNlMTcwM2RkYTYwMGM5MTFkNDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNy0xMC0x
OCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHByZWxp
bWluYXJ5IHN1cHBvcnQgZm9yIFNlcnZpY2VXb3JrZXIgSGFuZGxlIEZldGNoCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzg0NzUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vy
cy9zZXJ2aWNlL2Jhc2ljLWZldGNoLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvYmFzaWMtZmV0Y2guaHR0cHMuaHRtbDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2lj
LWZldGNoLXdvcmtlci5qczogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3Nl
cnZpY2UvcmVzb3VyY2VzL2Jhc2ljLWZldGNoLmpzOiBBZGRlZC4KKwogMjAxNy0xMC0xOCAgTXMy
Z2VyICA8TXMyZ2VyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gVGVzdCBnYXJkZW5pbmcu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNp
Yy1mZXRjaC5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtl
cnMvc2VydmljZS9iYXNpYy1mZXRjaC5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmZk
NjQ5ZjA5YmYxNDMwMWNlODdjZDBjOWZjNjI0YWRjNjBkNjRmZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2ljLWZldGNoLmh0dHBz
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxMjog
dGVzdDEgc3RhdHVzIGNvZGU6IDIwMAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEzOiB0ZXN0MSBz
dGF0dXMgdGV4dDogSGVsbG8gZnJvbSBzZXJ2aWNlIHdvcmtlcgorQ09OU09MRSBNRVNTQUdFOiBs
aW5lIDE2OiB0ZXN0MiBzdGF0dXMgY29kZTogNTAwCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTc6
IHRlc3QyIHN0YXR1cyB0ZXh0OiBFcnJvciBmcm9tIHNlcnZpY2Ugd29ya2VyCitDT05TT0xFIE1F
U1NBR0U6IGxpbmUgMjY6IHRlc3QzIGZldGNoIGZhaWxlZCBhcyBleHBlY3RlZAorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1mZXRjaC5o
dHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvYmFzaWMt
ZmV0Y2guaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MmEwNjZhYzk4ZWY3OGI4ODRmNWZjYWU0NmE5
NDE4YTU4YTVjYmFkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
b3JrZXJzL3NlcnZpY2UvYmFzaWMtZmV0Y2guaHR0cHMuaHRtbApAQCAtMCwwICsxLDkgQEAKKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3N3LXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2Jhc2ljLWZl
dGNoLmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9iYXNpYy1mZXRjaC13b3Jr
ZXIuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMv
YmFzaWMtZmV0Y2gtd29ya2VyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI5ZDhhMmJkMzAxNWNhZTRhNGE0ODU2
YTI0ZjM5YWY4NmMxNmQxNzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvYmFzaWMtZmV0Y2gtd29ya2VyLmpzCkBAIC0w
LDAgKzEgQEAKKy8vIEZJWE1FOiByZWdpc3RlciBhbiBvbmZldGNoIGV2ZW50IGhhbmRsZXIgYW5k
IGhhbmRsZSAidGVzdDEiLCAidGVzdDIiIGFuZCAidGVzdDMiIFVSTHMKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9iYXNpYy1mZXRj
aC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9i
YXNpYy1mZXRjaC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yODc0M2EyNjQyOWIxNzc3YjI0Y2I3NjEyNWY4MDAz
Y2M5YzQ4ZDRkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3Jr
ZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2ljLWZldGNoLmpzCkBAIC0wLDAgKzEsMzQgQEAKK2Z1
bmN0aW9uIGRvbmUoKQoreworICAgIGZpbmlzaFNXVGVzdCgpOworfQorCithc3luYyBmdW5jdGlv
biB0ZXN0KCkKK3sKKyAgICB0cnkgeworICAgICAgICBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdv
cmtlci5yZWdpc3RlcigicmVzb3VyY2VzL2Jhc2ljLWZldGNoLXdvcmtlci5qcyIsIHsgfSk7CisK
KyAgICAgICAgdmFyIHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goInRlc3QxIik7CisgICAgICAgIGNv
bnNvbGUubG9nKCJ0ZXN0MSBzdGF0dXMgY29kZTogIiArIHJlc3BvbnNlLnN0YXR1cyk7CisgICAg
ICAgIGNvbnNvbGUubG9nKCJ0ZXN0MSBzdGF0dXMgdGV4dDogIiArIHJlc3BvbnNlLnN0YXR1c1Rl
eHQpOworCisgICAgICAgIHZhciByZXNwb25zZSA9IGF3YWl0IGZldGNoKCJ0ZXN0MiIpOworICAg
ICAgICBjb25zb2xlLmxvZygidGVzdDIgc3RhdHVzIGNvZGU6ICIgKyByZXNwb25zZS5zdGF0dXMp
OworICAgICAgICBjb25zb2xlLmxvZygidGVzdDIgc3RhdHVzIHRleHQ6ICIgKyByZXNwb25zZS5z
dGF0dXNUZXh0KTsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgcmVzcG9uc2UgPSBhd2Fp
dCBmZXRjaCgidGVzdDMiKTsKKyAgICAgICAgICAgIGNvbnNvbGUubG9nKCJ0ZXN0MyBmZXRjaCBz
dWNjZWVkZWQgdW5leHBlY3RlZGx5Iik7CisgICAgICAgICAgICBjb25zb2xlLmxvZygidGVzdDMg
c3RhdHVzIGNvZGU6ICIgKyByZXNwb25zZS5zdGF0dXMpOworICAgICAgICAgICAgY29uc29sZS5s
b2coInRlc3QzIHN0YXR1cyB0ZXh0OiAiICsgcmVzcG9uc2Uuc3RhdHVzVGV4dCk7CisKKyAgICAg
ICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgY29uc29sZS5sb2coInRlc3QzIGZldGNoIGZh
aWxlZCBhcyBleHBlY3RlZCIpOworICAgICAgICB9CisgICAgfSBjYXRjaChlKSB7CisgICAgICAg
IGNvbnNvbGUubG9nKCJHb3QgZXhjZXB0aW9uOiAiICsgZSk7CisgICAgfQorICAgIGZpbmlzaFNX
VGVzdCgpOworfQorCit0ZXN0KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324150</attachid>
            <date>2017-10-18 12:47:27 -0700</date>
            <delta_ts>2017-10-18 12:59:00 -0700</delta_ts>
            <desc>GTK fix try</desc>
            <filename>bug-178475-20171018124726.patch</filename>
            <type>text/plain</type>
            <size>91482</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzNjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmViOTQ5MjMwM2Q1Y2Vh
ZWRkYzcxNjZiMGYwZDEyM2E5ZTA2MzMyMy4uMzQ5ZjcwMjU3YzExYTcyODBkZGE4NjMwYjRjN2Vk
ZjNmOTJiZjNkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE3LTEwLTE4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgcHJlbGltaW5hcnkg
c3VwcG9ydCBmb3IgU2VydmljZVdvcmtlciBIYW5kbGUgRmV0Y2gKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODQ3NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvd29ya2Vycy9z
ZXJ2aWNlL2Jhc2ljLWZldGNoLmh0dHBzLmh0bWwKKworICAgICAgICBBZGRpbmcgcGFyYW1ldGVy
cyB0byBhbGxvdyBXZWJLaXQgdG8gZG8gbG9hZGluZyB0aHJvdWdoIFNlcnZpY2UgV29ya2VyIG9y
IHRocm91Z2ggcmVndWxhciBuZXR3b3JraW5nLgorICAgICAgICBBIHNjcmlwdCBjb250ZXh0IGlz
IG5vdyBzdG9yaW5nIGl0cyBzZWxlY3RlZCBzZXJ2aWNlIHdvcmtlciBpZGVudGlmZXIuIFRoaXMg
c2hvdWxkIGJlIGZ1bGx5IGltcGxlbWVudGVkIGxhdGVyIG9uLgorICAgICAgICBUaGlzIHNlbGVj
dGVkIHNlcnZpY2Ugd29ya2VyIGlkZW50aWZpZXIgaXMgcGFzc2VkIHRvIGxvYWRpbmcgY29kZSBh
cyBhIFJlc291cmNlTG9hZGVyT3B0aW9ucyBmaWVsZC4KKyAgICAgICAgU2VydmljZSB3b3JrZXJz
IG1vZGUgaXMgYWxzbyBhZGRlZCBhcyBhIFJlc291cmNlTG9hZGVyT3B0aW9ucyBmaWVsZCBzbyB0
aGF0IHRoZSBzZXJ2aWNlIHdvcmtlciBjYW4gYmUgYnlwYXNzZWQuCisKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OnNlbGVjdGVkU2VydmljZVdvcmtlcklkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c2V0U2VsZWN0ZWRTZXJ2aWNlV29ya2VySWRlbnRp
Zmllcik6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OkRvY3VtZW50VGhyZWFk
YWJsZUxvYWRlcik6CisgICAgICAgICogbG9hZGVyL0ZldGNoT3B0aW9ucy5oOgorICAgICAgICAo
V2ViQ29yZTo6aXNQb3RlbnRpYWxOYXZpZ2F0aW9uT3JTdWJyZXNvdXJjZVJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6aXNOb25TdWJyZXNvdXJjZVJlcXVlc3QpOgorICAgICAgICAqIGxvYWRl
ci9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaDoKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFk
YWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVy
OjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVh
ZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Ok1haW5UaHJlYWRCcmlkZ2UpOgorICAgICAg
ICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFk
Lmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRX
aXRoUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
clByb3ZpZGVyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0
TWFuYWdlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlclRocmVhZC5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXIuaDoKKwogMjAxNy0xMC0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgogCiAgICAgICAgIEFkZCBhbiBlZmZpY2llbnQgZGF0YSBzdHJ1Y3R1cmUgZm9yIFdlYkNvcmUg
dG8gcXVlcnkgaWYgdGhlcmUgaXMgYSBTZXJ2aWNlIFdvcmtlciByZWdpc3RlcmVkIGZvciBhIGdp
dmVuIG9yaWdpbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCA1MGNkNjQyOGEyYTBjYmJmOTNhZmQ4M2ZiOGMzNjBkMmFj
MzA1ZjAyLi4xYTI5OGQwYWY1Y2ZkOTZiNzk5MTczOTkyZTRmZjA5NjE4YWRmMTkwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDg2IEBACisyMDE3LTEwLTE4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KKworICAgICAgICBBZGQgcHJlbGltaW5hcnkgc3VwcG9ydCBmb3IgU2VydmljZVdv
cmtlciBIYW5kbGUgRmV0Y2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3ODQ3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFByZWxpbWluYXJ5IHN1cHBvcnQgb2YgSGFuZGxlIEZldGNoIGFsZ29yaXRobSBh
bmQgaW50ZWdyYXRpb24gd2l0aCBmZXRjaCBzcGVjLgorICAgICAgICBBZGRpbmcgU2VydmljZVdv
cmtlckNsaWVudEZldGNoIGFzIHRoZSBjbGFzcyByZXNwb25zaWJsZSB0byBkbyB0aGUgbG9hZCB0
aHJvdWdoIFNlcnZpY2VXb3JrZXIuCisgICAgICAgIEl0IGlzIHNpbWlsYXIgdG8gV2ViUmVzb3Vy
Y2VMb2FkZXIgdGhhdCBkbyB0aGUgbG9hZCB0aHJvdWdoIE5ldHdvcmtQcm9jZXNzLgorICAgICAg
ICBJbiBjYXNlIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaCBpcyBub3QgYWJsZSB0byBsb2FkIHRo
cm91Z2ggU2VydmljZVdvcmtlciwKKyAgICAgICAgaXQgd2lsbCBmYWxsYmFjayB0byBXZWJSZXNv
dXJjZUxvYWRlciB0aHJvdWdoIGEgZmFsbGJhY2sgY2FsbGJhY2suCisKKyAgICAgICAgTG9hZGlu
ZyB0aHJvdWdoIFNlcnZpY2UgV29ya2VyIGlzIGRvbmUgY3VycmVudGx5IGlmOgorICAgICAgICAt
IFRoZXJlIGlzIGEgc2VydmljZSB3b3JrZXIgcmVnaXN0ZXJlZCBmb3IgdGhhdCBvcmlnaW4KKyAg
ICAgICAgLSBSZXF1ZXN0IGlzIGEgc3VicmVzb3VyY2UKKyAgICAgICAgLSBzZXJ2aWNlIHdvcmtl
cnMgbW9kZSBpcyBhbGwKKyAgICAgICAgVGhlcmUgd2lsbCBiZSBjYXNlcyB3aGVyZSB0aGUgc2Vy
dmljZSB3b3JrZXIgd2lsbCBub3QgZG8gdGhlIGxvYWRpbmcsIGZvciBpbnN0YW5jZSB3aGVuIGZl
dGNoIGV2ZW50IGhhbmRsZXIgaXMgbm90IHNldC4KKyAgICAgICAgRnV0dXJlIHdvcmsgc2hvdWxk
IHRyeSB0byByZWR1Y2UgdGhlIGNhc2VzIHdoZXJlIHRoZSBJUEMgZGFuc2UgaXMgZG9uZSB1bm5l
Y2Vzc2FyaWx5LgorCisgICAgICAgIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaCBpcyByZXNwb25z
aWJsZSB0byBhZGFwdCB0aGUgU2VydmljZVdvcmtlciByZXNwb25zZSB0byBSZXNvdXJjZUxvYWRl
ci4KKyAgICAgICAgSW4gcGFydGljdWxhciwgaXQgaXMgY2FsbGluZyBSZXNvdXJjZUxvYWRlciBl
cnJvciBjYWxsYmFjayBpZiByZXNwb25zZSBpcyBvZiB0eXBlIGVycm9yLgorICAgICAgICBJdCBp
cyBjYWxsaW5nIFJlc291cmNlTG9hZGVyIHJlZGlyZWN0aW9uIGNhbGxiYWNrIGlmIHJlc3BvbnNl
IGlzIGEgcmVkaXJlY3Rpb24gcmVzcG9uc2UuCisKKyAgICAgICAgSW1wbGVtZW50aW5nIHRoZSBJ
UEMgY29tbXVuaWNhdGlvbiBkZWRpY2F0ZWQgdG8gZmV0Y2ggYmV0d2VlbiBXZWJQcm9jZXNzIGFu
ZCBTZXJ2aWNlV29ya2VyIHRocm91Z2ggU3RvcmFnZVByb2Nlc3MuCisgICAgICAgIEluIHRoZSBm
dXR1cmUsIFdlYlByb2Nlc3Mgc2hvdWxkIGNyZWF0ZSBhIGRpcmVjdCBJUEMgY29tbXVuaWNhdGlv
biB0byB0aGUgU2VydmljZVdvcmtlciBwcm9jZXNzLgorCisgICAgICAgIE1vdmVkIFNXQ29udGV4
dE1hbmFnZXIgZnJvbSBXZWJDb3JlIHRvIFdlYktpdCBhbmQgcmVuYW1lZCBpdCB0byBTZXJ2aWNl
V29ya2VyQ29udGV4dE1hbmFnZXIuCisgICAgICAgIFRoaXMgY2xhc3MgaXMgbW92ZWQgdG8gV2Vi
S2l0IGFzIGl0IHdpbGwgaGF2ZSB0byBoYW5kbGUgSVBDIGFuZCBoYXZpbmcgYSBzZXBhcmF0aW9u
IHdpbGwgYWRkIHNvbWUgdW5uZWNlc3NhcnkgYm9pbGVycGxhdGUuCisKKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpzdGFydEZldGNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uOjpkaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNX
U2VydmVyQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUZldGNoRGF0YSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6ZGlkRmluaXNoRmV0Y2gpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OmZhaWxlZEZldGNoKToKKyAgICAgICAgKiBTdG9yYWdl
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oOgorICAgICAgICAq
IFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OmZhaWxlZEZldGNoKToKKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZVByb2Nlc3M6OmRpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKToKKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OmRpZFJlY2VpdmVGZXRjaERhdGEpOgorICAgICAgICAo
V2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6ZGlkRmluaXNoRmV0Y2gpOgorICAgICAgICAqIFN0b3Jh
Z2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmg6CisgICAgICAgICogU3RvcmFnZVByb2Nlc3MvU3Rv
cmFnZVByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0
ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9h
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9t
TmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJT
dHJhdGVneS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xp
ZW50RmV0Y2guY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6c2hvdWxkUmVkaXJlY3RBc0dF
VCk6CisgICAgICAgIChXZWJLaXQ6OmNvbXB1dGVOZXdSZXF1ZXN0KToKKyAgICAgICAgKFdlYktp
dDo6c2hvdWxkUmVkaXJlY3QpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyQ2xpZW50
RmV0Y2g6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3Jr
ZXJDbGllbnRGZXRjaDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNl
V29ya2VyQ2xpZW50RmV0Y2g6OmRpZEZpbmlzaEZldGNoKToKKyAgICAgICAgKFdlYktpdDo6U2Vy
dmljZVdvcmtlckNsaWVudEZldGNoOjpkaWRGYWlsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0
b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gubWVzc2FnZXMuaW46IEFkZGVk
LgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFn
ZXIuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU1dDb250ZXh0TWFuYWdlci5jcHAuCisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJD
b250ZXh0TWFuYWdlcjo6c3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4dCk6CisgICAgICAgIChXZWJL
aXQ6OlNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlcjo6c3RhcnRGZXRjaCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFu
YWdlci5oLgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXI6OlNl
cnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50
Q29ubmVjdGlvbjo6c3RhcnRGZXRjaCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ2xpZW50Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
ZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpzaG91bGRIYW5kbGVG
ZXRjaCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6aGFuZGxl
RmV0Y2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OmRpZFJl
Y2VpdmVTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjpnZXRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3M6OnN0YXJ0U2VydmljZVdvcmtlckNvbnRleHQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpzdGFydEZldGNoSW5TZXJ2aWNlV29ya2VyKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW46CisKIDIwMTctMTAtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBBZGQgYW4gZWZmaWNpZW50IGRhdGEgc3RydWN0dXJlIGZvciBXZWJDb3Jl
IHRvIHF1ZXJ5IGlmIHRoZXJlIGlzIGEgU2VydmljZSBXb3JrZXIgcmVnaXN0ZXJlZCBmb3IgYSBn
aXZlbiBvcmlnaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBkNWE5MjA0OTQ5ZDhiYmU4ZGJhYjY5MDY5OTY5NmVlOTQ1Mzg3ZTk0
Li43M2Q1MmNhMzUwYmNlOGUzNWFhOTk1ODJjNThlZjdlM2YyNmJiNzdiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMzM2LDgg
KzIzMzYsNiBAQAogCQk1MTdBNjNDNjFCNzQzMTkyMDBFN0RDREMgLyogS2V5ZWRFbmNvZGVyQ0Yu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0E2M0My
MUI3NDMxN0UwMEU3RENEQyAvKiBLZXllZEVuY29kZXJDRi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxN0IyNUE5MUNDODJCMkEwMDYxQzAxMSAv
KiBJREJDb25uZWN0aW9uUHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE3QjI1QTcxQ0M4MjAzMjAwNjFDMDExIC8qIElEQkNvbm5lY3Rpb25Q
cm94eS5jcHAgKi87IH07CiAJCTUxN0IyNUFBMUNDODJCMkEwMDYxQzAxMSAvKiBJREJDb25uZWN0
aW9uUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxN0IyNUE4MUNDODIwMzIwMDYxQzAxMSAvKiBJREJDb25uZWN0aW9uUHJveHkuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MTdDODcwQTFGOEVC
QjI1MDBFQjgwNzYgLyogU1dDb250ZXh0TWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdDODcwODFGOEVCOUJGMDBFQjgwNzYgLyogU1dD
b250ZXh0TWFuYWdlci5jcHAgKi87IH07Ci0JCTUxN0M4NzBCMUY4RUJCMjUwMEVCODA3NiAvKiBT
V0NvbnRleHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTdDODcwOTFGOEVCOUMwMDBFQjgwNzYgLyogU1dDb250ZXh0TWFuYWdlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxN0M4NzE4
MUY4RkQ0RDkwMEVCODA3NiAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3Qzg3MTYxRjhGRDREMzAw
RUI4MDc2IC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAgKi87IH07CiAJCTUxN0RFRUU1
MURFOTRBREMwMEI5MTY0NCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdERUVFMzFERTk0
QURDMDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tICovOyB9Owog
CQk1MTdERUVFODFERTk0QjA4MDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
TWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdE
RUVFNzFERTk0QjA4MDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwMjY5
LDggKzEwMjY3LDYgQEAKIAkJNTE3QTYzQzIxQjc0MzE3RTAwRTdEQ0RDIC8qIEtleWVkRW5jb2Rl
ckNGLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtleWVkRW5jb2RlckNGLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0IyNUE3MUNDODIwMzIwMDYxQzAxMSAv
KiBJREJDb25uZWN0aW9uUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSURCQ29ubmVjdGlvblByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTE3QjI1QTgxQ0M4MjAzMjAwNjFDMDExIC8qIElEQkNvbm5lY3Rpb25Qcm94eS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJDb25uZWN0aW9uUHJveHkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE3Qzg3MDgxRjhFQjlCRjAwRUI4MDc2IC8qIFNXQ29u
dGV4dE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU1dD
b250ZXh0TWFuYWdlci5jcHA7IHBhdGggPSB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRl
eHRNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwotCQk1MTdDODcwOTFG
OEVCOUMwMDBFQjgwNzYgLyogU1dDb250ZXh0TWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBTV0NvbnRleHRNYW5hZ2VyLmg7IHBhdGggPSB3b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsK
IAkJNTE3Qzg3MTAxRjhFRTcyRTAwRUI4MDc2IC8qIFNlcnZpY2VXb3JrZXJUaHJlYWQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU2VydmljZVdvcmtlclRocmVhZC5oOyBwYXRo
ID0gd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oOyBzb3VyY2VU
cmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTUxN0M4NzExMUY4RUU3MkYwMEVCODA3NiAvKiBTZXJ2
aWNlV29ya2VyVGhyZWFkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IFNlcnZpY2VXb3JrZXJUaHJlYWQuY3BwOyBwYXRoID0gd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlclRocmVhZC5jcHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJ
NTE3Qzg3MTYxRjhGRDREMzAwRUI4MDc2IC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTkxMDUsOCArMTkxMDEs
NiBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNTE3Qzg3MTExRjhFRTcyRjAwRUI4MDc2IC8qIFNl
cnZpY2VXb3JrZXJUaHJlYWQuY3BwICovLAogCQkJCTUxN0M4NzEwMUY4RUU3MkUwMEVCODA3NiAv
KiBTZXJ2aWNlV29ya2VyVGhyZWFkLmggKi8sCi0JCQkJNTE3Qzg3MDgxRjhFQjlCRjAwRUI4MDc2
IC8qIFNXQ29udGV4dE1hbmFnZXIuY3BwICovLAotCQkJCTUxN0M4NzA5MUY4RUI5QzAwMEVCODA3
NiAvKiBTV0NvbnRleHRNYW5hZ2VyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNvbnRleHQ7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzA2MDAsNyArMzA1OTQsNiBAQAogCQkJCUIy
MjI3QUY2MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdab29tQW5kUGFuLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMkU0RUM5ODBEMDBDMjJCMDA0MzI2NDMgLyogU1ZHWm9vbUV2ZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MTdBNTMxRDFGNEI1M0IxMDBEQ0RDMEEgLyogU1dDbGllbnRDb25uZWN0aW9u
LmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTdDODcwQjFGOEVCQjI1MDBFQjgwNzYgLyogU1dDb250
ZXh0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE3QTUyRjAxRjQ3NTM1QjAwRENEQzBB
IC8qIFNXU2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUY2NDU5NzFGNEE2ODZGMDBCNTRE
RUQgLyogU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTUxN0E1MzQ2
MUY1MEMxN0YwMERDREMwQSAvKiBTV1NlcnZlcldvcmtlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0z
NDQxMSw3ICszNDQwNCw2IEBACiAJCQkJQjIyMjdBRjUwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1pv
b21BbmRQYW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJFNEVDOTcwRDAwQzIyQjAwNDMyNjQz
IC8qIFNWR1pvb21FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTdBNTMxQzFGNEI1M0Ix
MDBEQ0RDMEEgLyogU1dDbGllbnRDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUx
N0M4NzBBMUY4RUJCMjUwMEVCODA3NiAvKiBTV0NvbnRleHRNYW5hZ2VyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTUxN0E1MkYxMUY0NzU0RTcwMERDREMwQSAvKiBTV1NlcnZlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1MUY2NDU5NjFGNEE2ODZGMDBCNTRERUQgLyogU1dTZXJ2ZXJSZWdpc3Ry
YXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE3QTUzNDUxRjUwQzE3RjAwRENEQzBBIC8q
IFNXU2VydmVyV29ya2VyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggMzJmMTljMzAzZmYwOWMwMzM4MGE0ZjE5MWEy
MDRiMDA5YzBiOWY2MS4uOTY2ZDllN2IyNjIxYjE2MGQwYmM0ODdjMWQ3ODU0YzJjYTdhNGFlMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0yMzAs
NiArMjMwLDExIEBAIHB1YmxpYzoKIAogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGUoKTsK
IAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICB1aW50NjRfdCBzZWxlY3RlZFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VySWRlbnRp
ZmllcjsgfQorICAgIHZvaWQgc2V0U2VsZWN0ZWRTZXJ2aWNlV29ya2VySWRlbnRpZmllcih1aW50
NjRfdCBpZGVudGlmaWVyKSB7IG1fc2VydmljZVdvcmtlcklkZW50aWZpZXIgPSBpZGVudGlmaWVy
OyB9CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIGNsYXNzIEFkZENvbnNvbGVNZXNzYWdlVGFz
ayA6IHB1YmxpYyBUYXNrIHsKICAgICBwdWJsaWM6CkBAIC0yOTcsNiArMzAyLDggQEAgcHJpdmF0
ZToKICNpZiAhQVNTRVJUX0RJU0FCTEVEIHx8IEVOQUJMRShTRUNVUklUWV9BU1NFUlRJT05TKQog
ICAgIGJvb2wgbV9hY3RpdmVET01PYmplY3RSZW1vdmFsRm9yYmlkZGVuIHsgZmFsc2UgfTsKICNl
bmRpZgorCisgICAgdWludDY0X3QgbV9zZXJ2aWNlV29ya2VySWRlbnRpZmllciB7IDAgfTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggOTAyYzg5ZTM5NzM3YzQxMTQxZTM1
YzJjZTQyZTkyNjY5NzQwYzI5ZS4uNGI0OGY1MWVjMDE3NWZjNmYwMWVlYjRjZTFjOTE3YmYyMDNm
ZTg3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHAKQEAgLTEwMyw2ICsxMDMsMTEgQEAgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
OjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBUaHJlYWRhYmwK
IHsKICAgICByZWxheEFkb3B0aW9uUmVxdWlyZW1lbnQoKTsKIAorI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKKyAgICBpZiAobV9vcHRpb25zLnNlcnZpY2VXb3JrZXJzTW9kZSA9PSBTZXJ2aWNl
V29ya2Vyc01vZGU6OkFsbCAmJiAhbV9vcHRpb25zLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQor
ICAgICAgICBtX29wdGlvbnMuc2VydmljZVdvcmtlcklkZW50aWZpZXIgPSBkb2N1bWVudC5zZWxl
Y3RlZFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCk7CisjZW5kaWYKKwogICAgIC8vIFNldHRpbmcg
YSByZWZlcnJlciBoZWFkZXIgaXMgb25seSBzdXBwb3J0ZWQgaW4gdGhlIGFzeW5jIGNvZGUgcGF0
aC4KICAgICBBU1NFUlQobV9hc3luYyB8fCBtX3JlZmVycmVyLmlzRW1wdHkoKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GZXRjaE9wdGlvbnMuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GZXRjaE9wdGlvbnMuaAppbmRleCBhNDA0MjAzMDc3NDQwNDJmMWFjMjc2MmQ2
MzIzNjlmOWVhY2I1MTI0Li43M2I5NjI0Yzg2MDkxNmRlYjk5Mzc3NGNhZjgyOGY5NzRmN2QyMTc5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRmV0Y2hPcHRpb25zLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZldGNoT3B0aW9ucy5oCkBAIC02OSw2ICs2OSwyMSBAQCBp
bmxpbmUgRmV0Y2hPcHRpb25zOjpGZXRjaE9wdGlvbnMoRGVzdGluYXRpb24gZGVzdGluYXRpb24s
IE1vZGUgbW9kZSwgQ3JlZGVudGlhbAogewogfQogCitpbmxpbmUgYm9vbCBpc1BvdGVudGlhbE5h
dmlnYXRpb25PclN1YnJlc291cmNlUmVxdWVzdChGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uIGRl
c3RpbmF0aW9uKQoreworICAgIHJldHVybiBkZXN0aW5hdGlvbiA9PSBGZXRjaE9wdGlvbnM6OkRl
c3RpbmF0aW9uOjpPYmplY3QKKyAgICAgICAgfHwgZGVzdGluYXRpb24gPT0gRmV0Y2hPcHRpb25z
OjpEZXN0aW5hdGlvbjo6RW1iZWQ7Cit9CisKK2lubGluZSBib29sIGlzTm9uU3VicmVzb3VyY2VS
ZXF1ZXN0KEZldGNoT3B0aW9uczo6RGVzdGluYXRpb24gZGVzdGluYXRpb24pCit7CisgICAgcmV0
dXJuIGRlc3RpbmF0aW9uID09IEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OkRvY3VtZW50Cisg
ICAgICAgIHx8IGRlc3RpbmF0aW9uID09IEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OlJlcG9y
dAorICAgICAgICB8fCBkZXN0aW5hdGlvbiA9PSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpT
ZXJ2aWNld29ya2VyCisgICAgICAgIHx8IGRlc3RpbmF0aW9uID09IEZldGNoT3B0aW9uczo6RGVz
dGluYXRpb246OlNoYXJlZHdvcmtlcgorICAgICAgICB8fCBkZXN0aW5hdGlvbiA9PSBGZXRjaE9w
dGlvbnM6OkRlc3RpbmF0aW9uOjpXb3JrZXI7Cit9CisKIH0KIAogbmFtZXNwYWNlIFdURiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgKaW5kZXggZDJh
OTJjM2QzZGNmODJlNThmMjJkMDM1Y2JjN2ZkMGIyNTA1NmYzZS4uNWM1YTBkNDI3YjRlOTk2MGJi
N2M1YzdkMWYxZmFjZTU5YTQ0NTRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlck9wdGlvbnMuaApAQCAtOTIsNiArOTIsMTEgQEAgZW51bSBjbGFzcyBJbml0aWF0
b3JDb250ZXh0IHsKICAgICBXb3JrZXIsCiB9OwogCitlbnVtIGNsYXNzIFNlcnZpY2VXb3JrZXJz
TW9kZSB7CisgICAgQWxsLAorICAgIE5vbmUsCit9OworCiBzdHJ1Y3QgUmVzb3VyY2VMb2FkZXJP
cHRpb25zIDogcHVibGljIEZldGNoT3B0aW9ucyB7CiAgICAgUmVzb3VyY2VMb2FkZXJPcHRpb25z
KCkgeyB9CiAKQEAgLTEyNCw2ICsxMjksOCBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkZXJPcHRpb25z
IDogcHVibGljIEZldGNoT3B0aW9ucyB7CiAgICAgQ2FjaGluZ1BvbGljeSBjYWNoaW5nUG9saWN5
IHsgQ2FjaGluZ1BvbGljeTo6QWxsb3dDYWNoaW5nIH07CiAgICAgU2FtZU9yaWdpbkRhdGFVUkxG
bGFnIHNhbWVPcmlnaW5EYXRhVVJMRmxhZyB7IFNhbWVPcmlnaW5EYXRhVVJMRmxhZzo6VW5zZXQg
fTsKICAgICBJbml0aWF0b3JDb250ZXh0IGluaXRpYXRvckNvbnRleHQgeyBJbml0aWF0b3JDb250
ZXh0OjpEb2N1bWVudCB9OworICAgIFNlcnZpY2VXb3JrZXJzTW9kZSBzZXJ2aWNlV29ya2Vyc01v
ZGUgeyBTZXJ2aWNlV29ya2Vyc01vZGU6OkFsbCB9OworICAgIHVpbnQ2NF90IHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHsgMCB9OwogCiAgICAgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGllbnRD
cmVkZW50aWFsUG9saWN5IHsgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xpZW50
Rm9yQ3JlZGVudGlhbHMgfTsKICAgICB1bnNpZ25lZCBtYXhSZWRpcmVjdENvdW50IHsgMjAgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApp
bmRleCAzM2JiMTJlODFiOGExYzQ5YTBhODY3OTFiOTVkYzhhMjVlNjVjM2U4Li5lMjdhYWE4ZGI0
YzRiNmExMzY1ZjA4Y2VhYWI0MmUzODhmN2FlYTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC01NSw3ICs1NSw3IEBAIHN0YXRp
YyBjb25zdCBjaGFyIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHlNb2RlW10gPSAibG9hZFJlc291
cmNlU3luY2hyb25vdXNseU1vCiBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpXb3JrZXJUaHJlYWRh
YmxlTG9hZGVyKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSwgVGhyZWFkYWJs
ZUxvYWRlckNsaWVudCYgY2xpZW50LCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLCBSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucywg
Y29uc3QgU3RyaW5nJiByZWZlcnJlcikKICAgICA6IG1fd29ya2VyR2xvYmFsU2NvcGUod29ya2Vy
R2xvYmFsU2NvcGUpCiAgICAgLCBtX3dvcmtlckNsaWVudFdyYXBwZXIoVGhyZWFkYWJsZUxvYWRl
ckNsaWVudFdyYXBwZXI6OmNyZWF0ZShjbGllbnQsIG9wdGlvbnMuaW5pdGlhdG9yKSkKLSAgICAs
IG1fYnJpZGdlKCpuZXcgTWFpblRocmVhZEJyaWRnZShtX3dvcmtlckNsaWVudFdyYXBwZXIuZ2V0
KCksIHdvcmtlckdsb2JhbFNjb3BlLnRocmVhZCgpLndvcmtlckxvYWRlclByb3h5KCksIHRhc2tN
b2RlLCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCByZWZlcnJlci5pc0VtcHR5KCkgPyB3b3Jr
ZXJHbG9iYWxTY29wZS51cmwoKS5zdHJpcHBlZEZvclVzZUFzUmVmZXJyZXIoKSA6IHJlZmVycmVy
LCB3b3JrZXJHbG9iYWxTY29wZS5zZWN1cml0eU9yaWdpbigpLCB3b3JrZXJHbG9iYWxTY29wZS5j
b250ZW50U2VjdXJpdHlQb2xpY3koKSkpCisgICAgLCBtX2JyaWRnZSgqbmV3IE1haW5UaHJlYWRC
cmlkZ2UobV93b3JrZXJDbGllbnRXcmFwcGVyLmdldCgpLCB3b3JrZXJHbG9iYWxTY29wZS50aHJl
YWQoKS53b3JrZXJMb2FkZXJQcm94eSgpLCB0YXNrTW9kZSwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0
aW9ucywgcmVmZXJyZXIuaXNFbXB0eSgpID8gd29ya2VyR2xvYmFsU2NvcGUudXJsKCkuc3RyaXBw
ZWRGb3JVc2VBc1JlZmVycmVyKCkgOiByZWZlcnJlciwgd29ya2VyR2xvYmFsU2NvcGUpKQogewog
fQogCkBAIC0xMDEsMTIgKzEwMSwxNSBAQCBMb2FkZXJUYXNrT3B0aW9uczo6TG9hZGVyVGFza09w
dGlvbnMoY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIGNvbgogfQogCiBX
b3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdl
KFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyJiB3b3JrZXJDbGllbnRXcmFwcGVyLCBXb3Jr
ZXJMb2FkZXJQcm94eSYgbG9hZGVyUHJveHksIGNvbnN0IFN0cmluZyYgdGFza01vZGUsCi0gICAg
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMm
IG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgb3V0Z29pbmdSZWZlcnJlciwKLSAgICBjb25zdCBTZWN1
cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeSog
Y29udGVudFNlY3VyaXR5UG9saWN5KQorICAgIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNv
bnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIG91dGdv
aW5nUmVmZXJyZXIsIFdvcmtlckdsb2JhbFNjb3BlJiBnbG9iYWxTY29wZSkKICAgICA6IG1fd29y
a2VyQ2xpZW50V3JhcHBlcigmd29ya2VyQ2xpZW50V3JhcHBlcikKICAgICAsIG1fbG9hZGVyUHJv
eHkobG9hZGVyUHJveHkpCiAgICAgLCBtX3Rhc2tNb2RlKHRhc2tNb2RlLmlzb2xhdGVkQ29weSgp
KQogeworCisgICAgYXV0byogc2VjdXJpdHlPcmlnaW4gPSBnbG9iYWxTY29wZS5zZWN1cml0eU9y
aWdpbigpOworICAgIGF1dG8qIGNvbnRlbnRTZWN1cml0eVBvbGljeSA9IGdsb2JhbFNjb3BlLmNv
bnRlbnRTZWN1cml0eVBvbGljeSgpOworCiAgICAgQVNTRVJUKHNlY3VyaXR5T3JpZ2luKTsKICAg
ICBBU1NFUlQoY29udGVudFNlY3VyaXR5UG9saWN5KTsKIApAQCAtMTIxLDYgKzEyNCwxMSBAQCBX
b3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdl
KFRocmVhZGFibGVMb2FkZXJDbGllbgogICAgIEFTU0VSVChvcHRpb25zQ29weS0+b3B0aW9ucy5p
bml0aWF0b3JDb250ZXh0ID09IEluaXRpYXRvckNvbnRleHQ6OkRvY3VtZW50KTsKICAgICBvcHRp
b25zQ29weS0+b3B0aW9ucy5pbml0aWF0b3JDb250ZXh0ID0gSW5pdGlhdG9yQ29udGV4dDo6V29y
a2VyOwogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIG9wdGlvbnNDb3B5LT5vcHRp
b25zLnNlcnZpY2VXb3JrZXJzTW9kZSA9IGdsb2JhbFNjb3BlLmlzU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlKCkgPyBTZXJ2aWNlV29ya2Vyc01vZGU6Ok5vbmUgOiBTZXJ2aWNlV29ya2Vyc01vZGU6
OkFsbDsKKyAgICBvcHRpb25zQ29weS0+b3B0aW9ucy5zZXJ2aWNlV29ya2VySWRlbnRpZmllciA9
IGdsb2JhbFNjb3BlLnNlbGVjdGVkU2VydmljZVdvcmtlcklkZW50aWZpZXIoKTsKKyNlbmRpZgor
CiAgICAgLy8gQ2FuIHdlIGJlbmVmaXQgZnJvbSByZXF1ZXN0IGJlaW5nIGFuIHItdmFsdWUgdG8g
Y3JlYXRlIG1vcmUgZWZmaWNpZW50bHkgaXRzIGlzb2xhdGVkIGNvcHk/CiAgICAgbV9sb2FkZXJQ
cm94eS5wb3N0VGFza1RvTG9hZGVyKFt0aGlzLCByZXF1ZXN0ID0gcmVxdWVzdC5pc29sYXRlZENv
cHkoKSwgb3B0aW9ucyA9IFdURk1vdmUob3B0aW9uc0NvcHkpLCBjb250ZW50U2VjdXJpdHlQb2xp
Y3lDb3B5ID0gV1RGTW92ZShjb250ZW50U2VjdXJpdHlQb2xpY3lDb3B5KV0oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJs
ZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIu
aAppbmRleCA5N2VjMmQ0MWY5ZDllMDFkY2JiNzE3OWM2MjNkYjczYWIxYzVhMzU0Li4yMmFiMTQ5
ZmVmNzQ3MzdlZmI2NGRiOWRjYzdmMTYxMGRmNTFmYmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgKQEAgLTg4LDcgKzg4LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBjbGFzcyBNYWluVGhyZWFkQnJpZGdlIDogcHVibGljIFRo
cmVhZGFibGVMb2FkZXJDbGllbnQgewogICAgICAgICBwdWJsaWM6CiAgICAgICAgICAgICAvLyBB
bGwgZXhlY3V0ZWQgb24gdGhlIHdvcmtlciBjb250ZXh0J3MgdGhyZWFkLgotICAgICAgICAgICAg
TWFpblRocmVhZEJyaWRnZShUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlciYsIFdvcmtlckxv
YWRlclByb3h5JiwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNv
bnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiwgY29uc3QgU3RyaW5nJiBvdXRnb2luZ1JlZmVy
cmVyLCBjb25zdCBTZWN1cml0eU9yaWdpbiosIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeSop
OworICAgICAgICAgICAgTWFpblRocmVhZEJyaWRnZShUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3Jh
cHBlciYsIFdvcmtlckxvYWRlclByb3h5JiwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSwgUmVzb3Vy
Y2VSZXF1ZXN0JiYsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiwgY29uc3QgU3RyaW5n
JiBvdXRnb2luZ1JlZmVycmVyLCBXb3JrZXJHbG9iYWxTY29wZSYpOwogICAgICAgICAgICAgdm9p
ZCBjYW5jZWwoKTsKICAgICAgICAgICAgIHZvaWQgZGVzdHJveSgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCmluZGV4
IGI1ZTk0OGVhZWVjMWZkOTBkZGJlNjk4Zjk2NmZiYzdlODVjZTljZGQuLmRhNmFkNjVmMTE4MjBh
NTJlZTU0MTI4ZjM3MDdjZWUwMGY0MTc0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCkBAIC0xMDAsNyArMTAwLDcg
QEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGh0dHBDb250ZW50VHlwZSgp
IGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SFRUUENvbnRlbnRUeXBlKGNvbnN0
IFN0cmluZyYpOwotICAgIHZvaWQgY2xlYXJIVFRQQ29udGVudFR5cGUoKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGNsZWFySFRUUENvbnRlbnRUeXBlKCk7CiAKICAgICBib29sIGhhc0hUVFBI
ZWFkZXIoSFRUUEhlYWRlck5hbWUpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKaW5kZXggYWJjZGNlYWQ3
NzljYWNkYjc0ZjJmZjJmYjZkYmFjYmRiNDllZWEzZi4uZWUzNzNkZGVlYWExNTFhNDA4MzNkMjFi
YzM2OWViNDRjODFlNjY3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaApAQCAtMTUzLDcgKzE1Myw3IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIDEyODA7CiAgICAgfQogCi0gICAgdm9pZCBzZXRUeXBlKFR5cGUp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VHlwZShUeXBlKTsKICAgICBUeXBlIHR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAogICAgIHZvaWQgc2V0UmVkaXJlY3RlZChib29s
IGlzUmVkaXJlY3RlZCkgeyBtX2lzUmVkaXJlY3RlZCA9IGlzUmVkaXJlY3RlZDsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKaW5kZXggY2ZlMzQzZWVmNGE1YWY1YjI3MGMxOGI2
ODUwOGYwZjY4YzZhYWI2Yy4uMzk1ZmQ4MDQ5OThjNjBiN2NiNTM3Mzg4YWUwZmQ0ZDA3OGU0ZGIy
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCkBAIC02MSw3ICs2MSw3IEBA
IGNsYXNzIFdvcmtlclRocmVhZCA6IHB1YmxpYyBSZWZDb3VudGVkPFdvcmtlclRocmVhZD4gewog
cHVibGljOgogICAgIHZpcnR1YWwgfldvcmtlclRocmVhZCgpOwogCi0gICAgYm9vbCBzdGFydCgp
OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc3RhcnQoKTsKICAgICB2b2lkIHN0b3AoKTsKIAog
ICAgIFRocmVhZElkZW50aWZpZXIgdGhyZWFkSUQoKSBjb25zdCB7IHJldHVybiBtX3RocmVhZCA/
IG1fdGhyZWFkLT5pZCgpIDogMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCmluZGV4IGQzMGRjNTdhNmQ4
ZGIwNDAxODE5N2U4NjIxZjZjYTI5MTg4MThkYzkuLjk1MzQ1MTc3ZDcwMjZiOTE3ODZlYTAyYjM1
NTVlZjlmNmVmNWE1YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAgLTE3OSw2ICsxNzksOSBAQCB2
b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29sdmVkV2l0aFJlZ2lzdHJhdGlvbihT
ZXJ2aWNlV29ya2VySm9iJiBqb2IsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICAvLyBG
SVhNRTogSW1wbGVtZW50IHByb3BlciBzZWxlY3Rpb24gb2Ygc2VydmljZSB3b3JrZXJzLgorICAg
IGNvbnRleHQtPnNldFNlbGVjdGVkU2VydmljZVdvcmtlcklkZW50aWZpZXIoZGF0YS5pZGVudGlm
aWVyKTsKKwogICAgIGF1dG8gcmVnaXN0cmF0aW9uID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bjo6Y3JlYXRlKCpjb250ZXh0LCBkYXRhKTsKICAgICBqb2IucHJvbWlzZSgpLnJlc29sdmU8SURM
SW50ZXJmYWNlPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24+PihyZWdpc3RyYXRpb24uZ2V0KCkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJQcm92aWRlci5oCmluZGV4IDc2NjFjNTYzMWIxMjNkYTQzY2JiOTcxMGUxYWE1NzFlNWNk
ZWFmMjkuLmIwZjNkZmI5NTNmNjU4NWRmMTE2ZjdjMjYyYmVhMDhiYjkwYzU2YTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUHJvdmlkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclByb3Zp
ZGVyLmgKQEAgLTI1LDYgKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDx3dGYv
RnVuY3Rpb24uaD4KKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAogbmFtZXNwYWNlIFBB
TCB7CkBAIC0zMyw2ICszNSwxMCBAQCBjbGFzcyBTZXNzaW9uSUQ7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CitzdHJ1Y3QgRmV0Y2hPcHRpb25zOworY2xh
c3MgUmVzb3VyY2VMb2FkZXI7CitjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBTV0NsaWVu
dENvbm5lY3Rpb247CiBjbGFzcyBTZXJ2aWNlV29ya2VySm9iOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NGZlNTdlMzEyMTU3NzFjNmE3Yjgz
ZjVmZGJiNjYyM2RkNDJhMGJlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4
dE1hbmFnZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTV0NvbnRleHRNYW5hZ2VyLmgiCi0KLSNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0KLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVk
ZSA8cGFsL1Nlc3Npb25JRC5oPgotCi11c2luZyBuYW1lc3BhY2UgUEFMOwotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLVNXQ29udGV4dE1hbmFnZXImIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRv
bigpCi17Ci0gICAgc3RhdGljIFNXQ29udGV4dE1hbmFnZXIqIHNoYXJlZE1hbmFnZXIgPSBuZXcg
U1dDb250ZXh0TWFuYWdlcjsKLSAgICByZXR1cm4gKnNoYXJlZE1hbmFnZXI7Ci19Ci0KLVNXQ29u
dGV4dE1hbmFnZXI6OlNXQ29udGV4dE1hbmFnZXIoKQotewotCi19Ci0KLUV4Y2VwdGlvbk9yPHVp
bnQ2NF90PiBTV0NvbnRleHRNYW5hZ2VyOjpzdGFydFNlcnZpY2VXb3JrZXJDb250ZXh0KHVpbnQ2
NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEmIGRhdGEpCi17Ci0gICAgLy8gRklYTUU6IFByb3ZpZGUgYSBzZW5zaWNhbCBzZXNzaW9u
IElECi0KLSAgICBhdXRvIHRocmVhZCA9IFNlcnZpY2VXb3JrZXJUaHJlYWQ6OmNyZWF0ZShzZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgZGF0YSwgU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklE
KCkpOwotICAgIGF1dG8gdGhyZWFkSWRlbnRpZmllciA9IHRocmVhZC0+aWRlbnRpZmllcigpOwot
ICAgIGF1dG8gcmVzdWx0ID0gbV93b3JrZXJUaHJlYWRNYXAuYWRkKHRocmVhZElkZW50aWZpZXIs
IFdURk1vdmUodGhyZWFkKSk7Ci0gICAgQVNTRVJUKHJlc3VsdC5pc05ld0VudHJ5KTsKLQotICAg
IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPnN0YXJ0KCk7Ci0gICAgCi0gICAgTE9HKFNlcnZpY2VX
b3JrZXIsICJDb250ZXh0IHByb2Nlc3MgUElEOiAlaSBzdGFydGVkIHdvcmtlciB0aHJlYWQgJXNc
biIsIGdldHBpZCgpLCBkYXRhLndvcmtlcklELnV0ZjgoKS5kYXRhKCkpOwotICAgIAotICAgIHJl
dHVybiB0aHJlYWRJZGVudGlmaWVyOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxNWQ3ZTY5ODIzMjE0NzIzMGI0NzZhZmI4MzFlNDhhMGYy
MGUzMDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCisr
KyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotCi0jaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIK
LSNpbmNsdWRlICJTZXJ2aWNlV29ya2VyVGhyZWFkLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHRE
YXRhOwotCi1jbGFzcyBTV0NvbnRleHRNYW5hZ2VyIHsKLXB1YmxpYzoKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgU1dDb250ZXh0TWFuYWdlciYgc2luZ2xldG9uKCk7Ci0KLSAgICBXRUJDT1JF
X0VYUE9SVCBFeGNlcHRpb25Pcjx1aW50NjRfdD4gc3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4dCh1
aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlckNv
bnRleHREYXRhJik7Ci0KLXByaXZhdGU6Ci0gICAgU1dDb250ZXh0TWFuYWdlcigpOwotICAgIAot
ICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxTZXJ2aWNlV29ya2VyVGhyZWFkPj4gbV93b3Jr
ZXJUaHJlYWRNYXA7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKaW5kZXggMjJhMDdi
ODlmNTljZTU4MDQyYWIwNTI3OWE5YWIwOThlOGE0NTk2MC4uOGRiYTQ4OTg4OTNiNzAwNDRiNWU3
ZjYyZjcyNmEyZGYwY2RmOTU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaApAQCAtNTIsNyAr
NTIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBydW5FdmVudExvb3AoKSBvdmVycmlkZTsKIAog
cHJpdmF0ZToKLSAgICBTZXJ2aWNlV29ya2VyVGhyZWFkKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmLCBQQUw6OlNlc3Np
b25JRCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU2VydmljZVdvcmtlclRocmVhZCh1aW50NjRfdCBz
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRh
JiwgUEFMOjpTZXNzaW9uSUQpOwogCiAgICAgdWludDY0X3QgbV9zZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllcjsKICAgICBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgbV9kYXRhOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCmluZGV4IDFjMWEy
YzkyZTg2N2IzODEzZDkxY2UxZmY4M2YyYmE4Y2NkMDFhMTYuLjZmMGU5MzdiZWQ3NGVlMjA0OWFl
YzY1YWRkYzgzZjdlYjE1ZDhmMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTQwLDkgKzQwLDExIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgU1dTZXJ2ZXJSZWdpc3Ry
YXRpb247CiBjbGFzcyBTV1NlcnZlcldvcmtlcjsKIHN0cnVjdCBFeGNlcHRpb25EYXRhOworc3Ry
dWN0IEZldGNoT3B0aW9uczsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE7CiBzdHJ1
Y3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0Owogc3RydWN0IFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtl
IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGJhNDRjYmEyY2JiZDhk
Njc5YjRkYjQyNDQ5NWRmODM4NTFjNTQ4YzMuLjA4YjgwOWEyMzA4YTliN2UwYzMzNjhlYmZiYjdk
NTAyYWY4ZTg3NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFr
ZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTEyNSw2ICsxMjUs
NyBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAgICBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eSBc
CiAgICAgUmVtb3RlV2ViSW5zcGVjdG9yVUkgXAogICAgIFNlY0l0ZW1TaGltUHJveHkgXAorICAg
IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaCBcCiAgICAgU21hcnRNYWduaWZpY2F0aW9uQ29udHJv
bGxlciBcCiAgICAgU3RvcmFnZUFyZWFNYXAgXAogICAgIFN0b3JhZ2VNYW5hZ2VyIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKaW5kZXggNzI5N2Y0YjUzZTg3NTdkOTYz
NjJkODlkZDZjNjY5NTJhZDU2MDk5ZS4uZTlhYjRiZWQ3Zjc2YWVlMzRmYmViN2IxNmIxMzg2M2Nj
MmI1ZDk3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TdG9y
YWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTMw
LDggKzMwLDEwIEBACiAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiU3RvcmFnZVByb2Nlc3MuaCIKICNpbmNsdWRlICJTdG9yYWdlVG9XZWJQcm9jZXNz
Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIldlYlNXQ2xpZW50Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCkBAIC05Miw2ICs5
NCwzMSBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRTZXJ2aWNlV29ya2VyQ29u
dGV4dChjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dAogICAgIG1fcGVuZGluZ0NvbnRleHREYXRh
cy5hcHBlbmQoZGF0YSk7CiB9CiAKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzdGFydEZl
dGNoKHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgdWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50
aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgRmV0Y2hPcHRpb25z
JiBvcHRpb25zKQoreworICAgIHNlbmRUb0NvbnRleHRQcm9jZXNzKE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzOjpTdGFydEZldGNoSW5TZXJ2aWNlV29ya2VyKGlkZW50aWZpZXIoKSwgZmV0Y2hJZGVudGlm
aWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9ucykpOworfQorCit2
b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UodWludDY0
X3QgZmV0Y2hJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkKK3sKKyAgICBtX2NvbnRlbnRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNl
V29ya2VyQ2xpZW50RmV0Y2g6OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJlc3BvbnNlIH0sIGZldGNo
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpkaWRSZWNlaXZl
RmV0Y2hEYXRhKHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQoreworICAgIG1fY29udGVudENv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVj
ZWl2ZURhdGEgeyBkYXRhLCBlbmNvZGVkRGF0YUxlbmd0aCB9LCBmZXRjaElkZW50aWZpZXIpOwor
fQorCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6ZGlkRmluaXNoRmV0Y2godWludDY0X3Qg
ZmV0Y2hJZGVudGlmaWVyKQoreworICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkRmluaXNoRmV0Y2ggeyB9LCBmZXRjaElk
ZW50aWZpZXIpOworfQorCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6ZmFpbGVkRmV0Y2go
dWludDY0X3QgZmV0Y2hJZGVudGlmaWVyKQoreworICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNl
bmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkRmFpbCB7IH0sIGZldGNo
SWRlbnRpZmllcik7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpzZW5kVG9Db250ZXh0UHJvY2VzcyhVJiYgbWVzc2FnZSkKIHsKICAgICBpZiAo
IW1fY29udGV4dENvbm5lY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgK
aW5kZXggZGNjNDk2MTY1MmEzZDcxYjZmOTg0NjQzMWQ3Mzc2YjhmYzU1NTIyMy4uYjNlNDIxNmRi
MGEzMzM4MjdiZjdiZWVlODQ5ZmJlNTk4NGQwNmRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
ckNvbm5lY3Rpb24uaApAQCAtNTEsMTUgKzUxLDIzIEBAIHB1YmxpYzoKIAogICAgIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9CiAKKyAgICB2
b2lkIGRpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHZvaWQgZGlkUmVjZWl2ZUZldGNo
RGF0YSh1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYs
IGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGlkRmluaXNoRmV0Y2godWlu
dDY0X3QgZmV0Y2hJZGVudGlmaWVyKTsKKyAgICB2b2lkIGZhaWxlZEZldGNoKHVpbnQ2NF90IGZl
dGNoSWRlbnRpZmllcik7CisKIHByaXZhdGU6CiAgICAgLy8gSW1wbGVtZW50IFNXU2VydmVyOjpD
b25uZWN0aW9uIChNZXNzYWdlcyB0byB0aGUgY2xpZW50IFdlYlByb2Nlc3MpCiAgICAgdm9pZCBy
ZWplY3RKb2JJbkNsaWVudCh1aW50NjRfdCBqb2JJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpF
eGNlcHRpb25EYXRhJikgZmluYWw7CiAgICAgdm9pZCByZXNvbHZlSm9iSW5DbGllbnQodWludDY0
X3Qgam9iSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRhdGEmKSBmaW5hbDsKICAgICB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2hJbkNsaWVudCh1aW50NjRf
dCBqb2JJZGVudGlmaWVyKSBmaW5hbDsKIAorICAgIHZvaWQgc3RhcnRGZXRjaCh1aW50NjRfdCBm
ZXRjaElkZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmKTsK
KwogICAgIC8vIE1lc3NhZ2VzIHRvIHRoZSBTVyBjb250ZXh0IFdlYlByb2Nlc3MKICAgICB2b2lk
IHN0YXJ0U2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNv
bnRleHREYXRhJikgZmluYWw7Ci0gICAgCisKKwogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2Fn
ZVNlbmRlckNvbm5lY3Rpb24oKSBmaW5hbCB7IHJldHVybiBtX2NvbnRlbnRDb25uZWN0aW9uLnB0
cigpOyB9CiAgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBmaW5hbCB7
IHJldHVybiBpZGVudGlmaWVyKCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9y
YWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
ckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggZTRjZmI5NjA1YTZjZTUwMTkyMTZmMjFjZjZk
NjkxN2JlYjMwMmRjMC4uZjNkYjNiOTBkYWU5M2E5MjZkZjViYmRlYTFhMzc3OTUzNDY2NDkxMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3Jh
Z2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
CkBAIC0yNiw2ICsyNiw4IEBAIG1lc3NhZ2VzIC0+IFdlYlNXU2VydmVyQ29ubmVjdGlvbiB7CiAg
ICAgIyBXaGVuIHBvc3NpYmxlLCB0aGVzZSBtZXNzYWdlcyBjYW4gYmUgaW1wbGVtZW50ZWQgZGly
ZWN0bHkgYnkgV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uCiAgICAgU2NoZWR1bGVKb2JJblNl
cnZlcihzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGEgam9iRGF0YSkKICAgICBG
aW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
RmV0Y2hSZXN1bHQgcmVzdWx0KQorCisgICAgU3RhcnRGZXRjaCh1aW50NjRfdCBpZGVudGlmaWVy
LCB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0IHJlcXVlc3QsIHN0cnVjdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMgb3B0aW9ucykKIH0KIAog
I2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9TdG9y
YWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAKaW5kZXggOTk1OTZmMzUxM2E0YmM2MjA1ZjYz
YzllNzNiMDZiOTliNTA4YWJjOS4uY2MwNGNmOTQyM2RmNGVmZWFiNTE3NmQ0NGI5ZTIwMjUyZjA1
Y2NiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vz
cy5jcHAKQEAgLTQwNSw2ICs0MDUsMzAgQEAgdm9pZCBTdG9yYWdlUHJvY2Vzczo6c2VydmljZVdv
cmtlckNvbnRleHRTdGFydGVkKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGkKICAgICAg
ICAgY29ubmVjdGlvbi0+c2NyaXB0Q29udGV4dFN0YXJ0ZWQocmVnaXN0cmF0aW9uS2V5LCBpZGVu
dGlmaWVyLCB3b3JrZXJJRCk7CiB9CiAKK3ZvaWQgU3RvcmFnZVByb2Nlc3M6OmZhaWxlZEZldGNo
KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50
aWZpZXIpCit7CisgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBtX3N3U2VydmVyQ29ubmVjdGlv
bnMuZ2V0KHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgY29ubmVjdGlvbi0+
ZmFpbGVkRmV0Y2goZmV0Y2hJZGVudGlmaWVyKTsKK30KKwordm9pZCBTdG9yYWdlUHJvY2Vzczo6
ZGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCit7CisgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBtX3N3U2VydmVy
Q29ubmVjdGlvbnMuZ2V0KHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgY29u
bmVjdGlvbi0+ZGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoZmV0Y2hJZGVudGlmaWVyLCByZXNwb25z
ZSk7Cit9CisKK3ZvaWQgU3RvcmFnZVByb2Nlc3M6OmRpZFJlY2VpdmVGZXRjaERhdGEodWludDY0
X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwg
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3Ro
KQoreworICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gbV9zd1NlcnZlckNvbm5lY3Rpb25zLmdl
dChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIGNvbm5lY3Rpb24tPmRpZFJl
Y2VpdmVGZXRjaERhdGEoZmV0Y2hJZGVudGlmaWVyLCBkYXRhLCBlbmNvZGVkRGF0YUxlbmd0aCk7
Cit9CisKK3ZvaWQgU3RvcmFnZVByb2Nlc3M6OmRpZEZpbmlzaEZldGNoKHVpbnQ2NF90IHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIpCit7CisgICAg
aWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBtX3N3U2VydmVyQ29ubmVjdGlvbnMuZ2V0KHNlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgY29ubmVjdGlvbi0+ZGlkRmluaXNoRmV0Y2go
ZmV0Y2hJZGVudGlmaWVyKTsKK30KKwogdm9pZCBTdG9yYWdlUHJvY2Vzczo6cmVnaXN0ZXJTV1Nl
cnZlckNvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewogICAg
IEFTU0VSVCghbV9zd1NlcnZlckNvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb24uaWRlbnRp
ZmllcigpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3Jh
Z2VQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNz
LmgKaW5kZXggZDRjZTUxMTcxOTdlNWMwYWQ0YmNlOTAyNDczYmJkZjdkZWVhOWQ4Zi4uZDg5YTE2
YjA2ZGI0ZWExYzA2OWZmYjVmYWJlZDA4NDBjYTFiY2ZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaApAQCAtMTE5LDYgKzExOSwxMSBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGlkR2V0V29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKGNvbnN0
IElQQzo6QXR0YWNobWVudCYgZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyKTsKICAgICB2b2lk
IHNlcnZpY2VXb3JrZXJDb250ZXh0RmFpbGVkVG9TdGFydCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eSYsIGNvbnN0IFN0cmluZyYgd29ya2VySUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAgICAg
dm9pZCBzZXJ2aWNlV29ya2VyQ29udGV4dFN0YXJ0ZWQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkm
LCB1aW50NjRfdCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHdvcmtlcklEKTsKKworICAgIHZv
aWQgZGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYpOworICAgIHZvaWQgZGlkUmVjZWl2ZUZldGNoRGF0YSh1aW50NjRfdCBzZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRp
ZEZpbmlzaEZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRf
dCBmZXRjaElkZW50aWZpZXIpOworICAgIHZvaWQgZmFpbGVkRmV0Y2godWludDY0X3Qgc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcik7CiAjZW5kaWYK
ICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBWZWN0b3I8V2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhPiBpbmRleGVkRGF0YWJhc2VPcmlnaW5zKGNvbnN0IFN0cmluZyYgcGF0aCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNz
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vz
cy5tZXNzYWdlcy5pbgppbmRleCBlZTYyOGQ1Mzc3Y2I1NmQyNjUwMThjZWZkM2EyMTA4MDVlOWI0
MmYyLi5hODNkNzMwZTczODNkZDc1ZmE2MTg0YWExMDIzODFmOTBkYTg4ODhjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MubWVzc2Fn
ZXMuaW4KQEAgLTM3LDcgKzM3LDEzIEBAIG1lc3NhZ2VzIC0+IFN0b3JhZ2VQcm9jZXNzIExlZ2Fj
eVJlY2VpdmVyIHsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBEaWRHZXRXb3Jr
ZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25IYW5k
bGUpCisKICAgICBTZXJ2aWNlV29ya2VyQ29udGV4dEZhaWxlZFRvU3RhcnQodWludDY0X3Qgc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5IHJlZ2lzdHJhdGlvbktleSwgU3RyaW5nIHdvcmtlcklELCBTdHJpbmcgbWVz
c2FnZSkKICAgICBTZXJ2aWNlV29ya2VyQ29udGV4dFN0YXJ0ZWQodWludDY0X3Qgc2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5IHJlZ2lzdHJhdGlvbktleSwgdWludDY0X3QgaWRlbnRpZmllciwgU3RyaW5nIHdvcmtl
cklEKQorCisgICAgRmFpbGVkRmV0Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcikKKyAgICBEaWRSZWNlaXZlRmV0Y2hSZXNwb25z
ZSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKQorICAgIERpZFJlY2Vp
dmVGZXRjaERhdGEodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90
IGZldGNoSWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEsIGludDY0X3QgZW5jb2Rl
ZERhdGFMZW5ndGgpCisgICAgRGlkRmluaXNoRmV0Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcikKICNlbmRpZgogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOGI4Njk1
MGMxODExNmY2MDFjOThkMWM4NjY1NTYyYjQ2MjRhYjIyMi4uYTFjYjdjYzJjYzFkZmExYjc3MzNh
Y2U5Y2I3NTRiODdjMjI2ZDE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC04OTAsNiArODkwLDkgQEAKIAkJNDEzMDc1QjIxREU4NUY1
ODAwMzlFQzY5IC8qIExpYldlYlJUQ1NvY2tldEZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzA3NUE2MURFODVFRTcwMDM5RUM2OSAvKiBM
aWJXZWJSVENTb2NrZXRGYWN0b3J5LmggKi87IH07CiAJCTQxMzA3NUIzMURFODVGNTgwMDM5RUM2
OSAvKiBMaWJXZWJSVENQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTMwNzVBNzFERTg1RUU3MDAzOUVDNjkgLyogTGliV2ViUlRDUHJv
dmlkZXIuY3BwICovOyB9OwogCQk0MTMwNzVCNDFERTg1RjU4MDAzOUVDNjkgLyogTGliV2ViUlRD
UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxMzA3NUE4MURFODVFRTcwMDM5RUM2OSAvKiBMaWJXZWJSVENQcm92aWRlci5oICovOyB9Owor
CQk0MTMxRjNEMTFGOTZCQ0NDMDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzFGM0Qw
MUY5NkJDQzgwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guY3BwICovOyB9Owor
CQk0MTMxRjNENDFGOTZFOTM1MDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2Vy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzFG
M0QzMUY5NkU5MzEwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwICov
OyB9OworCQk0MTMxRjNENTFGOTZFOTM1MDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNvbnRleHRN
YW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTMxRjNEMjFGOTZFOTMwMDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmgg
Ki87IH07CiAJCTQxMzVGQkQxMUY0RkI4MDkwMDc0QzQ3QiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVD
YWNoZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDEzNUZCQ0YxRjRGQjdGMjAwNzRDNDdCIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAg
Ki87IH07CiAJCTQxODk3RUNGMUY0MTVENjIwMDE2RkE0MiAvKiBXZWJDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxODk3RUNFMUY0MTVENUMwMDE2RkE0MiAvKiBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNw
cCAqLzsgfTsKIAkJNDE4OTdFRDAxRjQxNUQ2NTAwMTZGQTQyIC8qIFdlYkNhY2hlU3RvcmFnZVBy
b3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxODk3RUNDMUY0MTVENUMwMDE2RkE0MiAvKiBXZWJDYWNoZVN0b3JhZ2VQcm92aWRlci5jcHAg
Ki87IH07CkBAIC0xMDI5LDcgKzEwMzIsOSBAQAogCQk1MTc5NTU2QTE2Mjg3NkYzMDBGQTQzQjYg
LyogTmV0d29ya1Byb2Nlc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxMENDN0UwMTYxMzhFMjkwMEQwM0VEMyAvKiBOZXR3b3JrUHJvY2Vzcy5oICov
OyB9OwogCQk1MTc5NTU2RDE2Mjg3N0IxMDBGQTQzQjYgLyogTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBDQzdF
QTE2MTM4RTcyMDBEMDNFRDMgLyogTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgKi87IH07CiAJCTUx
Nzk1NTZFMTYyODc3QjMwMEZBNDNCNiAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBDQzdFQjE2MTM4RTcyMDBE
MDNFRDMgLyogTmV0d29ya1Byb2Nlc3NQcm94eS5oICovOyB9OworCQk2MTdBNTJEODFGNDNBOURB
MDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYxN0E1MkQ3MUY0
M0E5QjYwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hDb25uZWN0aW9uTWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJNTE3QTUyRDgxRjQzQTlEQTAwRENEQzBBIC8qIFdlYlNX
U2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdBNTJENzFGNDNBOUI2MDBEQ0RDMEEgLyogV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJNjE3QTUyRDkx
RjQzQTlEQTAwRENEQzBBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MTdBNTJENjFGNDNB
OUI2MDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZXMuaCAqLzsgfTsK
IAkJNTE3QTUyRDkxRjQzQTlEQTAwRENEQzBBIC8qIFdlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3Nh
Z2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdB
NTJENjFGNDNBOUI2MDBEQ0RDMEEgLyogV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCAq
LzsgfTsKIAkJNTE3QTUzMDQxRjQ3OTNDNjAwRENEQzBBIC8qIFdlYlNXQ2xpZW50Q29ubmVjdGlv
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdB
NTMwMzFGNDc5M0IyMDBEQ0RDMEEgLyogV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcCAqLzsgfTsK
IAkJNTE3QTUzMDUxRjQ3OTNDNjAwRENEQzBBIC8qIFdlYlNXQ2xpZW50Q29ubmVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3QTUzMDIxRjQ3
OTNCMjAwRENEQzBBIC8qIFdlYlNXQ2xpZW50Q29ubmVjdGlvbi5oICovOyB9OwpAQCAtMzE3OCw2
ICszMTgzLDExIEBACiAJCTQxMzA3NUE2MURFODVFRTcwMDM5RUM2OSAvKiBMaWJXZWJSVENTb2Nr
ZXRGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJUQ1Nv
Y2tldEZhY3RvcnkuaDsgcGF0aCA9IE5ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldEZhY3Rv
cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzMDc1QTcxREU4NUVFNzAwMzlF
QzY5IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbGluZUVuZGluZyA9IDA7IG5hbWUgPSBMaWJXZWJSVENQcm92aWRlci5jcHA7IHBhdGggPSBO
ZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcuY3BwOyB9
OwogCQk0MTMwNzVBODFERTg1RUU3MDAzOUVDNjkgLyogTGliV2ViUlRDUHJvdmlkZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBsaW5lRW5kaW5nID0gMDsgbmFtZSA9IExpYldlYlJUQ1By
b3ZpZGVyLmg7IHBhdGggPSBOZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4
Y29kZS5sYW5nLm9iamNwcDsgfTsKKwkJNDEzMUYzQ0UxRjk2QTQ5NTAwNTk5OTVBIC8qIFNlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
ZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDEzMUYzQ0YxRjk2QTkzNjAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5tZXNz
YWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gu
bWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMzFGM0QwMUY5NkJD
QzgwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtlckNsaWVudEZldGNoLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEzMUYzRDIxRjk2RTkzMDAwNTk5OTVBIC8qIFNl
cnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDEzMUYzRDMxRjk2RTkzMTAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0
TWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNl
V29ya2VyQ29udGV4dE1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MTM1RkJDRjFGNEZCN0YyMDA3NEM0N0IgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlU3RvcmFnZUVuZ2luZUNh
Y2hlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzVGQkQwMUY0RkI3RjIw
MDc0QzQ3QiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxODk3RUNCMUY0MTVENUMwMDE2RkE0MiAvKiBXZWJDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24u
bWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMzM0LDcgKzMzNDQs
OSBAQAogCQk1MTZBNEE1QjEyMEEyQ0NEMDBDMDVCN0YgLyogQVBJRXJyb3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTE3QTMzQjMxMzBCMzA4QzAwRjgwQ0I1IC8qIFdLQXBwbGljYXRpb25DYWNoZU1h
bmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tBcHBsaWNh
dGlvbkNhY2hlTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0Ez
M0I0MTMwQjMwOEMwMEY4MENCNSAvKiBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjE3QTUyRDYxRjQzQTlCNjAwRENEQzBBIC8q
IFNlcnZpY2VXb3JrZXJGZXRjaENsaWVudE1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxN0E1MkQ2MUY0M0E5QjYwMERDREMwQSAvKiBXZWJTV1NlcnZl
ckNvbm5lY3Rpb25NZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk2MTdBNTJENzFGNDNBOUI2MDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNo
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxN0E1MkQ3MUY0M0E5QjYwMERDREMwQSAvKiBXZWJTV1NlcnZl
ckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3QTUzMDIxRjQ3OTNCMjAwRENEQzBBIC8qIFdl
YlNXQ2xpZW50Q29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJTV0NsaWVudENvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3
QTUzMDMxRjQ3OTNCMjAwRENEQzBBIC8qIFdlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTV0NsaWVudENvbm5lY3Rpb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjE2OCw2ICs2MTgwLDExIEBACiAJCTUx
MThFOTk4MUYyOTUyNTkwMDNFRjlGNSAvKiBTdG9yYWdlICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0MTMxRjNEMDFGOTZCQ0M4MDA1OTk5NUEgLyogU2Vy
dmljZVdvcmtlckNsaWVudEZldGNoLmNwcCAqLywKKwkJCQk0MTMxRjNDRTFGOTZBNDk1MDA1OTk5
NUEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoLmggKi8sCisJCQkJNDEzMUYzQ0YxRjk2QTkz
NjAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5tZXNzYWdlcy5pbiAqLywKKwkJ
CQk0MTMxRjNEMzFGOTZFOTMxMDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2Vy
LmNwcCAqLywKKwkJCQk0MTMxRjNEMjFGOTZFOTMwMDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNv
bnRleHRNYW5hZ2VyLmggKi8sCiAJCQkJNTFCRUI2MjkxRjNBNUFDRDAwNTAyOUI5IC8qIFdlYlNl
cnZpY2VXb3JrZXJQcm92aWRlci5jcHAgKi8sCiAJCQkJNTFCRUI2MkExRjNBNUFDRDAwNTAyOUI5
IC8qIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oICovLAogCQkJCTUxN0E1MzAzMUY0NzkzQjIw
MERDREMwQSAvKiBXZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwICovLApAQCAtODAxMCw2ICs4MDI3
LDcgQEAKIAkJCQkxQkJCRTQ5RTE5QjY2QzUzMDA2QjdEODEgLyogUmVtb3RlV2ViSW5zcGVjdG9y
VUlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCUUxOEU2OTEzMTY5QjY2N0IwMDlCNjY3MCAv
KiBTZWNJdGVtU2hpbVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQlFMThFNjkxNDE2
OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eU1lc3NhZ2VzLmggKi8sCisJCQkJNjE3
QTUyRDcxRjQzQTlCNjAwRENEQzBBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaENvbm5lY3Rp
b25NZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTJERTY5NDNCMThCRDJBNjgwMDVDMTVFNSAv
KiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJ
CQkyREU2OTQzQzE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxl
ck1lc3NhZ2VzLmggKi8sCiAJCQkJMUEzMzRERUIxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VB
cmVhTWFwTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKQEAgLTg3ODEsNiArODc5OSw3IEBACiAJCQkJ
RTE4RTY5MEMxNjlCNTYzRjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUUxOEU2OTE4MTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5TWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNEQ5RjU3MTkxMTlEMzUwMDAwNjNBNyAvKiBT
ZXJ2aWNlc0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxMzFGM0Q1MUY5NkU5MzUw
MDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBRkRFNjVBMTk1NEE0MkIwMEM0OEZGQSAvKiBTZXNzaW9uU3RhdGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBMDAyRDQ5MTk2QjM0NUQwMEI5QUQ0NCAvKiBTZXNzaW9uU3RhdGVDb2Rpbmcu
aCBpbiBIZWFkZXJzICovLAogCQkJCTc1M0UzRTBFMTg4NzM5ODkwMDE4ODQ5NiAvKiBTZXNzaW9u
VHJhY2tlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDM3MCw2ICsxMDM4OSw5IEBACiAJCQkJRTE4
RTY5MEIxNjlCNTYzRjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHkuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRTE4RTY5MTcxNjlCNjY3QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0RDlGNTgxOTExOUQzNTAwMDA2
M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQxMzFGM0Qx
MUY5NkJDQ0MwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJNjE3QTUyRDgxRjQzQTlEQTAwRENEQzBBIC8qIFNlcnZpY2VXb3JrZXJDbGll
bnRGZXRjaENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
NDEzMUYzRDQxRjk2RTkzNTAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUZERTY1OTE5NTRBNDJCMDBDNDhGRkEgLyogU2Vzc2lv
blN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMDAyRDQ4MTk2QjM0NUQwMEI5QUQ0NCAv
KiBTZXNzaW9uU3RhdGVDb2RpbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTcyODQ0ODE5NTlG
ODA0MDAwN0JDRTUgLyogU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAgaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0
cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0
cmF0ZWd5LmNwcAppbmRleCBiODk1ZDBiOGZhMzFjZTAxNjZkMmE0MGRiYzk0OTFmMDgxNDM1YmIx
Li43YzdmMzk5MGQ0MzhjN2EzOGRmMzI2YmFmN2IxNzBhNjYxNTkxYWVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3Bw
CkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkZXIuaCIKKyNp
bmNsdWRlICJXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXZWJVUkxTY2hl
bWVIYW5kbGVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJVUkxTY2hlbWVUYXNrUHJveHkuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0Lmg+CkBAIC0yMTUsNiArMjE2LDI2
IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciYg
cmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291CiAgICAgICAgIH0KICAgICB9CiAKKyNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCisgICAgV2ViU2VydmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0
b24oKS5oYW5kbGVGZXRjaChyZXNvdXJjZUxvYWRlciwgKnJlc291cmNlLCB3ZWJQYWdlID8gd2Vi
UGFnZS0+c2Vzc2lvbklEKCkgOiBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBb
dHJhY2tpbmdQYXJhbWV0ZXJzLCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGly
ZWN0LCBtYXhpbXVtQnVmZmVyaW5nVGltZSA9IG1heGltdW1CdWZmZXJpbmdUaW1lKHJlc291cmNl
KV0gKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KSBtdXRhYmxlIHsKKyAgICAgICAgTE9HKE5ldHdvcmtTY2hlZHVsaW5nLCAiKFdl
YlByb2Nlc3MpIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQsIHVybCAnJXMnIHdpbGwg
YmUgc2NoZWR1bGVkIHRocm91Z2ggU2VydmljZVdvcmtlciBoYW5kbGUgZmV0Y2ggYWxnb3JpdGht
IiwgcmVzb3VyY2VMb2FkZXIudXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKKyAgICAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViTG9hZGVyU3RyYXRlZ3koKS5zY2hlZHVsZUxv
YWRGcm9tTmV0d29ya1Byb2Nlc3MocmVzb3VyY2VMb2FkZXIsIHJlcXVlc3QsIFdURk1vdmUodHJh
Y2tpbmdQYXJhbWV0ZXJzKSwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVj
dCwgbWF4aW11bUJ1ZmZlcmluZ1RpbWUpOworICAgIH0pOworI2Vsc2UKKyAgICBMT0coTmV0d29y
a1NjaGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9h
ZCwgdXJsICclcycgd2lsbCBiZSBzY2hlZHVsZWQgdGhyb3VnaCBTZXJ2aWNlV29ya2VyIGhhbmRs
ZSBmZXRjaCBhbGdvcml0aG0iLCByZXNvdXJjZUxvYWRlci51cmwoKS5zdHJpbmcoKS5sYXRpbjEo
KS5kYXRhKCkpOworICAgIHNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhyZXNvdXJjZUxv
YWRlciwgcmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLCB0cmFja2luZ1BhcmFtZXRlcnMsIHNob3Vs
ZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIG1heGltdW1CdWZmZXJpbmdUaW1l
KHJlc291cmNlKSk7CisjZW5kaWYKK30KKwordm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1
bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJSZXNvdXJjZUxvYWRlcjo6
VHJhY2tpbmdQYXJhbWV0ZXJzJiB0cmFja2luZ1BhcmFtZXRlcnMsIGJvb2wgc2hvdWxkQ2xlYXJS
ZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgU2Vjb25kcyBtYXhpbXVtQnVmZmVyaW5nVGlt
ZSkKK3sKKyAgICBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGlkZW50aWZpZXIgPSByZXNvdXJjZUxv
YWRlci5pZGVudGlmaWVyKCk7CisgICAgQVNTRVJUKGlkZW50aWZpZXIpOworCisgICAgV2ViRnJh
bWVMb2FkZXJDbGllbnQqIHdlYkZyYW1lTG9hZGVyQ2xpZW50ID0gdG9XZWJGcmFtZUxvYWRlckNs
aWVudChyZXNvdXJjZUxvYWRlci5mcmFtZUxvYWRlcigpLT5jbGllbnQoKSk7CisgICAgV2ViRnJh
bWUqIHdlYkZyYW1lID0gd2ViRnJhbWVMb2FkZXJDbGllbnQgPyB3ZWJGcmFtZUxvYWRlckNsaWVu
dC0+d2ViRnJhbWUoKSA6IG51bGxwdHI7CisgICAgV2ViUGFnZSogd2ViUGFnZSA9IHdlYkZyYW1l
ID8gd2ViRnJhbWUtPnBhZ2UoKSA6IG51bGxwdHI7CisKICAgICBMT0coTmV0d29ya1NjaGVkdWxp
bmcsICIoV2ViUHJvY2VzcykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwgdXJsICcl
cycgd2lsbCBiZSBzY2hlZHVsZWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3Mgd2l0aCBwcmlvcml0
eSAlZCIsIHJlc291cmNlTG9hZGVyLnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSwgc3Rh
dGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSkpOwogCiAg
ICAgQ29udGVudFNuaWZmaW5nUG9saWN5IGNvbnRlbnRTbmlmZmluZ1BvbGljeSA9IHJlc291cmNl
TG9hZGVyLnNob3VsZFNuaWZmQ29udGVudCgpID8gU25pZmZDb250ZW50IDogRG9Ob3RTbmlmZkNv
bnRlbnQ7CkBAIC0yMjUsNyArMjQ2LDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1
bGVMb2FkKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UKICAgICBs
b2FkUGFyYW1ldGVycy53ZWJQYWdlSUQgPSB3ZWJQYWdlID8gd2ViUGFnZS0+cGFnZUlEKCkgOiAw
OwogICAgIGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQgPSB3ZWJGcmFtZSA/IHdlYkZyYW1lLT5m
cmFtZUlEKCkgOiAwOwogICAgIGxvYWRQYXJhbWV0ZXJzLnNlc3Npb25JRCA9IHdlYlBhZ2UgPyB3
ZWJQYWdlLT5zZXNzaW9uSUQoKSA6IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCk7
Ci0gICAgbG9hZFBhcmFtZXRlcnMucmVxdWVzdCA9IHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKTsK
KyAgICBsb2FkUGFyYW1ldGVycy5yZXF1ZXN0ID0gcmVxdWVzdDsKICAgICBsb2FkUGFyYW1ldGVy
cy5jb250ZW50U25pZmZpbmdQb2xpY3kgPSBjb250ZW50U25pZmZpbmdQb2xpY3k7CiAgICAgbG9h
ZFBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPSBzdG9yZWRDcmVkZW50aWFsc1Bv
bGljeTsKICAgICAvLyBJZiB0aGVyZSBpcyBubyBXZWJGcmFtZSB0aGVuIHRoaXMgcmVzb3VyY2Ug
Y2Fubm90IGJlIGF1dGhlbnRpY2F0ZWQgd2l0aCB0aGUgY2xpZW50LgpAQCAtMjMzLDcgKzI1NCw3
IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciYg
cmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291CiAgICAgbG9hZFBhcmFtZXRlcnMuc2hvdWxkQ2xl
YXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCA9IHNob3VsZENsZWFyUmVmZXJyZXJPbkhU
VFBTVG9IVFRQUmVkaXJlY3Q7CiAgICAgbG9hZFBhcmFtZXRlcnMuZGVmZXJzTG9hZGluZyA9IHJl
c291cmNlTG9hZGVyLmRlZmVyc0xvYWRpbmcoKTsKICAgICBsb2FkUGFyYW1ldGVycy5uZWVkc0Nl
cnRpZmljYXRlSW5mbyA9IHJlc291cmNlTG9hZGVyLnNob3VsZEluY2x1ZGVDZXJ0aWZpY2F0ZUlu
Zm8oKTsKLSAgICBsb2FkUGFyYW1ldGVycy5tYXhpbXVtQnVmZmVyaW5nVGltZSA9IG1heGltdW1C
dWZmZXJpbmdUaW1lKHJlc291cmNlKTsKKyAgICBsb2FkUGFyYW1ldGVycy5tYXhpbXVtQnVmZmVy
aW5nVGltZSA9IG1heGltdW1CdWZmZXJpbmdUaW1lOwogICAgIGxvYWRQYXJhbWV0ZXJzLmRlcml2
ZWRDYWNoZWREYXRhVHlwZXNUb1JldHJpZXZlID0gcmVzb3VyY2VMb2FkZXIub3B0aW9ucygpLmRl
cml2ZWRDYWNoZWREYXRhVHlwZXNUb1JldHJpZXZlOwogCiAgICAgQVNTRVJUKChsb2FkUGFyYW1l
dGVycy53ZWJQYWdlSUQgJiYgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRCkgfHwgbG9hZFBhcmFt
ZXRlcnMuY2xpZW50Q3JlZGVudGlhbFBvbGljeSA9PSBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpD
YW5ub3RBc2tDbGllbnRGb3JDcmVkZW50aWFscyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaAppbmRleCBiNDhmNjgxMThmNDQ5
Yzc3NjhkMTc5NjYxNjViYjY2YTMyNWIyMzZmLi5lYWI0ZWNlN2VlNmJmZmZmNzM4ZTJiZGZhMzU1
YTA4NGMyZGFhNmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJMb2FkZXJTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKQEAgLTc3LDYgKzc3LDggQEAgcHVibGljOgogICAgIHZv
aWQgYWRkVVJMU2NoZW1lVGFza1Byb3h5KFdlYlVSTFNjaGVtZVRhc2tQcm94eSYpOwogICAgIHZv
aWQgcmVtb3ZlVVJMU2NoZW1lVGFza1Byb3h5KFdlYlVSTFNjaGVtZVRhc2tQcm94eSYpOwogCisg
ICAgdm9pZCBzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXImLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJSZXNvdXJj
ZUxvYWRlcjo6VHJhY2tpbmdQYXJhbWV0ZXJzJiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25I
VFRQU1RvSFRUUFJlZGlyZWN0LCBTZWNvbmRzKTsKKwogcHJpdmF0ZToKICAgICB2b2lkIHNjaGVk
dWxlTG9hZChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYsIFdlYkNvcmU6OkNhY2hlZFJlc291cmNl
KiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KTsKICAgICB2
b2lkIHNjaGVkdWxlSW50ZXJuYWxseUZhaWxlZExvYWQoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VX
b3JrZXJDbGllbnRGZXRjaC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9T
ZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2ZTBhMGZhMGM5ZjFlNmJm
M2U2MWEyMzgyYWM1ZjNiNTViZWMwZDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guY3BwCkBAIC0wLDAg
KzEsMTU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNl
cnZpY2VXb3JrZXJDbGllbnRGZXRjaC5oIgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQor
CisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBib29sIHNob3VsZFJlZGlyZWN0QXNHRVQo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBvbGRSZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgVVJMJiBuZXdVUkwsIGJvb2wgY3Jvc3NPcmlnaW4pCit7Cisg
ICAgaWYgKG9sZFJlcXVlc3QuaHR0cE1ldGhvZCgpID09ICJHRVQiIHx8IG9sZFJlcXVlc3QuaHR0
cE1ldGhvZCgpID09ICJIRUFEIikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFu
ZXdVUkwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIHN3aXRjaCAocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSkgeworICAgIGNhc2UgMzAzOgor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIDMwMjoKKyAgICBjYXNlIDMwMToKKyAgICAg
ICAgaWYgKG9sZFJlcXVlc3QuaHR0cE1ldGhvZCgpID09ICJQT1NUIikKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICB9OworCisgICAgaWYgKGNyb3NzT3JpZ2lu
ICYmIG9sZFJlcXVlc3QuaHR0cE1ldGhvZCgpID09ICJERUxFVEUiKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKworLy8gRklYTUU6IFByb3Blcmx5IHN5bnRo
ZXNpemUgYSBuZXcgcmVxdWVzdCBhcyBwZXIgaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcv
I2h0dHAtcmVkaXJlY3QtZmV0Y2guCitzdGF0aWMgaW5saW5lIFJlc291cmNlUmVxdWVzdCBjb21w
dXRlTmV3UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG9sZFJlcXVlc3QsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAgIFJlc291cmNlUmVxdWVz
dCBuZXdSZXF1ZXN0ID0gb2xkUmVxdWVzdDsKKyAgICBVUkwgbmV3VVJMID0gVVJMIHsgb2xkUmVx
dWVzdC51cmwoKSwgcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpMb2Nh
dGlvbikgfTsKKyAgICBuZXdSZXF1ZXN0LnNldFVSTChuZXdVUkwpOworCisgICAgYm9vbCBjcm9z
c09yaWdpbiA9ICFwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwob2xkUmVxdWVzdC51cmwoKSwg
bmV3VVJMKTsKKworICAgIGlmIChuZXdSZXF1ZXN0Lmh0dHBNZXRob2QoKSAhPSAiR0VUIikgewor
ICAgICAgICBpZiAoc2hvdWxkUmVkaXJlY3RBc0dFVChvbGRSZXF1ZXN0LCByZXNwb25zZSwgbmV3
VVJMLCBjcm9zc09yaWdpbikpIHsKKyAgICAgICAgICAgIG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhv
ZCgiR0VUIik7CisgICAgICAgICAgICBuZXdSZXF1ZXN0LnNldEhUVFBCb2R5KG51bGxwdHIpOwor
ICAgICAgICAgICAgbmV3UmVxdWVzdC5jbGVhckhUVFBDb250ZW50VHlwZSgpOworICAgICAgICB9
CisgICAgfQorCisgICAgLy8gRklYTUU6IFByb3Blcmx5IGhhbmRsZSBSZWZlcmVyCisgICAgaWYg
KCFuZXdVUkwucHJvdG9jb2xJcygiaHR0cHMiKSAmJiBwcm90b2NvbElzKG5ld1JlcXVlc3QuaHR0
cFJlZmVycmVyKCksICJodHRwcyIpKQorICAgICAgICBuZXdSZXF1ZXN0LmNsZWFySFRUUFJlZmVy
cmVyKCk7CisKKyAgICBuZXdSZXF1ZXN0LnJlbW92ZUNyZWRlbnRpYWxzKCk7CisKKyAgICBpZiAo
Y3Jvc3NPcmlnaW4pIHsKKyAgICAgICAgbmV3UmVxdWVzdC5jbGVhckhUVFBBdXRob3JpemF0aW9u
KCk7CisgICAgICAgIG5ld1JlcXVlc3QuY2xlYXJIVFRQT3JpZ2luKCk7CisgICAgfQorCisgICAg
cmV0dXJuIG5ld1JlcXVlc3Q7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRSZWRpcmVj
dChpbnQgc3RhdHVzQ29kZSkKK3sKKyAgICBpZiAoc3RhdHVzQ29kZSA8PSAzMDAgfHwgc3RhdHVz
Q29kZSA+PSA0MDApCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoc3RhdHVzQ29kZSA9
PSAzMDQgfHwgc3RhdHVzQ29kZSA9PSAzMDUgfHwgc3RhdHVzQ29kZSA9PSAzMDYpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2Vy
Q2xpZW50RmV0Y2g6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICBpZiAoIW1fbG9hZGVyKQorICAgICAgICByZXR1cm47
CisKKyAgICAvLyBGSVhNRTogUHJvcGVybHkgaGFuZGxlIG9wYXF1ZSByZWRpcmVjdCByZXNwb25z
ZXMuCisgICAgaWYgKHNob3VsZFJlZGlyZWN0KHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpKSB7
CisgICAgICAgIG1fbG9hZGVyLT53aWxsU2VuZFJlcXVlc3QoY29tcHV0ZU5ld1JlcXVlc3QobV9s
b2FkZXItPm9yaWdpbmFsUmVxdWVzdCgpLCByZXNwb25zZSksIHJlc3BvbnNlLCBbcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpXShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KSBtdXRhYmxl
IHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGFuZGxlIHJlZGlyZWN0aW9ucyB0
aGF0IGNhbiBnbyBiYWNrIHRvIHNlcnZpY2Ugd29ya2VyLgorICAgICAgICAgICAgaWYgKCFwcm90
ZWN0ZWRUaGlzLT5tX2xvYWRlcikKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
ICAgIGlmIChhdXRvIGZhbGxiYWNrID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzLT5tX2ZhbGxiYWNr
KSkKKyAgICAgICAgICAgICAgICBmYWxsYmFjaygqcHJvdGVjdGVkVGhpcy0+bV9sb2FkZXIsIHJl
cXVlc3QpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChy
ZXNwb25zZS50eXBlKCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6VHlwZTo6RXJyb3IpIHsKKyAgICAg
ICAgLy8gQWRkIHN1cHBvcnQgZm9yIGEgYmV0dGVyIGVycm9yLgorICAgICAgICBtX2xvYWRlci0+
ZGlkRmFpbCh7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fbG9hZGVyLT5kaWRS
ZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRG
ZXRjaDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2
NF90IGVuY29kZWREYXRhTGVuZ3RoKQoreworICAgIGlmICghbV9sb2FkZXIpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fbG9hZGVyLT5kaWRSZWNlaXZlRGF0YShyZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCwg
RGF0YVBheWxvYWRCeXRlcyk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpk
aWRGaW5pc2hGZXRjaCgpCit7CisgICAgaWYgKCFtX2xvYWRlcikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9sb2FkZXItPmRpZEZpbmlzaExvYWRpbmcoTmV0d29ya0xvYWRNZXRyaWNzIHsgfSk7
Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpkaWRGYWlsKCkKK3sKKyAgICBp
ZiAoIW1fbG9hZGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYXV0byBmYWxsYmFjayA9
IFdURk1vdmUobV9mYWxsYmFjaykpCisgICAgICAgIGZhbGxiYWNrKCptX2xvYWRlciwgbV9sb2Fk
ZXItPm9yaWdpbmFsUmVxdWVzdCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjU2NWEzNGZhNDU0MTAyMjgxYWUwZjAwMjUxNmM0NTBlMDQ0YzRhZWIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2Vy
Q2xpZW50RmV0Y2guaApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2
ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZUxvYWRlci5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworY2xhc3MgU2VydmljZVdvcmtlckNsaWVudEZldGNoIGZpbmFsIDogcHVibGljIFJl
ZkNvdW50ZWQ8U2VydmljZVdvcmtlckNsaWVudEZldGNoPiwgcHVibGljIElQQzo6TWVzc2FnZVNl
bmRlciwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UmVmPFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaD4gY3JlYXRlKFJlZjxXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlcj4mJiBsb2FkZXIsIHVpbnQ2NF90IGlkZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rp
b24+JiYgY29ubmVjdGlvbiwgV1RGOjpGdW5jdGlvbjx2b2lkKFdlYkNvcmU6OlJlc291cmNlTG9h
ZGVyJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik+JiYgZmFsbGJhY2spCisKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRj
aCB7IFdURk1vdmUobG9hZGVyKSwgaWRlbnRpZmllciwgV1RGTW92ZShjb25uZWN0aW9uKSwgV1RG
TW92ZShmYWxsYmFjaykgfSk7CisgICAgfQorCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBT
ZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2goUmVmPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyPiYmIGxv
YWRlciwgdWludDY0X3QgaWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0
aW9uLCBXVEY6OkZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXImLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKT4mJiBmYWxsYmFjaykKKyAgICAgICAgOiBtX2xvYWRl
cihXVEZNb3ZlKGxvYWRlcikpCisgICAgICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisg
ICAgICAgICwgbV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCisgICAgICAgICwgbV9m
YWxsYmFjayhXVEZNb3ZlKGZhbGxiYWNrKSkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgaW50NjRfdCBlbmNv
ZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRGaW5pc2hGZXRjaCgpOworICAgIHZvaWQgZGlk
RmFpbCgpOworCisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigp
IGZpbmFsIHsgcmV0dXJuIG1fY29ubmVjdGlvbi5wdHIoKTsgfQorICAgIHVpbnQ2NF90IG1lc3Nh
Z2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgZmluYWwgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisK
KyAgICBSZWZQdHI8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI+IG1fbG9hZGVyOworICAgIHVpbnQ2
NF90IG1faWRlbnRpZmllciB7IDAgfTsKKyAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5l
Y3Rpb247CisgICAgV1RGOjpGdW5jdGlvbjx2b2lkKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik+IG1fZmFsbGJhY2s7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJD
bGllbnRGZXRjaC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZjc3ZTYy
MTdjMDFlMDE4OGYzZGI1N2JiODc0MDFmMTExMDhkMDY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLm1l
c3NhZ2VzLmluCkBAIC0wLDAgKzEsMzMgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBh
cmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
CisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKworbWVzc2FnZXMgLT4gU2Vy
dmljZVdvcmtlckNsaWVudEZldGNoIHsKKyAgICBEaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKKyAgICBEaWRSZWNlaXZlRGF0YShJUEM6OkRhdGFS
ZWZlcmVuY2UgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKKyAgICBEaWRGaW5pc2hG
ZXRjaCgpCisgICAgRGlkRmFpbCgpCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZp
Y2VXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9TZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyMTM1NWUy
Njg2MzA1NWMwZDFhMTMzM2RlNTI3NDliMWUxYzBmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIu
Y3BwCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmgiCisKKyNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiU3RvcmFnZVBy
b2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZVJlc3BvbnNlLmg+CisjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgorCit1c2luZyBuYW1l
c3BhY2UgUEFMOwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCit2b2lkIFNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlcjo6c3RhcnRTZXJ2aWNlV29ya2Vy
Q29udGV4dCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhJiBkYXRhKQoreworICAgIC8vIEZJWE1FOiBQcm92aWRlIGEgc2Vu
c2ljYWwgc2Vzc2lvbiBJRAorCisgICAgYXV0byB0aHJlYWQgPSBTZXJ2aWNlV29ya2VyVGhyZWFk
OjpjcmVhdGUoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGRhdGEsIFNlc3Npb25JRDo6ZGVm
YXVsdFNlc3Npb25JRCgpKTsKKyAgICBhdXRvIHRocmVhZElkZW50aWZpZXIgPSB0aHJlYWQtPmlk
ZW50aWZpZXIoKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fd29ya2VyVGhyZWFkTWFwLmFkZCh0aHJl
YWRJZGVudGlmaWVyLCBXVEZNb3ZlKHRocmVhZCkpOworICAgIEFTU0VSVChyZXN1bHQuaXNOZXdF
bnRyeSk7CisKKyAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5zdGFydCgpOworCisgICAgTE9H
KFNlcnZpY2VXb3JrZXIsICJDb250ZXh0IHByb2Nlc3MgUElEOiAlaSBzdGFydGVkIHdvcmtlciB0
aHJlYWQgJXNcbiIsIGdldHBpZCgpLCBkYXRhLndvcmtlcklELnV0ZjgoKS5kYXRhKCkpOworCisg
ICAgbV9jb25uZWN0aW9uVG9TdG9yYWdlUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVBy
b2Nlc3M6OlNlcnZpY2VXb3JrZXJDb250ZXh0U3RhcnRlZChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciwgZGF0YS5yZWdpc3RyYXRpb25LZXksIHRocmVhZElkZW50aWZpZXIsIGRhdGEud29ya2Vy
SUQpLCAwKTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXI6OnN0YXJ0RmV0
Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRl
bnRpZmllciwgdWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zKQoreworICAgIFVO
VVNFRF9QQVJBTShzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CisKKyAgICAvLyBIYXJkIGNvZGlu
ZyBzb21lIGZldGNoZXMgZm9yIHRlc3RpbmcgcHVycG9zZSB1bnRpbCB3ZSBpbXBsZW1lbnQgdGhl
IGNyZWF0aW9uIG9mIGZldGNoIGV2ZW50LgorICAgIGlmIChyZXF1ZXN0LnVybCgpLnN0cmluZygp
LmNvbnRhaW5zKCJ0ZXN0MSIpKSB7CisgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7
CisgICAgICAgIHJlc3BvbnNlLnNldFVSTChyZXF1ZXN0LnVybCgpKTsKKyAgICAgICAgcmVzcG9u
c2Uuc2V0SFRUUFN0YXR1c0NvZGUoMjAwKTsKKyAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1
c1RleHQoQVNDSUlMaXRlcmFsKCJIZWxsbyBmcm9tIHNlcnZpY2Ugd29ya2VyIikpOworICAgICAg
ICBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJv
Y2Vzczo6RGlkUmVjZWl2ZUZldGNoUmVzcG9uc2Uoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIs
IGZldGNoSWRlbnRpZmllciwgcmVzcG9uc2UpLCAwKTsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9T
dG9yYWdlUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OkRpZEZpbmlzaEZl
dGNoKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIpLCAwKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAocmVxdWVzdC51cmwoKS5zdHJpbmcoKS5jb250
YWlucygidGVzdDIiKSkgeworICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOworICAg
ICAgICByZXNwb25zZS5zZXRVUkwocmVxdWVzdC51cmwoKSk7CisgICAgICAgIHJlc3BvbnNlLnNl
dEhUVFBTdGF0dXNDb2RlKDUwMCk7CisgICAgICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNUZXh0
KEFTQ0lJTGl0ZXJhbCgiRXJyb3IgZnJvbSBzZXJ2aWNlIHdvcmtlciIpKTsKKyAgICAgICAgbV9j
b25uZWN0aW9uVG9TdG9yYWdlUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6
OkRpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBmZXRj
aElkZW50aWZpZXIsIHJlc3BvbnNlKSwgMCk7CisgICAgICAgIG1fY29ubmVjdGlvblRvU3RvcmFn
ZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpEaWRGaW5pc2hGZXRjaChz
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyKSwgMCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgaWYgKHJlcXVlc3QudXJsKCkuc3RyaW5nKCkuY29udGFpbnMo
InRlc3QzIikpIHsKKyAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKKyAgICAgICAg
cmVzcG9uc2Uuc2V0VVJMKHJlcXVlc3QudXJsKCkpOworICAgICAgICByZXNwb25zZS5zZXRIVFRQ
U3RhdHVzQ29kZSg1MDApOworICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChBU0NJ
SUxpdGVyYWwoIkVycm9yIGZyb20gc2VydmljZSB3b3JrZXIiKSk7CisgICAgICAgIHJlc3BvbnNl
LnNldFR5cGUoUmVzb3VyY2VSZXNwb25zZTo6VHlwZTo6RXJyb3IpOworICAgICAgICBtX2Nvbm5l
Y3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6RGlk
UmVjZWl2ZUZldGNoUmVzcG9uc2Uoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGZldGNoSWRl
bnRpZmllciwgcmVzcG9uc2UpLCAwKTsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9TdG9yYWdlUHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OkRpZEZpbmlzaEZldGNoKHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIpLCAwKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpGYWlsZWRGZXRjaChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciwgZmV0Y2hJZGVudGlmaWVyKSwgMCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNvbnRleHRNYW5h
Z2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjk4MmE3YzdjZWU1ZTE3MWNlNjEzMTU1OGZjMDRhNDA5ZmNjYWI0
YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1Nl
cnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKworI2luY2x1ZGUg
IkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0V4Y2VwdGlvbk9yLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IEZldGNoT3B0aW9uczsKK2NsYXNzIFJl
c291cmNlUmVxdWVzdDsKK3N0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE7Cit9CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIgewor
cHVibGljOgorICAgIGV4cGxpY2l0IFNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlcihSZWY8SVBD
OjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCisgICAgICAgIDogbV9jb25uZWN0aW9uVG9TdG9y
YWdlUHJvY2VzcyhXVEZNb3ZlKGNvbm5lY3Rpb24pKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lk
IHN0YXJ0U2VydmljZVdvcmtlckNvbnRleHQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYpOworICAgIHZv
aWQgc3RhcnRGZXRjaCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0
X3QgZmV0Y2hJZGVudGlmaWVyLCB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25z
Jik7CisKK3ByaXZhdGU6CisgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uVG9T
dG9yYWdlUHJvY2VzczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViQ29yZTo6U2Vy
dmljZVdvcmtlclRocmVhZD4+IG1fd29ya2VyVGhyZWFkTWFwOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVj
dGlvbi5jcHAKaW5kZXggNzZhZTdiNTViYTAzMGNjYjAzODM3ODZlODg3Mjg1OTlmZmJkNmFkYS4u
NjhmNjJlZTgxNDZkYThiZGVmZTE5YWUxYmZiOGE0ZGYwMjljZGM5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rp
b24uY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCiAj
aW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5o
IgogI2luY2x1ZGUgIlN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJTV09yaWdpblRh
YmxlLmgiCkBAIC03NSw2ICs3NiwxNSBAQCB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6c2V0
U1dPcmlnaW5UYWJsZVNoYXJlZE1lbW9yeShjb25zdCBTaGFyZWRNZW1vcnk6OkhhbgogICAgIG1f
c3dPcmlnaW5UYWJsZS0+c2V0U2hhcmVkTWVtb3J5KGhhbmRsZSk7CiB9CiAKK1JlZjxTZXJ2aWNl
V29ya2VyQ2xpZW50RmV0Y2g+IFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6c3RhcnRGZXRjaChSZWY8
V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI+JiYgbG9hZGVyLCB1aW50NjRfdCBpZGVudGlmaWVyLCBX
VEY6OkZ1bmN0aW9uPHZvaWQoUmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
KT4mJiBmYWxsYmFjaykKK3sKKyAgICBBU1NFUlQobG9hZGVyLT5vcHRpb25zKCkuc2VydmljZVdv
cmtlcnNNb2RlID09IFNlcnZpY2VXb3JrZXJzTW9kZTo6QWxsKTsKKy8vICAgIEFTU0VSVChsb2Fk
ZXItPm9wdGlvbnMoKS5zZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CisKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlN0YXJ0RmV0Y2goaWRlbnRpZmllciwgbG9hZGVy
LT5vcHRpb25zKCkuc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGxvYWRlci0+b3JpZ2luYWxSZXF1
ZXN0KCksIGxvYWRlci0+b3B0aW9ucygpKSk7CisgICAgcmV0dXJuIFNlcnZpY2VXb3JrZXJDbGll
bnRGZXRjaDo6Y3JlYXRlKFdURk1vdmUobG9hZGVyKSwgaWRlbnRpZmllciwgbV9jb25uZWN0aW9u
LmdldCgpLCBXVEZNb3ZlKGZhbGxiYWNrKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
CiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaAppbmRleCAy
NjE3ZWMyZTc0ZjBlNTRlMjQ0NjY4YzJjMjM1ZDM2M2JkYWRkNjUzLi4zNDNjODIwZDY2YTBhM2Mx
Mjg4YmMxZmY3MWJhMzU1OTc5YjY4ZjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaApAQCAtMzEsNiArMzEs
NyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5k
ZXIuaCIKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TV0NsaWVudENvbm5lY3Rpb24uaD4KICNp
bmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgpAQCAt
NDEsNiArNDIsNyBAQCBzdHJ1Y3QgRXhjZXB0aW9uRGF0YTsKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKK2NsYXNzIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDsKIGNsYXNzIFdlYlNXT3JpZ2luVGFi
bGU7CiAKIGNsYXNzIFdlYlNXQ2xpZW50Q29ubmVjdGlvbiA6IHB1YmxpYyBXZWJDb3JlOjpTV0Ns
aWVudENvbm5lY3Rpb24sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciB7CkBAIC01OCw2ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCiAg
ICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyUmVnaXN0ZXJlZEZvck9yaWdpbihjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbiYpIGNvbnN0IGZpbmFsOworICAgIFJlZjxTZXJ2aWNlV29ya2VyQ2xp
ZW50RmV0Y2g+IHN0YXJ0RmV0Y2goUmVmPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyPiYmLCB1aW50
NjRfdCBpZGVudGlmaWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXImLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKT4mJiBmYWxsYmFjayk7CiAKIHBy
aXZhdGU6CiAgICAgdm9pZCBzY2hlZHVsZVN0b3JhZ2VKb2IoY29uc3QgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckpvYkRhdGEmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwCmluZGV4IDYxZDhjZTU2
ZWVjNWJkNDE3M2I2NDJiZTkwNjFlNzNjNzczNzZmOTkuLmM0YTZiNTVmNmI4YjI0MTE2ZTkzMjY2
ZTBlMzQwODQ3MmViOGRkMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcApAQCAtNTgsNiAr
NTgsNDIgQEAgV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uJiBXZWJTZXJ2aWNlV29ya2VyUHJv
dmlkZXI6OnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uRm8KICAgICByZXR1cm4gV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkud2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VydmljZVdvcmtl
ckNvbm5lY3Rpb25Gb3JTZXNzaW9uKHNlc3Npb25JRCk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9v
bCBzaG91bGRIYW5kbGVGZXRjaChjb25zdCBXZWJTV0NsaWVudENvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25z
JiBvcHRpb25zKQoreworICAgIGlmIChvcHRpb25zLnNlcnZpY2VXb3JrZXJzTW9kZSAhPSBTZXJ2
aWNlV29ya2Vyc01vZGU6OkFsbCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gRklY
TUU6IFdlIHNob3VsZCBwcm9iYWJseSBhc3NlcnQgdGhhdCBvcHRpb25zLnNlcnZpY2VXb3JrZXJz
SWRlbnRpZmllciBpcyBub3QgbnVsbC4KKyAgICBpZiAoaXNQb3RlbnRpYWxOYXZpZ2F0aW9uT3JT
dWJyZXNvdXJjZVJlcXVlc3Qob3B0aW9ucy5kZXN0aW5hdGlvbikpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgbm9uLXN1YnJlc291cmNlIHJlcXVlc3Qg
bG9hZHMuCisgICAgaWYgKGlzTm9uU3VicmVzb3VyY2VSZXF1ZXN0KG9wdGlvbnMuZGVzdGluYXRp
b24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gY29ubmVjdGlvbi5oYXNT
ZXJ2aWNlV29ya2VyUmVnaXN0ZXJlZEZvck9yaWdpbigqcmVzb3VyY2Uub3JpZ2luKCkpOworfQor
Cit2b2lkIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6aGFuZGxlRmV0Y2goUmVzb3VyY2VMb2Fk
ZXImIGxvYWRlciwgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFdURjo6RnVuY3Rpb248dm9pZChSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYpPiYmIGZhbGxiYWNrKQoreworICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS53ZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbigpLT5zZXJ2aWNl
V29ya2VyQ29ubmVjdGlvbkZvclNlc3Npb24oc2Vzc2lvbklEKTsKKworICAgIGlmICghc2hvdWxk
SGFuZGxlRmV0Y2goY29ubmVjdGlvbiwgcmVzb3VyY2UsIGxvYWRlci5vcHRpb25zKCkpKSB7Cisg
ICAgICAgIC8vIEFkZCBhbiBvcHRpb24gdG8gZXJyb3IgcmVzb3VyY2UgbG9hZCBmb3IgRFRMIHRv
IGFjdHVhbGx5IGdvIHRocm91Z2ggcHJlZmxpZ2h0LgorICAgICAgICBmYWxsYmFjayhsb2FkZXIs
IGxvYWRlci5vcmlnaW5hbFJlcXVlc3QoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBhdXRvIGZldGNoID0gY29ubmVjdGlvbi5zdGFydEZldGNoKGxvYWRlciwgKyttX25leHRPbmdv
aW5nRmV0Y2hJZGVudGlmaWVyLCBXVEZNb3ZlKGZhbGxiYWNrKSk7CisgICAgbV9vbmdvaW5nRmV0
Y2hlcy5hZGQobV9uZXh0T25nb2luZ0ZldGNoSWRlbnRpZmllciwgV1RGTW92ZShmZXRjaCkpOwor
fQorCit2b2lkIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6ZGlkUmVjZWl2ZVNlcnZpY2VXb3Jr
ZXJDbGllbnRGZXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRl
Y29kZXImIGRlY29kZXIpCit7CisgICAgaWYgKGF1dG8gZmV0Y2ggPSBtX29uZ29pbmdGZXRjaGVz
LmdldChkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpCisgICAgICAgIGZldGNoLT5kaWRSZWNlaXZl
TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5o
CmluZGV4IDc3NWY1ZWUwNGIyYzZmZGQ3NTZhMmVjZTg4YzY4YTc3MGZjNzAxMGYuLjljZjAxYzJh
MGViOTVhYTJjMGNiNzI1MGJkNzYxNDM1NzljZjJkYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5o
CkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKKyNpbmNs
dWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZp
Y2VXb3JrZXJQcm92aWRlci5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCkBA
IC0zNiwxMiArMzcsMTkgQEAgY2xhc3MgV2ViU2VydmljZVdvcmtlclByb3ZpZGVyIGZpbmFsIDog
cHVibGljIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJQcm92aWRlciB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlciYgc2luZ2xldG9uKCk7CiAKKyAgICB2b2lkIGhh
bmRsZUZldGNoKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJiwgV2ViQ29yZTo6Q2FjaGVkUmVzb3Vy
Y2UmLCBQQUw6OlNlc3Npb25JRCwgV1RGOjpGdW5jdGlvbjx2b2lkKFdlYkNvcmU6OlJlc291cmNl
TG9hZGVyJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik+JiYgZmFsbGJhY2spOwor
CisgICAgdm9pZCBkaWRSZWNlaXZlU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKKwogcHJpdmF0ZToKICAgICBmcmllbmQgTmV2
ZXJEZXN0cm95ZWQ8V2ViU2VydmljZVdvcmtlclByb3ZpZGVyPjsKICAgICBXZWJTZXJ2aWNlV29y
a2VyUHJvdmlkZXIoKTsKIAogICAgIFdlYkNvcmU6OlNXQ2xpZW50Q29ubmVjdGlvbiYgc2Vydmlj
ZVdvcmtlckNvbm5lY3Rpb25Gb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKSBmaW5hbDsKIAorICAg
IEhhc2hNYXA8dWludDY0X3QsIFJlZjxTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g+PiBtX29uZ29p
bmdGZXRjaGVzOworICAgIHVpbnQ2NF90IG1fbmV4dE9uZ29pbmdGZXRjaElkZW50aWZpZXIgeyAw
IH07CisKIH07IC8vIGNsYXNzIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcgogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA1YTEy
ZDA0ZGNiZDIzMTEyYzQwMzkzMTk0NWU1ZmM1NTYxMDMwNzc2Li5iMmRmODM3ZTFkODMzNTkxZmE1
YjQ4NGUzMzliY2Q4NTYzYzE1MDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwCkBAIC0yNywxMSArMjcsMTMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJX
ZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbi5oIgogCisjaW5jbHVkZSAiU2VydmljZVdvcmtl
ckNsaWVudEZldGNoTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTdG9yYWdlVG9XZWJQcm9jZXNzQ29u
bmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViSURCQ29ubmVjdGlvblRvU2VydmVyTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiV2ViU1dDbGllbnRD
b25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViU1dDbGllbnRDb25uZWN0aW9uTWVzc2FnZXMuaCIK
KyNpbmNsdWRlICJXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCIKIAogdXNpbmcgbmFtZXNwYWNl
IFBBTDsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNjcsNiArNjksMTAgQEAgdm9pZCBX
ZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW8KICAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJDb25uZWN0aW9uLT5k
aWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6
OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAg
ICAgIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZVNlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CiAjZW5kaWYKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA2ZTI3NjcxMWVjYzU4N2I5
NzRhY2EzMTMxNmRiZDFjYTNjZjcxOTFiLi5kZWI5MDc3OGU0OTlkYTAyYTllOTlkYTM1OTU4ZTQx
ZTFlOTVjNjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC00
MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5j
bHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bk1hbmFnZXIuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuaCIKICNp
bmNsdWRlICJTZXNzaW9uVHJhY2tlci5oIgogI2luY2x1ZGUgIlN0YXRpc3RpY3NEYXRhLmgiCiAj
aW5jbHVkZSAiU3RvcmFnZVByb2Nlc3NNZXNzYWdlcy5oIgpAQCAtMTA1LDcgKzEwNiw2IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRPYnNlcnZlci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TV0NvbnRleHRNYW5hZ2VyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TY2hlbWVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YS5oPgpAQCAtMTYyMiw3ICsxNjIyLDcgQEAgTGliV2ViUlRDTmV0d29yayYgV2ViUHJvY2Vz
czo6bGliV2ViUlRDTmV0d29yaygpCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogdm9pZCBX
ZWJQcm9jZXNzOjpnZXRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbigpCiB7Ci0gICAgQVNTRVJUKCFt
X3dvcmtlckNvbnRleHRDb25uZWN0aW9uKTsKKyAgICBBU1NFUlQoIW1fc2VydmljZVdvcmtlck1h
bmFnZXIpOwogCiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAgICAgSVBDOjpDb25uZWN0
aW9uOjpTb2NrZXRQYWlyIHNvY2tldFBhaXIgPSBJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVBsYXRm
b3JtQ29ubmVjdGlvbigpOwpAQCAtMTY0MiwyMCArMTY0MiwyNiBAQCB2b2lkIFdlYlByb2Nlc3M6
OmdldFdvcmtlckNvbnRleHRDb25uZWN0aW9uKCkKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogI2VuZGlmCiAKLSAgICBtX3dvcmtlckNvbnRleHRDb25uZWN0aW9uID0gSVBDOjpD
b25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyLCAq
dGhpcyk7Ci0gICAgbV93b3JrZXJDb250ZXh0Q29ubmVjdGlvbi0+b3BlbigpOwotCisgICAgYXV0
byB3b3JrZXJDb250ZXh0Q29ubmVjdGlvbiA9IElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU2VydmVy
Q29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRpZmllciwgKnRoaXMpOworICAgIHdvcmtlckNvbnRl
eHRDb25uZWN0aW9uLT5vcGVuKCk7CisgICAgbV9zZXJ2aWNlV29ya2VyTWFuYWdlciA9ICBTZXJ2
aWNlV29ya2VyQ29udGV4dE1hbmFnZXIoV1RGTW92ZSh3b3JrZXJDb250ZXh0Q29ubmVjdGlvbikp
OwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6RGlkR2V0V29ya2VyQ29udGV4dENvbm5l
Y3Rpb24oY29ubmVjdGlvbkNsaWVudFBvcnQpLCAwKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpz
dGFydFNlcnZpY2VXb3JrZXJDb250ZXh0KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEpCiB7Ci0gICAgYXV0byBj
b250ZXh0UmVzdWx0ID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc3RhcnRTZXJ2aWNl
V29ya2VyQ29udGV4dChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgZGF0YSk7Ci0gICAgCi0g
ICAgaWYgKGNvbnRleHRSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgIG1fd29ya2VyQ29u
dGV4dENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpTZXJ2aWNlV29y
a2VyQ29udGV4dEZhaWxlZFRvU3RhcnQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGRhdGEu
cmVnaXN0cmF0aW9uS2V5LCBkYXRhLndvcmtlcklELCBjb250ZXh0UmVzdWx0LmV4Y2VwdGlvbigp
Lm1lc3NhZ2UoKSksIDApOwotICAgIGVsc2UKLSAgICAgICAgbV93b3JrZXJDb250ZXh0Q29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OlNlcnZpY2VXb3JrZXJDb250ZXh0
U3RhcnRlZChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgZGF0YS5yZWdpc3RyYXRpb25LZXks
IGNvbnRleHRSZXN1bHQucmV0dXJuVmFsdWUoKSwgZGF0YS53b3JrZXJJRCksIDApOworICAgIGlm
ICghbV9zZXJ2aWNlV29ya2VyTWFuYWdlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zZXJ2
aWNlV29ya2VyTWFuYWdlci0+c3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4dChzZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciwgZGF0YSk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzczo6c3RhcnRGZXRjaElu
U2VydmljZVdvcmtlcih1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0
X3QgZmV0Y2hJZGVudGlmaWVyLCB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMp
Cit7CisgICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJNYW5hZ2VyKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX3NlcnZpY2VXb3JrZXJNYW5hZ2VyLT5zdGFydEZldGNoKHNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCByZXF1
ZXN0LCBvcHRpb25zKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaAppbmRleCA1YzJlNmM3NmRmNzgyNDVhMWIzMTU0OWM2ZTAxMWZlNGY1ZDRkM2Y3Li5mZWUx
NDM2MjZiNzFlYjkxMGM4NzM1MGYwNTZkMjI3NmFiZmM5MWE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJQbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUNhY2hlc1RvQ2xlYXIu
aCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtl
ckNvbnRleHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXJTdGF0ZS5oIgogI2luY2x1
ZGUgIlZpZXdVcGRhdGVEaXNwYXRjaGVyLmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9ySW50ZXJy
dXB0RGlzcGF0Y2hlci5oIgpAQCAtMzAwLDcgKzMwMSw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogICAgIHZvaWQgZ2V0V29ya2VyQ29udGV4dENvbm5lY3Rpb24oKTsK
ICAgICB2b2lkIHN0YXJ0U2VydmljZVdvcmtlckNvbnRleHQodWludDY0X3Qgc2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYp
OwotICAgIFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IG1fd29ya2VyQ29udGV4dENvbm5lY3Rpb247
CisgICAgdm9pZCBzdGFydEZldGNoSW5TZXJ2aWNlV29ya2VyKHVpbnQ2NF90IHNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmKTsKICNlbmRpZgogCiAgICAgdm9pZCByZWxlYXNlUGFn
ZUNhY2hlKCk7CkBAIC00MzgsNiArNDM5LDkgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShXQVlM
QU5EKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxXYXlsYW5kQ29tcG9zaXRvckRpc3BsYXk+IG1fd2F5
bGFuZENvbXBvc2l0b3JEaXNwbGF5OwogI2VuZGlmCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQorICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyPiBtX3NlcnZp
Y2VXb3JrZXJNYW5hZ2VyOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXgg
MjIwNjM2MDFlMDYzYWI1YjIxNzhmZjdiMzZjOWM5OTEyODEwNzk3Zi4uMWE3Yjc2ODg5MDQwZTg0
Yjc1YjVhY2EyNzE2NWRiOTVlMzg0NDA0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTExNyw1ICsxMTcsNiBAQCBtZXNzYWdlcyAt
PiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CiAgICAgR2V0V29ya2VyQ29udGV4dENvbm5lY3Rpb24oKQogICAgIFN0YXJ0U2VydmljZVdvcmtl
ckNvbnRleHQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHN0cnVjdCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgY29udGV4dERhdGEpCitTdGFydEZldGNoSW5T
ZXJ2aWNlV29ya2VyKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRf
dCBmZXRjaElkZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgc3RydWN0IFdlYkNvcmU6OkZldGNoT3B0aW9u
cyBvcHRpb25zKQogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZGE4N2UzOTgxZWE0ZTA0NTljN2FlNzY4MjUw
ZTA0MjQyNGVlYmY3OC4uN2ViYTg3Y2U1N2E2ZmM2NjY2MTdmY2UxNzAzZGRhNjAwYzkxMWQ0MyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTEwLTE4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5u
QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgcHJlbGltaW5hcnkgc3VwcG9ydCBmb3IgU2Vydmlj
ZVdvcmtlciBIYW5kbGUgRmV0Y2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3ODQ3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvYmFzaWMtZmV0Y2guaHR0
cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2Vy
dmljZS9iYXNpYy1mZXRjaC5odHRwcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvYmFzaWMtZmV0Y2gtd29ya2VyLmpzOiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvYmFzaWMtZmV0
Y2guanM6IEFkZGVkLgorCiAyMDE3LTEwLTE4ICBNczJnZXIgIDxNczJnZXJAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbR1RLXSBUZXN0IGdhcmRlbmluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2ljLWZldGNoLmh0dHBzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2ljLWZldGNoLmh0
dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZmQ2NDlmMDliZjE0MzAxY2U4N2NkMGM5ZmM2
MjRhZGM2MGQ2NGZlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
b3JrZXJzL3NlcnZpY2UvYmFzaWMtZmV0Y2guaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
NiBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEyOiB0ZXN0MSBzdGF0dXMgY29kZTogMjAwCitD
T05TT0xFIE1FU1NBR0U6IGxpbmUgMTM6IHRlc3QxIHN0YXR1cyB0ZXh0OiBIZWxsbyBmcm9tIHNl
cnZpY2Ugd29ya2VyCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTY6IHRlc3QyIHN0YXR1cyBjb2Rl
OiA1MDAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxNzogdGVzdDIgc3RhdHVzIHRleHQ6IEVycm9y
IGZyb20gc2VydmljZSB3b3JrZXIKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyNjogdGVzdDMgZmV0
Y2ggZmFpbGVkIGFzIGV4cGVjdGVkCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2ljLWZldGNoLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1mZXRjaC5odHRwcy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjYyYTA2NmFjOThlZjc4Yjg4NGY1ZmNhZTQ2YTk0MThhNThhNWNiYWQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1mZXRj
aC5odHRwcy5odG1sCkBAIC0wLDAgKzEsOSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvc3ctdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisK
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYmFzaWMtZmV0Y2guanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3Nl
cnZpY2UvcmVzb3VyY2VzL2Jhc2ljLWZldGNoLXdvcmtlci5qcyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9iYXNpYy1mZXRjaC13b3JrZXIuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjlkOGEyYmQzMDE1Y2FlNGE0YTQ4NTZhMjRmMzlhZjg2YzE2ZDE3NAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291
cmNlcy9iYXNpYy1mZXRjaC13b3JrZXIuanMKQEAgLTAsMCArMSBAQAorLy8gRklYTUU6IHJlZ2lz
dGVyIGFuIG9uZmV0Y2ggZXZlbnQgaGFuZGxlciBhbmQgaGFuZGxlICJ0ZXN0MSIsICJ0ZXN0MiIg
YW5kICJ0ZXN0MyIgVVJMcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3Jr
ZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2ljLWZldGNoLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2ljLWZldGNoLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjI4NzQzYTI2NDI5YjE3NzdiMjRjYjc2MTI1ZjgwMDNjYzljNDhkNGQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvYmFz
aWMtZmV0Y2guanMKQEAgLTAsMCArMSwzNCBAQAorZnVuY3Rpb24gZG9uZSgpCit7CisgICAgZmlu
aXNoU1dUZXN0KCk7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHRlc3QoKQoreworICAgIHRyeSB7Cisg
ICAgICAgIGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCJyZXNvdXJjZXMv
YmFzaWMtZmV0Y2gtd29ya2VyLmpzIiwgeyB9KTsKKworICAgICAgICB2YXIgcmVzcG9uc2UgPSBh
d2FpdCBmZXRjaCgidGVzdDEiKTsKKyAgICAgICAgY29uc29sZS5sb2coInRlc3QxIHN0YXR1cyBj
b2RlOiAiICsgcmVzcG9uc2Uuc3RhdHVzKTsKKyAgICAgICAgY29uc29sZS5sb2coInRlc3QxIHN0
YXR1cyB0ZXh0OiAiICsgcmVzcG9uc2Uuc3RhdHVzVGV4dCk7CisKKyAgICAgICAgdmFyIHJlc3Bv
bnNlID0gYXdhaXQgZmV0Y2goInRlc3QyIik7CisgICAgICAgIGNvbnNvbGUubG9nKCJ0ZXN0MiBz
dGF0dXMgY29kZTogIiArIHJlc3BvbnNlLnN0YXR1cyk7CisgICAgICAgIGNvbnNvbGUubG9nKCJ0
ZXN0MiBzdGF0dXMgdGV4dDogIiArIHJlc3BvbnNlLnN0YXR1c1RleHQpOworCisgICAgICAgIHRy
eSB7CisgICAgICAgICAgICByZXNwb25zZSA9IGF3YWl0IGZldGNoKCJ0ZXN0MyIpOworICAgICAg
ICAgICAgY29uc29sZS5sb2coInRlc3QzIGZldGNoIHN1Y2NlZWRlZCB1bmV4cGVjdGVkbHkiKTsK
KyAgICAgICAgICAgIGNvbnNvbGUubG9nKCJ0ZXN0MyBzdGF0dXMgY29kZTogIiArIHJlc3BvbnNl
LnN0YXR1cyk7CisgICAgICAgICAgICBjb25zb2xlLmxvZygidGVzdDMgc3RhdHVzIHRleHQ6ICIg
KyByZXNwb25zZS5zdGF0dXNUZXh0KTsKKworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAg
ICAgICBjb25zb2xlLmxvZygidGVzdDMgZmV0Y2ggZmFpbGVkIGFzIGV4cGVjdGVkIik7CisgICAg
ICAgIH0KKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgY29uc29sZS5sb2coIkdvdCBleGNlcHRp
b246ICIgKyBlKTsKKyAgICB9CisgICAgZmluaXNoU1dUZXN0KCk7Cit9CisKK3Rlc3QoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324154</attachid>
            <date>2017-10-18 12:59:02 -0700</date>
            <delta_ts>2017-10-18 14:49:03 -0700</delta_ts>
            <desc>GTK fix try</desc>
            <filename>bug-178475-20171018125901.patch</filename>
            <type>text/plain</type>
            <size>91353</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzNjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmViOTQ5MjMwM2Q1Y2Vh
ZWRkYzcxNjZiMGYwZDEyM2E5ZTA2MzMyMy4uMzQ5ZjcwMjU3YzExYTcyODBkZGE4NjMwYjRjN2Vk
ZjNmOTJiZjNkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE3LTEwLTE4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgcHJlbGltaW5hcnkg
c3VwcG9ydCBmb3IgU2VydmljZVdvcmtlciBIYW5kbGUgRmV0Y2gKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODQ3NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvd29ya2Vycy9z
ZXJ2aWNlL2Jhc2ljLWZldGNoLmh0dHBzLmh0bWwKKworICAgICAgICBBZGRpbmcgcGFyYW1ldGVy
cyB0byBhbGxvdyBXZWJLaXQgdG8gZG8gbG9hZGluZyB0aHJvdWdoIFNlcnZpY2UgV29ya2VyIG9y
IHRocm91Z2ggcmVndWxhciBuZXR3b3JraW5nLgorICAgICAgICBBIHNjcmlwdCBjb250ZXh0IGlz
IG5vdyBzdG9yaW5nIGl0cyBzZWxlY3RlZCBzZXJ2aWNlIHdvcmtlciBpZGVudGlmZXIuIFRoaXMg
c2hvdWxkIGJlIGZ1bGx5IGltcGxlbWVudGVkIGxhdGVyIG9uLgorICAgICAgICBUaGlzIHNlbGVj
dGVkIHNlcnZpY2Ugd29ya2VyIGlkZW50aWZpZXIgaXMgcGFzc2VkIHRvIGxvYWRpbmcgY29kZSBh
cyBhIFJlc291cmNlTG9hZGVyT3B0aW9ucyBmaWVsZC4KKyAgICAgICAgU2VydmljZSB3b3JrZXJz
IG1vZGUgaXMgYWxzbyBhZGRlZCBhcyBhIFJlc291cmNlTG9hZGVyT3B0aW9ucyBmaWVsZCBzbyB0
aGF0IHRoZSBzZXJ2aWNlIHdvcmtlciBjYW4gYmUgYnlwYXNzZWQuCisKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OnNlbGVjdGVkU2VydmljZVdvcmtlcklkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c2V0U2VsZWN0ZWRTZXJ2aWNlV29ya2VySWRlbnRp
Zmllcik6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OkRvY3VtZW50VGhyZWFk
YWJsZUxvYWRlcik6CisgICAgICAgICogbG9hZGVyL0ZldGNoT3B0aW9ucy5oOgorICAgICAgICAo
V2ViQ29yZTo6aXNQb3RlbnRpYWxOYXZpZ2F0aW9uT3JTdWJyZXNvdXJjZVJlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6aXNOb25TdWJyZXNvdXJjZVJlcXVlc3QpOgorICAgICAgICAqIGxvYWRl
ci9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaDoKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFk
YWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVy
OjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVh
ZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Ok1haW5UaHJlYWRCcmlkZ2UpOgorICAgICAg
ICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFk
Lmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRX
aXRoUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
clByb3ZpZGVyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0
TWFuYWdlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlclRocmVhZC5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXIuaDoKKwogMjAxNy0xMC0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgogCiAgICAgICAgIEFkZCBhbiBlZmZpY2llbnQgZGF0YSBzdHJ1Y3R1cmUgZm9yIFdlYkNvcmUg
dG8gcXVlcnkgaWYgdGhlcmUgaXMgYSBTZXJ2aWNlIFdvcmtlciByZWdpc3RlcmVkIGZvciBhIGdp
dmVuIG9yaWdpbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCA1MGNkNjQyOGEyYTBjYmJmOTNhZmQ4M2ZiOGMzNjBkMmFj
MzA1ZjAyLi4xYTI5OGQwYWY1Y2ZkOTZiNzk5MTczOTkyZTRmZjA5NjE4YWRmMTkwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDg2IEBACisyMDE3LTEwLTE4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KKworICAgICAgICBBZGQgcHJlbGltaW5hcnkgc3VwcG9ydCBmb3IgU2VydmljZVdv
cmtlciBIYW5kbGUgRmV0Y2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3ODQ3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFByZWxpbWluYXJ5IHN1cHBvcnQgb2YgSGFuZGxlIEZldGNoIGFsZ29yaXRobSBh
bmQgaW50ZWdyYXRpb24gd2l0aCBmZXRjaCBzcGVjLgorICAgICAgICBBZGRpbmcgU2VydmljZVdv
cmtlckNsaWVudEZldGNoIGFzIHRoZSBjbGFzcyByZXNwb25zaWJsZSB0byBkbyB0aGUgbG9hZCB0
aHJvdWdoIFNlcnZpY2VXb3JrZXIuCisgICAgICAgIEl0IGlzIHNpbWlsYXIgdG8gV2ViUmVzb3Vy
Y2VMb2FkZXIgdGhhdCBkbyB0aGUgbG9hZCB0aHJvdWdoIE5ldHdvcmtQcm9jZXNzLgorICAgICAg
ICBJbiBjYXNlIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaCBpcyBub3QgYWJsZSB0byBsb2FkIHRo
cm91Z2ggU2VydmljZVdvcmtlciwKKyAgICAgICAgaXQgd2lsbCBmYWxsYmFjayB0byBXZWJSZXNv
dXJjZUxvYWRlciB0aHJvdWdoIGEgZmFsbGJhY2sgY2FsbGJhY2suCisKKyAgICAgICAgTG9hZGlu
ZyB0aHJvdWdoIFNlcnZpY2UgV29ya2VyIGlzIGRvbmUgY3VycmVudGx5IGlmOgorICAgICAgICAt
IFRoZXJlIGlzIGEgc2VydmljZSB3b3JrZXIgcmVnaXN0ZXJlZCBmb3IgdGhhdCBvcmlnaW4KKyAg
ICAgICAgLSBSZXF1ZXN0IGlzIGEgc3VicmVzb3VyY2UKKyAgICAgICAgLSBzZXJ2aWNlIHdvcmtl
cnMgbW9kZSBpcyBhbGwKKyAgICAgICAgVGhlcmUgd2lsbCBiZSBjYXNlcyB3aGVyZSB0aGUgc2Vy
dmljZSB3b3JrZXIgd2lsbCBub3QgZG8gdGhlIGxvYWRpbmcsIGZvciBpbnN0YW5jZSB3aGVuIGZl
dGNoIGV2ZW50IGhhbmRsZXIgaXMgbm90IHNldC4KKyAgICAgICAgRnV0dXJlIHdvcmsgc2hvdWxk
IHRyeSB0byByZWR1Y2UgdGhlIGNhc2VzIHdoZXJlIHRoZSBJUEMgZGFuc2UgaXMgZG9uZSB1bm5l
Y2Vzc2FyaWx5LgorCisgICAgICAgIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaCBpcyByZXNwb25z
aWJsZSB0byBhZGFwdCB0aGUgU2VydmljZVdvcmtlciByZXNwb25zZSB0byBSZXNvdXJjZUxvYWRl
ci4KKyAgICAgICAgSW4gcGFydGljdWxhciwgaXQgaXMgY2FsbGluZyBSZXNvdXJjZUxvYWRlciBl
cnJvciBjYWxsYmFjayBpZiByZXNwb25zZSBpcyBvZiB0eXBlIGVycm9yLgorICAgICAgICBJdCBp
cyBjYWxsaW5nIFJlc291cmNlTG9hZGVyIHJlZGlyZWN0aW9uIGNhbGxiYWNrIGlmIHJlc3BvbnNl
IGlzIGEgcmVkaXJlY3Rpb24gcmVzcG9uc2UuCisKKyAgICAgICAgSW1wbGVtZW50aW5nIHRoZSBJ
UEMgY29tbXVuaWNhdGlvbiBkZWRpY2F0ZWQgdG8gZmV0Y2ggYmV0d2VlbiBXZWJQcm9jZXNzIGFu
ZCBTZXJ2aWNlV29ya2VyIHRocm91Z2ggU3RvcmFnZVByb2Nlc3MuCisgICAgICAgIEluIHRoZSBm
dXR1cmUsIFdlYlByb2Nlc3Mgc2hvdWxkIGNyZWF0ZSBhIGRpcmVjdCBJUEMgY29tbXVuaWNhdGlv
biB0byB0aGUgU2VydmljZVdvcmtlciBwcm9jZXNzLgorCisgICAgICAgIE1vdmVkIFNXQ29udGV4
dE1hbmFnZXIgZnJvbSBXZWJDb3JlIHRvIFdlYktpdCBhbmQgcmVuYW1lZCBpdCB0byBTZXJ2aWNl
V29ya2VyQ29udGV4dE1hbmFnZXIuCisgICAgICAgIFRoaXMgY2xhc3MgaXMgbW92ZWQgdG8gV2Vi
S2l0IGFzIGl0IHdpbGwgaGF2ZSB0byBoYW5kbGUgSVBDIGFuZCBoYXZpbmcgYSBzZXBhcmF0aW9u
IHdpbGwgYWRkIHNvbWUgdW5uZWNlc3NhcnkgYm9pbGVycGxhdGUuCisKKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpzdGFydEZldGNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uOjpkaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNX
U2VydmVyQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUZldGNoRGF0YSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6ZGlkRmluaXNoRmV0Y2gpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OmZhaWxlZEZldGNoKToKKyAgICAgICAgKiBTdG9yYWdl
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oOgorICAgICAgICAq
IFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OmZhaWxlZEZldGNoKToKKyAgICAgICAgKFdl
YktpdDo6U3RvcmFnZVByb2Nlc3M6OmRpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKToKKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OmRpZFJlY2VpdmVGZXRjaERhdGEpOgorICAgICAgICAo
V2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6ZGlkRmluaXNoRmV0Y2gpOgorICAgICAgICAqIFN0b3Jh
Z2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmg6CisgICAgICAgICogU3RvcmFnZVByb2Nlc3MvU3Rv
cmFnZVByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0
ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9h
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9t
TmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJT
dHJhdGVneS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xp
ZW50RmV0Y2guY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6c2hvdWxkUmVkaXJlY3RBc0dF
VCk6CisgICAgICAgIChXZWJLaXQ6OmNvbXB1dGVOZXdSZXF1ZXN0KToKKyAgICAgICAgKFdlYktp
dDo6c2hvdWxkUmVkaXJlY3QpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyQ2xpZW50
RmV0Y2g6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3Jr
ZXJDbGllbnRGZXRjaDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNl
V29ya2VyQ2xpZW50RmV0Y2g6OmRpZEZpbmlzaEZldGNoKToKKyAgICAgICAgKFdlYktpdDo6U2Vy
dmljZVdvcmtlckNsaWVudEZldGNoOjpkaWRGYWlsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0
b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gubWVzc2FnZXMuaW46IEFkZGVk
LgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFn
ZXIuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU1dDb250ZXh0TWFuYWdlci5jcHAuCisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJD
b250ZXh0TWFuYWdlcjo6c3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4dCk6CisgICAgICAgIChXZWJL
aXQ6OlNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlcjo6c3RhcnRGZXRjaCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFu
YWdlci5oLgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXI6OlNl
cnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50
Q29ubmVjdGlvbjo6c3RhcnRGZXRjaCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ2xpZW50Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
ZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpzaG91bGRIYW5kbGVG
ZXRjaCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6aGFuZGxl
RmV0Y2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OmRpZFJl
Y2VpdmVTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjpnZXRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3M6OnN0YXJ0U2VydmljZVdvcmtlckNvbnRleHQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpzdGFydEZldGNoSW5TZXJ2aWNlV29ya2VyKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW46CisKIDIwMTctMTAtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBBZGQgYW4gZWZmaWNpZW50IGRhdGEgc3RydWN0dXJlIGZvciBXZWJDb3Jl
IHRvIHF1ZXJ5IGlmIHRoZXJlIGlzIGEgU2VydmljZSBXb3JrZXIgcmVnaXN0ZXJlZCBmb3IgYSBn
aXZlbiBvcmlnaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBkNWE5MjA0OTQ5ZDhiYmU4ZGJhYjY5MDY5OTY5NmVlOTQ1Mzg3ZTk0
Li43M2Q1MmNhMzUwYmNlOGUzNWFhOTk1ODJjNThlZjdlM2YyNmJiNzdiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMzM2LDgg
KzIzMzYsNiBAQAogCQk1MTdBNjNDNjFCNzQzMTkyMDBFN0RDREMgLyogS2V5ZWRFbmNvZGVyQ0Yu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0E2M0My
MUI3NDMxN0UwMEU3RENEQyAvKiBLZXllZEVuY29kZXJDRi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxN0IyNUE5MUNDODJCMkEwMDYxQzAxMSAv
KiBJREJDb25uZWN0aW9uUHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE3QjI1QTcxQ0M4MjAzMjAwNjFDMDExIC8qIElEQkNvbm5lY3Rpb25Q
cm94eS5jcHAgKi87IH07CiAJCTUxN0IyNUFBMUNDODJCMkEwMDYxQzAxMSAvKiBJREJDb25uZWN0
aW9uUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxN0IyNUE4MUNDODIwMzIwMDYxQzAxMSAvKiBJREJDb25uZWN0aW9uUHJveHkuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MTdDODcwQTFGOEVC
QjI1MDBFQjgwNzYgLyogU1dDb250ZXh0TWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdDODcwODFGOEVCOUJGMDBFQjgwNzYgLyogU1dD
b250ZXh0TWFuYWdlci5jcHAgKi87IH07Ci0JCTUxN0M4NzBCMUY4RUJCMjUwMEVCODA3NiAvKiBT
V0NvbnRleHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTdDODcwOTFGOEVCOUMwMDBFQjgwNzYgLyogU1dDb250ZXh0TWFuYWdlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxN0M4NzE4
MUY4RkQ0RDkwMEVCODA3NiAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3Qzg3MTYxRjhGRDREMzAw
RUI4MDc2IC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAgKi87IH07CiAJCTUxN0RFRUU1
MURFOTRBREMwMEI5MTY0NCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdERUVFMzFERTk0
QURDMDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tICovOyB9Owog
CQk1MTdERUVFODFERTk0QjA4MDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
TWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdE
RUVFNzFERTk0QjA4MDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwMjY5
LDggKzEwMjY3LDYgQEAKIAkJNTE3QTYzQzIxQjc0MzE3RTAwRTdEQ0RDIC8qIEtleWVkRW5jb2Rl
ckNGLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtleWVkRW5jb2RlckNGLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0IyNUE3MUNDODIwMzIwMDYxQzAxMSAv
KiBJREJDb25uZWN0aW9uUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSURCQ29ubmVjdGlvblByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTE3QjI1QTgxQ0M4MjAzMjAwNjFDMDExIC8qIElEQkNvbm5lY3Rpb25Qcm94eS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJDb25uZWN0aW9uUHJveHkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE3Qzg3MDgxRjhFQjlCRjAwRUI4MDc2IC8qIFNXQ29u
dGV4dE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU1dD
b250ZXh0TWFuYWdlci5jcHA7IHBhdGggPSB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRl
eHRNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwotCQk1MTdDODcwOTFG
OEVCOUMwMDBFQjgwNzYgLyogU1dDb250ZXh0TWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBTV0NvbnRleHRNYW5hZ2VyLmg7IHBhdGggPSB3b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsK
IAkJNTE3Qzg3MTAxRjhFRTcyRTAwRUI4MDc2IC8qIFNlcnZpY2VXb3JrZXJUaHJlYWQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU2VydmljZVdvcmtlclRocmVhZC5oOyBwYXRo
ID0gd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oOyBzb3VyY2VU
cmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTUxN0M4NzExMUY4RUU3MkYwMEVCODA3NiAvKiBTZXJ2
aWNlV29ya2VyVGhyZWFkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IFNlcnZpY2VXb3JrZXJUaHJlYWQuY3BwOyBwYXRoID0gd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlclRocmVhZC5jcHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJ
NTE3Qzg3MTYxRjhGRDREMzAwRUI4MDc2IC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTkxMDUsOCArMTkxMDEs
NiBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNTE3Qzg3MTExRjhFRTcyRjAwRUI4MDc2IC8qIFNl
cnZpY2VXb3JrZXJUaHJlYWQuY3BwICovLAogCQkJCTUxN0M4NzEwMUY4RUU3MkUwMEVCODA3NiAv
KiBTZXJ2aWNlV29ya2VyVGhyZWFkLmggKi8sCi0JCQkJNTE3Qzg3MDgxRjhFQjlCRjAwRUI4MDc2
IC8qIFNXQ29udGV4dE1hbmFnZXIuY3BwICovLAotCQkJCTUxN0M4NzA5MUY4RUI5QzAwMEVCODA3
NiAvKiBTV0NvbnRleHRNYW5hZ2VyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNvbnRleHQ7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzA2MDAsNyArMzA1OTQsNiBAQAogCQkJCUIy
MjI3QUY2MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdab29tQW5kUGFuLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMkU0RUM5ODBEMDBDMjJCMDA0MzI2NDMgLyogU1ZHWm9vbUV2ZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MTdBNTMxRDFGNEI1M0IxMDBEQ0RDMEEgLyogU1dDbGllbnRDb25uZWN0aW9u
LmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTdDODcwQjFGOEVCQjI1MDBFQjgwNzYgLyogU1dDb250
ZXh0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE3QTUyRjAxRjQ3NTM1QjAwRENEQzBB
IC8qIFNXU2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUY2NDU5NzFGNEE2ODZGMDBCNTRE
RUQgLyogU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTUxN0E1MzQ2
MUY1MEMxN0YwMERDREMwQSAvKiBTV1NlcnZlcldvcmtlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0z
NDQxMSw3ICszNDQwNCw2IEBACiAJCQkJQjIyMjdBRjUwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1pv
b21BbmRQYW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJFNEVDOTcwRDAwQzIyQjAwNDMyNjQz
IC8qIFNWR1pvb21FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTdBNTMxQzFGNEI1M0Ix
MDBEQ0RDMEEgLyogU1dDbGllbnRDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUx
N0M4NzBBMUY4RUJCMjUwMEVCODA3NiAvKiBTV0NvbnRleHRNYW5hZ2VyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTUxN0E1MkYxMUY0NzU0RTcwMERDREMwQSAvKiBTV1NlcnZlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1MUY2NDU5NjFGNEE2ODZGMDBCNTRERUQgLyogU1dTZXJ2ZXJSZWdpc3Ry
YXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE3QTUzNDUxRjUwQzE3RjAwRENEQzBBIC8q
IFNXU2VydmVyV29ya2VyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggMzJmMTljMzAzZmYwOWMwMzM4MGE0ZjE5MWEy
MDRiMDA5YzBiOWY2MS4uOTY2ZDllN2IyNjIxYjE2MGQwYmM0ODdjMWQ3ODU0YzJjYTdhNGFlMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0yMzAs
NiArMjMwLDExIEBAIHB1YmxpYzoKIAogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGUoKTsK
IAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICB1aW50NjRfdCBzZWxlY3RlZFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VySWRlbnRp
ZmllcjsgfQorICAgIHZvaWQgc2V0U2VsZWN0ZWRTZXJ2aWNlV29ya2VySWRlbnRpZmllcih1aW50
NjRfdCBpZGVudGlmaWVyKSB7IG1fc2VydmljZVdvcmtlcklkZW50aWZpZXIgPSBpZGVudGlmaWVy
OyB9CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIGNsYXNzIEFkZENvbnNvbGVNZXNzYWdlVGFz
ayA6IHB1YmxpYyBUYXNrIHsKICAgICBwdWJsaWM6CkBAIC0yOTcsNiArMzAyLDggQEAgcHJpdmF0
ZToKICNpZiAhQVNTRVJUX0RJU0FCTEVEIHx8IEVOQUJMRShTRUNVUklUWV9BU1NFUlRJT05TKQog
ICAgIGJvb2wgbV9hY3RpdmVET01PYmplY3RSZW1vdmFsRm9yYmlkZGVuIHsgZmFsc2UgfTsKICNl
bmRpZgorCisgICAgdWludDY0X3QgbV9zZXJ2aWNlV29ya2VySWRlbnRpZmllciB7IDAgfTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggOTAyYzg5ZTM5NzM3YzQxMTQxZTM1
YzJjZTQyZTkyNjY5NzQwYzI5ZS4uNGI0OGY1MWVjMDE3NWZjNmYwMWVlYjRjZTFjOTE3YmYyMDNm
ZTg3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHAKQEAgLTEwMyw2ICsxMDMsMTEgQEAgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
OjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBUaHJlYWRhYmwK
IHsKICAgICByZWxheEFkb3B0aW9uUmVxdWlyZW1lbnQoKTsKIAorI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKKyAgICBpZiAobV9vcHRpb25zLnNlcnZpY2VXb3JrZXJzTW9kZSA9PSBTZXJ2aWNl
V29ya2Vyc01vZGU6OkFsbCAmJiAhbV9vcHRpb25zLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQor
ICAgICAgICBtX29wdGlvbnMuc2VydmljZVdvcmtlcklkZW50aWZpZXIgPSBkb2N1bWVudC5zZWxl
Y3RlZFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCk7CisjZW5kaWYKKwogICAgIC8vIFNldHRpbmcg
YSByZWZlcnJlciBoZWFkZXIgaXMgb25seSBzdXBwb3J0ZWQgaW4gdGhlIGFzeW5jIGNvZGUgcGF0
aC4KICAgICBBU1NFUlQobV9hc3luYyB8fCBtX3JlZmVycmVyLmlzRW1wdHkoKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GZXRjaE9wdGlvbnMuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GZXRjaE9wdGlvbnMuaAppbmRleCBhNDA0MjAzMDc3NDQwNDJmMWFjMjc2MmQ2
MzIzNjlmOWVhY2I1MTI0Li43M2I5NjI0Yzg2MDkxNmRlYjk5Mzc3NGNhZjgyOGY5NzRmN2QyMTc5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRmV0Y2hPcHRpb25zLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZldGNoT3B0aW9ucy5oCkBAIC02OSw2ICs2OSwyMSBAQCBp
bmxpbmUgRmV0Y2hPcHRpb25zOjpGZXRjaE9wdGlvbnMoRGVzdGluYXRpb24gZGVzdGluYXRpb24s
IE1vZGUgbW9kZSwgQ3JlZGVudGlhbAogewogfQogCitpbmxpbmUgYm9vbCBpc1BvdGVudGlhbE5h
dmlnYXRpb25PclN1YnJlc291cmNlUmVxdWVzdChGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uIGRl
c3RpbmF0aW9uKQoreworICAgIHJldHVybiBkZXN0aW5hdGlvbiA9PSBGZXRjaE9wdGlvbnM6OkRl
c3RpbmF0aW9uOjpPYmplY3QKKyAgICAgICAgfHwgZGVzdGluYXRpb24gPT0gRmV0Y2hPcHRpb25z
OjpEZXN0aW5hdGlvbjo6RW1iZWQ7Cit9CisKK2lubGluZSBib29sIGlzTm9uU3VicmVzb3VyY2VS
ZXF1ZXN0KEZldGNoT3B0aW9uczo6RGVzdGluYXRpb24gZGVzdGluYXRpb24pCit7CisgICAgcmV0
dXJuIGRlc3RpbmF0aW9uID09IEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OkRvY3VtZW50Cisg
ICAgICAgIHx8IGRlc3RpbmF0aW9uID09IEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OlJlcG9y
dAorICAgICAgICB8fCBkZXN0aW5hdGlvbiA9PSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpT
ZXJ2aWNld29ya2VyCisgICAgICAgIHx8IGRlc3RpbmF0aW9uID09IEZldGNoT3B0aW9uczo6RGVz
dGluYXRpb246OlNoYXJlZHdvcmtlcgorICAgICAgICB8fCBkZXN0aW5hdGlvbiA9PSBGZXRjaE9w
dGlvbnM6OkRlc3RpbmF0aW9uOjpXb3JrZXI7Cit9CisKIH0KIAogbmFtZXNwYWNlIFdURiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgKaW5kZXggZDJh
OTJjM2QzZGNmODJlNThmMjJkMDM1Y2JjN2ZkMGIyNTA1NmYzZS4uNWM1YTBkNDI3YjRlOTk2MGJi
N2M1YzdkMWYxZmFjZTU5YTQ0NTRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlck9wdGlvbnMuaApAQCAtOTIsNiArOTIsMTEgQEAgZW51bSBjbGFzcyBJbml0aWF0
b3JDb250ZXh0IHsKICAgICBXb3JrZXIsCiB9OwogCitlbnVtIGNsYXNzIFNlcnZpY2VXb3JrZXJz
TW9kZSB7CisgICAgQWxsLAorICAgIE5vbmUsCit9OworCiBzdHJ1Y3QgUmVzb3VyY2VMb2FkZXJP
cHRpb25zIDogcHVibGljIEZldGNoT3B0aW9ucyB7CiAgICAgUmVzb3VyY2VMb2FkZXJPcHRpb25z
KCkgeyB9CiAKQEAgLTEyNCw2ICsxMjksOCBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkZXJPcHRpb25z
IDogcHVibGljIEZldGNoT3B0aW9ucyB7CiAgICAgQ2FjaGluZ1BvbGljeSBjYWNoaW5nUG9saWN5
IHsgQ2FjaGluZ1BvbGljeTo6QWxsb3dDYWNoaW5nIH07CiAgICAgU2FtZU9yaWdpbkRhdGFVUkxG
bGFnIHNhbWVPcmlnaW5EYXRhVVJMRmxhZyB7IFNhbWVPcmlnaW5EYXRhVVJMRmxhZzo6VW5zZXQg
fTsKICAgICBJbml0aWF0b3JDb250ZXh0IGluaXRpYXRvckNvbnRleHQgeyBJbml0aWF0b3JDb250
ZXh0OjpEb2N1bWVudCB9OworICAgIFNlcnZpY2VXb3JrZXJzTW9kZSBzZXJ2aWNlV29ya2Vyc01v
ZGUgeyBTZXJ2aWNlV29ya2Vyc01vZGU6OkFsbCB9OworICAgIHVpbnQ2NF90IHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHsgMCB9OwogCiAgICAgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGllbnRD
cmVkZW50aWFsUG9saWN5IHsgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xpZW50
Rm9yQ3JlZGVudGlhbHMgfTsKICAgICB1bnNpZ25lZCBtYXhSZWRpcmVjdENvdW50IHsgMjAgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApp
bmRleCAzM2JiMTJlODFiOGExYzQ5YTBhODY3OTFiOTVkYzhhMjVlNjVjM2U4Li5lMjdhYWE4ZGI0
YzRiNmExMzY1ZjA4Y2VhYWI0MmUzODhmN2FlYTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC01NSw3ICs1NSw3IEBAIHN0YXRp
YyBjb25zdCBjaGFyIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHlNb2RlW10gPSAibG9hZFJlc291
cmNlU3luY2hyb25vdXNseU1vCiBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpXb3JrZXJUaHJlYWRh
YmxlTG9hZGVyKFdvcmtlckdsb2JhbFNjb3BlJiB3b3JrZXJHbG9iYWxTY29wZSwgVGhyZWFkYWJs
ZUxvYWRlckNsaWVudCYgY2xpZW50LCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLCBSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucywg
Y29uc3QgU3RyaW5nJiByZWZlcnJlcikKICAgICA6IG1fd29ya2VyR2xvYmFsU2NvcGUod29ya2Vy
R2xvYmFsU2NvcGUpCiAgICAgLCBtX3dvcmtlckNsaWVudFdyYXBwZXIoVGhyZWFkYWJsZUxvYWRl
ckNsaWVudFdyYXBwZXI6OmNyZWF0ZShjbGllbnQsIG9wdGlvbnMuaW5pdGlhdG9yKSkKLSAgICAs
IG1fYnJpZGdlKCpuZXcgTWFpblRocmVhZEJyaWRnZShtX3dvcmtlckNsaWVudFdyYXBwZXIuZ2V0
KCksIHdvcmtlckdsb2JhbFNjb3BlLnRocmVhZCgpLndvcmtlckxvYWRlclByb3h5KCksIHRhc2tN
b2RlLCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCByZWZlcnJlci5pc0VtcHR5KCkgPyB3b3Jr
ZXJHbG9iYWxTY29wZS51cmwoKS5zdHJpcHBlZEZvclVzZUFzUmVmZXJyZXIoKSA6IHJlZmVycmVy
LCB3b3JrZXJHbG9iYWxTY29wZS5zZWN1cml0eU9yaWdpbigpLCB3b3JrZXJHbG9iYWxTY29wZS5j
b250ZW50U2VjdXJpdHlQb2xpY3koKSkpCisgICAgLCBtX2JyaWRnZSgqbmV3IE1haW5UaHJlYWRC
cmlkZ2UobV93b3JrZXJDbGllbnRXcmFwcGVyLmdldCgpLCB3b3JrZXJHbG9iYWxTY29wZS50aHJl
YWQoKS53b3JrZXJMb2FkZXJQcm94eSgpLCB0YXNrTW9kZSwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0
aW9ucywgcmVmZXJyZXIuaXNFbXB0eSgpID8gd29ya2VyR2xvYmFsU2NvcGUudXJsKCkuc3RyaXBw
ZWRGb3JVc2VBc1JlZmVycmVyKCkgOiByZWZlcnJlciwgd29ya2VyR2xvYmFsU2NvcGUpKQogewog
fQogCkBAIC0xMDEsMTIgKzEwMSwxNSBAQCBMb2FkZXJUYXNrT3B0aW9uczo6TG9hZGVyVGFza09w
dGlvbnMoY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIGNvbgogfQogCiBX
b3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdl
KFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyJiB3b3JrZXJDbGllbnRXcmFwcGVyLCBXb3Jr
ZXJMb2FkZXJQcm94eSYgbG9hZGVyUHJveHksIGNvbnN0IFN0cmluZyYgdGFza01vZGUsCi0gICAg
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMm
IG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgb3V0Z29pbmdSZWZlcnJlciwKLSAgICBjb25zdCBTZWN1
cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeSog
Y29udGVudFNlY3VyaXR5UG9saWN5KQorICAgIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNv
bnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIG91dGdv
aW5nUmVmZXJyZXIsIFdvcmtlckdsb2JhbFNjb3BlJiBnbG9iYWxTY29wZSkKICAgICA6IG1fd29y
a2VyQ2xpZW50V3JhcHBlcigmd29ya2VyQ2xpZW50V3JhcHBlcikKICAgICAsIG1fbG9hZGVyUHJv
eHkobG9hZGVyUHJveHkpCiAgICAgLCBtX3Rhc2tNb2RlKHRhc2tNb2RlLmlzb2xhdGVkQ29weSgp
KQogeworCisgICAgYXV0byogc2VjdXJpdHlPcmlnaW4gPSBnbG9iYWxTY29wZS5zZWN1cml0eU9y
aWdpbigpOworICAgIGF1dG8qIGNvbnRlbnRTZWN1cml0eVBvbGljeSA9IGdsb2JhbFNjb3BlLmNv
bnRlbnRTZWN1cml0eVBvbGljeSgpOworCiAgICAgQVNTRVJUKHNlY3VyaXR5T3JpZ2luKTsKICAg
ICBBU1NFUlQoY29udGVudFNlY3VyaXR5UG9saWN5KTsKIApAQCAtMTIxLDYgKzEyNCwxMSBAQCBX
b3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdl
KFRocmVhZGFibGVMb2FkZXJDbGllbgogICAgIEFTU0VSVChvcHRpb25zQ29weS0+b3B0aW9ucy5p
bml0aWF0b3JDb250ZXh0ID09IEluaXRpYXRvckNvbnRleHQ6OkRvY3VtZW50KTsKICAgICBvcHRp
b25zQ29weS0+b3B0aW9ucy5pbml0aWF0b3JDb250ZXh0ID0gSW5pdGlhdG9yQ29udGV4dDo6V29y
a2VyOwogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIG9wdGlvbnNDb3B5LT5vcHRp
b25zLnNlcnZpY2VXb3JrZXJzTW9kZSA9IGdsb2JhbFNjb3BlLmlzU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlKCkgPyBTZXJ2aWNlV29ya2Vyc01vZGU6Ok5vbmUgOiBTZXJ2aWNlV29ya2Vyc01vZGU6
OkFsbDsKKyAgICBvcHRpb25zQ29weS0+b3B0aW9ucy5zZXJ2aWNlV29ya2VySWRlbnRpZmllciA9
IGdsb2JhbFNjb3BlLnNlbGVjdGVkU2VydmljZVdvcmtlcklkZW50aWZpZXIoKTsKKyNlbmRpZgor
CiAgICAgLy8gQ2FuIHdlIGJlbmVmaXQgZnJvbSByZXF1ZXN0IGJlaW5nIGFuIHItdmFsdWUgdG8g
Y3JlYXRlIG1vcmUgZWZmaWNpZW50bHkgaXRzIGlzb2xhdGVkIGNvcHk/CiAgICAgbV9sb2FkZXJQ
cm94eS5wb3N0VGFza1RvTG9hZGVyKFt0aGlzLCByZXF1ZXN0ID0gcmVxdWVzdC5pc29sYXRlZENv
cHkoKSwgb3B0aW9ucyA9IFdURk1vdmUob3B0aW9uc0NvcHkpLCBjb250ZW50U2VjdXJpdHlQb2xp
Y3lDb3B5ID0gV1RGTW92ZShjb250ZW50U2VjdXJpdHlQb2xpY3lDb3B5KV0oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJs
ZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIu
aAppbmRleCA5N2VjMmQ0MWY5ZDllMDFkY2JiNzE3OWM2MjNkYjczYWIxYzVhMzU0Li4yMmFiMTQ5
ZmVmNzQ3MzdlZmI2NGRiOWRjYzdmMTYxMGRmNTFmYmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgKQEAgLTg4LDcgKzg4LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBjbGFzcyBNYWluVGhyZWFkQnJpZGdlIDogcHVibGljIFRo
cmVhZGFibGVMb2FkZXJDbGllbnQgewogICAgICAgICBwdWJsaWM6CiAgICAgICAgICAgICAvLyBB
bGwgZXhlY3V0ZWQgb24gdGhlIHdvcmtlciBjb250ZXh0J3MgdGhyZWFkLgotICAgICAgICAgICAg
TWFpblRocmVhZEJyaWRnZShUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlciYsIFdvcmtlckxv
YWRlclByb3h5JiwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNv
bnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiwgY29uc3QgU3RyaW5nJiBvdXRnb2luZ1JlZmVy
cmVyLCBjb25zdCBTZWN1cml0eU9yaWdpbiosIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeSop
OworICAgICAgICAgICAgTWFpblRocmVhZEJyaWRnZShUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3Jh
cHBlciYsIFdvcmtlckxvYWRlclByb3h5JiwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSwgUmVzb3Vy
Y2VSZXF1ZXN0JiYsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiwgY29uc3QgU3RyaW5n
JiBvdXRnb2luZ1JlZmVycmVyLCBXb3JrZXJHbG9iYWxTY29wZSYpOwogICAgICAgICAgICAgdm9p
ZCBjYW5jZWwoKTsKICAgICAgICAgICAgIHZvaWQgZGVzdHJveSgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCmluZGV4
IGI1ZTk0OGVhZWVjMWZkOTBkZGJlNjk4Zjk2NmZiYzdlODVjZTljZGQuLmRhNmFkNjVmMTE4MjBh
NTJlZTU0MTI4ZjM3MDdjZWUwMGY0MTc0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCkBAIC0xMDAsNyArMTAwLDcg
QEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGh0dHBDb250ZW50VHlwZSgp
IGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SFRUUENvbnRlbnRUeXBlKGNvbnN0
IFN0cmluZyYpOwotICAgIHZvaWQgY2xlYXJIVFRQQ29udGVudFR5cGUoKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGNsZWFySFRUUENvbnRlbnRUeXBlKCk7CiAKICAgICBib29sIGhhc0hUVFBI
ZWFkZXIoSFRUUEhlYWRlck5hbWUpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKaW5kZXggYWJjZGNlYWQ3
NzljYWNkYjc0ZjJmZjJmYjZkYmFjYmRiNDllZWEzZi4uZWUzNzNkZGVlYWExNTFhNDA4MzNkMjFi
YzM2OWViNDRjODFlNjY3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaApAQCAtMTUzLDcgKzE1Myw3IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIDEyODA7CiAgICAgfQogCi0gICAgdm9pZCBzZXRUeXBlKFR5cGUp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VHlwZShUeXBlKTsKICAgICBUeXBlIHR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAogICAgIHZvaWQgc2V0UmVkaXJlY3RlZChib29s
IGlzUmVkaXJlY3RlZCkgeyBtX2lzUmVkaXJlY3RlZCA9IGlzUmVkaXJlY3RlZDsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKaW5kZXggY2ZlMzQzZWVmNGE1YWY1YjI3MGMxOGI2
ODUwOGYwZjY4YzZhYWI2Yy4uMzk1ZmQ4MDQ5OThjNjBiN2NiNTM3Mzg4YWUwZmQ0ZDA3OGU0ZGIy
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCkBAIC02MSw3ICs2MSw3IEBA
IGNsYXNzIFdvcmtlclRocmVhZCA6IHB1YmxpYyBSZWZDb3VudGVkPFdvcmtlclRocmVhZD4gewog
cHVibGljOgogICAgIHZpcnR1YWwgfldvcmtlclRocmVhZCgpOwogCi0gICAgYm9vbCBzdGFydCgp
OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc3RhcnQoKTsKICAgICB2b2lkIHN0b3AoKTsKIAog
ICAgIFRocmVhZElkZW50aWZpZXIgdGhyZWFkSUQoKSBjb25zdCB7IHJldHVybiBtX3RocmVhZCA/
IG1fdGhyZWFkLT5pZCgpIDogMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCmluZGV4IGQzMGRjNTdhNmQ4
ZGIwNDAxODE5N2U4NjIxZjZjYTI5MTg4MThkYzkuLjk1MzQ1MTc3ZDcwMjZiOTE3ODZlYTAyYjM1
NTVlZjlmNmVmNWE1YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAgLTE3OSw2ICsxNzksOSBAQCB2
b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29sdmVkV2l0aFJlZ2lzdHJhdGlvbihT
ZXJ2aWNlV29ya2VySm9iJiBqb2IsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICAvLyBG
SVhNRTogSW1wbGVtZW50IHByb3BlciBzZWxlY3Rpb24gb2Ygc2VydmljZSB3b3JrZXJzLgorICAg
IGNvbnRleHQtPnNldFNlbGVjdGVkU2VydmljZVdvcmtlcklkZW50aWZpZXIoZGF0YS5pZGVudGlm
aWVyKTsKKwogICAgIGF1dG8gcmVnaXN0cmF0aW9uID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bjo6Y3JlYXRlKCpjb250ZXh0LCBkYXRhKTsKICAgICBqb2IucHJvbWlzZSgpLnJlc29sdmU8SURM
SW50ZXJmYWNlPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24+PihyZWdpc3RyYXRpb24uZ2V0KCkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJQcm92aWRlci5oCmluZGV4IDc2NjFjNTYzMWIxMjNkYTQzY2JiOTcxMGUxYWE1NzFlNWNk
ZWFmMjkuLmIwZjNkZmI5NTNmNjU4NWRmMTE2ZjdjMjYyYmVhMDhiYjkwYzU2YTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUHJvdmlkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclByb3Zp
ZGVyLmgKQEAgLTI1LDYgKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDx3dGYv
RnVuY3Rpb24uaD4KKwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAogbmFtZXNwYWNlIFBB
TCB7CkBAIC0zMyw2ICszNSwxMCBAQCBjbGFzcyBTZXNzaW9uSUQ7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CitzdHJ1Y3QgRmV0Y2hPcHRpb25zOworY2xh
c3MgUmVzb3VyY2VMb2FkZXI7CitjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBTV0NsaWVu
dENvbm5lY3Rpb247CiBjbGFzcyBTZXJ2aWNlV29ya2VySm9iOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NGZlNTdlMzEyMTU3NzFjNmE3Yjgz
ZjVmZGJiNjYyM2RkNDJhMGJlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4
dE1hbmFnZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTV0NvbnRleHRNYW5hZ2VyLmgiCi0KLSNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0KLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVk
ZSA8cGFsL1Nlc3Npb25JRC5oPgotCi11c2luZyBuYW1lc3BhY2UgUEFMOwotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLVNXQ29udGV4dE1hbmFnZXImIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRv
bigpCi17Ci0gICAgc3RhdGljIFNXQ29udGV4dE1hbmFnZXIqIHNoYXJlZE1hbmFnZXIgPSBuZXcg
U1dDb250ZXh0TWFuYWdlcjsKLSAgICByZXR1cm4gKnNoYXJlZE1hbmFnZXI7Ci19Ci0KLVNXQ29u
dGV4dE1hbmFnZXI6OlNXQ29udGV4dE1hbmFnZXIoKQotewotCi19Ci0KLUV4Y2VwdGlvbk9yPHVp
bnQ2NF90PiBTV0NvbnRleHRNYW5hZ2VyOjpzdGFydFNlcnZpY2VXb3JrZXJDb250ZXh0KHVpbnQ2
NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEmIGRhdGEpCi17Ci0gICAgLy8gRklYTUU6IFByb3ZpZGUgYSBzZW5zaWNhbCBzZXNzaW9u
IElECi0KLSAgICBhdXRvIHRocmVhZCA9IFNlcnZpY2VXb3JrZXJUaHJlYWQ6OmNyZWF0ZShzZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgZGF0YSwgU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklE
KCkpOwotICAgIGF1dG8gdGhyZWFkSWRlbnRpZmllciA9IHRocmVhZC0+aWRlbnRpZmllcigpOwot
ICAgIGF1dG8gcmVzdWx0ID0gbV93b3JrZXJUaHJlYWRNYXAuYWRkKHRocmVhZElkZW50aWZpZXIs
IFdURk1vdmUodGhyZWFkKSk7Ci0gICAgQVNTRVJUKHJlc3VsdC5pc05ld0VudHJ5KTsKLQotICAg
IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPnN0YXJ0KCk7Ci0gICAgCi0gICAgTE9HKFNlcnZpY2VX
b3JrZXIsICJDb250ZXh0IHByb2Nlc3MgUElEOiAlaSBzdGFydGVkIHdvcmtlciB0aHJlYWQgJXNc
biIsIGdldHBpZCgpLCBkYXRhLndvcmtlcklELnV0ZjgoKS5kYXRhKCkpOwotICAgIAotICAgIHJl
dHVybiB0aHJlYWRJZGVudGlmaWVyOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxNWQ3ZTY5ODIzMjE0NzIzMGI0NzZhZmI4MzFlNDhhMGYy
MGUzMDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCisr
KyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotCi0jaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIK
LSNpbmNsdWRlICJTZXJ2aWNlV29ya2VyVGhyZWFkLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHRE
YXRhOwotCi1jbGFzcyBTV0NvbnRleHRNYW5hZ2VyIHsKLXB1YmxpYzoKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgU1dDb250ZXh0TWFuYWdlciYgc2luZ2xldG9uKCk7Ci0KLSAgICBXRUJDT1JF
X0VYUE9SVCBFeGNlcHRpb25Pcjx1aW50NjRfdD4gc3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4dCh1
aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlckNv
bnRleHREYXRhJik7Ci0KLXByaXZhdGU6Ci0gICAgU1dDb250ZXh0TWFuYWdlcigpOwotICAgIAot
ICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxTZXJ2aWNlV29ya2VyVGhyZWFkPj4gbV93b3Jr
ZXJUaHJlYWRNYXA7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKaW5kZXggMjJhMDdi
ODlmNTljZTU4MDQyYWIwNTI3OWE5YWIwOThlOGE0NTk2MC4uOGRiYTQ4OTg4OTNiNzAwNDRiNWU3
ZjYyZjcyNmEyZGYwY2RmOTU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaApAQCAtNTIsNyAr
NTIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBydW5FdmVudExvb3AoKSBvdmVycmlkZTsKIAog
cHJpdmF0ZToKLSAgICBTZXJ2aWNlV29ya2VyVGhyZWFkKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmLCBQQUw6OlNlc3Np
b25JRCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU2VydmljZVdvcmtlclRocmVhZCh1aW50NjRfdCBz
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRh
JiwgUEFMOjpTZXNzaW9uSUQpOwogCiAgICAgdWludDY0X3QgbV9zZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllcjsKICAgICBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgbV9kYXRhOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCmluZGV4IDFjMWEy
YzkyZTg2N2IzODEzZDkxY2UxZmY4M2YyYmE4Y2NkMDFhMTYuLjZmMGU5MzdiZWQ3NGVlMjA0OWFl
YzY1YWRkYzgzZjdlYjE1ZDhmMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTQwLDkgKzQwLDExIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgU1dTZXJ2ZXJSZWdpc3Ry
YXRpb247CiBjbGFzcyBTV1NlcnZlcldvcmtlcjsKIHN0cnVjdCBFeGNlcHRpb25EYXRhOworc3Ry
dWN0IEZldGNoT3B0aW9uczsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE7CiBzdHJ1
Y3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0Owogc3RydWN0IFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtl
IGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGJhNDRjYmEyY2JiZDhk
Njc5YjRkYjQyNDQ5NWRmODM4NTFjNTQ4YzMuLjA4YjgwOWEyMzA4YTliN2UwYzMzNjhlYmZiYjdk
NTAyYWY4ZTg3NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFr
ZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTEyNSw2ICsxMjUs
NyBAQCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAgICBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eSBc
CiAgICAgUmVtb3RlV2ViSW5zcGVjdG9yVUkgXAogICAgIFNlY0l0ZW1TaGltUHJveHkgXAorICAg
IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaCBcCiAgICAgU21hcnRNYWduaWZpY2F0aW9uQ29udHJv
bGxlciBcCiAgICAgU3RvcmFnZUFyZWFNYXAgXAogICAgIFN0b3JhZ2VNYW5hZ2VyIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKaW5kZXggNzI5N2Y0YjUzZTg3NTdkOTYz
NjJkODlkZDZjNjY5NTJhZDU2MDk5ZS4uZTlhYjRiZWQ3Zjc2YWVlMzRmYmViN2IxNmIxMzg2M2Nj
MmI1ZDk3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TdG9y
YWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTMw
LDggKzMwLDEwIEBACiAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiU3RvcmFnZVByb2Nlc3MuaCIKICNpbmNsdWRlICJTdG9yYWdlVG9XZWJQcm9jZXNz
Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIldlYlNXQ2xpZW50Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCkBAIC05Miw2ICs5
NCwzMSBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRTZXJ2aWNlV29ya2VyQ29u
dGV4dChjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dAogICAgIG1fcGVuZGluZ0NvbnRleHREYXRh
cy5hcHBlbmQoZGF0YSk7CiB9CiAKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzdGFydEZl
dGNoKHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgdWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50
aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgRmV0Y2hPcHRpb25z
JiBvcHRpb25zKQoreworICAgIHNlbmRUb0NvbnRleHRQcm9jZXNzKE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzOjpTdGFydEZldGNoSW5TZXJ2aWNlV29ya2VyKGlkZW50aWZpZXIoKSwgZmV0Y2hJZGVudGlm
aWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9ucykpOworfQorCit2
b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UodWludDY0
X3QgZmV0Y2hJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkKK3sKKyAgICBtX2NvbnRlbnRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNl
V29ya2VyQ2xpZW50RmV0Y2g6OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJlc3BvbnNlIH0sIGZldGNo
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpkaWRSZWNlaXZl
RmV0Y2hEYXRhKHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQoreworICAgIG1fY29udGVudENv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVj
ZWl2ZURhdGEgeyBkYXRhLCBlbmNvZGVkRGF0YUxlbmd0aCB9LCBmZXRjaElkZW50aWZpZXIpOwor
fQorCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6ZGlkRmluaXNoRmV0Y2godWludDY0X3Qg
ZmV0Y2hJZGVudGlmaWVyKQoreworICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkRmluaXNoRmV0Y2ggeyB9LCBmZXRjaElk
ZW50aWZpZXIpOworfQorCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6ZmFpbGVkRmV0Y2go
dWludDY0X3QgZmV0Y2hJZGVudGlmaWVyKQoreworICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNl
bmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkRmFpbCB7IH0sIGZldGNo
SWRlbnRpZmllcik7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpzZW5kVG9Db250ZXh0UHJvY2VzcyhVJiYgbWVzc2FnZSkKIHsKICAgICBpZiAo
IW1fY29udGV4dENvbm5lY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgK
aW5kZXggZGNjNDk2MTY1MmEzZDcxYjZmOTg0NjQzMWQ3Mzc2YjhmYzU1NTIyMy4uYjNlNDIxNmRi
MGEzMzM4MjdiZjdiZWVlODQ5ZmJlNTk4NGQwNmRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
ckNvbm5lY3Rpb24uaApAQCAtNTEsMTUgKzUxLDIzIEBAIHB1YmxpYzoKIAogICAgIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9CiAKKyAgICB2
b2lkIGRpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHZvaWQgZGlkUmVjZWl2ZUZldGNo
RGF0YSh1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYs
IGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGlkRmluaXNoRmV0Y2godWlu
dDY0X3QgZmV0Y2hJZGVudGlmaWVyKTsKKyAgICB2b2lkIGZhaWxlZEZldGNoKHVpbnQ2NF90IGZl
dGNoSWRlbnRpZmllcik7CisKIHByaXZhdGU6CiAgICAgLy8gSW1wbGVtZW50IFNXU2VydmVyOjpD
b25uZWN0aW9uIChNZXNzYWdlcyB0byB0aGUgY2xpZW50IFdlYlByb2Nlc3MpCiAgICAgdm9pZCBy
ZWplY3RKb2JJbkNsaWVudCh1aW50NjRfdCBqb2JJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpF
eGNlcHRpb25EYXRhJikgZmluYWw7CiAgICAgdm9pZCByZXNvbHZlSm9iSW5DbGllbnQodWludDY0
X3Qgam9iSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRhdGEmKSBmaW5hbDsKICAgICB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2hJbkNsaWVudCh1aW50NjRf
dCBqb2JJZGVudGlmaWVyKSBmaW5hbDsKIAorICAgIHZvaWQgc3RhcnRGZXRjaCh1aW50NjRfdCBm
ZXRjaElkZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmKTsK
KwogICAgIC8vIE1lc3NhZ2VzIHRvIHRoZSBTVyBjb250ZXh0IFdlYlByb2Nlc3MKICAgICB2b2lk
IHN0YXJ0U2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNv
bnRleHREYXRhJikgZmluYWw7Ci0gICAgCisKKwogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2Fn
ZVNlbmRlckNvbm5lY3Rpb24oKSBmaW5hbCB7IHJldHVybiBtX2NvbnRlbnRDb25uZWN0aW9uLnB0
cigpOyB9CiAgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBmaW5hbCB7
IHJldHVybiBpZGVudGlmaWVyKCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9y
YWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
ckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggZTRjZmI5NjA1YTZjZTUwMTkyMTZmMjFjZjZk
NjkxN2JlYjMwMmRjMC4uZjNkYjNiOTBkYWU5M2E5MjZkZjViYmRlYTFhMzc3OTUzNDY2NDkxMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3Jh
Z2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
CkBAIC0yNiw2ICsyNiw4IEBAIG1lc3NhZ2VzIC0+IFdlYlNXU2VydmVyQ29ubmVjdGlvbiB7CiAg
ICAgIyBXaGVuIHBvc3NpYmxlLCB0aGVzZSBtZXNzYWdlcyBjYW4gYmUgaW1wbGVtZW50ZWQgZGly
ZWN0bHkgYnkgV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uCiAgICAgU2NoZWR1bGVKb2JJblNl
cnZlcihzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGEgam9iRGF0YSkKICAgICBG
aW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
RmV0Y2hSZXN1bHQgcmVzdWx0KQorCisgICAgU3RhcnRGZXRjaCh1aW50NjRfdCBpZGVudGlmaWVy
LCB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0IHJlcXVlc3QsIHN0cnVjdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMgb3B0aW9ucykKIH0KIAog
I2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9TdG9y
YWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAKaW5kZXggOTk1OTZmMzUxM2E0YmM2MjA1ZjYz
YzllNzNiMDZiOTliNTA4YWJjOS4uY2MwNGNmOTQyM2RmNGVmZWFiNTE3NmQ0NGI5ZTIwMjUyZjA1
Y2NiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vz
cy5jcHAKQEAgLTQwNSw2ICs0MDUsMzAgQEAgdm9pZCBTdG9yYWdlUHJvY2Vzczo6c2VydmljZVdv
cmtlckNvbnRleHRTdGFydGVkKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGkKICAgICAg
ICAgY29ubmVjdGlvbi0+c2NyaXB0Q29udGV4dFN0YXJ0ZWQocmVnaXN0cmF0aW9uS2V5LCBpZGVu
dGlmaWVyLCB3b3JrZXJJRCk7CiB9CiAKK3ZvaWQgU3RvcmFnZVByb2Nlc3M6OmZhaWxlZEZldGNo
KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50
aWZpZXIpCit7CisgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBtX3N3U2VydmVyQ29ubmVjdGlv
bnMuZ2V0KHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgY29ubmVjdGlvbi0+
ZmFpbGVkRmV0Y2goZmV0Y2hJZGVudGlmaWVyKTsKK30KKwordm9pZCBTdG9yYWdlUHJvY2Vzczo6
ZGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCit7CisgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBtX3N3U2VydmVy
Q29ubmVjdGlvbnMuZ2V0KHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgY29u
bmVjdGlvbi0+ZGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoZmV0Y2hJZGVudGlmaWVyLCByZXNwb25z
ZSk7Cit9CisKK3ZvaWQgU3RvcmFnZVByb2Nlc3M6OmRpZFJlY2VpdmVGZXRjaERhdGEodWludDY0
X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwg
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3Ro
KQoreworICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gbV9zd1NlcnZlckNvbm5lY3Rpb25zLmdl
dChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIGNvbm5lY3Rpb24tPmRpZFJl
Y2VpdmVGZXRjaERhdGEoZmV0Y2hJZGVudGlmaWVyLCBkYXRhLCBlbmNvZGVkRGF0YUxlbmd0aCk7
Cit9CisKK3ZvaWQgU3RvcmFnZVByb2Nlc3M6OmRpZEZpbmlzaEZldGNoKHVpbnQ2NF90IHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIpCit7CisgICAg
aWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBtX3N3U2VydmVyQ29ubmVjdGlvbnMuZ2V0KHNlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgY29ubmVjdGlvbi0+ZGlkRmluaXNoRmV0Y2go
ZmV0Y2hJZGVudGlmaWVyKTsKK30KKwogdm9pZCBTdG9yYWdlUHJvY2Vzczo6cmVnaXN0ZXJTV1Nl
cnZlckNvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewogICAg
IEFTU0VSVCghbV9zd1NlcnZlckNvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb24uaWRlbnRp
ZmllcigpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3Jh
Z2VQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNz
LmgKaW5kZXggZDRjZTUxMTcxOTdlNWMwYWQ0YmNlOTAyNDczYmJkZjdkZWVhOWQ4Zi4uZDg5YTE2
YjA2ZGI0ZWExYzA2OWZmYjVmYWJlZDA4NDBjYTFiY2ZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaApAQCAtMTE5LDYgKzExOSwxMSBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGlkR2V0V29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKGNvbnN0
IElQQzo6QXR0YWNobWVudCYgZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyKTsKICAgICB2b2lk
IHNlcnZpY2VXb3JrZXJDb250ZXh0RmFpbGVkVG9TdGFydCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eSYsIGNvbnN0IFN0cmluZyYgd29ya2VySUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAgICAg
dm9pZCBzZXJ2aWNlV29ya2VyQ29udGV4dFN0YXJ0ZWQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkm
LCB1aW50NjRfdCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHdvcmtlcklEKTsKKworICAgIHZv
aWQgZGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYpOworICAgIHZvaWQgZGlkUmVjZWl2ZUZldGNoRGF0YSh1aW50NjRfdCBzZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRp
ZEZpbmlzaEZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRf
dCBmZXRjaElkZW50aWZpZXIpOworICAgIHZvaWQgZmFpbGVkRmV0Y2godWludDY0X3Qgc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcik7CiAjZW5kaWYK
ICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBWZWN0b3I8V2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhPiBpbmRleGVkRGF0YWJhc2VPcmlnaW5zKGNvbnN0IFN0cmluZyYgcGF0aCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNz
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vz
cy5tZXNzYWdlcy5pbgppbmRleCBlZTYyOGQ1Mzc3Y2I1NmQyNjUwMThjZWZkM2EyMTA4MDVlOWI0
MmYyLi5hODNkNzMwZTczODNkZDc1ZmE2MTg0YWExMDIzODFmOTBkYTg4ODhjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MubWVzc2Fn
ZXMuaW4KQEAgLTM3LDcgKzM3LDEzIEBAIG1lc3NhZ2VzIC0+IFN0b3JhZ2VQcm9jZXNzIExlZ2Fj
eVJlY2VpdmVyIHsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBEaWRHZXRXb3Jr
ZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25IYW5k
bGUpCisKICAgICBTZXJ2aWNlV29ya2VyQ29udGV4dEZhaWxlZFRvU3RhcnQodWludDY0X3Qgc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5IHJlZ2lzdHJhdGlvbktleSwgU3RyaW5nIHdvcmtlcklELCBTdHJpbmcgbWVz
c2FnZSkKICAgICBTZXJ2aWNlV29ya2VyQ29udGV4dFN0YXJ0ZWQodWludDY0X3Qgc2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5IHJlZ2lzdHJhdGlvbktleSwgdWludDY0X3QgaWRlbnRpZmllciwgU3RyaW5nIHdvcmtl
cklEKQorCisgICAgRmFpbGVkRmV0Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcikKKyAgICBEaWRSZWNlaXZlRmV0Y2hSZXNwb25z
ZSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKQorICAgIERpZFJlY2Vp
dmVGZXRjaERhdGEodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90
IGZldGNoSWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEsIGludDY0X3QgZW5jb2Rl
ZERhdGFMZW5ndGgpCisgICAgRGlkRmluaXNoRmV0Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcikKICNlbmRpZgogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOGI4Njk1
MGMxODExNmY2MDFjOThkMWM4NjY1NTYyYjQ2MjRhYjIyMi4uYTFjYjdjYzJjYzFkZmExYjc3MzNh
Y2U5Y2I3NTRiODdjMjI2ZDE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC04OTAsNiArODkwLDkgQEAKIAkJNDEzMDc1QjIxREU4NUY1
ODAwMzlFQzY5IC8qIExpYldlYlJUQ1NvY2tldEZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzA3NUE2MURFODVFRTcwMDM5RUM2OSAvKiBM
aWJXZWJSVENTb2NrZXRGYWN0b3J5LmggKi87IH07CiAJCTQxMzA3NUIzMURFODVGNTgwMDM5RUM2
OSAvKiBMaWJXZWJSVENQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTMwNzVBNzFERTg1RUU3MDAzOUVDNjkgLyogTGliV2ViUlRDUHJv
dmlkZXIuY3BwICovOyB9OwogCQk0MTMwNzVCNDFERTg1RjU4MDAzOUVDNjkgLyogTGliV2ViUlRD
UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxMzA3NUE4MURFODVFRTcwMDM5RUM2OSAvKiBMaWJXZWJSVENQcm92aWRlci5oICovOyB9Owor
CQk0MTMxRjNEMTFGOTZCQ0NDMDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzFGM0Qw
MUY5NkJDQzgwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guY3BwICovOyB9Owor
CQk0MTMxRjNENDFGOTZFOTM1MDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2Vy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzFG
M0QzMUY5NkU5MzEwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwICov
OyB9OworCQk0MTMxRjNENTFGOTZFOTM1MDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNvbnRleHRN
YW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTMxRjNEMjFGOTZFOTMwMDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmgg
Ki87IH07CiAJCTQxMzVGQkQxMUY0RkI4MDkwMDc0QzQ3QiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVD
YWNoZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDEzNUZCQ0YxRjRGQjdGMjAwNzRDNDdCIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAg
Ki87IH07CiAJCTQxODk3RUNGMUY0MTVENjIwMDE2RkE0MiAvKiBXZWJDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxODk3RUNFMUY0MTVENUMwMDE2RkE0MiAvKiBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNw
cCAqLzsgfTsKIAkJNDE4OTdFRDAxRjQxNUQ2NTAwMTZGQTQyIC8qIFdlYkNhY2hlU3RvcmFnZVBy
b3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxODk3RUNDMUY0MTVENUMwMDE2RkE0MiAvKiBXZWJDYWNoZVN0b3JhZ2VQcm92aWRlci5jcHAg
Ki87IH07CkBAIC0xMDI5LDcgKzEwMzIsOSBAQAogCQk1MTc5NTU2QTE2Mjg3NkYzMDBGQTQzQjYg
LyogTmV0d29ya1Byb2Nlc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxMENDN0UwMTYxMzhFMjkwMEQwM0VEMyAvKiBOZXR3b3JrUHJvY2Vzcy5oICov
OyB9OwogCQk1MTc5NTU2RDE2Mjg3N0IxMDBGQTQzQjYgLyogTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBDQzdF
QTE2MTM4RTcyMDBEMDNFRDMgLyogTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgKi87IH07CiAJCTUx
Nzk1NTZFMTYyODc3QjMwMEZBNDNCNiAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBDQzdFQjE2MTM4RTcyMDBE
MDNFRDMgLyogTmV0d29ya1Byb2Nlc3NQcm94eS5oICovOyB9OworCQk2MTdBNTJEODFGNDNBOURB
MDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYxN0E1MkQ3MUY0
M0E5QjYwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hDb25uZWN0aW9uTWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJNTE3QTUyRDgxRjQzQTlEQTAwRENEQzBBIC8qIFdlYlNX
U2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdBNTJENzFGNDNBOUI2MDBEQ0RDMEEgLyogV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJNjE3QTUyRDkx
RjQzQTlEQTAwRENEQzBBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MTdBNTJENjFGNDNB
OUI2MDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZXMuaCAqLzsgfTsK
IAkJNTE3QTUyRDkxRjQzQTlEQTAwRENEQzBBIC8qIFdlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3Nh
Z2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdB
NTJENjFGNDNBOUI2MDBEQ0RDMEEgLyogV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCAq
LzsgfTsKIAkJNTE3QTUzMDQxRjQ3OTNDNjAwRENEQzBBIC8qIFdlYlNXQ2xpZW50Q29ubmVjdGlv
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdB
NTMwMzFGNDc5M0IyMDBEQ0RDMEEgLyogV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcCAqLzsgfTsK
IAkJNTE3QTUzMDUxRjQ3OTNDNjAwRENEQzBBIC8qIFdlYlNXQ2xpZW50Q29ubmVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3QTUzMDIxRjQ3
OTNCMjAwRENEQzBBIC8qIFdlYlNXQ2xpZW50Q29ubmVjdGlvbi5oICovOyB9OwpAQCAtMzE3OCw2
ICszMTgzLDExIEBACiAJCTQxMzA3NUE2MURFODVFRTcwMDM5RUM2OSAvKiBMaWJXZWJSVENTb2Nr
ZXRGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJUQ1Nv
Y2tldEZhY3RvcnkuaDsgcGF0aCA9IE5ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldEZhY3Rv
cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzMDc1QTcxREU4NUVFNzAwMzlF
QzY5IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbGluZUVuZGluZyA9IDA7IG5hbWUgPSBMaWJXZWJSVENQcm92aWRlci5jcHA7IHBhdGggPSBO
ZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcuY3BwOyB9
OwogCQk0MTMwNzVBODFERTg1RUU3MDAzOUVDNjkgLyogTGliV2ViUlRDUHJvdmlkZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBsaW5lRW5kaW5nID0gMDsgbmFtZSA9IExpYldlYlJUQ1By
b3ZpZGVyLmg7IHBhdGggPSBOZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4
Y29kZS5sYW5nLm9iamNwcDsgfTsKKwkJNDEzMUYzQ0UxRjk2QTQ5NTAwNTk5OTVBIC8qIFNlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
ZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDEzMUYzQ0YxRjk2QTkzNjAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5tZXNz
YWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gu
bWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMzFGM0QwMUY5NkJD
QzgwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtlckNsaWVudEZldGNoLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEzMUYzRDIxRjk2RTkzMDAwNTk5OTVBIC8qIFNl
cnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDEzMUYzRDMxRjk2RTkzMTAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0
TWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNl
V29ya2VyQ29udGV4dE1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MTM1RkJDRjFGNEZCN0YyMDA3NEM0N0IgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlU3RvcmFnZUVuZ2luZUNh
Y2hlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzVGQkQwMUY0RkI3RjIw
MDc0QzQ3QiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQxODk3RUNCMUY0MTVENUMwMDE2RkE0MiAvKiBXZWJDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24u
bWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMzM0LDcgKzMzNDQs
OSBAQAogCQk1MTZBNEE1QjEyMEEyQ0NEMDBDMDVCN0YgLyogQVBJRXJyb3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTE3QTMzQjMxMzBCMzA4QzAwRjgwQ0I1IC8qIFdLQXBwbGljYXRpb25DYWNoZU1h
bmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tBcHBsaWNh
dGlvbkNhY2hlTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0Ez
M0I0MTMwQjMwOEMwMEY4MENCNSAvKiBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjE3QTUyRDYxRjQzQTlCNjAwRENEQzBBIC8q
IFNlcnZpY2VXb3JrZXJGZXRjaENsaWVudE1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxN0E1MkQ2MUY0M0E5QjYwMERDREMwQSAvKiBXZWJTV1NlcnZl
ckNvbm5lY3Rpb25NZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk2MTdBNTJENzFGNDNBOUI2MDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNo
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxN0E1MkQ3MUY0M0E5QjYwMERDREMwQSAvKiBXZWJTV1NlcnZl
ckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3QTUzMDIxRjQ3OTNCMjAwRENEQzBBIC8qIFdl
YlNXQ2xpZW50Q29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJTV0NsaWVudENvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3
QTUzMDMxRjQ3OTNCMjAwRENEQzBBIC8qIFdlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTV0NsaWVudENvbm5lY3Rpb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjE2OCw2ICs2MTgwLDExIEBACiAJCTUx
MThFOTk4MUYyOTUyNTkwMDNFRjlGNSAvKiBTdG9yYWdlICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk0MTMxRjNEMDFGOTZCQ0M4MDA1OTk5NUEgLyogU2Vy
dmljZVdvcmtlckNsaWVudEZldGNoLmNwcCAqLywKKwkJCQk0MTMxRjNDRTFGOTZBNDk1MDA1OTk5
NUEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoLmggKi8sCisJCQkJNDEzMUYzQ0YxRjk2QTkz
NjAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5tZXNzYWdlcy5pbiAqLywKKwkJ
CQk0MTMxRjNEMzFGOTZFOTMxMDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2Vy
LmNwcCAqLywKKwkJCQk0MTMxRjNEMjFGOTZFOTMwMDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNv
bnRleHRNYW5hZ2VyLmggKi8sCiAJCQkJNTFCRUI2MjkxRjNBNUFDRDAwNTAyOUI5IC8qIFdlYlNl
cnZpY2VXb3JrZXJQcm92aWRlci5jcHAgKi8sCiAJCQkJNTFCRUI2MkExRjNBNUFDRDAwNTAyOUI5
IC8qIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oICovLAogCQkJCTUxN0E1MzAzMUY0NzkzQjIw
MERDREMwQSAvKiBXZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwICovLApAQCAtODAxMCw2ICs4MDI3
LDcgQEAKIAkJCQkxQkJCRTQ5RTE5QjY2QzUzMDA2QjdEODEgLyogUmVtb3RlV2ViSW5zcGVjdG9y
VUlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCUUxOEU2OTEzMTY5QjY2N0IwMDlCNjY3MCAv
KiBTZWNJdGVtU2hpbVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQlFMThFNjkxNDE2
OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eU1lc3NhZ2VzLmggKi8sCisJCQkJNjE3
QTUyRDcxRjQzQTlCNjAwRENEQzBBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaENvbm5lY3Rp
b25NZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTJERTY5NDNCMThCRDJBNjgwMDVDMTVFNSAv
KiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJ
CQkyREU2OTQzQzE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxl
ck1lc3NhZ2VzLmggKi8sCiAJCQkJMUEzMzRERUIxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VB
cmVhTWFwTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKQEAgLTg3ODEsNiArODc5OSw3IEBACiAJCQkJ
RTE4RTY5MEMxNjlCNTYzRjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUUxOEU2OTE4MTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5TWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNEQ5RjU3MTkxMTlEMzUwMDAwNjNBNyAvKiBT
ZXJ2aWNlc0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxMzFGM0Q1MUY5NkU5MzUw
MDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBRkRFNjVBMTk1NEE0MkIwMEM0OEZGQSAvKiBTZXNzaW9uU3RhdGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBMDAyRDQ5MTk2QjM0NUQwMEI5QUQ0NCAvKiBTZXNzaW9uU3RhdGVDb2Rpbmcu
aCBpbiBIZWFkZXJzICovLAogCQkJCTc1M0UzRTBFMTg4NzM5ODkwMDE4ODQ5NiAvKiBTZXNzaW9u
VHJhY2tlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDM3MCw2ICsxMDM4OSw5IEBACiAJCQkJRTE4
RTY5MEIxNjlCNTYzRjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHkuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRTE4RTY5MTcxNjlCNjY3QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0RDlGNTgxOTExOUQzNTAwMDA2
M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQxMzFGM0Qx
MUY5NkJDQ0MwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJNjE3QTUyRDgxRjQzQTlEQTAwRENEQzBBIC8qIFNlcnZpY2VXb3JrZXJDbGll
bnRGZXRjaENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
NDEzMUYzRDQxRjk2RTkzNTAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUZERTY1OTE5NTRBNDJCMDBDNDhGRkEgLyogU2Vzc2lv
blN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMDAyRDQ4MTk2QjM0NUQwMEI5QUQ0NCAv
KiBTZXNzaW9uU3RhdGVDb2RpbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTcyODQ0ODE5NTlG
ODA0MDAwN0JDRTUgLyogU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAgaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0
cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0
cmF0ZWd5LmNwcAppbmRleCBiODk1ZDBiOGZhMzFjZTAxNjZkMmE0MGRiYzk0OTFmMDgxNDM1YmIx
Li43YzdmMzk5MGQ0MzhjN2EzOGRmMzI2YmFmN2IxNzBhNjYxNTkxYWVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3Bw
CkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkZXIuaCIKKyNp
bmNsdWRlICJXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXZWJVUkxTY2hl
bWVIYW5kbGVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJVUkxTY2hlbWVUYXNrUHJveHkuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0Lmg+CkBAIC0yMTUsNiArMjE2LDI2
IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciYg
cmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291CiAgICAgICAgIH0KICAgICB9CiAKKyNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCisgICAgV2ViU2VydmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0
b24oKS5oYW5kbGVGZXRjaChyZXNvdXJjZUxvYWRlciwgKnJlc291cmNlLCB3ZWJQYWdlID8gd2Vi
UGFnZS0+c2Vzc2lvbklEKCkgOiBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBb
dHJhY2tpbmdQYXJhbWV0ZXJzLCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGly
ZWN0LCBtYXhpbXVtQnVmZmVyaW5nVGltZSA9IG1heGltdW1CdWZmZXJpbmdUaW1lKHJlc291cmNl
KV0gKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KSBtdXRhYmxlIHsKKyAgICAgICAgTE9HKE5ldHdvcmtTY2hlZHVsaW5nLCAiKFdl
YlByb2Nlc3MpIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQsIHVybCAnJXMnIHdpbGwg
YmUgc2NoZWR1bGVkIHRocm91Z2ggU2VydmljZVdvcmtlciBoYW5kbGUgZmV0Y2ggYWxnb3JpdGht
IiwgcmVzb3VyY2VMb2FkZXIudXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKKyAgICAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViTG9hZGVyU3RyYXRlZ3koKS5zY2hlZHVsZUxv
YWRGcm9tTmV0d29ya1Byb2Nlc3MocmVzb3VyY2VMb2FkZXIsIHJlcXVlc3QsIFdURk1vdmUodHJh
Y2tpbmdQYXJhbWV0ZXJzKSwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVj
dCwgbWF4aW11bUJ1ZmZlcmluZ1RpbWUpOworICAgIH0pOworI2Vsc2UKKyAgICBMT0coTmV0d29y
a1NjaGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9h
ZCwgdXJsICclcycgd2lsbCBiZSBzY2hlZHVsZWQgdGhyb3VnaCBTZXJ2aWNlV29ya2VyIGhhbmRs
ZSBmZXRjaCBhbGdvcml0aG0iLCByZXNvdXJjZUxvYWRlci51cmwoKS5zdHJpbmcoKS5sYXRpbjEo
KS5kYXRhKCkpOworICAgIHNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhyZXNvdXJjZUxv
YWRlciwgcmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLCB0cmFja2luZ1BhcmFtZXRlcnMsIHNob3Vs
ZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIG1heGltdW1CdWZmZXJpbmdUaW1l
KHJlc291cmNlKSk7CisjZW5kaWYKK30KKwordm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1
bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJSZXNvdXJjZUxvYWRlcjo6
VHJhY2tpbmdQYXJhbWV0ZXJzJiB0cmFja2luZ1BhcmFtZXRlcnMsIGJvb2wgc2hvdWxkQ2xlYXJS
ZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgU2Vjb25kcyBtYXhpbXVtQnVmZmVyaW5nVGlt
ZSkKK3sKKyAgICBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGlkZW50aWZpZXIgPSByZXNvdXJjZUxv
YWRlci5pZGVudGlmaWVyKCk7CisgICAgQVNTRVJUKGlkZW50aWZpZXIpOworCisgICAgV2ViRnJh
bWVMb2FkZXJDbGllbnQqIHdlYkZyYW1lTG9hZGVyQ2xpZW50ID0gdG9XZWJGcmFtZUxvYWRlckNs
aWVudChyZXNvdXJjZUxvYWRlci5mcmFtZUxvYWRlcigpLT5jbGllbnQoKSk7CisgICAgV2ViRnJh
bWUqIHdlYkZyYW1lID0gd2ViRnJhbWVMb2FkZXJDbGllbnQgPyB3ZWJGcmFtZUxvYWRlckNsaWVu
dC0+d2ViRnJhbWUoKSA6IG51bGxwdHI7CisgICAgV2ViUGFnZSogd2ViUGFnZSA9IHdlYkZyYW1l
ID8gd2ViRnJhbWUtPnBhZ2UoKSA6IG51bGxwdHI7CisKICAgICBMT0coTmV0d29ya1NjaGVkdWxp
bmcsICIoV2ViUHJvY2VzcykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwgdXJsICcl
cycgd2lsbCBiZSBzY2hlZHVsZWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3Mgd2l0aCBwcmlvcml0
eSAlZCIsIHJlc291cmNlTG9hZGVyLnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSwgc3Rh
dGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSkpOwogCiAg
ICAgQ29udGVudFNuaWZmaW5nUG9saWN5IGNvbnRlbnRTbmlmZmluZ1BvbGljeSA9IHJlc291cmNl
TG9hZGVyLnNob3VsZFNuaWZmQ29udGVudCgpID8gU25pZmZDb250ZW50IDogRG9Ob3RTbmlmZkNv
bnRlbnQ7CkBAIC0yMjUsNyArMjQ2LDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1
bGVMb2FkKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UKICAgICBs
b2FkUGFyYW1ldGVycy53ZWJQYWdlSUQgPSB3ZWJQYWdlID8gd2ViUGFnZS0+cGFnZUlEKCkgOiAw
OwogICAgIGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQgPSB3ZWJGcmFtZSA/IHdlYkZyYW1lLT5m
cmFtZUlEKCkgOiAwOwogICAgIGxvYWRQYXJhbWV0ZXJzLnNlc3Npb25JRCA9IHdlYlBhZ2UgPyB3
ZWJQYWdlLT5zZXNzaW9uSUQoKSA6IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCk7
Ci0gICAgbG9hZFBhcmFtZXRlcnMucmVxdWVzdCA9IHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKTsK
KyAgICBsb2FkUGFyYW1ldGVycy5yZXF1ZXN0ID0gcmVxdWVzdDsKICAgICBsb2FkUGFyYW1ldGVy
cy5jb250ZW50U25pZmZpbmdQb2xpY3kgPSBjb250ZW50U25pZmZpbmdQb2xpY3k7CiAgICAgbG9h
ZFBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPSBzdG9yZWRDcmVkZW50aWFsc1Bv
bGljeTsKICAgICAvLyBJZiB0aGVyZSBpcyBubyBXZWJGcmFtZSB0aGVuIHRoaXMgcmVzb3VyY2Ug
Y2Fubm90IGJlIGF1dGhlbnRpY2F0ZWQgd2l0aCB0aGUgY2xpZW50LgpAQCAtMjMzLDcgKzI1NCw3
IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciYg
cmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291CiAgICAgbG9hZFBhcmFtZXRlcnMuc2hvdWxkQ2xl
YXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCA9IHNob3VsZENsZWFyUmVmZXJyZXJPbkhU
VFBTVG9IVFRQUmVkaXJlY3Q7CiAgICAgbG9hZFBhcmFtZXRlcnMuZGVmZXJzTG9hZGluZyA9IHJl
c291cmNlTG9hZGVyLmRlZmVyc0xvYWRpbmcoKTsKICAgICBsb2FkUGFyYW1ldGVycy5uZWVkc0Nl
cnRpZmljYXRlSW5mbyA9IHJlc291cmNlTG9hZGVyLnNob3VsZEluY2x1ZGVDZXJ0aWZpY2F0ZUlu
Zm8oKTsKLSAgICBsb2FkUGFyYW1ldGVycy5tYXhpbXVtQnVmZmVyaW5nVGltZSA9IG1heGltdW1C
dWZmZXJpbmdUaW1lKHJlc291cmNlKTsKKyAgICBsb2FkUGFyYW1ldGVycy5tYXhpbXVtQnVmZmVy
aW5nVGltZSA9IG1heGltdW1CdWZmZXJpbmdUaW1lOwogICAgIGxvYWRQYXJhbWV0ZXJzLmRlcml2
ZWRDYWNoZWREYXRhVHlwZXNUb1JldHJpZXZlID0gcmVzb3VyY2VMb2FkZXIub3B0aW9ucygpLmRl
cml2ZWRDYWNoZWREYXRhVHlwZXNUb1JldHJpZXZlOwogCiAgICAgQVNTRVJUKChsb2FkUGFyYW1l
dGVycy53ZWJQYWdlSUQgJiYgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRCkgfHwgbG9hZFBhcmFt
ZXRlcnMuY2xpZW50Q3JlZGVudGlhbFBvbGljeSA9PSBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpD
YW5ub3RBc2tDbGllbnRGb3JDcmVkZW50aWFscyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaAppbmRleCBiNDhmNjgxMThmNDQ5
Yzc3NjhkMTc5NjYxNjViYjY2YTMyNWIyMzZmLi5lYWI0ZWNlN2VlNmJmZmZmNzM4ZTJiZGZhMzU1
YTA4NGMyZGFhNmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJMb2FkZXJTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKQEAgLTc3LDYgKzc3LDggQEAgcHVibGljOgogICAgIHZv
aWQgYWRkVVJMU2NoZW1lVGFza1Byb3h5KFdlYlVSTFNjaGVtZVRhc2tQcm94eSYpOwogICAgIHZv
aWQgcmVtb3ZlVVJMU2NoZW1lVGFza1Byb3h5KFdlYlVSTFNjaGVtZVRhc2tQcm94eSYpOwogCisg
ICAgdm9pZCBzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXImLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJSZXNvdXJj
ZUxvYWRlcjo6VHJhY2tpbmdQYXJhbWV0ZXJzJiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25I
VFRQU1RvSFRUUFJlZGlyZWN0LCBTZWNvbmRzKTsKKwogcHJpdmF0ZToKICAgICB2b2lkIHNjaGVk
dWxlTG9hZChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYsIFdlYkNvcmU6OkNhY2hlZFJlc291cmNl
KiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KTsKICAgICB2
b2lkIHNjaGVkdWxlSW50ZXJuYWxseUZhaWxlZExvYWQoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VX
b3JrZXJDbGllbnRGZXRjaC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9T
ZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2ZTBhMGZhMGM5ZjFlNmJm
M2U2MWEyMzgyYWM1ZjNiNTViZWMwZDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guY3BwCkBAIC0wLDAg
KzEsMTU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNl
cnZpY2VXb3JrZXJDbGllbnRGZXRjaC5oIgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQor
CisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBib29sIHNob3VsZFJlZGlyZWN0QXNHRVQo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBvbGRSZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgVVJMJiBuZXdVUkwsIGJvb2wgY3Jvc3NPcmlnaW4pCit7Cisg
ICAgaWYgKG9sZFJlcXVlc3QuaHR0cE1ldGhvZCgpID09ICJHRVQiIHx8IG9sZFJlcXVlc3QuaHR0
cE1ldGhvZCgpID09ICJIRUFEIikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFu
ZXdVUkwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIHN3aXRjaCAocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSkgeworICAgIGNhc2UgMzAzOgor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIDMwMjoKKyAgICBjYXNlIDMwMToKKyAgICAg
ICAgaWYgKG9sZFJlcXVlc3QuaHR0cE1ldGhvZCgpID09ICJQT1NUIikKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICBicmVhazsKKyAgICB9OworCisgICAgaWYgKGNyb3NzT3JpZ2lu
ICYmIG9sZFJlcXVlc3QuaHR0cE1ldGhvZCgpID09ICJERUxFVEUiKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKworLy8gRklYTUU6IFByb3Blcmx5IHN5bnRo
ZXNpemUgYSBuZXcgcmVxdWVzdCBhcyBwZXIgaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcv
I2h0dHAtcmVkaXJlY3QtZmV0Y2guCitzdGF0aWMgaW5saW5lIFJlc291cmNlUmVxdWVzdCBjb21w
dXRlTmV3UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG9sZFJlcXVlc3QsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAgIFJlc291cmNlUmVxdWVz
dCBuZXdSZXF1ZXN0ID0gb2xkUmVxdWVzdDsKKyAgICBVUkwgbmV3VVJMID0gVVJMIHsgb2xkUmVx
dWVzdC51cmwoKSwgcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpMb2Nh
dGlvbikgfTsKKyAgICBuZXdSZXF1ZXN0LnNldFVSTChuZXdVUkwpOworCisgICAgYm9vbCBjcm9z
c09yaWdpbiA9ICFwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwob2xkUmVxdWVzdC51cmwoKSwg
bmV3VVJMKTsKKworICAgIGlmIChuZXdSZXF1ZXN0Lmh0dHBNZXRob2QoKSAhPSAiR0VUIikgewor
ICAgICAgICBpZiAoc2hvdWxkUmVkaXJlY3RBc0dFVChvbGRSZXF1ZXN0LCByZXNwb25zZSwgbmV3
VVJMLCBjcm9zc09yaWdpbikpIHsKKyAgICAgICAgICAgIG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhv
ZCgiR0VUIik7CisgICAgICAgICAgICBuZXdSZXF1ZXN0LnNldEhUVFBCb2R5KG51bGxwdHIpOwor
ICAgICAgICAgICAgbmV3UmVxdWVzdC5jbGVhckhUVFBDb250ZW50VHlwZSgpOworICAgICAgICB9
CisgICAgfQorCisgICAgLy8gRklYTUU6IFByb3Blcmx5IGhhbmRsZSBSZWZlcmVyCisgICAgaWYg
KCFuZXdVUkwucHJvdG9jb2xJcygiaHR0cHMiKSAmJiBwcm90b2NvbElzKG5ld1JlcXVlc3QuaHR0
cFJlZmVycmVyKCksICJodHRwcyIpKQorICAgICAgICBuZXdSZXF1ZXN0LmNsZWFySFRUUFJlZmVy
cmVyKCk7CisKKyAgICBuZXdSZXF1ZXN0LnJlbW92ZUNyZWRlbnRpYWxzKCk7CisKKyAgICBpZiAo
Y3Jvc3NPcmlnaW4pIHsKKyAgICAgICAgbmV3UmVxdWVzdC5jbGVhckhUVFBBdXRob3JpemF0aW9u
KCk7CisgICAgICAgIG5ld1JlcXVlc3QuY2xlYXJIVFRQT3JpZ2luKCk7CisgICAgfQorCisgICAg
cmV0dXJuIG5ld1JlcXVlc3Q7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRSZWRpcmVj
dChpbnQgc3RhdHVzQ29kZSkKK3sKKyAgICBpZiAoc3RhdHVzQ29kZSA8PSAzMDAgfHwgc3RhdHVz
Q29kZSA+PSA0MDApCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoc3RhdHVzQ29kZSA9
PSAzMDQgfHwgc3RhdHVzQ29kZSA9PSAzMDUgfHwgc3RhdHVzQ29kZSA9PSAzMDYpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2Vy
Q2xpZW50RmV0Y2g6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICBpZiAoIW1fbG9hZGVyKQorICAgICAgICByZXR1cm47
CisKKyAgICAvLyBGSVhNRTogUHJvcGVybHkgaGFuZGxlIG9wYXF1ZSByZWRpcmVjdCByZXNwb25z
ZXMuCisgICAgaWYgKHNob3VsZFJlZGlyZWN0KHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpKSB7
CisgICAgICAgIG1fbG9hZGVyLT53aWxsU2VuZFJlcXVlc3QoY29tcHV0ZU5ld1JlcXVlc3QobV9s
b2FkZXItPm9yaWdpbmFsUmVxdWVzdCgpLCByZXNwb25zZSksIHJlc3BvbnNlLCBbcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpXShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KSBtdXRhYmxl
IHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGFuZGxlIHJlZGlyZWN0aW9ucyB0
aGF0IGNhbiBnbyBiYWNrIHRvIHNlcnZpY2Ugd29ya2VyLgorICAgICAgICAgICAgaWYgKCFwcm90
ZWN0ZWRUaGlzLT5tX2xvYWRlcikKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
ICAgIGlmIChhdXRvIGZhbGxiYWNrID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzLT5tX2ZhbGxiYWNr
KSkKKyAgICAgICAgICAgICAgICBmYWxsYmFjaygqcHJvdGVjdGVkVGhpcy0+bV9sb2FkZXIsIHJl
cXVlc3QpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChy
ZXNwb25zZS50eXBlKCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6VHlwZTo6RXJyb3IpIHsKKyAgICAg
ICAgLy8gQWRkIHN1cHBvcnQgZm9yIGEgYmV0dGVyIGVycm9yLgorICAgICAgICBtX2xvYWRlci0+
ZGlkRmFpbCh7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fbG9hZGVyLT5kaWRS
ZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRG
ZXRjaDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2
NF90IGVuY29kZWREYXRhTGVuZ3RoKQoreworICAgIGlmICghbV9sb2FkZXIpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fbG9hZGVyLT5kaWRSZWNlaXZlRGF0YShyZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCwg
RGF0YVBheWxvYWRCeXRlcyk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpk
aWRGaW5pc2hGZXRjaCgpCit7CisgICAgaWYgKCFtX2xvYWRlcikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9sb2FkZXItPmRpZEZpbmlzaExvYWRpbmcoTmV0d29ya0xvYWRNZXRyaWNzIHsgfSk7
Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpkaWRGYWlsKCkKK3sKKyAgICBp
ZiAoIW1fbG9hZGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYXV0byBmYWxsYmFjayA9
IFdURk1vdmUobV9mYWxsYmFjaykpCisgICAgICAgIGZhbGxiYWNrKCptX2xvYWRlciwgbV9sb2Fk
ZXItPm9yaWdpbmFsUmVxdWVzdCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjU2NWEzNGZhNDU0MTAyMjgxYWUwZjAwMjUxNmM0NTBlMDQ0YzRhZWIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2Vy
Q2xpZW50RmV0Y2guaApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2
ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZUxvYWRlci5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworY2xhc3MgU2VydmljZVdvcmtlckNsaWVudEZldGNoIGZpbmFsIDogcHVibGljIFJl
ZkNvdW50ZWQ8U2VydmljZVdvcmtlckNsaWVudEZldGNoPiwgcHVibGljIElQQzo6TWVzc2FnZVNl
bmRlciwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UmVmPFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaD4gY3JlYXRlKFJlZjxXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlcj4mJiBsb2FkZXIsIHVpbnQ2NF90IGlkZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rp
b24+JiYgY29ubmVjdGlvbiwgV1RGOjpGdW5jdGlvbjx2b2lkKFdlYkNvcmU6OlJlc291cmNlTG9h
ZGVyJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik+JiYgZmFsbGJhY2spCisKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRj
aCB7IFdURk1vdmUobG9hZGVyKSwgaWRlbnRpZmllciwgV1RGTW92ZShjb25uZWN0aW9uKSwgV1RG
TW92ZShmYWxsYmFjaykgfSk7CisgICAgfQorCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBT
ZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2goUmVmPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyPiYmIGxv
YWRlciwgdWludDY0X3QgaWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0
aW9uLCBXVEY6OkZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXImLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKT4mJiBmYWxsYmFjaykKKyAgICAgICAgOiBtX2xvYWRl
cihXVEZNb3ZlKGxvYWRlcikpCisgICAgICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisg
ICAgICAgICwgbV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCisgICAgICAgICwgbV9m
YWxsYmFjayhXVEZNb3ZlKGZhbGxiYWNrKSkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgaW50NjRfdCBlbmNv
ZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRGaW5pc2hGZXRjaCgpOworICAgIHZvaWQgZGlk
RmFpbCgpOworCisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigp
IGZpbmFsIHsgcmV0dXJuIG1fY29ubmVjdGlvbi5wdHIoKTsgfQorICAgIHVpbnQ2NF90IG1lc3Nh
Z2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgZmluYWwgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisK
KyAgICBSZWZQdHI8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI+IG1fbG9hZGVyOworICAgIHVpbnQ2
NF90IG1faWRlbnRpZmllciB7IDAgfTsKKyAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5l
Y3Rpb247CisgICAgV1RGOjpGdW5jdGlvbjx2b2lkKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik+IG1fZmFsbGJhY2s7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJD
bGllbnRGZXRjaC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZjc3ZTYy
MTdjMDFlMDE4OGYzZGI1N2JiODc0MDFmMTExMDhkMDY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLm1l
c3NhZ2VzLmluCkBAIC0wLDAgKzEsMzMgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBh
cmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
CisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKworbWVzc2FnZXMgLT4gU2Vy
dmljZVdvcmtlckNsaWVudEZldGNoIHsKKyAgICBEaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKKyAgICBEaWRSZWNlaXZlRGF0YShJUEM6OkRhdGFS
ZWZlcmVuY2UgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKKyAgICBEaWRGaW5pc2hG
ZXRjaCgpCisgICAgRGlkRmFpbCgpCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZp
Y2VXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9TZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyMTM1NWUy
Njg2MzA1NWMwZDFhMTMzM2RlNTI3NDliMWUxYzBmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIu
Y3BwCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmgiCisKKyNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiU3RvcmFnZVBy
b2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZVJlc3BvbnNlLmg+CisjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgorCit1c2luZyBuYW1l
c3BhY2UgUEFMOwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCit2b2lkIFNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlcjo6c3RhcnRTZXJ2aWNlV29ya2Vy
Q29udGV4dCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhJiBkYXRhKQoreworICAgIC8vIEZJWE1FOiBQcm92aWRlIGEgc2Vu
c2ljYWwgc2Vzc2lvbiBJRAorCisgICAgYXV0byB0aHJlYWQgPSBTZXJ2aWNlV29ya2VyVGhyZWFk
OjpjcmVhdGUoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGRhdGEsIFNlc3Npb25JRDo6ZGVm
YXVsdFNlc3Npb25JRCgpKTsKKyAgICBhdXRvIHRocmVhZElkZW50aWZpZXIgPSB0aHJlYWQtPmlk
ZW50aWZpZXIoKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fd29ya2VyVGhyZWFkTWFwLmFkZCh0aHJl
YWRJZGVudGlmaWVyLCBXVEZNb3ZlKHRocmVhZCkpOworICAgIEFTU0VSVChyZXN1bHQuaXNOZXdF
bnRyeSk7CisKKyAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5zdGFydCgpOworCisgICAgTE9H
KFNlcnZpY2VXb3JrZXIsICJDb250ZXh0IHByb2Nlc3MgUElEOiAlaSBzdGFydGVkIHdvcmtlciB0
aHJlYWQgJXNcbiIsIGdldHBpZCgpLCBkYXRhLndvcmtlcklELnV0ZjgoKS5kYXRhKCkpOworCisg
ICAgbV9jb25uZWN0aW9uVG9TdG9yYWdlUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVBy
b2Nlc3M6OlNlcnZpY2VXb3JrZXJDb250ZXh0U3RhcnRlZChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciwgZGF0YS5yZWdpc3RyYXRpb25LZXksIHRocmVhZElkZW50aWZpZXIsIGRhdGEud29ya2Vy
SUQpLCAwKTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXI6OnN0YXJ0RmV0
Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRl
bnRpZmllciwgdWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zKQoreworICAgIFVO
VVNFRF9QQVJBTShzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CisKKyAgICAvLyBIYXJkIGNvZGlu
ZyBzb21lIGZldGNoZXMgZm9yIHRlc3RpbmcgcHVycG9zZSB1bnRpbCB3ZSBpbXBsZW1lbnQgdGhl
IGNyZWF0aW9uIG9mIGZldGNoIGV2ZW50LgorICAgIGlmIChyZXF1ZXN0LnVybCgpLnN0cmluZygp
LmNvbnRhaW5zKCJ0ZXN0MSIpKSB7CisgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7
CisgICAgICAgIHJlc3BvbnNlLnNldFVSTChyZXF1ZXN0LnVybCgpKTsKKyAgICAgICAgcmVzcG9u
c2Uuc2V0SFRUUFN0YXR1c0NvZGUoMjAwKTsKKyAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1
c1RleHQoQVNDSUlMaXRlcmFsKCJIZWxsbyBmcm9tIHNlcnZpY2Ugd29ya2VyIikpOworICAgICAg
ICBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJv
Y2Vzczo6RGlkUmVjZWl2ZUZldGNoUmVzcG9uc2Uoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIs
IGZldGNoSWRlbnRpZmllciwgcmVzcG9uc2UpLCAwKTsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9T
dG9yYWdlUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OkRpZEZpbmlzaEZl
dGNoKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIpLCAwKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAocmVxdWVzdC51cmwoKS5zdHJpbmcoKS5jb250
YWlucygidGVzdDIiKSkgeworICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOworICAg
ICAgICByZXNwb25zZS5zZXRVUkwocmVxdWVzdC51cmwoKSk7CisgICAgICAgIHJlc3BvbnNlLnNl
dEhUVFBTdGF0dXNDb2RlKDUwMCk7CisgICAgICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNUZXh0
KEFTQ0lJTGl0ZXJhbCgiRXJyb3IgZnJvbSBzZXJ2aWNlIHdvcmtlciIpKTsKKyAgICAgICAgbV9j
b25uZWN0aW9uVG9TdG9yYWdlUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6
OkRpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBmZXRj
aElkZW50aWZpZXIsIHJlc3BvbnNlKSwgMCk7CisgICAgICAgIG1fY29ubmVjdGlvblRvU3RvcmFn
ZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpEaWRGaW5pc2hGZXRjaChz
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyKSwgMCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgaWYgKHJlcXVlc3QudXJsKCkuc3RyaW5nKCkuY29udGFpbnMo
InRlc3QzIikpIHsKKyAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKKyAgICAgICAg
cmVzcG9uc2Uuc2V0VVJMKHJlcXVlc3QudXJsKCkpOworICAgICAgICByZXNwb25zZS5zZXRIVFRQ
U3RhdHVzQ29kZSg1MDApOworICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChBU0NJ
SUxpdGVyYWwoIkVycm9yIGZyb20gc2VydmljZSB3b3JrZXIiKSk7CisgICAgICAgIHJlc3BvbnNl
LnNldFR5cGUoUmVzb3VyY2VSZXNwb25zZTo6VHlwZTo6RXJyb3IpOworICAgICAgICBtX2Nvbm5l
Y3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6RGlk
UmVjZWl2ZUZldGNoUmVzcG9uc2Uoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGZldGNoSWRl
bnRpZmllciwgcmVzcG9uc2UpLCAwKTsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9TdG9yYWdlUHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OkRpZEZpbmlzaEZldGNoKHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIpLCAwKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpGYWlsZWRGZXRjaChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciwgZmV0Y2hJZGVudGlmaWVyKSwgMCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNvbnRleHRNYW5h
Z2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjk4MmE3YzdjZWU1ZTE3MWNlNjEzMTU1OGZjMDRhNDA5ZmNjYWI0
YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1Nl
cnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKworI2luY2x1ZGUg
IkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0V4Y2VwdGlvbk9yLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IEZldGNoT3B0aW9uczsKK2NsYXNzIFJl
c291cmNlUmVxdWVzdDsKK3N0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE7Cit9CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIgewor
cHVibGljOgorICAgIGV4cGxpY2l0IFNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlcihSZWY8SVBD
OjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCisgICAgICAgIDogbV9jb25uZWN0aW9uVG9TdG9y
YWdlUHJvY2VzcyhXVEZNb3ZlKGNvbm5lY3Rpb24pKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lk
IHN0YXJ0U2VydmljZVdvcmtlckNvbnRleHQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYpOworICAgIHZv
aWQgc3RhcnRGZXRjaCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0
X3QgZmV0Y2hJZGVudGlmaWVyLCB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25z
Jik7CisKK3ByaXZhdGU6CisgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uVG9T
dG9yYWdlUHJvY2VzczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViQ29yZTo6U2Vy
dmljZVdvcmtlclRocmVhZD4+IG1fd29ya2VyVGhyZWFkTWFwOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVj
dGlvbi5jcHAKaW5kZXggNzZhZTdiNTViYTAzMGNjYjAzODM3ODZlODg3Mjg1OTlmZmJkNmFkYS4u
NjhmNjJlZTgxNDZkYThiZGVmZTE5YWUxYmZiOGE0ZGYwMjljZGM5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rp
b24uY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCiAj
aW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5o
IgogI2luY2x1ZGUgIlN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJTV09yaWdpblRh
YmxlLmgiCkBAIC03NSw2ICs3NiwxNSBAQCB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6c2V0
U1dPcmlnaW5UYWJsZVNoYXJlZE1lbW9yeShjb25zdCBTaGFyZWRNZW1vcnk6OkhhbgogICAgIG1f
c3dPcmlnaW5UYWJsZS0+c2V0U2hhcmVkTWVtb3J5KGhhbmRsZSk7CiB9CiAKK1JlZjxTZXJ2aWNl
V29ya2VyQ2xpZW50RmV0Y2g+IFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6c3RhcnRGZXRjaChSZWY8
V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI+JiYgbG9hZGVyLCB1aW50NjRfdCBpZGVudGlmaWVyLCBX
VEY6OkZ1bmN0aW9uPHZvaWQoUmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
KT4mJiBmYWxsYmFjaykKK3sKKyAgICBBU1NFUlQobG9hZGVyLT5vcHRpb25zKCkuc2VydmljZVdv
cmtlcnNNb2RlID09IFNlcnZpY2VXb3JrZXJzTW9kZTo6QWxsKTsKKy8vICAgIEFTU0VSVChsb2Fk
ZXItPm9wdGlvbnMoKS5zZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CisKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlN0YXJ0RmV0Y2goaWRlbnRpZmllciwgbG9hZGVy
LT5vcHRpb25zKCkuc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGxvYWRlci0+b3JpZ2luYWxSZXF1
ZXN0KCksIGxvYWRlci0+b3B0aW9ucygpKSk7CisgICAgcmV0dXJuIFNlcnZpY2VXb3JrZXJDbGll
bnRGZXRjaDo6Y3JlYXRlKFdURk1vdmUobG9hZGVyKSwgaWRlbnRpZmllciwgbV9jb25uZWN0aW9u
LmdldCgpLCBXVEZNb3ZlKGZhbGxiYWNrKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
CiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaAppbmRleCAy
NjE3ZWMyZTc0ZjBlNTRlMjQ0NjY4YzJjMjM1ZDM2M2JkYWRkNjUzLi4zNDNjODIwZDY2YTBhM2Mx
Mjg4YmMxZmY3MWJhMzU1OTc5YjY4ZjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaApAQCAtMzEsNiArMzEs
NyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5k
ZXIuaCIKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TV0NsaWVudENvbm5lY3Rpb24uaD4KICNp
bmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgpAQCAt
NDEsNiArNDIsNyBAQCBzdHJ1Y3QgRXhjZXB0aW9uRGF0YTsKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKK2NsYXNzIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDsKIGNsYXNzIFdlYlNXT3JpZ2luVGFi
bGU7CiAKIGNsYXNzIFdlYlNXQ2xpZW50Q29ubmVjdGlvbiA6IHB1YmxpYyBXZWJDb3JlOjpTV0Ns
aWVudENvbm5lY3Rpb24sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciB7CkBAIC01OCw2ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCiAg
ICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyUmVnaXN0ZXJlZEZvck9yaWdpbihjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbiYpIGNvbnN0IGZpbmFsOworICAgIFJlZjxTZXJ2aWNlV29ya2VyQ2xp
ZW50RmV0Y2g+IHN0YXJ0RmV0Y2goUmVmPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyPiYmLCB1aW50
NjRfdCBpZGVudGlmaWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXImLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKT4mJiBmYWxsYmFjayk7CiAKIHBy
aXZhdGU6CiAgICAgdm9pZCBzY2hlZHVsZVN0b3JhZ2VKb2IoY29uc3QgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckpvYkRhdGEmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwCmluZGV4IDYxZDhjZTU2
ZWVjNWJkNDE3M2I2NDJiZTkwNjFlNzNjNzczNzZmOTkuLmM0YTZiNTVmNmI4YjI0MTE2ZTkzMjY2
ZTBlMzQwODQ3MmViOGRkMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcApAQCAtNTgsNiAr
NTgsNDIgQEAgV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uJiBXZWJTZXJ2aWNlV29ya2VyUHJv
dmlkZXI6OnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uRm8KICAgICByZXR1cm4gV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkud2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VydmljZVdvcmtl
ckNvbm5lY3Rpb25Gb3JTZXNzaW9uKHNlc3Npb25JRCk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9v
bCBzaG91bGRIYW5kbGVGZXRjaChjb25zdCBXZWJTV0NsaWVudENvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25z
JiBvcHRpb25zKQoreworICAgIGlmIChvcHRpb25zLnNlcnZpY2VXb3JrZXJzTW9kZSAhPSBTZXJ2
aWNlV29ya2Vyc01vZGU6OkFsbCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gRklY
TUU6IFdlIHNob3VsZCBwcm9iYWJseSBhc3NlcnQgdGhhdCBvcHRpb25zLnNlcnZpY2VXb3JrZXJz
SWRlbnRpZmllciBpcyBub3QgbnVsbC4KKyAgICBpZiAoaXNQb3RlbnRpYWxOYXZpZ2F0aW9uT3JT
dWJyZXNvdXJjZVJlcXVlc3Qob3B0aW9ucy5kZXN0aW5hdGlvbikpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgbm9uLXN1YnJlc291cmNlIHJlcXVlc3Qg
bG9hZHMuCisgICAgaWYgKGlzTm9uU3VicmVzb3VyY2VSZXF1ZXN0KG9wdGlvbnMuZGVzdGluYXRp
b24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gY29ubmVjdGlvbi5oYXNT
ZXJ2aWNlV29ya2VyUmVnaXN0ZXJlZEZvck9yaWdpbigqcmVzb3VyY2Uub3JpZ2luKCkpOworfQor
Cit2b2lkIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6aGFuZGxlRmV0Y2goUmVzb3VyY2VMb2Fk
ZXImIGxvYWRlciwgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFdURjo6RnVuY3Rpb248dm9pZChSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYpPiYmIGZhbGxiYWNrKQoreworICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS53ZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbigpLT5zZXJ2aWNl
V29ya2VyQ29ubmVjdGlvbkZvclNlc3Npb24oc2Vzc2lvbklEKTsKKworICAgIGlmICghc2hvdWxk
SGFuZGxlRmV0Y2goY29ubmVjdGlvbiwgcmVzb3VyY2UsIGxvYWRlci5vcHRpb25zKCkpKSB7Cisg
ICAgICAgIC8vIEFkZCBhbiBvcHRpb24gdG8gZXJyb3IgcmVzb3VyY2UgbG9hZCBmb3IgRFRMIHRv
IGFjdHVhbGx5IGdvIHRocm91Z2ggcHJlZmxpZ2h0LgorICAgICAgICBmYWxsYmFjayhsb2FkZXIs
IGxvYWRlci5vcmlnaW5hbFJlcXVlc3QoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBhdXRvIGZldGNoID0gY29ubmVjdGlvbi5zdGFydEZldGNoKGxvYWRlciwgKyttX25leHRPbmdv
aW5nRmV0Y2hJZGVudGlmaWVyLCBXVEZNb3ZlKGZhbGxiYWNrKSk7CisgICAgbV9vbmdvaW5nRmV0
Y2hlcy5hZGQobV9uZXh0T25nb2luZ0ZldGNoSWRlbnRpZmllciwgV1RGTW92ZShmZXRjaCkpOwor
fQorCit2b2lkIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6ZGlkUmVjZWl2ZVNlcnZpY2VXb3Jr
ZXJDbGllbnRGZXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRl
Y29kZXImIGRlY29kZXIpCit7CisgICAgaWYgKGF1dG8gZmV0Y2ggPSBtX29uZ29pbmdGZXRjaGVz
LmdldChkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpCisgICAgICAgIGZldGNoLT5kaWRSZWNlaXZl
TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5o
CmluZGV4IDc3NWY1ZWUwNGIyYzZmZGQ3NTZhMmVjZTg4YzY4YTc3MGZjNzAxMGYuLjljZjAxYzJh
MGViOTVhYTJjMGNiNzI1MGJkNzYxNDM1NzljZjJkYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5o
CkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKKyNpbmNs
dWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZp
Y2VXb3JrZXJQcm92aWRlci5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCkBA
IC0zNiwxMiArMzcsMTkgQEAgY2xhc3MgV2ViU2VydmljZVdvcmtlclByb3ZpZGVyIGZpbmFsIDog
cHVibGljIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJQcm92aWRlciB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlciYgc2luZ2xldG9uKCk7CiAKKyAgICB2b2lkIGhh
bmRsZUZldGNoKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJiwgV2ViQ29yZTo6Q2FjaGVkUmVzb3Vy
Y2UmLCBQQUw6OlNlc3Npb25JRCwgV1RGOjpGdW5jdGlvbjx2b2lkKFdlYkNvcmU6OlJlc291cmNl
TG9hZGVyJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik+JiYgZmFsbGJhY2spOwor
CisgICAgdm9pZCBkaWRSZWNlaXZlU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKKwogcHJpdmF0ZToKICAgICBmcmllbmQgTmV2
ZXJEZXN0cm95ZWQ8V2ViU2VydmljZVdvcmtlclByb3ZpZGVyPjsKICAgICBXZWJTZXJ2aWNlV29y
a2VyUHJvdmlkZXIoKTsKIAogICAgIFdlYkNvcmU6OlNXQ2xpZW50Q29ubmVjdGlvbiYgc2Vydmlj
ZVdvcmtlckNvbm5lY3Rpb25Gb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKSBmaW5hbDsKIAorICAg
IEhhc2hNYXA8dWludDY0X3QsIFJlZjxTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g+PiBtX29uZ29p
bmdGZXRjaGVzOworICAgIHVpbnQ2NF90IG1fbmV4dE9uZ29pbmdGZXRjaElkZW50aWZpZXIgeyAw
IH07CisKIH07IC8vIGNsYXNzIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcgogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA1YTEy
ZDA0ZGNiZDIzMTEyYzQwMzkzMTk0NWU1ZmM1NTYxMDMwNzc2Li4zYmU1ZGYwMmY1NTE1NTM2NTZl
NjU3MzgyMDMwYTE5OGQzZTQ3ODYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwCkBAIC0zMiw2ICszMiwxMSBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRl
ICJXZWJTV0NsaWVudENvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJTV0NsaWVudENvbm5lY3Rp
b25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oIgorCisj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRG
ZXRjaE1lc3NhZ2VzLmgiCisjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIFBBTDsKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwpAQCAtNjcsNiArNzIsMTAgQEAgdm9pZCBXZWJUb1N0b3JhZ2VQcm9j
ZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW8KICAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJDb25uZWN0aW9uLT5kaWRSZWNlaXZlTWVzc2Fn
ZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJD
bGllbnRGZXRjaDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIFdlYlNlcnZpY2VX
b3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZVNlcnZpY2VXb3JrZXJDbGllbnRG
ZXRjaE1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CiAjZW5kaWYKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA2ZTI3NjcxMWVjYzU4N2I5NzRhY2EzMTMxNmRiZDFj
YTNjZjcxOTFiLi5kZWI5MDc3OGU0OTlkYTAyYTllOTlkYTM1OTU4ZTQxZTFlOTVjNjk0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAj
aW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nl
c3Npb24uaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuaCIKKyNp
bmNsdWRlICJTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuaCIKICNpbmNsdWRlICJTZXNzaW9u
VHJhY2tlci5oIgogI2luY2x1ZGUgIlN0YXRpc3RpY3NEYXRhLmgiCiAjaW5jbHVkZSAiU3RvcmFn
ZVByb2Nlc3NNZXNzYWdlcy5oIgpAQCAtMTA1LDcgKzEwNiw2IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZUxvYWRPYnNlcnZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tz
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TV0NvbnRleHRNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TY2hlbWVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4u
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oPgpAQCAtMTYy
Miw3ICsxNjIyLDcgQEAgTGliV2ViUlRDTmV0d29yayYgV2ViUHJvY2Vzczo6bGliV2ViUlRDTmV0
d29yaygpCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogdm9pZCBXZWJQcm9jZXNzOjpnZXRX
b3JrZXJDb250ZXh0Q29ubmVjdGlvbigpCiB7Ci0gICAgQVNTRVJUKCFtX3dvcmtlckNvbnRleHRD
b25uZWN0aW9uKTsKKyAgICBBU1NFUlQoIW1fc2VydmljZVdvcmtlck1hbmFnZXIpOwogCiAjaWYg
VVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAgICAgSVBDOjpDb25uZWN0aW9uOjpTb2NrZXRQYWly
IHNvY2tldFBhaXIgPSBJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigp
OwpAQCAtMTY0MiwyMCArMTY0MiwyNiBAQCB2b2lkIFdlYlByb2Nlc3M6OmdldFdvcmtlckNvbnRl
eHRDb25uZWN0aW9uKCkKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2VuZGlm
CiAKLSAgICBtX3dvcmtlckNvbnRleHRDb25uZWN0aW9uID0gSVBDOjpDb25uZWN0aW9uOjpjcmVh
dGVTZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyLCAqdGhpcyk7Ci0gICAgbV93
b3JrZXJDb250ZXh0Q29ubmVjdGlvbi0+b3BlbigpOwotCisgICAgYXV0byB3b3JrZXJDb250ZXh0
Q29ubmVjdGlvbiA9IElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQ29ubmVjdGlvbihjb25u
ZWN0aW9uSWRlbnRpZmllciwgKnRoaXMpOworICAgIHdvcmtlckNvbnRleHRDb25uZWN0aW9uLT5v
cGVuKCk7CisgICAgbV9zZXJ2aWNlV29ya2VyTWFuYWdlciA9ICBTZXJ2aWNlV29ya2VyQ29udGV4
dE1hbmFnZXIoV1RGTW92ZSh3b3JrZXJDb250ZXh0Q29ubmVjdGlvbikpOwogICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYlByb2Nlc3NQcm94eTo6RGlkR2V0V29ya2VyQ29udGV4dENvbm5lY3Rpb24oY29ubmVjdGlv
bkNsaWVudFBvcnQpLCAwKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpzdGFydFNlcnZpY2VXb3Jr
ZXJDb250ZXh0KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEpCiB7Ci0gICAgYXV0byBjb250ZXh0UmVzdWx0ID0g
U1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4dChz
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgZGF0YSk7Ci0gICAgCi0gICAgaWYgKGNvbnRleHRS
ZXN1bHQuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgIG1fd29ya2VyQ29udGV4dENvbm5lY3Rpb24t
PnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpTZXJ2aWNlV29ya2VyQ29udGV4dEZhaWxl
ZFRvU3RhcnQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGRhdGEucmVnaXN0cmF0aW9uS2V5
LCBkYXRhLndvcmtlcklELCBjb250ZXh0UmVzdWx0LmV4Y2VwdGlvbigpLm1lc3NhZ2UoKSksIDAp
OwotICAgIGVsc2UKLSAgICAgICAgbV93b3JrZXJDb250ZXh0Q29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6U3RvcmFnZVByb2Nlc3M6OlNlcnZpY2VXb3JrZXJDb250ZXh0U3RhcnRlZChzZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciwgZGF0YS5yZWdpc3RyYXRpb25LZXksIGNvbnRleHRSZXN1bHQu
cmV0dXJuVmFsdWUoKSwgZGF0YS53b3JrZXJJRCksIDApOworICAgIGlmICghbV9zZXJ2aWNlV29y
a2VyTWFuYWdlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zZXJ2aWNlV29ya2VyTWFuYWdl
ci0+c3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4dChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwg
ZGF0YSk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzczo6c3RhcnRGZXRjaEluU2VydmljZVdvcmtlcih1
aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlm
aWVyLCB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgaWYgKCFt
X3NlcnZpY2VXb3JrZXJNYW5hZ2VyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3NlcnZpY2VX
b3JrZXJNYW5hZ2VyLT5zdGFydEZldGNoKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBmZXRj
aElkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCByZXF1ZXN0LCBvcHRpb25zKTsK
IH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCA1YzJl
NmM3NmRmNzgyNDVhMWIzMTU0OWM2ZTAxMWZlNGY1ZDRkM2Y3Li5mZWUxNDM2MjZiNzFlYjkxMGM4
NzM1MGYwNTZkMjI3NmFiZmM5MWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1h
bmFnZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUNhY2hlc1RvQ2xlYXIuaCIKICNpbmNsdWRlICJT
YW5kYm94RXh0ZW5zaW9uLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXJTdGF0ZS5oIgogI2luY2x1ZGUgIlZpZXdVcGRhdGVE
aXNwYXRjaGVyLmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlci5o
IgpAQCAtMzAwLDcgKzMwMSw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQogICAgIHZvaWQgZ2V0V29ya2VyQ29udGV4dENvbm5lY3Rpb24oKTsKICAgICB2b2lkIHN0YXJ0
U2VydmljZVdvcmtlckNvbnRleHQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYpOwotICAgIFJlZlB0cjxJ
UEM6OkNvbm5lY3Rpb24+IG1fd29ya2VyQ29udGV4dENvbm5lY3Rpb247CisgICAgdm9pZCBzdGFy
dEZldGNoSW5TZXJ2aWNlV29ya2VyKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
LCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpGZXRj
aE9wdGlvbnMmKTsKICNlbmRpZgogCiAgICAgdm9pZCByZWxlYXNlUGFnZUNhY2hlKCk7CkBAIC00
MzgsNiArNDM5LDkgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShXQVlMQU5EKQogICAgIHN0ZDo6
dW5pcXVlX3B0cjxXYXlsYW5kQ29tcG9zaXRvckRpc3BsYXk+IG1fd2F5bGFuZENvbXBvc2l0b3JE
aXNwbGF5OwogI2VuZGlmCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIHN0ZDo6b3B0
aW9uYWw8U2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyPiBtX3NlcnZpY2VXb3JrZXJNYW5hZ2Vy
OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMjIwNjM2MDFlMDYzYWI1
YjIxNzhmZjdiMzZjOWM5OTEyODEwNzk3Zi4uMWE3Yjc2ODg5MDQwZTg0Yjc1YjVhY2EyNzE2NWRi
OTVlMzg0NDA0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KQEAgLTExNyw1ICsxMTcsNiBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExl
Z2FjeVJlY2VpdmVyIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgR2V0V29ya2Vy
Q29udGV4dENvbm5lY3Rpb24oKQogICAgIFN0YXJ0U2VydmljZVdvcmtlckNvbnRleHQodWludDY0
X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEgY29udGV4dERhdGEpCitTdGFydEZldGNoSW5TZXJ2aWNlV29ya2VyKHVp
bnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZp
ZXIsIHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QgcmVxdWVzdCwgc3RydWN0IFdlYkNvcmU6OkZldGNoT3B0aW9ucyBvcHRpb25zKQogI2Vu
ZGlmCiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggZGE4N2UzOTgxZWE0ZTA0NTljN2FlNzY4MjUwZTA0MjQyNGVlYmY3OC4u
N2ViYTg3Y2U1N2E2ZmM2NjY2MTdmY2UxNzAzZGRhNjAwYzkxMWQ0MyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDE3LTEwLTE4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBZGQgcHJlbGltaW5hcnkgc3VwcG9ydCBmb3IgU2VydmljZVdvcmtlciBIYW5kbGUg
RmV0Y2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
ODQ3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
aHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvYmFzaWMtZmV0Y2guaHR0cHMtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1mZXRj
aC5odHRwcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2Vydmlj
ZS9yZXNvdXJjZXMvYmFzaWMtZmV0Y2gtd29ya2VyLmpzOiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvYmFzaWMtZmV0Y2guanM6IEFkZGVkLgor
CiAyMDE3LTEwLTE4ICBNczJnZXIgIDxNczJnZXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RL
XSBUZXN0IGdhcmRlbmluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29y
a2Vycy9zZXJ2aWNlL2Jhc2ljLWZldGNoLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2ljLWZldGNoLmh0dHBzLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mZmQ2NDlmMDliZjE0MzAxY2U4N2NkMGM5ZmM2MjRhZGM2MGQ2NGZlCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
YmFzaWMtZmV0Y2guaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDEyOiB0ZXN0MSBzdGF0dXMgY29kZTogMjAwCitDT05TT0xFIE1FU1NBR0U6
IGxpbmUgMTM6IHRlc3QxIHN0YXR1cyB0ZXh0OiBIZWxsbyBmcm9tIHNlcnZpY2Ugd29ya2VyCitD
T05TT0xFIE1FU1NBR0U6IGxpbmUgMTY6IHRlc3QyIHN0YXR1cyBjb2RlOiA1MDAKK0NPTlNPTEUg
TUVTU0FHRTogbGluZSAxNzogdGVzdDIgc3RhdHVzIHRleHQ6IEVycm9yIGZyb20gc2VydmljZSB3
b3JrZXIKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyNjogdGVzdDMgZmV0Y2ggZmFpbGVkIGFzIGV4
cGVjdGVkCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2
aWNlL2Jhc2ljLWZldGNoLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtl
cnMvc2VydmljZS9iYXNpYy1mZXRjaC5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyYTA2NmFjOThl
Zjc4Yjg4NGY1ZmNhZTQ2YTk0MThhNThhNWNiYWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1mZXRjaC5odHRwcy5odG1sCkBA
IC0wLDAgKzEsOSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc3ct
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvYmFzaWMtZmV0Y2guanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2Vz
L2Jhc2ljLWZldGNoLXdvcmtlci5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9z
ZXJ2aWNlL3Jlc291cmNlcy9iYXNpYy1mZXRjaC13b3JrZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjlkOGEy
YmQzMDE1Y2FlNGE0YTQ4NTZhMjRmMzlhZjg2YzE2ZDE3NAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9iYXNpYy1mZXRj
aC13b3JrZXIuanMKQEAgLTAsMCArMSBAQAorLy8gRklYTUU6IHJlZ2lzdGVyIGFuIG9uZmV0Y2gg
ZXZlbnQgaGFuZGxlciBhbmQgaGFuZGxlICJ0ZXN0MSIsICJ0ZXN0MiIgYW5kICJ0ZXN0MyIgVVJM
cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVz
b3VyY2VzL2Jhc2ljLWZldGNoLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3Nl
cnZpY2UvcmVzb3VyY2VzL2Jhc2ljLWZldGNoLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4NzQzYTI2NDI5YjE3
NzdiMjRjYjc2MTI1ZjgwMDNjYzljNDhkNGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvYmFzaWMtZmV0Y2guanMKQEAg
LTAsMCArMSwzNCBAQAorZnVuY3Rpb24gZG9uZSgpCit7CisgICAgZmluaXNoU1dUZXN0KCk7Cit9
CisKK2FzeW5jIGZ1bmN0aW9uIHRlc3QoKQoreworICAgIHRyeSB7CisgICAgICAgIGF3YWl0IG5h
dmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCJyZXNvdXJjZXMvYmFzaWMtZmV0Y2gtd29y
a2VyLmpzIiwgeyB9KTsKKworICAgICAgICB2YXIgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCgidGVz
dDEiKTsKKyAgICAgICAgY29uc29sZS5sb2coInRlc3QxIHN0YXR1cyBjb2RlOiAiICsgcmVzcG9u
c2Uuc3RhdHVzKTsKKyAgICAgICAgY29uc29sZS5sb2coInRlc3QxIHN0YXR1cyB0ZXh0OiAiICsg
cmVzcG9uc2Uuc3RhdHVzVGV4dCk7CisKKyAgICAgICAgdmFyIHJlc3BvbnNlID0gYXdhaXQgZmV0
Y2goInRlc3QyIik7CisgICAgICAgIGNvbnNvbGUubG9nKCJ0ZXN0MiBzdGF0dXMgY29kZTogIiAr
IHJlc3BvbnNlLnN0YXR1cyk7CisgICAgICAgIGNvbnNvbGUubG9nKCJ0ZXN0MiBzdGF0dXMgdGV4
dDogIiArIHJlc3BvbnNlLnN0YXR1c1RleHQpOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAg
ICByZXNwb25zZSA9IGF3YWl0IGZldGNoKCJ0ZXN0MyIpOworICAgICAgICAgICAgY29uc29sZS5s
b2coInRlc3QzIGZldGNoIHN1Y2NlZWRlZCB1bmV4cGVjdGVkbHkiKTsKKyAgICAgICAgICAgIGNv
bnNvbGUubG9nKCJ0ZXN0MyBzdGF0dXMgY29kZTogIiArIHJlc3BvbnNlLnN0YXR1cyk7CisgICAg
ICAgICAgICBjb25zb2xlLmxvZygidGVzdDMgc3RhdHVzIHRleHQ6ICIgKyByZXNwb25zZS5zdGF0
dXNUZXh0KTsKKworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBjb25zb2xlLmxv
ZygidGVzdDMgZmV0Y2ggZmFpbGVkIGFzIGV4cGVjdGVkIik7CisgICAgICAgIH0KKyAgICB9IGNh
dGNoKGUpIHsKKyAgICAgICAgY29uc29sZS5sb2coIkdvdCBleGNlcHRpb246ICIgKyBlKTsKKyAg
ICB9CisgICAgZmluaXNoU1dUZXN0KCk7Cit9CisKK3Rlc3QoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324169</attachid>
            <date>2017-10-18 14:49:05 -0700</date>
            <delta_ts>2017-10-18 15:23:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178475-20171018144904.patch</filename>
            <type>text/plain</type>
            <size>90354</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzNjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmViOTQ5MjMwM2Q1Y2Vh
ZWRkYzcxNjZiMGYwZDEyM2E5ZTA2MzMyMy4uZGM1NTJiYTVlMTc2YmVmMjViYTBmZTNlZDkwMTIx
NGI4MjExNTU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE3LTEwLTE4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgcHJlbGltaW5hcnkg
c3VwcG9ydCBmb3IgU2VydmljZVdvcmtlciBIYW5kbGUgRmV0Y2gKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODQ3NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvd29ya2Vycy9z
ZXJ2aWNlL2Jhc2ljLWZldGNoLmh0dHBzLmh0bWwKKworICAgICAgICBBZGRpbmcgcGFyYW1ldGVy
cyB0byBhbGxvdyBXZWJLaXQgdG8gZG8gbG9hZGluZyB0aHJvdWdoIFNlcnZpY2UgV29ya2VyIG9y
IHRocm91Z2ggcmVndWxhciBuZXR3b3JraW5nLgorICAgICAgICBBIHNjcmlwdCBjb250ZXh0IGlz
IG5vdyBzdG9yaW5nIGl0cyBzZWxlY3RlZCBzZXJ2aWNlIHdvcmtlciBpZGVudGlmaWVyLiBUaGlz
IHNob3VsZCBiZSBmdWxseSBpbXBsZW1lbnRlZCBsYXRlciBvbi4KKyAgICAgICAgVGhpcyBzZWxl
Y3RlZCBzZXJ2aWNlIHdvcmtlciBpZGVudGlmaWVyIGlzIHBhc3NlZCB0byBsb2FkaW5nIGNvZGUg
YXMgYSBSZXNvdXJjZUxvYWRlck9wdGlvbnMgZmllbGQuCisgICAgICAgIFNlcnZpY2Ugd29ya2Vy
cyBtb2RlIGlzIGFsc28gYWRkZWQgYXMgYSBSZXNvdXJjZUxvYWRlck9wdGlvbnMgZmllbGQgc28g
dGhhdCB0aGUgc2VydmljZSB3b3JrZXIgY2FuIGJlIGJ5cGFzc2VkLgorCisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVj
dXRpb25Db250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpzZWxlY3RlZFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnNldFNlbGVjdGVkU2VydmljZVdvcmtlcklkZW50
aWZpZXIpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIpOgorICAgICAgICAqIGxvYWRlci9GZXRjaE9wdGlvbnMuaDoKKyAgICAgICAg
KFdlYkNvcmU6OmlzUG90ZW50aWFsTmF2aWdhdGlvbk9yU3VicmVzb3VyY2VSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OmlzTm9uU3VicmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKiBsb2Fk
ZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmg6CisgICAgICAgICogbG9hZGVyL1dvcmtlclRocmVh
ZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRl
cjo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJl
YWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKToKKyAgICAg
ICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclRocmVh
ZC5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29sdmVk
V2l0aFJlZ2lzdHJhdGlvbik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJQcm92aWRlci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4
dE1hbmFnZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJUaHJlYWQuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyLmg6CisKIDIwMTctMTAtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBBZGQgYW4gZWZmaWNpZW50IGRhdGEgc3RydWN0dXJlIGZvciBXZWJDb3Jl
IHRvIHF1ZXJ5IGlmIHRoZXJlIGlzIGEgU2VydmljZSBXb3JrZXIgcmVnaXN0ZXJlZCBmb3IgYSBn
aXZlbiBvcmlnaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNTBjZDY0MjhhMmEwY2JiZjkzYWZkODNmYjhjMzYwZDJh
YzMwNWYwMi4uYWJjOTJlNzkyODkwMWM2NjQwMjE1MGE4MTdjMTA5NTgxYWRiZDJjNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw4NiBAQAorMjAxNy0xMC0xOCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBh
cHBsZS5jb20+CisKKyAgICAgICAgQWRkIHByZWxpbWluYXJ5IHN1cHBvcnQgZm9yIFNlcnZpY2VX
b3JrZXIgSGFuZGxlIEZldGNoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzg0NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBQcmVsaW1pbmFyeSBzdXBwb3J0IG9mIEhhbmRsZSBGZXRjaCBhbGdvcml0aG0g
YW5kIGludGVncmF0aW9uIHdpdGggZmV0Y2ggc3BlYy4KKyAgICAgICAgQWRkaW5nIFNlcnZpY2VX
b3JrZXJDbGllbnRGZXRjaCBhcyB0aGUgY2xhc3MgcmVzcG9uc2libGUgdG8gZG8gdGhlIGxvYWQg
dGhyb3VnaCBTZXJ2aWNlV29ya2VyLgorICAgICAgICBJdCBpcyBzaW1pbGFyIHRvIFdlYlJlc291
cmNlTG9hZGVyIHRoYXQgZG8gdGhlIGxvYWQgdGhyb3VnaCBOZXR3b3JrUHJvY2Vzcy4KKyAgICAg
ICAgSW4gY2FzZSBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2ggaXMgbm90IGFibGUgdG8gbG9hZCB0
aHJvdWdoIFNlcnZpY2VXb3JrZXIsCisgICAgICAgIGl0IHdpbGwgZmFsbGJhY2sgdG8gV2ViUmVz
b3VyY2VMb2FkZXIgdGhyb3VnaCBhIGZhbGxiYWNrIGNhbGxiYWNrLgorCisgICAgICAgIExvYWRp
bmcgdGhyb3VnaCBTZXJ2aWNlIFdvcmtlciBpcyBkb25lIGN1cnJlbnRseSBpZjoKKyAgICAgICAg
LSBUaGVyZSBpcyBhIHNlcnZpY2Ugd29ya2VyIHJlZ2lzdGVyZWQgZm9yIHRoYXQgb3JpZ2luCisg
ICAgICAgIC0gUmVxdWVzdCBpcyBhIHN1YnJlc291cmNlCisgICAgICAgIC0gc2VydmljZSB3b3Jr
ZXJzIG1vZGUgaXMgYWxsCisgICAgICAgIFRoZXJlIHdpbGwgYmUgY2FzZXMgd2hlcmUgdGhlIHNl
cnZpY2Ugd29ya2VyIHdpbGwgbm90IGRvIHRoZSBsb2FkaW5nLCBmb3IgaW5zdGFuY2Ugd2hlbiBm
ZXRjaCBldmVudCBoYW5kbGVyIGlzIG5vdCBzZXQuCisgICAgICAgIEZ1dHVyZSB3b3JrIHNob3Vs
ZCB0cnkgdG8gcmVkdWNlIHRoZSBjYXNlcyB3aGVyZSB0aGUgSVBDIGRhbmNlIGlzIGRvbmUgdW5u
ZWNlc3NhcmlseS4KKworICAgICAgICBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2ggaXMgcmVzcG9u
c2libGUgdG8gYWRhcHQgdGhlIFNlcnZpY2VXb3JrZXIgcmVzcG9uc2UgdG8gUmVzb3VyY2VMb2Fk
ZXIuCisgICAgICAgIEluIHBhcnRpY3VsYXIsIGl0IGlzIGNhbGxpbmcgUmVzb3VyY2VMb2FkZXIg
ZXJyb3IgY2FsbGJhY2sgaWYgcmVzcG9uc2UgaXMgb2YgdHlwZSBlcnJvci4KKyAgICAgICAgSXQg
aXMgY2FsbGluZyBSZXNvdXJjZUxvYWRlciByZWRpcmVjdGlvbiBjYWxsYmFjayBpZiByZXNwb25z
ZSBpcyBhIHJlZGlyZWN0aW9uIHJlc3BvbnNlLgorCisgICAgICAgIEltcGxlbWVudGluZyB0aGUg
SVBDIGNvbW11bmljYXRpb24gZGVkaWNhdGVkIHRvIGZldGNoIGJldHdlZW4gV2ViUHJvY2VzcyBh
bmQgU2VydmljZVdvcmtlciB0aHJvdWdoIFN0b3JhZ2VQcm9jZXNzLgorICAgICAgICBJbiB0aGUg
ZnV0dXJlLCBXZWJQcm9jZXNzIHNob3VsZCBjcmVhdGUgYSBkaXJlY3QgSVBDIGNvbW11bmljYXRp
b24gdG8gdGhlIFNlcnZpY2VXb3JrZXIgcHJvY2Vzcy4KKworICAgICAgICBNb3ZlZCBTV0NvbnRl
eHRNYW5hZ2VyIGZyb20gV2ViQ29yZSB0byBXZWJLaXQgYW5kIHJlbmFtZWQgaXQgdG8gU2Vydmlj
ZVdvcmtlckNvbnRleHRNYW5hZ2VyLgorICAgICAgICBUaGlzIGNsYXNzIGlzIG1vdmVkIHRvIFdl
YktpdCBhcyBpdCB3aWxsIGhhdmUgdG8gaGFuZGxlIElQQyBhbmQgaGF2aW5nIGEgc2VwYXJhdGlv
biB3aWxsIGFkZCBzb21lIHVubmVjZXNzYXJ5IGJvaWxlcnBsYXRlLgorCisgICAgICAgICogRGVy
aXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVy
Q29ubmVjdGlvbjo6c3RhcnRGZXRjaCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29u
bmVjdGlvbjo6ZGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJT
V1NlcnZlckNvbm5lY3Rpb246OmRpZFJlY2VpdmVGZXRjaERhdGEpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OmRpZEZpbmlzaEZldGNoKToKKyAgICAgICAgKFdlYktp
dDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpmYWlsZWRGZXRjaCk6CisgICAgICAgICogU3RvcmFn
ZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaDoKKyAgICAgICAg
KiBTdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNz
YWdlcy5pbjoKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjpmYWlsZWRGZXRjaCk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjpkaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSk6CisgICAgICAg
IChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjpkaWRSZWNlaXZlRmV0Y2hEYXRhKToKKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OmRpZEZpbmlzaEZldGNoKToKKyAgICAgICAgKiBTdG9y
YWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1N0
b3JhZ2VQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJh
dGVneS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxv
YWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJv
bU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVy
U3RyYXRlZ3kuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNs
aWVudEZldGNoLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OnNob3VsZFJlZGlyZWN0QXNH
RVQpOgorICAgICAgICAoV2ViS2l0Ojpjb21wdXRlTmV3UmVxdWVzdCk6CisgICAgICAgIChXZWJL
aXQ6OnNob3VsZFJlZGlyZWN0KToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckNsaWVu
dEZldGNoOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29y
a2VyQ2xpZW50RmV0Y2g6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6U2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoOjpkaWRGaW5pc2hGZXRjaCk6CisgICAgICAgIChXZWJLaXQ6OlNl
cnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6ZGlkRmFpbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9T
dG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLm1lc3NhZ2VzLmluOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNvbnRleHRNYW5h
Z2VyLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwLgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2Vy
Q29udGV4dE1hbmFnZXI6OnN0YXJ0U2VydmljZVdvcmtlckNvbnRleHQpOgorICAgICAgICAoV2Vi
S2l0OjpTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXI6OnN0YXJ0RmV0Y2gpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuaDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1h
bmFnZXIuaC4KKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyOjpT
ZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVu
dENvbm5lY3Rpb246OnN0YXJ0RmV0Y2gpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NsaWVudENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlclByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2hvdWxkSGFuZGxl
RmV0Y2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OmhhbmRs
ZUZldGNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlclByb3ZpZGVyOjpkaWRS
ZWNlaXZlU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2Fn
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzczo6Z2V0V29ya2VyQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpzdGFydFNlcnZpY2VXb3JrZXJDb250ZXh0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzczo6c3RhcnRGZXRjaEluU2VydmljZVdvcmtlcik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluOgorCiAyMDE3LTEwLTE4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgQWRkIGFuIGVmZmljaWVudCBkYXRhIHN0cnVjdHVyZSBmb3IgV2ViQ29y
ZSB0byBxdWVyeSBpZiB0aGVyZSBpcyBhIFNlcnZpY2UgV29ya2VyIHJlZ2lzdGVyZWQgZm9yIGEg
Z2l2ZW4gb3JpZ2luCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggZDVhOTIwNDk0OWQ4YmJlOGRiYWI2OTA2OTk2OTZlZTk0NTM4N2U5
NC4uNzNkNTJjYTM1MGJjZThlMzVhYTk5NTgyYzU4ZWY3ZTNmMjZiYjc3YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjMzNiw4
ICsyMzM2LDYgQEAKIAkJNTE3QTYzQzYxQjc0MzE5MjAwRTdEQ0RDIC8qIEtleWVkRW5jb2RlckNG
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdBNjND
MjFCNzQzMTdFMDBFN0RDREMgLyogS2V5ZWRFbmNvZGVyQ0YuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTdCMjVBOTFDQzgyQjJBMDA2MUMwMTEg
LyogSURCQ29ubmVjdGlvblByb3h5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxN0IyNUE3MUNDODIwMzIwMDYxQzAxMSAvKiBJREJDb25uZWN0aW9u
UHJveHkuY3BwICovOyB9OwogCQk1MTdCMjVBQTFDQzgyQjJBMDA2MUMwMTEgLyogSURCQ29ubmVj
dGlvblByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTdCMjVBODFDQzgyMDMyMDA2MUMwMTEgLyogSURCQ29ubmVjdGlvblByb3h5LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTE3Qzg3MEExRjhF
QkIyNTAwRUI4MDc2IC8qIFNXQ29udGV4dE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3Qzg3MDgxRjhFQjlCRjAwRUI4MDc2IC8qIFNX
Q29udGV4dE1hbmFnZXIuY3BwICovOyB9OwotCQk1MTdDODcwQjFGOEVCQjI1MDBFQjgwNzYgLyog
U1dDb250ZXh0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTE3Qzg3MDkxRjhFQjlDMDAwRUI4MDc2IC8qIFNXQ29udGV4dE1hbmFnZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTdDODcx
ODFGOEZENEQ5MDBFQjgwNzYgLyogU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0M4NzE2MUY4RkQ0RDMw
MEVCODA3NiAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwICovOyB9OwogCQk1MTdERUVF
NTFERTk0QURDMDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3REVFRTMxREU5
NEFEQzAwQjkxNjQ0IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbSAqLzsgfTsK
IAkJNTE3REVFRTgxREU5NEIwODAwQjkxNjQ0IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
ck1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3
REVFRTcxREU5NEIwODAwQjkxNjQ0IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDI2
OSw4ICsxMDI2Nyw2IEBACiAJCTUxN0E2M0MyMUI3NDMxN0UwMEU3RENEQyAvKiBLZXllZEVuY29k
ZXJDRi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLZXllZEVuY29kZXJDRi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdCMjVBNzFDQzgyMDMyMDA2MUMwMTEg
LyogSURCQ29ubmVjdGlvblByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IElEQkNvbm5lY3Rpb25Qcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxN0IyNUE4MUNDODIwMzIwMDYxQzAxMSAvKiBJREJDb25uZWN0aW9uUHJveHkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCQ29ubmVjdGlvblByb3h5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxN0M4NzA4MUY4RUI5QkYwMEVCODA3NiAvKiBTV0Nv
bnRleHRNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNX
Q29udGV4dE1hbmFnZXIuY3BwOyBwYXRoID0gd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250
ZXh0TWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKLQkJNTE3Qzg3MDkx
RjhFQjlDMDAwRUI4MDc2IC8qIFNXQ29udGV4dE1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gU1dDb250ZXh0TWFuYWdlci5oOyBwYXRoID0gd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07
CiAJCTUxN0M4NzEwMUY4RUU3MkUwMEVCODA3NiAvKiBTZXJ2aWNlV29ya2VyVGhyZWFkLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNlcnZpY2VXb3JrZXJUaHJlYWQuaDsgcGF0
aCA9IHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaDsgc291cmNl
VHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQk1MTdDODcxMTFGOEVFNzJGMDBFQjgwNzYgLyogU2Vy
dmljZVdvcmtlclRocmVhZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBTZXJ2aWNlV29ya2VyVGhyZWFkLmNwcDsgcGF0aCA9IHdvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJ
CTUxN0M4NzE2MUY4RkQ0RDMwMEVCODA3NiAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtlckNvbnRl
eHREYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5MTA1LDggKzE5MTAx
LDYgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTUxN0M4NzExMUY4RUU3MkYwMEVCODA3NiAvKiBT
ZXJ2aWNlV29ya2VyVGhyZWFkLmNwcCAqLywKIAkJCQk1MTdDODcxMDFGOEVFNzJFMDBFQjgwNzYg
LyogU2VydmljZVdvcmtlclRocmVhZC5oICovLAotCQkJCTUxN0M4NzA4MUY4RUI5QkYwMEVCODA3
NiAvKiBTV0NvbnRleHRNYW5hZ2VyLmNwcCAqLywKLQkJCQk1MTdDODcwOTFGOEVCOUMwMDBFQjgw
NzYgLyogU1dDb250ZXh0TWFuYWdlci5oICovLAogCQkJKTsKIAkJCXBhdGggPSBjb250ZXh0Owog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMwNjAwLDcgKzMwNTk0LDYgQEAKIAkJCQlC
MjIyN0FGNjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHWm9vbUFuZFBhbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQjJFNEVDOTgwRDAwQzIyQjAwNDMyNjQzIC8qIFNWR1pvb21FdmVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTE3QTUzMUQxRjRCNTNCMTAwRENEQzBBIC8qIFNXQ2xpZW50Q29ubmVjdGlv
bi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE3Qzg3MEIxRjhFQkIyNTAwRUI4MDc2IC8qIFNXQ29u
dGV4dE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxN0E1MkYwMUY0NzUzNUIwMERDREMw
QSAvKiBTV1NlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGNjQ1OTcxRjRBNjg2RjAwQjU0
REVEIC8qIFNXU2VydmVyUmVnaXN0cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTdBNTM0
NjFGNTBDMTdGMDBEQ0RDMEEgLyogU1dTZXJ2ZXJXb3JrZXIuaCBpbiBIZWFkZXJzICovLApAQCAt
MzQ0MTEsNyArMzQ0MDQsNiBAQAogCQkJCUIyMjI3QUY1MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkda
b29tQW5kUGFuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyRTRFQzk3MEQwMEMyMkIwMDQzMjY0
MyAvKiBTVkdab29tRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE3QTUzMUMxRjRCNTNC
MTAwRENEQzBBIC8qIFNXQ2xpZW50Q29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1
MTdDODcwQTFGOEVCQjI1MDBFQjgwNzYgLyogU1dDb250ZXh0TWFuYWdlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1MTdBNTJGMTFGNDc1NEU3MDBEQ0RDMEEgLyogU1dTZXJ2ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTFGNjQ1OTYxRjRBNjg2RjAwQjU0REVEIC8qIFNXU2VydmVyUmVnaXN0
cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxN0E1MzQ1MUY1MEMxN0YwMERDREMwQSAv
KiBTV1NlcnZlcldvcmtlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4IDMyZjE5YzMwM2ZmMDljMDMzODBhNGYxOTFh
MjA0YjAwOWMwYjlmNjEuLjk2NmQ5ZTdiMjYyMWIxNjBkMGJjNDg3YzFkNzg1NGMyY2E3YTRhZTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtMjMw
LDYgKzIzMCwxMSBAQCBwdWJsaWM6CiAKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlKCk7
CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgdWludDY0X3Qgc2VsZWN0ZWRTZXJ2
aWNlV29ya2VySWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdvcmtlcklkZW50
aWZpZXI7IH0KKyAgICB2b2lkIHNldFNlbGVjdGVkU2VydmljZVdvcmtlcklkZW50aWZpZXIodWlu
dDY0X3QgaWRlbnRpZmllcikgeyBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gaWRlbnRpZmll
cjsgfQorI2VuZGlmCisKIHByb3RlY3RlZDoKICAgICBjbGFzcyBBZGRDb25zb2xlTWVzc2FnZVRh
c2sgOiBwdWJsaWMgVGFzayB7CiAgICAgcHVibGljOgpAQCAtMjk3LDYgKzMwMiw4IEBAIHByaXZh
dGU6CiAjaWYgIUFTU0VSVF9ESVNBQkxFRCB8fCBFTkFCTEUoU0VDVVJJVFlfQVNTRVJUSU9OUykK
ICAgICBib29sIG1fYWN0aXZlRE9NT2JqZWN0UmVtb3ZhbEZvcmJpZGRlbiB7IGZhbHNlIH07CiAj
ZW5kaWYKKworICAgIHVpbnQ2NF90IG1fc2VydmljZVdvcmtlcklkZW50aWZpZXIgeyAwIH07CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDkwMmM4OWUzOTczN2M0MTE0MWUz
NWMyY2U0MmU5MjY2OTc0MGMyOWUuLjRiNDhmNTFlYzAxNzVmYzZmMDFlZWI0Y2UxYzkxN2JmMjAz
ZmU4NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIuY3BwCkBAIC0xMDMsNiArMTAzLDExIEBAIERvY3VtZW50VGhyZWFkYWJsZUxvYWRl
cjo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyKERvY3VtZW50JiBkb2N1bWVudCwgVGhyZWFkYWJs
CiB7CiAgICAgcmVsYXhBZG9wdGlvblJlcXVpcmVtZW50KCk7CiAKKyNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCisgICAgaWYgKG1fb3B0aW9ucy5zZXJ2aWNlV29ya2Vyc01vZGUgPT0gU2Vydmlj
ZVdvcmtlcnNNb2RlOjpBbGwgJiYgIW1fb3B0aW9ucy5zZXJ2aWNlV29ya2VySWRlbnRpZmllcikK
KyAgICAgICAgbV9vcHRpb25zLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gZG9jdW1lbnQuc2Vs
ZWN0ZWRTZXJ2aWNlV29ya2VySWRlbnRpZmllcigpOworI2VuZGlmCisKICAgICAvLyBTZXR0aW5n
IGEgcmVmZXJyZXIgaGVhZGVyIGlzIG9ubHkgc3VwcG9ydGVkIGluIHRoZSBhc3luYyBjb2RlIHBh
dGguCiAgICAgQVNTRVJUKG1fYXN5bmMgfHwgbV9yZWZlcnJlci5pc0VtcHR5KCkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRmV0Y2hPcHRpb25zLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRmV0Y2hPcHRpb25zLmgKaW5kZXggYTQwNDIwMzA3NzQ0MDQyZjFhYzI3NjJk
NjMyMzY5ZjllYWNiNTEyNC4uNzNiOTYyNGM4NjA5MTZkZWI5OTM3NzRjYWY4MjhmOTc0ZjdkMjE3
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZldGNoT3B0aW9ucy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GZXRjaE9wdGlvbnMuaApAQCAtNjksNiArNjksMjEgQEAg
aW5saW5lIEZldGNoT3B0aW9uczo6RmV0Y2hPcHRpb25zKERlc3RpbmF0aW9uIGRlc3RpbmF0aW9u
LCBNb2RlIG1vZGUsIENyZWRlbnRpYWwKIHsKIH0KIAoraW5saW5lIGJvb2wgaXNQb3RlbnRpYWxO
YXZpZ2F0aW9uT3JTdWJyZXNvdXJjZVJlcXVlc3QoRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbiBk
ZXN0aW5hdGlvbikKK3sKKyAgICByZXR1cm4gZGVzdGluYXRpb24gPT0gRmV0Y2hPcHRpb25zOjpE
ZXN0aW5hdGlvbjo6T2JqZWN0CisgICAgICAgIHx8IGRlc3RpbmF0aW9uID09IEZldGNoT3B0aW9u
czo6RGVzdGluYXRpb246OkVtYmVkOworfQorCitpbmxpbmUgYm9vbCBpc05vblN1YnJlc291cmNl
UmVxdWVzdChGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uIGRlc3RpbmF0aW9uKQoreworICAgIHJl
dHVybiBkZXN0aW5hdGlvbiA9PSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpEb2N1bWVudAor
ICAgICAgICB8fCBkZXN0aW5hdGlvbiA9PSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpSZXBv
cnQKKyAgICAgICAgfHwgZGVzdGluYXRpb24gPT0gRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6
U2VydmljZXdvcmtlcgorICAgICAgICB8fCBkZXN0aW5hdGlvbiA9PSBGZXRjaE9wdGlvbnM6OkRl
c3RpbmF0aW9uOjpTaGFyZWR3b3JrZXIKKyAgICAgICAgfHwgZGVzdGluYXRpb24gPT0gRmV0Y2hP
cHRpb25zOjpEZXN0aW5hdGlvbjo6V29ya2VyOworfQorCiB9CiAKIG5hbWVzcGFjZSBXVEYgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oCmluZGV4IGQy
YTkyYzNkM2RjZjgyZTU4ZjIyZDAzNWNiYzdmZDBiMjUwNTZmM2UuLjVjNWEwZDQyN2I0ZTk5NjBi
YjdjNWM3ZDFmMWZhY2U1OWE0NDU0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkZXJPcHRpb25zLmgKQEAgLTkyLDYgKzkyLDExIEBAIGVudW0gY2xhc3MgSW5pdGlh
dG9yQ29udGV4dCB7CiAgICAgV29ya2VyLAogfTsKIAorZW51bSBjbGFzcyBTZXJ2aWNlV29ya2Vy
c01vZGUgeworICAgIEFsbCwKKyAgICBOb25lLAorfTsKKwogc3RydWN0IFJlc291cmNlTG9hZGVy
T3B0aW9ucyA6IHB1YmxpYyBGZXRjaE9wdGlvbnMgewogICAgIFJlc291cmNlTG9hZGVyT3B0aW9u
cygpIHsgfQogCkBAIC0xMjQsNiArMTI5LDggQEAgc3RydWN0IFJlc291cmNlTG9hZGVyT3B0aW9u
cyA6IHB1YmxpYyBGZXRjaE9wdGlvbnMgewogICAgIENhY2hpbmdQb2xpY3kgY2FjaGluZ1BvbGlj
eSB7IENhY2hpbmdQb2xpY3k6OkFsbG93Q2FjaGluZyB9OwogICAgIFNhbWVPcmlnaW5EYXRhVVJM
RmxhZyBzYW1lT3JpZ2luRGF0YVVSTEZsYWcgeyBTYW1lT3JpZ2luRGF0YVVSTEZsYWc6OlVuc2V0
IH07CiAgICAgSW5pdGlhdG9yQ29udGV4dCBpbml0aWF0b3JDb250ZXh0IHsgSW5pdGlhdG9yQ29u
dGV4dDo6RG9jdW1lbnQgfTsKKyAgICBTZXJ2aWNlV29ya2Vyc01vZGUgc2VydmljZVdvcmtlcnNN
b2RlIHsgU2VydmljZVdvcmtlcnNNb2RlOjpBbGwgfTsKKyAgICB1aW50NjRfdCBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciB7IDAgfTsKIAogICAgIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50
Q3JlZGVudGlhbFBvbGljeSB7IENsaWVudENyZWRlbnRpYWxQb2xpY3k6OkNhbm5vdEFza0NsaWVu
dEZvckNyZWRlbnRpYWxzIH07CiAgICAgdW5zaWduZWQgbWF4UmVkaXJlY3RDb3VudCB7IDIwIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAK
aW5kZXggMzNiYjEyZTgxYjhhMWM0OWEwYTg2NzkxYjk1ZGM4YTI1ZTY1YzNlOC4uZTI3YWFhOGRi
NGM0YjZhMTM2NWYwOGNlYWFiNDJlMzg4ZjdhZWEwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtNTUsNyArNTUsNyBAQCBzdGF0
aWMgY29uc3QgY2hhciBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5TW9kZVtdID0gImxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHlNbwogV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6V29ya2VyVGhyZWFk
YWJsZUxvYWRlcihXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUsIFRocmVhZGFi
bGVMb2FkZXJDbGllbnQmIGNsaWVudCwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSwgUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMs
IGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpCiAgICAgOiBtX3dvcmtlckdsb2JhbFNjb3BlKHdvcmtl
ckdsb2JhbFNjb3BlKQogICAgICwgbV93b3JrZXJDbGllbnRXcmFwcGVyKFRocmVhZGFibGVMb2Fk
ZXJDbGllbnRXcmFwcGVyOjpjcmVhdGUoY2xpZW50LCBvcHRpb25zLmluaXRpYXRvcikpCi0gICAg
LCBtX2JyaWRnZSgqbmV3IE1haW5UaHJlYWRCcmlkZ2UobV93b3JrZXJDbGllbnRXcmFwcGVyLmdl
dCgpLCB3b3JrZXJHbG9iYWxTY29wZS50aHJlYWQoKS53b3JrZXJMb2FkZXJQcm94eSgpLCB0YXNr
TW9kZSwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucywgcmVmZXJyZXIuaXNFbXB0eSgpID8gd29y
a2VyR2xvYmFsU2NvcGUudXJsKCkuc3RyaXBwZWRGb3JVc2VBc1JlZmVycmVyKCkgOiByZWZlcnJl
ciwgd29ya2VyR2xvYmFsU2NvcGUuc2VjdXJpdHlPcmlnaW4oKSwgd29ya2VyR2xvYmFsU2NvcGUu
Y29udGVudFNlY3VyaXR5UG9saWN5KCkpKQorICAgICwgbV9icmlkZ2UoKm5ldyBNYWluVGhyZWFk
QnJpZGdlKG1fd29ya2VyQ2xpZW50V3JhcHBlci5nZXQoKSwgd29ya2VyR2xvYmFsU2NvcGUudGhy
ZWFkKCkud29ya2VyTG9hZGVyUHJveHkoKSwgdGFza01vZGUsIFdURk1vdmUocmVxdWVzdCksIG9w
dGlvbnMsIHJlZmVycmVyLmlzRW1wdHkoKSA/IHdvcmtlckdsb2JhbFNjb3BlLnVybCgpLnN0cmlw
cGVkRm9yVXNlQXNSZWZlcnJlcigpIDogcmVmZXJyZXIsIHdvcmtlckdsb2JhbFNjb3BlKSkKIHsK
IH0KIApAQCAtMTAxLDEyICsxMDEsMTUgQEAgTG9hZGVyVGFza09wdGlvbnM6OkxvYWRlclRhc2tP
cHRpb25zKGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBjb24KIH0KIAog
V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6TWFpblRocmVhZEJyaWRn
ZShUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlciYgd29ya2VyQ2xpZW50V3JhcHBlciwgV29y
a2VyTG9hZGVyUHJveHkmIGxvYWRlclByb3h5LCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLAotICAg
IFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25z
JiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIG91dGdvaW5nUmVmZXJyZXIsCi0gICAgY29uc3QgU2Vj
dXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3kq
IGNvbnRlbnRTZWN1cml0eVBvbGljeSkKKyAgICBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBj
b25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiBvdXRn
b2luZ1JlZmVycmVyLCBXb3JrZXJHbG9iYWxTY29wZSYgZ2xvYmFsU2NvcGUpCiAgICAgOiBtX3dv
cmtlckNsaWVudFdyYXBwZXIoJndvcmtlckNsaWVudFdyYXBwZXIpCiAgICAgLCBtX2xvYWRlclBy
b3h5KGxvYWRlclByb3h5KQogICAgICwgbV90YXNrTW9kZSh0YXNrTW9kZS5pc29sYXRlZENvcHko
KSkKIHsKKworICAgIGF1dG8qIHNlY3VyaXR5T3JpZ2luID0gZ2xvYmFsU2NvcGUuc2VjdXJpdHlP
cmlnaW4oKTsKKyAgICBhdXRvKiBjb250ZW50U2VjdXJpdHlQb2xpY3kgPSBnbG9iYWxTY29wZS5j
b250ZW50U2VjdXJpdHlQb2xpY3koKTsKKwogICAgIEFTU0VSVChzZWN1cml0eU9yaWdpbik7CiAg
ICAgQVNTRVJUKGNvbnRlbnRTZWN1cml0eVBvbGljeSk7CiAKQEAgLTEyMSw2ICsxMjQsMTEgQEAg
V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6TWFpblRocmVhZEJyaWRn
ZShUaHJlYWRhYmxlTG9hZGVyQ2xpZW4KICAgICBBU1NFUlQob3B0aW9uc0NvcHktPm9wdGlvbnMu
aW5pdGlhdG9yQ29udGV4dCA9PSBJbml0aWF0b3JDb250ZXh0OjpEb2N1bWVudCk7CiAgICAgb3B0
aW9uc0NvcHktPm9wdGlvbnMuaW5pdGlhdG9yQ29udGV4dCA9IEluaXRpYXRvckNvbnRleHQ6Oldv
cmtlcjsKIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBvcHRpb25zQ29weS0+b3B0
aW9ucy5zZXJ2aWNlV29ya2Vyc01vZGUgPSBnbG9iYWxTY29wZS5pc1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZSgpID8gU2VydmljZVdvcmtlcnNNb2RlOjpOb25lIDogU2VydmljZVdvcmtlcnNNb2Rl
OjpBbGw7CisgICAgb3B0aW9uc0NvcHktPm9wdGlvbnMuc2VydmljZVdvcmtlcklkZW50aWZpZXIg
PSBnbG9iYWxTY29wZS5zZWxlY3RlZFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCk7CisjZW5kaWYK
KwogICAgIC8vIENhbiB3ZSBiZW5lZml0IGZyb20gcmVxdWVzdCBiZWluZyBhbiByLXZhbHVlIHRv
IGNyZWF0ZSBtb3JlIGVmZmljaWVudGx5IGl0cyBpc29sYXRlZCBjb3B5PwogICAgIG1fbG9hZGVy
UHJveHkucG9zdFRhc2tUb0xvYWRlcihbdGhpcywgcmVxdWVzdCA9IHJlcXVlc3QuaXNvbGF0ZWRD
b3B5KCksIG9wdGlvbnMgPSBXVEZNb3ZlKG9wdGlvbnNDb3B5KSwgY29udGVudFNlY3VyaXR5UG9s
aWN5Q29weSA9IFdURk1vdmUoY29udGVudFNlY3VyaXR5UG9saWN5Q29weSldKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFi
bGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVy
LmgKaW5kZXggOTdlYzJkNDFmOWQ5ZTAxZGNiYjcxNzljNjIzZGI3M2FiMWM1YTM1NC4uMjJhYjE0
OWZlZjc0NzM3ZWZiNjRkYjlkY2M3ZjE2MTBkZjUxZmJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oCkBAIC04OCw3ICs4OCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgY2xhc3MgTWFpblRocmVhZEJyaWRnZSA6IHB1YmxpYyBU
aHJlYWRhYmxlTG9hZGVyQ2xpZW50IHsKICAgICAgICAgcHVibGljOgogICAgICAgICAgICAgLy8g
QWxsIGV4ZWN1dGVkIG9uIHRoZSB3b3JrZXIgY29udGV4dCdzIHRocmVhZC4KLSAgICAgICAgICAg
IE1haW5UaHJlYWRCcmlkZ2UoVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXImLCBXb3JrZXJM
b2FkZXJQcm94eSYsIGNvbnN0IFN0cmluZyYgdGFza01vZGUsIFJlc291cmNlUmVxdWVzdCYmLCBj
b25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYsIGNvbnN0IFN0cmluZyYgb3V0Z29pbmdSZWZl
cnJlciwgY29uc3QgU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3kq
KTsKKyAgICAgICAgICAgIE1haW5UaHJlYWRCcmlkZ2UoVGhyZWFkYWJsZUxvYWRlckNsaWVudFdy
YXBwZXImLCBXb3JrZXJMb2FkZXJQcm94eSYsIGNvbnN0IFN0cmluZyYgdGFza01vZGUsIFJlc291
cmNlUmVxdWVzdCYmLCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYsIGNvbnN0IFN0cmlu
ZyYgb3V0Z29pbmdSZWZlcnJlciwgV29ya2VyR2xvYmFsU2NvcGUmKTsKICAgICAgICAgICAgIHZv
aWQgY2FuY2VsKCk7CiAgICAgICAgICAgICB2b2lkIGRlc3Ryb3koKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAppbmRl
eCBiNWU5NDhlYWVlYzFmZDkwZGRiZTY5OGY5NjZmYmM3ZTg1Y2U5Y2RkLi5kYTZhZDY1ZjExODIw
YTUyZWU1NDEyOGYzNzA3Y2VlMDBmNDE3NDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaApAQCAtMTAwLDcgKzEwMCw3
IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBodHRwQ29udGVudFR5cGUo
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEhUVFBDb250ZW50VHlwZShjb25z
dCBTdHJpbmcmKTsKLSAgICB2b2lkIGNsZWFySFRUUENvbnRlbnRUeXBlKCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBjbGVhckhUVFBDb250ZW50VHlwZSgpOwogCiAgICAgYm9vbCBoYXNIVFRQ
SGVhZGVyKEhUVFBIZWFkZXJOYW1lKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCmluZGV4IGFiY2RjZWFk
Nzc5Y2FjZGI3NGYyZmYyZmI2ZGJhY2JkYjQ5ZWVhM2YuLmVlMzczZGRlZWFhMTUxYTQwODMzZDIx
YmMzNjllYjQ0YzgxZTY2NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKQEAgLTE1Myw3ICsxNTMsNyBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiAxMjgwOwogICAgIH0KIAotICAgIHZvaWQgc2V0VHlwZShUeXBl
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFR5cGUoVHlwZSk7CiAgICAgVHlwZSB0eXBl
KCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAKICAgICB2b2lkIHNldFJlZGlyZWN0ZWQoYm9v
bCBpc1JlZGlyZWN0ZWQpIHsgbV9pc1JlZGlyZWN0ZWQgPSBpc1JlZGlyZWN0ZWQ7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCmluZGV4IGNmZTM0M2VlZjRhNWFmNWIyNzBjMThi
Njg1MDhmMGY2OGM2YWFiNmMuLjM5NWZkODA0OTk4YzYwYjdjYjUzNzM4OGFlMGZkNGQwNzhlNGRi
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaApAQCAtNjEsNyArNjEsNyBA
QCBjbGFzcyBXb3JrZXJUaHJlYWQgOiBwdWJsaWMgUmVmQ291bnRlZDxXb3JrZXJUaHJlYWQ+IHsK
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Xb3JrZXJUaHJlYWQoKTsKIAotICAgIGJvb2wgc3RhcnQo
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHN0YXJ0KCk7CiAgICAgdm9pZCBzdG9wKCk7CiAK
ICAgICBUaHJlYWRJZGVudGlmaWVyIHRocmVhZElEKCkgY29uc3QgeyByZXR1cm4gbV90aHJlYWQg
PyBtX3RocmVhZC0+aWQoKSA6IDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAppbmRleCBkMzBkYzU3YTZk
OGRiMDQwMTgxOTdlODYyMWY2Y2EyOTE4ODE4ZGM5Li45NTM0NTE3N2Q3MDI2YjkxNzg2ZWEwMmIz
NTU1ZWY5ZjZlZjVhNWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCkBAIC0xNzksNiArMTc5LDkgQEAg
dm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JSZXNvbHZlZFdpdGhSZWdpc3RyYXRpb24o
U2VydmljZVdvcmtlckpvYiYgam9iLAogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgLy8g
RklYTUU6IEltcGxlbWVudCBwcm9wZXIgc2VsZWN0aW9uIG9mIHNlcnZpY2Ugd29ya2Vycy4KKyAg
ICBjb250ZXh0LT5zZXRTZWxlY3RlZFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKGRhdGEuaWRlbnRp
Zmllcik7CisKICAgICBhdXRvIHJlZ2lzdHJhdGlvbiA9IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b246OmNyZWF0ZSgqY29udGV4dCwgZGF0YSk7CiAgICAgam9iLnByb21pc2UoKS5yZXNvbHZlPElE
TEludGVyZmFjZTxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uPj4ocmVnaXN0cmF0aW9uLmdldCgp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NXQ29udGV4dE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDk0ZmU1N2UzMTIxNTc3MWM2YTdiODNmNWZkYmI2NjIzZGQ0MmEwYmUuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2
NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNX
Q29udGV4dE1hbmFnZXIuaCIKLQotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLQotI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+Ci0KLXVzaW5nIG5hbWVz
cGFjZSBQQUw7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotU1dDb250ZXh0TWFuYWdlciYgU1dD
b250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkKLXsKLSAgICBzdGF0aWMgU1dDb250ZXh0TWFuYWdl
ciogc2hhcmVkTWFuYWdlciA9IG5ldyBTV0NvbnRleHRNYW5hZ2VyOwotICAgIHJldHVybiAqc2hh
cmVkTWFuYWdlcjsKLX0KLQotU1dDb250ZXh0TWFuYWdlcjo6U1dDb250ZXh0TWFuYWdlcigpCi17
Ci0KLX0KLQotRXhjZXB0aW9uT3I8dWludDY0X3Q+IFNXQ29udGV4dE1hbmFnZXI6OnN0YXJ0U2Vy
dmljZVdvcmtlckNvbnRleHQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNv
bnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSkKLXsKLSAgICAvLyBGSVhNRTogUHJv
dmlkZSBhIHNlbnNpY2FsIHNlc3Npb24gSUQKLQotICAgIGF1dG8gdGhyZWFkID0gU2VydmljZVdv
cmtlclRocmVhZDo6Y3JlYXRlKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBkYXRhLCBTZXNz
aW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7Ci0gICAgYXV0byB0aHJlYWRJZGVudGlmaWVyID0g
dGhyZWFkLT5pZGVudGlmaWVyKCk7Ci0gICAgYXV0byByZXN1bHQgPSBtX3dvcmtlclRocmVhZE1h
cC5hZGQodGhyZWFkSWRlbnRpZmllciwgV1RGTW92ZSh0aHJlYWQpKTsKLSAgICBBU1NFUlQocmVz
dWx0LmlzTmV3RW50cnkpOwotCi0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+c3RhcnQoKTsK
LSAgICAKLSAgICBMT0coU2VydmljZVdvcmtlciwgIkNvbnRleHQgcHJvY2VzcyBQSUQ6ICVpIHN0
YXJ0ZWQgd29ya2VyIHRocmVhZCAlc1xuIiwgZ2V0cGlkKCksIGRhdGEud29ya2VySUQudXRmOCgp
LmRhdGEoKSk7Ci0gICAgCi0gICAgcmV0dXJuIHRocmVhZElkZW50aWZpZXI7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4
dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29u
dGV4dE1hbmFnZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTE1ZDdlNjk4MjMy
MTQ3MjMwYjQ3NmFmYjgzMWU0OGEwZjIwZTMwNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TV0NvbnRleHRNYW5hZ2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0KLSNp
bmNsdWRlICJFeGNlcHRpb25Pci5oIgotI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUaHJlYWQuaCIK
LSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVj
dCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE7Ci0KLWNsYXNzIFNXQ29udGV4dE1hbmFnZXIgewot
cHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTV0NvbnRleHRNYW5hZ2VyJiBzaW5n
bGV0b24oKTsKLQotICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHVpbnQ2NF90PiBzdGFy
dFNlcnZpY2VXb3JrZXJDb250ZXh0KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
LCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmKTsKLQotcHJpdmF0ZToKLSAgICBTV0Nv
bnRleHRNYW5hZ2VyKCk7Ci0gICAgCi0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFNlcnZp
Y2VXb3JrZXJUaHJlYWQ+PiBtX3dvcmtlclRocmVhZE1hcDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJl
YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWQuaAppbmRleCAyMmEwN2I4OWY1OWNlNTgwNDJhYjA1Mjc5YTlhYjA5OGU4YTQ1OTYw
Li44ZGJhNDg5ODg5M2I3MDA0NGI1ZTdmNjJmNzI2YTJkZjBjZGY5NTRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFk
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZC5oCkBAIC01Miw3ICs1Miw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHJ1bkV2
ZW50TG9vcCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIFNlcnZpY2VXb3JrZXJUaHJlYWQo
dWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSYsIFBBTDo6U2Vzc2lvbklEKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTZXJ2aWNl
V29ya2VyVGhyZWFkKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmLCBQQUw6OlNlc3Npb25JRCk7CiAKICAgICB1aW50NjRf
dCBtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyOwogICAgIFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YSBtX2RhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyLmgKaW5kZXggMWMxYTJjOTJlODY3YjM4MTNkOTFjZTFmZjgzZjJiYThjY2QwMWEx
Ni4uNmYwZTkzN2JlZDc0ZWUyMDQ5YWVjNjVhZGRjODNmN2ViMTVkOGYxNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaApAQCAtNDAsOSAr
NDAsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7
CiBjbGFzcyBTV1NlcnZlclJlZ2lzdHJhdGlvbjsKIGNsYXNzIFNXU2VydmVyV29ya2VyOwogc3Ry
dWN0IEV4Y2VwdGlvbkRhdGE7CitzdHJ1Y3QgRmV0Y2hPcHRpb25zOwogc3RydWN0IFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YTsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQ7CiBzdHJ1
Y3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1h
a2UKaW5kZXggYmE0NGNiYTJjYmJkOGQ2NzliNGRiNDI0NDk1ZGY4Mzg1MWM1NDhjMy4uMDhiODA5
YTIzMDhhOWI3ZTBjMzM2OGViZmJiN2Q1MDJhZjhlODc0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJj
ZXMubWFrZQpAQCAtMTI1LDYgKzEyNSw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFJl
bW90ZVdlYkluc3BlY3RvclByb3h5IFwKICAgICBSZW1vdGVXZWJJbnNwZWN0b3JVSSBcCiAgICAg
U2VjSXRlbVNoaW1Qcm94eSBcCisgICAgU2VydmljZVdvcmtlckNsaWVudEZldGNoIFwKICAgICBT
bWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyIFwKICAgICBTdG9yYWdlQXJlYU1hcCBcCiAgICAg
U3RvcmFnZU1hbmFnZXIgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApp
bmRleCA3Mjk3ZjRiNTNlODc1N2Q5NjM2MmQ4OWRkNmM2Njk1MmFkNTYwOTllLi4xMGNjYmE1MmYz
OTE4N2I2YzFiYjcwNzExMGYwOTkzYWRhYjFmNzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uLmNwcApAQCAtMzAsOCArMzAsMTAgQEAKIAogI2luY2x1ZGUgIkRhdGFSZWZl
cmVuY2UuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckNs
aWVudEZldGNoTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTdG9yYWdlUHJvY2Vzcy5oIgogI2luY2x1
ZGUgIlN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJX
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU1dDbGllbnRDb25uZWN0aW9u
TWVzc2FnZXMuaCIKQEAgLTkyLDYgKzk0LDMxIEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
OjpzdGFydFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0CiAg
ICAgbV9wZW5kaW5nQ29udGV4dERhdGFzLmFwcGVuZChkYXRhKTsKIH0KIAordm9pZCBXZWJTV1Nl
cnZlckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2godWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCB1aW50
NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgc2VuZFRvQ29udGV4dFBy
b2Nlc3MoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlN0YXJ0RmV0Y2hJblNlcnZpY2VXb3JrZXIoaWRl
bnRpZmllcigpLCBmZXRjaElkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCByZXF1
ZXN0LCBvcHRpb25zKSk7Cit9CisKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpkaWRSZWNl
aXZlRmV0Y2hSZXNwb25zZSh1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVz
cG9uc2UgfSwgZmV0Y2hJZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rp
b246OmRpZFJlY2VpdmVGZXRjaERhdGEodWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCit7Cisg
ICAgbV9jb250ZW50Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVu
dEZldGNoOjpEaWRSZWNlaXZlRGF0YSB7IGRhdGEsIGVuY29kZWREYXRhTGVuZ3RoIH0sIGZldGNo
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpkaWRGaW5pc2hG
ZXRjaCh1aW50NjRfdCBmZXRjaElkZW50aWZpZXIpCit7CisgICAgbV9jb250ZW50Q29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRGaW5pc2ggeyB9
LCBmZXRjaElkZW50aWZpZXIpOworfQorCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6ZGlk
RmFpbEZldGNoKHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcikKK3sKKyAgICBtX2NvbnRlbnRDb25u
ZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZEZhaWwg
eyB9LCBmZXRjaElkZW50aWZpZXIpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIFdl
YlNXU2VydmVyQ29ubmVjdGlvbjo6c2VuZFRvQ29udGV4dFByb2Nlc3MoVSYmIG1lc3NhZ2UpCiB7
CiAgICAgaWYgKCFtX2NvbnRleHRDb25uZWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oIGIv
U291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29u
bmVjdGlvbi5oCmluZGV4IGRjYzQ5NjE2NTJhM2Q3MWI2Zjk4NDY0MzFkNzM3NmI4ZmM1NTUyMjMu
LmFlM2EyNWQzY2VmNjA1NjFhNTI5YzBkZjliNTk3NDgwMDgzNTA4MTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5l
Y3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTUxLDE1ICs1MSwyMiBAQCBwdWJsaWM6CiAKICAg
ICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsg
fQogCisgICAgdm9pZCBkaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSh1aW50NjRfdCBmZXRjaElkZW50
aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVGZXRjaERhdGEodWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRpZEZpbmlz
aEZldGNoKHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcik7CisgICAgdm9pZCBkaWRGYWlsRmV0Y2go
dWludDY0X3QgZmV0Y2hJZGVudGlmaWVyKTsKKwogcHJpdmF0ZToKICAgICAvLyBJbXBsZW1lbnQg
U1dTZXJ2ZXI6OkNvbm5lY3Rpb24gKE1lc3NhZ2VzIHRvIHRoZSBjbGllbnQgV2ViUHJvY2VzcykK
ICAgICB2b2lkIHJlamVjdEpvYkluQ2xpZW50KHVpbnQ2NF90IGpvYklkZW50aWZpZXIsIGNvbnN0
IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmKSBmaW5hbDsKICAgICB2b2lkIHJlc29sdmVKb2JJbkNs
aWVudCh1aW50NjRfdCBqb2JJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGF0YSYpIGZpbmFsOwogICAgIHZvaWQgc3RhcnRTY3JpcHRGZXRjaEluQ2xp
ZW50KHVpbnQ2NF90IGpvYklkZW50aWZpZXIpIGZpbmFsOwogCisgICAgdm9pZCBzdGFydEZldGNo
KHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgdWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OkZldGNo
T3B0aW9ucyYpOworCiAgICAgLy8gTWVzc2FnZXMgdG8gdGhlIFNXIGNvbnRleHQgV2ViUHJvY2Vz
cwogICAgIHZvaWQgc3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEmKSBmaW5hbDsKLSAgICAKKwogICAgIElQQzo6Q29ubmVjdGlv
biogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBmaW5hbCB7IHJldHVybiBtX2NvbnRlbnRDb25u
ZWN0aW9uLnB0cigpOyB9CiAgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQo
KSBmaW5hbCB7IHJldHVybiBpZGVudGlmaWVyKCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggZTRjZmI5NjA1YTZjZTUwMTky
MTZmMjFjZjZkNjkxN2JlYjMwMmRjMC4uZjNkYjNiOTBkYWU5M2E5MjZkZjViYmRlYTFhMzc3OTUz
NDY2NDkxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1l
c3NhZ2VzLmluCkBAIC0yNiw2ICsyNiw4IEBAIG1lc3NhZ2VzIC0+IFdlYlNXU2VydmVyQ29ubmVj
dGlvbiB7CiAgICAgIyBXaGVuIHBvc3NpYmxlLCB0aGVzZSBtZXNzYWdlcyBjYW4gYmUgaW1wbGVt
ZW50ZWQgZGlyZWN0bHkgYnkgV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uCiAgICAgU2NoZWR1
bGVKb2JJblNlcnZlcihzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGEgam9iRGF0
YSkKICAgICBGaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKHN0cnVjdCBXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyRmV0Y2hSZXN1bHQgcmVzdWx0KQorCisgICAgU3RhcnRGZXRjaCh1aW50NjRfdCBp
ZGVudGlmaWVyLCB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHN0cnVjdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMgb3B0aW9u
cykKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwIGIvU291cmNlL1dl
YktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAKaW5kZXggOTk1OTZmMzUxM2E0
YmM2MjA1ZjYzYzllNzNiMDZiOTliNTA4YWJjOS4uNzg5NTAzNTRhZTkwMGMyN2JhNjk3OGZjODFm
YzA4Y2FmZDM3NTRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9T
dG9yYWdlUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9y
YWdlUHJvY2Vzcy5jcHAKQEAgLTQwNSw2ICs0MDUsMzAgQEAgdm9pZCBTdG9yYWdlUHJvY2Vzczo6
c2VydmljZVdvcmtlckNvbnRleHRTdGFydGVkKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVu
dGkKICAgICAgICAgY29ubmVjdGlvbi0+c2NyaXB0Q29udGV4dFN0YXJ0ZWQocmVnaXN0cmF0aW9u
S2V5LCBpZGVudGlmaWVyLCB3b3JrZXJJRCk7CiB9CiAKK3ZvaWQgU3RvcmFnZVByb2Nlc3M6OmRp
ZEZhaWxGZXRjaCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qg
ZmV0Y2hJZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gbV9zd1NlcnZl
ckNvbm5lY3Rpb25zLmdldChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIGNv
bm5lY3Rpb24tPmRpZEZhaWxGZXRjaChmZXRjaElkZW50aWZpZXIpOworfQorCit2b2lkIFN0b3Jh
Z2VQcm9jZXNzOjpkaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9
IG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5nZXQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpKQor
ICAgICAgICBjb25uZWN0aW9uLT5kaWRSZWNlaXZlRmV0Y2hSZXNwb25zZShmZXRjaElkZW50aWZp
ZXIsIHJlc3BvbnNlKTsKK30KKwordm9pZCBTdG9yYWdlUHJvY2Vzczo6ZGlkUmVjZWl2ZUZldGNo
RGF0YSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJ
ZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZW5jb2Rl
ZERhdGFMZW5ndGgpCit7CisgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBtX3N3U2VydmVyQ29u
bmVjdGlvbnMuZ2V0KHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgY29ubmVj
dGlvbi0+ZGlkUmVjZWl2ZUZldGNoRGF0YShmZXRjaElkZW50aWZpZXIsIGRhdGEsIGVuY29kZWRE
YXRhTGVuZ3RoKTsKK30KKwordm9pZCBTdG9yYWdlUHJvY2Vzczo6ZGlkRmluaXNoRmV0Y2godWlu
dDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmll
cikKK3sKKyAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5n
ZXQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpKQorICAgICAgICBjb25uZWN0aW9uLT5kaWRG
aW5pc2hGZXRjaChmZXRjaElkZW50aWZpZXIpOworfQorCiB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpy
ZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbihXZWJTV1NlcnZlckNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24pCiB7CiAgICAgQVNTRVJUKCFtX3N3U2VydmVyQ29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVj
dGlvbi5pZGVudGlmaWVyKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVBy
b2Nlc3MvU3RvcmFnZVByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3Rv
cmFnZVByb2Nlc3MuaAppbmRleCBkNGNlNTExNzE5N2U1YzBhZDRiY2U5MDI0NzNiYmRmN2RlZWE5
ZDhmLi5jZmQ0YmMxYzQwMGJmOGU3NjEyYTgyMTJhNWVkNmVmOWVjNTVlYzIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmgKKysrIGIvU291
cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCkBAIC0xMTksNiArMTE5
LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRHZXRXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5l
Y3Rpb24oY29uc3QgSVBDOjpBdHRhY2htZW50JiBlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIp
OwogICAgIHZvaWQgc2VydmljZVdvcmtlckNvbnRleHRGYWlsZWRUb1N0YXJ0KHVpbnQ2NF90IHNl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5JiwgY29uc3QgU3RyaW5nJiB3b3JrZXJJRCwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlKTsKICAgICB2b2lkIHNlcnZpY2VXb3JrZXJDb250ZXh0U3RhcnRlZCh1aW50NjRfdCBzZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleSYsIHVpbnQ2NF90IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgd29ya2VySUQp
OworCisgICAgdm9pZCBkaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSh1aW50NjRfdCBzZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgdm9pZCBkaWRSZWNlaXZlRmV0Y2hEYXRhKHVpbnQ2
NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIs
IGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOwor
ICAgIHZvaWQgZGlkRmluaXNoRmV0Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcik7CisgICAgdm9pZCBkaWRGYWlsRmV0Y2godWlu
dDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmll
cik7CiAjZW5kaWYKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBWZWN0b3I8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBpbmRleGVkRGF0YWJhc2VPcmlnaW5zKGNvbnN0IFN0
cmluZyYgcGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0
b3JhZ2VQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9T
dG9yYWdlUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBlZTYyOGQ1Mzc3Y2I1NmQyNjUwMThjZWZk
M2EyMTA4MDVlOWI0MmYyLi4yMDY0ZDY5YmVkYTc3ZGZlNzdjYTZjYTU5NzNmNTM4YjBmODQyYjYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNz
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVBy
b2Nlc3MubWVzc2FnZXMuaW4KQEAgLTM3LDcgKzM3LDEzIEBAIG1lc3NhZ2VzIC0+IFN0b3JhZ2VQ
cm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAg
ICBEaWRHZXRXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50IGNv
bm5lY3Rpb25IYW5kbGUpCisKICAgICBTZXJ2aWNlV29ya2VyQ29udGV4dEZhaWxlZFRvU3RhcnQo
dWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IHJlZ2lzdHJhdGlvbktleSwgU3RyaW5nIHdvcmtlcklE
LCBTdHJpbmcgbWVzc2FnZSkKICAgICBTZXJ2aWNlV29ya2VyQ29udGV4dFN0YXJ0ZWQodWludDY0
X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5IHJlZ2lzdHJhdGlvbktleSwgdWludDY0X3QgaWRlbnRpZmllciwg
U3RyaW5nIHdvcmtlcklEKQorCisgICAgRGlkRmFpbEZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIpCisgICAgRGlkUmVjZWl2
ZUZldGNoUmVzcG9uc2UodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2
NF90IGZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkK
KyAgICBEaWRSZWNlaXZlRmV0Y2hEYXRhKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhLCBp
bnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQorICAgIERpZEZpbmlzaEZldGNoKHVpbnQ2NF90IHNl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIpCiAjZW5k
aWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDhiODY5NTBjMTgxMTZmNjAxYzk4ZDFjODY2NTU2MmI0NjI0YWIyMjIuLmExY2I3Y2My
Y2MxZGZhMWI3NzMzYWNlOWNiNzU0Yjg3YzIyNmQxNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODkwLDYgKzg5MCw5IEBACiAJCTQx
MzA3NUIyMURFODVGNTgwMDM5RUM2OSAvKiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTMwNzVBNjFERTg1RUU3
MDAzOUVDNjkgLyogTGliV2ViUlRDU29ja2V0RmFjdG9yeS5oICovOyB9OwogCQk0MTMwNzVCMzFE
RTg1RjU4MDAzOUVDNjkgLyogTGliV2ViUlRDUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzMDc1QTcxREU4NUVFNzAwMzlFQzY5IC8q
IExpYldlYlJUQ1Byb3ZpZGVyLmNwcCAqLzsgfTsKIAkJNDEzMDc1QjQxREU4NUY1ODAwMzlFQzY5
IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTMwNzVBODFERTg1RUU3MDAzOUVDNjkgLyogTGliV2ViUlRDUHJvdmlk
ZXIuaCAqLzsgfTsKKwkJNDEzMUYzRDExRjk2QkNDQzAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJD
bGllbnRGZXRjaC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MTMxRjNEMDFGOTZCQ0M4MDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNo
LmNwcCAqLzsgfTsKKwkJNDEzMUYzRDQxRjk2RTkzNTAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJD
b250ZXh0TWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTMxRjNEMzFGOTZFOTMxMDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNvbnRleHRN
YW5hZ2VyLmNwcCAqLzsgfTsKKwkJNDEzMUYzRDUxRjk2RTkzNTAwNTk5OTVBIC8qIFNlcnZpY2VX
b3JrZXJDb250ZXh0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDEzMUYzRDIxRjk2RTkzMDAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDb250
ZXh0TWFuYWdlci5oICovOyB9OwogCQk0MTM1RkJEMTFGNEZCODA5MDA3NEM0N0IgLyogQ2FjaGVT
dG9yYWdlRW5naW5lQ2FjaGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxMzVGQkNGMUY0RkI3RjIwMDc0QzQ3QiAvKiBDYWNoZVN0b3JhZ2VFbmdp
bmVDYWNoZXMuY3BwICovOyB9OwogCQk0MTg5N0VDRjFGNDE1RDYyMDAxNkZBNDIgLyogV2ViQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTg5N0VDRTFGNDE1RDVDMDAxNkZBNDIgLyogV2ViQ2FjaGVTdG9yYWdl
Q29ubmVjdGlvbi5jcHAgKi87IH07CiAJCTQxODk3RUQwMUY0MTVENjUwMDE2RkE0MiAvKiBXZWJD
YWNoZVN0b3JhZ2VQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MTg5N0VDQzFGNDE1RDVDMDAxNkZBNDIgLyogV2ViQ2FjaGVTdG9yYWdl
UHJvdmlkZXIuY3BwICovOyB9OwpAQCAtMTAyOSw3ICsxMDMyLDkgQEAKIAkJNTE3OTU1NkExNjI4
NzZGMzAwRkE0M0I2IC8qIE5ldHdvcmtQcm9jZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBDQzdFMDE2MTM4RTI5MDBEMDNFRDMgLyogTmV0d29y
a1Byb2Nlc3MuaCAqLzsgfTsKIAkJNTE3OTU1NkQxNjI4NzdCMTAwRkE0M0I2IC8qIE5ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTEwQ0M3RUExNjEzOEU3MjAwRDAzRUQzIC8qIE5ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
ICovOyB9OwogCQk1MTc5NTU2RTE2Mjg3N0IzMDBGQTQzQjYgLyogTmV0d29ya1Byb2Nlc3NQcm94
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwQ0M3
RUIxNjEzOEU3MjAwRDAzRUQzIC8qIE5ldHdvcmtQcm9jZXNzUHJveHkuaCAqLzsgfTsKKwkJNjE3
QTUyRDgxRjQzQTlEQTAwRENEQzBBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2MTdBNTJENzFGNDNBOUI2MDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoQ29u
bmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTUxN0E1MkQ4MUY0M0E5REEwMERD
REMwQSAvKiBXZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3QTUyRDcxRjQzQTlCNjAw
RENEQzBBIC8qIFdlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07
CisJCTYxN0E1MkQ5MUY0M0E5REEwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hN
ZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NjE3QTUyRDYxRjQzQTlCNjAwRENEQzBBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3Nh
Z2VzLmggKi87IH07CiAJCTUxN0E1MkQ5MUY0M0E5REEwMERDREMwQSAvKiBXZWJTV1NlcnZlckNv
bm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTE3QTUyRDYxRjQzQTlCNjAwRENEQzBBIC8qIFdlYlNXU2VydmVyQ29ubmVjdGlv
bk1lc3NhZ2VzLmggKi87IH07CiAJCTUxN0E1MzA0MUY0NzkzQzYwMERDREMwQSAvKiBXZWJTV0Ns
aWVudENvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTE3QTUzMDMxRjQ3OTNCMjAwRENEQzBBIC8qIFdlYlNXQ2xpZW50Q29ubmVjdGlv
bi5jcHAgKi87IH07CiAJCTUxN0E1MzA1MUY0NzkzQzYwMERDREMwQSAvKiBXZWJTV0NsaWVudENv
bm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxN0E1MzAyMUY0NzkzQjIwMERDREMwQSAvKiBXZWJTV0NsaWVudENvbm5lY3Rpb24uaCAqLzsg
fTsKQEAgLTMxNzgsNiArMzE4MywxMSBAQAogCQk0MTMwNzVBNjFERTg1RUU3MDAzOUVDNjkgLyog
TGliV2ViUlRDU29ja2V0RmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBMaWJXZWJSVENTb2NrZXRGYWN0b3J5Lmg7IHBhdGggPSBOZXR3b3JrL3dlYnJ0Yy9MaWJXZWJS
VENTb2NrZXRGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzA3NUE3
MURFODVFRTcwMDM5RUM2OSAvKiBMaWJXZWJSVENQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IGxpbmVFbmRpbmcgPSAwOyBuYW1lID0gTGliV2ViUlRDUHJvdmlkZXIu
Y3BwOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29k
ZS5sYW5nLmNwcDsgfTsKIAkJNDEzMDc1QTgxREU4NUVFNzAwMzlFQzY5IC8qIExpYldlYlJUQ1By
b3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbGluZUVuZGluZyA9IDA7IG5hbWUg
PSBMaWJXZWJSVENQcm92aWRlci5oOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJv
dmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25J
ZGVudGlmaWVyID0geGNvZGUubGFuZy5vYmpjcHA7IH07CisJCTQxMzFGM0NFMUY5NkE0OTUwMDU5
OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2VydmljZVdvcmtlckNsaWVudEZldGNoLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQxMzFGM0NGMUY5NkE5MzYwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ2xp
ZW50RmV0Y2gubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2VydmljZVdvcmtl
ckNsaWVudEZldGNoLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
MTMxRjNEMDFGOTZCQ0M4MDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJDbGllbnRG
ZXRjaC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMzFGM0QyMUY5NkU5MzAw
MDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMzFGM0QzMUY5NkU5MzEwMDU5OTk1QSAvKiBTZXJ2aWNl
V29ya2VyQ29udGV4dE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDEzNUZCQ0YxRjRGQjdGMjAwNzRDNDdCIC8qIENhY2hlU3RvcmFnZUVuZ2lu
ZUNhY2hlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZVN0
b3JhZ2VFbmdpbmVDYWNoZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTM1
RkJEMDFGNEZCN0YyMDA3NEM0N0IgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTg5N0VDQjFGNDE1RDVDMDAxNkZBNDIgLyog
V2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MzMzNCw3ICszMzQ0LDkgQEAKIAkJNTE2QTRBNUIxMjBBMkNDRDAwQzA1QjdGIC8qIEFQSUVycm9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUVycm9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0EzM0IzMTMwQjMwOEMwMEY4MENCNSAvKiBXS0FwcGxp
Y2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MTdBMzNCNDEzMEIzMDhDMDBGODBDQjUgLyogV0tBcHBsaWNhdGlvbkNhY2hlTWFu
YWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0FwcGxpY2F0aW9uQ2Fj
aGVNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTYxN0E1MkQ2MUY0M0E5
QjYwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyRmV0Y2hDbGllbnRNZXNzYWdlcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdBNTJENjFGNDNBOUI2MDBEQ0RDMEEg
LyogV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNjE3QTUyRDcxRjQzQTlCNjAwRENEQzBBIC8qIFNlcnZpY2VXb3Jr
ZXJDbGllbnRGZXRjaE1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlUmVjZWl2ZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdBNTJENzFGNDNBOUI2MDBEQ0RDMEEg
LyogV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VSZWNl
aXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0E1MzAyMUY0NzkzQjIw
MERDREMwQSAvKiBXZWJTV0NsaWVudENvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViU1dDbGllbnRDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxN0E1MzAzMUY0NzkzQjIwMERDREMwQSAvKiBXZWJTV0NsaWVudENvbm5lY3Rp
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU1dDbGllbnRD
b25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYxNjgsNiArNjE4
MCwxMSBAQAogCQk1MTE4RTk5ODFGMjk1MjU5MDAzRUY5RjUgLyogU3RvcmFnZSAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDEzMUYzRDAxRjk2QkNDODAw
NTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5jcHAgKi8sCisJCQkJNDEzMUYzQ0Ux
Rjk2QTQ5NTAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5oICovLAorCQkJCTQx
MzFGM0NGMUY5NkE5MzYwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gubWVzc2Fn
ZXMuaW4gKi8sCisJCQkJNDEzMUYzRDMxRjk2RTkzMTAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJD
b250ZXh0TWFuYWdlci5jcHAgKi8sCisJCQkJNDEzMUYzRDIxRjk2RTkzMDAwNTk5OTVBIC8qIFNl
cnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5oICovLAogCQkJCTUxQkVCNjI5MUYzQTVBQ0QwMDUw
MjlCOSAvKiBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwICovLAogCQkJCTUxQkVCNjJBMUYz
QTVBQ0QwMDUwMjlCOSAvKiBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCAqLywKIAkJCQk1MTdB
NTMwMzFGNDc5M0IyMDBEQ0RDMEEgLyogV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcCAqLywKQEAg
LTgwMTAsNiArODAyNyw3IEBACiAJCQkJMUJCQkU0OUUxOUI2NkM1MzAwNkI3RDgxIC8qIFJlbW90
ZVdlYkluc3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQlFMThFNjkxMzE2OUI2
NjdCMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJ
CQkJRTE4RTY5MTQxNjlCNjY3QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHlNZXNzYWdlcy5o
ICovLAorCQkJCTYxN0E1MkQ3MUY0M0E5QjYwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50
RmV0Y2hDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkyREU2OTQzQjE4QkQy
QTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi8sCiAJCQkJMkRFNjk0M0MxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNh
dGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oICovLAogCQkJCTFBMzM0REVCMTZERThGODgwMDZBOEUz
OCAvKiBTdG9yYWdlQXJlYU1hcE1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCkBAIC04NzgxLDYgKzg3
OTksNyBAQAogCQkJCUUxOEU2OTBDMTY5QjU2M0YwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMThFNjkxODE2OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRl
bVNoaW1Qcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTREOUY1NzE5MTE5RDM1
MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTMx
RjNENTFGOTZFOTM1MDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQUZERTY1QTE5NTRBNDJCMDBDNDhGRkEgLyogU2Vzc2lvblN0YXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTAwMkQ0OTE5NkIzNDVEMDBCOUFENDQgLyogU2Vzc2lv
blN0YXRlQ29kaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk3NTNFM0UwRTE4ODczOTg5MDAxODg0
OTYgLyogU2Vzc2lvblRyYWNrZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTAzNzAsNiArMTAzODks
OSBAQAogCQkJCUUxOEU2OTBCMTY5QjU2M0YwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUUxOEU2OTE3MTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVt
U2hpbVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNEQ5RjU4
MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywK
KwkJCQk0MTMxRjNEMTFGOTZCQ0NDMDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNo
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTYxN0E1MkQ4MUY0M0E5REEwMERDREMwQSAvKiBTZXJ2
aWNlV29ya2VyQ2xpZW50RmV0Y2hDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTQxMzFGM0Q0MUY5NkU5MzUwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ29u
dGV4dE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFGREU2NTkxOTU0QTQyQjAwQzQ4
RkZBIC8qIFNlc3Npb25TdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTAwMkQ0ODE5NkIz
NDVEMDBCOUFENDQgLyogU2Vzc2lvblN0YXRlQ29kaW5nLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUE3Mjg0NDgxOTU5RjgwNDAwMDdCQ0U1IC8qIFNlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKaW5kZXggYjg5NWQwYjhmYTMxY2UwMTY2ZDJhNDBkYmM5
NDkxZjA4MTQzNWJiMS4uNTg2YWI2YTM0MjA2ODI1NWY4NTlhMjkzMWE4ZWI4ODI0MGQyMDYyYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3Ry
YXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRl
clN0cmF0ZWd5LmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIldlYlJlc291cmNl
TG9hZGVyLmgiCisjaW5jbHVkZSAiV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmgiCiAjaW5jbHVk
ZSAiV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViVVJMU2NoZW1lVGFz
a1Byb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oPgpAQCAt
MjE1LDYgKzIxNiwyOSBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVz
b3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogICAgICAgICB9CiAgICAg
fQogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIFdlYlNlcnZpY2VXb3JrZXJQcm92
aWRlcjo6c2luZ2xldG9uKCkuaGFuZGxlRmV0Y2gocmVzb3VyY2VMb2FkZXIsIHJlc291cmNlLCB3
ZWJQYWdlID8gd2ViUGFnZS0+c2Vzc2lvbklEKCkgOiBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNl
c3Npb25JRCgpLCBbdHJhY2tpbmdQYXJhbWV0ZXJzLCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQ
U1RvSFRUUFJlZGlyZWN0LCBtYXhpbXVtQnVmZmVyaW5nVGltZSA9IG1heGltdW1CdWZmZXJpbmdU
aW1lKHJlc291cmNlKSwgcmVzb3VyY2VMb2FkZXIgPSBtYWtlUmVmKHJlc291cmNlTG9hZGVyKV0g
KFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaFJlc3VsdCByZXN1bHQpIG11dGFibGUgeworICAgICAg
ICBpZiAocmVzdWx0ICE9IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaFJlc3VsdDo6Tm9uZSkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcsICIoV2Vi
UHJvY2VzcykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwgdXJsICclcycgd2lsbCBi
ZSBzY2hlZHVsZWQgdGhyb3VnaCBTZXJ2aWNlV29ya2VyIGhhbmRsZSBmZXRjaCBhbGdvcml0aG0i
LCByZXNvdXJjZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKKyAgICAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViTG9hZGVyU3RyYXRlZ3koKS5zY2hlZHVsZUxv
YWRGcm9tTmV0d29ya1Byb2Nlc3MocmVzb3VyY2VMb2FkZXIuZ2V0KCksIHJlc291cmNlTG9hZGVy
LT5vcmlnaW5hbFJlcXVlc3QoKSwgV1RGTW92ZSh0cmFja2luZ1BhcmFtZXRlcnMpLCBzaG91bGRD
bGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBtYXhpbXVtQnVmZmVyaW5nVGltZSk7
CisgICAgfSk7CisjZWxzZQorICAgIExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNz
KSBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkLCB1cmwgJyVzJyB3aWxsIGJlIHNjaGVk
dWxlZCB0aHJvdWdoIFNlcnZpY2VXb3JrZXIgaGFuZGxlIGZldGNoIGFsZ29yaXRobSIsIHJlc291
cmNlTG9hZGVyLnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7CisgICAgc2NoZWR1bGVM
b2FkRnJvbU5ldHdvcmtQcm9jZXNzKHJlc291cmNlTG9hZGVyLCByZXNvdXJjZUxvYWRlci5yZXF1
ZXN0KCksIHRyYWNraW5nUGFyYW1ldGVycywgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hU
VFBSZWRpcmVjdCwgbWF4aW11bUJ1ZmZlcmluZ1RpbWUocmVzb3VyY2UpKTsKKyNlbmRpZgorfQor
Cit2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3Mo
UmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIGNvbnN0IFdlYlJlc291cmNlTG9hZGVyOjpUcmFja2luZ1BhcmFtZXRlcnMmIHRyYWNr
aW5nUGFyYW1ldGVycywgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGly
ZWN0LCBTZWNvbmRzIG1heGltdW1CdWZmZXJpbmdUaW1lKQoreworICAgIFJlc291cmNlTG9hZElk
ZW50aWZpZXIgaWRlbnRpZmllciA9IHJlc291cmNlTG9hZGVyLmlkZW50aWZpZXIoKTsKKyAgICBB
U1NFUlQoaWRlbnRpZmllcik7CisKKyAgICBXZWJGcmFtZUxvYWRlckNsaWVudCogd2ViRnJhbWVM
b2FkZXJDbGllbnQgPSB0b1dlYkZyYW1lTG9hZGVyQ2xpZW50KHJlc291cmNlTG9hZGVyLmZyYW1l
TG9hZGVyKCktPmNsaWVudCgpKTsKKyAgICBXZWJGcmFtZSogd2ViRnJhbWUgPSB3ZWJGcmFtZUxv
YWRlckNsaWVudCA/IHdlYkZyYW1lTG9hZGVyQ2xpZW50LT53ZWJGcmFtZSgpIDogbnVsbHB0cjsK
KyAgICBXZWJQYWdlKiB3ZWJQYWdlID0gd2ViRnJhbWUgPyB3ZWJGcmFtZS0+cGFnZSgpIDogbnVs
bHB0cjsKKwogICAgIExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJMb2Fk
ZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkLCB1cmwgJyVzJyB3aWxsIGJlIHNjaGVkdWxlZCB3aXRo
IHRoZSBOZXR3b3JrUHJvY2VzcyB3aXRoIHByaW9yaXR5ICVkIiwgcmVzb3VyY2VMb2FkZXIudXJs
KCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9h
ZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSk7CiAKICAgICBDb250ZW50U25pZmZpbmdQb2xpY3kg
Y29udGVudFNuaWZmaW5nUG9saWN5ID0gcmVzb3VyY2VMb2FkZXIuc2hvdWxkU25pZmZDb250ZW50
KCkgPyBTbmlmZkNvbnRlbnQgOiBEb05vdFNuaWZmQ29udGVudDsKQEAgLTIyNSw3ICsyNDksNyBA
QCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJl
c291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogICAgIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRCA9
IHdlYlBhZ2UgPyB3ZWJQYWdlLT5wYWdlSUQoKSA6IDA7CiAgICAgbG9hZFBhcmFtZXRlcnMud2Vi
RnJhbWVJRCA9IHdlYkZyYW1lID8gd2ViRnJhbWUtPmZyYW1lSUQoKSA6IDA7CiAgICAgbG9hZFBh
cmFtZXRlcnMuc2Vzc2lvbklEID0gd2ViUGFnZSA/IHdlYlBhZ2UtPnNlc3Npb25JRCgpIDogUEFM
OjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsKLSAgICBsb2FkUGFyYW1ldGVycy5yZXF1
ZXN0ID0gcmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpOworICAgIGxvYWRQYXJhbWV0ZXJzLnJlcXVl
c3QgPSByZXF1ZXN0OwogICAgIGxvYWRQYXJhbWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1BvbGljeSA9
IGNvbnRlbnRTbmlmZmluZ1BvbGljeTsKICAgICBsb2FkUGFyYW1ldGVycy5zdG9yZWRDcmVkZW50
aWFsc1BvbGljeSA9IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5OwogICAgIC8vIElmIHRoZXJlIGlz
IG5vIFdlYkZyYW1lIHRoZW4gdGhpcyByZXNvdXJjZSBjYW5ub3QgYmUgYXV0aGVudGljYXRlZCB3
aXRoIHRoZSBjbGllbnQuCkBAIC0yMzMsNyArMjU3LDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVn
eTo6c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVz
b3UKICAgICBsb2FkUGFyYW1ldGVycy5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJl
ZGlyZWN0ID0gc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdDsKICAgICBs
b2FkUGFyYW1ldGVycy5kZWZlcnNMb2FkaW5nID0gcmVzb3VyY2VMb2FkZXIuZGVmZXJzTG9hZGlu
ZygpOwogICAgIGxvYWRQYXJhbWV0ZXJzLm5lZWRzQ2VydGlmaWNhdGVJbmZvID0gcmVzb3VyY2VM
b2FkZXIuc2hvdWxkSW5jbHVkZUNlcnRpZmljYXRlSW5mbygpOwotICAgIGxvYWRQYXJhbWV0ZXJz
Lm1heGltdW1CdWZmZXJpbmdUaW1lID0gbWF4aW11bUJ1ZmZlcmluZ1RpbWUocmVzb3VyY2UpOwor
ICAgIGxvYWRQYXJhbWV0ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1lID0gbWF4aW11bUJ1ZmZlcmlu
Z1RpbWU7CiAgICAgbG9hZFBhcmFtZXRlcnMuZGVyaXZlZENhY2hlZERhdGFUeXBlc1RvUmV0cmll
dmUgPSByZXNvdXJjZUxvYWRlci5vcHRpb25zKCkuZGVyaXZlZENhY2hlZERhdGFUeXBlc1RvUmV0
cmlldmU7CiAKICAgICBBU1NFUlQoKGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRCAmJiBsb2FkUGFy
YW1ldGVycy53ZWJGcmFtZUlEKSB8fCBsb2FkUGFyYW1ldGVycy5jbGllbnRDcmVkZW50aWFsUG9s
aWN5ID09IENsaWVudENyZWRlbnRpYWxQb2xpY3k6OkNhbm5vdEFza0NsaWVudEZvckNyZWRlbnRp
YWxzKTsKQEAgLTMwMCw3ICszMjQsMTAgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6cmVtb3Zl
KFJlc291cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlcikKICAgICAgICAgTE9HX0VSUk9SKCJXZWJM
b2FkZXJTdHJhdGVneSByZW1vdmluZyBhIFJlc291cmNlTG9hZGVyIHRoYXQgaGFzIG5vIGlkZW50
aWZpZXIuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKKyAgICBpZiAoV2ViU2Vy
dmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKS5jYW5jZWxGZXRjaChpZGVudGlmaWVyKSkK
KyAgICAgICAgcmV0dXJuOworCiAgICAgUmVmUHRyPFdlYlJlc291cmNlTG9hZGVyPiBsb2FkZXIg
PSBtX3dlYlJlc291cmNlTG9hZGVycy50YWtlKGlkZW50aWZpZXIpOwogICAgIC8vIExvYWRlciBt
YXkgbm90IGJlIHJlZ2lzdGVyZWQgaWYgd2UgY3JlYXRlZCBpdCwgYnV0IGhhdmVuJ3Qgc2NoZWR1
bGVkIHlldCAoYSBidW5kbGUgY2xpZW50IGNhbiBkZWNpZGUgdG8gY2FuY2VsIHN1Y2ggcmVxdWVz
dCB2aWEgd2lsbFNlbmRSZXF1ZXN0KS4KICAgICBpZiAoIWxvYWRlcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCmluZGV4IGI0
OGY2ODExOGY0NDljNzc2OGQxNzk2NjE2NWJiNjZhMzI1YjIzNmYuLmVhYjRlY2U3ZWU2YmZmZmY3
MzhlMmJkZmEzNTVhMDg0YzJkYWE2ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaApAQCAtNzcsNiArNzcsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBhZGRVUkxTY2hlbWVUYXNrUHJveHkoV2ViVVJMU2NoZW1lVGFza1Byb3h5
Jik7CiAgICAgdm9pZCByZW1vdmVVUkxTY2hlbWVUYXNrUHJveHkoV2ViVVJMU2NoZW1lVGFza1By
b3h5Jik7CiAKKyAgICB2b2lkIHNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFdlYlJlc291cmNlTG9hZGVyOjpUcmFja2luZ1BhcmFtZXRlcnMmLCBib29sIHNob3VsZENsZWFy
UmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFNlY29uZHMpOworCiBwcml2YXRlOgogICAg
IHZvaWQgc2NoZWR1bGVMb2FkKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJiwgV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2UqLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJl
Y3QpOwogICAgIHZvaWQgc2NoZWR1bGVJbnRlcm5hbGx5RmFpbGVkTG9hZChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDNkNGUz
YjQxNDc1MWE2MDIyNTlhMWJlNmJjYjFjYzc4NzNmOWFjYQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5j
cHAKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudEZldGNoLmgiCisKKyNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCisKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiV2ViU2Vy
dmljZVdvcmtlclByb3ZpZGVyLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1l
c3BhY2UgV2ViS2l0IHsKKworU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpTZXJ2aWNlV29ya2Vy
Q2xpZW50RmV0Y2goV2ViU2VydmljZVdvcmtlclByb3ZpZGVyJiBzZXJ2aWNlV29ya2VyUHJvdmlk
ZXIsIFJlZjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcj4mJiBsb2FkZXIsIHVpbnQ2NF90IGlkZW50
aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgU2VydmljZVdvcmtlckNs
aWVudEZldGNoQ2FsbGJhY2smJiBjYWxsYmFjaykKKyAgICA6IG1fc2VydmljZVdvcmtlclByb3Zp
ZGVyKHNlcnZpY2VXb3JrZXJQcm92aWRlcikKKyAgICAsIG1fbG9hZGVyKFdURk1vdmUobG9hZGVy
KSkKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICwgbV9jb25uZWN0aW9uKFdU
Rk1vdmUoY29ubmVjdGlvbikpCisgICAgLCBtX2NhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKQor
eworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAgIGlmICgh
bV9sb2FkZXIpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FOiBTdXBwb3J0IHJlZGly
ZWN0aW9ucy4KKyAgICBBU1NFUlQocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA8PSAzMDAgfHwg
cmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDAgfHwgcmVzcG9uc2UuaHR0cFN0YXR1c0Nv
ZGUoKSA9PSAzMDQgfHwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDUgfHwgcmVzcG9u
c2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDYpOworCisgICAgaWYgKHJlc3BvbnNlLnR5cGUoKSA9
PSBSZXNvdXJjZVJlc3BvbnNlOjpUeXBlOjpFcnJvcikgeworICAgICAgICAvLyBBZGQgc3VwcG9y
dCBmb3IgYSBiZXR0ZXIgZXJyb3IuCisgICAgICAgIG1fbG9hZGVyLT5kaWRGYWlsKHsgfSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9sb2FkZXItPmRpZFJlY2VpdmVSZXNwb25zZShy
ZXNwb25zZSk7CisKKyAgICBpZiAoYXV0byBjYWxsYmFjayA9IFdURk1vdmUobV9jYWxsYmFjaykp
CisgICAgICAgIGNhbGxiYWNrKFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaFJlc3VsdDo6RG9uZSk7
Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpkaWRSZWNlaXZlRGF0YShjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCit7
CisgICAgaWYgKCFtX2xvYWRlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9sb2FkZXItPmRp
ZFJlY2VpdmVEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgpKSwg
ZGF0YS5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKK30KKwor
dm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OmRpZEZpbmlzaCgpCit7CisgICAgaWYgKCFt
X2xvYWRlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9sb2FkZXItPmRpZEZpbmlzaExvYWRp
bmcoTmV0d29ya0xvYWRNZXRyaWNzIHsgfSk7CisgICAgbV9zZXJ2aWNlV29ya2VyUHJvdmlkZXIu
ZmV0Y2hGaW5pc2hlZChtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJDbGll
bnRGZXRjaDo6ZGlkRmFpbCgpCit7CisgICAgaWYgKCFtX2xvYWRlcikKKyAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBXVEZNb3ZlKG1fY2FsbGJhY2spKQorICAgICAg
ICBjYWxsYmFjayhTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hSZXN1bHQ6Ok5vbmUpOworCisgICAg
bV9zZXJ2aWNlV29ya2VyUHJvdmlkZXIuZmV0Y2hGaW5pc2hlZChtX2lkZW50aWZpZXIpOworfQor
Cit2b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6Y2FuY2VsKCkKK3sKKyAgICBpZiAoYXV0
byBjYWxsYmFjayA9IFdURk1vdmUobV9jYWxsYmFjaykpCisgICAgICAgIGNhbGxiYWNrKFNlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaFJlc3VsdDo6Q2FuY2VsbGVkKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0
Y2guaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGll
bnRGZXRjaC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0YTA3N2Y2MGQzZjI2MzIwNjQ4NTRjNGM3OTY0N2I1MTUx
Y2I0NmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guaApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKKyNpbmNsdWRl
ICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRlci5oPgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFu
ZGxlci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViU2VydmljZVdvcmtlclBy
b3ZpZGVyOworCitlbnVtIGNsYXNzIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaFJlc3VsdCB7IERv
bmUsIENhbmNlbGxlZCwgTm9uZSB9OwordXNpbmcgU2VydmljZVdvcmtlckNsaWVudEZldGNoQ2Fs
bGJhY2sgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2VydmljZVdvcmtlckNsaWVudEZl
dGNoUmVzdWx0KT47CisKK2NsYXNzIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaCBmaW5hbCA6IHB1
YmxpYyBSZWZDb3VudGVkPFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaD4sIHB1YmxpYyBJUEM6Ok1l
c3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitwdWJsaWM6CisgICAg
c3RhdGljIFJlZjxTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g+IGNyZWF0ZShXZWJTZXJ2aWNlV29y
a2VyUHJvdmlkZXImIHNlcnZpY2VXb3JrZXJQcm92aWRlciwgUmVmPFdlYkNvcmU6OlJlc291cmNl
TG9hZGVyPiYmIGxvYWRlciwgdWludDY0X3QgaWRlbnRpZmllciwgUmVmPElQQzo6Q29ubmVjdGlv
bj4mJiBjb25uZWN0aW9uLCBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hDYWxsYmFjayYmIGNhbGxi
YWNrKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtlckNs
aWVudEZldGNoIHsgc2VydmljZVdvcmtlclByb3ZpZGVyLCBXVEZNb3ZlKGxvYWRlciksIGlkZW50
aWZpZXIsIFdURk1vdmUoY29ubmVjdGlvbiksIFdURk1vdmUoY2FsbGJhY2spIH0pOworICAgIH0K
KworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJikgZmluYWw7CisgICAgdm9pZCBjYW5jZWwoKTsKKworcHJpdmF0ZToKKyAgICBTZXJ2aWNl
V29ya2VyQ2xpZW50RmV0Y2goV2ViU2VydmljZVdvcmtlclByb3ZpZGVyJiwgUmVmPFdlYkNvcmU6
OlJlc291cmNlTG9hZGVyPiYmLCB1aW50NjRfdCBpZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0
aW9uPiYmLCBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hDYWxsYmFjayYmKTsKKworICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGludDY0X3Qg
ZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGlkRmluaXNoKCk7CisgICAgdm9pZCBkaWRG
YWlsKCk7CisKKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkg
ZmluYWwgeyByZXR1cm4gbV9jb25uZWN0aW9uLnB0cigpOyB9CisgICAgdWludDY0X3QgbWVzc2Fn
ZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBmaW5hbCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKwor
ICAgIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlciYgbV9zZXJ2aWNlV29ya2VyUHJvdmlkZXI7Cisg
ICAgUmVmUHRyPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyPiBtX2xvYWRlcjsKKyAgICB1aW50NjRf
dCBtX2lkZW50aWZpZXIgeyAwIH07CisgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0
aW9uOworICAgIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaENhbGxiYWNrIG1fY2FsbGJhY2s7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5tZXNzYWdlcy5pbgpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xNjJmNzAwMDY5ZDM4ZmQ2NTg2NDllMjNkODUwNzc4MDE3ZDMyNGY1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNsaWVu
dEZldGNoLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzMgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKworbWVzc2Fn
ZXMgLT4gU2VydmljZVdvcmtlckNsaWVudEZldGNoIHsKKyAgICBEaWRSZWNlaXZlUmVzcG9uc2Uo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKKyAgICBEaWRSZWNlaXZlRGF0YShJ
UEM6OkRhdGFSZWZlcmVuY2UgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKKyAgICBE
aWRGaW5pc2goKQorICAgIERpZEZhaWwoKQorfQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9T
ZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZjUy
MjVkMTIzNmQzYmEwOGE1YjdkMWJjNzZhNTBjYmU0NDNiYWFlCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNvbnRleHRNYW5h
Z2VyLmNwcApAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5oIgorCisjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlN0b3Jh
Z2VQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VSZXNwb25zZS5oPgorI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KKwordXNpbmcg
bmFtZXNwYWNlIFBBTDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2Vi
S2l0IHsKKwordm9pZCBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXI6OnN0YXJ0U2VydmljZVdv
cmtlckNvbnRleHQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSkKK3sKKyAgICAvLyBGSVhNRTogUHJvdmlkZSBh
IHNlbnNpY2FsIHNlc3Npb24gSUQKKworICAgIGF1dG8gdGhyZWFkID0gU2VydmljZVdvcmtlclRo
cmVhZDo6Y3JlYXRlKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBkYXRhLCBTZXNzaW9uSUQ6
OmRlZmF1bHRTZXNzaW9uSUQoKSk7CisgICAgYXV0byB0aHJlYWRJZGVudGlmaWVyID0gdGhyZWFk
LT5pZGVudGlmaWVyKCk7CisgICAgYXV0byByZXN1bHQgPSBtX3dvcmtlclRocmVhZE1hcC5hZGQo
dGhyZWFkSWRlbnRpZmllciwgV1RGTW92ZSh0aHJlYWQpKTsKKyAgICBBU1NFUlQocmVzdWx0Lmlz
TmV3RW50cnkpOworCisgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+c3RhcnQoKTsKKworICAg
IExPRyhTZXJ2aWNlV29ya2VyLCAiQ29udGV4dCBwcm9jZXNzIFBJRDogJWkgc3RhcnRlZCB3b3Jr
ZXIgdGhyZWFkICVzXG4iLCBnZXRwaWQoKSwgZGF0YS53b3JrZXJJRC51dGY4KCkuZGF0YSgpKTsK
KworICAgIG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlN0b3Jh
Z2VQcm9jZXNzOjpTZXJ2aWNlV29ya2VyQ29udGV4dFN0YXJ0ZWQoc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIsIGRhdGEucmVnaXN0cmF0aW9uS2V5LCB0aHJlYWRJZGVudGlmaWVyLCBkYXRhLndv
cmtlcklEKSwgMCk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyOjpzdGFy
dEZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRj
aElkZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucykKK3sKKyAg
ICBVTlVTRURfUEFSQU0oc2VydmljZVdvcmtlcklkZW50aWZpZXIpOworCisgICAgLy8gRklYTUU6
IEhhcmQgY29kaW5nIHNvbWUgZmV0Y2hlcyBmb3IgdGVzdGluZyBwdXJwb3NlIHVudGlsIHdlIGlt
cGxlbWVudCB0aGUgY3JlYXRpb24gb2YgZmV0Y2ggZXZlbnQuCisgICAgaWYgKHJlcXVlc3QudXJs
KCkuc3RyaW5nKCkuY29udGFpbnMoInRlc3QxIikpIHsKKyAgICAgICAgUmVzb3VyY2VSZXNwb25z
ZSByZXNwb25zZTsKKyAgICAgICAgcmVzcG9uc2Uuc2V0VVJMKHJlcXVlc3QudXJsKCkpOworICAg
ICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZSgyMDApOworICAgICAgICByZXNwb25zZS5z
ZXRIVFRQU3RhdHVzVGV4dChBU0NJSUxpdGVyYWwoIkhlbGxvIGZyb20gc2VydmljZSB3b3JrZXIi
KSk7CisgICAgICAgIG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OlN0b3JhZ2VQcm9jZXNzOjpEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZShzZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyLCByZXNwb25zZSksIDApOworICAgICAgICBtX2Nv
bm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6
RGlkRmluaXNoRmV0Y2goc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGZldGNoSWRlbnRpZmll
ciksIDApOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChyZXF1ZXN0LnVybCgpLnN0
cmluZygpLmNvbnRhaW5zKCJ0ZXN0MiIpKSB7CisgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVz
cG9uc2U7CisgICAgICAgIHJlc3BvbnNlLnNldFVSTChyZXF1ZXN0LnVybCgpKTsKKyAgICAgICAg
cmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoNTAwKTsKKyAgICAgICAgcmVzcG9uc2Uuc2V0SFRU
UFN0YXR1c1RleHQoQVNDSUlMaXRlcmFsKCJFcnJvciBmcm9tIHNlcnZpY2Ugd29ya2VyIikpOwor
ICAgICAgICBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTdG9y
YWdlUHJvY2Vzczo6RGlkUmVjZWl2ZUZldGNoUmVzcG9uc2Uoc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIsIGZldGNoSWRlbnRpZmllciwgcmVzcG9uc2UpLCAwKTsKKyAgICAgICAgbV9jb25uZWN0
aW9uVG9TdG9yYWdlUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OkRpZEZp
bmlzaEZldGNoKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIpLCAw
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAocmVxdWVzdC51cmwoKS5zdHJpbmco
KS5jb250YWlucygidGVzdDMiKSkgeworICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNl
OworICAgICAgICByZXNwb25zZS5zZXRVUkwocmVxdWVzdC51cmwoKSk7CisgICAgICAgIHJlc3Bv
bnNlLnNldEhUVFBTdGF0dXNDb2RlKDUwMCk7CisgICAgICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0
dXNUZXh0KEFTQ0lJTGl0ZXJhbCgiRXJyb3IgZnJvbSBzZXJ2aWNlIHdvcmtlciIpKTsKKyAgICAg
ICAgcmVzcG9uc2Uuc2V0VHlwZShSZXNvdXJjZVJlc3BvbnNlOjpUeXBlOjpFcnJvcik7CisgICAg
ICAgIG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQ
cm9jZXNzOjpEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZShzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciwgZmV0Y2hJZGVudGlmaWVyLCByZXNwb25zZSksIDApOworICAgICAgICBtX2Nvbm5lY3Rpb25U
b1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6RGlkRmluaXNo
RmV0Y2goc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGZldGNoSWRlbnRpZmllciksIDApOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9jb25uZWN0aW9uVG9TdG9yYWdlUHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OkRpZEZhaWxGZXRjaChzZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyKSwgMCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDb250ZXh0
TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtl
ckNvbnRleHRNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDhiNjkxMGE3NjE5ZTg5YTFhN2QxOGFhNmRj
MTZhY2M1ZDBlZTBhOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5oCkBAIC0wLDAgKzEsNTkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
KworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3Jr
ZXJUaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CitzdHJ1Y3QgRmV0Y2hPcHRpb25zOworY2xhc3MgUmVzb3VyY2VSZXF1ZXN0Oworc3RydWN0
IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQg
U2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVj
dGlvbikKKyAgICAgICAgOiBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzKFdURk1vdmUoY29u
bmVjdGlvbikpCisgICAgeworICAgIH0KKworICAgIHZvaWQgc3RhcnRTZXJ2aWNlV29ya2VyQ29u
dGV4dCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
U2VydmljZVdvcmtlckNvbnRleHREYXRhJik7CisgICAgdm9pZCBzdGFydEZldGNoKHVpbnQ2NF90
IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIHVp
bnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmKTsKKworcHJpdmF0ZToKKyAgICBS
ZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzOworICAgIEhh
c2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkPj4gbV93
b3JrZXJUaHJlYWRNYXA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCmluZGV4IDc2YWU3YjU1
YmEwMzBjY2IwMzgzNzg2ZTg4NzI4NTk5ZmZiZDZhZGEuLjVmYmZhZTY5YTE1ZGYwYTEzNGFmMzc1
MDFhYzY1MWQ4MDg5ZDc1YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcApAQCAtMjksNiArMjksNyBA
QAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNp
bmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guaCIKICNpbmNsdWRlICJTdG9yYWdlVG9X
ZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViU1dPcmlnaW5UYWJsZS5oIgpAQCAtNzUsNiArNzYsMTUg
QEAgdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnNldFNXT3JpZ2luVGFibGVTaGFyZWRNZW1v
cnkoY29uc3QgU2hhcmVkTWVtb3J5OjpIYW4KICAgICBtX3N3T3JpZ2luVGFibGUtPnNldFNoYXJl
ZE1lbW9yeShoYW5kbGUpOwogfQogCitSZWY8U2VydmljZVdvcmtlckNsaWVudEZldGNoPiBXZWJT
V0NsaWVudENvbm5lY3Rpb246OnN0YXJ0RmV0Y2goV2ViU2VydmljZVdvcmtlclByb3ZpZGVyJiBw
cm92aWRlciwgUmVmPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyPiYmIGxvYWRlciwgdWludDY0X3Qg
aWRlbnRpZmllciwgU2VydmljZVdvcmtlckNsaWVudEZldGNoQ2FsbGJhY2smJiBjYWxsYmFjaykK
K3sKKyAgICBBU1NFUlQobG9hZGVyLT5vcHRpb25zKCkuc2VydmljZVdvcmtlcnNNb2RlID09IFNl
cnZpY2VXb3JrZXJzTW9kZTo6QWxsKTsKKyAgICAvLyBGSVhNRTogRGVjaWRlIHdoZXRoZXIgdG8g
YXNzZXJ0IGZvciBsb2FkZXItPm9wdGlvbnMoKS5zZXJ2aWNlV29ya2VySWRlbnRpZmllciBvbmNl
IHdlIGhhdmUgYSBzdG9yeSBmb3IgbmF2aWdhdGlvbiBsb2Fkcy4KKworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6U3RhcnRGZXRjaChpZGVudGlmaWVyLCBsb2FkZXIt
Pm9wdGlvbnMoKS5zZXJ2aWNlV29ya2VySWRlbnRpZmllciwgbG9hZGVyLT5vcmlnaW5hbFJlcXVl
c3QoKSwgbG9hZGVyLT5vcHRpb25zKCkpKTsKKyAgICByZXR1cm4gU2VydmljZVdvcmtlckNsaWVu
dEZldGNoOjpjcmVhdGUocHJvdmlkZXIsIFdURk1vdmUobG9hZGVyKSwgaWRlbnRpZmllciwgbV9j
b25uZWN0aW9uLmdldCgpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24u
aAppbmRleCAyNjE3ZWMyZTc0ZjBlNTRlMjQ0NjY4YzJjMjM1ZDM2M2JkYWRkNjUzLi5kMGZhMzE5
ODNmYjAyNjI3YzlmOWIzZWJlN2UzNGE5ZjJmMzdiMDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaApAQCAt
MzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSAiU2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoLmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9TV0NsaWVudENvbm5lY3Rpb24uaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklE
Lmg+CkBAIC0zNywxMSArMzgsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IEV4
Y2VwdGlvbkRhdGE7CitjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKIGNsYXNzIFdlYlNXT3JpZ2luVGFibGU7CitjbGFzcyBXZWJTZXJ2aWNlV29ya2VyUHJv
dmlkZXI7CiAKIGNsYXNzIFdlYlNXQ2xpZW50Q29ubmVjdGlvbiA6IHB1YmxpYyBXZWJDb3JlOjpT
V0NsaWVudENvbm5lY3Rpb24sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6CkBAIC01OCw2ICs2MSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
IGZpbmFsOwogCiAgICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyUmVnaXN0ZXJlZEZvck9yaWdpbihj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYpIGNvbnN0IGZpbmFsOworICAgIFJlZjxTZXJ2
aWNlV29ya2VyQ2xpZW50RmV0Y2g+IHN0YXJ0RmV0Y2goV2ViU2VydmljZVdvcmtlclByb3ZpZGVy
JiwgUmVmPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyPiYmLCB1aW50NjRfdCBpZGVudGlmaWVyLCBT
ZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hDYWxsYmFjayYmKTsKIAogcHJpdmF0ZToKICAgICB2b2lk
IHNjaGVkdWxlU3RvcmFnZUpvYihjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YSYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vydmlj
ZVdvcmtlclByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAKaW5kZXggNjFkOGNlNTZlZWM1YmQ0MTczYjY0MmJl
OTA2MWU3M2M3NzM3NmY5OS4uMzg3Yjc0OGZkYzI2MTRkZDJmNzk2ZTYzMDI4NGI3NDI2MGUxMGUy
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vydmlj
ZVdvcmtlclByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwCkBAIC01OCw2ICs1OCw1OCBAQCBXZWJDb3Jl
OjpTV0NsaWVudENvbm5lY3Rpb24mIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2VydmljZVdv
cmtlckNvbm5lY3Rpb25GbwogICAgIHJldHVybiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJU
b1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbigpLT5zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZvclNl
c3Npb24oc2Vzc2lvbklEKTsKIH0KIAorc3RhdGljIGlubGluZSBib29sIHNob3VsZEhhbmRsZUZl
dGNoKGNvbnN0IFdlYlNXQ2xpZW50Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgQ2FjaGVkUmVzb3Vy
Y2UqIHJlc291cmNlLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCit7Cisg
ICAgaWYgKG9wdGlvbnMuc2VydmljZVdvcmtlcnNNb2RlICE9IFNlcnZpY2VXb3JrZXJzTW9kZTo6
QWxsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHBy
b2JhYmx5IGFzc2VydCB0aGF0IG9wdGlvbnMuc2VydmljZVdvcmtlcnNJZGVudGlmaWVyIGlzIG5v
dCBudWxsLgorICAgIGlmIChpc1BvdGVudGlhbE5hdmlnYXRpb25PclN1YnJlc291cmNlUmVxdWVz
dChvcHRpb25zLmRlc3RpbmF0aW9uKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8g
RklYTUU6IEltcGxlbWVudCBub24tc3VicmVzb3VyY2UgcmVxdWVzdCBsb2Fkcy4KKyAgICBpZiAo
aXNOb25TdWJyZXNvdXJjZVJlcXVlc3Qob3B0aW9ucy5kZXN0aW5hdGlvbikpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGlmICghcmVzb3VyY2UpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIHJldHVybiBjb25uZWN0aW9uLmhhc1NlcnZpY2VXb3JrZXJSZWdpc3RlcmVkRm9yT3Jp
Z2luKCpyZXNvdXJjZS0+b3JpZ2luKCkpOworfQorCit2b2lkIFdlYlNlcnZpY2VXb3JrZXJQcm92
aWRlcjo6aGFuZGxlRmV0Y2goUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgQ2FjaGVkUmVzb3VyY2Uq
IHJlc291cmNlLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNlcnZpY2VXb3JrZXJDbGllbnRG
ZXRjaENhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgYXV0byYgY29ubmVjdGlvbiA9IFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLndlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKCktPnNlcnZp
Y2VXb3JrZXJDb25uZWN0aW9uRm9yU2Vzc2lvbihzZXNzaW9uSUQpOworCisgICAgaWYgKCFzaG91
bGRIYW5kbGVGZXRjaChjb25uZWN0aW9uLCByZXNvdXJjZSwgbG9hZGVyLm9wdGlvbnMoKSkpIHsK
KyAgICAgICAgLy8gQWRkIGFuIG9wdGlvbiB0byBlcnJvciByZXNvdXJjZSBsb2FkIGZvciBEVEwg
dG8gYWN0dWFsbHkgZ28gdGhyb3VnaCBwcmVmbGlnaHQuCisgICAgICAgIGNhbGxiYWNrKFNlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaFJlc3VsdDo6Tm9uZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBhdXRvIGZldGNoID0gY29ubmVjdGlvbi5zdGFydEZldGNoKCp0aGlzLCBsb2FkZXIs
IGxvYWRlci5pZGVudGlmaWVyKCksIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBtX29uZ29pbmdG
ZXRjaFRhc2tzLmFkZChsb2FkZXIuaWRlbnRpZmllcigpLCBXVEZNb3ZlKGZldGNoKSk7Cit9CisK
K2Jvb2wgV2ViU2VydmljZVdvcmtlclByb3ZpZGVyOjpjYW5jZWxGZXRjaCh1aW50NjRfdCBmZXRj
aElkZW50aWZpZXIpCit7CisgICAgYXV0byBmZXRjaCA9IG1fb25nb2luZ0ZldGNoVGFza3MudGFr
ZShmZXRjaElkZW50aWZpZXIpOworICAgIGlmIChmZXRjaCkKKyAgICAgICAgKCpmZXRjaCktPmNh
bmNlbCgpOworICAgIHJldHVybiAhIWZldGNoOworfQorCit2b2lkIFdlYlNlcnZpY2VXb3JrZXJQ
cm92aWRlcjo6ZmV0Y2hGaW5pc2hlZCh1aW50NjRfdCBmZXRjaElkZW50aWZpZXIpCit7CisgICAg
bV9vbmdvaW5nRmV0Y2hUYXNrcy50YWtlKGZldGNoSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2Vi
U2VydmljZVdvcmtlclByb3ZpZGVyOjpkaWRSZWNlaXZlU2VydmljZVdvcmtlckNsaWVudEZldGNo
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rl
cikKK3sKKyAgICBpZiAoYXV0byBmZXRjaCA9IG1fb25nb2luZ0ZldGNoVGFza3MuZ2V0KGRlY29k
ZXIuZGVzdGluYXRpb25JRCgpKSkKKyAgICAgICAgZmV0Y2gtPmRpZFJlY2VpdmVNZXNzYWdlKGNv
bm5lY3Rpb24sIGRlY29kZXIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlm
IC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmgKaW5kZXggNzc1
ZjVlZTA0YjJjNmZkZDc1NmEyZWNlODhjNjhhNzcwZmM3MDEwZi4uNzA1MjA0ZjM0MTgxYWJkOTJh
YmM4ZTJlMWU4YjAzYTg5ODNhNWVlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmgKQEAgLTI3LDYg
KzI3LDcgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorI2luY2x1ZGUgIlNlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclBy
b3ZpZGVyLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAgLTM2LDEyICsz
NywxOSBAQCBjbGFzcyBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgV2Vi
Q29yZTo6U2VydmljZVdvcmtlclByb3ZpZGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViU2Vy
dmljZVdvcmtlclByb3ZpZGVyJiBzaW5nbGV0b24oKTsKIAorICAgIHZvaWQgaGFuZGxlRmV0Y2go
V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXImLCBXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZSosIFBBTDo6
U2Vzc2lvbklELCBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hDYWxsYmFjayYmKTsKKyAgICBib29s
IGNhbmNlbEZldGNoKHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcik7CisgICAgdm9pZCBmZXRjaEZp
bmlzaGVkKHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcik7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVT
ZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpOworCiBwcml2YXRlOgogICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxXZWJTZXJ2aWNl
V29ya2VyUHJvdmlkZXI+OwogICAgIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcigpOwogCiAgICAg
V2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uJiBzZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZvclNl
c3Npb24oUEFMOjpTZXNzaW9uSUQpIGZpbmFsOwogCisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVm
PFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaD4+IG1fb25nb2luZ0ZldGNoVGFza3M7CiB9OyAvLyBj
bGFzcyBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJUb1N0b3JhZ2VQ
cm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggNWExMmQwNGRjYmQyMzExMmM0
MDM5MzE5NDVlNWZjNTU2MTAzMDc3Ni4uM2JlNWRmMDJmNTUxNTUzNjU2ZTY1NzM4MjAzMGExOThk
M2U0Nzg2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
VG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMzIsNiAr
MzIsMTEgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiV2ViU1dDbGllbnRD
b25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViU1dDbGllbnRDb25uZWN0aW9uTWVzc2FnZXMuaCIK
KyNpbmNsdWRlICJXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCIKKworI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlcy5o
IgorI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBQQUw7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKQEAgLTY3LDYgKzcyLDEwIEBAIHZvaWQgV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246
OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvCiAgICAgICAgICAg
ICBzZXJ2aWNlV29ya2VyQ29ubmVjdGlvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwg
ZGVjb2Rlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgaWYgKGRlY29kZXIubWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6
OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlKGNv
bm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQogI2VuZGlmCiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKaW5kZXggNmUyNzY3MTFlY2M1ODdiOTc0YWNhMzEzMTZkYmQxY2EzY2Y3MTkxYi4uMWY3
YjIwNDAzNzY0NGY4MTg3YzA5Y2YxM2Y5ZmM5YTU3NTdiMTFjNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIk5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCiAjaW5j
bHVkZSAiUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmgiCisjaW5jbHVkZSAiU2Vydmlj
ZVdvcmtlckNvbnRleHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKICNp
bmNsdWRlICJTdGF0aXN0aWNzRGF0YS5oIgogI2luY2x1ZGUgIlN0b3JhZ2VQcm9jZXNzTWVzc2Fn
ZXMuaCIKQEAgLTEwNSw3ICsxMDYsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvU1dDb250ZXh0TWFuYWdlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NoZW1lUmVn
aXN0cnkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaD4KQEAgLTE2MjIsNyArMTYyMiw3IEBA
IExpYldlYlJUQ05ldHdvcmsmIFdlYlByb2Nlc3M6OmxpYldlYlJUQ05ldHdvcmsoKQogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKIHZvaWQgV2ViUHJvY2Vzczo6Z2V0V29ya2VyQ29udGV4dENv
bm5lY3Rpb24oKQogewotICAgIEFTU0VSVCghbV93b3JrZXJDb250ZXh0Q29ubmVjdGlvbik7Cisg
ICAgQVNTRVJUKCFtX3NlcnZpY2VXb3JrZXJNYW5hZ2VyKTsKIAogI2lmIFVTRShVTklYX0RPTUFJ
Tl9TT0NLRVRTKQogICAgIElQQzo6Q29ubmVjdGlvbjo6U29ja2V0UGFpciBzb2NrZXRQYWlyID0g
SVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsKQEAgLTE2NDIsMjAg
KzE2NDIsMjcgQEAgdm9pZCBXZWJQcm9jZXNzOjpnZXRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbigp
CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICNlbmRpZgogCi0gICAgbV93b3Jr
ZXJDb250ZXh0Q29ubmVjdGlvbiA9IElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQ29ubmVj
dGlvbihjb25uZWN0aW9uSWRlbnRpZmllciwgKnRoaXMpOwotICAgIG1fd29ya2VyQ29udGV4dENv
bm5lY3Rpb24tPm9wZW4oKTsKLQorICAgIGF1dG8gd29ya2VyQ29udGV4dENvbm5lY3Rpb24gPSBJ
UEM6OkNvbm5lY3Rpb246OmNyZWF0ZVNlcnZlckNvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZp
ZXIsICp0aGlzKTsKKyAgICB3b3JrZXJDb250ZXh0Q29ubmVjdGlvbi0+b3BlbigpOworICAgIG1f
c2VydmljZVdvcmtlck1hbmFnZXIgPSAgU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyKFdURk1v
dmUod29ya2VyQ29udGV4dENvbm5lY3Rpb24pKTsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJv
eHk6OkRpZEdldFdvcmtlckNvbnRleHRDb25uZWN0aW9uKGNvbm5lY3Rpb25DbGllbnRQb3J0KSwg
MCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6c3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4dCh1aW50
NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlckNvbnRl
eHREYXRhJiBkYXRhKQogewotICAgIGF1dG8gY29udGV4dFJlc3VsdCA9IFNXQ29udGV4dE1hbmFn
ZXI6OnNpbmdsZXRvbigpLnN0YXJ0U2VydmljZVdvcmtlckNvbnRleHQoc2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIsIGRhdGEpOwotICAgIAotICAgIGlmIChjb250ZXh0UmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKQotICAgICAgICBtX3dvcmtlckNvbnRleHRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpTdG9yYWdlUHJvY2Vzczo6U2VydmljZVdvcmtlckNvbnRleHRGYWlsZWRUb1N0YXJ0KHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCBkYXRhLnJlZ2lzdHJhdGlvbktleSwgZGF0YS53b3JrZXJJ
RCwgY29udGV4dFJlc3VsdC5leGNlcHRpb24oKS5tZXNzYWdlKCkpLCAwKTsKLSAgICBlbHNlCi0g
ICAgICAgIG1fd29ya2VyQ29udGV4dENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQ
cm9jZXNzOjpTZXJ2aWNlV29ya2VyQ29udGV4dFN0YXJ0ZWQoc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIsIGRhdGEucmVnaXN0cmF0aW9uS2V5LCBjb250ZXh0UmVzdWx0LnJldHVyblZhbHVlKCks
IGRhdGEud29ya2VySUQpLCAwKTsKKyAgICBBU1NFUlQobV9zZXJ2aWNlV29ya2VyTWFuYWdlcik7
CisgICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJNYW5hZ2VyKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX3NlcnZpY2VXb3JrZXJNYW5hZ2VyLT5zdGFydFNlcnZpY2VXb3JrZXJDb250ZXh0KHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCBkYXRhKTsKK30KKwordm9pZCBXZWJQcm9jZXNzOjpzdGFy
dEZldGNoSW5TZXJ2aWNlV29ya2VyKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
LCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEZldGNoT3B0aW9ucyYg
b3B0aW9ucykKK3sKKyAgICBpZiAoIW1fc2VydmljZVdvcmtlck1hbmFnZXIpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fc2VydmljZVdvcmtlck1hbmFnZXItPnN0YXJ0RmV0Y2goc2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIsIGZldGNoSWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIHJlcXVlc3QsIG9wdGlvbnMpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5oCmluZGV4IDVjMmU2Yzc2ZGY3ODI0NWExYjMxNTQ5YzZlMDExZmU0ZjVkNGQz
ZjcuLmZlZTE0MzYyNmI3MWViOTEwYzg3MzUwZjA1NmQyMjc2YWJmYzkxYTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlBs
dWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIlJlc291cmNlQ2FjaGVz
VG9DbGVhci5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKKyNpbmNsdWRlICJTZXJ2
aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tlclN0YXRlLmgi
CiAjaW5jbHVkZSAiVmlld1VwZGF0ZURpc3BhdGNoZXIuaCIKICNpbmNsdWRlICJXZWJJbnNwZWN0
b3JJbnRlcnJ1cHREaXNwYXRjaGVyLmgiCkBAIC0zMDAsNyArMzAxLDcgQEAgcHJpdmF0ZToKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBnZXRXb3JrZXJDb250ZXh0Q29ubmVj
dGlvbigpOwogICAgIHZvaWQgc3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4dCh1aW50NjRfdCBzZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRl
eHREYXRhJik7Ci0gICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gbV93b3JrZXJDb250ZXh0Q29u
bmVjdGlvbjsKKyAgICB2b2lkIHN0YXJ0RmV0Y2hJblNlcnZpY2VXb3JrZXIodWludDY0X3Qgc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgdWludDY0
X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFdlYkNvcmU6OkZldGNoT3B0aW9ucyYpOwogI2VuZGlmCiAKICAgICB2b2lkIHJl
bGVhc2VQYWdlQ2FjaGUoKTsKQEAgLTQzOCw2ICs0MzksOSBAQCBwcml2YXRlOgogI2lmIFBMQVRG
T1JNKFdBWUxBTkQpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdheWxhbmRDb21wb3NpdG9yRGlzcGxh
eT4gbV93YXlsYW5kQ29tcG9zaXRvckRpc3BsYXk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXI+
IG1fc2VydmljZVdvcmtlck1hbmFnZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgppbmRleCAyMjA2MzYwMWUwNjNhYjViMjE3OGZmN2IzNmM5Yzk5MTI4MTA3OTdmLi5mYTU0NzJj
MTIyOTE1ODlmNDA4ZTliNGFiYzFmOWZjYTBmMzVhMDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTE3LDUgKzExNyw2IEBAIG1l
c3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKICAgICBHZXRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbigpCiAgICAgU3RhcnRTZXJ2
aWNlV29ya2VyQ29udGV4dCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgc3Ry
dWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBjb250ZXh0RGF0YSkKKyAgICBT
dGFydEZldGNoSW5TZXJ2aWNlV29ya2VyKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgc3RydWN0IFdlYkNvcmU6
OkZldGNoT3B0aW9ucyBvcHRpb25zKQogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZGE4N2UzOTgxZWE0ZTA0
NTljN2FlNzY4MjUwZTA0MjQyNGVlYmY3OC4uN2ViYTg3Y2U1N2E2ZmM2NjY2MTdmY2UxNzAzZGRh
NjAwYzkxMWQ0MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTEwLTE4ICBZb3Vlbm4gRmFi
bGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgcHJlbGltaW5hcnkgc3VwcG9y
dCBmb3IgU2VydmljZVdvcmtlciBIYW5kbGUgRmV0Y2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODQ3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvYmFz
aWMtZmV0Y2guaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3dvcmtlcnMvc2VydmljZS9iYXNpYy1mZXRjaC5odHRwcy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvYmFzaWMtZmV0Y2gtd29ya2Vy
LmpzOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJj
ZXMvYmFzaWMtZmV0Y2guanM6IEFkZGVkLgorCiAyMDE3LTEwLTE4ICBNczJnZXIgIDxNczJnZXJA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBUZXN0IGdhcmRlbmluZy4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2ljLWZldGNoLmh0dHBz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jh
c2ljLWZldGNoLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZmQ2NDlmMDliZjE0MzAx
Y2U4N2NkMGM5ZmM2MjRhZGM2MGQ2NGZlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvYmFzaWMtZmV0Y2guaHR0cHMtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsNiBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEyOiB0ZXN0MSBzdGF0dXMg
Y29kZTogMjAwCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTM6IHRlc3QxIHN0YXR1cyB0ZXh0OiBI
ZWxsbyBmcm9tIHNlcnZpY2Ugd29ya2VyCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTY6IHRlc3Qy
IHN0YXR1cyBjb2RlOiA1MDAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxNzogdGVzdDIgc3RhdHVz
IHRleHQ6IEVycm9yIGZyb20gc2VydmljZSB3b3JrZXIKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAy
NjogdGVzdDMgZmV0Y2ggZmFpbGVkIGFzIGV4cGVjdGVkCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2ljLWZldGNoLmh0dHBzLmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1mZXRjaC5odHRwcy5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjYyYTA2NmFjOThlZjc4Yjg4NGY1ZmNhZTQ2YTk0MThhNThhNWNiYWQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2Vydmlj
ZS9iYXNpYy1mZXRjaC5odHRwcy5odG1sCkBAIC0wLDAgKzEsOSBAQAorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc3ctdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+CisKKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYmFzaWMtZmV0Y2guanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2ljLWZldGNoLXdvcmtlci5qcyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9iYXNpYy1mZXRjaC13
b3JrZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjlkOGEyYmQzMDE1Y2FlNGE0YTQ4NTZhMjRmMzlhZjg2YzE2
ZDE3NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9z
ZXJ2aWNlL3Jlc291cmNlcy9iYXNpYy1mZXRjaC13b3JrZXIuanMKQEAgLTAsMCArMSBAQAorLy8g
RklYTUU6IHJlZ2lzdGVyIGFuIG9uZmV0Y2ggZXZlbnQgaGFuZGxlciBhbmQgaGFuZGxlICJ0ZXN0
MSIsICJ0ZXN0MiIgYW5kICJ0ZXN0MyIgVVJMcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2ljLWZldGNoLmpzIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2ljLWZldGNoLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjI4NzQzYTI2NDI5YjE3NzdiMjRjYjc2MTI1ZjgwMDNjYzljNDhkNGQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9y
ZXNvdXJjZXMvYmFzaWMtZmV0Y2guanMKQEAgLTAsMCArMSwzNCBAQAorZnVuY3Rpb24gZG9uZSgp
Cit7CisgICAgZmluaXNoU1dUZXN0KCk7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHRlc3QoKQorewor
ICAgIHRyeSB7CisgICAgICAgIGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVy
KCJyZXNvdXJjZXMvYmFzaWMtZmV0Y2gtd29ya2VyLmpzIiwgeyB9KTsKKworICAgICAgICB2YXIg
cmVzcG9uc2UgPSBhd2FpdCBmZXRjaCgidGVzdDEiKTsKKyAgICAgICAgY29uc29sZS5sb2coInRl
c3QxIHN0YXR1cyBjb2RlOiAiICsgcmVzcG9uc2Uuc3RhdHVzKTsKKyAgICAgICAgY29uc29sZS5s
b2coInRlc3QxIHN0YXR1cyB0ZXh0OiAiICsgcmVzcG9uc2Uuc3RhdHVzVGV4dCk7CisKKyAgICAg
ICAgdmFyIHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goInRlc3QyIik7CisgICAgICAgIGNvbnNvbGUu
bG9nKCJ0ZXN0MiBzdGF0dXMgY29kZTogIiArIHJlc3BvbnNlLnN0YXR1cyk7CisgICAgICAgIGNv
bnNvbGUubG9nKCJ0ZXN0MiBzdGF0dXMgdGV4dDogIiArIHJlc3BvbnNlLnN0YXR1c1RleHQpOwor
CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXNwb25zZSA9IGF3YWl0IGZldGNoKCJ0ZXN0
MyIpOworICAgICAgICAgICAgY29uc29sZS5sb2coInRlc3QzIGZldGNoIHN1Y2NlZWRlZCB1bmV4
cGVjdGVkbHkiKTsKKyAgICAgICAgICAgIGNvbnNvbGUubG9nKCJ0ZXN0MyBzdGF0dXMgY29kZTog
IiArIHJlc3BvbnNlLnN0YXR1cyk7CisgICAgICAgICAgICBjb25zb2xlLmxvZygidGVzdDMgc3Rh
dHVzIHRleHQ6ICIgKyByZXNwb25zZS5zdGF0dXNUZXh0KTsKKworICAgICAgICB9IGNhdGNoIChl
KSB7CisgICAgICAgICAgICBjb25zb2xlLmxvZygidGVzdDMgZmV0Y2ggZmFpbGVkIGFzIGV4cGVj
dGVkIik7CisgICAgICAgIH0KKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgY29uc29sZS5sb2co
IkdvdCBleGNlcHRpb246ICIgKyBlKTsKKyAgICB9CisgICAgZmluaXNoU1dUZXN0KCk7Cit9CisK
K3Rlc3QoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324174</attachid>
            <date>2017-10-18 15:23:14 -0700</date>
            <delta_ts>2017-10-18 15:59:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178475-20171018152313.patch</filename>
            <type>text/plain</type>
            <size>90321</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzNjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmViOTQ5MjMwM2Q1Y2Vh
ZWRkYzcxNjZiMGYwZDEyM2E5ZTA2MzMyMy4uZGM1NTJiYTVlMTc2YmVmMjViYTBmZTNlZDkwMTIx
NGI4MjExNTU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE3LTEwLTE4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgcHJlbGltaW5hcnkg
c3VwcG9ydCBmb3IgU2VydmljZVdvcmtlciBIYW5kbGUgRmV0Y2gKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODQ3NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvd29ya2Vycy9z
ZXJ2aWNlL2Jhc2ljLWZldGNoLmh0dHBzLmh0bWwKKworICAgICAgICBBZGRpbmcgcGFyYW1ldGVy
cyB0byBhbGxvdyBXZWJLaXQgdG8gZG8gbG9hZGluZyB0aHJvdWdoIFNlcnZpY2UgV29ya2VyIG9y
IHRocm91Z2ggcmVndWxhciBuZXR3b3JraW5nLgorICAgICAgICBBIHNjcmlwdCBjb250ZXh0IGlz
IG5vdyBzdG9yaW5nIGl0cyBzZWxlY3RlZCBzZXJ2aWNlIHdvcmtlciBpZGVudGlmaWVyLiBUaGlz
IHNob3VsZCBiZSBmdWxseSBpbXBsZW1lbnRlZCBsYXRlciBvbi4KKyAgICAgICAgVGhpcyBzZWxl
Y3RlZCBzZXJ2aWNlIHdvcmtlciBpZGVudGlmaWVyIGlzIHBhc3NlZCB0byBsb2FkaW5nIGNvZGUg
YXMgYSBSZXNvdXJjZUxvYWRlck9wdGlvbnMgZmllbGQuCisgICAgICAgIFNlcnZpY2Ugd29ya2Vy
cyBtb2RlIGlzIGFsc28gYWRkZWQgYXMgYSBSZXNvdXJjZUxvYWRlck9wdGlvbnMgZmllbGQgc28g
dGhhdCB0aGUgc2VydmljZSB3b3JrZXIgY2FuIGJlIGJ5cGFzc2VkLgorCisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVj
dXRpb25Db250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpzZWxlY3RlZFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnNldFNlbGVjdGVkU2VydmljZVdvcmtlcklkZW50
aWZpZXIpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIpOgorICAgICAgICAqIGxvYWRlci9GZXRjaE9wdGlvbnMuaDoKKyAgICAgICAg
KFdlYkNvcmU6OmlzUG90ZW50aWFsTmF2aWdhdGlvbk9yU3VicmVzb3VyY2VSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OmlzTm9uU3VicmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKiBsb2Fk
ZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmg6CisgICAgICAgICogbG9hZGVyL1dvcmtlclRocmVh
ZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRl
cjo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJl
YWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKToKKyAgICAg
ICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclRocmVh
ZC5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29sdmVk
V2l0aFJlZ2lzdHJhdGlvbik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJQcm92aWRlci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4
dE1hbmFnZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJUaHJlYWQuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyLmg6CisKIDIwMTctMTAtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBBZGQgYW4gZWZmaWNpZW50IGRhdGEgc3RydWN0dXJlIGZvciBXZWJDb3Jl
IHRvIHF1ZXJ5IGlmIHRoZXJlIGlzIGEgU2VydmljZSBXb3JrZXIgcmVnaXN0ZXJlZCBmb3IgYSBn
aXZlbiBvcmlnaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNTBjZDY0MjhhMmEwY2JiZjkzYWZkODNmYjhjMzYwZDJh
YzMwNWYwMi4uNjQ1OWM1YjMwNmEwNzVmOTMxYzNkOTIxYmNkMjY2MDg0Mzk2NjNlOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw4NCBAQAorMjAxNy0xMC0xOCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBh
cHBsZS5jb20+CisKKyAgICAgICAgQWRkIHByZWxpbWluYXJ5IHN1cHBvcnQgZm9yIFNlcnZpY2VX
b3JrZXIgSGFuZGxlIEZldGNoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzg0NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBQcmVsaW1pbmFyeSBzdXBwb3J0IG9mIEhhbmRsZSBGZXRjaCBhbGdvcml0aG0g
YW5kIGludGVncmF0aW9uIHdpdGggZmV0Y2ggc3BlYy4KKyAgICAgICAgQWRkaW5nIFNlcnZpY2VX
b3JrZXJDbGllbnRGZXRjaCBhcyB0aGUgY2xhc3MgcmVzcG9uc2libGUgdG8gZG8gdGhlIGxvYWQg
dGhyb3VnaCBTZXJ2aWNlV29ya2VyLgorICAgICAgICBJdCBpcyBzaW1pbGFyIHRvIFdlYlJlc291
cmNlTG9hZGVyIHRoYXQgZG8gdGhlIGxvYWQgdGhyb3VnaCBOZXR3b3JrUHJvY2Vzcy4KKyAgICAg
ICAgSW4gY2FzZSBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2ggaXMgbm90IGFibGUgdG8gbG9hZCB0
aHJvdWdoIFNlcnZpY2VXb3JrZXIsCisgICAgICAgIGl0IHdpbGwgZmFsbGJhY2sgdG8gV2ViUmVz
b3VyY2VMb2FkZXIgdGhyb3VnaCBhIGZhbGxiYWNrIGNhbGxiYWNrLgorCisgICAgICAgIExvYWRp
bmcgdGhyb3VnaCBTZXJ2aWNlIFdvcmtlciBpcyBkb25lIGN1cnJlbnRseSBpZjoKKyAgICAgICAg
LSBUaGVyZSBpcyBhIHNlcnZpY2Ugd29ya2VyIHJlZ2lzdGVyZWQgZm9yIHRoYXQgb3JpZ2luCisg
ICAgICAgIC0gUmVxdWVzdCBpcyBhIHN1YnJlc291cmNlCisgICAgICAgIC0gc2VydmljZSB3b3Jr
ZXJzIG1vZGUgaXMgYWxsCisgICAgICAgIFRoZXJlIHdpbGwgYmUgY2FzZXMgd2hlcmUgdGhlIHNl
cnZpY2Ugd29ya2VyIHdpbGwgbm90IGRvIHRoZSBsb2FkaW5nLCBmb3IgaW5zdGFuY2Ugd2hlbiBm
ZXRjaCBldmVudCBoYW5kbGVyIGlzIG5vdCBzZXQuCisgICAgICAgIEZ1dHVyZSB3b3JrIHNob3Vs
ZCB0cnkgdG8gcmVkdWNlIHRoZSBjYXNlcyB3aGVyZSB0aGUgSVBDIGRhbmNlIGlzIGRvbmUgdW5u
ZWNlc3NhcmlseS4KKworICAgICAgICBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2ggaXMgcmVzcG9u
c2libGUgdG8gYWRhcHQgdGhlIFNlcnZpY2VXb3JrZXIgcmVzcG9uc2UgdG8gUmVzb3VyY2VMb2Fk
ZXIuCisgICAgICAgIEluIHBhcnRpY3VsYXIsIGl0IGlzIGNhbGxpbmcgUmVzb3VyY2VMb2FkZXIg
ZXJyb3IgY2FsbGJhY2sgaWYgcmVzcG9uc2UgaXMgb2YgdHlwZSBlcnJvci4KKyAgICAgICAgSXQg
c2hvdWxkIGNhbGwgUmVzb3VyY2VMb2FkZXIgcmVkaXJlY3Rpb24gY2FsbGJhY2sgaWYgcmVzcG9u
c2UgaXMgYSByZWRpcmVjdGlvbiByZXNwb25zZS4KKyAgICAgICAgVGhpcyB3aWxsIGJlIGRvbmUg
YXMgYSBmb2xsb3ctdXAuCisKKyAgICAgICAgSW1wbGVtZW50aW5nIHRoZSBJUEMgY29tbXVuaWNh
dGlvbiBkZWRpY2F0ZWQgdG8gZmV0Y2ggYmV0d2VlbiBXZWJQcm9jZXNzIGFuZCBTZXJ2aWNlV29y
a2VyIHRocm91Z2ggU3RvcmFnZVByb2Nlc3MuCisgICAgICAgIEluIHRoZSBmdXR1cmUsIFdlYlBy
b2Nlc3Mgc2hvdWxkIGNyZWF0ZSBhIGRpcmVjdCBJUEMgY29tbXVuaWNhdGlvbiB0byB0aGUgU2Vy
dmljZVdvcmtlciBwcm9jZXNzLgorCisgICAgICAgIE1vdmVkIFNXQ29udGV4dE1hbmFnZXIgZnJv
bSBXZWJDb3JlIHRvIFdlYktpdCBhbmQgcmVuYW1lZCBpdCB0byBTZXJ2aWNlV29ya2VyQ29udGV4
dE1hbmFnZXIuCisgICAgICAgIFRoaXMgY2xhc3MgaXMgbW92ZWQgdG8gV2ViS2l0IGFzIGl0IHdp
bGwgaGF2ZSB0byBoYW5kbGUgSVBDIGFuZCBoYXZpbmcgYSBzZXBhcmF0aW9uIHdpbGwgYWRkIHNv
bWUgdW5uZWNlc3NhcnkgYm9pbGVycGxhdGUuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5t
YWtlOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpz
dGFydEZldGNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpkaWRS
ZWNlaXZlRmV0Y2hSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVj
dGlvbjo6ZGlkUmVjZWl2ZUZldGNoRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVy
Q29ubmVjdGlvbjo6ZGlkRmluaXNoRmV0Y2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZl
ckNvbm5lY3Rpb246OmZhaWxlZEZldGNoKToKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFN0b3JhZ2VQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIFN0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZVByb2Nlc3M6OmZhaWxlZEZldGNoKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZVByb2Nlc3M6OmRpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZVByb2Nlc3M6OmRpZFJlY2VpdmVGZXRjaERhdGEpOgorICAgICAgICAoV2ViS2l0OjpTdG9y
YWdlUHJvY2Vzczo6ZGlkRmluaXNoRmV0Y2gpOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1N0
b3JhZ2VQcm9jZXNzLmg6CisgICAgICAgICogU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3Mu
bWVzc2FnZXMuaW46CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nl
c3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpkaWRS
ZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0
Y2g6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckNsaWVu
dEZldGNoOjpkaWRGaW5pc2hGZXRjaCk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJD
bGllbnRGZXRjaDo6ZGlkRmFpbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaC5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3Jh
Z2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4
dE1hbmFnZXIuY3BwLgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFn
ZXI6OnN0YXJ0U2VydmljZVdvcmtlckNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNl
V29ya2VyQ29udGV4dE1hbmFnZXI6OnN0YXJ0RmV0Y2gpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
U3RvcmFnZS9TZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuaDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaC4KKyAg
ICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyOjpTZXJ2aWNlV29ya2Vy
Q29udGV4dE1hbmFnZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVu
dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246
OnN0YXJ0RmV0Y2gpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENv
bm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtl
clByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2hvdWxkSGFuZGxlRmV0Y2gpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OmhhbmRsZUZldGNoKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlclByb3ZpZGVyOjpkaWRSZWNlaXZlU2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
czo6Z2V0V29ya2VyQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzOjpzdGFydFNlcnZpY2VXb3JrZXJDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6c3RhcnRGZXRjaEluU2VydmljZVdvcmtlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
OgorCiAyMDE3LTEwLTE4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWRkIGFuIGVmZmljaWVudCBkYXRhIHN0cnVjdHVyZSBmb3IgV2ViQ29yZSB0byBxdWVyeSBp
ZiB0aGVyZSBpcyBhIFNlcnZpY2UgV29ya2VyIHJlZ2lzdGVyZWQgZm9yIGEgZ2l2ZW4gb3JpZ2lu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggZDVhOTIwNDk0OWQ4YmJlOGRiYWI2OTA2OTk2OTZlZTk0NTM4N2U5NC4uNzNkNTJjYTM1
MGJjZThlMzVhYTk5NTgyYzU4ZWY3ZTNmMjZiYjc3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjMzNiw4ICsyMzM2LDYgQEAK
IAkJNTE3QTYzQzYxQjc0MzE5MjAwRTdEQ0RDIC8qIEtleWVkRW5jb2RlckNGLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdBNjNDMjFCNzQzMTdFMDBF
N0RDREMgLyogS2V5ZWRFbmNvZGVyQ0YuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1MTdCMjVBOTFDQzgyQjJBMDA2MUMwMTEgLyogSURCQ29ubmVj
dGlvblByb3h5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxN0IyNUE3MUNDODIwMzIwMDYxQzAxMSAvKiBJREJDb25uZWN0aW9uUHJveHkuY3BwICov
OyB9OwogCQk1MTdCMjVBQTFDQzgyQjJBMDA2MUMwMTEgLyogSURCQ29ubmVjdGlvblByb3h5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdCMjVBODFD
QzgyMDMyMDA2MUMwMTEgLyogSURCQ29ubmVjdGlvblByb3h5LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTE3Qzg3MEExRjhFQkIyNTAwRUI4MDc2
IC8qIFNXQ29udGV4dE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE3Qzg3MDgxRjhFQjlCRjAwRUI4MDc2IC8qIFNXQ29udGV4dE1hbmFn
ZXIuY3BwICovOyB9OwotCQk1MTdDODcwQjFGOEVCQjI1MDBFQjgwNzYgLyogU1dDb250ZXh0TWFu
YWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3
Qzg3MDkxRjhFQjlDMDAwRUI4MDc2IC8qIFNXQ29udGV4dE1hbmFnZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTdDODcxODFGOEZENEQ5MDBF
QjgwNzYgLyogU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0M4NzE2MUY4RkQ0RDMwMEVCODA3NiAvKiBT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwICovOyB9OwogCQk1MTdERUVFNTFERTk0QURDMDBC
OTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3REVFRTMxREU5NEFEQzAwQjkxNjQ0
IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbSAqLzsgfTsKIAkJNTE3REVFRTgx
REU5NEIwODAwQjkxNjQ0IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3REVFRTcxREU5NEIw
ODAwQjkxNjQ0IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDI2OSw4ICsxMDI2Nyw2
IEBACiAJCTUxN0E2M0MyMUI3NDMxN0UwMEU3RENEQyAvKiBLZXllZEVuY29kZXJDRi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLZXllZEVuY29kZXJDRi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTdCMjVBNzFDQzgyMDMyMDA2MUMwMTEgLyogSURCQ29ubmVj
dGlvblByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQkNv
bm5lY3Rpb25Qcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0IyNUE4
MUNDODIwMzIwMDYxQzAxMSAvKiBJREJDb25uZWN0aW9uUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSURCQ29ubmVjdGlvblByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTUxN0M4NzA4MUY4RUI5QkYwMEVCODA3NiAvKiBTV0NvbnRleHRNYW5hZ2Vy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNXQ29udGV4dE1hbmFn
ZXIuY3BwOyBwYXRoID0gd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5j
cHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKLQkJNTE3Qzg3MDkxRjhFQjlDMDAwRUI4
MDc2IC8qIFNXQ29udGV4dE1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gU1dDb250ZXh0TWFuYWdlci5oOyBwYXRoID0gd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dD
b250ZXh0TWFuYWdlci5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTUxN0M4NzEw
MUY4RUU3MkUwMEVCODA3NiAvKiBTZXJ2aWNlV29ya2VyVGhyZWFkLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IFNlcnZpY2VXb3JrZXJUaHJlYWQuaDsgcGF0aCA9IHdvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaDsgc291cmNlVHJlZSA9IFNPVVJD
RV9ST09UOyB9OwogCQk1MTdDODcxMTFGOEVFNzJGMDBFQjgwNzYgLyogU2VydmljZVdvcmtlclRo
cmVhZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTZXJ2aWNlV29y
a2VyVGhyZWFkLmNwcDsgcGF0aCA9IHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWQuY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTUxN0M4NzE2MUY4
RkQ0RDMwMEVCODA3NiAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5MTA1LDggKzE5MTAxLDYgQEAKIAkJCWNo
aWxkcmVuID0gKAogCQkJCTUxN0M4NzExMUY4RUU3MkYwMEVCODA3NiAvKiBTZXJ2aWNlV29ya2Vy
VGhyZWFkLmNwcCAqLywKIAkJCQk1MTdDODcxMDFGOEVFNzJFMDBFQjgwNzYgLyogU2VydmljZVdv
cmtlclRocmVhZC5oICovLAotCQkJCTUxN0M4NzA4MUY4RUI5QkYwMEVCODA3NiAvKiBTV0NvbnRl
eHRNYW5hZ2VyLmNwcCAqLywKLQkJCQk1MTdDODcwOTFGOEVCOUMwMDBFQjgwNzYgLyogU1dDb250
ZXh0TWFuYWdlci5oICovLAogCQkJKTsKIAkJCXBhdGggPSBjb250ZXh0OwogCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKQEAgLTMwNjAwLDcgKzMwNTk0LDYgQEAKIAkJCQlCMjIyN0FGNjBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHWm9vbUFuZFBhbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJFNEVD
OTgwRDAwQzIyQjAwNDMyNjQzIC8qIFNWR1pvb21FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTE3QTUzMUQxRjRCNTNCMTAwRENEQzBBIC8qIFNXQ2xpZW50Q29ubmVjdGlvbi5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJNTE3Qzg3MEIxRjhFQkIyNTAwRUI4MDc2IC8qIFNXQ29udGV4dE1hbmFnZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUxN0E1MkYwMUY0NzUzNUIwMERDREMwQSAvKiBTV1NlcnZl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGNjQ1OTcxRjRBNjg2RjAwQjU0REVEIC8qIFNXU2Vy
dmVyUmVnaXN0cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTdBNTM0NjFGNTBDMTdGMDBE
Q0RDMEEgLyogU1dTZXJ2ZXJXb3JrZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMzQ0MTEsNyArMzQ0
MDQsNiBAQAogCQkJCUIyMjI3QUY1MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdab29tQW5kUGFuLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUIyRTRFQzk3MEQwMEMyMkIwMDQzMjY0MyAvKiBTVkdab29t
RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE3QTUzMUMxRjRCNTNCMTAwRENEQzBBIC8q
IFNXQ2xpZW50Q29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTdDODcwQTFGOEVC
QjI1MDBFQjgwNzYgLyogU1dDb250ZXh0TWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
MTdBNTJGMTFGNDc1NEU3MDBEQ0RDMEEgLyogU1dTZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTFGNjQ1OTYxRjRBNjg2RjAwQjU0REVEIC8qIFNXU2VydmVyUmVnaXN0cmF0aW9uLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTUxN0E1MzQ1MUY1MEMxN0YwMERDREMwQSAvKiBTV1NlcnZlcldv
cmtlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oCmluZGV4IDMyZjE5YzMwM2ZmMDljMDMzODBhNGYxOTFhMjA0YjAwOWMwYjlm
NjEuLjk2NmQ5ZTdiMjYyMWIxNjBkMGJjNDg3YzFkNzg1NGMyY2E3YTRhZTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtMjMwLDYgKzIzMCwxMSBA
QCBwdWJsaWM6CiAKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlKCk7CiAKKyNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCisgICAgdWludDY0X3Qgc2VsZWN0ZWRTZXJ2aWNlV29ya2VySWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdvcmtlcklkZW50aWZpZXI7IH0KKyAg
ICB2b2lkIHNldFNlbGVjdGVkU2VydmljZVdvcmtlcklkZW50aWZpZXIodWludDY0X3QgaWRlbnRp
ZmllcikgeyBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gaWRlbnRpZmllcjsgfQorI2VuZGlm
CisKIHByb3RlY3RlZDoKICAgICBjbGFzcyBBZGRDb25zb2xlTWVzc2FnZVRhc2sgOiBwdWJsaWMg
VGFzayB7CiAgICAgcHVibGljOgpAQCAtMjk3LDYgKzMwMiw4IEBAIHByaXZhdGU6CiAjaWYgIUFT
U0VSVF9ESVNBQkxFRCB8fCBFTkFCTEUoU0VDVVJJVFlfQVNTRVJUSU9OUykKICAgICBib29sIG1f
YWN0aXZlRE9NT2JqZWN0UmVtb3ZhbEZvcmJpZGRlbiB7IGZhbHNlIH07CiAjZW5kaWYKKworICAg
IHVpbnQ2NF90IG1fc2VydmljZVdvcmtlcklkZW50aWZpZXIgeyAwIH07CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDkwMmM4OWUzOTczN2M0MTE0MWUzNWMyY2U0MmU5MjY2
OTc0MGMyOWUuLjRiNDhmNTFlYzAxNzVmYzZmMDFlZWI0Y2UxYzkxN2JmMjAzZmU4NzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3Bw
CkBAIC0xMDMsNiArMTAzLDExIEBAIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6RG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyKERvY3VtZW50JiBkb2N1bWVudCwgVGhyZWFkYWJsCiB7CiAgICAgcmVs
YXhBZG9wdGlvblJlcXVpcmVtZW50KCk7CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisg
ICAgaWYgKG1fb3B0aW9ucy5zZXJ2aWNlV29ya2Vyc01vZGUgPT0gU2VydmljZVdvcmtlcnNNb2Rl
OjpBbGwgJiYgIW1fb3B0aW9ucy5zZXJ2aWNlV29ya2VySWRlbnRpZmllcikKKyAgICAgICAgbV9v
cHRpb25zLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gZG9jdW1lbnQuc2VsZWN0ZWRTZXJ2aWNl
V29ya2VySWRlbnRpZmllcigpOworI2VuZGlmCisKICAgICAvLyBTZXR0aW5nIGEgcmVmZXJyZXIg
aGVhZGVyIGlzIG9ubHkgc3VwcG9ydGVkIGluIHRoZSBhc3luYyBjb2RlIHBhdGguCiAgICAgQVNT
RVJUKG1fYXN5bmMgfHwgbV9yZWZlcnJlci5pc0VtcHR5KCkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRmV0Y2hPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RmV0Y2hPcHRpb25zLmgKaW5kZXggYTQwNDIwMzA3NzQ0MDQyZjFhYzI3NjJkNjMyMzY5ZjllYWNi
NTEyNC4uNzNiOTYyNGM4NjA5MTZkZWI5OTM3NzRjYWY4MjhmOTc0ZjdkMjE3OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZldGNoT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GZXRjaE9wdGlvbnMuaApAQCAtNjksNiArNjksMjEgQEAgaW5saW5lIEZldGNo
T3B0aW9uczo6RmV0Y2hPcHRpb25zKERlc3RpbmF0aW9uIGRlc3RpbmF0aW9uLCBNb2RlIG1vZGUs
IENyZWRlbnRpYWwKIHsKIH0KIAoraW5saW5lIGJvb2wgaXNQb3RlbnRpYWxOYXZpZ2F0aW9uT3JT
dWJyZXNvdXJjZVJlcXVlc3QoRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbikK
K3sKKyAgICByZXR1cm4gZGVzdGluYXRpb24gPT0gRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6
T2JqZWN0CisgICAgICAgIHx8IGRlc3RpbmF0aW9uID09IEZldGNoT3B0aW9uczo6RGVzdGluYXRp
b246OkVtYmVkOworfQorCitpbmxpbmUgYm9vbCBpc05vblN1YnJlc291cmNlUmVxdWVzdChGZXRj
aE9wdGlvbnM6OkRlc3RpbmF0aW9uIGRlc3RpbmF0aW9uKQoreworICAgIHJldHVybiBkZXN0aW5h
dGlvbiA9PSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpEb2N1bWVudAorICAgICAgICB8fCBk
ZXN0aW5hdGlvbiA9PSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpSZXBvcnQKKyAgICAgICAg
fHwgZGVzdGluYXRpb24gPT0gRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6U2VydmljZXdvcmtl
cgorICAgICAgICB8fCBkZXN0aW5hdGlvbiA9PSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpT
aGFyZWR3b3JrZXIKKyAgICAgICAgfHwgZGVzdGluYXRpb24gPT0gRmV0Y2hPcHRpb25zOjpEZXN0
aW5hdGlvbjo6V29ya2VyOworfQorCiB9CiAKIG5hbWVzcGFjZSBXVEYgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oCmluZGV4IGQyYTkyYzNkM2RjZjgy
ZTU4ZjIyZDAzNWNiYzdmZDBiMjUwNTZmM2UuLjVjNWEwZDQyN2I0ZTk5NjBiYjdjNWM3ZDFmMWZh
Y2U1OWE0NDU0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRlck9wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXJP
cHRpb25zLmgKQEAgLTkyLDYgKzkyLDExIEBAIGVudW0gY2xhc3MgSW5pdGlhdG9yQ29udGV4dCB7
CiAgICAgV29ya2VyLAogfTsKIAorZW51bSBjbGFzcyBTZXJ2aWNlV29ya2Vyc01vZGUgeworICAg
IEFsbCwKKyAgICBOb25lLAorfTsKKwogc3RydWN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyA6IHB1
YmxpYyBGZXRjaE9wdGlvbnMgewogICAgIFJlc291cmNlTG9hZGVyT3B0aW9ucygpIHsgfQogCkBA
IC0xMjQsNiArMTI5LDggQEAgc3RydWN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyA6IHB1YmxpYyBG
ZXRjaE9wdGlvbnMgewogICAgIENhY2hpbmdQb2xpY3kgY2FjaGluZ1BvbGljeSB7IENhY2hpbmdQ
b2xpY3k6OkFsbG93Q2FjaGluZyB9OwogICAgIFNhbWVPcmlnaW5EYXRhVVJMRmxhZyBzYW1lT3Jp
Z2luRGF0YVVSTEZsYWcgeyBTYW1lT3JpZ2luRGF0YVVSTEZsYWc6OlVuc2V0IH07CiAgICAgSW5p
dGlhdG9yQ29udGV4dCBpbml0aWF0b3JDb250ZXh0IHsgSW5pdGlhdG9yQ29udGV4dDo6RG9jdW1l
bnQgfTsKKyAgICBTZXJ2aWNlV29ya2Vyc01vZGUgc2VydmljZVdvcmtlcnNNb2RlIHsgU2Vydmlj
ZVdvcmtlcnNNb2RlOjpBbGwgfTsKKyAgICB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmll
ciB7IDAgfTsKIAogICAgIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBv
bGljeSB7IENsaWVudENyZWRlbnRpYWxQb2xpY3k6OkNhbm5vdEFza0NsaWVudEZvckNyZWRlbnRp
YWxzIH07CiAgICAgdW5zaWduZWQgbWF4UmVkaXJlY3RDb3VudCB7IDIwIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggMzNiYjEy
ZTgxYjhhMWM0OWEwYTg2NzkxYjk1ZGM4YTI1ZTY1YzNlOC4uZTI3YWFhOGRiNGM0YjZhMTM2NWYw
OGNlYWFiNDJlMzg4ZjdhZWEwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dv
cmtlclRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgY29uc3QgY2hh
ciBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5TW9kZVtdID0gImxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHlNbwogV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcihX
b3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUsIFRocmVhZGFibGVMb2FkZXJDbGll
bnQmIGNsaWVudCwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmlu
ZyYgcmVmZXJyZXIpCiAgICAgOiBtX3dvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3Bl
KQogICAgICwgbV93b3JrZXJDbGllbnRXcmFwcGVyKFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFw
cGVyOjpjcmVhdGUoY2xpZW50LCBvcHRpb25zLmluaXRpYXRvcikpCi0gICAgLCBtX2JyaWRnZSgq
bmV3IE1haW5UaHJlYWRCcmlkZ2UobV93b3JrZXJDbGllbnRXcmFwcGVyLmdldCgpLCB3b3JrZXJH
bG9iYWxTY29wZS50aHJlYWQoKS53b3JrZXJMb2FkZXJQcm94eSgpLCB0YXNrTW9kZSwgV1RGTW92
ZShyZXF1ZXN0KSwgb3B0aW9ucywgcmVmZXJyZXIuaXNFbXB0eSgpID8gd29ya2VyR2xvYmFsU2Nv
cGUudXJsKCkuc3RyaXBwZWRGb3JVc2VBc1JlZmVycmVyKCkgOiByZWZlcnJlciwgd29ya2VyR2xv
YmFsU2NvcGUuc2VjdXJpdHlPcmlnaW4oKSwgd29ya2VyR2xvYmFsU2NvcGUuY29udGVudFNlY3Vy
aXR5UG9saWN5KCkpKQorICAgICwgbV9icmlkZ2UoKm5ldyBNYWluVGhyZWFkQnJpZGdlKG1fd29y
a2VyQ2xpZW50V3JhcHBlci5nZXQoKSwgd29ya2VyR2xvYmFsU2NvcGUudGhyZWFkKCkud29ya2Vy
TG9hZGVyUHJveHkoKSwgdGFza01vZGUsIFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMsIHJlZmVy
cmVyLmlzRW1wdHkoKSA/IHdvcmtlckdsb2JhbFNjb3BlLnVybCgpLnN0cmlwcGVkRm9yVXNlQXNS
ZWZlcnJlcigpIDogcmVmZXJyZXIsIHdvcmtlckdsb2JhbFNjb3BlKSkKIHsKIH0KIApAQCAtMTAx
LDEyICsxMDEsMTUgQEAgTG9hZGVyVGFza09wdGlvbnM6OkxvYWRlclRhc2tPcHRpb25zKGNvbnN0
IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBjb24KIH0KIAogV29ya2VyVGhyZWFk
YWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6TWFpblRocmVhZEJyaWRnZShUaHJlYWRhYmxl
TG9hZGVyQ2xpZW50V3JhcHBlciYgd29ya2VyQ2xpZW50V3JhcHBlciwgV29ya2VyTG9hZGVyUHJv
eHkmIGxvYWRlclByb3h5LCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLAotICAgIFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBj
b25zdCBTdHJpbmcmIG91dGdvaW5nUmVmZXJyZXIsCi0gICAgY29uc3QgU2VjdXJpdHlPcmlnaW4q
IHNlY3VyaXR5T3JpZ2luLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3kqIGNvbnRlbnRTZWN1
cml0eVBvbGljeSkKKyAgICBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBUaHJlYWRh
YmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiBvdXRnb2luZ1JlZmVycmVy
LCBXb3JrZXJHbG9iYWxTY29wZSYgZ2xvYmFsU2NvcGUpCiAgICAgOiBtX3dvcmtlckNsaWVudFdy
YXBwZXIoJndvcmtlckNsaWVudFdyYXBwZXIpCiAgICAgLCBtX2xvYWRlclByb3h5KGxvYWRlclBy
b3h5KQogICAgICwgbV90YXNrTW9kZSh0YXNrTW9kZS5pc29sYXRlZENvcHkoKSkKIHsKKworICAg
IGF1dG8qIHNlY3VyaXR5T3JpZ2luID0gZ2xvYmFsU2NvcGUuc2VjdXJpdHlPcmlnaW4oKTsKKyAg
ICBhdXRvKiBjb250ZW50U2VjdXJpdHlQb2xpY3kgPSBnbG9iYWxTY29wZS5jb250ZW50U2VjdXJp
dHlQb2xpY3koKTsKKwogICAgIEFTU0VSVChzZWN1cml0eU9yaWdpbik7CiAgICAgQVNTRVJUKGNv
bnRlbnRTZWN1cml0eVBvbGljeSk7CiAKQEAgLTEyMSw2ICsxMjQsMTEgQEAgV29ya2VyVGhyZWFk
YWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6TWFpblRocmVhZEJyaWRnZShUaHJlYWRhYmxl
TG9hZGVyQ2xpZW4KICAgICBBU1NFUlQob3B0aW9uc0NvcHktPm9wdGlvbnMuaW5pdGlhdG9yQ29u
dGV4dCA9PSBJbml0aWF0b3JDb250ZXh0OjpEb2N1bWVudCk7CiAgICAgb3B0aW9uc0NvcHktPm9w
dGlvbnMuaW5pdGlhdG9yQ29udGV4dCA9IEluaXRpYXRvckNvbnRleHQ6OldvcmtlcjsKIAorI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBvcHRpb25zQ29weS0+b3B0aW9ucy5zZXJ2aWNl
V29ya2Vyc01vZGUgPSBnbG9iYWxTY29wZS5pc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSgpID8g
U2VydmljZVdvcmtlcnNNb2RlOjpOb25lIDogU2VydmljZVdvcmtlcnNNb2RlOjpBbGw7CisgICAg
b3B0aW9uc0NvcHktPm9wdGlvbnMuc2VydmljZVdvcmtlcklkZW50aWZpZXIgPSBnbG9iYWxTY29w
ZS5zZWxlY3RlZFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCk7CisjZW5kaWYKKwogICAgIC8vIENh
biB3ZSBiZW5lZml0IGZyb20gcmVxdWVzdCBiZWluZyBhbiByLXZhbHVlIHRvIGNyZWF0ZSBtb3Jl
IGVmZmljaWVudGx5IGl0cyBpc29sYXRlZCBjb3B5PwogICAgIG1fbG9hZGVyUHJveHkucG9zdFRh
c2tUb0xvYWRlcihbdGhpcywgcmVxdWVzdCA9IHJlcXVlc3QuaXNvbGF0ZWRDb3B5KCksIG9wdGlv
bnMgPSBXVEZNb3ZlKG9wdGlvbnNDb3B5KSwgY29udGVudFNlY3VyaXR5UG9saWN5Q29weSA9IFdU
Rk1vdmUoY29udGVudFNlY3VyaXR5UG9saWN5Q29weSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgKaW5kZXggOTdl
YzJkNDFmOWQ5ZTAxZGNiYjcxNzljNjIzZGI3M2FiMWM1YTM1NC4uMjJhYjE0OWZlZjc0NzM3ZWZi
NjRkYjlkY2M3ZjE2MTBkZjUxZmJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1dvcmtlclRocmVhZGFibGVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29y
a2VyVGhyZWFkYWJsZUxvYWRlci5oCkBAIC04OCw3ICs4OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgY2xhc3MgTWFpblRocmVhZEJyaWRnZSA6IHB1YmxpYyBUaHJlYWRhYmxlTG9h
ZGVyQ2xpZW50IHsKICAgICAgICAgcHVibGljOgogICAgICAgICAgICAgLy8gQWxsIGV4ZWN1dGVk
IG9uIHRoZSB3b3JrZXIgY29udGV4dCdzIHRocmVhZC4KLSAgICAgICAgICAgIE1haW5UaHJlYWRC
cmlkZ2UoVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXImLCBXb3JrZXJMb2FkZXJQcm94eSYs
IGNvbnN0IFN0cmluZyYgdGFza01vZGUsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBUaHJlYWRh
YmxlTG9hZGVyT3B0aW9ucyYsIGNvbnN0IFN0cmluZyYgb3V0Z29pbmdSZWZlcnJlciwgY29uc3Qg
U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3kqKTsKKyAgICAgICAg
ICAgIE1haW5UaHJlYWRCcmlkZ2UoVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXImLCBXb3Jr
ZXJMb2FkZXJQcm94eSYsIGNvbnN0IFN0cmluZyYgdGFza01vZGUsIFJlc291cmNlUmVxdWVzdCYm
LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYsIGNvbnN0IFN0cmluZyYgb3V0Z29pbmdS
ZWZlcnJlciwgV29ya2VyR2xvYmFsU2NvcGUmKTsKICAgICAgICAgICAgIHZvaWQgY2FuY2VsKCk7
CiAgICAgICAgICAgICB2b2lkIGRlc3Ryb3koKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAppbmRleCBiNWU5NDhlYWVl
YzFmZDkwZGRiZTY5OGY5NjZmYmM3ZTg1Y2U5Y2RkLi5kYTZhZDY1ZjExODIwYTUyZWU1NDEyOGYz
NzA3Y2VlMDBmNDE3NDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaApAQCAtMTAwLDcgKzEwMCw3IEBAIHB1YmxpYzoK
IAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBodHRwQ29udGVudFR5cGUoKSBjb25zdDsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEhUVFBDb250ZW50VHlwZShjb25zdCBTdHJpbmcmKTsK
LSAgICB2b2lkIGNsZWFySFRUUENvbnRlbnRUeXBlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBjbGVhckhUVFBDb250ZW50VHlwZSgpOwogCiAgICAgYm9vbCBoYXNIVFRQSGVhZGVyKEhUVFBI
ZWFkZXJOYW1lKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCmluZGV4IGFiY2RjZWFkNzc5Y2FjZGI3NGYy
ZmYyZmI2ZGJhY2JkYjQ5ZWVhM2YuLmVlMzczZGRlZWFhMTUxYTQwODMzZDIxYmMzNjllYjQ0Yzgx
ZTY2NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXNwb25zZUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVzcG9uc2VCYXNlLmgKQEAgLTE1Myw3ICsxNTMsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiAxMjgwOwogICAgIH0KIAotICAgIHZvaWQgc2V0VHlwZShUeXBlKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldFR5cGUoVHlwZSk7CiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlOyB9CiAKICAgICB2b2lkIHNldFJlZGlyZWN0ZWQoYm9vbCBpc1JlZGlyZWN0
ZWQpIHsgbV9pc1JlZGlyZWN0ZWQgPSBpc1JlZGlyZWN0ZWQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlclRocmVhZC5oCmluZGV4IGNmZTM0M2VlZjRhNWFmNWIyNzBjMThiNjg1MDhmMGY2OGM2
YWFiNmMuLjM5NWZkODA0OTk4YzYwYjdjYjUzNzM4OGFlMGZkNGQwNzhlNGRiMmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaApAQCAtNjEsNyArNjEsNyBAQCBjbGFzcyBXb3Jr
ZXJUaHJlYWQgOiBwdWJsaWMgUmVmQ291bnRlZDxXb3JrZXJUaHJlYWQ+IHsKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5Xb3JrZXJUaHJlYWQoKTsKIAotICAgIGJvb2wgc3RhcnQoKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBib29sIHN0YXJ0KCk7CiAgICAgdm9pZCBzdG9wKCk7CiAKICAgICBUaHJlYWRJ
ZGVudGlmaWVyIHRocmVhZElEKCkgY29uc3QgeyByZXR1cm4gbV90aHJlYWQgPyBtX3RocmVhZC0+
aWQoKSA6IDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAppbmRleCBkMzBkYzU3YTZkOGRiMDQwMTgxOTdl
ODYyMWY2Y2EyOTE4ODE4ZGM5Li45NTM0NTE3N2Q3MDI2YjkxNzg2ZWEwMmIzNTU1ZWY5ZjZlZjVh
NWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDb250YWluZXIuY3BwCkBAIC0xNzksNiArMTc5LDkgQEAgdm9pZCBTZXJ2aWNl
V29ya2VyQ29udGFpbmVyOjpqb2JSZXNvbHZlZFdpdGhSZWdpc3RyYXRpb24oU2VydmljZVdvcmtl
ckpvYiYgam9iLAogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgLy8gRklYTUU6IEltcGxl
bWVudCBwcm9wZXIgc2VsZWN0aW9uIG9mIHNlcnZpY2Ugd29ya2Vycy4KKyAgICBjb250ZXh0LT5z
ZXRTZWxlY3RlZFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKGRhdGEuaWRlbnRpZmllcik7CisKICAg
ICBhdXRvIHJlZ2lzdHJhdGlvbiA9IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OmNyZWF0ZSgq
Y29udGV4dCwgZGF0YSk7CiAgICAgam9iLnByb21pc2UoKS5yZXNvbHZlPElETEludGVyZmFjZTxT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uPj4ocmVnaXN0cmF0aW9uLmdldCgpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250
ZXh0TWFuYWdlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0ZmU1N2UzMTIx
NTc3MWM2YTdiODNmNWZkYmI2NjIzZGQ0MmEwYmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU1dDb250ZXh0TWFuYWdlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNXQ29udGV4dE1hbmFn
ZXIuaCIKLQotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLQotI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKLSNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBQQUw7Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotU1dDb250ZXh0TWFuYWdlciYgU1dDb250ZXh0TWFuYWdl
cjo6c2luZ2xldG9uKCkKLXsKLSAgICBzdGF0aWMgU1dDb250ZXh0TWFuYWdlciogc2hhcmVkTWFu
YWdlciA9IG5ldyBTV0NvbnRleHRNYW5hZ2VyOwotICAgIHJldHVybiAqc2hhcmVkTWFuYWdlcjsK
LX0KLQotU1dDb250ZXh0TWFuYWdlcjo6U1dDb250ZXh0TWFuYWdlcigpCi17Ci0KLX0KLQotRXhj
ZXB0aW9uT3I8dWludDY0X3Q+IFNXQ29udGV4dE1hbmFnZXI6OnN0YXJ0U2VydmljZVdvcmtlckNv
bnRleHQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YSYgZGF0YSkKLXsKLSAgICAvLyBGSVhNRTogUHJvdmlkZSBhIHNlbnNp
Y2FsIHNlc3Npb24gSUQKLQotICAgIGF1dG8gdGhyZWFkID0gU2VydmljZVdvcmtlclRocmVhZDo6
Y3JlYXRlKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBkYXRhLCBTZXNzaW9uSUQ6OmRlZmF1
bHRTZXNzaW9uSUQoKSk7Ci0gICAgYXV0byB0aHJlYWRJZGVudGlmaWVyID0gdGhyZWFkLT5pZGVu
dGlmaWVyKCk7Ci0gICAgYXV0byByZXN1bHQgPSBtX3dvcmtlclRocmVhZE1hcC5hZGQodGhyZWFk
SWRlbnRpZmllciwgV1RGTW92ZSh0aHJlYWQpKTsKLSAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50
cnkpOwotCi0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+c3RhcnQoKTsKLSAgICAKLSAgICBM
T0coU2VydmljZVdvcmtlciwgIkNvbnRleHQgcHJvY2VzcyBQSUQ6ICVpIHN0YXJ0ZWQgd29ya2Vy
IHRocmVhZCAlc1xuIiwgZ2V0cGlkKCksIGRhdGEud29ya2VySUQudXRmOCgpLmRhdGEoKSk7Ci0g
ICAgCi0gICAgcmV0dXJuIHRocmVhZElkZW50aWZpZXI7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTE1ZDdlNjk4MjMyMTQ3MjMwYjQ3NmFm
YjgzMWU0OGEwZjIwZTMwNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRN
YW5hZ2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3By
YWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0KLSNpbmNsdWRlICJFeGNl
cHRpb25Pci5oIgotI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUaHJlYWQuaCIKLSNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGE7Ci0KLWNsYXNzIFNXQ29udGV4dE1hbmFnZXIgewotcHVibGljOgotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTV0NvbnRleHRNYW5hZ2VyJiBzaW5nbGV0b24oKTsKLQot
ICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHVpbnQ2NF90PiBzdGFydFNlcnZpY2VXb3Jr
ZXJDb250ZXh0KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEmKTsKLQotcHJpdmF0ZToKLSAgICBTV0NvbnRleHRNYW5hZ2Vy
KCk7Ci0gICAgCi0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFNlcnZpY2VXb3JrZXJUaHJl
YWQ+PiBtX3dvcmtlclRocmVhZE1hcDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaApp
bmRleCAyMmEwN2I4OWY1OWNlNTgwNDJhYjA1Mjc5YTlhYjA5OGU4YTQ1OTYwLi44ZGJhNDg5ODg5
M2I3MDA0NGI1ZTdmNjJmNzI2YTJkZjBjZGY5NTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5o
CkBAIC01Miw3ICs1Miw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHJ1bkV2ZW50TG9vcCgpIG92
ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIFNlcnZpY2VXb3JrZXJUaHJlYWQodWludDY0X3Qgc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYs
IFBBTDo6U2Vzc2lvbklEKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTZXJ2aWNlV29ya2VyVGhyZWFk
KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEmLCBQQUw6OlNlc3Npb25JRCk7CiAKICAgICB1aW50NjRfdCBtX3NlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyOwogICAgIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBtX2RhdGE7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgK
aW5kZXggMWMxYTJjOTJlODY3YjM4MTNkOTFjZTFmZjgzZjJiYThjY2QwMWExNi4uNmYwZTkzN2Jl
ZDc0ZWUyMDQ5YWVjNjVhZGRjODNmN2ViMTVkOGYxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaApAQCAtNDAsOSArNDAsMTEgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBTV1Nl
cnZlclJlZ2lzdHJhdGlvbjsKIGNsYXNzIFNXU2VydmVyV29ya2VyOwogc3RydWN0IEV4Y2VwdGlv
bkRhdGE7CitzdHJ1Y3QgRmV0Y2hPcHRpb25zOwogc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YTsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQ7CiBzdHJ1Y3QgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRT
b3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggYmE0
NGNiYTJjYmJkOGQ2NzliNGRiNDI0NDk1ZGY4Mzg1MWM1NDhjMy4uMDhiODA5YTIzMDhhOWI3ZTBj
MzM2OGViZmJiN2Q1MDJhZjhlODc0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVk
U291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAt
MTI1LDYgKzEyNSw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFJlbW90ZVdlYkluc3Bl
Y3RvclByb3h5IFwKICAgICBSZW1vdGVXZWJJbnNwZWN0b3JVSSBcCiAgICAgU2VjSXRlbVNoaW1Q
cm94eSBcCisgICAgU2VydmljZVdvcmtlckNsaWVudEZldGNoIFwKICAgICBTbWFydE1hZ25pZmlj
YXRpb25Db250cm9sbGVyIFwKICAgICBTdG9yYWdlQXJlYU1hcCBcCiAgICAgU3RvcmFnZU1hbmFn
ZXIgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCA3Mjk3ZjRi
NTNlODc1N2Q5NjM2MmQ4OWRkNmM2Njk1MmFkNTYwOTllLi4xMGNjYmE1MmYzOTE4N2I2YzFiYjcw
NzExMGYwOTkzYWRhYjFmNzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
LmNwcApAQCAtMzAsOCArMzAsMTAgQEAKIAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJTdG9yYWdlUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VU
b1dlYlByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1l
bnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU1dDbGllbnRDb25uZWN0aW9uTWVzc2FnZXMuaCIK
QEAgLTkyLDYgKzk0LDMxIEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzdGFydFNlcnZp
Y2VXb3JrZXJDb250ZXh0KGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0CiAgICAgbV9wZW5kaW5n
Q29udGV4dERhdGFzLmFwcGVuZChkYXRhKTsKIH0KIAordm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rp
b246OnN0YXJ0RmV0Y2godWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCB1aW50NjRfdCBzZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBG
ZXRjaE9wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgc2VuZFRvQ29udGV4dFByb2Nlc3MoTWVzc2Fn
ZXM6OldlYlByb2Nlc3M6OlN0YXJ0RmV0Y2hJblNlcnZpY2VXb3JrZXIoaWRlbnRpZmllcigpLCBm
ZXRjaElkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCByZXF1ZXN0LCBvcHRpb25z
KSk7Cit9CisKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpkaWRSZWNlaXZlRmV0Y2hSZXNw
b25zZSh1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKQoreworICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UgfSwgZmV0
Y2hJZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmRpZFJlY2Vp
dmVGZXRjaERhdGEodWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCit7CisgICAgbV9jb250ZW50
Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRS
ZWNlaXZlRGF0YSB7IGRhdGEsIGVuY29kZWREYXRhTGVuZ3RoIH0sIGZldGNoSWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpkaWRGaW5pc2hGZXRjaCh1aW50NjRf
dCBmZXRjaElkZW50aWZpZXIpCit7CisgICAgbV9jb250ZW50Q29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRGaW5pc2ggeyB9LCBmZXRjaElkZW50
aWZpZXIpOworfQorCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6ZGlkRmFpbEZldGNoKHVp
bnQ2NF90IGZldGNoSWRlbnRpZmllcikKK3sKKyAgICBtX2NvbnRlbnRDb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZEZhaWwgeyB9LCBmZXRjaElk
ZW50aWZpZXIpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIFdlYlNXU2VydmVyQ29u
bmVjdGlvbjo6c2VuZFRvQ29udGV4dFByb2Nlc3MoVSYmIG1lc3NhZ2UpCiB7CiAgICAgaWYgKCFt
X2NvbnRleHRDb25uZWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktp
dC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCmlu
ZGV4IGRjYzQ5NjE2NTJhM2Q3MWI2Zjk4NDY0MzFkNzM3NmI4ZmM1NTUyMjMuLmFlM2EyNWQzY2Vm
NjA1NjFhNTI5YzBkZjliNTk3NDgwMDgzNTA4MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmgKQEAgLTUxLDE1ICs1MSwyMiBAQCBwdWJsaWM6CiAKICAgICBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQogCisgICAgdm9p
ZCBkaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSh1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVGZXRjaERh
dGEodWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBp
bnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRpZEZpbmlzaEZldGNoKHVpbnQ2
NF90IGZldGNoSWRlbnRpZmllcik7CisgICAgdm9pZCBkaWRGYWlsRmV0Y2godWludDY0X3QgZmV0
Y2hJZGVudGlmaWVyKTsKKwogcHJpdmF0ZToKICAgICAvLyBJbXBsZW1lbnQgU1dTZXJ2ZXI6OkNv
bm5lY3Rpb24gKE1lc3NhZ2VzIHRvIHRoZSBjbGllbnQgV2ViUHJvY2VzcykKICAgICB2b2lkIHJl
amVjdEpvYkluQ2xpZW50KHVpbnQ2NF90IGpvYklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkV4
Y2VwdGlvbkRhdGEmKSBmaW5hbDsKICAgICB2b2lkIHJlc29sdmVKb2JJbkNsaWVudCh1aW50NjRf
dCBqb2JJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGF0YSYpIGZpbmFsOwogICAgIHZvaWQgc3RhcnRTY3JpcHRGZXRjaEluQ2xpZW50KHVpbnQ2NF90
IGpvYklkZW50aWZpZXIpIGZpbmFsOwogCisgICAgdm9pZCBzdGFydEZldGNoKHVpbnQ2NF90IGZl
dGNoSWRlbnRpZmllciwgdWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OkZldGNoT3B0aW9ucyYpOwor
CiAgICAgLy8gTWVzc2FnZXMgdG8gdGhlIFNXIGNvbnRleHQgV2ViUHJvY2VzcwogICAgIHZvaWQg
c3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEmKSBmaW5hbDsKLSAgICAKKwogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNl
bmRlckNvbm5lY3Rpb24oKSBmaW5hbCB7IHJldHVybiBtX2NvbnRlbnRDb25uZWN0aW9uLnB0cigp
OyB9CiAgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBmaW5hbCB7IHJl
dHVybiBpZGVudGlmaWVyKCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdl
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNv
bm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggZTRjZmI5NjA1YTZjZTUwMTkyMTZmMjFjZjZkNjkx
N2JlYjMwMmRjMC4uZjNkYjNiOTBkYWU5M2E5MjZkZjViYmRlYTFhMzc3OTUzNDY2NDkxMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBA
IC0yNiw2ICsyNiw4IEBAIG1lc3NhZ2VzIC0+IFdlYlNXU2VydmVyQ29ubmVjdGlvbiB7CiAgICAg
IyBXaGVuIHBvc3NpYmxlLCB0aGVzZSBtZXNzYWdlcyBjYW4gYmUgaW1wbGVtZW50ZWQgZGlyZWN0
bHkgYnkgV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uCiAgICAgU2NoZWR1bGVKb2JJblNlcnZl
cihzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGEgam9iRGF0YSkKICAgICBGaW5p
c2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0
Y2hSZXN1bHQgcmVzdWx0KQorCisgICAgU3RhcnRGZXRjaCh1aW50NjRfdCBpZGVudGlmaWVyLCB1
aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
IHJlcXVlc3QsIHN0cnVjdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMgb3B0aW9ucykKIH0KIAogI2Vu
ZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdl
UHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAKaW5kZXggOTk1OTZmMzUxM2E0YmM2MjA1ZjYzYzll
NzNiMDZiOTliNTA4YWJjOS4uNzg5NTAzNTRhZTkwMGMyN2JhNjk3OGZjODFmYzA4Y2FmZDM3NTRh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5j
cHAKQEAgLTQwNSw2ICs0MDUsMzAgQEAgdm9pZCBTdG9yYWdlUHJvY2Vzczo6c2VydmljZVdvcmtl
ckNvbnRleHRTdGFydGVkKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGkKICAgICAgICAg
Y29ubmVjdGlvbi0+c2NyaXB0Q29udGV4dFN0YXJ0ZWQocmVnaXN0cmF0aW9uS2V5LCBpZGVudGlm
aWVyLCB3b3JrZXJJRCk7CiB9CiAKK3ZvaWQgU3RvcmFnZVByb2Nlc3M6OmRpZEZhaWxGZXRjaCh1
aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlm
aWVyKQoreworICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gbV9zd1NlcnZlckNvbm5lY3Rpb25z
LmdldChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIGNvbm5lY3Rpb24tPmRp
ZEZhaWxGZXRjaChmZXRjaElkZW50aWZpZXIpOworfQorCit2b2lkIFN0b3JhZ2VQcm9jZXNzOjpk
aWRSZWNlaXZlRmV0Y2hSZXNwb25zZSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKK3sKKyAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IG1fc3dTZXJ2ZXJD
b25uZWN0aW9ucy5nZXQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpKQorICAgICAgICBjb25u
ZWN0aW9uLT5kaWRSZWNlaXZlRmV0Y2hSZXNwb25zZShmZXRjaElkZW50aWZpZXIsIHJlc3BvbnNl
KTsKK30KKwordm9pZCBTdG9yYWdlUHJvY2Vzczo6ZGlkUmVjZWl2ZUZldGNoRGF0YSh1aW50NjRf
dCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgp
Cit7CisgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBtX3N3U2VydmVyQ29ubmVjdGlvbnMuZ2V0
KHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgY29ubmVjdGlvbi0+ZGlkUmVj
ZWl2ZUZldGNoRGF0YShmZXRjaElkZW50aWZpZXIsIGRhdGEsIGVuY29kZWREYXRhTGVuZ3RoKTsK
K30KKwordm9pZCBTdG9yYWdlUHJvY2Vzczo6ZGlkRmluaXNoRmV0Y2godWludDY0X3Qgc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcikKK3sKKyAgICBp
ZiAoYXV0byogY29ubmVjdGlvbiA9IG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5nZXQoc2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIpKQorICAgICAgICBjb25uZWN0aW9uLT5kaWRGaW5pc2hGZXRjaChm
ZXRjaElkZW50aWZpZXIpOworfQorCiB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpyZWdpc3RlclNXU2Vy
dmVyQ29ubmVjdGlvbihXZWJTV1NlcnZlckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7CiAgICAg
QVNTRVJUKCFtX3N3U2VydmVyQ29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlvbi5pZGVudGlm
aWVyKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFn
ZVByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3Mu
aAppbmRleCBkNGNlNTExNzE5N2U1YzBhZDRiY2U5MDI0NzNiYmRmN2RlZWE5ZDhmLi5jZmQ0YmMx
YzQwMGJmOGU3NjEyYTgyMTJhNWVkNmVmOWVjNTVlYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCkBAIC0xMTksNiArMTE5LDExIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaWRHZXRXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3Qg
SVBDOjpBdHRhY2htZW50JiBlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIpOwogICAgIHZvaWQg
c2VydmljZVdvcmtlckNvbnRleHRGYWlsZWRUb1N0YXJ0KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
JiwgY29uc3QgU3RyaW5nJiB3b3JrZXJJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICB2
b2lkIHNlcnZpY2VXb3JrZXJDb250ZXh0U3RhcnRlZCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYs
IHVpbnQ2NF90IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgd29ya2VySUQpOworCisgICAgdm9p
ZCBkaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJik7CisgICAgdm9pZCBkaWRSZWNlaXZlRmV0Y2hEYXRhKHVpbnQ2NF90IHNlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGlk
RmluaXNoRmV0Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90
IGZldGNoSWRlbnRpZmllcik7CisgICAgdm9pZCBkaWRGYWlsRmV0Y2godWludDY0X3Qgc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcik7CiAjZW5kaWYK
ICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBWZWN0b3I8V2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhPiBpbmRleGVkRGF0YWJhc2VPcmlnaW5zKGNvbnN0IFN0cmluZyYgcGF0aCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNz
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vz
cy5tZXNzYWdlcy5pbgppbmRleCBlZTYyOGQ1Mzc3Y2I1NmQyNjUwMThjZWZkM2EyMTA4MDVlOWI0
MmYyLi4yMDY0ZDY5YmVkYTc3ZGZlNzdjYTZjYTU5NzNmNTM4YjBmODQyYjYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MubWVzc2Fn
ZXMuaW4KQEAgLTM3LDcgKzM3LDEzIEBAIG1lc3NhZ2VzIC0+IFN0b3JhZ2VQcm9jZXNzIExlZ2Fj
eVJlY2VpdmVyIHsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBEaWRHZXRXb3Jr
ZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25IYW5k
bGUpCisKICAgICBTZXJ2aWNlV29ya2VyQ29udGV4dEZhaWxlZFRvU3RhcnQodWludDY0X3Qgc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5IHJlZ2lzdHJhdGlvbktleSwgU3RyaW5nIHdvcmtlcklELCBTdHJpbmcgbWVz
c2FnZSkKICAgICBTZXJ2aWNlV29ya2VyQ29udGV4dFN0YXJ0ZWQodWludDY0X3Qgc2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5IHJlZ2lzdHJhdGlvbktleSwgdWludDY0X3QgaWRlbnRpZmllciwgU3RyaW5nIHdvcmtl
cklEKQorCisgICAgRGlkRmFpbEZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIpCisgICAgRGlkUmVjZWl2ZUZldGNoUmVzcG9u
c2UodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRl
bnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKKyAgICBEaWRSZWNl
aXZlRmV0Y2hEYXRhKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRf
dCBmZXRjaElkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhLCBpbnQ2NF90IGVuY29k
ZWREYXRhTGVuZ3RoKQorICAgIERpZEZpbmlzaEZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIpCiAjZW5kaWYKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDhiODY5
NTBjMTgxMTZmNjAxYzk4ZDFjODY2NTU2MmI0NjI0YWIyMjIuLmExY2I3Y2MyY2MxZGZhMWI3NzMz
YWNlOWNiNzU0Yjg3YzIyNmQxNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODkwLDYgKzg5MCw5IEBACiAJCTQxMzA3NUIyMURFODVG
NTgwMDM5RUM2OSAvKiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTMwNzVBNjFERTg1RUU3MDAzOUVDNjkgLyog
TGliV2ViUlRDU29ja2V0RmFjdG9yeS5oICovOyB9OwogCQk0MTMwNzVCMzFERTg1RjU4MDAzOUVD
NjkgLyogTGliV2ViUlRDUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDEzMDc1QTcxREU4NUVFNzAwMzlFQzY5IC8qIExpYldlYlJUQ1By
b3ZpZGVyLmNwcCAqLzsgfTsKIAkJNDEzMDc1QjQxREU4NUY1ODAwMzlFQzY5IC8qIExpYldlYlJU
Q1Byb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTMwNzVBODFERTg1RUU3MDAzOUVDNjkgLyogTGliV2ViUlRDUHJvdmlkZXIuaCAqLzsgfTsK
KwkJNDEzMUYzRDExRjk2QkNDQzAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTMxRjNE
MDFGOTZCQ0M4MDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoLmNwcCAqLzsgfTsK
KwkJNDEzMUYzRDQxRjk2RTkzNTAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTMx
RjNEMzFGOTZFOTMxMDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcCAq
LzsgfTsKKwkJNDEzMUYzRDUxRjk2RTkzNTAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0
TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDEzMUYzRDIxRjk2RTkzMDAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5o
ICovOyB9OwogCQk0MTM1RkJEMTFGNEZCODA5MDA3NEM0N0IgLyogQ2FjaGVTdG9yYWdlRW5naW5l
Q2FjaGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxMzVGQkNGMUY0RkI3RjIwMDc0QzQ3QiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3Bw
ICovOyB9OwogCQk0MTg5N0VDRjFGNDE1RDYyMDAxNkZBNDIgLyogV2ViQ2FjaGVTdG9yYWdlQ29u
bmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTg5N0VDRTFGNDE1RDVDMDAxNkZBNDIgLyogV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5j
cHAgKi87IH07CiAJCTQxODk3RUQwMUY0MTVENjUwMDE2RkE0MiAvKiBXZWJDYWNoZVN0b3JhZ2VQ
cm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTg5N0VDQzFGNDE1RDVDMDAxNkZBNDIgLyogV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuY3Bw
ICovOyB9OwpAQCAtMTAyOSw3ICsxMDMyLDkgQEAKIAkJNTE3OTU1NkExNjI4NzZGMzAwRkE0M0I2
IC8qIE5ldHdvcmtQcm9jZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTBDQzdFMDE2MTM4RTI5MDBEMDNFRDMgLyogTmV0d29ya1Byb2Nlc3MuaCAq
LzsgfTsKIAkJNTE3OTU1NkQxNjI4NzdCMTAwRkE0M0I2IC8qIE5ldHdvcmtQcm9jZXNzUHJveHku
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwQ0M3
RUExNjEzOEU3MjAwRDAzRUQzIC8qIE5ldHdvcmtQcm9jZXNzUHJveHkuY3BwICovOyB9OwogCQk1
MTc5NTU2RTE2Mjg3N0IzMDBGQTQzQjYgLyogTmV0d29ya1Byb2Nlc3NQcm94eS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwQ0M3RUIxNjEzOEU3MjAw
RDAzRUQzIC8qIE5ldHdvcmtQcm9jZXNzUHJveHkuaCAqLzsgfTsKKwkJNjE3QTUyRDgxRjQzQTlE
QTAwRENEQzBBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MTdBNTJENzFG
NDNBOUI2MDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoQ29ubmVjdGlvbk1lc3Nh
Z2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTUxN0E1MkQ4MUY0M0E5REEwMERDREMwQSAvKiBXZWJT
V1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3QTUyRDcxRjQzQTlCNjAwRENEQzBBIC8qIFdl
YlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCTYxN0E1MkQ5
MUY0M0E5REEwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjE3QTUyRDYxRjQz
QTlCNjAwRENEQzBBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VzLmggKi87IH07
CiAJCTUxN0E1MkQ5MUY0M0E5REEwMERDREMwQSAvKiBXZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNz
YWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3
QTUyRDYxRjQzQTlCNjAwRENEQzBBIC8qIFdlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgg
Ki87IH07CiAJCTUxN0E1MzA0MUY0NzkzQzYwMERDREMwQSAvKiBXZWJTV0NsaWVudENvbm5lY3Rp
b24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3
QTUzMDMxRjQ3OTNCMjAwRENEQzBBIC8qIFdlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAgKi87IH07
CiAJCTUxN0E1MzA1MUY0NzkzQzYwMERDREMwQSAvKiBXZWJTV0NsaWVudENvbm5lY3Rpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0E1MzAyMUY0
NzkzQjIwMERDREMwQSAvKiBXZWJTV0NsaWVudENvbm5lY3Rpb24uaCAqLzsgfTsKQEAgLTMxNzgs
NiArMzE4MywxMSBAQAogCQk0MTMwNzVBNjFERTg1RUU3MDAzOUVDNjkgLyogTGliV2ViUlRDU29j
a2V0RmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJXZWJSVENT
b2NrZXRGYWN0b3J5Lmg7IHBhdGggPSBOZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2NrZXRGYWN0
b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzA3NUE3MURFODVFRTcwMDM5
RUM2OSAvKiBMaWJXZWJSVENQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IGxpbmVFbmRpbmcgPSAwOyBuYW1lID0gTGliV2ViUlRDUHJvdmlkZXIuY3BwOyBwYXRoID0g
TmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLmNwcDsg
fTsKIAkJNDEzMDc1QTgxREU4NUVFNzAwMzlFQzY5IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbGluZUVuZGluZyA9IDA7IG5hbWUgPSBMaWJXZWJSVENQ
cm92aWRlci5oOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0g
eGNvZGUubGFuZy5vYmpjcHA7IH07CisJCTQxMzFGM0NFMUY5NkE0OTUwMDU5OTk1QSAvKiBTZXJ2
aWNlV29ya2VyQ2xpZW50RmV0Y2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2VydmljZVdvcmtlckNsaWVudEZldGNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQxMzFGM0NGMUY5NkE5MzYwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gubWVz
c2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2VydmljZVdvcmtlckNsaWVudEZldGNo
Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTMxRjNEMDFGOTZC
Q0M4MDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMzFGM0QyMUY5NkU5MzAwMDU5OTk1QSAvKiBT
ZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQxMzFGM0QzMUY5NkU5MzEwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ29udGV4
dE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Vydmlj
ZVdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDEzNUZCQ0YxRjRGQjdGMjAwNzRDNDdCIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZVN0b3JhZ2VFbmdpbmVD
YWNoZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTM1RkJEMDFGNEZCN0Yy
MDA3NEM0N0IgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTg5N0VDQjFGNDE1RDVDMDAxNkZBNDIgLyogV2ViQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzMzNCw3ICszMzQ0
LDkgQEAKIAkJNTE2QTRBNUIxMjBBMkNDRDAwQzA1QjdGIC8qIEFQSUVycm9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxN0EzM0IzMTMwQjMwOEMwMEY4MENCNSAvKiBXS0FwcGxpY2F0aW9uQ2FjaGVN
YW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLQXBwbGlj
YXRpb25DYWNoZU1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdB
MzNCNDEzMEIzMDhDMDBGODBDQjUgLyogV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTYxN0E1MkQ2MUY0M0E5QjYwMERDREMwQSAv
KiBTZXJ2aWNlV29ya2VyRmV0Y2hDbGllbnRNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTdBNTJENjFGNDNBOUI2MDBEQ0RDMEEgLyogV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNjE3QTUyRDcxRjQzQTlCNjAwRENEQzBBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRj
aE1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTdBNTJENzFGNDNBOUI2MDBEQ0RDMEEgLyogV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0E1MzAyMUY0NzkzQjIwMERDREMwQSAvKiBX
ZWJTV0NsaWVudENvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViU1dDbGllbnRDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
N0E1MzAzMUY0NzkzQjIwMERDREMwQSAvKiBXZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU1dDbGllbnRDb25uZWN0aW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYxNjgsNiArNjE4MCwxMSBAQAogCQk1
MTE4RTk5ODFGMjk1MjU5MDAzRUY5RjUgLyogU3RvcmFnZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDEzMUYzRDAxRjk2QkNDODAwNTk5OTVBIC8qIFNl
cnZpY2VXb3JrZXJDbGllbnRGZXRjaC5jcHAgKi8sCisJCQkJNDEzMUYzQ0UxRjk2QTQ5NTAwNTk5
OTVBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5oICovLAorCQkJCTQxMzFGM0NGMUY5NkE5
MzYwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gubWVzc2FnZXMuaW4gKi8sCisJ
CQkJNDEzMUYzRDMxRjk2RTkzMTAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdl
ci5jcHAgKi8sCisJCQkJNDEzMUYzRDIxRjk2RTkzMDAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJD
b250ZXh0TWFuYWdlci5oICovLAogCQkJCTUxQkVCNjI5MUYzQTVBQ0QwMDUwMjlCOSAvKiBXZWJT
ZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwICovLAogCQkJCTUxQkVCNjJBMUYzQTVBQ0QwMDUwMjlC
OSAvKiBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCAqLywKIAkJCQk1MTdBNTMwMzFGNDc5M0Iy
MDBEQ0RDMEEgLyogV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcCAqLywKQEAgLTgwMTAsNiArODAy
Nyw3IEBACiAJCQkJMUJCQkU0OUUxOUI2NkM1MzAwNkI3RDgxIC8qIFJlbW90ZVdlYkluc3BlY3Rv
clVJTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQlFMThFNjkxMzE2OUI2NjdCMDA5QjY2NzAg
LyogU2VjSXRlbVNoaW1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJRTE4RTY5MTQx
NjlCNjY3QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHlNZXNzYWdlcy5oICovLAorCQkJCTYx
N0E1MkQ3MUY0M0E5QjYwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hDb25uZWN0
aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkyREU2OTQzQjE4QkQyQTY4MDA1QzE1RTUg
LyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJ
CQkJMkRFNjk0M0MxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xs
ZXJNZXNzYWdlcy5oICovLAogCQkJCTFBMzM0REVCMTZERThGODgwMDZBOEUzOCAvKiBTdG9yYWdl
QXJlYU1hcE1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCkBAIC04NzgxLDYgKzg3OTksNyBAQAogCQkJ
CUUxOEU2OTBDMTY5QjU2M0YwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFMThFNjkxODE2OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eU1l
c3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTREOUY1NzE5MTE5RDM1MDAwMDYzQTcgLyog
U2VydmljZXNDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTMxRjNENTFGOTZFOTM1
MDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQUZERTY1QTE5NTRBNDJCMDBDNDhGRkEgLyogU2Vzc2lvblN0YXRlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQTAwMkQ0OTE5NkIzNDVEMDBCOUFENDQgLyogU2Vzc2lvblN0YXRlQ29kaW5n
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3NTNFM0UwRTE4ODczOTg5MDAxODg0OTYgLyogU2Vzc2lv
blRyYWNrZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTAzNzAsNiArMTAzODksOSBAQAogCQkJCUUx
OEU2OTBCMTY5QjU2M0YwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUUxOEU2OTE3MTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNEQ5RjU4MTkxMTlEMzUwMDAw
NjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQk0MTMxRjNE
MTFGOTZCQ0NDMDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTYxN0E1MkQ4MUY0M0E5REEwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyQ2xp
ZW50RmV0Y2hDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTQxMzFGM0Q0MUY5NkU5MzUwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFGREU2NTkxOTU0QTQyQjAwQzQ4RkZBIC8qIFNlc3Np
b25TdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTAwMkQ0ODE5NkIzNDVEMDBCOUFENDQg
LyogU2Vzc2lvblN0YXRlQ29kaW5nLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE3Mjg0NDgxOTU5
RjgwNDAwMDdCQ0U1IC8qIFNlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJT
dHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJT
dHJhdGVneS5jcHAKaW5kZXggYjg5NWQwYjhmYTMxY2UwMTY2ZDJhNDBkYmM5NDkxZjA4MTQzNWJi
MS4uNTU3ZmJjOGEyMjQ3ZjQ2NTEwODdkZjcyZjM4NGY2YWY4OTRmOGMwNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNw
cApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZGVyLmgiCisj
aW5jbHVkZSAiV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV2ViVVJMU2No
ZW1lSGFuZGxlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViVVJMU2NoZW1lVGFza1Byb3h5LmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oPgpAQCAtMjE1LDYgKzIxNiwy
OSBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXIm
IHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogICAgICAgICB9CiAgICAgfQogCisjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xl
dG9uKCkuaGFuZGxlRmV0Y2gocmVzb3VyY2VMb2FkZXIsIHJlc291cmNlLCB3ZWJQYWdlID8gd2Vi
UGFnZS0+c2Vzc2lvbklEKCkgOiBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBb
dHJhY2tpbmdQYXJhbWV0ZXJzLCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGly
ZWN0LCBtYXhpbXVtQnVmZmVyaW5nVGltZSA9IG1heGltdW1CdWZmZXJpbmdUaW1lKHJlc291cmNl
KSwgcmVzb3VyY2VMb2FkZXIgPSBtYWtlUmVmKHJlc291cmNlTG9hZGVyKV0gKFNlcnZpY2VXb3Jr
ZXJDbGllbnRGZXRjaFJlc3VsdCByZXN1bHQpIG11dGFibGUgeworICAgICAgICBpZiAocmVzdWx0
ICE9IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaFJlc3VsdDo6Tm9uZSkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2Vi
TG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwgdXJsICclcycgd2lsbCBiZSBzY2hlZHVsZWQg
dGhyb3VnaCBTZXJ2aWNlV29ya2VyIGhhbmRsZSBmZXRjaCBhbGdvcml0aG0iLCByZXNvdXJjZUxv
YWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKKyAgICAgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkud2ViTG9hZGVyU3RyYXRlZ3koKS5zY2hlZHVsZUxvYWRGcm9tTmV0d29y
a1Byb2Nlc3MocmVzb3VyY2VMb2FkZXIuZ2V0KCksIHJlc291cmNlTG9hZGVyLT5vcmlnaW5hbFJl
cXVlc3QoKSwgV1RGTW92ZSh0cmFja2luZ1BhcmFtZXRlcnMpLCBzaG91bGRDbGVhclJlZmVycmVy
T25IVFRQU1RvSFRUUFJlZGlyZWN0LCBtYXhpbXVtQnVmZmVyaW5nVGltZSk7CisgICAgfSk7Cisj
ZWxzZQorICAgIExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJMb2FkZXJT
dHJhdGVneTo6c2NoZWR1bGVMb2FkLCB1cmwgJyVzJyB3aWxsIGJlIHNjaGVkdWxlZCB0aHJvdWdo
IFNlcnZpY2VXb3JrZXIgaGFuZGxlIGZldGNoIGFsZ29yaXRobSIsIHJlc291cmNlTG9hZGVyLnVy
bCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7CisgICAgc2NoZWR1bGVMb2FkRnJvbU5ldHdv
cmtQcm9jZXNzKHJlc291cmNlTG9hZGVyLCByZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCksIHRyYWNr
aW5nUGFyYW1ldGVycywgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwg
bWF4aW11bUJ1ZmZlcmluZ1RpbWUocmVzb3VyY2UpKTsKKyNlbmRpZgorfQorCit2b2lkIFdlYkxv
YWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MoUmVzb3VyY2VMb2Fk
ZXImIHJlc291cmNlTG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFdlYlJlc291cmNlTG9hZGVyOjpUcmFja2luZ1BhcmFtZXRlcnMmIHRyYWNraW5nUGFyYW1ldGVy
cywgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBTZWNvbmRz
IG1heGltdW1CdWZmZXJpbmdUaW1lKQoreworICAgIFJlc291cmNlTG9hZElkZW50aWZpZXIgaWRl
bnRpZmllciA9IHJlc291cmNlTG9hZGVyLmlkZW50aWZpZXIoKTsKKyAgICBBU1NFUlQoaWRlbnRp
Zmllcik7CisKKyAgICBXZWJGcmFtZUxvYWRlckNsaWVudCogd2ViRnJhbWVMb2FkZXJDbGllbnQg
PSB0b1dlYkZyYW1lTG9hZGVyQ2xpZW50KHJlc291cmNlTG9hZGVyLmZyYW1lTG9hZGVyKCktPmNs
aWVudCgpKTsKKyAgICBXZWJGcmFtZSogd2ViRnJhbWUgPSB3ZWJGcmFtZUxvYWRlckNsaWVudCA/
IHdlYkZyYW1lTG9hZGVyQ2xpZW50LT53ZWJGcmFtZSgpIDogbnVsbHB0cjsKKyAgICBXZWJQYWdl
KiB3ZWJQYWdlID0gd2ViRnJhbWUgPyB3ZWJGcmFtZS0+cGFnZSgpIDogbnVsbHB0cjsKKwogICAg
IExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6
c2NoZWR1bGVMb2FkLCB1cmwgJyVzJyB3aWxsIGJlIHNjaGVkdWxlZCB3aXRoIHRoZSBOZXR3b3Jr
UHJvY2VzcyB3aXRoIHByaW9yaXR5ICVkIiwgcmVzb3VyY2VMb2FkZXIudXJsKCkuc3RyaW5nKCku
bGF0aW4xKCkuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9hZGVyLnJlcXVlc3Qo
KS5wcmlvcml0eSgpKSk7CiAKICAgICBDb250ZW50U25pZmZpbmdQb2xpY3kgY29udGVudFNuaWZm
aW5nUG9saWN5ID0gcmVzb3VyY2VMb2FkZXIuc2hvdWxkU25pZmZDb250ZW50KCkgPyBTbmlmZkNv
bnRlbnQgOiBEb05vdFNuaWZmQ29udGVudDsKQEAgLTIyNSw3ICsyNDksNyBAQCB2b2lkIFdlYkxv
YWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVy
LCBDYWNoZWRSZXNvdQogICAgIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRCA9IHdlYlBhZ2UgPyB3
ZWJQYWdlLT5wYWdlSUQoKSA6IDA7CiAgICAgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRCA9IHdl
YkZyYW1lID8gd2ViRnJhbWUtPmZyYW1lSUQoKSA6IDA7CiAgICAgbG9hZFBhcmFtZXRlcnMuc2Vz
c2lvbklEID0gd2ViUGFnZSA/IHdlYlBhZ2UtPnNlc3Npb25JRCgpIDogUEFMOjpTZXNzaW9uSUQ6
OmRlZmF1bHRTZXNzaW9uSUQoKTsKLSAgICBsb2FkUGFyYW1ldGVycy5yZXF1ZXN0ID0gcmVzb3Vy
Y2VMb2FkZXIucmVxdWVzdCgpOworICAgIGxvYWRQYXJhbWV0ZXJzLnJlcXVlc3QgPSByZXF1ZXN0
OwogICAgIGxvYWRQYXJhbWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1BvbGljeSA9IGNvbnRlbnRTbmlm
ZmluZ1BvbGljeTsKICAgICBsb2FkUGFyYW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9
IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5OwogICAgIC8vIElmIHRoZXJlIGlzIG5vIFdlYkZyYW1l
IHRoZW4gdGhpcyByZXNvdXJjZSBjYW5ub3QgYmUgYXV0aGVudGljYXRlZCB3aXRoIHRoZSBjbGll
bnQuCkBAIC0yMzMsNyArMjU3LDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVM
b2FkKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UKICAgICBsb2Fk
UGFyYW1ldGVycy5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0ID0gc2hv
dWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdDsKICAgICBsb2FkUGFyYW1ldGVy
cy5kZWZlcnNMb2FkaW5nID0gcmVzb3VyY2VMb2FkZXIuZGVmZXJzTG9hZGluZygpOwogICAgIGxv
YWRQYXJhbWV0ZXJzLm5lZWRzQ2VydGlmaWNhdGVJbmZvID0gcmVzb3VyY2VMb2FkZXIuc2hvdWxk
SW5jbHVkZUNlcnRpZmljYXRlSW5mbygpOwotICAgIGxvYWRQYXJhbWV0ZXJzLm1heGltdW1CdWZm
ZXJpbmdUaW1lID0gbWF4aW11bUJ1ZmZlcmluZ1RpbWUocmVzb3VyY2UpOworICAgIGxvYWRQYXJh
bWV0ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1lID0gbWF4aW11bUJ1ZmZlcmluZ1RpbWU7CiAgICAg
bG9hZFBhcmFtZXRlcnMuZGVyaXZlZENhY2hlZERhdGFUeXBlc1RvUmV0cmlldmUgPSByZXNvdXJj
ZUxvYWRlci5vcHRpb25zKCkuZGVyaXZlZENhY2hlZERhdGFUeXBlc1RvUmV0cmlldmU7CiAKICAg
ICBBU1NFUlQoKGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRCAmJiBsb2FkUGFyYW1ldGVycy53ZWJG
cmFtZUlEKSB8fCBsb2FkUGFyYW1ldGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID09IENsaWVu
dENyZWRlbnRpYWxQb2xpY3k6OkNhbm5vdEFza0NsaWVudEZvckNyZWRlbnRpYWxzKTsKQEAgLTMw
MCw3ICszMjQsMTIgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6cmVtb3ZlKFJlc291cmNlTG9h
ZGVyKiByZXNvdXJjZUxvYWRlcikKICAgICAgICAgTE9HX0VSUk9SKCJXZWJMb2FkZXJTdHJhdGVn
eSByZW1vdmluZyBhIFJlc291cmNlTG9hZGVyIHRoYXQgaGFzIG5vIGlkZW50aWZpZXIuIik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CisgICAgaWYgKFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuY2FuY2VsRmV0
Y2goaWRlbnRpZmllcikpCisgICAgICAgIHJldHVybjsKKyNlbmRpZgorCiAgICAgUmVmUHRyPFdl
YlJlc291cmNlTG9hZGVyPiBsb2FkZXIgPSBtX3dlYlJlc291cmNlTG9hZGVycy50YWtlKGlkZW50
aWZpZXIpOwogICAgIC8vIExvYWRlciBtYXkgbm90IGJlIHJlZ2lzdGVyZWQgaWYgd2UgY3JlYXRl
ZCBpdCwgYnV0IGhhdmVuJ3Qgc2NoZWR1bGVkIHlldCAoYSBidW5kbGUgY2xpZW50IGNhbiBkZWNp
ZGUgdG8gY2FuY2VsIHN1Y2ggcmVxdWVzdCB2aWEgd2lsbFNlbmRSZXF1ZXN0KS4KICAgICBpZiAo
IWxvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YkxvYWRlclN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJM
b2FkZXJTdHJhdGVneS5oCmluZGV4IGI0OGY2ODExOGY0NDljNzc2OGQxNzk2NjE2NWJiNjZhMzI1
YjIzNmYuLmVhYjRlY2U3ZWU2YmZmZmY3MzhlMmJkZmEzNTVhMDg0YzJkYWE2ZDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3ku
aApAQCAtNzcsNiArNzcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRVUkxTY2hlbWVUYXNrUHJv
eHkoV2ViVVJMU2NoZW1lVGFza1Byb3h5Jik7CiAgICAgdm9pZCByZW1vdmVVUkxTY2hlbWVUYXNr
UHJveHkoV2ViVVJMU2NoZW1lVGFza1Byb3h5Jik7CiAKKyAgICB2b2lkIHNjaGVkdWxlTG9hZEZy
b21OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYlJlc291cmNlTG9hZGVyOjpUcmFja2luZ1BhcmFt
ZXRlcnMmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFNl
Y29uZHMpOworCiBwcml2YXRlOgogICAgIHZvaWQgc2NoZWR1bGVMb2FkKFdlYkNvcmU6OlJlc291
cmNlTG9hZGVyJiwgV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2UqLCBib29sIHNob3VsZENsZWFyUmVm
ZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QpOwogICAgIHZvaWQgc2NoZWR1bGVJbnRlcm5hbGx5
RmFpbGVkTG9hZChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRj
aC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDNkNGUzYjQxNDc1MWE2MDIyNTlhMWJlNmJjYjFjYzc4NzNmOWFj
YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1Nl
cnZpY2VXb3JrZXJDbGllbnRGZXRjaC5jcHAKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudEZldGNo
LmgiCisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKKyNpbmNsdWRlICJEYXRhUmVmZXJl
bmNlLmgiCisjaW5jbHVkZSAiV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmgiCisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworU2VydmljZVdvcmtlckNs
aWVudEZldGNoOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2goV2ViU2VydmljZVdvcmtlclByb3Zp
ZGVyJiBzZXJ2aWNlV29ya2VyUHJvdmlkZXIsIFJlZjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcj4m
JiBsb2FkZXIsIHVpbnQ2NF90IGlkZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29u
bmVjdGlvbiwgU2VydmljZVdvcmtlckNsaWVudEZldGNoQ2FsbGJhY2smJiBjYWxsYmFjaykKKyAg
ICA6IG1fc2VydmljZVdvcmtlclByb3ZpZGVyKHNlcnZpY2VXb3JrZXJQcm92aWRlcikKKyAgICAs
IG1fbG9hZGVyKFdURk1vdmUobG9hZGVyKSkKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVy
KQorICAgICwgbV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCisgICAgLCBtX2NhbGxi
YWNrKFdURk1vdmUoY2FsbGJhY2spKQoreworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRG
ZXRjaDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQoreworICAgIGlmICghbV9sb2FkZXIpCisgICAgICAgIHJldHVybjsKKworICAg
IC8vIEZJWE1FOiBTdXBwb3J0IHJlZGlyZWN0aW9ucy4KKyAgICBBU1NFUlQocmVzcG9uc2UuaHR0
cFN0YXR1c0NvZGUoKSA8PSAzMDAgfHwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDAg
fHwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQgfHwgcmVzcG9uc2UuaHR0cFN0YXR1
c0NvZGUoKSA9PSAzMDUgfHwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDYpOworCisg
ICAgaWYgKHJlc3BvbnNlLnR5cGUoKSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpUeXBlOjpFcnJvcikg
eworICAgICAgICAvLyBBZGQgc3VwcG9ydCBmb3IgYSBiZXR0ZXIgZXJyb3IuCisgICAgICAgIG1f
bG9hZGVyLT5kaWRGYWlsKHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9sb2Fk
ZXItPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7CisKKyAgICBpZiAoYXV0byBjYWxsYmFj
ayA9IFdURk1vdmUobV9jYWxsYmFjaykpCisgICAgICAgIGNhbGxiYWNrKFNlcnZpY2VXb3JrZXJD
bGllbnRGZXRjaFJlc3VsdDo6RG9uZSk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlckNsaWVudEZl
dGNoOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0
X3QgZW5jb2RlZERhdGFMZW5ndGgpCit7CisgICAgaWYgKCFtX2xvYWRlcikKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9sb2FkZXItPmRpZFJlY2VpdmVEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgY2hhcio+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoLCBE
YXRhUGF5bG9hZEJ5dGVzKTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OmRp
ZEZpbmlzaCgpCit7CisgICAgaWYgKCFtX2xvYWRlcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9sb2FkZXItPmRpZEZpbmlzaExvYWRpbmcoTmV0d29ya0xvYWRNZXRyaWNzIHsgfSk7CisgICAg
bV9zZXJ2aWNlV29ya2VyUHJvdmlkZXIuZmV0Y2hGaW5pc2hlZChtX2lkZW50aWZpZXIpOworfQor
Cit2b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6ZGlkRmFpbCgpCit7CisgICAgaWYgKCFt
X2xvYWRlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBXVEZN
b3ZlKG1fY2FsbGJhY2spKQorICAgICAgICBjYWxsYmFjayhTZXJ2aWNlV29ya2VyQ2xpZW50RmV0
Y2hSZXN1bHQ6Ok5vbmUpOworCisgICAgbV9zZXJ2aWNlV29ya2VyUHJvdmlkZXIuZmV0Y2hGaW5p
c2hlZChtX2lkZW50aWZpZXIpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6
Y2FuY2VsKCkKK3sKKyAgICBpZiAoYXV0byBjYWxsYmFjayA9IFdURk1vdmUobV9jYWxsYmFjaykp
CisgICAgICAgIGNhbGxiYWNrKFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaFJlc3VsdDo6Q2FuY2Vs
bGVkKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0YTA3N2Y2MGQz
ZjI2MzIwNjQ4NTRjNGM3OTY0N2I1MTUxY2I0NmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guaApAQCAt
MCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCisKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJN
ZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRlci5oPgorI2lu
Y2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgV2ViU2VydmljZVdvcmtlclByb3ZpZGVyOworCitlbnVtIGNsYXNzIFNlcnZpY2VXb3Jr
ZXJDbGllbnRGZXRjaFJlc3VsdCB7IERvbmUsIENhbmNlbGxlZCwgTm9uZSB9OwordXNpbmcgU2Vy
dmljZVdvcmtlckNsaWVudEZldGNoQ2FsbGJhY2sgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU2VydmljZVdvcmtlckNsaWVudEZldGNoUmVzdWx0KT47CisKK2NsYXNzIFNlcnZpY2VXb3Jr
ZXJDbGllbnRGZXRjaCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFNlcnZpY2VXb3JrZXJDbGll
bnRGZXRjaD4sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxTZXJ2aWNlV29ya2VyQ2xpZW50RmV0
Y2g+IGNyZWF0ZShXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXImIHNlcnZpY2VXb3JrZXJQcm92aWRl
ciwgUmVmPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyPiYmIGxvYWRlciwgdWludDY0X3QgaWRlbnRp
ZmllciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBTZXJ2aWNlV29ya2VyQ2xp
ZW50RmV0Y2hDYWxsYmFjayYmIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2VydmljZVdvcmtlckNsaWVudEZldGNoIHsgc2VydmljZVdvcmtlclByb3ZpZGVy
LCBXVEZNb3ZlKGxvYWRlciksIGlkZW50aWZpZXIsIFdURk1vdmUoY29ubmVjdGlvbiksIFdURk1v
dmUoY2FsbGJhY2spIH0pOworICAgIH0KKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisgICAgdm9pZCBjYW5jZWwoKTsK
KworcHJpdmF0ZToKKyAgICBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2goV2ViU2VydmljZVdvcmtl
clByb3ZpZGVyJiwgUmVmPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyPiYmLCB1aW50NjRfdCBpZGVu
dGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hD
YWxsYmFjayYmKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGlk
RmluaXNoKCk7CisgICAgdm9pZCBkaWRGYWlsKCk7CisKKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1l
c3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgZmluYWwgeyByZXR1cm4gbV9jb25uZWN0aW9uLnB0cigp
OyB9CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBmaW5hbCB7IHJl
dHVybiBtX2lkZW50aWZpZXI7IH0KKworICAgIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlciYgbV9z
ZXJ2aWNlV29ya2VyUHJvdmlkZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6OlJlc291cmNlTG9hZGVy
PiBtX2xvYWRlcjsKKyAgICB1aW50NjRfdCBtX2lkZW50aWZpZXIgeyAwIH07CisgICAgUmVmPElQ
Qzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRj
aENhbGxiYWNrIG1fY2FsbGJhY2s7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRj
aC5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNjJmNzAwMDY5ZDM4ZmQ2NTg2NDllMjNkODUwNzc4
MDE3ZDMyNGY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzMg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKKworbWVzc2FnZXMgLT4gU2VydmljZVdvcmtlckNsaWVudEZldGNoIHsK
KyAgICBEaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25z
ZSkKKyAgICBEaWRSZWNlaXZlRGF0YShJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSwgaW50NjRfdCBl
bmNvZGVkRGF0YUxlbmd0aCkKKyAgICBEaWRGaW5pc2goKQorICAgIERpZEZhaWwoKQorfQorCisj
ZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNvbnRleHRNYW5h
Z2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZjUyMjVkMTIzNmQzYmEwOGE1YjdkMWJjNzZhNTBjYmU0NDNi
YWFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
U2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDk4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDb250ZXh0
TWFuYWdlci5oIgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSAiTG9n
Z2luZy5oIgorI2luY2x1ZGUgIlN0b3JhZ2VQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJX
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVz
dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgorI2luY2x1ZGUgPHBh
bC9TZXNzaW9uSUQuaD4KKwordXNpbmcgbmFtZXNwYWNlIFBBTDsKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBTZXJ2aWNlV29ya2VyQ29udGV4
dE1hbmFnZXI6OnN0YXJ0U2VydmljZVdvcmtlckNvbnRleHQodWludDY0X3Qgc2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSkKK3sK
KyAgICAvLyBGSVhNRTogUHJvdmlkZSBhIHNlbnNpY2FsIHNlc3Npb24gSUQKKworICAgIGF1dG8g
dGhyZWFkID0gU2VydmljZVdvcmtlclRocmVhZDo6Y3JlYXRlKHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBkYXRhLCBTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CisgICAgYXV0byB0
aHJlYWRJZGVudGlmaWVyID0gdGhyZWFkLT5pZGVudGlmaWVyKCk7CisgICAgYXV0byByZXN1bHQg
PSBtX3dvcmtlclRocmVhZE1hcC5hZGQodGhyZWFkSWRlbnRpZmllciwgV1RGTW92ZSh0aHJlYWQp
KTsKKyAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50cnkpOworCisgICAgcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZS0+c3RhcnQoKTsKKworICAgIExPRyhTZXJ2aWNlV29ya2VyLCAiQ29udGV4dCBwcm9j
ZXNzIFBJRDogJWkgc3RhcnRlZCB3b3JrZXIgdGhyZWFkICVzXG4iLCBnZXRwaWQoKSwgZGF0YS53
b3JrZXJJRC51dGY4KCkuZGF0YSgpKTsKKworICAgIG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpTZXJ2aWNlV29ya2VyQ29udGV4dFN0
YXJ0ZWQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGRhdGEucmVnaXN0cmF0aW9uS2V5LCB0
aHJlYWRJZGVudGlmaWVyLCBkYXRhLndvcmtlcklEKSwgMCk7Cit9CisKK3ZvaWQgU2VydmljZVdv
cmtlckNvbnRleHRNYW5hZ2VyOjpzdGFydEZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEZldGNo
T3B0aW9ucyYgb3B0aW9ucykKK3sKKyAgICBVTlVTRURfUEFSQU0oc2VydmljZVdvcmtlcklkZW50
aWZpZXIpOworCisgICAgLy8gRklYTUU6IEhhcmQgY29kaW5nIHNvbWUgZmV0Y2hlcyBmb3IgdGVz
dGluZyBwdXJwb3NlIHVudGlsIHdlIGltcGxlbWVudCB0aGUgY3JlYXRpb24gb2YgZmV0Y2ggZXZl
bnQuCisgICAgaWYgKHJlcXVlc3QudXJsKCkuc3RyaW5nKCkuY29udGFpbnMoInRlc3QxIikpIHsK
KyAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKKyAgICAgICAgcmVzcG9uc2Uuc2V0
VVJMKHJlcXVlc3QudXJsKCkpOworICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZSgy
MDApOworICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChBU0NJSUxpdGVyYWwoIkhl
bGxvIGZyb20gc2VydmljZSB3b3JrZXIiKSk7CisgICAgICAgIG1fY29ubmVjdGlvblRvU3RvcmFn
ZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpEaWRSZWNlaXZlRmV0Y2hS
ZXNwb25zZShzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyLCByZXNw
b25zZSksIDApOworICAgICAgICBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6RGlkRmluaXNoRmV0Y2goc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIsIGZldGNoSWRlbnRpZmllciksIDApOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIGlmIChyZXF1ZXN0LnVybCgpLnN0cmluZygpLmNvbnRhaW5zKCJ0ZXN0MiIpKSB7CisgICAg
ICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CisgICAgICAgIHJlc3BvbnNlLnNldFVSTChy
ZXF1ZXN0LnVybCgpKTsKKyAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoNTAwKTsK
KyAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoQVNDSUlMaXRlcmFsKCJFcnJvciBm
cm9tIHNlcnZpY2Ugd29ya2VyIikpOworICAgICAgICBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6RGlkUmVjZWl2ZUZldGNoUmVzcG9u
c2Uoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGZldGNoSWRlbnRpZmllciwgcmVzcG9uc2Up
LCAwKTsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9TdG9yYWdlUHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6U3RvcmFnZVByb2Nlc3M6OkRpZEZpbmlzaEZldGNoKHNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyLCBmZXRjaElkZW50aWZpZXIpLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBp
ZiAocmVxdWVzdC51cmwoKS5zdHJpbmcoKS5jb250YWlucygidGVzdDMiKSkgeworICAgICAgICBS
ZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOworICAgICAgICByZXNwb25zZS5zZXRVUkwocmVxdWVz
dC51cmwoKSk7CisgICAgICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2RlKDUwMCk7CisgICAg
ICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNUZXh0KEFTQ0lJTGl0ZXJhbCgiRXJyb3IgZnJvbSBz
ZXJ2aWNlIHdvcmtlciIpKTsKKyAgICAgICAgcmVzcG9uc2Uuc2V0VHlwZShSZXNvdXJjZVJlc3Bv
bnNlOjpUeXBlOjpFcnJvcik7CisgICAgICAgIG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZShz
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyLCByZXNwb25zZSksIDAp
OworICAgICAgICBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpT
dG9yYWdlUHJvY2Vzczo6RGlkRmluaXNoRmV0Y2goc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIs
IGZldGNoSWRlbnRpZmllciksIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9j
b25uZWN0aW9uVG9TdG9yYWdlUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6
OkRpZEZhaWxGZXRjaChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVy
KSwgMCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1NlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDhi
NjkxMGE3NjE5ZTg5YTFhN2QxOGFhNmRjMTZhY2M1ZDBlZTBhOQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDb250ZXh0TWFu
YWdlci5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgRmV0Y2hPcHRpb25zOworY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0Oworc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTsKK30KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlciB7
CitwdWJsaWM6CisgICAgZXhwbGljaXQgU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyKFJlZjxJ
UEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKKyAgICAgICAgOiBtX2Nvbm5lY3Rpb25Ub1N0
b3JhZ2VQcm9jZXNzKFdURk1vdmUoY29ubmVjdGlvbikpCisgICAgeworICAgIH0KKworICAgIHZv
aWQgc3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4dCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhJik7CisgICAg
dm9pZCBzdGFydEZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50
NjRfdCBmZXRjaElkZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlv
bnMmKTsKKworcHJpdmF0ZToKKyAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb25U
b1N0b3JhZ2VQcm9jZXNzOworICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyVGhyZWFkPj4gbV93b3JrZXJUaHJlYWRNYXA7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5l
Y3Rpb24uY3BwCmluZGV4IDc2YWU3YjU1YmEwMzBjY2IwMzgzNzg2ZTg4NzI4NTk5ZmZiZDZhZGEu
LjVmYmZhZTY5YTE1ZGYwYTEzNGFmMzc1MDFhYzY1MWQ4MDg5ZDc1YTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0
aW9uLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gu
aCIKICNpbmNsdWRlICJTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViU1dPcmlnaW5U
YWJsZS5oIgpAQCAtNzUsNiArNzYsMTUgQEAgdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnNl
dFNXT3JpZ2luVGFibGVTaGFyZWRNZW1vcnkoY29uc3QgU2hhcmVkTWVtb3J5OjpIYW4KICAgICBt
X3N3T3JpZ2luVGFibGUtPnNldFNoYXJlZE1lbW9yeShoYW5kbGUpOwogfQogCitSZWY8U2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoPiBXZWJTV0NsaWVudENvbm5lY3Rpb246OnN0YXJ0RmV0Y2goV2Vi
U2VydmljZVdvcmtlclByb3ZpZGVyJiBwcm92aWRlciwgUmVmPFdlYkNvcmU6OlJlc291cmNlTG9h
ZGVyPiYmIGxvYWRlciwgdWludDY0X3QgaWRlbnRpZmllciwgU2VydmljZVdvcmtlckNsaWVudEZl
dGNoQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBBU1NFUlQobG9hZGVyLT5vcHRpb25zKCku
c2VydmljZVdvcmtlcnNNb2RlID09IFNlcnZpY2VXb3JrZXJzTW9kZTo6QWxsKTsKKyAgICAvLyBG
SVhNRTogRGVjaWRlIHdoZXRoZXIgdG8gYXNzZXJ0IGZvciBsb2FkZXItPm9wdGlvbnMoKS5zZXJ2
aWNlV29ya2VySWRlbnRpZmllciBvbmNlIHdlIGhhdmUgYSBzdG9yeSBmb3IgbmF2aWdhdGlvbiBs
b2Fkcy4KKworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6U3RhcnRG
ZXRjaChpZGVudGlmaWVyLCBsb2FkZXItPm9wdGlvbnMoKS5zZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgbG9hZGVyLT5vcmlnaW5hbFJlcXVlc3QoKSwgbG9hZGVyLT5vcHRpb25zKCkpKTsKKyAgICBy
ZXR1cm4gU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpjcmVhdGUocHJvdmlkZXIsIFdURk1vdmUo
bG9hZGVyKSwgaWRlbnRpZmllciwgbV9jb25uZWN0aW9uLmdldCgpLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaAppbmRleCAyNjE3ZWMyZTc0ZjBlNTRlMjQ0NjY4YzJj
MjM1ZDM2M2JkYWRkNjUzLi5kMGZhMzE5ODNmYjAyNjI3YzlmOWIzZWJlN2UzNGE5ZjJmMzdiMDIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVu
dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NsaWVudENvbm5lY3Rpb24uaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkNvbm5lY3Rp
b24uaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2Vu
ZGVyLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudEZldGNoLmgiCiAjaW5jbHVkZSAi
U2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TV0NsaWVudENvbm5lY3Rpb24uaD4K
ICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CkBAIC0zNywxMSArMzgsMTMgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogc3RydWN0IEV4Y2VwdGlvbkRhdGE7CitjbGFzcyBSZXNvdXJjZUxvYWRl
cjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlNXT3JpZ2luVGFibGU7Citj
bGFzcyBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI7CiAKIGNsYXNzIFdlYlNXQ2xpZW50Q29ubmVj
dGlvbiA6IHB1YmxpYyBXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb24sIHB1YmxpYyBJUEM6Ok1l
c3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6CkBAIC01
OCw2ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCiAgICAgYm9vbCBoYXNTZXJ2aWNlV29y
a2VyUmVnaXN0ZXJlZEZvck9yaWdpbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYpIGNv
bnN0IGZpbmFsOworICAgIFJlZjxTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g+IHN0YXJ0RmV0Y2go
V2ViU2VydmljZVdvcmtlclByb3ZpZGVyJiwgUmVmPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyPiYm
LCB1aW50NjRfdCBpZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hDYWxsYmFjayYm
KTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHNjaGVkdWxlU3RvcmFnZUpvYihjb25zdCBXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySm9iRGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAKaW5kZXgg
NjFkOGNlNTZlZWM1YmQ0MTczYjY0MmJlOTA2MWU3M2M3NzM3NmY5OS4uMzg3Yjc0OGZkYzI2MTRk
ZDJmNzk2ZTYzMDI4NGI3NDI2MGUxMGUyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwCkBA
IC01OCw2ICs1OCw1OCBAQCBXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb24mIFdlYlNlcnZpY2VX
b3JrZXJQcm92aWRlcjo6c2VydmljZVdvcmtlckNvbm5lY3Rpb25GbwogICAgIHJldHVybiBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS53ZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbigpLT5zZXJ2
aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Npb24oc2Vzc2lvbklEKTsKIH0KIAorc3RhdGljIGlu
bGluZSBib29sIHNob3VsZEhhbmRsZUZldGNoKGNvbnN0IFdlYlNXQ2xpZW50Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBSZXNvdXJjZUxvYWRl
ck9wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgaWYgKG9wdGlvbnMuc2VydmljZVdvcmtlcnNNb2Rl
ICE9IFNlcnZpY2VXb3JrZXJzTW9kZTo6QWxsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIHByb2JhYmx5IGFzc2VydCB0aGF0IG9wdGlvbnMuc2Vydmlj
ZVdvcmtlcnNJZGVudGlmaWVyIGlzIG5vdCBudWxsLgorICAgIGlmIChpc1BvdGVudGlhbE5hdmln
YXRpb25PclN1YnJlc291cmNlUmVxdWVzdChvcHRpb25zLmRlc3RpbmF0aW9uKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgLy8gRklYTUU6IEltcGxlbWVudCBub24tc3VicmVzb3VyY2Ug
cmVxdWVzdCBsb2Fkcy4KKyAgICBpZiAoaXNOb25TdWJyZXNvdXJjZVJlcXVlc3Qob3B0aW9ucy5k
ZXN0aW5hdGlvbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghcmVzb3VyY2Up
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBjb25uZWN0aW9uLmhhc1NlcnZp
Y2VXb3JrZXJSZWdpc3RlcmVkRm9yT3JpZ2luKCpyZXNvdXJjZS0+b3JpZ2luKCkpOworfQorCit2
b2lkIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6aGFuZGxlRmV0Y2goUmVzb3VyY2VMb2FkZXIm
IGxvYWRlciwgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaENhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAg
YXV0byYgY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlRvU3RvcmFnZVBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uRm9yU2Vzc2lvbihzZXNz
aW9uSUQpOworCisgICAgaWYgKCFzaG91bGRIYW5kbGVGZXRjaChjb25uZWN0aW9uLCByZXNvdXJj
ZSwgbG9hZGVyLm9wdGlvbnMoKSkpIHsKKyAgICAgICAgLy8gQWRkIGFuIG9wdGlvbiB0byBlcnJv
ciByZXNvdXJjZSBsb2FkIGZvciBEVEwgdG8gYWN0dWFsbHkgZ28gdGhyb3VnaCBwcmVmbGlnaHQu
CisgICAgICAgIGNhbGxiYWNrKFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaFJlc3VsdDo6Tm9uZSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGZldGNoID0gY29ubmVjdGlvbi5z
dGFydEZldGNoKCp0aGlzLCBsb2FkZXIsIGxvYWRlci5pZGVudGlmaWVyKCksIFdURk1vdmUoY2Fs
bGJhY2spKTsKKyAgICBtX29uZ29pbmdGZXRjaFRhc2tzLmFkZChsb2FkZXIuaWRlbnRpZmllcigp
LCBXVEZNb3ZlKGZldGNoKSk7Cit9CisKK2Jvb2wgV2ViU2VydmljZVdvcmtlclByb3ZpZGVyOjpj
YW5jZWxGZXRjaCh1aW50NjRfdCBmZXRjaElkZW50aWZpZXIpCit7CisgICAgYXV0byBmZXRjaCA9
IG1fb25nb2luZ0ZldGNoVGFza3MudGFrZShmZXRjaElkZW50aWZpZXIpOworICAgIGlmIChmZXRj
aCkKKyAgICAgICAgKCpmZXRjaCktPmNhbmNlbCgpOworICAgIHJldHVybiAhIWZldGNoOworfQor
Cit2b2lkIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6ZmV0Y2hGaW5pc2hlZCh1aW50NjRfdCBm
ZXRjaElkZW50aWZpZXIpCit7CisgICAgbV9vbmdvaW5nRmV0Y2hUYXNrcy50YWtlKGZldGNoSWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgV2ViU2VydmljZVdvcmtlclByb3ZpZGVyOjpkaWRSZWNlaXZl
U2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBpZiAoYXV0byBmZXRjaCA9IG1fb25n
b2luZ0ZldGNoVGFza3MuZ2V0KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkKKyAgICAgICAgZmV0
Y2gtPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQ
cm92aWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdv
cmtlclByb3ZpZGVyLmgKaW5kZXggNzc1ZjVlZTA0YjJjNmZkZDc1NmEyZWNlODhjNjhhNzcwZmM3
MDEwZi4uNzA1MjA0ZjM0MTgxYWJkOTJhYmM4ZTJlMWU4YjAzYTg5ODNhNWVlMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3Zp
ZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdv
cmtlclByb3ZpZGVyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKIAorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvU2VydmljZVdvcmtlclByb3ZpZGVyLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAKQEAgLTM2LDEyICszNywxOSBAQCBjbGFzcyBXZWJTZXJ2aWNlV29ya2VyUHJv
dmlkZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U2VydmljZVdvcmtlclByb3ZpZGVyIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgV2ViU2VydmljZVdvcmtlclByb3ZpZGVyJiBzaW5nbGV0b24oKTsK
IAorICAgIHZvaWQgaGFuZGxlRmV0Y2goV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXImLCBXZWJDb3Jl
OjpDYWNoZWRSZXNvdXJjZSosIFBBTDo6U2Vzc2lvbklELCBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0
Y2hDYWxsYmFjayYmKTsKKyAgICBib29sIGNhbmNlbEZldGNoKHVpbnQ2NF90IGZldGNoSWRlbnRp
Zmllcik7CisgICAgdm9pZCBmZXRjaEZpbmlzaGVkKHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcik7
CisKKyAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOworCiBwcml2YXRlOgogICAgIGZyaWVuZCBO
ZXZlckRlc3Ryb3llZDxXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI+OwogICAgIFdlYlNlcnZpY2VX
b3JrZXJQcm92aWRlcigpOwogCiAgICAgV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uJiBzZXJ2
aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQpIGZpbmFsOwogCisg
ICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmPFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaD4+IG1fb25n
b2luZ0ZldGNoVGFza3M7CiB9OyAvLyBjbGFzcyBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbi5jcHAK
aW5kZXggNWExMmQwNGRjYmQyMzExMmM0MDM5MzE5NDVlNWZjNTU2MTAzMDc3Ni4uM2JlNWRmMDJm
NTUxNTUzNjU2ZTY1NzM4MjAzMGExOThkM2U0Nzg2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlRvU3RvcmFnZVByb2Nlc3ND
b25uZWN0aW9uLmNwcApAQCAtMzIsNiArMzIsMTEgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgi
CiAjaW5jbHVkZSAiV2ViU1dDbGllbnRDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViU1dDbGll
bnRDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJTZXJ2aWNlV29ya2VyUHJvdmlk
ZXIuaCIKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyNpbmNsdWRlICJTZXJ2aWNlV29y
a2VyQ2xpZW50RmV0Y2hNZXNzYWdlcy5oIgorI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBQQUw7
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTY3LDYgKzcyLDEwIEBAIHZvaWQgV2ViVG9T
dG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvCiAgICAgICAgICAgICBzZXJ2aWNlV29ya2VyQ29ubmVjdGlvbi0+ZGlkUmVj
ZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpTZXJ2
aWNlV29ya2VyQ2xpZW50RmV0Y2g6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBX
ZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVTZXJ2aWNlV29y
a2VyQ2xpZW50RmV0Y2hNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1
cm47CisgICAgfQogI2VuZGlmCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNmUyNzY3MTFlY2M1ODdiOTc0YWNh
MzEzMTZkYmQxY2EzY2Y3MTkxYi4uMWY3YjIwNDAzNzY0NGY4MTg3YzA5Y2YxM2Y5ZmM5YTU3NTdi
MTFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtNDAsNiAr
NDAsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUg
Ik5ldHdvcmtTZXNzaW9uLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5h
Z2VyLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiU2Vzc2lvblRyYWNrZXIuaCIKICNpbmNsdWRlICJTdGF0aXN0aWNzRGF0YS5oIgogI2luY2x1
ZGUgIlN0b3JhZ2VQcm9jZXNzTWVzc2FnZXMuaCIKQEAgLTEwNSw3ICsxMDYsNiBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNh
dGlvbkNoZWNrcy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU1dDb250ZXh0TWFuYWdlci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2NoZW1lUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3Vy
aXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEu
aD4KQEAgLTE2MjIsNyArMTYyMiw3IEBAIExpYldlYlJUQ05ldHdvcmsmIFdlYlByb2Nlc3M6Omxp
YldlYlJUQ05ldHdvcmsoKQogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIHZvaWQgV2ViUHJv
Y2Vzczo6Z2V0V29ya2VyQ29udGV4dENvbm5lY3Rpb24oKQogewotICAgIEFTU0VSVCghbV93b3Jr
ZXJDb250ZXh0Q29ubmVjdGlvbik7CisgICAgQVNTRVJUKCFtX3NlcnZpY2VXb3JrZXJNYW5hZ2Vy
KTsKIAogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAgIElQQzo6Q29ubmVjdGlvbjo6
U29ja2V0UGFpciBzb2NrZXRQYWlyID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNv
bm5lY3Rpb24oKTsKQEAgLTE2NDIsMjAgKzE2NDIsMjcgQEAgdm9pZCBXZWJQcm9jZXNzOjpnZXRX
b3JrZXJDb250ZXh0Q29ubmVjdGlvbigpCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICNlbmRpZgogCi0gICAgbV93b3JrZXJDb250ZXh0Q29ubmVjdGlvbiA9IElQQzo6Q29ubmVj
dGlvbjo6Y3JlYXRlU2VydmVyQ29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRpZmllciwgKnRoaXMp
OwotICAgIG1fd29ya2VyQ29udGV4dENvbm5lY3Rpb24tPm9wZW4oKTsKLQorICAgIGF1dG8gd29y
a2VyQ29udGV4dENvbm5lY3Rpb24gPSBJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVNlcnZlckNvbm5l
Y3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIsICp0aGlzKTsKKyAgICB3b3JrZXJDb250ZXh0Q29u
bmVjdGlvbi0+b3BlbigpOworICAgIG1fc2VydmljZVdvcmtlck1hbmFnZXIgPSAgU2VydmljZVdv
cmtlckNvbnRleHRNYW5hZ2VyKFdURk1vdmUod29ya2VyQ29udGV4dENvbm5lY3Rpb24pKTsKICAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkRpZEdldFdvcmtlckNvbnRleHRDb25uZWN0aW9u
KGNvbm5lY3Rpb25DbGllbnRQb3J0KSwgMCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6c3RhcnRT
ZXJ2aWNlV29ya2VyQ29udGV4dCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwg
Y29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiBkYXRhKQogewotICAgIGF1dG8gY29udGV4
dFJlc3VsdCA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnN0YXJ0U2VydmljZVdvcmtl
ckNvbnRleHQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGRhdGEpOwotICAgIAotICAgIGlm
IChjb250ZXh0UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQotICAgICAgICBtX3dvcmtlckNvbnRleHRD
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6U2VydmljZVdvcmtlckNv
bnRleHRGYWlsZWRUb1N0YXJ0KHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBkYXRhLnJlZ2lz
dHJhdGlvbktleSwgZGF0YS53b3JrZXJJRCwgY29udGV4dFJlc3VsdC5leGNlcHRpb24oKS5tZXNz
YWdlKCkpLCAwKTsKLSAgICBlbHNlCi0gICAgICAgIG1fd29ya2VyQ29udGV4dENvbm5lY3Rpb24t
PnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpTZXJ2aWNlV29ya2VyQ29udGV4dFN0YXJ0
ZWQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGRhdGEucmVnaXN0cmF0aW9uS2V5LCBjb250
ZXh0UmVzdWx0LnJldHVyblZhbHVlKCksIGRhdGEud29ya2VySUQpLCAwKTsKKyAgICBBU1NFUlQo
bV9zZXJ2aWNlV29ya2VyTWFuYWdlcik7CisgICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJNYW5hZ2Vy
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX3NlcnZpY2VXb3JrZXJNYW5hZ2VyLT5zdGFydFNl
cnZpY2VXb3JrZXJDb250ZXh0KHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBkYXRhKTsKK30K
Kwordm9pZCBXZWJQcm9jZXNzOjpzdGFydEZldGNoSW5TZXJ2aWNlV29ya2VyKHVpbnQ2NF90IHNl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIHVpbnQ2
NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucykKK3sKKyAgICBpZiAoIW1fc2VydmljZVdv
cmtlck1hbmFnZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc2VydmljZVdvcmtlck1hbmFn
ZXItPnN0YXJ0RmV0Y2goc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGZldGNoSWRlbnRpZmll
ciwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHJlcXVlc3QsIG9wdGlvbnMpOwogfQogCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDVjMmU2Yzc2ZGY3ODI0
NWExYjMxNTQ5YzZlMDExZmU0ZjVkNGQzZjcuLmZlZTE0MzYyNmI3MWViOTEwYzg3MzUwZjA1NmQy
Mjc2YWJmYzkxYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMzAs
NiArMzAsNyBAQAogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oIgog
I2luY2x1ZGUgIlJlc291cmNlQ2FjaGVzVG9DbGVhci5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRl
bnNpb24uaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuaCIKICNpbmNs
dWRlICJUZXh0Q2hlY2tlclN0YXRlLmgiCiAjaW5jbHVkZSAiVmlld1VwZGF0ZURpc3BhdGNoZXIu
aCIKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyLmgiCkBAIC0zMDAs
NyArMzAxLDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9p
ZCBnZXRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbigpOwogICAgIHZvaWQgc3RhcnRTZXJ2aWNlV29y
a2VyQ29udGV4dCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhJik7Ci0gICAgUmVmUHRyPElQQzo6Q29ubmVj
dGlvbj4gbV93b3JrZXJDb250ZXh0Q29ubmVjdGlvbjsKKyAgICB2b2lkIHN0YXJ0RmV0Y2hJblNl
cnZpY2VXb3JrZXIodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90
IGZldGNoSWRlbnRpZmllciwgdWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OkZldGNoT3B0aW9ucyYp
OwogI2VuZGlmCiAKICAgICB2b2lkIHJlbGVhc2VQYWdlQ2FjaGUoKTsKQEAgLTQzOCw2ICs0Mzks
OSBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKFdBWUxBTkQpCiAgICAgc3RkOjp1bmlxdWVfcHRy
PFdheWxhbmRDb21wb3NpdG9yRGlzcGxheT4gbV93YXlsYW5kQ29tcG9zaXRvckRpc3BsYXk7CiAj
ZW5kaWYKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgc3RkOjpvcHRpb25hbDxTZXJ2
aWNlV29ya2VyQ29udGV4dE1hbmFnZXI+IG1fc2VydmljZVdvcmtlck1hbmFnZXI7CisjZW5kaWYK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAyMjA2MzYwMWUwNjNhYjViMjE3OGZmN2Iz
NmM5Yzk5MTI4MTA3OTdmLi5mYTU0NzJjMTIyOTE1ODlmNDA4ZTliNGFiYzFmOWZjYTBmMzVhMDgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgpAQCAtMTE3LDUgKzExNyw2IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2
ZXIgewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBHZXRXb3JrZXJDb250ZXh0Q29u
bmVjdGlvbigpCiAgICAgU3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4dCh1aW50NjRfdCBzZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YSBjb250ZXh0RGF0YSkKKyAgICBTdGFydEZldGNoSW5TZXJ2aWNlV29ya2VyKHVpbnQ2NF90
IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIHVp
bnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdCwgc3RydWN0IFdlYkNvcmU6OkZldGNoT3B0aW9ucyBvcHRpb25zKQogI2VuZGlmCiB9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggZGE4N2UzOTgxZWE0ZTA0NTljN2FlNzY4MjUwZTA0MjQyNGVlYmY3OC4uN2ViYTg3
Y2U1N2E2ZmM2NjY2MTdmY2UxNzAzZGRhNjAwYzkxMWQ0MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBA
CisyMDE3LTEwLTE4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAg
ICBBZGQgcHJlbGltaW5hcnkgc3VwcG9ydCBmb3IgU2VydmljZVdvcmtlciBIYW5kbGUgRmV0Y2gK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODQ3NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90
ZXN0cy93b3JrZXJzL3NlcnZpY2UvYmFzaWMtZmV0Y2guaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1mZXRjaC5odHRw
cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNv
dXJjZXMvYmFzaWMtZmV0Y2gtd29ya2VyLmpzOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvYmFzaWMtZmV0Y2guanM6IEFkZGVkLgorCiAyMDE3
LTEwLTE4ICBNczJnZXIgIDxNczJnZXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBUZXN0
IGdhcmRlbmluZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9z
ZXJ2aWNlL2Jhc2ljLWZldGNoLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2ljLWZldGNoLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mZmQ2NDlmMDliZjE0MzAxY2U4N2NkMGM5ZmM2MjRhZGM2MGQ2NGZlCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvYmFzaWMt
ZmV0Y2guaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDEyOiB0ZXN0MSBzdGF0dXMgY29kZTogMjAwCitDT05TT0xFIE1FU1NBR0U6IGxpbmUg
MTM6IHRlc3QxIHN0YXR1cyB0ZXh0OiBIZWxsbyBmcm9tIHNlcnZpY2Ugd29ya2VyCitDT05TT0xF
IE1FU1NBR0U6IGxpbmUgMTY6IHRlc3QyIHN0YXR1cyBjb2RlOiA1MDAKK0NPTlNPTEUgTUVTU0FH
RTogbGluZSAxNzogdGVzdDIgc3RhdHVzIHRleHQ6IEVycm9yIGZyb20gc2VydmljZSB3b3JrZXIK
K0NPTlNPTEUgTUVTU0FHRTogbGluZSAyNjogdGVzdDMgZmV0Y2ggZmFpbGVkIGFzIGV4cGVjdGVk
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jh
c2ljLWZldGNoLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2Vy
dmljZS9iYXNpYy1mZXRjaC5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyYTA2NmFjOThlZjc4Yjg4
NGY1ZmNhZTQ2YTk0MThhNThhNWNiYWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1mZXRjaC5odHRwcy5odG1sCkBAIC0wLDAg
KzEsOSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc3ctdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvYmFzaWMtZmV0Y2guanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2lj
LWZldGNoLXdvcmtlci5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNl
L3Jlc291cmNlcy9iYXNpYy1mZXRjaC13b3JrZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjlkOGEyYmQzMDE1
Y2FlNGE0YTQ4NTZhMjRmMzlhZjg2YzE2ZDE3NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9iYXNpYy1mZXRjaC13b3Jr
ZXIuanMKQEAgLTAsMCArMSBAQAorLy8gRklYTUU6IHJlZ2lzdGVyIGFuIG9uZmV0Y2ggZXZlbnQg
aGFuZGxlciBhbmQgaGFuZGxlICJ0ZXN0MSIsICJ0ZXN0MiIgYW5kICJ0ZXN0MyIgVVJMcwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2Vz
L2Jhc2ljLWZldGNoLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
cmVzb3VyY2VzL2Jhc2ljLWZldGNoLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4NzQzYTI2NDI5YjE3NzdiMjRj
Yjc2MTI1ZjgwMDNjYzljNDhkNGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvYmFzaWMtZmV0Y2guanMKQEAgLTAsMCAr
MSwzNCBAQAorZnVuY3Rpb24gZG9uZSgpCit7CisgICAgZmluaXNoU1dUZXN0KCk7Cit9CisKK2Fz
eW5jIGZ1bmN0aW9uIHRlc3QoKQoreworICAgIHRyeSB7CisgICAgICAgIGF3YWl0IG5hdmlnYXRv
ci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCJyZXNvdXJjZXMvYmFzaWMtZmV0Y2gtd29ya2VyLmpz
IiwgeyB9KTsKKworICAgICAgICB2YXIgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCgidGVzdDEiKTsK
KyAgICAgICAgY29uc29sZS5sb2coInRlc3QxIHN0YXR1cyBjb2RlOiAiICsgcmVzcG9uc2Uuc3Rh
dHVzKTsKKyAgICAgICAgY29uc29sZS5sb2coInRlc3QxIHN0YXR1cyB0ZXh0OiAiICsgcmVzcG9u
c2Uuc3RhdHVzVGV4dCk7CisKKyAgICAgICAgdmFyIHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goInRl
c3QyIik7CisgICAgICAgIGNvbnNvbGUubG9nKCJ0ZXN0MiBzdGF0dXMgY29kZTogIiArIHJlc3Bv
bnNlLnN0YXR1cyk7CisgICAgICAgIGNvbnNvbGUubG9nKCJ0ZXN0MiBzdGF0dXMgdGV4dDogIiAr
IHJlc3BvbnNlLnN0YXR1c1RleHQpOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXNw
b25zZSA9IGF3YWl0IGZldGNoKCJ0ZXN0MyIpOworICAgICAgICAgICAgY29uc29sZS5sb2coInRl
c3QzIGZldGNoIHN1Y2NlZWRlZCB1bmV4cGVjdGVkbHkiKTsKKyAgICAgICAgICAgIGNvbnNvbGUu
bG9nKCJ0ZXN0MyBzdGF0dXMgY29kZTogIiArIHJlc3BvbnNlLnN0YXR1cyk7CisgICAgICAgICAg
ICBjb25zb2xlLmxvZygidGVzdDMgc3RhdHVzIHRleHQ6ICIgKyByZXNwb25zZS5zdGF0dXNUZXh0
KTsKKworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBjb25zb2xlLmxvZygidGVz
dDMgZmV0Y2ggZmFpbGVkIGFzIGV4cGVjdGVkIik7CisgICAgICAgIH0KKyAgICB9IGNhdGNoKGUp
IHsKKyAgICAgICAgY29uc29sZS5sb2coIkdvdCBleGNlcHRpb246ICIgKyBlKTsKKyAgICB9Cisg
ICAgZmluaXNoU1dUZXN0KCk7Cit9CisKK3Rlc3QoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324178</attachid>
            <date>2017-10-18 15:59:35 -0700</date>
            <delta_ts>2017-10-18 18:29:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178475-20171018155934.patch</filename>
            <type>text/plain</type>
            <size>90422</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzNjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmViOTQ5MjMwM2Q1Y2Vh
ZWRkYzcxNjZiMGYwZDEyM2E5ZTA2MzMyMy4uZGM1NTJiYTVlMTc2YmVmMjViYTBmZTNlZDkwMTIx
NGI4MjExNTU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE3LTEwLTE4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgcHJlbGltaW5hcnkg
c3VwcG9ydCBmb3IgU2VydmljZVdvcmtlciBIYW5kbGUgRmV0Y2gKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODQ3NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvd29ya2Vycy9z
ZXJ2aWNlL2Jhc2ljLWZldGNoLmh0dHBzLmh0bWwKKworICAgICAgICBBZGRpbmcgcGFyYW1ldGVy
cyB0byBhbGxvdyBXZWJLaXQgdG8gZG8gbG9hZGluZyB0aHJvdWdoIFNlcnZpY2UgV29ya2VyIG9y
IHRocm91Z2ggcmVndWxhciBuZXR3b3JraW5nLgorICAgICAgICBBIHNjcmlwdCBjb250ZXh0IGlz
IG5vdyBzdG9yaW5nIGl0cyBzZWxlY3RlZCBzZXJ2aWNlIHdvcmtlciBpZGVudGlmaWVyLiBUaGlz
IHNob3VsZCBiZSBmdWxseSBpbXBsZW1lbnRlZCBsYXRlciBvbi4KKyAgICAgICAgVGhpcyBzZWxl
Y3RlZCBzZXJ2aWNlIHdvcmtlciBpZGVudGlmaWVyIGlzIHBhc3NlZCB0byBsb2FkaW5nIGNvZGUg
YXMgYSBSZXNvdXJjZUxvYWRlck9wdGlvbnMgZmllbGQuCisgICAgICAgIFNlcnZpY2Ugd29ya2Vy
cyBtb2RlIGlzIGFsc28gYWRkZWQgYXMgYSBSZXNvdXJjZUxvYWRlck9wdGlvbnMgZmllbGQgc28g
dGhhdCB0aGUgc2VydmljZSB3b3JrZXIgY2FuIGJlIGJ5cGFzc2VkLgorCisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVj
dXRpb25Db250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpzZWxlY3RlZFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnNldFNlbGVjdGVkU2VydmljZVdvcmtlcklkZW50
aWZpZXIpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIpOgorICAgICAgICAqIGxvYWRlci9GZXRjaE9wdGlvbnMuaDoKKyAgICAgICAg
KFdlYkNvcmU6OmlzUG90ZW50aWFsTmF2aWdhdGlvbk9yU3VicmVzb3VyY2VSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OmlzTm9uU3VicmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKiBsb2Fk
ZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmg6CisgICAgICAgICogbG9hZGVyL1dvcmtlclRocmVh
ZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRl
cjo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJl
YWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKToKKyAgICAg
ICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclRocmVh
ZC5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29sdmVk
V2l0aFJlZ2lzdHJhdGlvbik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJQcm92aWRlci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4
dE1hbmFnZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJUaHJlYWQuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyLmg6CisKIDIwMTctMTAtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBBZGQgYW4gZWZmaWNpZW50IGRhdGEgc3RydWN0dXJlIGZvciBXZWJDb3Jl
IHRvIHF1ZXJ5IGlmIHRoZXJlIGlzIGEgU2VydmljZSBXb3JrZXIgcmVnaXN0ZXJlZCBmb3IgYSBn
aXZlbiBvcmlnaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNTBjZDY0MjhhMmEwY2JiZjkzYWZkODNmYjhjMzYwZDJh
YzMwNWYwMi4uNjQ1OWM1YjMwNmEwNzVmOTMxYzNkOTIxYmNkMjY2MDg0Mzk2NjNlOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw4NCBAQAorMjAxNy0xMC0xOCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBh
cHBsZS5jb20+CisKKyAgICAgICAgQWRkIHByZWxpbWluYXJ5IHN1cHBvcnQgZm9yIFNlcnZpY2VX
b3JrZXIgSGFuZGxlIEZldGNoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzg0NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBQcmVsaW1pbmFyeSBzdXBwb3J0IG9mIEhhbmRsZSBGZXRjaCBhbGdvcml0aG0g
YW5kIGludGVncmF0aW9uIHdpdGggZmV0Y2ggc3BlYy4KKyAgICAgICAgQWRkaW5nIFNlcnZpY2VX
b3JrZXJDbGllbnRGZXRjaCBhcyB0aGUgY2xhc3MgcmVzcG9uc2libGUgdG8gZG8gdGhlIGxvYWQg
dGhyb3VnaCBTZXJ2aWNlV29ya2VyLgorICAgICAgICBJdCBpcyBzaW1pbGFyIHRvIFdlYlJlc291
cmNlTG9hZGVyIHRoYXQgZG8gdGhlIGxvYWQgdGhyb3VnaCBOZXR3b3JrUHJvY2Vzcy4KKyAgICAg
ICAgSW4gY2FzZSBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2ggaXMgbm90IGFibGUgdG8gbG9hZCB0
aHJvdWdoIFNlcnZpY2VXb3JrZXIsCisgICAgICAgIGl0IHdpbGwgZmFsbGJhY2sgdG8gV2ViUmVz
b3VyY2VMb2FkZXIgdGhyb3VnaCBhIGZhbGxiYWNrIGNhbGxiYWNrLgorCisgICAgICAgIExvYWRp
bmcgdGhyb3VnaCBTZXJ2aWNlIFdvcmtlciBpcyBkb25lIGN1cnJlbnRseSBpZjoKKyAgICAgICAg
LSBUaGVyZSBpcyBhIHNlcnZpY2Ugd29ya2VyIHJlZ2lzdGVyZWQgZm9yIHRoYXQgb3JpZ2luCisg
ICAgICAgIC0gUmVxdWVzdCBpcyBhIHN1YnJlc291cmNlCisgICAgICAgIC0gc2VydmljZSB3b3Jr
ZXJzIG1vZGUgaXMgYWxsCisgICAgICAgIFRoZXJlIHdpbGwgYmUgY2FzZXMgd2hlcmUgdGhlIHNl
cnZpY2Ugd29ya2VyIHdpbGwgbm90IGRvIHRoZSBsb2FkaW5nLCBmb3IgaW5zdGFuY2Ugd2hlbiBm
ZXRjaCBldmVudCBoYW5kbGVyIGlzIG5vdCBzZXQuCisgICAgICAgIEZ1dHVyZSB3b3JrIHNob3Vs
ZCB0cnkgdG8gcmVkdWNlIHRoZSBjYXNlcyB3aGVyZSB0aGUgSVBDIGRhbmNlIGlzIGRvbmUgdW5u
ZWNlc3NhcmlseS4KKworICAgICAgICBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2ggaXMgcmVzcG9u
c2libGUgdG8gYWRhcHQgdGhlIFNlcnZpY2VXb3JrZXIgcmVzcG9uc2UgdG8gUmVzb3VyY2VMb2Fk
ZXIuCisgICAgICAgIEluIHBhcnRpY3VsYXIsIGl0IGlzIGNhbGxpbmcgUmVzb3VyY2VMb2FkZXIg
ZXJyb3IgY2FsbGJhY2sgaWYgcmVzcG9uc2UgaXMgb2YgdHlwZSBlcnJvci4KKyAgICAgICAgSXQg
c2hvdWxkIGNhbGwgUmVzb3VyY2VMb2FkZXIgcmVkaXJlY3Rpb24gY2FsbGJhY2sgaWYgcmVzcG9u
c2UgaXMgYSByZWRpcmVjdGlvbiByZXNwb25zZS4KKyAgICAgICAgVGhpcyB3aWxsIGJlIGRvbmUg
YXMgYSBmb2xsb3ctdXAuCisKKyAgICAgICAgSW1wbGVtZW50aW5nIHRoZSBJUEMgY29tbXVuaWNh
dGlvbiBkZWRpY2F0ZWQgdG8gZmV0Y2ggYmV0d2VlbiBXZWJQcm9jZXNzIGFuZCBTZXJ2aWNlV29y
a2VyIHRocm91Z2ggU3RvcmFnZVByb2Nlc3MuCisgICAgICAgIEluIHRoZSBmdXR1cmUsIFdlYlBy
b2Nlc3Mgc2hvdWxkIGNyZWF0ZSBhIGRpcmVjdCBJUEMgY29tbXVuaWNhdGlvbiB0byB0aGUgU2Vy
dmljZVdvcmtlciBwcm9jZXNzLgorCisgICAgICAgIE1vdmVkIFNXQ29udGV4dE1hbmFnZXIgZnJv
bSBXZWJDb3JlIHRvIFdlYktpdCBhbmQgcmVuYW1lZCBpdCB0byBTZXJ2aWNlV29ya2VyQ29udGV4
dE1hbmFnZXIuCisgICAgICAgIFRoaXMgY2xhc3MgaXMgbW92ZWQgdG8gV2ViS2l0IGFzIGl0IHdp
bGwgaGF2ZSB0byBoYW5kbGUgSVBDIGFuZCBoYXZpbmcgYSBzZXBhcmF0aW9uIHdpbGwgYWRkIHNv
bWUgdW5uZWNlc3NhcnkgYm9pbGVycGxhdGUuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5t
YWtlOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpz
dGFydEZldGNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpkaWRS
ZWNlaXZlRmV0Y2hSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVj
dGlvbjo6ZGlkUmVjZWl2ZUZldGNoRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVy
Q29ubmVjdGlvbjo6ZGlkRmluaXNoRmV0Y2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZl
ckNvbm5lY3Rpb246OmZhaWxlZEZldGNoKToKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFN0b3JhZ2VQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIFN0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZVByb2Nlc3M6OmZhaWxlZEZldGNoKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFn
ZVByb2Nlc3M6OmRpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZVByb2Nlc3M6OmRpZFJlY2VpdmVGZXRjaERhdGEpOgorICAgICAgICAoV2ViS2l0OjpTdG9y
YWdlUHJvY2Vzczo6ZGlkRmluaXNoRmV0Y2gpOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1N0
b3JhZ2VQcm9jZXNzLmg6CisgICAgICAgICogU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3Mu
bWVzc2FnZXMuaW46CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nl
c3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpkaWRS
ZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0
Y2g6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckNsaWVu
dEZldGNoOjpkaWRGaW5pc2hGZXRjaCk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJD
bGllbnRGZXRjaDo6ZGlkRmFpbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaC5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3Jh
Z2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4
dE1hbmFnZXIuY3BwLgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFn
ZXI6OnN0YXJ0U2VydmljZVdvcmtlckNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNl
V29ya2VyQ29udGV4dE1hbmFnZXI6OnN0YXJ0RmV0Y2gpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
U3RvcmFnZS9TZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuaDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaC4KKyAg
ICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyOjpTZXJ2aWNlV29ya2Vy
Q29udGV4dE1hbmFnZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVu
dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246
OnN0YXJ0RmV0Y2gpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENv
bm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtl
clByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2hvdWxkSGFuZGxlRmV0Y2gpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OmhhbmRsZUZldGNoKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlclByb3ZpZGVyOjpkaWRSZWNlaXZlU2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
czo6Z2V0V29ya2VyQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzOjpzdGFydFNlcnZpY2VXb3JrZXJDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6c3RhcnRGZXRjaEluU2VydmljZVdvcmtlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
OgorCiAyMDE3LTEwLTE4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWRkIGFuIGVmZmljaWVudCBkYXRhIHN0cnVjdHVyZSBmb3IgV2ViQ29yZSB0byBxdWVyeSBp
ZiB0aGVyZSBpcyBhIFNlcnZpY2UgV29ya2VyIHJlZ2lzdGVyZWQgZm9yIGEgZ2l2ZW4gb3JpZ2lu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggZDVhOTIwNDk0OWQ4YmJlOGRiYWI2OTA2OTk2OTZlZTk0NTM4N2U5NC4uNzNkNTJjYTM1
MGJjZThlMzVhYTk5NTgyYzU4ZWY3ZTNmMjZiYjc3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjMzNiw4ICsyMzM2LDYgQEAK
IAkJNTE3QTYzQzYxQjc0MzE5MjAwRTdEQ0RDIC8qIEtleWVkRW5jb2RlckNGLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdBNjNDMjFCNzQzMTdFMDBF
N0RDREMgLyogS2V5ZWRFbmNvZGVyQ0YuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1MTdCMjVBOTFDQzgyQjJBMDA2MUMwMTEgLyogSURCQ29ubmVj
dGlvblByb3h5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxN0IyNUE3MUNDODIwMzIwMDYxQzAxMSAvKiBJREJDb25uZWN0aW9uUHJveHkuY3BwICov
OyB9OwogCQk1MTdCMjVBQTFDQzgyQjJBMDA2MUMwMTEgLyogSURCQ29ubmVjdGlvblByb3h5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdCMjVBODFD
QzgyMDMyMDA2MUMwMTEgLyogSURCQ29ubmVjdGlvblByb3h5LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTE3Qzg3MEExRjhFQkIyNTAwRUI4MDc2
IC8qIFNXQ29udGV4dE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE3Qzg3MDgxRjhFQjlCRjAwRUI4MDc2IC8qIFNXQ29udGV4dE1hbmFn
ZXIuY3BwICovOyB9OwotCQk1MTdDODcwQjFGOEVCQjI1MDBFQjgwNzYgLyogU1dDb250ZXh0TWFu
YWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3
Qzg3MDkxRjhFQjlDMDAwRUI4MDc2IC8qIFNXQ29udGV4dE1hbmFnZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTdDODcxODFGOEZENEQ5MDBF
QjgwNzYgLyogU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0M4NzE2MUY4RkQ0RDMwMEVCODA3NiAvKiBT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwICovOyB9OwogCQk1MTdERUVFNTFERTk0QURDMDBC
OTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3REVFRTMxREU5NEFEQzAwQjkxNjQ0
IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbSAqLzsgfTsKIAkJNTE3REVFRTgx
REU5NEIwODAwQjkxNjQ0IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3REVFRTcxREU5NEIw
ODAwQjkxNjQ0IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDI2OSw4ICsxMDI2Nyw2
IEBACiAJCTUxN0E2M0MyMUI3NDMxN0UwMEU3RENEQyAvKiBLZXllZEVuY29kZXJDRi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLZXllZEVuY29kZXJDRi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTdCMjVBNzFDQzgyMDMyMDA2MUMwMTEgLyogSURCQ29ubmVj
dGlvblByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQkNv
bm5lY3Rpb25Qcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0IyNUE4
MUNDODIwMzIwMDYxQzAxMSAvKiBJREJDb25uZWN0aW9uUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSURCQ29ubmVjdGlvblByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTUxN0M4NzA4MUY4RUI5QkYwMEVCODA3NiAvKiBTV0NvbnRleHRNYW5hZ2Vy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNXQ29udGV4dE1hbmFn
ZXIuY3BwOyBwYXRoID0gd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5j
cHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKLQkJNTE3Qzg3MDkxRjhFQjlDMDAwRUI4
MDc2IC8qIFNXQ29udGV4dE1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gU1dDb250ZXh0TWFuYWdlci5oOyBwYXRoID0gd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dD
b250ZXh0TWFuYWdlci5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTUxN0M4NzEw
MUY4RUU3MkUwMEVCODA3NiAvKiBTZXJ2aWNlV29ya2VyVGhyZWFkLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IFNlcnZpY2VXb3JrZXJUaHJlYWQuaDsgcGF0aCA9IHdvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaDsgc291cmNlVHJlZSA9IFNPVVJD
RV9ST09UOyB9OwogCQk1MTdDODcxMTFGOEVFNzJGMDBFQjgwNzYgLyogU2VydmljZVdvcmtlclRo
cmVhZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTZXJ2aWNlV29y
a2VyVGhyZWFkLmNwcDsgcGF0aCA9IHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWQuY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTUxN0M4NzE2MUY4
RkQ0RDMwMEVCODA3NiAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5MTA1LDggKzE5MTAxLDYgQEAKIAkJCWNo
aWxkcmVuID0gKAogCQkJCTUxN0M4NzExMUY4RUU3MkYwMEVCODA3NiAvKiBTZXJ2aWNlV29ya2Vy
VGhyZWFkLmNwcCAqLywKIAkJCQk1MTdDODcxMDFGOEVFNzJFMDBFQjgwNzYgLyogU2VydmljZVdv
cmtlclRocmVhZC5oICovLAotCQkJCTUxN0M4NzA4MUY4RUI5QkYwMEVCODA3NiAvKiBTV0NvbnRl
eHRNYW5hZ2VyLmNwcCAqLywKLQkJCQk1MTdDODcwOTFGOEVCOUMwMDBFQjgwNzYgLyogU1dDb250
ZXh0TWFuYWdlci5oICovLAogCQkJKTsKIAkJCXBhdGggPSBjb250ZXh0OwogCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKQEAgLTMwNjAwLDcgKzMwNTk0LDYgQEAKIAkJCQlCMjIyN0FGNjBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHWm9vbUFuZFBhbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJFNEVD
OTgwRDAwQzIyQjAwNDMyNjQzIC8qIFNWR1pvb21FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTE3QTUzMUQxRjRCNTNCMTAwRENEQzBBIC8qIFNXQ2xpZW50Q29ubmVjdGlvbi5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJNTE3Qzg3MEIxRjhFQkIyNTAwRUI4MDc2IC8qIFNXQ29udGV4dE1hbmFnZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUxN0E1MkYwMUY0NzUzNUIwMERDREMwQSAvKiBTV1NlcnZl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGNjQ1OTcxRjRBNjg2RjAwQjU0REVEIC8qIFNXU2Vy
dmVyUmVnaXN0cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTdBNTM0NjFGNTBDMTdGMDBE
Q0RDMEEgLyogU1dTZXJ2ZXJXb3JrZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMzQ0MTEsNyArMzQ0
MDQsNiBAQAogCQkJCUIyMjI3QUY1MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdab29tQW5kUGFuLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUIyRTRFQzk3MEQwMEMyMkIwMDQzMjY0MyAvKiBTVkdab29t
RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE3QTUzMUMxRjRCNTNCMTAwRENEQzBBIC8q
IFNXQ2xpZW50Q29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTdDODcwQTFGOEVC
QjI1MDBFQjgwNzYgLyogU1dDb250ZXh0TWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
MTdBNTJGMTFGNDc1NEU3MDBEQ0RDMEEgLyogU1dTZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTFGNjQ1OTYxRjRBNjg2RjAwQjU0REVEIC8qIFNXU2VydmVyUmVnaXN0cmF0aW9uLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTUxN0E1MzQ1MUY1MEMxN0YwMERDREMwQSAvKiBTV1NlcnZlcldv
cmtlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oCmluZGV4IDMyZjE5YzMwM2ZmMDljMDMzODBhNGYxOTFhMjA0YjAwOWMwYjlm
NjEuLjk2ZGRkNjIwOGE2NTkxMjFiNWFkODhkMWUyZTE1MjMyMzliYTU5N2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtMjMwLDYgKzIzMCwxMSBA
QCBwdWJsaWM6CiAKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlKCk7CiAKKyNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCisgICAgdWludDY0X3Qgc2VsZWN0ZWRTZXJ2aWNlV29ya2VySWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdvcmtlcklkZW50aWZpZXI7IH0KKyAg
ICB2b2lkIHNldFNlbGVjdGVkU2VydmljZVdvcmtlcklkZW50aWZpZXIodWludDY0X3QgaWRlbnRp
ZmllcikgeyBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gaWRlbnRpZmllcjsgfQorI2VuZGlm
CisKIHByb3RlY3RlZDoKICAgICBjbGFzcyBBZGRDb25zb2xlTWVzc2FnZVRhc2sgOiBwdWJsaWMg
VGFzayB7CiAgICAgcHVibGljOgpAQCAtMjk3LDYgKzMwMiwxMCBAQCBwcml2YXRlOgogI2lmICFB
U1NFUlRfRElTQUJMRUQgfHwgRU5BQkxFKFNFQ1VSSVRZX0FTU0VSVElPTlMpCiAgICAgYm9vbCBt
X2FjdGl2ZURPTU9iamVjdFJlbW92YWxGb3JiaWRkZW4geyBmYWxzZSB9OwogI2VuZGlmCisKKyNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgdWludDY0X3QgbV9zZXJ2aWNlV29ya2VySWRl
bnRpZmllciB7IDAgfTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApp
bmRleCA5MDJjODllMzk3MzdjNDExNDFlMzVjMmNlNDJlOTI2Njk3NDBjMjllLi40YjQ4ZjUxZWMw
MTc1ZmM2ZjAxZWViNGNlMWM5MTdiZjIwM2ZlODcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMTAzLDYgKzEwMywxMSBA
QCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcihEb2N1
bWVudCYgZG9jdW1lbnQsIFRocmVhZGFibAogewogICAgIHJlbGF4QWRvcHRpb25SZXF1aXJlbWVu
dCgpOwogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIGlmIChtX29wdGlvbnMuc2Vy
dmljZVdvcmtlcnNNb2RlID09IFNlcnZpY2VXb3JrZXJzTW9kZTo6QWxsICYmICFtX29wdGlvbnMu
c2VydmljZVdvcmtlcklkZW50aWZpZXIpCisgICAgICAgIG1fb3B0aW9ucy5zZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciA9IGRvY3VtZW50LnNlbGVjdGVkU2VydmljZVdvcmtlcklkZW50aWZpZXIoKTsK
KyNlbmRpZgorCiAgICAgLy8gU2V0dGluZyBhIHJlZmVycmVyIGhlYWRlciBpcyBvbmx5IHN1cHBv
cnRlZCBpbiB0aGUgYXN5bmMgY29kZSBwYXRoLgogICAgIEFTU0VSVChtX2FzeW5jIHx8IG1fcmVm
ZXJyZXIuaXNFbXB0eSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zl
dGNoT3B0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZldGNoT3B0aW9ucy5oCmluZGV4
IGE0MDQyMDMwNzc0NDA0MmYxYWMyNzYyZDYzMjM2OWY5ZWFjYjUxMjQuLjczYjk2MjRjODYwOTE2
ZGViOTkzNzc0Y2FmODI4Zjk3NGY3ZDIxNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GZXRjaE9wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRmV0Y2hPcHRp
b25zLmgKQEAgLTY5LDYgKzY5LDIxIEBAIGlubGluZSBGZXRjaE9wdGlvbnM6OkZldGNoT3B0aW9u
cyhEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbiwgTW9kZSBtb2RlLCBDcmVkZW50aWFsCiB7CiB9CiAK
K2lubGluZSBib29sIGlzUG90ZW50aWFsTmF2aWdhdGlvbk9yU3VicmVzb3VyY2VSZXF1ZXN0KEZl
dGNoT3B0aW9uczo6RGVzdGluYXRpb24gZGVzdGluYXRpb24pCit7CisgICAgcmV0dXJuIGRlc3Rp
bmF0aW9uID09IEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246Ok9iamVjdAorICAgICAgICB8fCBk
ZXN0aW5hdGlvbiA9PSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpFbWJlZDsKK30KKworaW5s
aW5lIGJvb2wgaXNOb25TdWJyZXNvdXJjZVJlcXVlc3QoRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlv
biBkZXN0aW5hdGlvbikKK3sKKyAgICByZXR1cm4gZGVzdGluYXRpb24gPT0gRmV0Y2hPcHRpb25z
OjpEZXN0aW5hdGlvbjo6RG9jdW1lbnQKKyAgICAgICAgfHwgZGVzdGluYXRpb24gPT0gRmV0Y2hP
cHRpb25zOjpEZXN0aW5hdGlvbjo6UmVwb3J0CisgICAgICAgIHx8IGRlc3RpbmF0aW9uID09IEZl
dGNoT3B0aW9uczo6RGVzdGluYXRpb246OlNlcnZpY2V3b3JrZXIKKyAgICAgICAgfHwgZGVzdGlu
YXRpb24gPT0gRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6U2hhcmVkd29ya2VyCisgICAgICAg
IHx8IGRlc3RpbmF0aW9uID09IEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OldvcmtlcjsKK30K
KwogfQogCiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRlck9wdGlvbnMuaAppbmRleCBkMmE5MmMzZDNkY2Y4MmU1OGYyMmQwMzVjYmM3ZmQwYjI1
MDU2ZjNlLi41YzVhMGQ0MjdiNGU5OTYwYmI3YzVjN2QxZjFmYWNlNTlhNDQ1NGJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oCkBAIC05Miw2ICs5
MiwxMSBAQCBlbnVtIGNsYXNzIEluaXRpYXRvckNvbnRleHQgewogICAgIFdvcmtlciwKIH07CiAK
K2VudW0gY2xhc3MgU2VydmljZVdvcmtlcnNNb2RlIHsKKyAgICBBbGwsCisgICAgTm9uZSwKK307
CisKIHN0cnVjdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMgOiBwdWJsaWMgRmV0Y2hPcHRpb25zIHsK
ICAgICBSZXNvdXJjZUxvYWRlck9wdGlvbnMoKSB7IH0KIApAQCAtMTI0LDYgKzEyOSw4IEBAIHN0
cnVjdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMgOiBwdWJsaWMgRmV0Y2hPcHRpb25zIHsKICAgICBD
YWNoaW5nUG9saWN5IGNhY2hpbmdQb2xpY3kgeyBDYWNoaW5nUG9saWN5OjpBbGxvd0NhY2hpbmcg
fTsKICAgICBTYW1lT3JpZ2luRGF0YVVSTEZsYWcgc2FtZU9yaWdpbkRhdGFVUkxGbGFnIHsgU2Ft
ZU9yaWdpbkRhdGFVUkxGbGFnOjpVbnNldCB9OwogICAgIEluaXRpYXRvckNvbnRleHQgaW5pdGlh
dG9yQ29udGV4dCB7IEluaXRpYXRvckNvbnRleHQ6OkRvY3VtZW50IH07CisgICAgU2VydmljZVdv
cmtlcnNNb2RlIHNlcnZpY2VXb3JrZXJzTW9kZSB7IFNlcnZpY2VXb3JrZXJzTW9kZTo6QWxsIH07
CisgICAgdWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIgeyAwIH07CiAKICAgICBDbGll
bnRDcmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xpY3kgeyBDbGllbnRDcmVkZW50
aWFsUG9saWN5OjpDYW5ub3RBc2tDbGllbnRGb3JDcmVkZW50aWFscyB9OwogICAgIHVuc2lnbmVk
IG1heFJlZGlyZWN0Q291bnQgeyAyMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dv
cmtlclRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDMzYmIxMmU4MWI4YTFjNDlhMGE4Njc5MWI5
NWRjOGEyNWU2NWMzZTguLmUyN2FhYThkYjRjNGI2YTEzNjVmMDhjZWFhYjQyZTM4OGY3YWVhMDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5j
cHAKQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgbG9hZFJlc291cmNlU3luY2hy
b25vdXNseU1vZGVbXSA9ICJsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5TW8KIFdvcmtlclRocmVh
ZGFibGVMb2FkZXI6OldvcmtlclRocmVhZGFibGVMb2FkZXIoV29ya2VyR2xvYmFsU2NvcGUmIHdv
cmtlckdsb2JhbFNjb3BlLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiBjbGllbnQsIGNvbnN0IFN0
cmluZyYgdGFza01vZGUsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFRocmVhZGFi
bGVMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQogICAgIDog
bV93b3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSkKICAgICAsIG1fd29ya2VyQ2xp
ZW50V3JhcHBlcihUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcjo6Y3JlYXRlKGNsaWVudCwg
b3B0aW9ucy5pbml0aWF0b3IpKQotICAgICwgbV9icmlkZ2UoKm5ldyBNYWluVGhyZWFkQnJpZGdl
KG1fd29ya2VyQ2xpZW50V3JhcHBlci5nZXQoKSwgd29ya2VyR2xvYmFsU2NvcGUudGhyZWFkKCku
d29ya2VyTG9hZGVyUHJveHkoKSwgdGFza01vZGUsIFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMs
IHJlZmVycmVyLmlzRW1wdHkoKSA/IHdvcmtlckdsb2JhbFNjb3BlLnVybCgpLnN0cmlwcGVkRm9y
VXNlQXNSZWZlcnJlcigpIDogcmVmZXJyZXIsIHdvcmtlckdsb2JhbFNjb3BlLnNlY3VyaXR5T3Jp
Z2luKCksIHdvcmtlckdsb2JhbFNjb3BlLmNvbnRlbnRTZWN1cml0eVBvbGljeSgpKSkKKyAgICAs
IG1fYnJpZGdlKCpuZXcgTWFpblRocmVhZEJyaWRnZShtX3dvcmtlckNsaWVudFdyYXBwZXIuZ2V0
KCksIHdvcmtlckdsb2JhbFNjb3BlLnRocmVhZCgpLndvcmtlckxvYWRlclByb3h5KCksIHRhc2tN
b2RlLCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCByZWZlcnJlci5pc0VtcHR5KCkgPyB3b3Jr
ZXJHbG9iYWxTY29wZS51cmwoKS5zdHJpcHBlZEZvclVzZUFzUmVmZXJyZXIoKSA6IHJlZmVycmVy
LCB3b3JrZXJHbG9iYWxTY29wZSkpCiB7CiB9CiAKQEAgLTEwMSwxMiArMTAxLDE1IEBAIExvYWRl
clRhc2tPcHRpb25zOjpMb2FkZXJUYXNrT3B0aW9ucyhjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0
aW9ucyYgb3B0aW9ucywgY29uCiB9CiAKIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJl
YWRCcmlkZ2U6Ok1haW5UaHJlYWRCcmlkZ2UoVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIm
IHdvcmtlckNsaWVudFdyYXBwZXIsIFdvcmtlckxvYWRlclByb3h5JiBsb2FkZXJQcm94eSwgY29u
c3QgU3RyaW5nJiB0YXNrTW9kZSwKLSAgICBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25z
dCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiBvdXRnb2lu
Z1JlZmVycmVyLAotICAgIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgY29u
c3QgQ29udGVudFNlY3VyaXR5UG9saWN5KiBjb250ZW50U2VjdXJpdHlQb2xpY3kpCisgICAgUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9w
dGlvbnMsIGNvbnN0IFN0cmluZyYgb3V0Z29pbmdSZWZlcnJlciwgV29ya2VyR2xvYmFsU2NvcGUm
IGdsb2JhbFNjb3BlKQogICAgIDogbV93b3JrZXJDbGllbnRXcmFwcGVyKCZ3b3JrZXJDbGllbnRX
cmFwcGVyKQogICAgICwgbV9sb2FkZXJQcm94eShsb2FkZXJQcm94eSkKICAgICAsIG1fdGFza01v
ZGUodGFza01vZGUuaXNvbGF0ZWRDb3B5KCkpCiB7CisKKyAgICBhdXRvKiBzZWN1cml0eU9yaWdp
biA9IGdsb2JhbFNjb3BlLnNlY3VyaXR5T3JpZ2luKCk7CisgICAgYXV0byogY29udGVudFNlY3Vy
aXR5UG9saWN5ID0gZ2xvYmFsU2NvcGUuY29udGVudFNlY3VyaXR5UG9saWN5KCk7CisKICAgICBB
U1NFUlQoc2VjdXJpdHlPcmlnaW4pOwogICAgIEFTU0VSVChjb250ZW50U2VjdXJpdHlQb2xpY3kp
OwogCkBAIC0xMjEsNiArMTI0LDExIEBAIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJl
YWRCcmlkZ2U6Ok1haW5UaHJlYWRCcmlkZ2UoVGhyZWFkYWJsZUxvYWRlckNsaWVuCiAgICAgQVNT
RVJUKG9wdGlvbnNDb3B5LT5vcHRpb25zLmluaXRpYXRvckNvbnRleHQgPT0gSW5pdGlhdG9yQ29u
dGV4dDo6RG9jdW1lbnQpOwogICAgIG9wdGlvbnNDb3B5LT5vcHRpb25zLmluaXRpYXRvckNvbnRl
eHQgPSBJbml0aWF0b3JDb250ZXh0OjpXb3JrZXI7CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCisgICAgb3B0aW9uc0NvcHktPm9wdGlvbnMuc2VydmljZVdvcmtlcnNNb2RlID0gZ2xvYmFs
U2NvcGUuaXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKSA/IFNlcnZpY2VXb3JrZXJzTW9kZTo6
Tm9uZSA6IFNlcnZpY2VXb3JrZXJzTW9kZTo6QWxsOworICAgIG9wdGlvbnNDb3B5LT5vcHRpb25z
LnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gZ2xvYmFsU2NvcGUuc2VsZWN0ZWRTZXJ2aWNlV29y
a2VySWRlbnRpZmllcigpOworI2VuZGlmCisKICAgICAvLyBDYW4gd2UgYmVuZWZpdCBmcm9tIHJl
cXVlc3QgYmVpbmcgYW4gci12YWx1ZSB0byBjcmVhdGUgbW9yZSBlZmZpY2llbnRseSBpdHMgaXNv
bGF0ZWQgY29weT8KICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoW3RoaXMsIHJl
cXVlc3QgPSByZXF1ZXN0Lmlzb2xhdGVkQ29weSgpLCBvcHRpb25zID0gV1RGTW92ZShvcHRpb25z
Q29weSksIGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHkgPSBXVEZNb3ZlKGNvbnRlbnRTZWN1cml0
eVBvbGljeUNvcHkpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsK
ICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oCmluZGV4IDk3ZWMyZDQxZjlkOWUwMWRjYmI3MTc5
YzYyM2RiNzNhYjFjNWEzNTQuLjIyYWIxNDlmZWY3NDczN2VmYjY0ZGI5ZGNjN2YxNjEwZGY1MWZi
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIu
aApAQCAtODgsNyArODgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNsYXNzIE1h
aW5UaHJlYWRCcmlkZ2UgOiBwdWJsaWMgVGhyZWFkYWJsZUxvYWRlckNsaWVudCB7CiAgICAgICAg
IHB1YmxpYzoKICAgICAgICAgICAgIC8vIEFsbCBleGVjdXRlZCBvbiB0aGUgd29ya2VyIGNvbnRl
eHQncyB0aHJlYWQuCi0gICAgICAgICAgICBNYWluVGhyZWFkQnJpZGdlKFRocmVhZGFibGVMb2Fk
ZXJDbGllbnRXcmFwcGVyJiwgV29ya2VyTG9hZGVyUHJveHkmLCBjb25zdCBTdHJpbmcmIHRhc2tN
b2RlLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmLCBj
b25zdCBTdHJpbmcmIG91dGdvaW5nUmVmZXJyZXIsIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiwgY29u
c3QgQ29udGVudFNlY3VyaXR5UG9saWN5Kik7CisgICAgICAgICAgICBNYWluVGhyZWFkQnJpZGdl
KFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyJiwgV29ya2VyTG9hZGVyUHJveHkmLCBjb25z
dCBTdHJpbmcmIHRhc2tNb2RlLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgVGhyZWFkYWJsZUxv
YWRlck9wdGlvbnMmLCBjb25zdCBTdHJpbmcmIG91dGdvaW5nUmVmZXJyZXIsIFdvcmtlckdsb2Jh
bFNjb3BlJik7CiAgICAgICAgICAgICB2b2lkIGNhbmNlbCgpOwogICAgICAgICAgICAgdm9pZCBk
ZXN0cm95KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VSZXF1ZXN0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlcXVlc3RCYXNlLmgKaW5kZXggYjVlOTQ4ZWFlZWMxZmQ5MGRkYmU2OThmOTY2ZmJj
N2U4NWNlOWNkZC4uZGE2YWQ2NWYxMTgyMGE1MmVlNTQxMjhmMzcwN2NlZTAwZjQxNzQ3NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RC
YXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVl
c3RCYXNlLmgKQEAgLTEwMCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgaHR0cENvbnRlbnRUeXBlKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRIVFRQQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBjbGVhckhUVFBD
b250ZW50VHlwZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJIVFRQQ29udGVudFR5
cGUoKTsKIAogICAgIGJvb2wgaGFzSFRUUEhlYWRlcihIVFRQSGVhZGVyTmFtZSkgY29uc3Q7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNw
b25zZUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNw
b25zZUJhc2UuaAppbmRleCBhYmNkY2VhZDc3OWNhY2RiNzRmMmZmMmZiNmRiYWNiZGI0OWVlYTNm
Li5lZTM3M2RkZWVhYTE1MWE0MDgzM2QyMWJjMzY5ZWI0NGM4MWU2Njc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5o
CkBAIC0xNTMsNyArMTUzLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gMTI4MDsKICAgICB9
CiAKLSAgICB2b2lkIHNldFR5cGUoVHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRU
eXBlKFR5cGUpOwogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCiAg
ICAgdm9pZCBzZXRSZWRpcmVjdGVkKGJvb2wgaXNSZWRpcmVjdGVkKSB7IG1faXNSZWRpcmVjdGVk
ID0gaXNSZWRpcmVjdGVkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAppbmRl
eCBjZmUzNDNlZWY0YTVhZjViMjcwYzE4YjY4NTA4ZjBmNjhjNmFhYjZjLi4zOTVmZDgwNDk5OGM2
MGI3Y2I1MzczODhhZTBmZDRkMDc4ZTRkYjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
VGhyZWFkLmgKQEAgLTYxLDcgKzYxLDcgQEAgY2xhc3MgV29ya2VyVGhyZWFkIDogcHVibGljIFJl
ZkNvdW50ZWQ8V29ya2VyVGhyZWFkPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V29ya2VyVGhy
ZWFkKCk7CiAKLSAgICBib29sIHN0YXJ0KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzdGFy
dCgpOwogICAgIHZvaWQgc3RvcCgpOwogCiAgICAgVGhyZWFkSWRlbnRpZmllciB0aHJlYWRJRCgp
IGNvbnN0IHsgcmV0dXJuIG1fdGhyZWFkID8gbV90aHJlYWQtPmlkKCkgOiAwOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRh
aW5lci5jcHAKaW5kZXggZDMwZGM1N2E2ZDhkYjA0MDE4MTk3ZTg2MjFmNmNhMjkxODgxOGRjOS4u
OTUzNDUxNzdkNzAyNmI5MTc4NmVhMDJiMzU1NWVmOWY2ZWY1YTVhNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVy
LmNwcApAQCAtMTc5LDYgKzE3OSw5IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9i
UmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAorICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgcHJvcGVyIHNlbGVjdGlv
biBvZiBzZXJ2aWNlIHdvcmtlcnMuCisgICAgY29udGV4dC0+c2V0U2VsZWN0ZWRTZXJ2aWNlV29y
a2VySWRlbnRpZmllcihkYXRhLmlkZW50aWZpZXIpOworCiAgICAgYXV0byByZWdpc3RyYXRpb24g
PSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpjcmVhdGUoKmNvbnRleHQsIGRhdGEpOwogICAg
IGpvYi5wcm9taXNlKCkucmVzb2x2ZTxJRExJbnRlcmZhY2U8U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbj4+KHJlZ2lzdHJhdGlvbi5nZXQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NGZlNTdlMzEyMTU3NzFjNmE3YjgzZjVmZGJiNjYy
M2RkNDJhMGJlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJTV0NvbnRleHRNYW5hZ2VyLmgiCi0KLSNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCi0KLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSA8cGFsL1Nl
c3Npb25JRC5oPgotCi11c2luZyBuYW1lc3BhY2UgUEFMOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLVNXQ29udGV4dE1hbmFnZXImIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpCi17Ci0g
ICAgc3RhdGljIFNXQ29udGV4dE1hbmFnZXIqIHNoYXJlZE1hbmFnZXIgPSBuZXcgU1dDb250ZXh0
TWFuYWdlcjsKLSAgICByZXR1cm4gKnNoYXJlZE1hbmFnZXI7Ci19Ci0KLVNXQ29udGV4dE1hbmFn
ZXI6OlNXQ29udGV4dE1hbmFnZXIoKQotewotCi19Ci0KLUV4Y2VwdGlvbk9yPHVpbnQ2NF90PiBT
V0NvbnRleHRNYW5hZ2VyOjpzdGFydFNlcnZpY2VXb3JrZXJDb250ZXh0KHVpbnQ2NF90IHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRh
dGEpCi17Ci0gICAgLy8gRklYTUU6IFByb3ZpZGUgYSBzZW5zaWNhbCBzZXNzaW9uIElECi0KLSAg
ICBhdXRvIHRocmVhZCA9IFNlcnZpY2VXb3JrZXJUaHJlYWQ6OmNyZWF0ZShzZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciwgZGF0YSwgU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwotICAg
IGF1dG8gdGhyZWFkSWRlbnRpZmllciA9IHRocmVhZC0+aWRlbnRpZmllcigpOwotICAgIGF1dG8g
cmVzdWx0ID0gbV93b3JrZXJUaHJlYWRNYXAuYWRkKHRocmVhZElkZW50aWZpZXIsIFdURk1vdmUo
dGhyZWFkKSk7Ci0gICAgQVNTRVJUKHJlc3VsdC5pc05ld0VudHJ5KTsKLQotICAgIHJlc3VsdC5p
dGVyYXRvci0+dmFsdWUtPnN0YXJ0KCk7Ci0gICAgCi0gICAgTE9HKFNlcnZpY2VXb3JrZXIsICJD
b250ZXh0IHByb2Nlc3MgUElEOiAlaSBzdGFydGVkIHdvcmtlciB0aHJlYWQgJXNcbiIsIGdldHBp
ZCgpLCBkYXRhLndvcmtlcklELnV0ZjgoKS5kYXRhKCkpOwotICAgIAotICAgIHJldHVybiB0aHJl
YWRJZGVudGlmaWVyOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGUxNWQ3ZTY5ODIzMjE0NzIzMGI0NzZhZmI4MzFlNDhhMGYyMGUzMDQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCisrKyAvZGV2L251
bGwKQEAgLTEsNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQotCi0jaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKLSNpbmNsdWRl
ICJTZXJ2aWNlV29ya2VyVGhyZWFkLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhOwotCi1j
bGFzcyBTV0NvbnRleHRNYW5hZ2VyIHsKLXB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgU1dDb250ZXh0TWFuYWdlciYgc2luZ2xldG9uKCk7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCBF
eGNlcHRpb25Pcjx1aW50NjRfdD4gc3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4dCh1aW50NjRfdCBz
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRh
Jik7Ci0KLXByaXZhdGU6Ci0gICAgU1dDb250ZXh0TWFuYWdlcigpOwotICAgIAotICAgIEhhc2hN
YXA8dWludDY0X3QsIFJlZlB0cjxTZXJ2aWNlV29ya2VyVGhyZWFkPj4gbV93b3JrZXJUaHJlYWRN
YXA7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKaW5kZXggMjJhMDdiODlmNTljZTU4
MDQyYWIwNTI3OWE5YWIwOThlOGE0NTk2MC4uOGRiYTQ4OTg4OTNiNzAwNDRiNWU3ZjYyZjcyNmEy
ZGYwY2RmOTU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaApAQCAtNTIsNyArNTIsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgdm9pZCBydW5FdmVudExvb3AoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToK
LSAgICBTZXJ2aWNlV29ya2VyVGhyZWFkKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmLCBQQUw6OlNlc3Npb25JRCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgU2VydmljZVdvcmtlclRocmVhZCh1aW50NjRfdCBzZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiwgUEFMOjpT
ZXNzaW9uSUQpOwogCiAgICAgdWludDY0X3QgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcjsK
ICAgICBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgbV9kYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5k
ZXggZDQxZWRiZjExNjA2NjllMTNlOGQ4MzkzYTY1NzE1NzZlMzJmZjZiMy4uNWZhMzYxZTUxMGRh
NmIwOGJlNDM5MGYzODJiZDdkYzJiMjg0OGUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC02ODMs
NiArNjgzLDcgQEAgc2V0KFdlYktpdF9NRVNTQUdFU19JTl9GSUxFUwogICAgIFdlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIubWVzc2FnZXMuaW4KICAgICBX
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkubWVzc2FnZXMuaW4KIAorICAgIFdlYlByb2Nl
c3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gubWVzc2FnZXMuaW4KICAgICBXZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCiAKICAgICBX
ZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5tZXNzYWdlcy5p
bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNl
L1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGJhNDRjYmEyY2JiZDhkNjc5YjRkYjQy
NDQ5NWRmODM4NTFjNTQ4YzMuLjA4YjgwOWEyMzA4YTliN2UwYzMzNjhlYmZiYjdkNTAyYWY4ZTg3
NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9T
b3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTEyNSw2ICsxMjUsNyBAQCBNRVNT
QUdFX1JFQ0VJVkVSUyA9IFwKICAgICBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eSBcCiAgICAgUmVt
b3RlV2ViSW5zcGVjdG9yVUkgXAogICAgIFNlY0l0ZW1TaGltUHJveHkgXAorICAgIFNlcnZpY2VX
b3JrZXJDbGllbnRGZXRjaCBcCiAgICAgU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlciBcCiAg
ICAgU3RvcmFnZUFyZWFNYXAgXAogICAgIFN0b3JhZ2VNYW5hZ2VyIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKaW5kZXggNzI5N2Y0YjUzZTg3NTdkOTYzNjJkODlkZDZj
NjY5NTJhZDU2MDk5ZS4uMTBjY2JhNTJmMzkxODdiNmMxYmI3MDcxMTBmMDk5M2FkYWIxZjc5MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTMwLDggKzMwLDEw
IEBACiAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgor
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
U3RvcmFnZVByb2Nlc3MuaCIKICNpbmNsdWRlICJTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlv
bk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIldlYlNXQ2xpZW50Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCkBAIC05Miw2ICs5NCwzMSBAQCB2
b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4dChjb25z
dCBTZXJ2aWNlV29ya2VyQ29udGV4dAogICAgIG1fcGVuZGluZ0NvbnRleHREYXRhcy5hcHBlbmQo
ZGF0YSk7CiB9CiAKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzdGFydEZldGNoKHVpbnQ2
NF90IGZldGNoSWRlbnRpZmllciwgdWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25z
KQoreworICAgIHNlbmRUb0NvbnRleHRQcm9jZXNzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTdGFy
dEZldGNoSW5TZXJ2aWNlV29ya2VyKGlkZW50aWZpZXIoKSwgZmV0Y2hJZGVudGlmaWVyLCBzZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9ucykpOworfQorCit2b2lkIFdlYlNX
U2VydmVyQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UodWludDY0X3QgZmV0Y2hJ
ZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICBtX2Nv
bnRlbnRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6
OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJlc3BvbnNlIH0sIGZldGNoSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpkaWRSZWNlaXZlRmV0Y2hEYXRhKHVpbnQ2NF90
IGZldGNoSWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90
IGVuY29kZWREYXRhTGVuZ3RoKQoreworICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZURhdGEgeyBkYXRhLCBl
bmNvZGVkRGF0YUxlbmd0aCB9LCBmZXRjaElkZW50aWZpZXIpOworfQorCit2b2lkIFdlYlNXU2Vy
dmVyQ29ubmVjdGlvbjo6ZGlkRmluaXNoRmV0Y2godWludDY0X3QgZmV0Y2hJZGVudGlmaWVyKQor
eworICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJD
bGllbnRGZXRjaDo6RGlkRmluaXNoIHsgfSwgZmV0Y2hJZGVudGlmaWVyKTsKK30KKwordm9pZCBX
ZWJTV1NlcnZlckNvbm5lY3Rpb246OmRpZEZhaWxGZXRjaCh1aW50NjRfdCBmZXRjaElkZW50aWZp
ZXIpCit7CisgICAgbV9jb250ZW50Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdv
cmtlckNsaWVudEZldGNoOjpEaWRGYWlsIHsgfSwgZmV0Y2hJZGVudGlmaWVyKTsKK30KKwogdGVt
cGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnNlbmRUb0NvbnRl
eHRQcm9jZXNzKFUmJiBtZXNzYWdlKQogewogICAgIGlmICghbV9jb250ZXh0Q29ubmVjdGlvbikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaAppbmRleCBkY2M0OTYxNjUyYTNkNzFi
NmY5ODQ2NDMxZDczNzZiOGZjNTU1MjIzLi5hZTNhMjVkM2NlZjYwNTYxYTUyOWMwZGY5YjU5NzQ4
MDA4MzUwODE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TdG9y
YWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCkBAIC01MSwx
NSArNTEsMjIgQEAgcHVibGljOgogCiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29u
c3QgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KIAorICAgIHZvaWQgZGlkUmVjZWl2ZUZldGNoUmVz
cG9uc2UodWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJik7CisgICAgdm9pZCBkaWRSZWNlaXZlRmV0Y2hEYXRhKHVpbnQ2NF90IGZldGNoSWRl
bnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgaW50NjRfdCBlbmNvZGVkRGF0YUxl
bmd0aCk7CisgICAgdm9pZCBkaWRGaW5pc2hGZXRjaCh1aW50NjRfdCBmZXRjaElkZW50aWZpZXIp
OworICAgIHZvaWQgZGlkRmFpbEZldGNoKHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcik7CisKIHBy
aXZhdGU6CiAgICAgLy8gSW1wbGVtZW50IFNXU2VydmVyOjpDb25uZWN0aW9uIChNZXNzYWdlcyB0
byB0aGUgY2xpZW50IFdlYlByb2Nlc3MpCiAgICAgdm9pZCByZWplY3RKb2JJbkNsaWVudCh1aW50
NjRfdCBqb2JJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJikgZmluYWw7
CiAgICAgdm9pZCByZXNvbHZlSm9iSW5DbGllbnQodWludDY0X3Qgam9iSWRlbnRpZmllciwgY29u
c3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmKSBmaW5hbDsKICAgICB2
b2lkIHN0YXJ0U2NyaXB0RmV0Y2hJbkNsaWVudCh1aW50NjRfdCBqb2JJZGVudGlmaWVyKSBmaW5h
bDsKIAorICAgIHZvaWQgc3RhcnRGZXRjaCh1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIHVpbnQ2
NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmKTsKKwogICAgIC8vIE1lc3NhZ2VzIHRv
IHRoZSBTVyBjb250ZXh0IFdlYlByb2Nlc3MKICAgICB2b2lkIHN0YXJ0U2VydmljZVdvcmtlckNv
bnRleHQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhJikgZmluYWw7Ci0g
ICAgCisKICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgZmlu
YWwgeyByZXR1cm4gbV9jb250ZW50Q29ubmVjdGlvbi5wdHIoKTsgfQogICAgIHVpbnQ2NF90IG1l
c3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgZmluYWwgeyByZXR1cm4gaWRlbnRpZmllcigpOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1N0b3Jh
Z2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
CmluZGV4IGU0Y2ZiOTYwNWE2Y2U1MDE5MjE2ZjIxY2Y2ZDY5MTdiZWIzMDJkYzAuLmYzZGIzYjkw
ZGFlOTNhOTI2ZGY1YmJkZWExYTM3Nzk1MzQ2NjQ5MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMjYsNiArMjYsOCBAQCBtZXNz
YWdlcyAtPiBXZWJTV1NlcnZlckNvbm5lY3Rpb24gewogICAgICMgV2hlbiBwb3NzaWJsZSwgdGhl
c2UgbWVzc2FnZXMgY2FuIGJlIGltcGxlbWVudGVkIGRpcmVjdGx5IGJ5IFdlYkNvcmU6OlNXQ2xp
ZW50Q29ubmVjdGlvbgogICAgIFNjaGVkdWxlSm9iSW5TZXJ2ZXIoc3RydWN0IFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJKb2JEYXRhIGpvYkRhdGEpCiAgICAgRmluaXNoRmV0Y2hpbmdTY3JpcHRJblNl
cnZlcihzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckZldGNoUmVzdWx0IHJlc3VsdCkKKwor
ICAgIFN0YXJ0RmV0Y2godWludDY0X3QgaWRlbnRpZmllciwgdWludDY0X3Qgc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBzdHJ1Y3QgV2Vi
Q29yZTo6RmV0Y2hPcHRpb25zIG9wdGlvbnMpCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3Jh
Z2VQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nl
c3MuY3BwCmluZGV4IDk5NTk2ZjM1MTNhNGJjNjIwNWY2M2M5ZTczYjA2Yjk5YjUwOGFiYzkuLjc4
OTUwMzU0YWU5MDBjMjdiYTY5NzhmYzgxZmMwOGNhZmQzNzU0YTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwCkBAIC00MDUsNiArNDA1LDMw
IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OnNlcnZpY2VXb3JrZXJDb250ZXh0U3RhcnRlZCh1aW50
NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpCiAgICAgICAgIGNvbm5lY3Rpb24tPnNjcmlwdENv
bnRleHRTdGFydGVkKHJlZ2lzdHJhdGlvbktleSwgaWRlbnRpZmllciwgd29ya2VySUQpOwogfQog
Cit2b2lkIFN0b3JhZ2VQcm9jZXNzOjpkaWRGYWlsRmV0Y2godWludDY0X3Qgc2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0
byogY29ubmVjdGlvbiA9IG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5nZXQoc2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIpKQorICAgICAgICBjb25uZWN0aW9uLT5kaWRGYWlsRmV0Y2goZmV0Y2hJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBTdG9yYWdlUHJvY2Vzczo6ZGlkUmVjZWl2ZUZldGNoUmVzcG9u
c2UodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit7Cisg
ICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBtX3N3U2VydmVyQ29ubmVjdGlvbnMuZ2V0KHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgY29ubmVjdGlvbi0+ZGlkUmVjZWl2ZUZl
dGNoUmVzcG9uc2UoZmV0Y2hJZGVudGlmaWVyLCByZXNwb25zZSk7Cit9CisKK3ZvaWQgU3RvcmFn
ZVByb2Nlc3M6OmRpZFJlY2VpdmVGZXRjaERhdGEodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQoreworICAgIGlmIChhdXRvKiBj
b25uZWN0aW9uID0gbV9zd1NlcnZlckNvbm5lY3Rpb25zLmdldChzZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllcikpCisgICAgICAgIGNvbm5lY3Rpb24tPmRpZFJlY2VpdmVGZXRjaERhdGEoZmV0Y2hJ
ZGVudGlmaWVyLCBkYXRhLCBlbmNvZGVkRGF0YUxlbmd0aCk7Cit9CisKK3ZvaWQgU3RvcmFnZVBy
b2Nlc3M6OmRpZEZpbmlzaEZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
LCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24g
PSBtX3N3U2VydmVyQ29ubmVjdGlvbnMuZ2V0KHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSkK
KyAgICAgICAgY29ubmVjdGlvbi0+ZGlkRmluaXNoRmV0Y2goZmV0Y2hJZGVudGlmaWVyKTsKK30K
Kwogdm9pZCBTdG9yYWdlUHJvY2Vzczo6cmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rpb24oV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewogICAgIEFTU0VSVCghbV9zd1NlcnZlckNv
bm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb24uaWRlbnRpZmllcigpKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmggYi9Tb3VyY2Uv
V2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmgKaW5kZXggZDRjZTUxMTcxOTdl
NWMwYWQ0YmNlOTAyNDczYmJkZjdkZWVhOWQ4Zi4uY2ZkNGJjMWM0MDBiZjhlNzYxMmE4MjEyYTVl
ZDZlZjllYzU1ZWMyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9T
dG9yYWdlUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFn
ZVByb2Nlc3MuaApAQCAtMTE5LDYgKzExOSwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkR2V0
V29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IElQQzo6QXR0YWNobWVudCYgZW5j
b2RlZENvbm5lY3Rpb25JZGVudGlmaWVyKTsKICAgICB2b2lkIHNlcnZpY2VXb3JrZXJDb250ZXh0
RmFpbGVkVG9TdGFydCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3Qg
V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGNvbnN0IFN0cmluZyYgd29y
a2VySUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAgICAgdm9pZCBzZXJ2aWNlV29ya2VyQ29u
dGV4dFN0YXJ0ZWQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCB1aW50NjRfdCBpZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIHdvcmtlcklEKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZUZldGNoUmVz
cG9uc2UodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNo
SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHZvaWQg
ZGlkUmVjZWl2ZUZldGNoRGF0YSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwg
dWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBpbnQ2
NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRpZEZpbmlzaEZldGNoKHVpbnQ2NF90
IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIpOwor
ICAgIHZvaWQgZGlkRmFpbEZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
LCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIpOwogI2VuZGlmCiAjaWYgRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCiAgICAgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gaW5kZXhl
ZERhdGFiYXNlT3JpZ2lucyhjb25zdCBTdHJpbmcmIHBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXgg
ZWU2MjhkNTM3N2NiNTZkMjY1MDE4Y2VmZDNhMjEwODA1ZTliNDJmMi4uMjA2NGQ2OWJlZGE3N2Rm
ZTc3Y2E2Y2E1OTczZjUzOGIwZjg0MmI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9y
YWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0zNyw3ICszNywx
MyBAQCBtZXNzYWdlcyAtPiBTdG9yYWdlUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAKICNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgRGlkR2V0V29ya2VyQ29udGV4dFByb2Nlc3NDb25u
ZWN0aW9uKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSGFuZGxlKQorCiAgICAgU2VydmljZVdv
cmtlckNvbnRleHRGYWlsZWRUb1N0YXJ0KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSByZWdpc3Ry
YXRpb25LZXksIFN0cmluZyB3b3JrZXJJRCwgU3RyaW5nIG1lc3NhZ2UpCiAgICAgU2VydmljZVdv
cmtlckNvbnRleHRTdGFydGVkKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBz
dHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSByZWdpc3RyYXRpb25L
ZXksIHVpbnQ2NF90IGlkZW50aWZpZXIsIFN0cmluZyB3b3JrZXJJRCkKKworICAgIERpZEZhaWxG
ZXRjaCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJ
ZGVudGlmaWVyKQorICAgIERpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKHVpbnQ2NF90IHNlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UgcmVzcG9uc2UpCisgICAgRGlkUmVjZWl2ZUZldGNoRGF0YSh1aW50NjRf
dCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBJ
UEM6OkRhdGFSZWZlcmVuY2UgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKKyAgICBE
aWRGaW5pc2hGZXRjaCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0
X3QgZmV0Y2hJZGVudGlmaWVyKQogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4Yjg2OTUwYzE4MTE2ZjYwMWM5OGQxYzg2
NjU1NjJiNDYyNGFiMjIyLi5hMWNiN2NjMmNjMWRmYTFiNzczM2FjZTljYjc1NGI4N2MyMjZkMTU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTg5MCw2ICs4OTAsOSBAQAogCQk0MTMwNzVCMjFERTg1RjU4MDAzOUVDNjkgLyogTGliV2Vi
UlRDU29ja2V0RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDEzMDc1QTYxREU4NUVFNzAwMzlFQzY5IC8qIExpYldlYlJUQ1NvY2tldEZhY3Rv
cnkuaCAqLzsgfTsKIAkJNDEzMDc1QjMxREU4NUY1ODAwMzlFQzY5IC8qIExpYldlYlJUQ1Byb3Zp
ZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
MzA3NUE3MURFODVFRTcwMDM5RUM2OSAvKiBMaWJXZWJSVENQcm92aWRlci5jcHAgKi87IH07CiAJ
CTQxMzA3NUI0MURFODVGNTgwMDM5RUM2OSAvKiBMaWJXZWJSVENQcm92aWRlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzMDc1QTgxREU4NUVFNzAw
MzlFQzY5IC8qIExpYldlYlJUQ1Byb3ZpZGVyLmggKi87IH07CisJCTQxMzFGM0QxMUY5NkJDQ0Mw
MDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzMUYzRDAxRjk2QkNDODAwNTk5OTVBIC8q
IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5jcHAgKi87IH07CisJCTQxMzFGM0Q0MUY5NkU5MzUw
MDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzMUYzRDMxRjk2RTkzMTAwNTk5OTVB
IC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAgKi87IH07CisJCTQxMzFGM0Q1MUY5
NkU5MzUwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzFGM0QyMUY5NkU5MzAwMDU5
OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuaCAqLzsgfTsKIAkJNDEzNUZCRDEx
RjRGQjgwOTAwNzRDNDdCIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTM1RkJDRjFGNEZCN0YyMDA3
NEM0N0IgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcCAqLzsgfTsKIAkJNDE4OTdFQ0Yx
RjQxNUQ2MjAwMTZGQTQyIC8qIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4OTdFQ0UxRjQxNUQ1QzAw
MTZGQTQyIC8qIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwICovOyB9OwogCQk0MTg5N0VE
MDFGNDE1RDY1MDAxNkZBNDIgLyogV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4OTdFQ0MxRjQxNUQ1QzAw
MTZGQTQyIC8qIFdlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmNwcCAqLzsgfTsKQEAgLTEwMjksNyAr
MTAzMiw5IEBACiAJCTUxNzk1NTZBMTYyODc2RjMwMEZBNDNCNiAvKiBOZXR3b3JrUHJvY2Vzcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwQ0M3RTAx
NjEzOEUyOTAwRDAzRUQzIC8qIE5ldHdvcmtQcm9jZXNzLmggKi87IH07CiAJCTUxNzk1NTZEMTYy
ODc3QjEwMEZBNDNCNiAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMENDN0VBMTYxMzhFNzIwMEQwM0VEMyAv
KiBOZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCAqLzsgfTsKIAkJNTE3OTU1NkUxNjI4NzdCMzAwRkE0
M0I2IC8qIE5ldHdvcmtQcm9jZXNzUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxMENDN0VCMTYxMzhFNzIwMEQwM0VEMyAvKiBOZXR3b3JrUHJv
Y2Vzc1Byb3h5LmggKi87IH07CisJCTYxN0E1MkQ4MUY0M0E5REEwMERDREMwQSAvKiBTZXJ2aWNl
V29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjE3QTUyRDcxRjQzQTlCNjAwRENEQzBBIC8qIFNl
cnZpY2VXb3JrZXJDbGllbnRGZXRjaENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9
OwogCQk1MTdBNTJEODFGNDNBOURBMDBEQ0RDMEEgLyogV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxN0E1MkQ3MUY0M0E5QjYwMERDREMwQSAvKiBXZWJTV1NlcnZlckNvbm5lY3Rpb25N
ZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQk2MTdBNTJEOTFGNDNBOURBMDBEQ0RDMEEgLyog
U2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYxN0E1MkQ2MUY0M0E5QjYwMERDREMwQSAvKiBTZXJ2
aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlcy5oICovOyB9OwogCQk1MTdBNTJEOTFGNDNBOURB
MDBEQ0RDMEEgLyogV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0E1MkQ2MUY0M0E5QjYwMERDREMw
QSAvKiBXZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oICovOyB9OwogCQk1MTdBNTMwNDFG
NDc5M0M2MDBEQ0RDMEEgLyogV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0E1MzAzMUY0NzkzQjIwMERDREMw
QSAvKiBXZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwICovOyB9OwogCQk1MTdBNTMwNTFGNDc5M0M2
MDBEQ0RDMEEgLyogV2ViU1dDbGllbnRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdBNTMwMjFGNDc5M0IyMDBEQ0RDMEEgLyogV2Vi
U1dDbGllbnRDb25uZWN0aW9uLmggKi87IH07CkBAIC0zMTc4LDYgKzMxODMsMTEgQEAKIAkJNDEz
MDc1QTYxREU4NUVFNzAwMzlFQzY5IC8qIExpYldlYlJUQ1NvY2tldEZhY3RvcnkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTGliV2ViUlRDU29ja2V0RmFjdG9yeS5oOyBwYXRo
ID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDU29ja2V0RmFjdG9yeS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MTMwNzVBNzFERTg1RUU3MDAzOUVDNjkgLyogTGliV2ViUlRDUHJv
dmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBsaW5lRW5kaW5nID0gMDsg
bmFtZSA9IExpYldlYlJUQ1Byb3ZpZGVyLmNwcDsgcGF0aCA9IE5ldHdvcmsvd2VicnRjL0xpYldl
YlJUQ1Byb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNp
ZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFuZy5jcHA7IH07CiAJCTQxMzA3NUE4MURFODVF
RTcwMDM5RUM2OSAvKiBMaWJXZWJSVENQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IGxpbmVFbmRpbmcgPSAwOyBuYW1lID0gTGliV2ViUlRDUHJvdmlkZXIuaDsgcGF0aCA9IE5l
dHdvcmsvd2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcub2JqY3BwOyB9
OworCQk0MTMxRjNDRTFGOTZBNDk1MDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNo
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJDbGllbnRG
ZXRjaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTMxRjNDRjFGOTZBOTM2MDA1
OTk5NUEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoLm1lc3NhZ2VzLmluICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5tZXNzYWdlcy5pbjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEzMUYzRDAxRjk2QkNDODAwNTk5OTVBIC8qIFNlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0MTMxRjNEMjFGOTZFOTMwMDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNvbnRleHRN
YW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJD
b250ZXh0TWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTMxRjNEMzFG
OTZFOTMxMDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzVGQkNGMUY0RkI3RjIwMDc0
QzQ3QiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzNUZCRDAxRjRGQjdGMjAwNzRDNDdCIC8qIENhY2hlU3Rv
cmFnZUVuZ2luZUNhY2hlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNo
ZVN0b3JhZ2VFbmdpbmVDYWNoZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE4
OTdFQ0IxRjQxNUQ1QzAwMTZGQTQyIC8qIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMzMzQsNyArMzM0NCw5IEBACiAJCTUxNkE0QTVCMTIw
QTJDQ0QwMEMwNUI3RiAvKiBBUElFcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBUElFcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdBMzNCMzEz
MEIzMDhDMDBGODBDQjUgLyogV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3QTMzQjQxMzBCMzA4QzAwRjgwQ0I1
IC8qIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk2MTdBNTJENjFGNDNBOUI2MDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckZldGNo
Q2xpZW50TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTE3QTUyRDYxRjQzQTlCNjAwRENEQzBBIC8qIFdlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2Vz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNXU2VydmVyQ29ubmVjdGlv
bk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTYxN0E1MkQ3MUY0M0E5
QjYwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtlckNsaWVu
dEZldGNoTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTE3QTUyRDcxRjQzQTlCNjAwRENEQzBBIC8qIFdlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTV1Nl
cnZlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MTdBNTMwMjFGNDc5M0IyMDBEQ0RDMEEgLyogV2ViU1dDbGllbnRDb25uZWN0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNXQ2xpZW50Q29ubmVjdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdBNTMwMzFGNDc5M0IyMDBEQ0RD
MEEgLyogV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC02MTY4LDYgKzYxODAsMTEgQEAKIAkJNTExOEU5OTgxRjI5NTI1OTAwM0VG
OUY1IC8qIFN0b3JhZ2UgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAorCQkJCTQxMzFGM0QwMUY5NkJDQzgwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0
Y2guY3BwICovLAorCQkJCTQxMzFGM0NFMUY5NkE0OTUwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2Vy
Q2xpZW50RmV0Y2guaCAqLywKKwkJCQk0MTMxRjNDRjFGOTZBOTM2MDA1OTk5NUEgLyogU2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoLm1lc3NhZ2VzLmluICovLAorCQkJCTQxMzFGM0QzMUY5NkU5MzEw
MDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwICovLAorCQkJCTQxMzFG
M0QyMUY5NkU5MzAwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuaCAqLywK
IAkJCQk1MUJFQjYyOTFGM0E1QUNEMDA1MDI5QjkgLyogV2ViU2VydmljZVdvcmtlclByb3ZpZGVy
LmNwcCAqLywKIAkJCQk1MUJFQjYyQTFGM0E1QUNEMDA1MDI5QjkgLyogV2ViU2VydmljZVdvcmtl
clByb3ZpZGVyLmggKi8sCiAJCQkJNTE3QTUzMDMxRjQ3OTNCMjAwRENEQzBBIC8qIFdlYlNXQ2xp
ZW50Q29ubmVjdGlvbi5jcHAgKi8sCkBAIC04MDEwLDYgKzgwMjcsNyBAQAogCQkJCTFCQkJFNDlF
MTlCNjZDNTMwMDZCN0Q4MSAvKiBSZW1vdGVXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5j
cHAgKi8sCiAJCQkJRTE4RTY5MTMxNjlCNjY3QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCUUxOEU2OTE0MTY5QjY2N0IwMDlCNjY3MCAvKiBT
ZWNJdGVtU2hpbVByb3h5TWVzc2FnZXMuaCAqLywKKwkJCQk2MTdBNTJENzFGNDNBOUI2MDBEQ0RD
MEEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5j
cHAgKi8sCiAJCQkJMkRFNjk0M0IxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlv
bkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTJERTY5NDNDMThCRDJBNjgw
MDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZXMuaCAqLywKIAkJ
CQkxQTMzNERFQjE2REU4Rjg4MDA2QThFMzggLyogU3RvcmFnZUFyZWFNYXBNZXNzYWdlUmVjZWl2
ZXIuY3BwICovLApAQCAtODc4MSw2ICs4Nzk5LDcgQEAKIAkJCQlFMThFNjkwQzE2OUI1NjNGMDA5
QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE4RTY5MTgx
NjlCNjY3QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTE0RDlGNTcxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNDEzMUYzRDUxRjk2RTkzNTAwNTk5OTVBIC8qIFNlcnZpY2VX
b3JrZXJDb250ZXh0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGREU2NUExOTU0QTQy
QjAwQzQ4RkZBIC8qIFNlc3Npb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwMDJENDkx
OTZCMzQ1RDAwQjlBRDQ0IC8qIFNlc3Npb25TdGF0ZUNvZGluZy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNzUzRTNFMEUxODg3Mzk4OTAwMTg4NDk2IC8qIFNlc3Npb25UcmFja2VyLmggaW4gSGVhZGVy
cyAqLywKQEAgLTEwMzcwLDYgKzEwMzg5LDkgQEAKIAkJCQlFMThFNjkwQjE2OUI1NjNGMDA5QjY2
NzAgLyogU2VjSXRlbVNoaW1Qcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMThFNjkxNzE2
OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1MTREOUY1ODE5MTE5RDM1MDAwMDYzQTcgLyogU2VydmljZXNDb250
cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNDEzMUYzRDExRjk2QkNDQzAwNTk5OTVBIC8q
IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2MTdBNTJE
ODFGNDNBOURBMDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoQ29ubmVjdGlvbk1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTMxRjNENDFGOTZFOTM1MDA1
OTk5NUEgLyogU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTFBRkRFNjU5MTk1NEE0MkIwMEM0OEZGQSAvKiBTZXNzaW9uU3RhdGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUEwMDJENDgxOTZCMzQ1RDAwQjlBRDQ0IC8qIFNlc3Npb25TdGF0ZUNvZGlu
Zy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBNzI4NDQ4MTk1OUY4MDQwMDA3QkNFNSAvKiBTZXNz
aW9uU3RhdGVDb252ZXJzaW9uLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IGI4
OTVkMGI4ZmEzMWNlMDE2NmQyYTQwZGJjOTQ5MWYwODE0MzViYjEuLjQ1MDc3YTQwZmFlZTE5ZmM0
M2IyNGU2YWRhNzllMDMxYTk3NzVmNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTQzLDYgKzQzLDcgQEAK
ICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3Mu
aCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRlci5oIgorI2luY2x1ZGUgIldlYlNlcnZpY2VX
b3JrZXJQcm92aWRlci5oIgogI2luY2x1ZGUgIldlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oIgog
I2luY2x1ZGUgIldlYlVSTFNjaGVtZVRhc2tQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXBw
bGljYXRpb25DYWNoZUhvc3QuaD4KQEAgLTIxNSw2ICsyMTYsMjkgQEAgdm9pZCBXZWJMb2FkZXJT
dHJhdGVneTo6c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwgQ2Fj
aGVkUmVzb3UKICAgICAgICAgfQogICAgIH0KIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
KyAgICBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLmhhbmRsZUZldGNoKHJl
c291cmNlTG9hZGVyLCByZXNvdXJjZSwgd2ViUGFnZSA/IHdlYlBhZ2UtPnNlc3Npb25JRCgpIDog
UEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSwgW3RyYWNraW5nUGFyYW1ldGVycywg
c2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgbWF4aW11bUJ1ZmZlcmlu
Z1RpbWUgPSBtYXhpbXVtQnVmZmVyaW5nVGltZShyZXNvdXJjZSksIHJlc291cmNlTG9hZGVyID0g
bWFrZVJlZihyZXNvdXJjZUxvYWRlcildIChTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OlJlc3Vs
dCByZXN1bHQpIG11dGFibGUgeworICAgICAgICBpZiAocmVzdWx0ICE9IFNlcnZpY2VXb3JrZXJD
bGllbnRGZXRjaDo6UmVzdWx0OjpVbmhhbmRsZWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgTE9HKE5ldHdvcmtTY2hlZHVsaW5nLCAiKFdlYlByb2Nlc3MpIFdlYkxvYWRlclN0cmF0
ZWd5OjpzY2hlZHVsZUxvYWQsIHVybCAnJXMnIHdpbGwgYmUgc2NoZWR1bGVkIHRocm91Z2ggU2Vy
dmljZVdvcmtlciBoYW5kbGUgZmV0Y2ggYWxnb3JpdGhtIiwgcmVzb3VyY2VMb2FkZXItPnVybCgp
LnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLndlYkxvYWRlclN0cmF0ZWd5KCkuc2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKHJl
c291cmNlTG9hZGVyLmdldCgpLCByZXNvdXJjZUxvYWRlci0+b3JpZ2luYWxSZXF1ZXN0KCksIFdU
Rk1vdmUodHJhY2tpbmdQYXJhbWV0ZXJzKSwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hU
VFBSZWRpcmVjdCwgbWF4aW11bUJ1ZmZlcmluZ1RpbWUpOworICAgIH0pOworI2Vsc2UKKyAgICBM
T0coTmV0d29ya1NjaGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNj
aGVkdWxlTG9hZCwgdXJsICclcycgd2lsbCBiZSBzY2hlZHVsZWQgdGhyb3VnaCBTZXJ2aWNlV29y
a2VyIGhhbmRsZSBmZXRjaCBhbGdvcml0aG0iLCByZXNvdXJjZUxvYWRlci51cmwoKS5zdHJpbmco
KS5sYXRpbjEoKS5kYXRhKCkpOworICAgIHNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2Vzcyhy
ZXNvdXJjZUxvYWRlciwgcmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLCB0cmFja2luZ1BhcmFtZXRl
cnMsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIG1heGltdW1CdWZm
ZXJpbmdUaW1lKHJlc291cmNlKSk7CisjZW5kaWYKK30KKwordm9pZCBXZWJMb2FkZXJTdHJhdGVn
eTo6c2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKFJlc291cmNlTG9hZGVyJiByZXNvdXJj
ZUxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJSZXNvdXJj
ZUxvYWRlcjo6VHJhY2tpbmdQYXJhbWV0ZXJzJiB0cmFja2luZ1BhcmFtZXRlcnMsIGJvb2wgc2hv
dWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgU2Vjb25kcyBtYXhpbXVtQnVm
ZmVyaW5nVGltZSkKK3sKKyAgICBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBy
ZXNvdXJjZUxvYWRlci5pZGVudGlmaWVyKCk7CisgICAgQVNTRVJUKGlkZW50aWZpZXIpOworCisg
ICAgV2ViRnJhbWVMb2FkZXJDbGllbnQqIHdlYkZyYW1lTG9hZGVyQ2xpZW50ID0gdG9XZWJGcmFt
ZUxvYWRlckNsaWVudChyZXNvdXJjZUxvYWRlci5mcmFtZUxvYWRlcigpLT5jbGllbnQoKSk7Cisg
ICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gd2ViRnJhbWVMb2FkZXJDbGllbnQgPyB3ZWJGcmFtZUxv
YWRlckNsaWVudC0+d2ViRnJhbWUoKSA6IG51bGxwdHI7CisgICAgV2ViUGFnZSogd2ViUGFnZSA9
IHdlYkZyYW1lID8gd2ViRnJhbWUtPnBhZ2UoKSA6IG51bGxwdHI7CisKICAgICBMT0coTmV0d29y
a1NjaGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9h
ZCwgdXJsICclcycgd2lsbCBiZSBzY2hlZHVsZWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3Mgd2l0
aCBwcmlvcml0eSAlZCIsIHJlc291cmNlTG9hZGVyLnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRh
dGEoKSwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHko
KSkpOwogCiAgICAgQ29udGVudFNuaWZmaW5nUG9saWN5IGNvbnRlbnRTbmlmZmluZ1BvbGljeSA9
IHJlc291cmNlTG9hZGVyLnNob3VsZFNuaWZmQ29udGVudCgpID8gU25pZmZDb250ZW50IDogRG9O
b3RTbmlmZkNvbnRlbnQ7CkBAIC0yMjUsNyArMjQ5LDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVn
eTo6c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVz
b3UKICAgICBsb2FkUGFyYW1ldGVycy53ZWJQYWdlSUQgPSB3ZWJQYWdlID8gd2ViUGFnZS0+cGFn
ZUlEKCkgOiAwOwogICAgIGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQgPSB3ZWJGcmFtZSA/IHdl
YkZyYW1lLT5mcmFtZUlEKCkgOiAwOwogICAgIGxvYWRQYXJhbWV0ZXJzLnNlc3Npb25JRCA9IHdl
YlBhZ2UgPyB3ZWJQYWdlLT5zZXNzaW9uSUQoKSA6IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vz
c2lvbklEKCk7Ci0gICAgbG9hZFBhcmFtZXRlcnMucmVxdWVzdCA9IHJlc291cmNlTG9hZGVyLnJl
cXVlc3QoKTsKKyAgICBsb2FkUGFyYW1ldGVycy5yZXF1ZXN0ID0gcmVxdWVzdDsKICAgICBsb2Fk
UGFyYW1ldGVycy5jb250ZW50U25pZmZpbmdQb2xpY3kgPSBjb250ZW50U25pZmZpbmdQb2xpY3k7
CiAgICAgbG9hZFBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPSBzdG9yZWRDcmVk
ZW50aWFsc1BvbGljeTsKICAgICAvLyBJZiB0aGVyZSBpcyBubyBXZWJGcmFtZSB0aGVuIHRoaXMg
cmVzb3VyY2UgY2Fubm90IGJlIGF1dGhlbnRpY2F0ZWQgd2l0aCB0aGUgY2xpZW50LgpAQCAtMjMz
LDcgKzI1Nyw3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZChSZXNvdXJj
ZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291CiAgICAgbG9hZFBhcmFtZXRlcnMu
c2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCA9IHNob3VsZENsZWFyUmVm
ZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3Q7CiAgICAgbG9hZFBhcmFtZXRlcnMuZGVmZXJzTG9h
ZGluZyA9IHJlc291cmNlTG9hZGVyLmRlZmVyc0xvYWRpbmcoKTsKICAgICBsb2FkUGFyYW1ldGVy
cy5uZWVkc0NlcnRpZmljYXRlSW5mbyA9IHJlc291cmNlTG9hZGVyLnNob3VsZEluY2x1ZGVDZXJ0
aWZpY2F0ZUluZm8oKTsKLSAgICBsb2FkUGFyYW1ldGVycy5tYXhpbXVtQnVmZmVyaW5nVGltZSA9
IG1heGltdW1CdWZmZXJpbmdUaW1lKHJlc291cmNlKTsKKyAgICBsb2FkUGFyYW1ldGVycy5tYXhp
bXVtQnVmZmVyaW5nVGltZSA9IG1heGltdW1CdWZmZXJpbmdUaW1lOwogICAgIGxvYWRQYXJhbWV0
ZXJzLmRlcml2ZWRDYWNoZWREYXRhVHlwZXNUb1JldHJpZXZlID0gcmVzb3VyY2VMb2FkZXIub3B0
aW9ucygpLmRlcml2ZWRDYWNoZWREYXRhVHlwZXNUb1JldHJpZXZlOwogCiAgICAgQVNTRVJUKChs
b2FkUGFyYW1ldGVycy53ZWJQYWdlSUQgJiYgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRCkgfHwg
bG9hZFBhcmFtZXRlcnMuY2xpZW50Q3JlZGVudGlhbFBvbGljeSA9PSBDbGllbnRDcmVkZW50aWFs
UG9saWN5OjpDYW5ub3RBc2tDbGllbnRGb3JDcmVkZW50aWFscyk7CkBAIC0zMDAsNyArMzI0LDEy
IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnJlbW92ZShSZXNvdXJjZUxvYWRlciogcmVzb3Vy
Y2VMb2FkZXIpCiAgICAgICAgIExPR19FUlJPUigiV2ViTG9hZGVyU3RyYXRlZ3kgcmVtb3Zpbmcg
YSBSZXNvdXJjZUxvYWRlciB0aGF0IGhhcyBubyBpZGVudGlmaWVyLiIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIAorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIGlmIChX
ZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLmNhbmNlbEZldGNoKGlkZW50aWZp
ZXIpKQorICAgICAgICByZXR1cm47CisjZW5kaWYKKwogICAgIFJlZlB0cjxXZWJSZXNvdXJjZUxv
YWRlcj4gbG9hZGVyID0gbV93ZWJSZXNvdXJjZUxvYWRlcnMudGFrZShpZGVudGlmaWVyKTsKICAg
ICAvLyBMb2FkZXIgbWF5IG5vdCBiZSByZWdpc3RlcmVkIGlmIHdlIGNyZWF0ZWQgaXQsIGJ1dCBo
YXZlbid0IHNjaGVkdWxlZCB5ZXQgKGEgYnVuZGxlIGNsaWVudCBjYW4gZGVjaWRlIHRvIGNhbmNl
bCBzdWNoIHJlcXVlc3QgdmlhIHdpbGxTZW5kUmVxdWVzdCkuCiAgICAgaWYgKCFsb2FkZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJh
dGVneS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRl
Z3kuaAppbmRleCBiNDhmNjgxMThmNDQ5Yzc3NjhkMTc5NjYxNjViYjY2YTMyNWIyMzZmLi5lYWI0
ZWNlN2VlNmJmZmZmNzM4ZTJiZGZhMzU1YTA4NGMyZGFhNmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKQEAgLTc3LDYg
Kzc3LDggQEAgcHVibGljOgogICAgIHZvaWQgYWRkVVJMU2NoZW1lVGFza1Byb3h5KFdlYlVSTFNj
aGVtZVRhc2tQcm94eSYpOwogICAgIHZvaWQgcmVtb3ZlVVJMU2NoZW1lVGFza1Byb3h5KFdlYlVS
TFNjaGVtZVRhc2tQcm94eSYpOwogCisgICAgdm9pZCBzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1By
b2Nlc3MoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXImLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBXZWJSZXNvdXJjZUxvYWRlcjo6VHJhY2tpbmdQYXJhbWV0ZXJzJiwgYm9v
bCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBTZWNvbmRzKTsKKwog
cHJpdmF0ZToKICAgICB2b2lkIHNjaGVkdWxlTG9hZChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYs
IFdlYkNvcmU6OkNhY2hlZFJlc291cmNlKiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQ
U1RvSFRUUFJlZGlyZWN0KTsKICAgICB2b2lkIHNjaGVkdWxlSW50ZXJuYWxseUZhaWxlZExvYWQo
V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjdlZTUzODYzNTk2ZDM0Y2MyY2U5NDQ3YmE3NmIzMmUxMGM1OWVhMTEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2Vy
Q2xpZW50RmV0Y2guY3BwCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5oIgorCisjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2lu
Y2x1ZGUgIldlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTm90
SW1wbGVtZW50ZWQuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OlNlcnZpY2VXb3JrZXJDbGllbnRG
ZXRjaChXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXImIHNlcnZpY2VXb3JrZXJQcm92aWRlciwgUmVm
PFdlYkNvcmU6OlJlc291cmNlTG9hZGVyPiYmIGxvYWRlciwgdWludDY0X3QgaWRlbnRpZmllciwg
UmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBDYWxsYmFjayYmIGNhbGxiYWNrKQor
ICAgIDogbV9zZXJ2aWNlV29ya2VyUHJvdmlkZXIoc2VydmljZVdvcmtlclByb3ZpZGVyKQorICAg
ICwgbV9sb2FkZXIoV1RGTW92ZShsb2FkZXIpKQorICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZp
ZXIpCisgICAgLCBtX2Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKKyAgICAsIG1fY2Fs
bGJhY2soV1RGTW92ZShjYWxsYmFjaykpCit7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlckNsaWVu
dEZldGNoOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UpCit7CisgICAgaWYgKCFtX2xvYWRlcikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKCEocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA8PSAzMDAgfHwgcmVzcG9uc2UuaHR0
cFN0YXR1c0NvZGUoKSA+PSA0MDAgfHwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQg
fHwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDUgfHwgcmVzcG9uc2UuaHR0cFN0YXR1
c0NvZGUoKSA9PSAzMDYpKSB7CisgICAgICAgIC8vIEZJWE1FOiBTdXBwb3J0IHJlZGlyZWN0aW9u
cy4KKyAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgbV9sb2FkZXItPmRpZEZhaWwo
eyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChyZXNwb25zZS50eXBlKCkg
PT0gUmVzb3VyY2VSZXNwb25zZTo6VHlwZTo6RXJyb3IpIHsKKyAgICAgICAgLy8gQWRkIHN1cHBv
cnQgZm9yIGEgYmV0dGVyIGVycm9yLgorICAgICAgICBtX2xvYWRlci0+ZGlkRmFpbCh7IH0pOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fbG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9uc2Uo
cmVzcG9uc2UpOworCisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBXVEZNb3ZlKG1fY2FsbGJhY2sp
KQorICAgICAgICBjYWxsYmFjayhSZXN1bHQ6OlN1Y2NlZWRlZCk7Cit9CisKK3ZvaWQgU2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCit7CisgICAgaWYgKCFtX2xvYWRl
cikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9sb2FkZXItPmRpZFJlY2VpdmVEYXRhKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCksIGVuY29k
ZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2Vy
Q2xpZW50RmV0Y2g6OmRpZEZpbmlzaCgpCit7CisgICAgaWYgKCFtX2xvYWRlcikKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9sb2FkZXItPmRpZEZpbmlzaExvYWRpbmcoTmV0d29ya0xvYWRNZXRy
aWNzIHsgfSk7CisgICAgbV9zZXJ2aWNlV29ya2VyUHJvdmlkZXIuZmV0Y2hGaW5pc2hlZChtX2lk
ZW50aWZpZXIpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6ZGlkRmFpbCgp
Cit7CisgICAgaWYgKCFtX2xvYWRlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF1dG8g
Y2FsbGJhY2sgPSBXVEZNb3ZlKG1fY2FsbGJhY2spKQorICAgICAgICBjYWxsYmFjayhSZXN1bHQ6
OlVuaGFuZGxlZCk7CisKKyAgICBtX3NlcnZpY2VXb3JrZXJQcm92aWRlci5mZXRjaEZpbmlzaGVk
KG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpjYW5j
ZWwoKQoreworICAgIGlmIChhdXRvIGNhbGxiYWNrID0gV1RGTW92ZShtX2NhbGxiYWNrKSkKKyAg
ICAgICAgY2FsbGJhY2soUmVzdWx0OjpDYW5jZWxsZWQpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZl
dGNoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzA0OTEzOTlmNmU3N2I1NjkwYzFjNTJlYTZlNjE0MjM0MTUzMTBk
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1Nl
cnZpY2VXb3JrZXJDbGllbnRGZXRjaC5oCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKworI2luY2x1ZGUgIk1l
c3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlTG9hZGVyLmg+CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVy
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJTZXJ2aWNlV29ya2VyUHJvdmlk
ZXI7CisKK2NsYXNzIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaCBmaW5hbCA6IHB1YmxpYyBSZWZD
b3VudGVkPFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaD4sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5k
ZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitwdWJsaWM6CisgICAgZW51bSBjbGFz
cyBSZXN1bHQgeyBTdWNjZWVkZWQsIENhbmNlbGxlZCwgVW5oYW5kbGVkIH07CisgICAgdXNpbmcg
Q2FsbGJhY2sgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzdWx0KT47CisKKyAgICBz
dGF0aWMgUmVmPFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaD4gY3JlYXRlKFdlYlNlcnZpY2VXb3Jr
ZXJQcm92aWRlciYgc2VydmljZVdvcmtlclByb3ZpZGVyLCBSZWY8V2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXI+JiYgbG9hZGVyLCB1aW50NjRfdCBpZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9u
PiYmIGNvbm5lY3Rpb24sIENhbGxiYWNrJiYgY2FsbGJhY2spCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2ggeyBzZXJ2aWNlV29ya2Vy
UHJvdmlkZXIsIFdURk1vdmUobG9hZGVyKSwgaWRlbnRpZmllciwgV1RGTW92ZShjb25uZWN0aW9u
KSwgV1RGTW92ZShjYWxsYmFjaykgfSk7CisgICAgfQorCisgICAgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKyAgICB2b2lkIGNh
bmNlbCgpOworCitwcml2YXRlOgorICAgIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaChXZWJTZXJ2
aWNlV29ya2VyUHJvdmlkZXImLCBSZWY8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI+JiYsIHVpbnQ2
NF90IGlkZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIENhbGxiYWNrJiYpOworCisg
ICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwg
aW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRGaW5pc2goKTsKKyAgICB2
b2lkIGRpZEZhaWwoKTsKKworICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5l
Y3Rpb24oKSBmaW5hbCB7IHJldHVybiBtX2Nvbm5lY3Rpb24ucHRyKCk7IH0KKyAgICB1aW50NjRf
dCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGZpbmFsIHsgcmV0dXJuIG1faWRlbnRpZmll
cjsgfQorCisgICAgV2ViU2VydmljZVdvcmtlclByb3ZpZGVyJiBtX3NlcnZpY2VXb3JrZXJQcm92
aWRlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI+IG1fbG9hZGVyOworICAg
IHVpbnQ2NF90IG1faWRlbnRpZmllciB7IDAgfTsKKyAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBt
X2Nvbm5lY3Rpb247CisgICAgQ2FsbGJhY2sgbV9jYWxsYmFjazsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZl
dGNoLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmExMDgxYjRiZDBiZWY0
ZTlkOGRiYjE2OTgzZjI2MmY4OGI5MjNlZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gubWVzc2FnZXMu
aW4KQEAgLTAsMCArMSwzMiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6
CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCittZXNzYWdlcyAtPiBTZXJ2aWNlV29y
a2VyQ2xpZW50RmV0Y2ggeworICAgIERpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlIHJlc3BvbnNlKQorICAgIERpZFJlY2VpdmVEYXRhKElQQzo6RGF0YVJlZmVyZW5j
ZSBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQorICAgIERpZEZpbmlzaCgpCisgICAg
RGlkRmFpbCgpCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ29udGV4
dE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdv
cmtlckNvbnRleHRNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MzcxMzkyNDIzODE1N2I2ZjQ4ZWY1
ZWVlNmM2ZDcyZjdhZTYxMjM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcApAQCAtMCwwICsx
LDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNlcnZp
Y2VXb3JrZXJDb250ZXh0TWFuYWdlci5oIgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQor
CisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlN0b3JhZ2VQcm9jZXNzTWVzc2FnZXMu
aCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlUmVxdWVzdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5o
PgorI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KKwordXNpbmcgbmFtZXNwYWNlIFBBTDsKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBTZXJ2
aWNlV29ya2VyQ29udGV4dE1hbmFnZXI6OnN0YXJ0U2VydmljZVdvcmtlckNvbnRleHQodWludDY0
X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YSYgZGF0YSkKK3sKKyAgICAvLyBGSVhNRTogUHJvdmlkZSBhIHNlbnNpY2FsIHNlc3Npb24g
SUQuCisgICAgYXV0byB0aHJlYWQgPSBTZXJ2aWNlV29ya2VyVGhyZWFkOjpjcmVhdGUoc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIsIGRhdGEsIFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgp
KTsKKyAgICBhdXRvIHRocmVhZElkZW50aWZpZXIgPSB0aHJlYWQtPmlkZW50aWZpZXIoKTsKKyAg
ICBhdXRvIHJlc3VsdCA9IG1fd29ya2VyVGhyZWFkTWFwLmFkZCh0aHJlYWRJZGVudGlmaWVyLCBX
VEZNb3ZlKHRocmVhZCkpOworICAgIEFTU0VSVChyZXN1bHQuaXNOZXdFbnRyeSk7CisKKyAgICBy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5zdGFydCgpOworCisgICAgTE9HKFNlcnZpY2VXb3JrZXIs
ICJDb250ZXh0IHByb2Nlc3MgUElEOiAlaSBzdGFydGVkIHdvcmtlciB0aHJlYWQgJXNcbiIsIGdl
dHBpZCgpLCBkYXRhLndvcmtlcklELnV0ZjgoKS5kYXRhKCkpOworCisgICAgbV9jb25uZWN0aW9u
VG9TdG9yYWdlUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OlNlcnZpY2VX
b3JrZXJDb250ZXh0U3RhcnRlZChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgZGF0YS5yZWdp
c3RyYXRpb25LZXksIHRocmVhZElkZW50aWZpZXIsIGRhdGEud29ya2VySUQpLCAwKTsKK30KKwor
dm9pZCBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXI6OnN0YXJ0RmV0Y2godWludDY0X3Qgc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgdWludDY0
X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zKQoreworICAgIFVOVVNFRF9QQVJBTShzZXJ2
aWNlV29ya2VySWRlbnRpZmllcik7CisKKyAgICAvLyBGSVhNRTogSGFyZCBjb2Rpbmcgc29tZSBm
ZXRjaGVzIGZvciB0ZXN0aW5nIHB1cnBvc2UgdW50aWwgd2UgaW1wbGVtZW50IHRoZSBjcmVhdGlv
biBvZiBmZXRjaCBldmVudC4KKyAgICBpZiAocmVxdWVzdC51cmwoKS5zdHJpbmcoKS5jb250YWlu
cygidGVzdDEiKSkgeworICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOworICAgICAg
ICByZXNwb25zZS5zZXRVUkwocmVxdWVzdC51cmwoKSk7CisgICAgICAgIHJlc3BvbnNlLnNldEhU
VFBTdGF0dXNDb2RlKDIwMCk7CisgICAgICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNUZXh0KEFT
Q0lJTGl0ZXJhbCgiSGVsbG8gZnJvbSBzZXJ2aWNlIHdvcmtlciIpKTsKKyAgICAgICAgbV9jb25u
ZWN0aW9uVG9TdG9yYWdlUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OkRp
ZFJlY2VpdmVGZXRjaFJlc3BvbnNlKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBmZXRjaElk
ZW50aWZpZXIsIHJlc3BvbnNlKSwgMCk7CisgICAgICAgIG1fY29ubmVjdGlvblRvU3RvcmFnZVBy
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpEaWRGaW5pc2hGZXRjaChzZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyKSwgMCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgaWYgKHJlcXVlc3QudXJsKCkuc3RyaW5nKCkuY29udGFpbnMoInRl
c3QyIikpIHsKKyAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKKyAgICAgICAgcmVz
cG9uc2Uuc2V0VVJMKHJlcXVlc3QudXJsKCkpOworICAgICAgICByZXNwb25zZS5zZXRIVFRQU3Rh
dHVzQ29kZSg1MDApOworICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChBU0NJSUxp
dGVyYWwoIkVycm9yIGZyb20gc2VydmljZSB3b3JrZXIiKSk7CisgICAgICAgIG1fY29ubmVjdGlv
blRvU3RvcmFnZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpEaWRSZWNl
aXZlRmV0Y2hSZXNwb25zZShzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlm
aWVyLCByZXNwb25zZSksIDApOworICAgICAgICBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6RGlkRmluaXNoRmV0Y2goc2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIsIGZldGNoSWRlbnRpZmllciksIDApOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIGlmIChyZXF1ZXN0LnVybCgpLnN0cmluZygpLmNvbnRhaW5zKCJ0ZXN0MyIp
KSB7CisgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CisgICAgICAgIHJlc3BvbnNl
LnNldFVSTChyZXF1ZXN0LnVybCgpKTsKKyAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0Nv
ZGUoNTAwKTsKKyAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoQVNDSUlMaXRlcmFs
KCJFcnJvciBmcm9tIHNlcnZpY2Ugd29ya2VyIikpOworICAgICAgICByZXNwb25zZS5zZXRUeXBl
KFJlc291cmNlUmVzcG9uc2U6OlR5cGU6OkVycm9yKTsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9T
dG9yYWdlUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OkRpZFJlY2VpdmVG
ZXRjaFJlc3BvbnNlKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIs
IHJlc3BvbnNlKSwgMCk7CisgICAgICAgIG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpEaWRGaW5pc2hGZXRjaChzZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpT
dG9yYWdlUHJvY2Vzczo6RGlkRmFpbEZldGNoKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBm
ZXRjaElkZW50aWZpZXIpLCAwKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40OGI2OTEwYTc2MTllODlhMWE3ZDE4YWE2ZGMxNmFjYzVkMGVlMGE5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdv
cmtlckNvbnRleHRNYW5hZ2VyLmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSAiQ29ubmVj
dGlvbi5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclRocmVhZC5oPgorI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBGZXRjaE9w
dGlvbnM7CitjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CitzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRl
eHREYXRhOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgU2VydmljZVdvcmtlckNv
bnRleHRNYW5hZ2VyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTZXJ2aWNlV29ya2VyQ29udGV4
dE1hbmFnZXIoUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQorICAgICAgICA6IG1f
Y29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MoV1RGTW92ZShjb25uZWN0aW9uKSkKKyAgICB7Cisg
ICAgfQorCisgICAgdm9pZCBzdGFydFNlcnZpY2VXb3JrZXJDb250ZXh0KHVpbnQ2NF90IHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEmKTsKKyAgICB2b2lkIHN0YXJ0RmV0Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgdWludDY0X3Qgc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNv
cmU6OkZldGNoT3B0aW9ucyYpOworCitwcml2YXRlOgorICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+
IG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3M7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVm
UHRyPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ+PiBtX3dvcmtlclRocmVhZE1hcDsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
bGllbnRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKaW5kZXggNzZhZTdiNTViYTAzMGNjYjAzODM3ODZlODg3
Mjg1OTlmZmJkNmFkYS4uYmIxZTFjYzlhOTVlYjg2OTY0MTE5OTgyMTA1MDU0NjY4ZWNiNDllYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRD
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NsaWVudENvbm5lY3Rpb24uY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3Jr
ZXJDbGllbnRGZXRjaC5oIgogI2luY2x1ZGUgIlN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9u
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRl
ICJXZWJTV09yaWdpblRhYmxlLmgiCkBAIC03NSw2ICs3NiwxNSBAQCB2b2lkIFdlYlNXQ2xpZW50
Q29ubmVjdGlvbjo6c2V0U1dPcmlnaW5UYWJsZVNoYXJlZE1lbW9yeShjb25zdCBTaGFyZWRNZW1v
cnk6OkhhbgogICAgIG1fc3dPcmlnaW5UYWJsZS0+c2V0U2hhcmVkTWVtb3J5KGhhbmRsZSk7CiB9
CiAKK1JlZjxTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g+IFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6
c3RhcnRGZXRjaChXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXImIHByb3ZpZGVyLCBSZWY8V2ViQ29y
ZTo6UmVzb3VyY2VMb2FkZXI+JiYgbG9hZGVyLCB1aW50NjRfdCBpZGVudGlmaWVyLCBTZXJ2aWNl
V29ya2VyQ2xpZW50RmV0Y2g6OkNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgQVNTRVJUKGxv
YWRlci0+b3B0aW9ucygpLnNlcnZpY2VXb3JrZXJzTW9kZSA9PSBTZXJ2aWNlV29ya2Vyc01vZGU6
OkFsbCk7CisgICAgLy8gRklYTUU6IERlY2lkZSB3aGV0aGVyIHRvIGFzc2VydCBmb3IgbG9hZGVy
LT5vcHRpb25zKCkuc2VydmljZVdvcmtlcklkZW50aWZpZXIgb25jZSB3ZSBoYXZlIGEgc3Rvcnkg
Zm9yIG5hdmlnYXRpb24gbG9hZHMuCisKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNv
bm5lY3Rpb246OlN0YXJ0RmV0Y2goaWRlbnRpZmllciwgbG9hZGVyLT5vcHRpb25zKCkuc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIGxvYWRlci0+b3JpZ2luYWxSZXF1ZXN0KCksIGxvYWRlci0+b3B0
aW9ucygpKSk7CisgICAgcmV0dXJuIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6Y3JlYXRlKHBy
b3ZpZGVyLCBXVEZNb3ZlKGxvYWRlciksIGlkZW50aWZpZXIsIG1fY29ubmVjdGlvbi5nZXQoKSwg
V1RGTW92ZShjYWxsYmFjaykpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlm
IC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKaW5kZXggMjYxN2VjMmU3
NGYwZTU0ZTI0NDY2OGMyYzIzNWQzNjNiZGFkZDY1My4uOTFiOWY4YzYyNGNlYTFhZmU2NTI2OGU4
NDg0OGJjNjI0YmVmZDRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNp
bmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5j
bHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRGZXRj
aC5oIgogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU1dDbGll
bnRDb25uZWN0aW9uLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgpAQCAtMzcsMTEgKzM4
LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBFeGNlcHRpb25EYXRhOworY2xh
c3MgUmVzb3VyY2VMb2FkZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJT
V09yaWdpblRhYmxlOworY2xhc3MgV2ViU2VydmljZVdvcmtlclByb3ZpZGVyOwogCiBjbGFzcyBX
ZWJTV0NsaWVudENvbm5lY3Rpb24gOiBwdWJsaWMgV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9u
LCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIg
ewogcHVibGljOgpAQCAtNTgsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZl
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKIAogICAgIGJv
b2wgaGFzU2VydmljZVdvcmtlclJlZ2lzdGVyZWRGb3JPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4mKSBjb25zdCBmaW5hbDsKKyAgICBSZWY8U2VydmljZVdvcmtlckNsaWVudEZl
dGNoPiBzdGFydEZldGNoKFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlciYsIFJlZjxXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRlcj4mJiwgdWludDY0X3QgaWRlbnRpZmllciwgU2VydmljZVdvcmtlckNsaWVu
dEZldGNoOjpDYWxsYmFjayYmKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHNjaGVkdWxlU3RvcmFn
ZUpvYihjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YSYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQ
cm92aWRlci5jcHAKaW5kZXggNjFkOGNlNTZlZWM1YmQ0MTczYjY0MmJlOTA2MWU3M2M3NzM3NmY5
OS4uNmM2YjQyMjNmMWNhNGI3YWRkZmM4YTU2N2JlZDlhM2M3Zjg4YThhNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29y
a2VyUHJvdmlkZXIuY3BwCkBAIC01OCw2ICs1OCw1OCBAQCBXZWJDb3JlOjpTV0NsaWVudENvbm5l
Y3Rpb24mIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2VydmljZVdvcmtlckNvbm5lY3Rpb25G
bwogICAgIHJldHVybiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJUb1N0b3JhZ2VQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Npb24oc2Vzc2lvbklE
KTsKIH0KIAorc3RhdGljIGlubGluZSBib29sIHNob3VsZEhhbmRsZUZldGNoKGNvbnN0IFdlYlNX
Q2xpZW50Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBj
b25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgaWYgKG9wdGlvbnMu
c2VydmljZVdvcmtlcnNNb2RlICE9IFNlcnZpY2VXb3JrZXJzTW9kZTo6QWxsKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHByb2JhYmx5IGFzc2VydCB0
aGF0IG9wdGlvbnMuc2VydmljZVdvcmtlcnNJZGVudGlmaWVyIGlzIG5vdCBudWxsLgorICAgIGlm
IChpc1BvdGVudGlhbE5hdmlnYXRpb25PclN1YnJlc291cmNlUmVxdWVzdChvcHRpb25zLmRlc3Rp
bmF0aW9uKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gRklYTUU6IEltcGxlbWVu
dCBub24tc3VicmVzb3VyY2UgcmVxdWVzdCBsb2Fkcy4KKyAgICBpZiAoaXNOb25TdWJyZXNvdXJj
ZVJlcXVlc3Qob3B0aW9ucy5kZXN0aW5hdGlvbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlmICghcmVzb3VyY2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBj
b25uZWN0aW9uLmhhc1NlcnZpY2VXb3JrZXJSZWdpc3RlcmVkRm9yT3JpZ2luKCpyZXNvdXJjZS0+
b3JpZ2luKCkpOworfQorCit2b2lkIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6aGFuZGxlRmV0
Y2goUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6Q2FsbGJhY2sm
JiBjYWxsYmFjaykKK3sKKyAgICBhdXRvJiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkud2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VydmljZVdvcmtlckNvbm5l
Y3Rpb25Gb3JTZXNzaW9uKHNlc3Npb25JRCk7CisKKyAgICBpZiAoIXNob3VsZEhhbmRsZUZldGNo
KGNvbm5lY3Rpb24sIHJlc291cmNlLCBsb2FkZXIub3B0aW9ucygpKSkgeworICAgICAgICAvLyBB
ZGQgYW4gb3B0aW9uIHRvIGVycm9yIHJlc291cmNlIGxvYWQgZm9yIERUTCB0byBhY3R1YWxseSBn
byB0aHJvdWdoIHByZWZsaWdodC4KKyAgICAgICAgY2FsbGJhY2soU2VydmljZVdvcmtlckNsaWVu
dEZldGNoOjpSZXN1bHQ6OlVuaGFuZGxlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBhdXRvIGZldGNoID0gY29ubmVjdGlvbi5zdGFydEZldGNoKCp0aGlzLCBsb2FkZXIsIGxvYWRl
ci5pZGVudGlmaWVyKCksIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBtX29uZ29pbmdGZXRjaFRh
c2tzLmFkZChsb2FkZXIuaWRlbnRpZmllcigpLCBXVEZNb3ZlKGZldGNoKSk7Cit9CisKK2Jvb2wg
V2ViU2VydmljZVdvcmtlclByb3ZpZGVyOjpjYW5jZWxGZXRjaCh1aW50NjRfdCBmZXRjaElkZW50
aWZpZXIpCit7CisgICAgYXV0byBmZXRjaCA9IG1fb25nb2luZ0ZldGNoVGFza3MudGFrZShmZXRj
aElkZW50aWZpZXIpOworICAgIGlmIChmZXRjaCkKKyAgICAgICAgKCpmZXRjaCktPmNhbmNlbCgp
OworICAgIHJldHVybiAhIWZldGNoOworfQorCit2b2lkIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRl
cjo6ZmV0Y2hGaW5pc2hlZCh1aW50NjRfdCBmZXRjaElkZW50aWZpZXIpCit7CisgICAgbV9vbmdv
aW5nRmV0Y2hUYXNrcy50YWtlKGZldGNoSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViU2Vydmlj
ZVdvcmtlclByb3ZpZGVyOjpkaWRSZWNlaXZlU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sK
KyAgICBpZiAoYXV0byBmZXRjaCA9IG1fb25nb2luZ0ZldGNoVGFza3MuZ2V0KGRlY29kZXIuZGVz
dGluYXRpb25JRCgpKSkKKyAgICAgICAgZmV0Y2gtPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rp
b24sIGRlY29kZXIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmgKaW5kZXggNzc1ZjVlZTA0
YjJjNmZkZDc1NmEyZWNlODhjNjhhNzcwZmM3MDEwZi4uMDk4YjczZDUzZTVjYzkxZDcyMmIzOTAw
YzY0Y2UwMDc5MWE4YTBhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmgKQEAgLTI3LDYgKzI3LDcg
QEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorI2luY2x1ZGUgIlNlcnZpY2VXb3Jr
ZXJDbGllbnRGZXRjaC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclByb3ZpZGVy
Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAgLTM2LDEyICszNywxOSBA
QCBjbGFzcyBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6
U2VydmljZVdvcmtlclByb3ZpZGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViU2VydmljZVdv
cmtlclByb3ZpZGVyJiBzaW5nbGV0b24oKTsKIAorICAgIHZvaWQgaGFuZGxlRmV0Y2goV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkZXImLCBXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZSosIFBBTDo6U2Vzc2lv
bklELCBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkNhbGxiYWNrJiYpOworICAgIGJvb2wgY2Fu
Y2VsRmV0Y2godWludDY0X3QgZmV0Y2hJZGVudGlmaWVyKTsKKyAgICB2b2lkIGZldGNoRmluaXNo
ZWQodWludDY0X3QgZmV0Y2hJZGVudGlmaWVyKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jik7CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIE5ldmVyRGVzdHJveWVkPFdlYlNlcnZpY2VXb3Jr
ZXJQcm92aWRlcj47CiAgICAgV2ViU2VydmljZVdvcmtlclByb3ZpZGVyKCk7CiAKICAgICBXZWJD
b3JlOjpTV0NsaWVudENvbm5lY3Rpb24mIHNlcnZpY2VXb3JrZXJDb25uZWN0aW9uRm9yU2Vzc2lv
bihQQUw6OlNlc3Npb25JRCkgZmluYWw7CiAKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWY8U2Vy
dmljZVdvcmtlckNsaWVudEZldGNoPj4gbV9vbmdvaW5nRmV0Y2hUYXNrczsKIH07IC8vIGNsYXNz
IFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlRvU3RvcmFnZVByb2Nl
c3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlRv
U3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA1YTEyZDA0ZGNiZDIzMTEyYzQwMzkz
MTk0NWU1ZmM1NTYxMDMwNzc2Li5iMmRmODM3ZTFkODMzNTkxZmE1YjQ4NGUzMzliY2Q4NTYzYzE1
MDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJUb1N0
b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0yNywxMSArMjcs
MTMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJUb1N0b3JhZ2VQcm9jZXNz
Q29ubmVjdGlvbi5oIgogCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2ViSURCQ29ubmVjdGlvblRvU2VydmVyTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiV2ViU1dDbGllbnRDb25uZWN0aW9uLmgiCiAjaW5j
bHVkZSAiV2ViU1dDbGllbnRDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJTZXJ2
aWNlV29ya2VyUHJvdmlkZXIuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFBBTDsKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwpAQCAtNjcsNiArNjksMTAgQEAgdm9pZCBXZWJUb1N0b3JhZ2VQcm9jZXNz
Q29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW8K
ICAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJDb25uZWN0aW9uLT5kaWRSZWNlaXZlTWVzc2FnZShj
b25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBpZiAoZGVj
b2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGll
bnRGZXRjaDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIFdlYlNlcnZpY2VXb3Jr
ZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZVNlcnZpY2VXb3JrZXJDbGllbnRGZXRj
aE1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAj
ZW5kaWYKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcAppbmRleCA2ZTI3NjcxMWVjYzU4N2I5NzRhY2EzMTMxNmRiZDFjYTNj
ZjcxOTFiLi4xZjdiMjA0MDM3NjQ0ZjgxODdjMDljZjEzZjlmYzlhNTc1N2IxMWM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5j
bHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Np
b24uaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuaCIKKyNpbmNs
dWRlICJTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuaCIKICNpbmNsdWRlICJTZXNzaW9uVHJh
Y2tlci5oIgogI2luY2x1ZGUgIlN0YXRpc3RpY3NEYXRhLmgiCiAjaW5jbHVkZSAiU3RvcmFnZVBy
b2Nlc3NNZXNzYWdlcy5oIgpAQCAtMTA1LDcgKzEwNiw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZUxvYWRPYnNlcnZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9TV0NvbnRleHRNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TY2hlbWVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oPgpAQCAtMTYyMiw3
ICsxNjIyLDcgQEAgTGliV2ViUlRDTmV0d29yayYgV2ViUHJvY2Vzczo6bGliV2ViUlRDTmV0d29y
aygpCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogdm9pZCBXZWJQcm9jZXNzOjpnZXRXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvbigpCiB7Ci0gICAgQVNTRVJUKCFtX3dvcmtlckNvbnRleHRDb25u
ZWN0aW9uKTsKKyAgICBBU1NFUlQoIW1fc2VydmljZVdvcmtlck1hbmFnZXIpOwogCiAjaWYgVVNF
KFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAgICAgSVBDOjpDb25uZWN0aW9uOjpTb2NrZXRQYWlyIHNv
Y2tldFBhaXIgPSBJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpOwpA
QCAtMTY0MiwyMCArMTY0MiwyNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmdldFdvcmtlckNvbnRleHRD
b25uZWN0aW9uKCkKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2VuZGlmCiAK
LSAgICBtX3dvcmtlckNvbnRleHRDb25uZWN0aW9uID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVT
ZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyLCAqdGhpcyk7Ci0gICAgbV93b3Jr
ZXJDb250ZXh0Q29ubmVjdGlvbi0+b3BlbigpOwotCisgICAgYXV0byB3b3JrZXJDb250ZXh0Q29u
bmVjdGlvbiA9IElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQ29ubmVjdGlvbihjb25uZWN0
aW9uSWRlbnRpZmllciwgKnRoaXMpOworICAgIHdvcmtlckNvbnRleHRDb25uZWN0aW9uLT5vcGVu
KCk7CisgICAgbV9zZXJ2aWNlV29ya2VyTWFuYWdlciA9ICBTZXJ2aWNlV29ya2VyQ29udGV4dE1h
bmFnZXIoV1RGTW92ZSh3b3JrZXJDb250ZXh0Q29ubmVjdGlvbikpOwogICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
YlByb2Nlc3NQcm94eTo6RGlkR2V0V29ya2VyQ29udGV4dENvbm5lY3Rpb24oY29ubmVjdGlvbkNs
aWVudFBvcnQpLCAwKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpzdGFydFNlcnZpY2VXb3JrZXJD
b250ZXh0KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEmIGRhdGEpCiB7Ci0gICAgYXV0byBjb250ZXh0UmVzdWx0ID0gU1dD
b250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4dChzZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgZGF0YSk7Ci0gICAgCi0gICAgaWYgKGNvbnRleHRSZXN1
bHQuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgIG1fd29ya2VyQ29udGV4dENvbm5lY3Rpb24tPnNl
bmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpTZXJ2aWNlV29ya2VyQ29udGV4dEZhaWxlZFRv
U3RhcnQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGRhdGEucmVnaXN0cmF0aW9uS2V5LCBk
YXRhLndvcmtlcklELCBjb250ZXh0UmVzdWx0LmV4Y2VwdGlvbigpLm1lc3NhZ2UoKSksIDApOwot
ICAgIGVsc2UKLSAgICAgICAgbV93b3JrZXJDb250ZXh0Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6U3RvcmFnZVByb2Nlc3M6OlNlcnZpY2VXb3JrZXJDb250ZXh0U3RhcnRlZChzZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciwgZGF0YS5yZWdpc3RyYXRpb25LZXksIGNvbnRleHRSZXN1bHQucmV0
dXJuVmFsdWUoKSwgZGF0YS53b3JrZXJJRCksIDApOworICAgIEFTU0VSVChtX3NlcnZpY2VXb3Jr
ZXJNYW5hZ2VyKTsKKyAgICBpZiAoIW1fc2VydmljZVdvcmtlck1hbmFnZXIpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fc2VydmljZVdvcmtlck1hbmFnZXItPnN0YXJ0U2VydmljZVdvcmtlckNv
bnRleHQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGRhdGEpOworfQorCit2b2lkIFdlYlBy
b2Nlc3M6OnN0YXJ0RmV0Y2hJblNlcnZpY2VXb3JrZXIodWludDY0X3Qgc2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgdWludDY0X3Qgc2VydmljZVdv
cmtlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgRmV0
Y2hPcHRpb25zJiBvcHRpb25zKQoreworICAgIGlmICghbV9zZXJ2aWNlV29ya2VyTWFuYWdlcikK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9zZXJ2aWNlV29ya2VyTWFuYWdlci0+c3RhcnRGZXRj
aChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyLCBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9ucyk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggNWMyZTZjNzZkZjc4MjQ1YTFiMzE1NDljNmUw
MTFmZTRmNWQ0ZDNmNy4uZmVlMTQzNjI2YjcxZWI5MTBjODczNTBmMDU2ZDIyNzZhYmZjOTFhOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0zMCw2ICszMCw3IEBACiAj
aW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUmVz
b3VyY2VDYWNoZXNUb0NsZWFyLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgorI2lu
Y2x1ZGUgIlNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5oIgogI2luY2x1ZGUgIlRleHRDaGVj
a2VyU3RhdGUuaCIKICNpbmNsdWRlICJWaWV3VXBkYXRlRGlzcGF0Y2hlci5oIgogI2luY2x1ZGUg
IldlYkluc3BlY3RvckludGVycnVwdERpc3BhdGNoZXIuaCIKQEAgLTMwMCw3ICszMDEsNyBAQCBw
cml2YXRlOgogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGdldFdvcmtlckNv
bnRleHRDb25uZWN0aW9uKCk7CiAgICAgdm9pZCBzdGFydFNlcnZpY2VXb3JrZXJDb250ZXh0KHVp
bnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEmKTsKLSAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX3dvcmtl
ckNvbnRleHRDb25uZWN0aW9uOworICAgIHZvaWQgc3RhcnRGZXRjaEluU2VydmljZVdvcmtlcih1
aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlm
aWVyLCB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJik7CiAjZW5kaWYKIAog
ICAgIHZvaWQgcmVsZWFzZVBhZ2VDYWNoZSgpOwpAQCAtNDM4LDYgKzQzOSw5IEBAIHByaXZhdGU6
CiAjaWYgUExBVEZPUk0oV0FZTEFORCkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2F5bGFuZENvbXBv
c2l0b3JEaXNwbGF5PiBtX3dheWxhbmRDb21wb3NpdG9yRGlzcGxheTsKICNlbmRpZgorI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDb250
ZXh0TWFuYWdlcj4gbV9zZXJ2aWNlV29ya2VyTWFuYWdlcjsKKyNlbmRpZgogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCmluZGV4IDIyMDYzNjAxZTA2M2FiNWIyMTc4ZmY3YjM2YzljOTkxMjgxMDc5
N2YuLmZhNTQ3MmMxMjI5MTU4OWY0MDhlOWI0YWJjMWY5ZmNhMGYzNWEwODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xMTcsNSAr
MTE3LDYgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIEdldFdvcmtlckNvbnRleHRDb25uZWN0aW9uKCkKICAg
ICBTdGFydFNlcnZpY2VXb3JrZXJDb250ZXh0KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhIGNvbnRleHRE
YXRhKQorICAgIFN0YXJ0RmV0Y2hJblNlcnZpY2VXb3JrZXIodWludDY0X3Qgc2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgdWludDY0X3Qgc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBzdHJ1
Y3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zIG9wdGlvbnMpCiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkYTg3
ZTM5ODFlYTRlMDQ1OWM3YWU3NjgyNTBlMDQyNDI0ZWViZjc4Li43ZWJhODdjZTU3YTZmYzY2NjYx
N2ZjZTE3MDNkZGE2MDBjOTExZDQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTctMTAtMTgg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBwcmVsaW1p
bmFyeSBzdXBwb3J0IGZvciBTZXJ2aWNlV29ya2VyIEhhbmRsZSBGZXRjaAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4NDc1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMv
c2VydmljZS9iYXNpYy1mZXRjaC5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2ljLWZldGNoLmh0dHBzLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9iYXNpYy1m
ZXRjaC13b3JrZXIuanM6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2
aWNlL3Jlc291cmNlcy9iYXNpYy1mZXRjaC5qczogQWRkZWQuCisKIDIwMTctMTAtMTggIE1zMmdl
ciAgPE1zMmdlckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFRlc3QgZ2FyZGVuaW5nLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvYmFzaWMt
ZmV0Y2guaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJz
L3NlcnZpY2UvYmFzaWMtZmV0Y2guaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZmZDY0
OWYwOWJmMTQzMDFjZTg3Y2QwYzlmYzYyNGFkYzYwZDY0ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1mZXRjaC5odHRwcy1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTI6IHRl
c3QxIHN0YXR1cyBjb2RlOiAyMDAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxMzogdGVzdDEgc3Rh
dHVzIHRleHQ6IEhlbGxvIGZyb20gc2VydmljZSB3b3JrZXIKK0NPTlNPTEUgTUVTU0FHRTogbGlu
ZSAxNjogdGVzdDIgc3RhdHVzIGNvZGU6IDUwMAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE3OiB0
ZXN0MiBzdGF0dXMgdGV4dDogRXJyb3IgZnJvbSBzZXJ2aWNlIHdvcmtlcgorQ09OU09MRSBNRVNT
QUdFOiBsaW5lIDI2OiB0ZXN0MyBmZXRjaCBmYWlsZWQgYXMgZXhwZWN0ZWQKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvYmFzaWMtZmV0Y2guaHR0
cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2ljLWZl
dGNoLmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjJhMDY2YWM5OGVmNzhiODg0ZjVmY2FlNDZhOTQx
OGE1OGE1Y2JhZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29y
a2Vycy9zZXJ2aWNlL2Jhc2ljLWZldGNoLmh0dHBzLmh0bWwKQEAgLTAsMCArMSw5IEBACis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zdy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPHNjcmlwdCBzcmM9InJlc291cmNlcy9iYXNpYy1mZXRj
aC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvYmFzaWMtZmV0Y2gtd29ya2Vy
LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jh
c2ljLWZldGNoLXdvcmtlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOWQ4YTJiZDMwMTVjYWU0YTRhNDg1NmEy
NGYzOWFmODZjMTZkMTc0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2ljLWZldGNoLXdvcmtlci5qcwpAQCAtMCww
ICsxIEBACisvLyBGSVhNRTogcmVnaXN0ZXIgYW4gb25mZXRjaCBldmVudCBoYW5kbGVyIGFuZCBo
YW5kbGUgInRlc3QxIiwgInRlc3QyIiBhbmQgInRlc3QzIiBVUkxzCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvYmFzaWMtZmV0Y2gu
anMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvYmFz
aWMtZmV0Y2guanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjg3NDNhMjY0MjliMTc3N2IyNGNiNzYxMjVmODAwM2Nj
OWM0OGQ0ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vy
cy9zZXJ2aWNlL3Jlc291cmNlcy9iYXNpYy1mZXRjaC5qcwpAQCAtMCwwICsxLDM0IEBACitmdW5j
dGlvbiBkb25lKCkKK3sKKyAgICBmaW5pc2hTV1Rlc3QoKTsKK30KKworYXN5bmMgZnVuY3Rpb24g
dGVzdCgpCit7CisgICAgdHJ5IHsKKyAgICAgICAgYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3Jr
ZXIucmVnaXN0ZXIoInJlc291cmNlcy9iYXNpYy1mZXRjaC13b3JrZXIuanMiLCB7IH0pOworCisg
ICAgICAgIHZhciByZXNwb25zZSA9IGF3YWl0IGZldGNoKCJ0ZXN0MSIpOworICAgICAgICBjb25z
b2xlLmxvZygidGVzdDEgc3RhdHVzIGNvZGU6ICIgKyByZXNwb25zZS5zdGF0dXMpOworICAgICAg
ICBjb25zb2xlLmxvZygidGVzdDEgc3RhdHVzIHRleHQ6ICIgKyByZXNwb25zZS5zdGF0dXNUZXh0
KTsKKworICAgICAgICB2YXIgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCgidGVzdDIiKTsKKyAgICAg
ICAgY29uc29sZS5sb2coInRlc3QyIHN0YXR1cyBjb2RlOiAiICsgcmVzcG9uc2Uuc3RhdHVzKTsK
KyAgICAgICAgY29uc29sZS5sb2coInRlc3QyIHN0YXR1cyB0ZXh0OiAiICsgcmVzcG9uc2Uuc3Rh
dHVzVGV4dCk7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJlc3BvbnNlID0gYXdhaXQg
ZmV0Y2goInRlc3QzIik7CisgICAgICAgICAgICBjb25zb2xlLmxvZygidGVzdDMgZmV0Y2ggc3Vj
Y2VlZGVkIHVuZXhwZWN0ZWRseSIpOworICAgICAgICAgICAgY29uc29sZS5sb2coInRlc3QzIHN0
YXR1cyBjb2RlOiAiICsgcmVzcG9uc2Uuc3RhdHVzKTsKKyAgICAgICAgICAgIGNvbnNvbGUubG9n
KCJ0ZXN0MyBzdGF0dXMgdGV4dDogIiArIHJlc3BvbnNlLnN0YXR1c1RleHQpOworCisgICAgICAg
IH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIGNvbnNvbGUubG9nKCJ0ZXN0MyBmZXRjaCBmYWls
ZWQgYXMgZXhwZWN0ZWQiKTsKKyAgICAgICAgfQorICAgIH0gY2F0Y2goZSkgeworICAgICAgICBj
b25zb2xlLmxvZygiR290IGV4Y2VwdGlvbjogIiArIGUpOworICAgIH0KKyAgICBmaW5pc2hTV1Rl
c3QoKTsKK30KKwordGVzdCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324192</attachid>
            <date>2017-10-18 18:29:54 -0700</date>
            <delta_ts>2017-10-19 13:37:51 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-178475-20171018182953.patch</filename>
            <type>text/plain</type>
            <size>90649</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzNjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzY3NTRjYjZkZDlmNThl
ZDRiNjllN2U5M2E3ODI4NWM5MmQ4OWNmNi4uMTkxZjlkZmUyMDc3YTg3NTYyZjI2OGM5MjkyY2Zj
YjFlYzI5ZDE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE3LTEwLTE4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgcHJlbGltaW5hcnkg
c3VwcG9ydCBmb3IgU2VydmljZVdvcmtlciBIYW5kbGUgRmV0Y2gKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODQ3NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IENocmlzIER1bWV6LgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2
aWNlL2Jhc2ljLWZldGNoLmh0dHBzLmh0bWwKKworICAgICAgICBBZGRpbmcgcGFyYW1ldGVycyB0
byBhbGxvdyBXZWJLaXQgdG8gZG8gbG9hZGluZyB0aHJvdWdoIFNlcnZpY2UgV29ya2VyIG9yIHRo
cm91Z2ggcmVndWxhciBuZXR3b3JraW5nLgorICAgICAgICBBIHNjcmlwdCBjb250ZXh0IGlzIG5v
dyBzdG9yaW5nIGl0cyBzZWxlY3RlZCBzZXJ2aWNlIHdvcmtlciBpZGVudGlmaWVyLiBUaGlzIHNo
b3VsZCBiZSBmdWxseSBpbXBsZW1lbnRlZCBsYXRlciBvbi4KKyAgICAgICAgVGhpcyBzZWxlY3Rl
ZCBzZXJ2aWNlIHdvcmtlciBpZGVudGlmaWVyIGlzIHBhc3NlZCB0byBsb2FkaW5nIGNvZGUgYXMg
YSBSZXNvdXJjZUxvYWRlck9wdGlvbnMgZmllbGQuCisgICAgICAgIFNlcnZpY2Ugd29ya2VycyBt
b2RlIGlzIGFsc28gYWRkZWQgYXMgYSBSZXNvdXJjZUxvYWRlck9wdGlvbnMgZmllbGQgc28gdGhh
dCB0aGUgc2VydmljZSB3b3JrZXIgY2FuIGJlIGJ5cGFzc2VkLgorCisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRp
b25Db250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpz
ZWxlY3RlZFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnNldFNlbGVjdGVkU2VydmljZVdvcmtlcklkZW50aWZp
ZXIpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIpOgorICAgICAgICAqIGxvYWRlci9GZXRjaE9wdGlvbnMuaDoKKyAgICAgICAgKFdl
YkNvcmU6OmlzUG90ZW50aWFsTmF2aWdhdGlvbk9yU3VicmVzb3VyY2VSZXF1ZXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OmlzTm9uU3VicmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIv
UmVzb3VyY2VMb2FkZXJPcHRpb25zLmg6CisgICAgICAgICogbG9hZGVyL1dvcmtlclRocmVhZGFi
bGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6
V29ya2VyVGhyZWFkYWJsZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRh
YmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKToKKyAgICAgICAg
KiBsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VSZXNwb25zZUJhc2UuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclRocmVhZC5o
OgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29sdmVkV2l0
aFJlZ2lzdHJhdGlvbik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJQ
cm92aWRlci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1h
bmFnZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWQuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyLmg6CisKIDIwMTctMTAtMTggIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgog
CiAgICAgICAgIFNvbWUgb2xkZXIgaGFyZHdhcmUgY2FuJ3QgYWN0dWFsbHkgdXNlIHJlbmRlcmJ1
ZmZlcnMgYXQgdGhlIHNpemUgdGhleSBhZHZlcnRpc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYTkzM2ZhMjI2ZjBm
NzlkN2NmMDk5NzQ2M2NlOTY3NThmZjlhYTAwMS4uNTU1YWU4NDg5MzUyYjNmYzMwMjAwM2QyYmIy
OTljMjY4MWI1YTQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4NCBAQAorMjAxNy0xMC0xOCAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHByZWxpbWluYXJ5
IHN1cHBvcnQgZm9yIFNlcnZpY2VXb3JrZXIgSGFuZGxlIEZldGNoCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzg0NzUKKworICAgICAgICBSZXZpZXdl
ZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICBQcmVsaW1pbmFyeSBzdXBwb3J0IG9mIEhhbmRs
ZSBGZXRjaCBhbGdvcml0aG0gYW5kIGludGVncmF0aW9uIHdpdGggZmV0Y2ggc3BlYy4KKyAgICAg
ICAgQWRkaW5nIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaCBhcyB0aGUgY2xhc3MgcmVzcG9uc2li
bGUgdG8gZG8gdGhlIGxvYWQgdGhyb3VnaCBTZXJ2aWNlV29ya2VyLgorICAgICAgICBJdCBpcyBz
aW1pbGFyIHRvIFdlYlJlc291cmNlTG9hZGVyIHRoYXQgZG8gdGhlIGxvYWQgdGhyb3VnaCBOZXR3
b3JrUHJvY2Vzcy4KKyAgICAgICAgSW4gY2FzZSBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2ggaXMg
bm90IGFibGUgdG8gbG9hZCB0aHJvdWdoIFNlcnZpY2VXb3JrZXIsCisgICAgICAgIGl0IHdpbGwg
ZmFsbGJhY2sgdG8gV2ViUmVzb3VyY2VMb2FkZXIgdGhyb3VnaCBhIGZhbGxiYWNrIGNhbGxiYWNr
LgorCisgICAgICAgIExvYWRpbmcgdGhyb3VnaCBTZXJ2aWNlIFdvcmtlciBpcyBkb25lIGN1cnJl
bnRseSBpZjoKKyAgICAgICAgLSBUaGVyZSBpcyBhIHNlcnZpY2Ugd29ya2VyIHJlZ2lzdGVyZWQg
Zm9yIHRoYXQgb3JpZ2luCisgICAgICAgIC0gUmVxdWVzdCBpcyBhIHN1YnJlc291cmNlCisgICAg
ICAgIC0gc2VydmljZSB3b3JrZXJzIG1vZGUgaXMgYWxsCisgICAgICAgIFRoZXJlIHdpbGwgYmUg
Y2FzZXMgd2hlcmUgdGhlIHNlcnZpY2Ugd29ya2VyIHdpbGwgbm90IGRvIHRoZSBsb2FkaW5nLCBm
b3IgaW5zdGFuY2Ugd2hlbiBmZXRjaCBldmVudCBoYW5kbGVyIGlzIG5vdCBzZXQuCisgICAgICAg
IEZ1dHVyZSB3b3JrIHNob3VsZCB0cnkgdG8gcmVkdWNlIHRoZSBjYXNlcyB3aGVyZSB0aGUgSVBD
IGRhbmNlIGlzIGRvbmUgdW5uZWNlc3NhcmlseS4KKworICAgICAgICBTZXJ2aWNlV29ya2VyQ2xp
ZW50RmV0Y2ggaXMgcmVzcG9uc2libGUgdG8gYWRhcHQgdGhlIFNlcnZpY2VXb3JrZXIgcmVzcG9u
c2UgdG8gUmVzb3VyY2VMb2FkZXIuCisgICAgICAgIEluIHBhcnRpY3VsYXIsIGl0IGlzIGNhbGxp
bmcgUmVzb3VyY2VMb2FkZXIgZXJyb3IgY2FsbGJhY2sgaWYgcmVzcG9uc2UgaXMgb2YgdHlwZSBl
cnJvci4KKyAgICAgICAgSXQgc2hvdWxkIGNhbGwgUmVzb3VyY2VMb2FkZXIgcmVkaXJlY3Rpb24g
Y2FsbGJhY2sgaWYgcmVzcG9uc2UgaXMgYSByZWRpcmVjdGlvbiByZXNwb25zZS4KKyAgICAgICAg
VGhpcyB3aWxsIGJlIGRvbmUgYXMgYSBmb2xsb3ctdXAuCisKKyAgICAgICAgSW1wbGVtZW50aW5n
IHRoZSBJUEMgY29tbXVuaWNhdGlvbiBkZWRpY2F0ZWQgdG8gZmV0Y2ggYmV0d2VlbiBXZWJQcm9j
ZXNzIGFuZCBTZXJ2aWNlV29ya2VyIHRocm91Z2ggU3RvcmFnZVByb2Nlc3MuCisgICAgICAgIElu
IHRoZSBmdXR1cmUsIFdlYlByb2Nlc3Mgc2hvdWxkIGNyZWF0ZSBhIGRpcmVjdCBJUEMgY29tbXVu
aWNhdGlvbiB0byB0aGUgU2VydmljZVdvcmtlciBwcm9jZXNzLgorCisgICAgICAgIE1vdmVkIFNX
Q29udGV4dE1hbmFnZXIgZnJvbSBXZWJDb3JlIHRvIFdlYktpdCBhbmQgcmVuYW1lZCBpdCB0byBT
ZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuCisgICAgICAgIFRoaXMgY2xhc3MgaXMgbW92ZWQg
dG8gV2ViS2l0IGFzIGl0IHdpbGwgaGF2ZSB0byBoYW5kbGUgSVBDIGFuZCBoYXZpbmcgYSBzZXBh
cmF0aW9uIHdpbGwgYWRkIHNvbWUgdW5uZWNlc3NhcnkgYm9pbGVycGxhdGUuCisKKyAgICAgICAg
KiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uOjpzdGFydEZldGNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2
ZXJDb25uZWN0aW9uOjpkaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUZldGNoRGF0YSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6ZGlkRmluaXNoRmV0Y2gpOgorICAgICAgICAo
V2ViS2l0OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OmZhaWxlZEZldGNoKToKKyAgICAgICAgKiBT
dG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oOgorICAg
ICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OmZhaWxlZEZldGNoKToKKyAgICAg
ICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OmRpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKToKKyAg
ICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OmRpZFJlY2VpdmVGZXRjaERhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6ZGlkRmluaXNoRmV0Y2gpOgorICAgICAgICAq
IFN0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmg6CisgICAgICAgICogU3RvcmFnZVByb2Nl
c3MvU3RvcmFnZVByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRl
clN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVk
dWxlTG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxv
YWRGcm9tTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJM
b2FkZXJTdHJhdGVneS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29y
a2VyQ2xpZW50RmV0Y2guY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtl
ckNsaWVudEZldGNoOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2
aWNlV29ya2VyQ2xpZW50RmV0Y2g6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6
U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpkaWRGaW5pc2hGZXRjaCk6CisgICAgICAgIChXZWJL
aXQ6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6ZGlkRmFpbCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5oOiBBZGRlZC4KKyAgICAgICAg
KiBXZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLm1lc3NhZ2VzLmlu
OiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNvbnRl
eHRNYW5hZ2VyLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwLgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNl
V29ya2VyQ29udGV4dE1hbmFnZXI6OnN0YXJ0U2VydmljZVdvcmtlckNvbnRleHQpOgorICAgICAg
ICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXI6OnN0YXJ0RmV0Y2gpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuaDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29u
dGV4dE1hbmFnZXIuaC4KKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckNvbnRleHRNYW5h
Z2VyOjpTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJT
V0NsaWVudENvbm5lY3Rpb246OnN0YXJ0RmV0Y2gpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2hvdWxk
SGFuZGxlRmV0Y2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6
OmhhbmRsZUZldGNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlclByb3ZpZGVy
OjpkaWRSZWNlaXZlU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZl
TWVzc2FnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzczo6Z2V0V29ya2VyQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzdGFydFNlcnZpY2VXb3JrZXJDb250ZXh0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c3RhcnRGZXRjaEluU2VydmljZVdvcmtlcik6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluOgorCiAyMDE3LTEwLTE4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CiAKICAgICAgICAgW1NlcnZpY2UgV29ya2VyXSBBZGQgc3R1YnMgZm9yIENsaWVu
dCAvIFdpbmRvd0NsaWVudCAvIENsaWVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmMTM1ZDFiMWYzZmE2ODI3YTBkNGE1Mjgw
YWZiOWM4MGI5MzI2OWM1Li43ZmJhYmM1ZjE4ZThkYWFjOWM5ZWY2MmMwZWRlNzRmNjZmZTE4NDdi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0yMzI3LDggKzIzMjcsNiBAQAogCQk1MTdBNjNDNjFCNzQzMTkyMDBFN0RDREMgLyog
S2V5ZWRFbmNvZGVyQ0YuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxN0E2M0MyMUI3NDMxN0UwMEU3RENEQyAvKiBLZXllZEVuY29kZXJDRi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxN0IyNUE5MUND
ODJCMkEwMDYxQzAxMSAvKiBJREJDb25uZWN0aW9uUHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3QjI1QTcxQ0M4MjAzMjAwNjFDMDExIC8q
IElEQkNvbm5lY3Rpb25Qcm94eS5jcHAgKi87IH07CiAJCTUxN0IyNUFBMUNDODJCMkEwMDYxQzAx
MSAvKiBJREJDb25uZWN0aW9uUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxN0IyNUE4MUNDODIwMzIwMDYxQzAxMSAvKiBJREJDb25uZWN0aW9u
UHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owot
CQk1MTdDODcwQTFGOEVCQjI1MDBFQjgwNzYgLyogU1dDb250ZXh0TWFuYWdlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdDODcwODFGOEVCOUJG
MDBFQjgwNzYgLyogU1dDb250ZXh0TWFuYWdlci5jcHAgKi87IH07Ci0JCTUxN0M4NzBCMUY4RUJC
MjUwMEVCODA3NiAvKiBTV0NvbnRleHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdDODcwOTFGOEVCOUMwMDBFQjgwNzYgLyogU1dDb250
ZXh0TWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTUxN0M4NzE4MUY4RkQ0RDkwMEVCODA3NiAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3
Qzg3MTYxRjhGRDREMzAwRUI4MDc2IC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAgKi87
IH07CiAJCTUxN0RFRUU1MURFOTRBREMwMEI5MTY0NCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1
bGF0b3JNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTdERUVFMzFERTk0QURDMDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
TWFjLm1tICovOyB9OwogCQk1MTdERUVFODFERTk0QjA4MDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9t
ZW50dW1DYWxjdWxhdG9yTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTdERUVFNzFERTk0QjA4MDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTEwMjMwLDggKzEwMjI4LDYgQEAKIAkJNTE3QTYzQzIxQjc0MzE3RTAwRTdEQ0RD
IC8qIEtleWVkRW5jb2RlckNGLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtl
eWVkRW5jb2RlckNGLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0IyNUE3MUND
ODIwMzIwMDYxQzAxMSAvKiBJREJDb25uZWN0aW9uUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSURCQ29ubmVjdGlvblByb3h5LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTE3QjI1QTgxQ0M4MjAzMjAwNjFDMDExIC8qIElEQkNvbm5lY3Rp
b25Qcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJDb25uZWN0aW9u
UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE3Qzg3MDgxRjhFQjlCRjAw
RUI4MDc2IC8qIFNXQ29udGV4dE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gU1dDb250ZXh0TWFuYWdlci5jcHA7IHBhdGggPSB3b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9
OwotCQk1MTdDODcwOTFGOEVCOUMwMDBFQjgwNzYgLyogU1dDb250ZXh0TWFuYWdlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTV0NvbnRleHRNYW5hZ2VyLmg7IHBhdGggPSB3
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSBT
T1VSQ0VfUk9PVDsgfTsKIAkJNTE3Qzg3MTAxRjhFRTcyRTAwRUI4MDc2IC8qIFNlcnZpY2VXb3Jr
ZXJUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU2VydmljZVdvcmtl
clRocmVhZC5oOyBwYXRoID0gd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRo
cmVhZC5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTUxN0M4NzExMUY4RUU3MkYw
MEVCODA3NiAvKiBTZXJ2aWNlV29ya2VyVGhyZWFkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IFNlcnZpY2VXb3JrZXJUaHJlYWQuY3BwOyBwYXRoID0gd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHA7IHNvdXJjZVRyZWUgPSBTT1VS
Q0VfUk9PVDsgfTsKIAkJNTE3Qzg3MTYxRjhGRDREMzAwRUI4MDc2IC8qIFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTkwODksOCArMTkwODUsNiBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNTE3Qzg3MTExRjhFRTcy
RjAwRUI4MDc2IC8qIFNlcnZpY2VXb3JrZXJUaHJlYWQuY3BwICovLAogCQkJCTUxN0M4NzEwMUY4
RUU3MkUwMEVCODA3NiAvKiBTZXJ2aWNlV29ya2VyVGhyZWFkLmggKi8sCi0JCQkJNTE3Qzg3MDgx
RjhFQjlCRjAwRUI4MDc2IC8qIFNXQ29udGV4dE1hbmFnZXIuY3BwICovLAotCQkJCTUxN0M4NzA5
MUY4RUI5QzAwMEVCODA3NiAvKiBTV0NvbnRleHRNYW5hZ2VyLmggKi8sCiAJCQkpOwogCQkJcGF0
aCA9IGNvbnRleHQ7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzA2MzYsNyArMzA2
MzAsNiBAQAogCQkJCUIyMjI3QUY2MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdab29tQW5kUGFuLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCMkU0RUM5ODBEMDBDMjJCMDA0MzI2NDMgLyogU1ZHWm9vbUV2
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTdBNTMxRDFGNEI1M0IxMDBEQ0RDMEEgLyogU1dD
bGllbnRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTdDODcwQjFGOEVCQjI1MDBF
QjgwNzYgLyogU1dDb250ZXh0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE3QTUyRjAx
RjQ3NTM1QjAwRENEQzBBIC8qIFNXU2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUY2NDU5
NzFGNEE2ODZGMDBCNTRERUQgLyogU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxN0E1MzQ2MUY1MEMxN0YwMERDREMwQSAvKiBTV1NlcnZlcldvcmtlci5oIGluIEhl
YWRlcnMgKi8sCkBAIC0zNDM2OCw3ICszNDM2MSw2IEBACiAJCQkJQjIyMjdBRjUwRDAwQkYyMjAw
NzFCNzgyIC8qIFNWR1pvb21BbmRQYW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJFNEVDOTcw
RDAwQzIyQjAwNDMyNjQzIC8qIFNWR1pvb21FdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
MTdBNTMxQzFGNEI1M0IxMDBEQ0RDMEEgLyogU1dDbGllbnRDb25uZWN0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAotCQkJCTUxN0M4NzBBMUY4RUJCMjUwMEVCODA3NiAvKiBTV0NvbnRleHRNYW5hZ2Vy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxN0E1MkYxMUY0NzU0RTcwMERDREMwQSAvKiBTV1Nl
cnZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUY2NDU5NjFGNEE2ODZGMDBCNTRERUQgLyog
U1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE3QTUzNDUxRjUw
QzE3RjAwRENEQzBBIC8qIFNXU2VydmVyV29ya2VyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggMzJmMTljMzAzZmYw
OWMwMzM4MGE0ZjE5MWEyMDRiMDA5YzBiOWY2MS4uOTZkZGQ2MjA4YTY1OTEyMWI1YWQ4OGQxZTJl
MTUyMzIzOWJhNTk3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oCkBAIC0yMzAsNiArMjMwLDExIEBAIHB1YmxpYzoKIAogICAgIEpTQzo6RXhlY1N0YXRl
KiBleGVjU3RhdGUoKTsKIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICB1aW50NjRf
dCBzZWxlY3RlZFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2
aWNlV29ya2VySWRlbnRpZmllcjsgfQorICAgIHZvaWQgc2V0U2VsZWN0ZWRTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllcih1aW50NjRfdCBpZGVudGlmaWVyKSB7IG1fc2VydmljZVdvcmtlcklkZW50aWZp
ZXIgPSBpZGVudGlmaWVyOyB9CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIGNsYXNzIEFkZENv
bnNvbGVNZXNzYWdlVGFzayA6IHB1YmxpYyBUYXNrIHsKICAgICBwdWJsaWM6CkBAIC0yOTcsNiAr
MzAyLDEwIEBAIHByaXZhdGU6CiAjaWYgIUFTU0VSVF9ESVNBQkxFRCB8fCBFTkFCTEUoU0VDVVJJ
VFlfQVNTRVJUSU9OUykKICAgICBib29sIG1fYWN0aXZlRE9NT2JqZWN0UmVtb3ZhbEZvcmJpZGRl
biB7IGZhbHNlIH07CiAjZW5kaWYKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICB1
aW50NjRfdCBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHsgMCB9OworI2VuZGlmCiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDkwMmM4OWUzOTczN2M0MTE0MWUzNWMyY2U0
MmU5MjY2OTc0MGMyOWUuLjRiNDhmNTFlYzAxNzVmYzZmMDFlZWI0Y2UxYzkxN2JmMjAzZmU4NzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuY3BwCkBAIC0xMDMsNiArMTAzLDExIEBAIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6RG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyKERvY3VtZW50JiBkb2N1bWVudCwgVGhyZWFkYWJsCiB7CiAg
ICAgcmVsYXhBZG9wdGlvblJlcXVpcmVtZW50KCk7CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCisgICAgaWYgKG1fb3B0aW9ucy5zZXJ2aWNlV29ya2Vyc01vZGUgPT0gU2VydmljZVdvcmtl
cnNNb2RlOjpBbGwgJiYgIW1fb3B0aW9ucy5zZXJ2aWNlV29ya2VySWRlbnRpZmllcikKKyAgICAg
ICAgbV9vcHRpb25zLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gZG9jdW1lbnQuc2VsZWN0ZWRT
ZXJ2aWNlV29ya2VySWRlbnRpZmllcigpOworI2VuZGlmCisKICAgICAvLyBTZXR0aW5nIGEgcmVm
ZXJyZXIgaGVhZGVyIGlzIG9ubHkgc3VwcG9ydGVkIGluIHRoZSBhc3luYyBjb2RlIHBhdGguCiAg
ICAgQVNTRVJUKG1fYXN5bmMgfHwgbV9yZWZlcnJlci5pc0VtcHR5KCkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRmV0Y2hPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRmV0Y2hPcHRpb25zLmgKaW5kZXggYTQwNDIwMzA3NzQ0MDQyZjFhYzI3NjJkNjMyMzY5
ZjllYWNiNTEyNC4uNzNiOTYyNGM4NjA5MTZkZWI5OTM3NzRjYWY4MjhmOTc0ZjdkMjE3OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZldGNoT3B0aW9ucy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GZXRjaE9wdGlvbnMuaApAQCAtNjksNiArNjksMjEgQEAgaW5saW5l
IEZldGNoT3B0aW9uczo6RmV0Y2hPcHRpb25zKERlc3RpbmF0aW9uIGRlc3RpbmF0aW9uLCBNb2Rl
IG1vZGUsIENyZWRlbnRpYWwKIHsKIH0KIAoraW5saW5lIGJvb2wgaXNQb3RlbnRpYWxOYXZpZ2F0
aW9uT3JTdWJyZXNvdXJjZVJlcXVlc3QoRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbiBkZXN0aW5h
dGlvbikKK3sKKyAgICByZXR1cm4gZGVzdGluYXRpb24gPT0gRmV0Y2hPcHRpb25zOjpEZXN0aW5h
dGlvbjo6T2JqZWN0CisgICAgICAgIHx8IGRlc3RpbmF0aW9uID09IEZldGNoT3B0aW9uczo6RGVz
dGluYXRpb246OkVtYmVkOworfQorCitpbmxpbmUgYm9vbCBpc05vblN1YnJlc291cmNlUmVxdWVz
dChGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uIGRlc3RpbmF0aW9uKQoreworICAgIHJldHVybiBk
ZXN0aW5hdGlvbiA9PSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpEb2N1bWVudAorICAgICAg
ICB8fCBkZXN0aW5hdGlvbiA9PSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpSZXBvcnQKKyAg
ICAgICAgfHwgZGVzdGluYXRpb24gPT0gRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6U2Vydmlj
ZXdvcmtlcgorICAgICAgICB8fCBkZXN0aW5hdGlvbiA9PSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0
aW9uOjpTaGFyZWR3b3JrZXIKKyAgICAgICAgfHwgZGVzdGluYXRpb24gPT0gRmV0Y2hPcHRpb25z
OjpEZXN0aW5hdGlvbjo6V29ya2VyOworfQorCiB9CiAKIG5hbWVzcGFjZSBXVEYgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oCmluZGV4IGQyYTkyYzNk
M2RjZjgyZTU4ZjIyZDAzNWNiYzdmZDBiMjUwNTZmM2UuLjVjNWEwZDQyN2I0ZTk5NjBiYjdjNWM3
ZDFmMWZhY2U1OWE0NDU0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlck9wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkZXJPcHRpb25zLmgKQEAgLTkyLDYgKzkyLDExIEBAIGVudW0gY2xhc3MgSW5pdGlhdG9yQ29u
dGV4dCB7CiAgICAgV29ya2VyLAogfTsKIAorZW51bSBjbGFzcyBTZXJ2aWNlV29ya2Vyc01vZGUg
eworICAgIEFsbCwKKyAgICBOb25lLAorfTsKKwogc3RydWN0IFJlc291cmNlTG9hZGVyT3B0aW9u
cyA6IHB1YmxpYyBGZXRjaE9wdGlvbnMgewogICAgIFJlc291cmNlTG9hZGVyT3B0aW9ucygpIHsg
fQogCkBAIC0xMjQsNiArMTI5LDggQEAgc3RydWN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyA6IHB1
YmxpYyBGZXRjaE9wdGlvbnMgewogICAgIENhY2hpbmdQb2xpY3kgY2FjaGluZ1BvbGljeSB7IENh
Y2hpbmdQb2xpY3k6OkFsbG93Q2FjaGluZyB9OwogICAgIFNhbWVPcmlnaW5EYXRhVVJMRmxhZyBz
YW1lT3JpZ2luRGF0YVVSTEZsYWcgeyBTYW1lT3JpZ2luRGF0YVVSTEZsYWc6OlVuc2V0IH07CiAg
ICAgSW5pdGlhdG9yQ29udGV4dCBpbml0aWF0b3JDb250ZXh0IHsgSW5pdGlhdG9yQ29udGV4dDo6
RG9jdW1lbnQgfTsKKyAgICBTZXJ2aWNlV29ya2Vyc01vZGUgc2VydmljZVdvcmtlcnNNb2RlIHsg
U2VydmljZVdvcmtlcnNNb2RlOjpBbGwgfTsKKyAgICB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRl
bnRpZmllciB7IDAgfTsKIAogICAgIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVu
dGlhbFBvbGljeSB7IENsaWVudENyZWRlbnRpYWxQb2xpY3k6OkNhbm5vdEFza0NsaWVudEZvckNy
ZWRlbnRpYWxzIH07CiAgICAgdW5zaWduZWQgbWF4UmVkaXJlY3RDb3VudCB7IDIwIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXgg
MzNiYjEyZTgxYjhhMWM0OWEwYTg2NzkxYjk1ZGM4YTI1ZTY1YzNlOC4uZTI3YWFhOGRiNGM0YjZh
MTM2NWYwOGNlYWFiNDJlMzg4ZjdhZWEwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgY29u
c3QgY2hhciBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5TW9kZVtdID0gImxvYWRSZXNvdXJjZVN5
bmNocm9ub3VzbHlNbwogV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6V29ya2VyVGhyZWFkYWJsZUxv
YWRlcihXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUsIFRocmVhZGFibGVMb2Fk
ZXJDbGllbnQmIGNsaWVudCwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSwgUmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0
IFN0cmluZyYgcmVmZXJyZXIpCiAgICAgOiBtX3dvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2Jh
bFNjb3BlKQogICAgICwgbV93b3JrZXJDbGllbnRXcmFwcGVyKFRocmVhZGFibGVMb2FkZXJDbGll
bnRXcmFwcGVyOjpjcmVhdGUoY2xpZW50LCBvcHRpb25zLmluaXRpYXRvcikpCi0gICAgLCBtX2Jy
aWRnZSgqbmV3IE1haW5UaHJlYWRCcmlkZ2UobV93b3JrZXJDbGllbnRXcmFwcGVyLmdldCgpLCB3
b3JrZXJHbG9iYWxTY29wZS50aHJlYWQoKS53b3JrZXJMb2FkZXJQcm94eSgpLCB0YXNrTW9kZSwg
V1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucywgcmVmZXJyZXIuaXNFbXB0eSgpID8gd29ya2VyR2xv
YmFsU2NvcGUudXJsKCkuc3RyaXBwZWRGb3JVc2VBc1JlZmVycmVyKCkgOiByZWZlcnJlciwgd29y
a2VyR2xvYmFsU2NvcGUuc2VjdXJpdHlPcmlnaW4oKSwgd29ya2VyR2xvYmFsU2NvcGUuY29udGVu
dFNlY3VyaXR5UG9saWN5KCkpKQorICAgICwgbV9icmlkZ2UoKm5ldyBNYWluVGhyZWFkQnJpZGdl
KG1fd29ya2VyQ2xpZW50V3JhcHBlci5nZXQoKSwgd29ya2VyR2xvYmFsU2NvcGUudGhyZWFkKCku
d29ya2VyTG9hZGVyUHJveHkoKSwgdGFza01vZGUsIFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMs
IHJlZmVycmVyLmlzRW1wdHkoKSA/IHdvcmtlckdsb2JhbFNjb3BlLnVybCgpLnN0cmlwcGVkRm9y
VXNlQXNSZWZlcnJlcigpIDogcmVmZXJyZXIsIHdvcmtlckdsb2JhbFNjb3BlKSkKIHsKIH0KIApA
QCAtMTAxLDEyICsxMDEsMTUgQEAgTG9hZGVyVGFza09wdGlvbnM6OkxvYWRlclRhc2tPcHRpb25z
KGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBjb24KIH0KIAogV29ya2Vy
VGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6TWFpblRocmVhZEJyaWRnZShUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlciYgd29ya2VyQ2xpZW50V3JhcHBlciwgV29ya2VyTG9h
ZGVyUHJveHkmIGxvYWRlclByb3h5LCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLAotICAgIFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRp
b25zLCBjb25zdCBTdHJpbmcmIG91dGdvaW5nUmVmZXJyZXIsCi0gICAgY29uc3QgU2VjdXJpdHlP
cmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3kqIGNvbnRl
bnRTZWN1cml0eVBvbGljeSkKKyAgICBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBU
aHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiBvdXRnb2luZ1Jl
ZmVycmVyLCBXb3JrZXJHbG9iYWxTY29wZSYgZ2xvYmFsU2NvcGUpCiAgICAgOiBtX3dvcmtlckNs
aWVudFdyYXBwZXIoJndvcmtlckNsaWVudFdyYXBwZXIpCiAgICAgLCBtX2xvYWRlclByb3h5KGxv
YWRlclByb3h5KQogICAgICwgbV90YXNrTW9kZSh0YXNrTW9kZS5pc29sYXRlZENvcHkoKSkKIHsK
KworICAgIGF1dG8qIHNlY3VyaXR5T3JpZ2luID0gZ2xvYmFsU2NvcGUuc2VjdXJpdHlPcmlnaW4o
KTsKKyAgICBhdXRvKiBjb250ZW50U2VjdXJpdHlQb2xpY3kgPSBnbG9iYWxTY29wZS5jb250ZW50
U2VjdXJpdHlQb2xpY3koKTsKKwogICAgIEFTU0VSVChzZWN1cml0eU9yaWdpbik7CiAgICAgQVNT
RVJUKGNvbnRlbnRTZWN1cml0eVBvbGljeSk7CiAKQEAgLTEyMSw2ICsxMjQsMTEgQEAgV29ya2Vy
VGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6TWFpblRocmVhZEJyaWRnZShUaHJl
YWRhYmxlTG9hZGVyQ2xpZW4KICAgICBBU1NFUlQob3B0aW9uc0NvcHktPm9wdGlvbnMuaW5pdGlh
dG9yQ29udGV4dCA9PSBJbml0aWF0b3JDb250ZXh0OjpEb2N1bWVudCk7CiAgICAgb3B0aW9uc0Nv
cHktPm9wdGlvbnMuaW5pdGlhdG9yQ29udGV4dCA9IEluaXRpYXRvckNvbnRleHQ6OldvcmtlcjsK
IAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBvcHRpb25zQ29weS0+b3B0aW9ucy5z
ZXJ2aWNlV29ya2Vyc01vZGUgPSBnbG9iYWxTY29wZS5pc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZSgpID8gU2VydmljZVdvcmtlcnNNb2RlOjpOb25lIDogU2VydmljZVdvcmtlcnNNb2RlOjpBbGw7
CisgICAgb3B0aW9uc0NvcHktPm9wdGlvbnMuc2VydmljZVdvcmtlcklkZW50aWZpZXIgPSBnbG9i
YWxTY29wZS5zZWxlY3RlZFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCk7CisjZW5kaWYKKwogICAg
IC8vIENhbiB3ZSBiZW5lZml0IGZyb20gcmVxdWVzdCBiZWluZyBhbiByLXZhbHVlIHRvIGNyZWF0
ZSBtb3JlIGVmZmljaWVudGx5IGl0cyBpc29sYXRlZCBjb3B5PwogICAgIG1fbG9hZGVyUHJveHku
cG9zdFRhc2tUb0xvYWRlcihbdGhpcywgcmVxdWVzdCA9IHJlcXVlc3QuaXNvbGF0ZWRDb3B5KCks
IG9wdGlvbnMgPSBXVEZNb3ZlKG9wdGlvbnNDb3B5KSwgY29udGVudFNlY3VyaXR5UG9saWN5Q29w
eSA9IFdURk1vdmUoY29udGVudFNlY3VyaXR5UG9saWN5Q29weSldKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgKaW5k
ZXggOTdlYzJkNDFmOWQ5ZTAxZGNiYjcxNzljNjIzZGI3M2FiMWM1YTM1NC4uMjJhYjE0OWZlZjc0
NzM3ZWZiNjRkYjlkY2M3ZjE2MTBkZjUxZmJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oCkBAIC04OCw3ICs4OCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgY2xhc3MgTWFpblRocmVhZEJyaWRnZSA6IHB1YmxpYyBUaHJlYWRh
YmxlTG9hZGVyQ2xpZW50IHsKICAgICAgICAgcHVibGljOgogICAgICAgICAgICAgLy8gQWxsIGV4
ZWN1dGVkIG9uIHRoZSB3b3JrZXIgY29udGV4dCdzIHRocmVhZC4KLSAgICAgICAgICAgIE1haW5U
aHJlYWRCcmlkZ2UoVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXImLCBXb3JrZXJMb2FkZXJQ
cm94eSYsIGNvbnN0IFN0cmluZyYgdGFza01vZGUsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBU
aHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYsIGNvbnN0IFN0cmluZyYgb3V0Z29pbmdSZWZlcnJlciwg
Y29uc3QgU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3kqKTsKKyAg
ICAgICAgICAgIE1haW5UaHJlYWRCcmlkZ2UoVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIm
LCBXb3JrZXJMb2FkZXJQcm94eSYsIGNvbnN0IFN0cmluZyYgdGFza01vZGUsIFJlc291cmNlUmVx
dWVzdCYmLCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYsIGNvbnN0IFN0cmluZyYgb3V0
Z29pbmdSZWZlcnJlciwgV29ya2VyR2xvYmFsU2NvcGUmKTsKICAgICAgICAgICAgIHZvaWQgY2Fu
Y2VsKCk7CiAgICAgICAgICAgICB2b2lkIGRlc3Ryb3koKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAppbmRleCBiNWU5
NDhlYWVlYzFmZDkwZGRiZTY5OGY5NjZmYmM3ZTg1Y2U5Y2RkLi5kYTZhZDY1ZjExODIwYTUyZWU1
NDEyOGYzNzA3Y2VlMDBmNDE3NDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaApAQCAtMTAwLDcgKzEwMCw3IEBAIHB1
YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBodHRwQ29udGVudFR5cGUoKSBjb25z
dDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEhUVFBDb250ZW50VHlwZShjb25zdCBTdHJp
bmcmKTsKLSAgICB2b2lkIGNsZWFySFRUUENvbnRlbnRUeXBlKCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBjbGVhckhUVFBDb250ZW50VHlwZSgpOwogCiAgICAgYm9vbCBoYXNIVFRQSGVhZGVy
KEhUVFBIZWFkZXJOYW1lKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCmluZGV4IGFiY2RjZWFkNzc5Y2Fj
ZGI3NGYyZmYyZmI2ZGJhY2JkYjQ5ZWVhM2YuLmVlMzczZGRlZWFhMTUxYTQwODMzZDIxYmMzNjll
YjQ0YzgxZTY2NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VSZXNwb25zZUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKQEAgLTE1Myw3ICsxNTMsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiAxMjgwOwogICAgIH0KIAotICAgIHZvaWQgc2V0VHlwZShUeXBlKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFR5cGUoVHlwZSk7CiAgICAgVHlwZSB0eXBlKCkgY29u
c3QgeyByZXR1cm4gbV90eXBlOyB9CiAKICAgICB2b2lkIHNldFJlZGlyZWN0ZWQoYm9vbCBpc1Jl
ZGlyZWN0ZWQpIHsgbV9pc1JlZGlyZWN0ZWQgPSBpc1JlZGlyZWN0ZWQ7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclRocmVhZC5oCmluZGV4IGNmZTM0M2VlZjRhNWFmNWIyNzBjMThiNjg1MDhm
MGY2OGM2YWFiNmMuLjM5NWZkODA0OTk4YzYwYjdjYjUzNzM4OGFlMGZkNGQwNzhlNGRiMmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaApAQCAtNjEsNyArNjEsNyBAQCBjbGFz
cyBXb3JrZXJUaHJlYWQgOiBwdWJsaWMgUmVmQ291bnRlZDxXb3JrZXJUaHJlYWQ+IHsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5Xb3JrZXJUaHJlYWQoKTsKIAotICAgIGJvb2wgc3RhcnQoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIHN0YXJ0KCk7CiAgICAgdm9pZCBzdG9wKCk7CiAKICAgICBU
aHJlYWRJZGVudGlmaWVyIHRocmVhZElEKCkgY29uc3QgeyByZXR1cm4gbV90aHJlYWQgPyBtX3Ro
cmVhZC0+aWQoKSA6IDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAppbmRleCBkMzBkYzU3YTZkOGRiMDQw
MTgxOTdlODYyMWY2Y2EyOTE4ODE4ZGM5Li45NTM0NTE3N2Q3MDI2YjkxNzg2ZWEwMmIzNTU1ZWY5
ZjZlZjVhNWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCkBAIC0xNzksNiArMTc5LDkgQEAgdm9pZCBT
ZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JSZXNvbHZlZFdpdGhSZWdpc3RyYXRpb24oU2Vydmlj
ZVdvcmtlckpvYiYgam9iLAogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgLy8gRklYTUU6
IEltcGxlbWVudCBwcm9wZXIgc2VsZWN0aW9uIG9mIHNlcnZpY2Ugd29ya2Vycy4KKyAgICBjb250
ZXh0LT5zZXRTZWxlY3RlZFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKGRhdGEuaWRlbnRpZmllcik7
CisKICAgICBhdXRvIHJlZ2lzdHJhdGlvbiA9IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OmNy
ZWF0ZSgqY29udGV4dCwgZGF0YSk7CiAgICAgam9iLnByb21pc2UoKS5yZXNvbHZlPElETEludGVy
ZmFjZTxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uPj4ocmVnaXN0cmF0aW9uLmdldCgpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29u
dGV4dE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U1dDb250ZXh0TWFuYWdlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0ZmU1
N2UzMTIxNTc3MWM2YTdiODNmNWZkYmI2NjIzZGQ0MmEwYmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNXQ29udGV4
dE1hbmFnZXIuaCIKLQotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLQotI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKLSNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBQ
QUw7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotU1dDb250ZXh0TWFuYWdlciYgU1dDb250ZXh0
TWFuYWdlcjo6c2luZ2xldG9uKCkKLXsKLSAgICBzdGF0aWMgU1dDb250ZXh0TWFuYWdlciogc2hh
cmVkTWFuYWdlciA9IG5ldyBTV0NvbnRleHRNYW5hZ2VyOwotICAgIHJldHVybiAqc2hhcmVkTWFu
YWdlcjsKLX0KLQotU1dDb250ZXh0TWFuYWdlcjo6U1dDb250ZXh0TWFuYWdlcigpCi17Ci0KLX0K
LQotRXhjZXB0aW9uT3I8dWludDY0X3Q+IFNXQ29udGV4dE1hbmFnZXI6OnN0YXJ0U2VydmljZVdv
cmtlckNvbnRleHQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSkKLXsKLSAgICAvLyBGSVhNRTogUHJvdmlkZSBh
IHNlbnNpY2FsIHNlc3Npb24gSUQKLQotICAgIGF1dG8gdGhyZWFkID0gU2VydmljZVdvcmtlclRo
cmVhZDo6Y3JlYXRlKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBkYXRhLCBTZXNzaW9uSUQ6
OmRlZmF1bHRTZXNzaW9uSUQoKSk7Ci0gICAgYXV0byB0aHJlYWRJZGVudGlmaWVyID0gdGhyZWFk
LT5pZGVudGlmaWVyKCk7Ci0gICAgYXV0byByZXN1bHQgPSBtX3dvcmtlclRocmVhZE1hcC5hZGQo
dGhyZWFkSWRlbnRpZmllciwgV1RGTW92ZSh0aHJlYWQpKTsKLSAgICBBU1NFUlQocmVzdWx0Lmlz
TmV3RW50cnkpOwotCi0gICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+c3RhcnQoKTsKLSAgICAK
LSAgICBMT0coU2VydmljZVdvcmtlciwgIkNvbnRleHQgcHJvY2VzcyBQSUQ6ICVpIHN0YXJ0ZWQg
d29ya2VyIHRocmVhZCAlc1xuIiwgZ2V0cGlkKCksIGRhdGEud29ya2VySUQudXRmOCgpLmRhdGEo
KSk7Ci0gICAgCi0gICAgcmV0dXJuIHRocmVhZElkZW50aWZpZXI7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFn
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1h
bmFnZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTE1ZDdlNjk4MjMyMTQ3MjMw
YjQ3NmFmYjgzMWU0OGEwZjIwZTMwNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0Nv
bnRleHRNYW5hZ2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0KLSNpbmNsdWRl
ICJFeGNlcHRpb25Pci5oIgotI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUaHJlYWQuaCIKLSNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGE7Ci0KLWNsYXNzIFNXQ29udGV4dE1hbmFnZXIgewotcHVibGlj
OgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTV0NvbnRleHRNYW5hZ2VyJiBzaW5nbGV0b24o
KTsKLQotICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHVpbnQ2NF90PiBzdGFydFNlcnZp
Y2VXb3JrZXJDb250ZXh0KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25z
dCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmKTsKLQotcHJpdmF0ZToKLSAgICBTV0NvbnRleHRN
YW5hZ2VyKCk7Ci0gICAgCi0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFNlcnZpY2VXb3Jr
ZXJUaHJlYWQ+PiBtX3dvcmtlclRocmVhZE1hcDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJl
YWQuaAppbmRleCAyMmEwN2I4OWY1OWNlNTgwNDJhYjA1Mjc5YTlhYjA5OGU4YTQ1OTYwLi44ZGJh
NDg5ODg5M2I3MDA0NGI1ZTdmNjJmNzI2YTJkZjBjZGY5NTRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRo
cmVhZC5oCkBAIC01Miw3ICs1Miw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHJ1bkV2ZW50TG9v
cCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIFNlcnZpY2VXb3JrZXJUaHJlYWQodWludDY0
X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YSYsIFBBTDo6U2Vzc2lvbklEKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTZXJ2aWNlV29ya2Vy
VGhyZWFkKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEmLCBQQUw6OlNlc3Npb25JRCk7CiAKICAgICB1aW50NjRfdCBtX3Nl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyOwogICAgIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBt
X2RhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0IGIvU291cmNl
L1dlYktpdC9DTWFrZUxpc3RzLnR4dAppbmRleCBkNDFlZGJmMTE2MDY2OWUxM2U4ZDgzOTNhNjU3
MTU3NmUzMmZmNmIzLi41ZmEzNjFlNTEwZGE2YjA4YmU0MzkwZjM4MmJkN2RjMmIyODQ4ZTIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJL
aXQvQ01ha2VMaXN0cy50eHQKQEAgLTY4Myw2ICs2ODMsNyBAQCBzZXQoV2ViS2l0X01FU1NBR0VT
X0lOX0ZJTEVTCiAgICAgV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9u
TWFuYWdlci5tZXNzYWdlcy5pbgogICAgIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5t
ZXNzYWdlcy5pbgogCisgICAgV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRG
ZXRjaC5tZXNzYWdlcy5pbgogICAgIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4KIAogICAgIFdlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rl
cml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5k
ZXggYmE0NGNiYTJjYmJkOGQ2NzliNGRiNDI0NDk1ZGY4Mzg1MWM1NDhjMy4uMDhiODA5YTIzMDhh
OWI3ZTBjMzM2OGViZmJiN2Q1MDJhZjhlODc0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9E
ZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFr
ZQpAQCAtMTI1LDYgKzEyNSw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFJlbW90ZVdl
Ykluc3BlY3RvclByb3h5IFwKICAgICBSZW1vdGVXZWJJbnNwZWN0b3JVSSBcCiAgICAgU2VjSXRl
bVNoaW1Qcm94eSBcCisgICAgU2VydmljZVdvcmtlckNsaWVudEZldGNoIFwKICAgICBTbWFydE1h
Z25pZmljYXRpb25Db250cm9sbGVyIFwKICAgICBTdG9yYWdlQXJlYU1hcCBcCiAgICAgU3RvcmFn
ZU1hbmFnZXIgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3Jh
Z2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCA3
Mjk3ZjRiNTNlODc1N2Q5NjM2MmQ4OWRkNmM2Njk1MmFkNTYwOTllLi4xMGNjYmE1MmYzOTE4N2I2
YzFiYjcwNzExMGYwOTkzYWRhYjFmNzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3Jh
Z2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uLmNwcApAQCAtMzAsOCArMzAsMTAgQEAKIAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudEZl
dGNoTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTdG9yYWdlUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlN0
b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU1dDbGllbnRDb25uZWN0aW9uTWVzc2Fn
ZXMuaCIKQEAgLTkyLDYgKzk0LDMxIEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzdGFy
dFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0CiAgICAgbV9w
ZW5kaW5nQ29udGV4dERhdGFzLmFwcGVuZChkYXRhKTsKIH0KIAordm9pZCBXZWJTV1NlcnZlckNv
bm5lY3Rpb246OnN0YXJ0RmV0Y2godWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCB1aW50NjRfdCBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBj
b25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgc2VuZFRvQ29udGV4dFByb2Nlc3Mo
TWVzc2FnZXM6OldlYlByb2Nlc3M6OlN0YXJ0RmV0Y2hJblNlcnZpY2VXb3JrZXIoaWRlbnRpZmll
cigpLCBmZXRjaElkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCByZXF1ZXN0LCBv
cHRpb25zKSk7Cit9CisKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpkaWRSZWNlaXZlRmV0
Y2hSZXNwb25zZSh1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQoreworICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6
OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2Ug
fSwgZmV0Y2hJZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmRp
ZFJlY2VpdmVGZXRjaERhdGEodWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCit7CisgICAgbV9j
b250ZW50Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNo
OjpEaWRSZWNlaXZlRGF0YSB7IGRhdGEsIGVuY29kZWREYXRhTGVuZ3RoIH0sIGZldGNoSWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpkaWRGaW5pc2hGZXRjaCh1
aW50NjRfdCBmZXRjaElkZW50aWZpZXIpCit7CisgICAgbV9jb250ZW50Q29ubmVjdGlvbi0+c2Vu
ZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRGaW5pc2ggeyB9LCBmZXRj
aElkZW50aWZpZXIpOworfQorCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6ZGlkRmFpbEZl
dGNoKHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcikKK3sKKyAgICBtX2NvbnRlbnRDb25uZWN0aW9u
LT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZEZhaWwgeyB9LCBm
ZXRjaElkZW50aWZpZXIpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIFdlYlNXU2Vy
dmVyQ29ubmVjdGlvbjo6c2VuZFRvQ29udGV4dFByb2Nlc3MoVSYmIG1lc3NhZ2UpCiB7CiAgICAg
aWYgKCFtX2NvbnRleHRDb25uZWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9y
YWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNl
L1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlv
bi5oCmluZGV4IGRjYzQ5NjE2NTJhM2Q3MWI2Zjk4NDY0MzFkNzM3NmI4ZmM1NTUyMjMuLmFlM2Ey
NWQzY2VmNjA1NjFhNTI5YzBkZjliNTk3NDgwMDgzNTA4MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTUxLDE1ICs1MSwyMiBAQCBwdWJsaWM6CiAKICAgICBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQogCisg
ICAgdm9pZCBkaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSh1aW50NjRfdCBmZXRjaElkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVG
ZXRjaERhdGEodWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRpZEZpbmlzaEZldGNo
KHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcik7CisgICAgdm9pZCBkaWRGYWlsRmV0Y2godWludDY0
X3QgZmV0Y2hJZGVudGlmaWVyKTsKKwogcHJpdmF0ZToKICAgICAvLyBJbXBsZW1lbnQgU1dTZXJ2
ZXI6OkNvbm5lY3Rpb24gKE1lc3NhZ2VzIHRvIHRoZSBjbGllbnQgV2ViUHJvY2VzcykKICAgICB2
b2lkIHJlamVjdEpvYkluQ2xpZW50KHVpbnQ2NF90IGpvYklkZW50aWZpZXIsIGNvbnN0IFdlYkNv
cmU6OkV4Y2VwdGlvbkRhdGEmKSBmaW5hbDsKICAgICB2b2lkIHJlc29sdmVKb2JJbkNsaWVudCh1
aW50NjRfdCBqb2JJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGF0YSYpIGZpbmFsOwogICAgIHZvaWQgc3RhcnRTY3JpcHRGZXRjaEluQ2xpZW50KHVp
bnQ2NF90IGpvYklkZW50aWZpZXIpIGZpbmFsOwogCisgICAgdm9pZCBzdGFydEZldGNoKHVpbnQ2
NF90IGZldGNoSWRlbnRpZmllciwgdWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OkZldGNoT3B0aW9u
cyYpOworCiAgICAgLy8gTWVzc2FnZXMgdG8gdGhlIFNXIGNvbnRleHQgV2ViUHJvY2VzcwogICAg
IHZvaWQgc3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEmKSBmaW5hbDsKLSAgICAKKwogICAgIElQQzo6Q29ubmVjdGlvbiogbWVz
c2FnZVNlbmRlckNvbm5lY3Rpb24oKSBmaW5hbCB7IHJldHVybiBtX2NvbnRlbnRDb25uZWN0aW9u
LnB0cigpOyB9CiAgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBmaW5h
bCB7IHJldHVybiBpZGVudGlmaWVyKCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggZTRjZmI5NjA1YTZjZTUwMTkyMTZmMjFj
ZjZkNjkxN2JlYjMwMmRjMC4uZjNkYjNiOTBkYWU5M2E5MjZkZjViYmRlYTFhMzc3OTUzNDY2NDkx
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1N0
b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCkBAIC0yNiw2ICsyNiw4IEBAIG1lc3NhZ2VzIC0+IFdlYlNXU2VydmVyQ29ubmVjdGlvbiB7
CiAgICAgIyBXaGVuIHBvc3NpYmxlLCB0aGVzZSBtZXNzYWdlcyBjYW4gYmUgaW1wbGVtZW50ZWQg
ZGlyZWN0bHkgYnkgV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uCiAgICAgU2NoZWR1bGVKb2JJ
blNlcnZlcihzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGEgam9iRGF0YSkKICAg
ICBGaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyRmV0Y2hSZXN1bHQgcmVzdWx0KQorCisgICAgU3RhcnRGZXRjaCh1aW50NjRfdCBpZGVudGlm
aWVyLCB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0IHJlcXVlc3QsIHN0cnVjdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMgb3B0aW9ucykKIH0K
IAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAKaW5kZXggMjhiMjJjMmRkZTRiNjc3ZjU4
ZjlkYTU0ZGI5NThlYmMzN2UzZDBlMy4uMmM5N2FjY2M5YzdlYzM2NDFkZTJjNTY3NGZkYjc1NDFm
Y2M0N2VmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdl
UHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJv
Y2Vzcy5jcHAKQEAgLTQwNSw2ICs0MDUsMzAgQEAgdm9pZCBTdG9yYWdlUHJvY2Vzczo6c2Vydmlj
ZVdvcmtlckNvbnRleHRTdGFydGVkKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGkKICAg
ICAgICAgY29ubmVjdGlvbi0+c2NyaXB0Q29udGV4dFN0YXJ0ZWQocmVnaXN0cmF0aW9uS2V5LCBp
ZGVudGlmaWVyLCB3b3JrZXJJRCk7CiB9CiAKK3ZvaWQgU3RvcmFnZVByb2Nlc3M6OmRpZEZhaWxG
ZXRjaCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJ
ZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gbV9zd1NlcnZlckNvbm5l
Y3Rpb25zLmdldChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIGNvbm5lY3Rp
b24tPmRpZEZhaWxGZXRjaChmZXRjaElkZW50aWZpZXIpOworfQorCit2b2lkIFN0b3JhZ2VQcm9j
ZXNzOjpkaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IG1fc3dT
ZXJ2ZXJDb25uZWN0aW9ucy5nZXQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpKQorICAgICAg
ICBjb25uZWN0aW9uLT5kaWRSZWNlaXZlRmV0Y2hSZXNwb25zZShmZXRjaElkZW50aWZpZXIsIHJl
c3BvbnNlKTsKK30KKwordm9pZCBTdG9yYWdlUHJvY2Vzczo6ZGlkUmVjZWl2ZUZldGNoRGF0YSh1
aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlm
aWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFM
ZW5ndGgpCit7CisgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBtX3N3U2VydmVyQ29ubmVjdGlv
bnMuZ2V0KHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgY29ubmVjdGlvbi0+
ZGlkUmVjZWl2ZUZldGNoRGF0YShmZXRjaElkZW50aWZpZXIsIGRhdGEsIGVuY29kZWREYXRhTGVu
Z3RoKTsKK30KKwordm9pZCBTdG9yYWdlUHJvY2Vzczo6ZGlkRmluaXNoRmV0Y2godWludDY0X3Qg
c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcikKK3sK
KyAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5nZXQoc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIpKQorICAgICAgICBjb25uZWN0aW9uLT5kaWRGaW5pc2hG
ZXRjaChmZXRjaElkZW50aWZpZXIpOworfQorCiB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpyZWdpc3Rl
clNXU2VydmVyQ29ubmVjdGlvbihXZWJTV1NlcnZlckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7
CiAgICAgQVNTRVJUKCFtX3N3U2VydmVyQ29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlvbi5p
ZGVudGlmaWVyKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3Mv
U3RvcmFnZVByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVBy
b2Nlc3MuaAppbmRleCBkNGNlNTExNzE5N2U1YzBhZDRiY2U5MDI0NzNiYmRmN2RlZWE5ZDhmLi5j
ZmQ0YmMxYzQwMGJmOGU3NjEyYTgyMTJhNWVkNmVmOWVjNTVlYzIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmgKKysrIGIvU291cmNlL1dl
YktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCkBAIC0xMTksNiArMTE5LDExIEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaWRHZXRXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24o
Y29uc3QgSVBDOjpBdHRhY2htZW50JiBlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIpOwogICAg
IHZvaWQgc2VydmljZVdvcmtlckNvbnRleHRGYWlsZWRUb1N0YXJ0KHVpbnQ2NF90IHNlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5JiwgY29uc3QgU3RyaW5nJiB3b3JrZXJJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsK
ICAgICB2b2lkIHNlcnZpY2VXb3JrZXJDb250ZXh0U3RhcnRlZCh1aW50NjRfdCBzZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleSYsIHVpbnQ2NF90IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgd29ya2VySUQpOworCisg
ICAgdm9pZCBkaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJik7CisgICAgdm9pZCBkaWRSZWNlaXZlRmV0Y2hEYXRhKHVpbnQ2NF90IHNl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZv
aWQgZGlkRmluaXNoRmV0Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVp
bnQ2NF90IGZldGNoSWRlbnRpZmllcik7CisgICAgdm9pZCBkaWRGYWlsRmV0Y2godWludDY0X3Qg
c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcik7CiAj
ZW5kaWYKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBWZWN0b3I8V2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhPiBpbmRleGVkRGF0YWJhc2VPcmlnaW5zKGNvbnN0IFN0cmluZyYg
cGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQ
cm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdl
UHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBlZTYyOGQ1Mzc3Y2I1NmQyNjUwMThjZWZkM2EyMTA4
MDVlOWI0MmYyLi4yMDY0ZDY5YmVkYTc3ZGZlNzdjYTZjYTU5NzNmNTM4YjBmODQyYjYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3Mu
bWVzc2FnZXMuaW4KQEAgLTM3LDcgKzM3LDEzIEBAIG1lc3NhZ2VzIC0+IFN0b3JhZ2VQcm9jZXNz
IExlZ2FjeVJlY2VpdmVyIHsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBEaWRH
ZXRXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rp
b25IYW5kbGUpCisKICAgICBTZXJ2aWNlV29ya2VyQ29udGV4dEZhaWxlZFRvU3RhcnQodWludDY0
X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5IHJlZ2lzdHJhdGlvbktleSwgU3RyaW5nIHdvcmtlcklELCBTdHJp
bmcgbWVzc2FnZSkKICAgICBTZXJ2aWNlV29ya2VyQ29udGV4dFN0YXJ0ZWQodWludDY0X3Qgc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5IHJlZ2lzdHJhdGlvbktleSwgdWludDY0X3QgaWRlbnRpZmllciwgU3RyaW5n
IHdvcmtlcklEKQorCisgICAgRGlkRmFpbEZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIpCisgICAgRGlkUmVjZWl2ZUZldGNo
UmVzcG9uc2UodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZl
dGNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKKyAgICBE
aWRSZWNlaXZlRmV0Y2hEYXRhKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1
aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhLCBpbnQ2NF90
IGVuY29kZWREYXRhTGVuZ3RoKQorICAgIERpZEZpbmlzaEZldGNoKHVpbnQ2NF90IHNlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIpCiAjZW5kaWYKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDhiODY5NTBjMTgxMTZmNjAxYzk4ZDFjODY2NTU2MmI0NjI0YWIyMjIuLmExY2I3Y2MyY2MxZGZh
MWI3NzMzYWNlOWNiNzU0Yjg3YzIyNmQxNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODkwLDYgKzg5MCw5IEBACiAJCTQxMzA3NUIy
MURFODVGNTgwMDM5RUM2OSAvKiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTMwNzVBNjFERTg1RUU3MDAzOUVD
NjkgLyogTGliV2ViUlRDU29ja2V0RmFjdG9yeS5oICovOyB9OwogCQk0MTMwNzVCMzFERTg1RjU4
MDAzOUVDNjkgLyogTGliV2ViUlRDUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzMDc1QTcxREU4NUVFNzAwMzlFQzY5IC8qIExpYldl
YlJUQ1Byb3ZpZGVyLmNwcCAqLzsgfTsKIAkJNDEzMDc1QjQxREU4NUY1ODAwMzlFQzY5IC8qIExp
YldlYlJUQ1Byb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTMwNzVBODFERTg1RUU3MDAzOUVDNjkgLyogTGliV2ViUlRDUHJvdmlkZXIuaCAq
LzsgfTsKKwkJNDEzMUYzRDExRjk2QkNDQzAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRG
ZXRjaC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MTMxRjNEMDFGOTZCQ0M4MDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoLmNwcCAq
LzsgfTsKKwkJNDEzMUYzRDQxRjk2RTkzNTAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0
TWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTMxRjNEMzFGOTZFOTMxMDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2Vy
LmNwcCAqLzsgfTsKKwkJNDEzMUYzRDUxRjk2RTkzNTAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJD
b250ZXh0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDEzMUYzRDIxRjk2RTkzMDAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0TWFu
YWdlci5oICovOyB9OwogCQk0MTM1RkJEMTFGNEZCODA5MDA3NEM0N0IgLyogQ2FjaGVTdG9yYWdl
RW5naW5lQ2FjaGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxMzVGQkNGMUY0RkI3RjIwMDc0QzQ3QiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNo
ZXMuY3BwICovOyB9OwogCQk0MTg5N0VDRjFGNDE1RDYyMDAxNkZBNDIgLyogV2ViQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTg5N0VDRTFGNDE1RDVDMDAxNkZBNDIgLyogV2ViQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbi5jcHAgKi87IH07CiAJCTQxODk3RUQwMUY0MTVENjUwMDE2RkE0MiAvKiBXZWJDYWNoZVN0
b3JhZ2VQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTg5N0VDQzFGNDE1RDVDMDAxNkZBNDIgLyogV2ViQ2FjaGVTdG9yYWdlUHJvdmlk
ZXIuY3BwICovOyB9OwpAQCAtMTAyOSw3ICsxMDMyLDkgQEAKIAkJNTE3OTU1NkExNjI4NzZGMzAw
RkE0M0I2IC8qIE5ldHdvcmtQcm9jZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTBDQzdFMDE2MTM4RTI5MDBEMDNFRDMgLyogTmV0d29ya1Byb2Nl
c3MuaCAqLzsgfTsKIAkJNTE3OTU1NkQxNjI4NzdCMTAwRkE0M0I2IC8qIE5ldHdvcmtQcm9jZXNz
UHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTEwQ0M3RUExNjEzOEU3MjAwRDAzRUQzIC8qIE5ldHdvcmtQcm9jZXNzUHJveHkuY3BwICovOyB9
OwogCQk1MTc5NTU2RTE2Mjg3N0IzMDBGQTQzQjYgLyogTmV0d29ya1Byb2Nlc3NQcm94eS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwQ0M3RUIxNjEz
OEU3MjAwRDAzRUQzIC8qIE5ldHdvcmtQcm9jZXNzUHJveHkuaCAqLzsgfTsKKwkJNjE3QTUyRDgx
RjQzQTlEQTAwRENEQzBBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MTdB
NTJENzFGNDNBOUI2MDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoQ29ubmVjdGlv
bk1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTUxN0E1MkQ4MUY0M0E5REEwMERDREMwQSAv
KiBXZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3QTUyRDcxRjQzQTlCNjAwRENEQzBB
IC8qIFdlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCTYx
N0E1MkQ5MUY0M0E5REEwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjE3QTUy
RDYxRjQzQTlCNjAwRENEQzBBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VzLmgg
Ki87IH07CiAJCTUxN0E1MkQ5MUY0M0E5REEwMERDREMwQSAvKiBXZWJTV1NlcnZlckNvbm5lY3Rp
b25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTE3QTUyRDYxRjQzQTlCNjAwRENEQzBBIC8qIFdlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3Nh
Z2VzLmggKi87IH07CiAJCTUxN0E1MzA0MUY0NzkzQzYwMERDREMwQSAvKiBXZWJTV0NsaWVudENv
bm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTE3QTUzMDMxRjQ3OTNCMjAwRENEQzBBIC8qIFdlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAg
Ki87IH07CiAJCTUxN0E1MzA1MUY0NzkzQzYwMERDREMwQSAvKiBXZWJTV0NsaWVudENvbm5lY3Rp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0E1
MzAyMUY0NzkzQjIwMERDREMwQSAvKiBXZWJTV0NsaWVudENvbm5lY3Rpb24uaCAqLzsgfTsKQEAg
LTMxNzgsNiArMzE4MywxMSBAQAogCQk0MTMwNzVBNjFERTg1RUU3MDAzOUVDNjkgLyogTGliV2Vi
UlRDU29ja2V0RmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJX
ZWJSVENTb2NrZXRGYWN0b3J5Lmg7IHBhdGggPSBOZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENTb2Nr
ZXRGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzA3NUE3MURFODVF
RTcwMDM5RUM2OSAvKiBMaWJXZWJSVENQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IGxpbmVFbmRpbmcgPSAwOyBuYW1lID0gTGliV2ViUlRDUHJvdmlkZXIuY3BwOyBw
YXRoID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5n
LmNwcDsgfTsKIAkJNDEzMDc1QTgxREU4NUVFNzAwMzlFQzY5IC8qIExpYldlYlJUQ1Byb3ZpZGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbGluZUVuZGluZyA9IDA7IG5hbWUgPSBMaWJX
ZWJSVENQcm92aWRlci5oOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlm
aWVyID0geGNvZGUubGFuZy5vYmpjcHA7IH07CisJCTQxMzFGM0NFMUY5NkE0OTUwMDU5OTk1QSAv
KiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2VydmljZVdvcmtlckNsaWVudEZldGNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQxMzFGM0NGMUY5NkE5MzYwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0
Y2gubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2VydmljZVdvcmtlckNsaWVu
dEZldGNoLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTMxRjNE
MDFGOTZCQ0M4MDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMzFGM0QyMUY5NkU5MzAwMDU5OTk1
QSAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQxMzFGM0QzMUY5NkU5MzEwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2Vy
Q29udGV4dE1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDEzNUZCQ0YxRjRGQjdGMjAwNzRDNDdCIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hl
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZVN0b3JhZ2VF
bmdpbmVDYWNoZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTM1RkJEMDFG
NEZCN0YyMDA3NEM0N0IgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTg5N0VDQjFGNDE1RDVDMDAxNkZBNDIgLyogV2ViQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJDYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzMzNCw3
ICszMzQ0LDkgQEAKIAkJNTE2QTRBNUIxMjBBMkNDRDAwQzA1QjdGIC8qIEFQSUVycm9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUVycm9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxN0EzM0IzMTMwQjMwOEMwMEY4MENCNSAvKiBXS0FwcGxpY2F0aW9u
Q2FjaGVNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdL
QXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MTdBMzNCNDEzMEIzMDhDMDBGODBDQjUgLyogV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5h
Z2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTYxN0E1MkQ2MUY0M0E5QjYwMERD
REMwQSAvKiBTZXJ2aWNlV29ya2VyRmV0Y2hDbGllbnRNZXNzYWdlcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdBNTJENjFGNDNBOUI2MDBEQ0RDMEEgLyogV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNjE3QTUyRDcxRjQzQTlCNjAwRENEQzBBIC8qIFNlcnZpY2VXb3JrZXJDbGll
bnRGZXRjaE1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdBNTJENzFGNDNBOUI2MDBEQ0RDMEEgLyogV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0E1MzAyMUY0NzkzQjIwMERDREMw
QSAvKiBXZWJTV0NsaWVudENvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViU1dDbGllbnRDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxN0E1MzAzMUY0NzkzQjIwMERDREMwQSAvKiBXZWJTV0NsaWVudENvbm5lY3Rpb24uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU1dDbGllbnRDb25uZWN0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYxNjgsNiArNjE4MCwxMSBA
QAogCQk1MTE4RTk5ODFGMjk1MjU5MDAzRUY5RjUgLyogU3RvcmFnZSAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNDEzMUYzRDAxRjk2QkNDODAwNTk5OTVB
IC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5jcHAgKi8sCisJCQkJNDEzMUYzQ0UxRjk2QTQ5
NTAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5oICovLAorCQkJCTQxMzFGM0NG
MUY5NkE5MzYwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gubWVzc2FnZXMuaW4g
Ki8sCisJCQkJNDEzMUYzRDMxRjk2RTkzMTAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0
TWFuYWdlci5jcHAgKi8sCisJCQkJNDEzMUYzRDIxRjk2RTkzMDAwNTk5OTVBIC8qIFNlcnZpY2VX
b3JrZXJDb250ZXh0TWFuYWdlci5oICovLAogCQkJCTUxQkVCNjI5MUYzQTVBQ0QwMDUwMjlCOSAv
KiBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwICovLAogCQkJCTUxQkVCNjJBMUYzQTVBQ0Qw
MDUwMjlCOSAvKiBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCAqLywKIAkJCQk1MTdBNTMwMzFG
NDc5M0IyMDBEQ0RDMEEgLyogV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcCAqLywKQEAgLTgwMTAs
NiArODAyNyw3IEBACiAJCQkJMUJCQkU0OUUxOUI2NkM1MzAwNkI3RDgxIC8qIFJlbW90ZVdlYklu
c3BlY3RvclVJTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQlFMThFNjkxMzE2OUI2NjdCMDA5
QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJRTE4
RTY5MTQxNjlCNjY3QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHlNZXNzYWdlcy5oICovLAor
CQkJCTYxN0E1MkQ3MUY0M0E5QjYwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hD
b25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkyREU2OTQzQjE4QkQyQTY4MDA1
QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki8sCiAJCQkJMkRFNjk0M0MxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNv
bnRyb2xsZXJNZXNzYWdlcy5oICovLAogCQkJCTFBMzM0REVCMTZERThGODgwMDZBOEUzOCAvKiBT
dG9yYWdlQXJlYU1hcE1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCkBAIC04NzgxLDYgKzg3OTksNyBA
QAogCQkJCUUxOEU2OTBDMTY5QjU2M0YwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5LmggaW4g
SGVhZGVycyAqLywKIAkJCQlFMThFNjkxODE2OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Q
cm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTREOUY1NzE5MTE5RDM1MDAwMDYz
QTcgLyogU2VydmljZXNDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTMxRjNENTFG
OTZFOTM1MDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQUZERTY1QTE5NTRBNDJCMDBDNDhGRkEgLyogU2Vzc2lvblN0YXRlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQTAwMkQ0OTE5NkIzNDVEMDBCOUFENDQgLyogU2Vzc2lvblN0YXRl
Q29kaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk3NTNFM0UwRTE4ODczOTg5MDAxODg0OTYgLyog
U2Vzc2lvblRyYWNrZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTAzNzAsNiArMTAzODksOSBAQAog
CQkJCUUxOEU2OTBCMTY5QjU2M0YwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUUxOEU2OTE3MTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNEQ5RjU4MTkxMTlE
MzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQk0
MTMxRjNEMTFGOTZCQ0NDMDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTYxN0E1MkQ4MUY0M0E5REEwMERDREMwQSAvKiBTZXJ2aWNlV29y
a2VyQ2xpZW50RmV0Y2hDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTQxMzFGM0Q0MUY5NkU5MzUwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dE1h
bmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFGREU2NTkxOTU0QTQyQjAwQzQ4RkZBIC8q
IFNlc3Npb25TdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTAwMkQ0ODE5NkIzNDVEMDBC
OUFENDQgLyogU2Vzc2lvblN0YXRlQ29kaW5nLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE3Mjg0
NDgxOTU5RjgwNDAwMDdCQ0U1IC8qIFNlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJM
b2FkZXJTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJM
b2FkZXJTdHJhdGVneS5jcHAKaW5kZXggYjg5NWQwYjhmYTMxY2UwMTY2ZDJhNDBkYmM5NDkxZjA4
MTQzNWJiMS4uNDUwNzdhNDBmYWVlMTlmYzQzYjI0ZTZhZGE3OWUwMzFhOTc3NWY2NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3ku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0
ZWd5LmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZGVy
LmgiCisjaW5jbHVkZSAiV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV2Vi
VVJMU2NoZW1lSGFuZGxlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViVVJMU2NoZW1lVGFza1Byb3h5
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oPgpAQCAtMjE1LDYg
KzIxNiwyOSBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VM
b2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogICAgICAgICB9CiAgICAgfQogCisj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6
c2luZ2xldG9uKCkuaGFuZGxlRmV0Y2gocmVzb3VyY2VMb2FkZXIsIHJlc291cmNlLCB3ZWJQYWdl
ID8gd2ViUGFnZS0+c2Vzc2lvbklEKCkgOiBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25J
RCgpLCBbdHJhY2tpbmdQYXJhbWV0ZXJzLCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRU
UFJlZGlyZWN0LCBtYXhpbXVtQnVmZmVyaW5nVGltZSA9IG1heGltdW1CdWZmZXJpbmdUaW1lKHJl
c291cmNlKSwgcmVzb3VyY2VMb2FkZXIgPSBtYWtlUmVmKHJlc291cmNlTG9hZGVyKV0gKFNlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaDo6UmVzdWx0IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlm
IChyZXN1bHQgIT0gU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpSZXN1bHQ6OlVuaGFuZGxlZCkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcsICIo
V2ViUHJvY2VzcykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwgdXJsICclcycgd2ls
bCBiZSBzY2hlZHVsZWQgdGhyb3VnaCBTZXJ2aWNlV29ya2VyIGhhbmRsZSBmZXRjaCBhbGdvcml0
aG0iLCByZXNvdXJjZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKKyAg
ICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViTG9hZGVyU3RyYXRlZ3koKS5zY2hlZHVs
ZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MocmVzb3VyY2VMb2FkZXIuZ2V0KCksIHJlc291cmNlTG9h
ZGVyLT5vcmlnaW5hbFJlcXVlc3QoKSwgV1RGTW92ZSh0cmFja2luZ1BhcmFtZXRlcnMpLCBzaG91
bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBtYXhpbXVtQnVmZmVyaW5nVGlt
ZSk7CisgICAgfSk7CisjZWxzZQorICAgIExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9j
ZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkLCB1cmwgJyVzJyB3aWxsIGJlIHNj
aGVkdWxlZCB0aHJvdWdoIFNlcnZpY2VXb3JrZXIgaGFuZGxlIGZldGNoIGFsZ29yaXRobSIsIHJl
c291cmNlTG9hZGVyLnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7CisgICAgc2NoZWR1
bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKHJlc291cmNlTG9hZGVyLCByZXNvdXJjZUxvYWRlci5y
ZXF1ZXN0KCksIHRyYWNraW5nUGFyYW1ldGVycywgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNU
b0hUVFBSZWRpcmVjdCwgbWF4aW11bUJ1ZmZlcmluZ1RpbWUocmVzb3VyY2UpKTsKKyNlbmRpZgor
fQorCit2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nl
c3MoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFdlYlJlc291cmNlTG9hZGVyOjpUcmFja2luZ1BhcmFtZXRlcnMmIHRy
YWNraW5nUGFyYW1ldGVycywgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJl
ZGlyZWN0LCBTZWNvbmRzIG1heGltdW1CdWZmZXJpbmdUaW1lKQoreworICAgIFJlc291cmNlTG9h
ZElkZW50aWZpZXIgaWRlbnRpZmllciA9IHJlc291cmNlTG9hZGVyLmlkZW50aWZpZXIoKTsKKyAg
ICBBU1NFUlQoaWRlbnRpZmllcik7CisKKyAgICBXZWJGcmFtZUxvYWRlckNsaWVudCogd2ViRnJh
bWVMb2FkZXJDbGllbnQgPSB0b1dlYkZyYW1lTG9hZGVyQ2xpZW50KHJlc291cmNlTG9hZGVyLmZy
YW1lTG9hZGVyKCktPmNsaWVudCgpKTsKKyAgICBXZWJGcmFtZSogd2ViRnJhbWUgPSB3ZWJGcmFt
ZUxvYWRlckNsaWVudCA/IHdlYkZyYW1lTG9hZGVyQ2xpZW50LT53ZWJGcmFtZSgpIDogbnVsbHB0
cjsKKyAgICBXZWJQYWdlKiB3ZWJQYWdlID0gd2ViRnJhbWUgPyB3ZWJGcmFtZS0+cGFnZSgpIDog
bnVsbHB0cjsKKwogICAgIExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJM
b2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkLCB1cmwgJyVzJyB3aWxsIGJlIHNjaGVkdWxlZCB3
aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyB3aXRoIHByaW9yaXR5ICVkIiwgcmVzb3VyY2VMb2FkZXIu
dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNl
TG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSk7CiAKICAgICBDb250ZW50U25pZmZpbmdQb2xp
Y3kgY29udGVudFNuaWZmaW5nUG9saWN5ID0gcmVzb3VyY2VMb2FkZXIuc2hvdWxkU25pZmZDb250
ZW50KCkgPyBTbmlmZkNvbnRlbnQgOiBEb05vdFNuaWZmQ29udGVudDsKQEAgLTIyNSw3ICsyNDks
NyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXIm
IHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogICAgIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJ
RCA9IHdlYlBhZ2UgPyB3ZWJQYWdlLT5wYWdlSUQoKSA6IDA7CiAgICAgbG9hZFBhcmFtZXRlcnMu
d2ViRnJhbWVJRCA9IHdlYkZyYW1lID8gd2ViRnJhbWUtPmZyYW1lSUQoKSA6IDA7CiAgICAgbG9h
ZFBhcmFtZXRlcnMuc2Vzc2lvbklEID0gd2ViUGFnZSA/IHdlYlBhZ2UtPnNlc3Npb25JRCgpIDog
UEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsKLSAgICBsb2FkUGFyYW1ldGVycy5y
ZXF1ZXN0ID0gcmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpOworICAgIGxvYWRQYXJhbWV0ZXJzLnJl
cXVlc3QgPSByZXF1ZXN0OwogICAgIGxvYWRQYXJhbWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1BvbGlj
eSA9IGNvbnRlbnRTbmlmZmluZ1BvbGljeTsKICAgICBsb2FkUGFyYW1ldGVycy5zdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSA9IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5OwogICAgIC8vIElmIHRoZXJl
IGlzIG5vIFdlYkZyYW1lIHRoZW4gdGhpcyByZXNvdXJjZSBjYW5ub3QgYmUgYXV0aGVudGljYXRl
ZCB3aXRoIHRoZSBjbGllbnQuCkBAIC0yMzMsNyArMjU3LDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJh
dGVneTo6c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwgQ2FjaGVk
UmVzb3UKICAgICBsb2FkUGFyYW1ldGVycy5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRU
UFJlZGlyZWN0ID0gc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdDsKICAg
ICBsb2FkUGFyYW1ldGVycy5kZWZlcnNMb2FkaW5nID0gcmVzb3VyY2VMb2FkZXIuZGVmZXJzTG9h
ZGluZygpOwogICAgIGxvYWRQYXJhbWV0ZXJzLm5lZWRzQ2VydGlmaWNhdGVJbmZvID0gcmVzb3Vy
Y2VMb2FkZXIuc2hvdWxkSW5jbHVkZUNlcnRpZmljYXRlSW5mbygpOwotICAgIGxvYWRQYXJhbWV0
ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1lID0gbWF4aW11bUJ1ZmZlcmluZ1RpbWUocmVzb3VyY2Up
OworICAgIGxvYWRQYXJhbWV0ZXJzLm1heGltdW1CdWZmZXJpbmdUaW1lID0gbWF4aW11bUJ1ZmZl
cmluZ1RpbWU7CiAgICAgbG9hZFBhcmFtZXRlcnMuZGVyaXZlZENhY2hlZERhdGFUeXBlc1RvUmV0
cmlldmUgPSByZXNvdXJjZUxvYWRlci5vcHRpb25zKCkuZGVyaXZlZENhY2hlZERhdGFUeXBlc1Rv
UmV0cmlldmU7CiAKICAgICBBU1NFUlQoKGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRCAmJiBsb2Fk
UGFyYW1ldGVycy53ZWJGcmFtZUlEKSB8fCBsb2FkUGFyYW1ldGVycy5jbGllbnRDcmVkZW50aWFs
UG9saWN5ID09IENsaWVudENyZWRlbnRpYWxQb2xpY3k6OkNhbm5vdEFza0NsaWVudEZvckNyZWRl
bnRpYWxzKTsKQEAgLTMwMCw3ICszMjQsMTIgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6cmVt
b3ZlKFJlc291cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlcikKICAgICAgICAgTE9HX0VSUk9SKCJX
ZWJMb2FkZXJTdHJhdGVneSByZW1vdmluZyBhIFJlc291cmNlTG9hZGVyIHRoYXQgaGFzIG5vIGlk
ZW50aWZpZXIuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKKyNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCisgICAgaWYgKFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xl
dG9uKCkuY2FuY2VsRmV0Y2goaWRlbnRpZmllcikpCisgICAgICAgIHJldHVybjsKKyNlbmRpZgor
CiAgICAgUmVmUHRyPFdlYlJlc291cmNlTG9hZGVyPiBsb2FkZXIgPSBtX3dlYlJlc291cmNlTG9h
ZGVycy50YWtlKGlkZW50aWZpZXIpOwogICAgIC8vIExvYWRlciBtYXkgbm90IGJlIHJlZ2lzdGVy
ZWQgaWYgd2UgY3JlYXRlZCBpdCwgYnV0IGhhdmVuJ3Qgc2NoZWR1bGVkIHlldCAoYSBidW5kbGUg
Y2xpZW50IGNhbiBkZWNpZGUgdG8gY2FuY2VsIHN1Y2ggcmVxdWVzdCB2aWEgd2lsbFNlbmRSZXF1
ZXN0KS4KICAgICBpZiAoIWxvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCmluZGV4IGI0OGY2ODExOGY0NDljNzc2OGQx
Nzk2NjE2NWJiNjZhMzI1YjIzNmYuLjI3OTJhYjkxYzA4YTUzYTMyOWEyZGEzNTM3NGYwMjMzOWM1
MTY5ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxv
YWRlclN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuaApAQCAtNzcsNiArNzcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRV
UkxTY2hlbWVUYXNrUHJveHkoV2ViVVJMU2NoZW1lVGFza1Byb3h5Jik7CiAgICAgdm9pZCByZW1v
dmVVUkxTY2hlbWVUYXNrUHJveHkoV2ViVVJMU2NoZW1lVGFza1Byb3h5Jik7CiAKKyAgICB2b2lk
IHNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYlJlc291cmNlTG9hZGVy
OjpUcmFja2luZ1BhcmFtZXRlcnMmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9I
VFRQUmVkaXJlY3QsIFNlY29uZHMgbWF4aW11bUJ1ZmZlcmluZ1RpbWUpOworCiBwcml2YXRlOgog
ICAgIHZvaWQgc2NoZWR1bGVMb2FkKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJiwgV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2UqLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVk
aXJlY3QpOwogICAgIHZvaWQgc2NoZWR1bGVJbnRlcm5hbGx5RmFpbGVkTG9hZChXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzA3
MTU1OTViZDYzNTA5YjhlYjI4ODI2NDJhYmI0MTBjZGU3YThiMwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRj
aC5jcHAKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudEZldGNoLmgiCisKKyNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCisKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiV2Vi
U2VydmljZVdvcmtlclByb3ZpZGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRl
ZC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6U2VydmljZVdvcmtlckNsaWVudEZldGNoKFdlYlNl
cnZpY2VXb3JrZXJQcm92aWRlciYgc2VydmljZVdvcmtlclByb3ZpZGVyLCBSZWY8V2ViQ29yZTo6
UmVzb3VyY2VMb2FkZXI+JiYgbG9hZGVyLCB1aW50NjRfdCBpZGVudGlmaWVyLCBSZWY8SVBDOjpD
b25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIENhbGxiYWNrJiYgY2FsbGJhY2spCisgICAgOiBtX3Nl
cnZpY2VXb3JrZXJQcm92aWRlcihzZXJ2aWNlV29ya2VyUHJvdmlkZXIpCisgICAgLCBtX2xvYWRl
cihXVEZNb3ZlKGxvYWRlcikpCisgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAs
IG1fY29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQorICAgICwgbV9jYWxsYmFjayhXVEZN
b3ZlKGNhbGxiYWNrKSkKK3sKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OmRp
ZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKK3sKKyAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKKworICAgIGlm
ICghKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPD0gMzAwIHx8IHJlc3BvbnNlLmh0dHBTdGF0
dXNDb2RlKCkgPj0gNDAwIHx8IHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0IHx8IHJl
c3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA1IHx8IHJlc3BvbnNlLmh0dHBTdGF0dXNDb2Rl
KCkgPT0gMzA2KSkgeworICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCByZWRpcmVjdGlvbnMuCisg
ICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgICAgIG1fbG9hZGVyLT5kaWRGYWlsKHsgfSk7
CisgICAgICAgIGlmIChhdXRvIGNhbGxiYWNrID0gV1RGTW92ZShtX2NhbGxiYWNrKSkKKyAgICAg
ICAgICAgIGNhbGxiYWNrKFJlc3VsdDo6U3VjY2VlZGVkKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGlmIChyZXNwb25zZS50eXBlKCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6VHlwZTo6
RXJyb3IpIHsKKyAgICAgICAgLy8gQWRkIHN1cHBvcnQgZm9yIGEgYmV0dGVyIGVycm9yLgorICAg
ICAgICBtX2xvYWRlci0+ZGlkRmFpbCh7IH0pOworICAgICAgICBpZiAoYXV0byBjYWxsYmFjayA9
IFdURk1vdmUobV9jYWxsYmFjaykpCisgICAgICAgICAgICBjYWxsYmFjayhSZXN1bHQ6OlN1Y2Nl
ZWRlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2xvYWRlci0+ZGlkUmVjZWl2
ZVJlc3BvbnNlKHJlc3BvbnNlKTsKKyAgICBpZiAoYXV0byBjYWxsYmFjayA9IFdURk1vdmUobV9j
YWxsYmFjaykpCisgICAgICAgIGNhbGxiYWNrKFJlc3VsdDo6U3VjY2VlZGVkKTsKK30KKwordm9p
ZCBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKK3sKKyAgICBtX2xv
YWRlci0+ZGlkUmVjZWl2ZURhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5k
YXRhKCkpLCBkYXRhLnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkQnl0ZXMp
OworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6ZGlkRmluaXNoKCkKK3sKKyAg
ICBBU1NFUlQoIW1fY2FsbGJhY2spOworCisgICAgYXV0byBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyk7CisgICAgbV9sb2FkZXItPmRpZEZpbmlzaExvYWRpbmcoTmV0d29ya0xvYWRNZXRy
aWNzIHsgfSk7CisgICAgbV9zZXJ2aWNlV29ya2VyUHJvdmlkZXIuZmV0Y2hGaW5pc2hlZChtX2lk
ZW50aWZpZXIpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6ZGlkRmFpbCgp
Cit7CisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBXVEZNb3ZlKG1fY2FsbGJhY2spKQorICAgICAg
ICBjYWxsYmFjayhSZXN1bHQ6OlVuaGFuZGxlZCk7CisKKyAgICBtX3NlcnZpY2VXb3JrZXJQcm92
aWRlci5mZXRjaEZpbmlzaGVkKG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtl
ckNsaWVudEZldGNoOjpjYW5jZWwoKQoreworICAgIGlmIChhdXRvIGNhbGxiYWNrID0gV1RGTW92
ZShtX2NhbGxiYWNrKSkKKyAgICAgICAgY2FsbGJhY2soUmVzdWx0OjpDYW5jZWxsZWQpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VX
b3JrZXJDbGllbnRGZXRjaC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2Vy
dmljZVdvcmtlckNsaWVudEZldGNoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDA1MjA5NjAzNzBmY2QxNDkwMDJh
ZTI4MGJjZTcyYzY3MTY2ZTMyMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5oCkBAIC0wLDAgKzEsNzQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKKworI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VTZW5k
ZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZGVyLmg+CisjaW5jbHVkZSA8d3Rm
L0NvbXBsZXRpb25IYW5kbGVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJT
ZXJ2aWNlV29ya2VyUHJvdmlkZXI7CisKK2NsYXNzIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaCBm
aW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaD4sIHB1Ymxp
YyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitwdWJs
aWM6CisgICAgZW51bSBjbGFzcyBSZXN1bHQgeyBTdWNjZWVkZWQsIENhbmNlbGxlZCwgVW5oYW5k
bGVkIH07CisgICAgdXNpbmcgQ2FsbGJhY2sgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVzdWx0KT47CisKKyAgICBzdGF0aWMgUmVmPFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaD4gY3Jl
YXRlKFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlciYgc2VydmljZVdvcmtlclByb3ZpZGVyLCBSZWY8
V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI+JiYgbG9hZGVyLCB1aW50NjRfdCBpZGVudGlmaWVyLCBS
ZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIENhbGxiYWNrJiYgY2FsbGJhY2spCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0
Y2ggeyBzZXJ2aWNlV29ya2VyUHJvdmlkZXIsIFdURk1vdmUobG9hZGVyKSwgaWRlbnRpZmllciwg
V1RGTW92ZShjb25uZWN0aW9uKSwgV1RGTW92ZShjYWxsYmFjaykgfSk7CisgICAgfQorCisgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBm
aW5hbDsKKyAgICB2b2lkIGNhbmNlbCgpOworCisgICAgYm9vbCBpc09uZ29pbmcoKSBjb25zdCB7
IHJldHVybiAhIW1fY2FsbGJhY2s7IH0KKworcHJpdmF0ZToKKyAgICBTZXJ2aWNlV29ya2VyQ2xp
ZW50RmV0Y2goV2ViU2VydmljZVdvcmtlclByb3ZpZGVyJiwgUmVmPFdlYkNvcmU6OlJlc291cmNl
TG9hZGVyPiYmLCB1aW50NjRfdCBpZGVudGlmaWVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBD
YWxsYmFjayYmKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGlk
RmluaXNoKCk7CisgICAgdm9pZCBkaWRGYWlsKCk7CisKKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1l
c3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgZmluYWwgeyByZXR1cm4gbV9jb25uZWN0aW9uLnB0cigp
OyB9CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBmaW5hbCB7IHJl
dHVybiBtX2lkZW50aWZpZXI7IH0KKworICAgIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlciYgbV9z
ZXJ2aWNlV29ya2VyUHJvdmlkZXI7CisgICAgUmVmPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyPiBt
X2xvYWRlcjsKKyAgICB1aW50NjRfdCBtX2lkZW50aWZpZXIgeyAwIH07CisgICAgUmVmPElQQzo6
Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgIENhbGxiYWNrIG1fY2FsbGJhY2s7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VX
b3JrZXJDbGllbnRGZXRjaC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5tZXNzYWdlcy5pbgpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
MTA4MWI0YmQwYmVmNGU5ZDhkYmIxNjk4M2YyNjJmODhiOTIzZWU3Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZl
dGNoLm1lc3NhZ2VzLmluCkBAIC0wLDAgKzEsMzIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKworbWVzc2FnZXMg
LT4gU2VydmljZVdvcmtlckNsaWVudEZldGNoIHsKKyAgICBEaWRSZWNlaXZlUmVzcG9uc2UoV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKKyAgICBEaWRSZWNlaXZlRGF0YShJUEM6
OkRhdGFSZWZlcmVuY2UgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKKyAgICBEaWRG
aW5pc2goKQorICAgIERpZEZhaWwoKQorfQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2Vydmlj
ZVdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1NlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDM3MTM5MjQy
MzgxNTdiNmY0OGVmNWVlZTZjNmQ3MmY3YWU2MTIzNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5j
cHAKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuaCIKKworI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTdG9yYWdlUHJv
Y2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlUmVzcG9uc2UuaD4KKyNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CisKK3VzaW5nIG5hbWVz
cGFjZSBQQUw7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK3ZvaWQgU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyOjpzdGFydFNlcnZpY2VXb3JrZXJD
b250ZXh0KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEmIGRhdGEpCit7CisgICAgLy8gRklYTUU6IFByb3ZpZGUgYSBzZW5z
aWNhbCBzZXNzaW9uIElELgorICAgIGF1dG8gdGhyZWFkID0gU2VydmljZVdvcmtlclRocmVhZDo6
Y3JlYXRlKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBkYXRhLCBTZXNzaW9uSUQ6OmRlZmF1
bHRTZXNzaW9uSUQoKSk7CisgICAgYXV0byB0aHJlYWRJZGVudGlmaWVyID0gdGhyZWFkLT5pZGVu
dGlmaWVyKCk7CisgICAgYXV0byByZXN1bHQgPSBtX3dvcmtlclRocmVhZE1hcC5hZGQodGhyZWFk
SWRlbnRpZmllciwgV1RGTW92ZSh0aHJlYWQpKTsKKyAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50
cnkpOworCisgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+c3RhcnQoKTsKKworICAgIExPRyhT
ZXJ2aWNlV29ya2VyLCAiQ29udGV4dCBwcm9jZXNzIFBJRDogJWkgc3RhcnRlZCB3b3JrZXIgdGhy
ZWFkICVzXG4iLCBnZXRwaWQoKSwgZGF0YS53b3JrZXJJRC51dGY4KCkuZGF0YSgpKTsKKworICAg
IG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9j
ZXNzOjpTZXJ2aWNlV29ya2VyQ29udGV4dFN0YXJ0ZWQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIsIGRhdGEucmVnaXN0cmF0aW9uS2V5LCB0aHJlYWRJZGVudGlmaWVyLCBkYXRhLndvcmtlcklE
KSwgMCk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyOjpzdGFydEZldGNo
KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50
aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucykKK3sKKyAgICBVTlVT
RURfUEFSQU0oc2VydmljZVdvcmtlcklkZW50aWZpZXIpOworCisgICAgLy8gRklYTUU6IEhhcmQg
Y29kaW5nIHNvbWUgZmV0Y2hlcyBmb3IgdGVzdGluZyBwdXJwb3NlIHVudGlsIHdlIGltcGxlbWVu
dCB0aGUgY3JlYXRpb24gb2YgZmV0Y2ggZXZlbnQuCisgICAgaWYgKHJlcXVlc3QudXJsKCkuc3Ry
aW5nKCkuY29udGFpbnMoInRlc3QxIikpIHsKKyAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNw
b25zZTsKKyAgICAgICAgcmVzcG9uc2Uuc2V0VVJMKHJlcXVlc3QudXJsKCkpOworICAgICAgICBy
ZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZSgyMDApOworICAgICAgICByZXNwb25zZS5zZXRIVFRQ
U3RhdHVzVGV4dChBU0NJSUxpdGVyYWwoIkhlbGxvIGZyb20gc2VydmljZSB3b3JrZXIiKSk7Cisg
ICAgICAgIG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlN0b3Jh
Z2VQcm9jZXNzOjpEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZShzZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciwgZmV0Y2hJZGVudGlmaWVyLCByZXNwb25zZSksIDApOworICAgICAgICBtX2Nvbm5lY3Rp
b25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6RGlkRmlu
aXNoRmV0Y2goc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGZldGNoSWRlbnRpZmllciksIDAp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChyZXF1ZXN0LnVybCgpLnN0cmluZygp
LmNvbnRhaW5zKCJ0ZXN0MiIpKSB7CisgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7
CisgICAgICAgIHJlc3BvbnNlLnNldFVSTChyZXF1ZXN0LnVybCgpKTsKKyAgICAgICAgcmVzcG9u
c2Uuc2V0SFRUUFN0YXR1c0NvZGUoNTAwKTsKKyAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1
c1RleHQoQVNDSUlMaXRlcmFsKCJFcnJvciBmcm9tIHNlcnZpY2Ugd29ya2VyIikpOworICAgICAg
ICBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJv
Y2Vzczo6RGlkUmVjZWl2ZUZldGNoUmVzcG9uc2Uoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIs
IGZldGNoSWRlbnRpZmllciwgcmVzcG9uc2UpLCAwKTsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9T
dG9yYWdlUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OkRpZEZpbmlzaEZl
dGNoKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIpLCAwKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAocmVxdWVzdC51cmwoKS5zdHJpbmcoKS5jb250
YWlucygidGVzdDMiKSkgeworICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOworICAg
ICAgICByZXNwb25zZS5zZXRVUkwocmVxdWVzdC51cmwoKSk7CisgICAgICAgIHJlc3BvbnNlLnNl
dEhUVFBTdGF0dXNDb2RlKDUwMCk7CisgICAgICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNUZXh0
KEFTQ0lJTGl0ZXJhbCgiRXJyb3IgZnJvbSBzZXJ2aWNlIHdvcmtlciIpKTsKKyAgICAgICAgcmVz
cG9uc2Uuc2V0VHlwZShSZXNvdXJjZVJlc3BvbnNlOjpUeXBlOjpFcnJvcik7CisgICAgICAgIG1f
Y29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNz
OjpEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZShzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgZmV0
Y2hJZGVudGlmaWVyLCByZXNwb25zZSksIDApOworICAgICAgICBtX2Nvbm5lY3Rpb25Ub1N0b3Jh
Z2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6RGlkRmluaXNoRmV0Y2go
c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGZldGNoSWRlbnRpZmllciksIDApOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgbV9jb25uZWN0aW9uVG9TdG9yYWdlUHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OkRpZEZhaWxGZXRjaChzZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyKSwgMCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdl
ci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNvbnRl
eHRNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDhiNjkxMGE3NjE5ZTg5YTFhN2QxOGFhNmRjMTZhY2M1
ZDBlZTBhOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1NlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKworI2lu
Y2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUaHJl
YWQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7Citz
dHJ1Y3QgRmV0Y2hPcHRpb25zOworY2xhc3MgUmVzb3VyY2VSZXF1ZXN0Oworc3RydWN0IFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFNl
cnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgU2Vydmlj
ZVdvcmtlckNvbnRleHRNYW5hZ2VyKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikK
KyAgICAgICAgOiBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzKFdURk1vdmUoY29ubmVjdGlv
bikpCisgICAgeworICAgIH0KKworICAgIHZvaWQgc3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4dCh1
aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhJik7CisgICAgdm9pZCBzdGFydEZldGNoKHVpbnQ2NF90IHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIHVpbnQ2NF90
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmKTsKKworcHJpdmF0ZToKKyAgICBSZWY8SVBD
OjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzOworICAgIEhhc2hNYXA8
dWludDY0X3QsIFJlZlB0cjxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkPj4gbV93b3JrZXJU
aHJlYWRNYXA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCmluZGV4IDc2YWU3YjU1YmEwMzBj
Y2IwMzgzNzg2ZTg4NzI4NTk5ZmZiZDZhZGEuLmJiMWUxY2M5YTk1ZWI4Njk2NDExOTk4MjEwNTA1
NDY2OGVjYjQ5ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRl
ICJTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guaCIKICNpbmNsdWRlICJTdG9yYWdlVG9XZWJQcm9j
ZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgiCiAjaW5jbHVkZSAiV2ViU1dPcmlnaW5UYWJsZS5oIgpAQCAtNzUsNiArNzYsMTUgQEAgdm9p
ZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnNldFNXT3JpZ2luVGFibGVTaGFyZWRNZW1vcnkoY29u
c3QgU2hhcmVkTWVtb3J5OjpIYW4KICAgICBtX3N3T3JpZ2luVGFibGUtPnNldFNoYXJlZE1lbW9y
eShoYW5kbGUpOwogfQogCitSZWY8U2VydmljZVdvcmtlckNsaWVudEZldGNoPiBXZWJTV0NsaWVu
dENvbm5lY3Rpb246OnN0YXJ0RmV0Y2goV2ViU2VydmljZVdvcmtlclByb3ZpZGVyJiBwcm92aWRl
ciwgUmVmPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyPiYmIGxvYWRlciwgdWludDY0X3QgaWRlbnRp
ZmllciwgU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpDYWxsYmFjayYmIGNhbGxiYWNrKQorewor
ICAgIEFTU0VSVChsb2FkZXItPm9wdGlvbnMoKS5zZXJ2aWNlV29ya2Vyc01vZGUgPT0gU2Vydmlj
ZVdvcmtlcnNNb2RlOjpBbGwpOworICAgIC8vIEZJWE1FOiBEZWNpZGUgd2hldGhlciB0byBhc3Nl
cnQgZm9yIGxvYWRlci0+b3B0aW9ucygpLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIG9uY2Ugd2Ug
aGF2ZSBhIHN0b3J5IGZvciBuYXZpZ2F0aW9uIGxvYWRzLgorCisgICAgc2VuZChNZXNzYWdlczo6
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpTdGFydEZldGNoKGlkZW50aWZpZXIsIGxvYWRlci0+b3B0
aW9ucygpLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBsb2FkZXItPm9yaWdpbmFsUmVxdWVzdCgp
LCBsb2FkZXItPm9wdGlvbnMoKSkpOworICAgIHJldHVybiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0
Y2g6OmNyZWF0ZShwcm92aWRlciwgV1RGTW92ZShsb2FkZXIpLCBpZGVudGlmaWVyLCBtX2Nvbm5l
Y3Rpb24uZ2V0KCksIFdURk1vdmUoY2FsbGJhY2spKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oCmlu
ZGV4IDI2MTdlYzJlNzRmMGU1NGUyNDQ2NjhjMmMyMzVkMzYzYmRhZGQ2NTMuLjkxYjlmOGM2MjRj
ZWExYWZlNjUyNjhlODQ4NDhiYzYyNGJlZmQ0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oCkBAIC0zMCw2
ICszMCw3IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNl
aXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29y
a2VyQ2xpZW50RmV0Y2guaCIKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL1NXQ2xpZW50Q29ubmVjdGlvbi5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4K
QEAgLTM3LDExICszOCwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgRXhjZXB0
aW9uRGF0YTsKK2NsYXNzIFJlc291cmNlTG9hZGVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogY2xhc3MgV2ViU1dPcmlnaW5UYWJsZTsKK2NsYXNzIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRl
cjsKIAogY2xhc3MgV2ViU1dDbGllbnRDb25uZWN0aW9uIDogcHVibGljIFdlYkNvcmU6OlNXQ2xp
ZW50Q29ubmVjdGlvbiwgcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVz
c2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKQEAgLTU4LDYgKzYxLDcgQEAgcHVibGljOgogICAgIHZv
aWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmlu
YWw7CiAKICAgICBib29sIGhhc1NlcnZpY2VXb3JrZXJSZWdpc3RlcmVkRm9yT3JpZ2luKGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJikgY29uc3QgZmluYWw7CisgICAgUmVmPFNlcnZpY2VX
b3JrZXJDbGllbnRGZXRjaD4gc3RhcnRGZXRjaChXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXImLCBS
ZWY8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI+JiYsIHVpbnQ2NF90IGlkZW50aWZpZXIsIFNlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaDo6Q2FsbGJhY2smJik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBz
Y2hlZHVsZVN0b3JhZ2VKb2IoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGEmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VX
b3JrZXJQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
ZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwCmluZGV4IDYxZDhjZTU2ZWVjNWJkNDE3M2I2NDJiZTkw
NjFlNzNjNzczNzZmOTkuLjNhYmE0OTFkNmI4ZTYxN2YxY2NmMjUxZjVlMjQ3MzI4MjA2YjE3NjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VX
b3JrZXJQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcApAQCAtNTgsNiArNTgsNjAgQEAgV2ViQ29yZTo6
U1dDbGllbnRDb25uZWN0aW9uJiBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNlcnZpY2VXb3Jr
ZXJDb25uZWN0aW9uRm8KICAgICByZXR1cm4gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViVG9T
dG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VydmljZVdvcmtlckNvbm5lY3Rpb25Gb3JTZXNz
aW9uKHNlc3Npb25JRCk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRIYW5kbGVGZXRj
aChjb25zdCBXZWJTV0NsaWVudENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIENhY2hlZFJlc291cmNl
KiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKQoreworICAg
IGlmIChvcHRpb25zLnNlcnZpY2VXb3JrZXJzTW9kZSAhPSBTZXJ2aWNlV29ya2Vyc01vZGU6OkFs
bCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9i
YWJseSBhc3NlcnQgdGhhdCBvcHRpb25zLnNlcnZpY2VXb3JrZXJzSWRlbnRpZmllciBpcyBub3Qg
bnVsbC4KKyAgICBpZiAoaXNQb3RlbnRpYWxOYXZpZ2F0aW9uT3JTdWJyZXNvdXJjZVJlcXVlc3Qo
b3B0aW9ucy5kZXN0aW5hdGlvbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgbm9uLXN1YnJlc291cmNlIHJlcXVlc3QgbG9hZHMuCisgICAgaWYgKGlz
Tm9uU3VicmVzb3VyY2VSZXF1ZXN0KG9wdGlvbnMuZGVzdGluYXRpb24pKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpZiAoIXJlc291cmNlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICByZXR1cm4gY29ubmVjdGlvbi5oYXNTZXJ2aWNlV29ya2VyUmVnaXN0ZXJlZEZvck9yaWdp
bigqcmVzb3VyY2UtPm9yaWdpbigpKTsKK30KKwordm9pZCBXZWJTZXJ2aWNlV29ya2VyUHJvdmlk
ZXI6OmhhbmRsZUZldGNoKFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIENhY2hlZFJlc291cmNlKiBy
ZXNvdXJjZSwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0
Y2g6OkNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgYXV0byYgY29ubmVjdGlvbiA9IFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLndlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKCktPnNlcnZp
Y2VXb3JrZXJDb25uZWN0aW9uRm9yU2Vzc2lvbihzZXNzaW9uSUQpOworCisgICAgaWYgKCFzaG91
bGRIYW5kbGVGZXRjaChjb25uZWN0aW9uLCByZXNvdXJjZSwgbG9hZGVyLm9wdGlvbnMoKSkpIHsK
KyAgICAgICAgLy8gRklYTUU6IEFkZCBhbiBvcHRpb24gdG8gZXJyb3IgcmVzb3VyY2UgbG9hZCBm
b3IgRFRMIHRvIGFjdHVhbGx5IGdvIHRocm91Z2ggcHJlZmxpZ2h0LgorICAgICAgICBjYWxsYmFj
ayhTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OlJlc3VsdDo6VW5oYW5kbGVkKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGF1dG8gZmV0Y2ggPSBjb25uZWN0aW9uLnN0YXJ0RmV0Y2go
KnRoaXMsIGxvYWRlciwgbG9hZGVyLmlkZW50aWZpZXIoKSwgV1RGTW92ZShjYWxsYmFjaykpOwor
ICAgIEFTU0VSVChmZXRjaC0+aXNPbmdvaW5nKCkpOworCisgICAgbV9vbmdvaW5nRmV0Y2hUYXNr
cy5hZGQobG9hZGVyLmlkZW50aWZpZXIoKSwgV1RGTW92ZShmZXRjaCkpOworfQorCitib29sIFdl
YlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6Y2FuY2VsRmV0Y2godWludDY0X3QgZmV0Y2hJZGVudGlm
aWVyKQoreworICAgIGF1dG8gZmV0Y2ggPSBtX29uZ29pbmdGZXRjaFRhc2tzLnRha2UoZmV0Y2hJ
ZGVudGlmaWVyKTsKKyAgICBpZiAoZmV0Y2gpCisgICAgICAgICgqZmV0Y2gpLT5jYW5jZWwoKTsK
KyAgICByZXR1cm4gISFmZXRjaDsKK30KKwordm9pZCBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6
OmZldGNoRmluaXNoZWQodWludDY0X3QgZmV0Y2hJZGVudGlmaWVyKQoreworICAgIG1fb25nb2lu
Z0ZldGNoVGFza3MudGFrZShmZXRjaElkZW50aWZpZXIpOworfQorCit2b2lkIFdlYlNlcnZpY2VX
b3JrZXJQcm92aWRlcjo6ZGlkUmVjZWl2ZVNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCit7Cisg
ICAgaWYgKGF1dG8gZmV0Y2ggPSBtX29uZ29pbmdGZXRjaFRhc2tzLmdldChkZWNvZGVyLmRlc3Rp
bmF0aW9uSUQoKSkpCisgICAgICAgIGZldGNoLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9u
LCBkZWNvZGVyKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oCmluZGV4IDc3NWY1ZWUwNGIy
YzZmZGQ3NTZhMmVjZTg4YzY4YTc3MGZjNzAxMGYuLjA5OGI3M2Q1M2U1Y2M5MWQ3MjJiMzkwMGM2
NGNlMDA3OTFhOGEwYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oCkBAIC0yNyw2ICsyNyw3IEBA
CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2Vy
Q2xpZW50RmV0Y2guaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJQcm92aWRlci5o
PgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCkBAIC0zNiwxMiArMzcsMTkgQEAg
Y2xhc3MgV2ViU2VydmljZVdvcmtlclByb3ZpZGVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJQcm92aWRlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFdlYlNlcnZpY2VXb3Jr
ZXJQcm92aWRlciYgc2luZ2xldG9uKCk7CiAKKyAgICB2b2lkIGhhbmRsZUZldGNoKFdlYkNvcmU6
OlJlc291cmNlTG9hZGVyJiwgV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2UqLCBQQUw6OlNlc3Npb25J
RCwgU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpDYWxsYmFjayYmKTsKKyAgICBib29sIGNhbmNl
bEZldGNoKHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcik7CisgICAgdm9pZCBmZXRjaEZpbmlzaGVk
KHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcik7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2aWNl
V29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
OworCiBwcml2YXRlOgogICAgIGZyaWVuZCBOZXZlckRlc3Ryb3llZDxXZWJTZXJ2aWNlV29ya2Vy
UHJvdmlkZXI+OwogICAgIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcigpOwogCiAgICAgV2ViQ29y
ZTo6U1dDbGllbnRDb25uZWN0aW9uJiBzZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Npb24o
UEFMOjpTZXNzaW9uSUQpIGZpbmFsOwogCisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmPFNlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaD4+IG1fb25nb2luZ0ZldGNoVGFza3M7CiB9OyAvLyBjbGFzcyBX
ZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJUb1N0b3JhZ2VQcm9jZXNz
Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJUb1N0
b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggNWExMmQwNGRjYmQyMzExMmM0MDM5MzE5
NDVlNWZjNTU2MTAzMDc3Ni4uYjJkZjgzN2UxZDgzMzU5MWZhNWI0ODRlMzM5YmNkODU2M2MxNTAx
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViVG9TdG9y
YWdlUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMjcsMTEgKzI3LDEz
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViVG9TdG9yYWdlUHJvY2Vzc0Nv
bm5lY3Rpb24uaCIKIAorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oIgog
I2luY2x1ZGUgIldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIldlYlNXQ2xpZW50Q29ubmVjdGlvbi5oIgogI2luY2x1
ZGUgIldlYlNXQ2xpZW50Q29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU2Vydmlj
ZVdvcmtlclByb3ZpZGVyLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBQQUw7CiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKQEAgLTY3LDYgKzY5LDEwIEBAIHZvaWQgV2ViVG9TdG9yYWdlUHJvY2Vzc0Nv
bm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvCiAg
ICAgICAgICAgICBzZXJ2aWNlV29ya2VyQ29ubmVjdGlvbi0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2Rlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgaWYgKGRlY29k
ZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50
RmV0Y2g6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBXZWJTZXJ2aWNlV29ya2Vy
UHJvdmlkZXI6OnNpbmdsZXRvbigpLmRpZFJlY2VpdmVTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQogI2Vu
ZGlmCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAKaW5kZXggNmUyNzY3MTFlY2M1ODdiOTc0YWNhMzEzMTZkYmQxY2EzY2Y3
MTkxYi4uMWY3YjIwNDAzNzY0NGY4MTg3YzA5Y2YxM2Y5ZmM5YTU3NTdiMTFjNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1
ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9u
LmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmgiCisjaW5jbHVk
ZSAiU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2Vzc2lvblRyYWNr
ZXIuaCIKICNpbmNsdWRlICJTdGF0aXN0aWNzRGF0YS5oIgogI2luY2x1ZGUgIlN0b3JhZ2VQcm9j
ZXNzTWVzc2FnZXMuaCIKQEAgLTEwNSw3ICsxMDYsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VMb2FkT2JzZXJ2ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvU1dDb250ZXh0TWFuYWdlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2NoZW1lUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaD4KQEAgLTE2MjIsNyAr
MTYyMiw3IEBAIExpYldlYlJUQ05ldHdvcmsmIFdlYlByb2Nlc3M6OmxpYldlYlJUQ05ldHdvcmso
KQogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIHZvaWQgV2ViUHJvY2Vzczo6Z2V0V29ya2Vy
Q29udGV4dENvbm5lY3Rpb24oKQogewotICAgIEFTU0VSVCghbV93b3JrZXJDb250ZXh0Q29ubmVj
dGlvbik7CisgICAgQVNTRVJUKCFtX3NlcnZpY2VXb3JrZXJNYW5hZ2VyKTsKIAogI2lmIFVTRShV
TklYX0RPTUFJTl9TT0NLRVRTKQogICAgIElQQzo6Q29ubmVjdGlvbjo6U29ja2V0UGFpciBzb2Nr
ZXRQYWlyID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5lY3Rpb24oKTsKQEAg
LTE2NDIsMjAgKzE2NDIsMjcgQEAgdm9pZCBXZWJQcm9jZXNzOjpnZXRXb3JrZXJDb250ZXh0Q29u
bmVjdGlvbigpCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICNlbmRpZgogCi0g
ICAgbV93b3JrZXJDb250ZXh0Q29ubmVjdGlvbiA9IElQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU2Vy
dmVyQ29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRpZmllciwgKnRoaXMpOwotICAgIG1fd29ya2Vy
Q29udGV4dENvbm5lY3Rpb24tPm9wZW4oKTsKLQorICAgIGF1dG8gd29ya2VyQ29udGV4dENvbm5l
Y3Rpb24gPSBJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVNlcnZlckNvbm5lY3Rpb24oY29ubmVjdGlv
bklkZW50aWZpZXIsICp0aGlzKTsKKyAgICB3b3JrZXJDb250ZXh0Q29ubmVjdGlvbi0+b3Blbigp
OworICAgIG1fc2VydmljZVdvcmtlck1hbmFnZXIgPSAgU2VydmljZVdvcmtlckNvbnRleHRNYW5h
Z2VyKFdURk1vdmUod29ya2VyQ29udGV4dENvbm5lY3Rpb24pKTsKICAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzUHJveHk6OkRpZEdldFdvcmtlckNvbnRleHRDb25uZWN0aW9uKGNvbm5lY3Rpb25DbGll
bnRQb3J0KSwgMCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6c3RhcnRTZXJ2aWNlV29ya2VyQ29u
dGV4dCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdv
cmtlckNvbnRleHREYXRhJiBkYXRhKQogewotICAgIGF1dG8gY29udGV4dFJlc3VsdCA9IFNXQ29u
dGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnN0YXJ0U2VydmljZVdvcmtlckNvbnRleHQoc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIsIGRhdGEpOwotICAgIAotICAgIGlmIChjb250ZXh0UmVzdWx0
Lmhhc0V4Y2VwdGlvbigpKQotICAgICAgICBtX3dvcmtlckNvbnRleHRDb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6U2VydmljZVdvcmtlckNvbnRleHRGYWlsZWRUb1N0
YXJ0KHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBkYXRhLnJlZ2lzdHJhdGlvbktleSwgZGF0
YS53b3JrZXJJRCwgY29udGV4dFJlc3VsdC5leGNlcHRpb24oKS5tZXNzYWdlKCkpLCAwKTsKLSAg
ICBlbHNlCi0gICAgICAgIG1fd29ya2VyQ29udGV4dENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6
OlN0b3JhZ2VQcm9jZXNzOjpTZXJ2aWNlV29ya2VyQ29udGV4dFN0YXJ0ZWQoc2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIsIGRhdGEucmVnaXN0cmF0aW9uS2V5LCBjb250ZXh0UmVzdWx0LnJldHVy
blZhbHVlKCksIGRhdGEud29ya2VySUQpLCAwKTsKKyAgICBBU1NFUlQobV9zZXJ2aWNlV29ya2Vy
TWFuYWdlcik7CisgICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJNYW5hZ2VyKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX3NlcnZpY2VXb3JrZXJNYW5hZ2VyLT5zdGFydFNlcnZpY2VXb3JrZXJDb250
ZXh0KHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBkYXRhKTsKK30KKwordm9pZCBXZWJQcm9j
ZXNzOjpzdGFydEZldGNoSW5TZXJ2aWNlV29ya2VyKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEZldGNo
T3B0aW9ucyYgb3B0aW9ucykKK3sKKyAgICBpZiAoIW1fc2VydmljZVdvcmtlck1hbmFnZXIpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fc2VydmljZVdvcmtlck1hbmFnZXItPnN0YXJ0RmV0Y2go
c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGZldGNoSWRlbnRpZmllciwgc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIHJlcXVlc3QsIG9wdGlvbnMpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDVjMmU2Yzc2ZGY3ODI0NWExYjMxNTQ5YzZlMDEx
ZmU0ZjVkNGQzZjcuLmZlZTE0MzYyNmI3MWViOTEwYzg3MzUwZjA1NmQyMjc2YWJmYzkxYTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMzAsNiArMzAsNyBAQAogI2lu
Y2x1ZGUgIlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIlJlc291
cmNlQ2FjaGVzVG9DbGVhci5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKKyNpbmNs
dWRlICJTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tl
clN0YXRlLmgiCiAjaW5jbHVkZSAiVmlld1VwZGF0ZURpc3BhdGNoZXIuaCIKICNpbmNsdWRlICJX
ZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyLmgiCkBAIC0zMDAsNyArMzAxLDcgQEAgcHJp
dmF0ZToKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBnZXRXb3JrZXJDb250
ZXh0Q29ubmVjdGlvbigpOwogICAgIHZvaWQgc3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4dCh1aW50
NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdv
cmtlckNvbnRleHREYXRhJik7Ci0gICAgUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gbV93b3JrZXJD
b250ZXh0Q29ubmVjdGlvbjsKKyAgICB2b2lkIHN0YXJ0RmV0Y2hJblNlcnZpY2VXb3JrZXIodWlu
dDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmll
ciwgdWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OkZldGNoT3B0aW9ucyYpOwogI2VuZGlmCiAKICAg
ICB2b2lkIHJlbGVhc2VQYWdlQ2FjaGUoKTsKQEAgLTQzOCw2ICs0MzksOSBAQCBwcml2YXRlOgog
I2lmIFBMQVRGT1JNKFdBWUxBTkQpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdheWxhbmRDb21wb3Np
dG9yRGlzcGxheT4gbV93YXlsYW5kQ29tcG9zaXRvckRpc3BsYXk7CiAjZW5kaWYKKyNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ29udGV4
dE1hbmFnZXI+IG1fc2VydmljZVdvcmtlck1hbmFnZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbgppbmRleCAyMjA2MzYwMWUwNjNhYjViMjE3OGZmN2IzNmM5Yzk5MTI4MTA3OTdm
Li5mYTU0NzJjMTIyOTE1ODlmNDA4ZTliNGFiYzFmOWZjYTBmMzVhMDgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTE3LDUgKzEx
Nyw2IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKICAgICBHZXRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbigpCiAgICAg
U3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4dCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
Zmllciwgc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBjb250ZXh0RGF0
YSkKKyAgICBTdGFydEZldGNoSW5TZXJ2aWNlV29ya2VyKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgc3RydWN0
IFdlYkNvcmU6OkZldGNoT3B0aW9ucyBvcHRpb25zKQogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZDdlZmM4
MTA1ZGJmMDRhYmYxYmYwZDk4ZGRlNzllNWRjZTBiYWI3OS4uMDQ4NTMyNGRlNjc3ZmYyYmZlMmE4
M2EyZGU5YWQ1Yjc1OTIxNjQ3NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTEwLTE4ICBZ
b3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgcHJlbGltaW5h
cnkgc3VwcG9ydCBmb3IgU2VydmljZVdvcmtlciBIYW5kbGUgRmV0Y2gKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODQ3NQorCisgICAgICAgIFJldmll
d2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZp
Y2UvYmFzaWMtZmV0Y2guaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1mZXRjaC5odHRwcy5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvYmFzaWMtZmV0Y2gt
d29ya2VyLmpzOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9y
ZXNvdXJjZXMvYmFzaWMtZmV0Y2guanM6IEFkZGVkLgorCiAyMDE3LTEwLTE4ICBEZWFuIEphY2tz
b24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBTb21lIG9sZGVyIGhhcmR3YXJlIGNhbid0
IGFjdHVhbGx5IHVzZSByZW5kZXJidWZmZXJzIGF0IHRoZSBzaXplIHRoZXkgYWR2ZXJ0aXNlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1m
ZXRjaC5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMv
c2VydmljZS9iYXNpYy1mZXRjaC5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmZkNjQ5
ZjA5YmYxNDMwMWNlODdjZDBjOWZjNjI0YWRjNjBkNjRmZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2ljLWZldGNoLmh0dHBzLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxMjogdGVz
dDEgc3RhdHVzIGNvZGU6IDIwMAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEzOiB0ZXN0MSBzdGF0
dXMgdGV4dDogSGVsbG8gZnJvbSBzZXJ2aWNlIHdvcmtlcgorQ09OU09MRSBNRVNTQUdFOiBsaW5l
IDE2OiB0ZXN0MiBzdGF0dXMgY29kZTogNTAwCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTc6IHRl
c3QyIHN0YXR1cyB0ZXh0OiBFcnJvciBmcm9tIHNlcnZpY2Ugd29ya2VyCitDT05TT0xFIE1FU1NB
R0U6IGxpbmUgMjY6IHRlc3QzIGZldGNoIGZhaWxlZCBhcyBleHBlY3RlZAorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1mZXRjaC5odHRw
cy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvYmFzaWMtZmV0
Y2guaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MmEwNjZhYzk4ZWY3OGI4ODRmNWZjYWU0NmE5NDE4
YTU4YTVjYmFkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3Jr
ZXJzL3NlcnZpY2UvYmFzaWMtZmV0Y2guaHR0cHMuaHRtbApAQCAtMCwwICsxLDkgQEAKKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3N3LXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorCis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2Jhc2ljLWZldGNo
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9iYXNpYy1mZXRjaC13b3JrZXIu
anMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvYmFz
aWMtZmV0Y2gtd29ya2VyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI5ZDhhMmJkMzAxNWNhZTRhNGE0ODU2YTI0
ZjM5YWY4NmMxNmQxNzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvYmFzaWMtZmV0Y2gtd29ya2VyLmpzCkBAIC0wLDAg
KzEgQEAKKy8vIEZJWE1FOiByZWdpc3RlciBhbiBvbmZldGNoIGV2ZW50IGhhbmRsZXIgYW5kIGhh
bmRsZSAidGVzdDEiLCAidGVzdDIiIGFuZCAidGVzdDMiIFVSTHMKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9iYXNpYy1mZXRjaC5q
cyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9iYXNp
Yy1mZXRjaC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yODc0M2EyNjQyOWIxNzc3YjI0Y2I3NjEyNWY4MDAzY2M5
YzQ4ZDRkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJz
L3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2ljLWZldGNoLmpzCkBAIC0wLDAgKzEsMzQgQEAKK2Z1bmN0
aW9uIGRvbmUoKQoreworICAgIGZpbmlzaFNXVGVzdCgpOworfQorCithc3luYyBmdW5jdGlvbiB0
ZXN0KCkKK3sKKyAgICB0cnkgeworICAgICAgICBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtl
ci5yZWdpc3RlcigicmVzb3VyY2VzL2Jhc2ljLWZldGNoLXdvcmtlci5qcyIsIHsgfSk7CisKKyAg
ICAgICAgdmFyIHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goInRlc3QxIik7CisgICAgICAgIGNvbnNv
bGUubG9nKCJ0ZXN0MSBzdGF0dXMgY29kZTogIiArIHJlc3BvbnNlLnN0YXR1cyk7CisgICAgICAg
IGNvbnNvbGUubG9nKCJ0ZXN0MSBzdGF0dXMgdGV4dDogIiArIHJlc3BvbnNlLnN0YXR1c1RleHQp
OworCisgICAgICAgIHZhciByZXNwb25zZSA9IGF3YWl0IGZldGNoKCJ0ZXN0MiIpOworICAgICAg
ICBjb25zb2xlLmxvZygidGVzdDIgc3RhdHVzIGNvZGU6ICIgKyByZXNwb25zZS5zdGF0dXMpOwor
ICAgICAgICBjb25zb2xlLmxvZygidGVzdDIgc3RhdHVzIHRleHQ6ICIgKyByZXNwb25zZS5zdGF0
dXNUZXh0KTsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCBm
ZXRjaCgidGVzdDMiKTsKKyAgICAgICAgICAgIGNvbnNvbGUubG9nKCJ0ZXN0MyBmZXRjaCBzdWNj
ZWVkZWQgdW5leHBlY3RlZGx5Iik7CisgICAgICAgICAgICBjb25zb2xlLmxvZygidGVzdDMgc3Rh
dHVzIGNvZGU6ICIgKyByZXNwb25zZS5zdGF0dXMpOworICAgICAgICAgICAgY29uc29sZS5sb2co
InRlc3QzIHN0YXR1cyB0ZXh0OiAiICsgcmVzcG9uc2Uuc3RhdHVzVGV4dCk7CisKKyAgICAgICAg
fSBjYXRjaCAoZSkgeworICAgICAgICAgICAgY29uc29sZS5sb2coInRlc3QzIGZldGNoIGZhaWxl
ZCBhcyBleHBlY3RlZCIpOworICAgICAgICB9CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIGNv
bnNvbGUubG9nKCJHb3QgZXhjZXB0aW9uOiAiICsgZSk7CisgICAgfQorICAgIGZpbmlzaFNXVGVz
dCgpOworfQorCit0ZXN0KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324278</attachid>
            <date>2017-10-19 13:37:52 -0700</date>
            <delta_ts>2017-10-19 15:45:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178475-20171019133752.patch</filename>
            <type>text/plain</type>
            <size>91147</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzNzA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzc0M2FlOWNmMzdmZmIw
YTRhNjEwZTc5MjUzODJhYzYxZjVkMjM3NS4uNDk4NWM4ZmNiODM1NzM5ZDZlYTQ0MTNjYjhmY2Q2
NzBkNGY1ZjRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE3LTEwLTE5ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgcHJlbGltaW5hcnkg
c3VwcG9ydCBmb3IgU2VydmljZVdvcmtlciBIYW5kbGUgRmV0Y2gKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODQ3NQorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMzUwNjY0MjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAg
ICAgICAgVGVzdDogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvYmFzaWMtZmV0Y2guaHR0cHMu
aHRtbAorCisgICAgICAgIEFkZGluZyBwYXJhbWV0ZXJzIHRvIGFsbG93IFdlYktpdCB0byBkbyBs
b2FkaW5nIHRocm91Z2ggU2VydmljZSBXb3JrZXIgb3IgdGhyb3VnaCByZWd1bGFyIG5ldHdvcmtp
bmcuCisgICAgICAgIEEgc2NyaXB0IGNvbnRleHQgaXMgbm93IHN0b3JpbmcgaXRzIHNlbGVjdGVk
IHNlcnZpY2Ugd29ya2VyIGlkZW50aWZpZXIuIFRoaXMgc2hvdWxkIGJlIGZ1bGx5IGltcGxlbWVu
dGVkIGxhdGVyIG9uLgorICAgICAgICBUaGlzIHNlbGVjdGVkIHNlcnZpY2Ugd29ya2VyIGlkZW50
aWZpZXIgaXMgcGFzc2VkIHRvIGxvYWRpbmcgY29kZSBhcyBhIFJlc291cmNlTG9hZGVyT3B0aW9u
cyBmaWVsZC4KKyAgICAgICAgU2VydmljZSB3b3JrZXJzIG1vZGUgaXMgYWxzbyBhZGRlZCBhcyBh
IFJlc291cmNlTG9hZGVyT3B0aW9ucyBmaWVsZCBzbyB0aGF0IHRoZSBzZXJ2aWNlIHdvcmtlciBj
YW4gYmUgYnlwYXNzZWQuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnNlbGVjdGVkU2VydmljZVdvcmtlcklk
ZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6c2V0U2VsZWN0ZWRTZXJ2aWNlV29ya2VySWRlbnRpZmllcik6CisgICAgICAgICogbG9hZGVy
L0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXI6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcik6CisgICAgICAgICog
bG9hZGVyL0ZldGNoT3B0aW9ucy5oOgorICAgICAgICAoV2ViQ29yZTo6aXNQb3RlbnRpYWxOYXZp
Z2F0aW9uT3JTdWJyZXNvdXJjZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6aXNOb25TdWJy
ZXNvdXJjZVJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlck9wdGlvbnMu
aDoKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRC
cmlkZ2U6Ok1haW5UaHJlYWRCcmlkZ2UpOgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRh
YmxlTG9hZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RC
YXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5o
OgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmg6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKToKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFk
Lmg6CisKIDIwMTctMTAtMTkgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtQYXltZW50IFJlcXVlc3RdIE9ubHkgcHJvY2VzcyBzaGlwcGluZyBvcHRpb25zIGlmIHNo
aXBwaW5nIGlzIHJlcXVlc3RlZCwgYW5kIHRocm93IGFuIGV4Y2VwdGlvbiBvbiBkdXBsaWNhdGUg
c2hpcHBpbmcgb3B0aW9uIElEcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2ZmI0YjhjYmE5MDllZDFiNDM4MGZjMDlj
MTQ3MzllMGU1NjcwYmJjLi5iNDliZTIzOTczMmJmYzE5ZTkyODQ1N2VmMzg2MTBlMzJjZjRlYmQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSw1ICsxLDk1IEBACiAyMDE3LTEwLTE5ICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KIAorICAgICAgICBBZGQgcHJlbGltaW5hcnkgc3VwcG9ydCBmb3Ig
U2VydmljZVdvcmtlciBIYW5kbGUgRmV0Y2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODQ3NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzUwNjY0
MjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgUmVsYW5k
aW5nIG5vdyB0aGF0IHVuZGVybHlpbmcgaXNzdWUgaXMgZml4ZWQgaW4gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODUyNy4KKworICAgICAgICBQcmVsaW1pbmFyeSBz
dXBwb3J0IG9mIEhhbmRsZSBGZXRjaCBhbGdvcml0aG0gYW5kIGludGVncmF0aW9uIHdpdGggZmV0
Y2ggc3BlYy4KKyAgICAgICAgQWRkaW5nIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaCBhcyB0aGUg
Y2xhc3MgcmVzcG9uc2libGUgdG8gZG8gdGhlIGxvYWQgdGhyb3VnaCBTZXJ2aWNlV29ya2VyLgor
ICAgICAgICBJdCBpcyBzaW1pbGFyIHRvIFdlYlJlc291cmNlTG9hZGVyIHRoYXQgZG8gdGhlIGxv
YWQgdGhyb3VnaCBOZXR3b3JrUHJvY2Vzcy4KKyAgICAgICAgSW4gY2FzZSBTZXJ2aWNlV29ya2Vy
Q2xpZW50RmV0Y2ggaXMgbm90IGFibGUgdG8gbG9hZCB0aHJvdWdoIFNlcnZpY2VXb3JrZXIsCisg
ICAgICAgIGl0IHdpbGwgZmFsbGJhY2sgdG8gV2ViUmVzb3VyY2VMb2FkZXIgdGhyb3VnaCBhIGZh
bGxiYWNrIGNhbGxiYWNrLgorCisgICAgICAgIExvYWRpbmcgdGhyb3VnaCBTZXJ2aWNlIFdvcmtl
ciBpcyBkb25lIGN1cnJlbnRseSBpZjoKKyAgICAgICAgLSBUaGVyZSBpcyBhIHNlcnZpY2Ugd29y
a2VyIHJlZ2lzdGVyZWQgZm9yIHRoYXQgb3JpZ2luCisgICAgICAgIC0gUmVxdWVzdCBpcyBhIHN1
YnJlc291cmNlCisgICAgICAgIC0gc2VydmljZSB3b3JrZXJzIG1vZGUgaXMgYWxsCisgICAgICAg
IFRoZXJlIHdpbGwgYmUgY2FzZXMgd2hlcmUgdGhlIHNlcnZpY2Ugd29ya2VyIHdpbGwgbm90IGRv
IHRoZSBsb2FkaW5nLCBmb3IgaW5zdGFuY2Ugd2hlbiBmZXRjaCBldmVudCBoYW5kbGVyIGlzIG5v
dCBzZXQuCisgICAgICAgIEZ1dHVyZSB3b3JrIHNob3VsZCB0cnkgdG8gcmVkdWNlIHRoZSBjYXNl
cyB3aGVyZSB0aGUgSVBDIGRhbmNlIGlzIGRvbmUgdW5uZWNlc3NhcmlseS4KKworICAgICAgICBT
ZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2ggaXMgcmVzcG9uc2libGUgdG8gYWRhcHQgdGhlIFNlcnZp
Y2VXb3JrZXIgcmVzcG9uc2UgdG8gUmVzb3VyY2VMb2FkZXIuCisgICAgICAgIEluIHBhcnRpY3Vs
YXIsIGl0IGlzIGNhbGxpbmcgUmVzb3VyY2VMb2FkZXIgZXJyb3IgY2FsbGJhY2sgaWYgcmVzcG9u
c2UgaXMgb2YgdHlwZSBlcnJvci4KKyAgICAgICAgSXQgc2hvdWxkIGNhbGwgUmVzb3VyY2VMb2Fk
ZXIgcmVkaXJlY3Rpb24gY2FsbGJhY2sgaWYgcmVzcG9uc2UgaXMgYSByZWRpcmVjdGlvbiByZXNw
b25zZS4KKyAgICAgICAgVGhpcyB3aWxsIGJlIGRvbmUgYXMgYSBmb2xsb3ctdXAuCisKKyAgICAg
ICAgSW1wbGVtZW50aW5nIHRoZSBJUEMgY29tbXVuaWNhdGlvbiBkZWRpY2F0ZWQgdG8gZmV0Y2gg
YmV0d2VlbiBXZWJQcm9jZXNzIGFuZCBTZXJ2aWNlV29ya2VyIHRocm91Z2ggU3RvcmFnZVByb2Nl
c3MuCisgICAgICAgIEluIHRoZSBmdXR1cmUsIFdlYlByb2Nlc3Mgc2hvdWxkIGNyZWF0ZSBhIGRp
cmVjdCBJUEMgY29tbXVuaWNhdGlvbiB0byB0aGUgU2VydmljZVdvcmtlciBwcm9jZXNzLgorCisg
ICAgICAgIE1vdmVkIFNXQ29udGV4dE1hbmFnZXIgZnJvbSBXZWJDb3JlIHRvIFdlYktpdCBhbmQg
cmVuYW1lZCBpdCB0byBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuCisgICAgICAgIFRoaXMg
Y2xhc3MgaXMgbW92ZWQgdG8gV2ViS2l0IGFzIGl0IHdpbGwgaGF2ZSB0byBoYW5kbGUgSVBDIGFu
ZCBoYXZpbmcgYSBzZXBhcmF0aW9uIHdpbGwgYWRkIHNvbWUgdW5uZWNlc3NhcnkgYm9pbGVycGxh
dGUuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNl
cy5tYWtlOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9u
OjpzdGFydEZldGNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpk
aWRSZWNlaXZlRmV0Y2hSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29u
bmVjdGlvbjo6ZGlkUmVjZWl2ZUZldGNoRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2Vy
dmVyQ29ubmVjdGlvbjo6ZGlkRmluaXNoRmV0Y2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1Nl
cnZlckNvbm5lY3Rpb246OmRpZEZhaWxGZXRjaCk6CisgICAgICAgICogU3RvcmFnZVByb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBTdG9yYWdl
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjoK
KyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjpkaWRGYWlsRmV0Y2gpOgorICAgICAgICAoV2ViS2l0OjpT
dG9yYWdlUHJvY2Vzczo6ZGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlUHJvY2Vzczo6ZGlkUmVjZWl2ZUZldGNoRGF0YSk6CisgICAgICAgIChXZWJLaXQ6
OlN0b3JhZ2VQcm9jZXNzOjpkaWRGaW5pc2hGZXRjaCk6CisgICAgICAgICogU3RvcmFnZVByb2Nl
c3MvU3RvcmFnZVByb2Nlc3MuaDoKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJv
Y2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3b3Jr
UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpyZW1vdmUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpTZXJ2aWNlV29y
a2VyQ2xpZW50RmV0Y2gpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0
Y2g6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJD
bGllbnRGZXRjaDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29y
a2VyQ2xpZW50RmV0Y2g6OmRpZEZpbmlzaCk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3Jr
ZXJDbGllbnRGZXRjaDo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJD
bGllbnRGZXRjaDo6Y2FuY2VsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvU2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
U3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gubWVzc2FnZXMuaW46IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNv
bm5lY3Rpb24ubWVzc2FnZXMuaW4uCisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZp
Y2VXb3JrZXJDb250ZXh0TWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpTZXJ2
aWNlV29ya2VyQ29udGV4dE1hbmFnZXI6OnN0YXJ0U2VydmljZVdvcmtlckNvbnRleHQpOgorICAg
ICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXI6OnN0YXJ0RmV0Y2gpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIu
aDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NX
Q29udGV4dE1hbmFnZXIuaC4KKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckNvbnRleHRN
YW5hZ2VyOjpTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTV0NsaWVudENvbm5lY3Rpb246OnN0YXJ0RmV0Y2gpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2hv
dWxkSGFuZGxlRmV0Y2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyUHJvdmlk
ZXI6OmhhbmRsZUZldGNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlclByb3Zp
ZGVyOjpjYW5jZWxGZXRjaCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJQcm92
aWRlcjo6ZmV0Y2hGaW5pc2hlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJQ
cm92aWRlcjo6ZGlkUmVjZWl2ZVNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2UpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6ZGlk
UmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmdldFdvcmtlckNvbnRleHRDb25uZWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4dCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnN0YXJ0RmV0Y2hJblNlcnZpY2VXb3JrZXIp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKworMjAxNy0xMC0xOSAgWW91ZW5uIEZhYmxldCAg
PHlvdWVubkBhcHBsZS5jb20+CisKICAgICAgICAgU2VydmljZSBXb3JrZXIgcHJvY2VzcyBzaG91
bGQgbm90IGJlIHNlbGVjdGVkIHRvIG9wZW4gV2ViVmlldyBvbiBpdAogICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4NTI3CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiZGYzMjRiNTJh
Y2Q5NzhhMjQyYTBmOTZkNjBmMzU4MDc3NmM3Njk2Li4wMjE1MTg5YTNhOGEwYThjM2IxNTMxMjkz
MjI4ZTMyYjdlYzQ5ZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMzI3LDggKzIzMjcsNiBAQAogCQk1MTdBNjNDNjFCNzQz
MTkyMDBFN0RDREMgLyogS2V5ZWRFbmNvZGVyQ0YuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0E2M0MyMUI3NDMxN0UwMEU3RENEQyAvKiBLZXllZEVu
Y29kZXJDRi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTUxN0IyNUE5MUNDODJCMkEwMDYxQzAxMSAvKiBJREJDb25uZWN0aW9uUHJveHkuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3QjI1QTcxQ0M4
MjAzMjAwNjFDMDExIC8qIElEQkNvbm5lY3Rpb25Qcm94eS5jcHAgKi87IH07CiAJCTUxN0IyNUFB
MUNDODJCMkEwMDYxQzAxMSAvKiBJREJDb25uZWN0aW9uUHJveHkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0IyNUE4MUNDODIwMzIwMDYxQzAxMSAv
KiBJREJDb25uZWN0aW9uUHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwotCQk1MTdDODcwQTFGOEVCQjI1MDBFQjgwNzYgLyogU1dDb250ZXh0TWFu
YWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTdDODcwODFGOEVCOUJGMDBFQjgwNzYgLyogU1dDb250ZXh0TWFuYWdlci5jcHAgKi87IH07Ci0J
CTUxN0M4NzBCMUY4RUJCMjUwMEVCODA3NiAvKiBTV0NvbnRleHRNYW5hZ2VyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdDODcwOTFGOEVCOUMwMDBF
QjgwNzYgLyogU1dDb250ZXh0TWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTUxN0M4NzE4MUY4RkQ0RDkwMEVCODA3NiAvKiBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTE3Qzg3MTYxRjhGRDREMzAwRUI4MDc2IC8qIFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YS5jcHAgKi87IH07CiAJCTUxN0RFRUU1MURFOTRBREMwMEI5MTY0NCAvKiBTY3JvbGxp
bmdNb21lbnR1bUNhbGN1bGF0b3JNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTdERUVFMzFERTk0QURDMDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9t
ZW50dW1DYWxjdWxhdG9yTWFjLm1tICovOyB9OwogCQk1MTdERUVFODFERTk0QjA4MDBCOTE2NDQg
LyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdERUVFNzFERTk0QjA4MDBCOTE2NDQgLyogU2Ny
b2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwMjMwLDggKzEwMjI4LDYgQEAKIAkJNTE3QTYzQzIx
Qjc0MzE3RTAwRTdEQ0RDIC8qIEtleWVkRW5jb2RlckNGLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEtleWVkRW5jb2RlckNGLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxN0IyNUE3MUNDODIwMzIwMDYxQzAxMSAvKiBJREJDb25uZWN0aW9uUHJveHkuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSURCQ29ubmVjdGlvblByb3h5LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3QjI1QTgxQ0M4MjAzMjAwNjFDMDEx
IC8qIElEQkNvbm5lY3Rpb25Qcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJREJDb25uZWN0aW9uUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE3
Qzg3MDgxRjhFQjlCRjAwRUI4MDc2IC8qIFNXQ29udGV4dE1hbmFnZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU1dDb250ZXh0TWFuYWdlci5jcHA7IHBhdGggPSB3
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9
IFNPVVJDRV9ST09UOyB9OwotCQk1MTdDODcwOTFGOEVCOUMwMDBFQjgwNzYgLyogU1dDb250ZXh0
TWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTV0NvbnRleHRNYW5h
Z2VyLmg7IHBhdGggPSB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmg7
IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJNTE3Qzg3MTAxRjhFRTcyRTAwRUI4MDc2
IC8qIFNlcnZpY2VXb3JrZXJUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gU2VydmljZVdvcmtlclRocmVhZC5oOyBwYXRoID0gd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlclRocmVhZC5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTUx
N0M4NzExMUY4RUU3MkYwMEVCODA3NiAvKiBTZXJ2aWNlV29ya2VyVGhyZWFkLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNlcnZpY2VXb3JrZXJUaHJlYWQuY3BwOyBw
YXRoID0gd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHA7IHNv
dXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJNTE3Qzg3MTYxRjhGRDREMzAwRUI4MDc2IC8q
IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTkwODksOCArMTkwODUsNiBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJ
NTE3Qzg3MTExRjhFRTcyRjAwRUI4MDc2IC8qIFNlcnZpY2VXb3JrZXJUaHJlYWQuY3BwICovLAog
CQkJCTUxN0M4NzEwMUY4RUU3MkUwMEVCODA3NiAvKiBTZXJ2aWNlV29ya2VyVGhyZWFkLmggKi8s
Ci0JCQkJNTE3Qzg3MDgxRjhFQjlCRjAwRUI4MDc2IC8qIFNXQ29udGV4dE1hbmFnZXIuY3BwICov
LAotCQkJCTUxN0M4NzA5MUY4RUI5QzAwMEVCODA3NiAvKiBTV0NvbnRleHRNYW5hZ2VyLmggKi8s
CiAJCQkpOwogCQkJcGF0aCA9IGNvbnRleHQ7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpA
QCAtMzA2MzYsNyArMzA2MzAsNiBAQAogCQkJCUIyMjI3QUY2MEQwMEJGMjIwMDcxQjc4MiAvKiBT
Vkdab29tQW5kUGFuLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkU0RUM5ODBEMDBDMjJCMDA0MzI2
NDMgLyogU1ZHWm9vbUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTdBNTMxRDFGNEI1M0Ix
MDBEQ0RDMEEgLyogU1dDbGllbnRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTdD
ODcwQjFGOEVCQjI1MDBFQjgwNzYgLyogU1dDb250ZXh0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTE3QTUyRjAxRjQ3NTM1QjAwRENEQzBBIC8qIFNXU2VydmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MUY2NDU5NzFGNEE2ODZGMDBCNTRERUQgLyogU1dTZXJ2ZXJSZWdpc3RyYXRpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCTUxN0E1MzQ2MUY1MEMxN0YwMERDREMwQSAvKiBTV1NlcnZl
cldvcmtlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDM2Nyw3ICszNDM2MCw2IEBACiAJCQkJQjIy
MjdBRjUwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1pvb21BbmRQYW4uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQjJFNEVDOTcwRDAwQzIyQjAwNDMyNjQzIC8qIFNWR1pvb21FdmVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1MTdBNTMxQzFGNEI1M0IxMDBEQ0RDMEEgLyogU1dDbGllbnRDb25uZWN0
aW9uLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxN0M4NzBBMUY4RUJCMjUwMEVCODA3NiAvKiBT
V0NvbnRleHRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxN0E1MkYxMUY0NzU0RTcw
MERDREMwQSAvKiBTV1NlcnZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUY2NDU5NjFGNEE2
ODZGMDBCNTRERUQgLyogU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTE3QTUzNDUxRjUwQzE3RjAwRENEQzBBIC8qIFNXU2VydmVyV29ya2VyLmNwcCBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5k
ZXggMzJmMTljMzAzZmYwOWMwMzM4MGE0ZjE5MWEyMDRiMDA5YzBiOWY2MS4uOTZkZGQ2MjA4YTY1
OTEyMWI1YWQ4OGQxZTJlMTUyMzIzOWJhNTk3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0yMzAsNiArMjMwLDExIEBAIHB1YmxpYzoKIAogICAg
IEpTQzo6RXhlY1N0YXRlKiBleGVjU3RhdGUoKTsKIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKKyAgICB1aW50NjRfdCBzZWxlY3RlZFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9zZXJ2aWNlV29ya2VySWRlbnRpZmllcjsgfQorICAgIHZvaWQgc2V0U2VsZWN0
ZWRTZXJ2aWNlV29ya2VySWRlbnRpZmllcih1aW50NjRfdCBpZGVudGlmaWVyKSB7IG1fc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgPSBpZGVudGlmaWVyOyB9CisjZW5kaWYKKwogcHJvdGVjdGVkOgog
ICAgIGNsYXNzIEFkZENvbnNvbGVNZXNzYWdlVGFzayA6IHB1YmxpYyBUYXNrIHsKICAgICBwdWJs
aWM6CkBAIC0yOTcsNiArMzAyLDEwIEBAIHByaXZhdGU6CiAjaWYgIUFTU0VSVF9ESVNBQkxFRCB8
fCBFTkFCTEUoU0VDVVJJVFlfQVNTRVJUSU9OUykKICAgICBib29sIG1fYWN0aXZlRE9NT2JqZWN0
UmVtb3ZhbEZvcmJpZGRlbiB7IGZhbHNlIH07CiAjZW5kaWYKKworI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKKyAgICB1aW50NjRfdCBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHsgMCB9Owor
I2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDkwMmM4OWUzOTcz
N2M0MTE0MWUzNWMyY2U0MmU5MjY2OTc0MGMyOWUuLjRiNDhmNTFlYzAxNzVmYzZmMDFlZWI0Y2Ux
YzkxN2JmMjAzZmU4NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0xMDMsNiArMTAzLDExIEBAIERvY3VtZW50VGhyZWFk
YWJsZUxvYWRlcjo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyKERvY3VtZW50JiBkb2N1bWVudCwg
VGhyZWFkYWJsCiB7CiAgICAgcmVsYXhBZG9wdGlvblJlcXVpcmVtZW50KCk7CiAKKyNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCisgICAgaWYgKG1fb3B0aW9ucy5zZXJ2aWNlV29ya2Vyc01vZGUg
PT0gU2VydmljZVdvcmtlcnNNb2RlOjpBbGwgJiYgIW1fb3B0aW9ucy5zZXJ2aWNlV29ya2VySWRl
bnRpZmllcikKKyAgICAgICAgbV9vcHRpb25zLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gZG9j
dW1lbnQuc2VsZWN0ZWRTZXJ2aWNlV29ya2VySWRlbnRpZmllcigpOworI2VuZGlmCisKICAgICAv
LyBTZXR0aW5nIGEgcmVmZXJyZXIgaGVhZGVyIGlzIG9ubHkgc3VwcG9ydGVkIGluIHRoZSBhc3lu
YyBjb2RlIHBhdGguCiAgICAgQVNTRVJUKG1fYXN5bmMgfHwgbV9yZWZlcnJlci5pc0VtcHR5KCkp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRmV0Y2hPcHRpb25zLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRmV0Y2hPcHRpb25zLmgKaW5kZXggYTQwNDIwMzA3NzQ0MDQy
ZjFhYzI3NjJkNjMyMzY5ZjllYWNiNTEyNC4uNzNiOTYyNGM4NjA5MTZkZWI5OTM3NzRjYWY4Mjhm
OTc0ZjdkMjE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZldGNoT3B0aW9u
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GZXRjaE9wdGlvbnMuaApAQCAtNjksNiAr
NjksMjEgQEAgaW5saW5lIEZldGNoT3B0aW9uczo6RmV0Y2hPcHRpb25zKERlc3RpbmF0aW9uIGRl
c3RpbmF0aW9uLCBNb2RlIG1vZGUsIENyZWRlbnRpYWwKIHsKIH0KIAoraW5saW5lIGJvb2wgaXNQ
b3RlbnRpYWxOYXZpZ2F0aW9uT3JTdWJyZXNvdXJjZVJlcXVlc3QoRmV0Y2hPcHRpb25zOjpEZXN0
aW5hdGlvbiBkZXN0aW5hdGlvbikKK3sKKyAgICByZXR1cm4gZGVzdGluYXRpb24gPT0gRmV0Y2hP
cHRpb25zOjpEZXN0aW5hdGlvbjo6T2JqZWN0CisgICAgICAgIHx8IGRlc3RpbmF0aW9uID09IEZl
dGNoT3B0aW9uczo6RGVzdGluYXRpb246OkVtYmVkOworfQorCitpbmxpbmUgYm9vbCBpc05vblN1
YnJlc291cmNlUmVxdWVzdChGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uIGRlc3RpbmF0aW9uKQor
eworICAgIHJldHVybiBkZXN0aW5hdGlvbiA9PSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpE
b2N1bWVudAorICAgICAgICB8fCBkZXN0aW5hdGlvbiA9PSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0
aW9uOjpSZXBvcnQKKyAgICAgICAgfHwgZGVzdGluYXRpb24gPT0gRmV0Y2hPcHRpb25zOjpEZXN0
aW5hdGlvbjo6U2VydmljZXdvcmtlcgorICAgICAgICB8fCBkZXN0aW5hdGlvbiA9PSBGZXRjaE9w
dGlvbnM6OkRlc3RpbmF0aW9uOjpTaGFyZWR3b3JrZXIKKyAgICAgICAgfHwgZGVzdGluYXRpb24g
PT0gRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6V29ya2VyOworfQorCiB9CiAKIG5hbWVzcGFj
ZSBXVEYgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
T3B0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5o
CmluZGV4IGQyYTkyYzNkM2RjZjgyZTU4ZjIyZDAzNWNiYzdmZDBiMjUwNTZmM2UuLjVjNWEwZDQy
N2I0ZTk5NjBiYjdjNWM3ZDFmMWZhY2U1OWE0NDU0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgKQEAgLTkyLDYgKzkyLDExIEBAIGVudW0gY2xh
c3MgSW5pdGlhdG9yQ29udGV4dCB7CiAgICAgV29ya2VyLAogfTsKIAorZW51bSBjbGFzcyBTZXJ2
aWNlV29ya2Vyc01vZGUgeworICAgIEFsbCwKKyAgICBOb25lLAorfTsKKwogc3RydWN0IFJlc291
cmNlTG9hZGVyT3B0aW9ucyA6IHB1YmxpYyBGZXRjaE9wdGlvbnMgewogICAgIFJlc291cmNlTG9h
ZGVyT3B0aW9ucygpIHsgfQogCkBAIC0xMjQsNiArMTI5LDggQEAgc3RydWN0IFJlc291cmNlTG9h
ZGVyT3B0aW9ucyA6IHB1YmxpYyBGZXRjaE9wdGlvbnMgewogICAgIENhY2hpbmdQb2xpY3kgY2Fj
aGluZ1BvbGljeSB7IENhY2hpbmdQb2xpY3k6OkFsbG93Q2FjaGluZyB9OwogICAgIFNhbWVPcmln
aW5EYXRhVVJMRmxhZyBzYW1lT3JpZ2luRGF0YVVSTEZsYWcgeyBTYW1lT3JpZ2luRGF0YVVSTEZs
YWc6OlVuc2V0IH07CiAgICAgSW5pdGlhdG9yQ29udGV4dCBpbml0aWF0b3JDb250ZXh0IHsgSW5p
dGlhdG9yQ29udGV4dDo6RG9jdW1lbnQgfTsKKyAgICBTZXJ2aWNlV29ya2Vyc01vZGUgc2Vydmlj
ZVdvcmtlcnNNb2RlIHsgU2VydmljZVdvcmtlcnNNb2RlOjpBbGwgfTsKKyAgICB1aW50NjRfdCBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciB7IDAgfTsKIAogICAgIENsaWVudENyZWRlbnRpYWxQb2xp
Y3kgY2xpZW50Q3JlZGVudGlhbFBvbGljeSB7IENsaWVudENyZWRlbnRpYWxQb2xpY3k6OkNhbm5v
dEFza0NsaWVudEZvckNyZWRlbnRpYWxzIH07CiAgICAgdW5zaWduZWQgbWF4UmVkaXJlY3RDb3Vu
dCB7IDIwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFk
YWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxv
YWRlci5jcHAKaW5kZXggMzNiYjEyZTgxYjhhMWM0OWEwYTg2NzkxYjk1ZGM4YTI1ZTY1YzNlOC4u
ZTI3YWFhOGRiNGM0YjZhMTM2NWYwOGNlYWFiNDJlMzg4ZjdhZWEwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtNTUsNyArNTUs
NyBAQCBzdGF0aWMgY29uc3QgY2hhciBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5TW9kZVtdID0g
ImxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHlNbwogV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6V29y
a2VyVGhyZWFkYWJsZUxvYWRlcihXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2xvYmFsU2NvcGUs
IFRocmVhZGFibGVMb2FkZXJDbGllbnQmIGNsaWVudCwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSwg
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMm
IG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpCiAgICAgOiBtX3dvcmtlckdsb2JhbFNj
b3BlKHdvcmtlckdsb2JhbFNjb3BlKQogICAgICwgbV93b3JrZXJDbGllbnRXcmFwcGVyKFRocmVh
ZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyOjpjcmVhdGUoY2xpZW50LCBvcHRpb25zLmluaXRpYXRv
cikpCi0gICAgLCBtX2JyaWRnZSgqbmV3IE1haW5UaHJlYWRCcmlkZ2UobV93b3JrZXJDbGllbnRX
cmFwcGVyLmdldCgpLCB3b3JrZXJHbG9iYWxTY29wZS50aHJlYWQoKS53b3JrZXJMb2FkZXJQcm94
eSgpLCB0YXNrTW9kZSwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucywgcmVmZXJyZXIuaXNFbXB0
eSgpID8gd29ya2VyR2xvYmFsU2NvcGUudXJsKCkuc3RyaXBwZWRGb3JVc2VBc1JlZmVycmVyKCkg
OiByZWZlcnJlciwgd29ya2VyR2xvYmFsU2NvcGUuc2VjdXJpdHlPcmlnaW4oKSwgd29ya2VyR2xv
YmFsU2NvcGUuY29udGVudFNlY3VyaXR5UG9saWN5KCkpKQorICAgICwgbV9icmlkZ2UoKm5ldyBN
YWluVGhyZWFkQnJpZGdlKG1fd29ya2VyQ2xpZW50V3JhcHBlci5nZXQoKSwgd29ya2VyR2xvYmFs
U2NvcGUudGhyZWFkKCkud29ya2VyTG9hZGVyUHJveHkoKSwgdGFza01vZGUsIFdURk1vdmUocmVx
dWVzdCksIG9wdGlvbnMsIHJlZmVycmVyLmlzRW1wdHkoKSA/IHdvcmtlckdsb2JhbFNjb3BlLnVy
bCgpLnN0cmlwcGVkRm9yVXNlQXNSZWZlcnJlcigpIDogcmVmZXJyZXIsIHdvcmtlckdsb2JhbFNj
b3BlKSkKIHsKIH0KIApAQCAtMTAxLDEyICsxMDEsMTUgQEAgTG9hZGVyVGFza09wdGlvbnM6Okxv
YWRlclRhc2tPcHRpb25zKGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBj
b24KIH0KIAogV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6TWFpblRo
cmVhZEJyaWRnZShUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlciYgd29ya2VyQ2xpZW50V3Jh
cHBlciwgV29ya2VyTG9hZGVyUHJveHkmIGxvYWRlclByb3h5LCBjb25zdCBTdHJpbmcmIHRhc2tN
b2RlLAotICAgIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFRocmVhZGFibGVMb2Fk
ZXJPcHRpb25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIG91dGdvaW5nUmVmZXJyZXIsCi0gICAg
Y29uc3QgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBDb250ZW50U2VjdXJp
dHlQb2xpY3kqIGNvbnRlbnRTZWN1cml0eVBvbGljeSkKKyAgICBSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgU3Ry
aW5nJiBvdXRnb2luZ1JlZmVycmVyLCBXb3JrZXJHbG9iYWxTY29wZSYgZ2xvYmFsU2NvcGUpCiAg
ICAgOiBtX3dvcmtlckNsaWVudFdyYXBwZXIoJndvcmtlckNsaWVudFdyYXBwZXIpCiAgICAgLCBt
X2xvYWRlclByb3h5KGxvYWRlclByb3h5KQogICAgICwgbV90YXNrTW9kZSh0YXNrTW9kZS5pc29s
YXRlZENvcHkoKSkKIHsKKworICAgIGF1dG8qIHNlY3VyaXR5T3JpZ2luID0gZ2xvYmFsU2NvcGUu
c2VjdXJpdHlPcmlnaW4oKTsKKyAgICBhdXRvKiBjb250ZW50U2VjdXJpdHlQb2xpY3kgPSBnbG9i
YWxTY29wZS5jb250ZW50U2VjdXJpdHlQb2xpY3koKTsKKwogICAgIEFTU0VSVChzZWN1cml0eU9y
aWdpbik7CiAgICAgQVNTRVJUKGNvbnRlbnRTZWN1cml0eVBvbGljeSk7CiAKQEAgLTEyMSw2ICsx
MjQsMTEgQEAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6TWFpblRo
cmVhZEJyaWRnZShUaHJlYWRhYmxlTG9hZGVyQ2xpZW4KICAgICBBU1NFUlQob3B0aW9uc0NvcHkt
Pm9wdGlvbnMuaW5pdGlhdG9yQ29udGV4dCA9PSBJbml0aWF0b3JDb250ZXh0OjpEb2N1bWVudCk7
CiAgICAgb3B0aW9uc0NvcHktPm9wdGlvbnMuaW5pdGlhdG9yQ29udGV4dCA9IEluaXRpYXRvckNv
bnRleHQ6OldvcmtlcjsKIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBvcHRpb25z
Q29weS0+b3B0aW9ucy5zZXJ2aWNlV29ya2Vyc01vZGUgPSBnbG9iYWxTY29wZS5pc1NlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZSgpID8gU2VydmljZVdvcmtlcnNNb2RlOjpOb25lIDogU2VydmljZVdv
cmtlcnNNb2RlOjpBbGw7CisgICAgb3B0aW9uc0NvcHktPm9wdGlvbnMuc2VydmljZVdvcmtlcklk
ZW50aWZpZXIgPSBnbG9iYWxTY29wZS5zZWxlY3RlZFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCk7
CisjZW5kaWYKKwogICAgIC8vIENhbiB3ZSBiZW5lZml0IGZyb20gcmVxdWVzdCBiZWluZyBhbiBy
LXZhbHVlIHRvIGNyZWF0ZSBtb3JlIGVmZmljaWVudGx5IGl0cyBpc29sYXRlZCBjb3B5PwogICAg
IG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihbdGhpcywgcmVxdWVzdCA9IHJlcXVlc3Qu
aXNvbGF0ZWRDb3B5KCksIG9wdGlvbnMgPSBXVEZNb3ZlKG9wdGlvbnNDb3B5KSwgY29udGVudFNl
Y3VyaXR5UG9saWN5Q29weSA9IFdURk1vdmUoY29udGVudFNlY3VyaXR5UG9saWN5Q29weSldKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewogICAgICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtl
clRocmVhZGFibGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRh
YmxlTG9hZGVyLmgKaW5kZXggOTdlYzJkNDFmOWQ5ZTAxZGNiYjcxNzljNjIzZGI3M2FiMWM1YTM1
NC4uMjJhYjE0OWZlZjc0NzM3ZWZiNjRkYjlkY2M3ZjE2MTBkZjUxZmJmNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oCkBAIC04OCw3ICs4OCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY2xhc3MgTWFpblRocmVhZEJyaWRnZSA6
IHB1YmxpYyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50IHsKICAgICAgICAgcHVibGljOgogICAgICAg
ICAgICAgLy8gQWxsIGV4ZWN1dGVkIG9uIHRoZSB3b3JrZXIgY29udGV4dCdzIHRocmVhZC4KLSAg
ICAgICAgICAgIE1haW5UaHJlYWRCcmlkZ2UoVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIm
LCBXb3JrZXJMb2FkZXJQcm94eSYsIGNvbnN0IFN0cmluZyYgdGFza01vZGUsIFJlc291cmNlUmVx
dWVzdCYmLCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYsIGNvbnN0IFN0cmluZyYgb3V0
Z29pbmdSZWZlcnJlciwgY29uc3QgU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBDb250ZW50U2VjdXJp
dHlQb2xpY3kqKTsKKyAgICAgICAgICAgIE1haW5UaHJlYWRCcmlkZ2UoVGhyZWFkYWJsZUxvYWRl
ckNsaWVudFdyYXBwZXImLCBXb3JrZXJMb2FkZXJQcm94eSYsIGNvbnN0IFN0cmluZyYgdGFza01v
ZGUsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYsIGNv
bnN0IFN0cmluZyYgb3V0Z29pbmdSZWZlcnJlciwgV29ya2VyR2xvYmFsU2NvcGUmKTsKICAgICAg
ICAgICAgIHZvaWQgY2FuY2VsKCk7CiAgICAgICAgICAgICB2b2lkIGRlc3Ryb3koKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RC
YXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJh
c2UuaAppbmRleCBiNWU5NDhlYWVlYzFmZDkwZGRiZTY5OGY5NjZmYmM3ZTg1Y2U5Y2RkLi5kYTZh
ZDY1ZjExODIwYTUyZWU1NDEyOGYzNzA3Y2VlMDBmNDE3NDc0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaApAQCAtMTAw
LDcgKzEwMCw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBodHRwQ29u
dGVudFR5cGUoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEhUVFBDb250ZW50
VHlwZShjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGNsZWFySFRUUENvbnRlbnRUeXBlKCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhckhUVFBDb250ZW50VHlwZSgpOwogCiAgICAgYm9v
bCBoYXNIVFRQSGVhZGVyKEhUVFBIZWFkZXJOYW1lKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCmluZGV4
IGFiY2RjZWFkNzc5Y2FjZGI3NGYyZmYyZmI2ZGJhY2JkYjQ5ZWVhM2YuLmVlMzczZGRlZWFhMTUx
YTQwODMzZDIxYmMzNjllYjQ0YzgxZTY2NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKQEAgLTE1Myw3ICsxNTMs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAxMjgwOwogICAgIH0KIAotICAgIHZvaWQgc2V0
VHlwZShUeXBlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFR5cGUoVHlwZSk7CiAgICAg
VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAKICAgICB2b2lkIHNldFJlZGly
ZWN0ZWQoYm9vbCBpc1JlZGlyZWN0ZWQpIHsgbV9pc1JlZGlyZWN0ZWQgPSBpc1JlZGlyZWN0ZWQ7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCmluZGV4IGNmZTM0M2VlZjRhNWFm
NWIyNzBjMThiNjg1MDhmMGY2OGM2YWFiNmMuLjM5NWZkODA0OTk4YzYwYjdjYjUzNzM4OGFlMGZk
NGQwNzhlNGRiMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhy
ZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaApAQCAtNjEs
NyArNjEsNyBAQCBjbGFzcyBXb3JrZXJUaHJlYWQgOiBwdWJsaWMgUmVmQ291bnRlZDxXb3JrZXJU
aHJlYWQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Xb3JrZXJUaHJlYWQoKTsKIAotICAgIGJv
b2wgc3RhcnQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHN0YXJ0KCk7CiAgICAgdm9pZCBz
dG9wKCk7CiAKICAgICBUaHJlYWRJZGVudGlmaWVyIHRocmVhZElEKCkgY29uc3QgeyByZXR1cm4g
bV90aHJlYWQgPyBtX3RocmVhZC0+aWQoKSA6IDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAppbmRleCAy
MThhNjRhZGMxZjcxNDk2NTkxOWUxZTAxZjgwZTZmMTU3YjY0MTQwLi5lODMwYThkYTczZjkwZDdl
ZTIzMjBmZmIwMmFkZTgxY2QxMzFmOTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCkBAIC0xNzksNiAr
MTc5LDkgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JSZXNvbHZlZFdpdGhSZWdp
c3RyYXRpb24oU2VydmljZVdvcmtlckpvYiYgam9iLAogICAgICAgICByZXR1cm47CiAgICAgfQog
CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBwcm9wZXIgc2VsZWN0aW9uIG9mIHNlcnZpY2Ugd29y
a2Vycy4KKyAgICBjb250ZXh0LT5zZXRTZWxlY3RlZFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKGRh
dGEuaWRlbnRpZmllcik7CisKICAgICBhdXRvIHJlZ2lzdHJhdGlvbiA9IFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb246OmNyZWF0ZSgqY29udGV4dCwgV1RGTW92ZShkYXRhKSk7CiAgICAgam9iLnBy
b21pc2UoKS5yZXNvbHZlPElETEludGVyZmFjZTxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uPj4o
cmVnaXN0cmF0aW9uLmdldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDk0ZmU1N2UzMTIxNTc3MWM2YTdiODNmNWZkYmI2NjIzZGQ0MmEw
YmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIlNXQ29udGV4dE1hbmFnZXIuaCIKLQotI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKLQotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlIDxwYWwvU2Vzc2lvbklE
Lmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBQQUw7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotU1dD
b250ZXh0TWFuYWdlciYgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkKLXsKLSAgICBzdGF0
aWMgU1dDb250ZXh0TWFuYWdlciogc2hhcmVkTWFuYWdlciA9IG5ldyBTV0NvbnRleHRNYW5hZ2Vy
OwotICAgIHJldHVybiAqc2hhcmVkTWFuYWdlcjsKLX0KLQotU1dDb250ZXh0TWFuYWdlcjo6U1dD
b250ZXh0TWFuYWdlcigpCi17Ci0KLX0KLQotRXhjZXB0aW9uT3I8dWludDY0X3Q+IFNXQ29udGV4
dE1hbmFnZXI6OnN0YXJ0U2VydmljZVdvcmtlckNvbnRleHQodWludDY0X3Qgc2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSkKLXsK
LSAgICAvLyBGSVhNRTogUHJvdmlkZSBhIHNlbnNpY2FsIHNlc3Npb24gSUQKLQotICAgIGF1dG8g
dGhyZWFkID0gU2VydmljZVdvcmtlclRocmVhZDo6Y3JlYXRlKHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBkYXRhLCBTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7Ci0gICAgYXV0byB0
aHJlYWRJZGVudGlmaWVyID0gdGhyZWFkLT5pZGVudGlmaWVyKCk7Ci0gICAgYXV0byByZXN1bHQg
PSBtX3dvcmtlclRocmVhZE1hcC5hZGQodGhyZWFkSWRlbnRpZmllciwgV1RGTW92ZSh0aHJlYWQp
KTsKLSAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50cnkpOwotCi0gICAgcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZS0+c3RhcnQoKTsKLSAgICAKLSAgICBMT0coU2VydmljZVdvcmtlciwgIkNvbnRleHQg
cHJvY2VzcyBQSUQ6ICVpIHN0YXJ0ZWQgd29ya2VyIHRocmVhZCAlc1xuIiwgZ2V0cGlkKCksIGRh
dGEud29ya2VySUQudXRmOCgpLmRhdGEoKSk7Ci0gICAgCi0gICAgcmV0dXJuIHRocmVhZElkZW50
aWZpZXI7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZTE1ZDdlNjk4MjMyMTQ3MjMwYjQ3NmFmYjgzMWU0OGEwZjIwZTMwNC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw1MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCi0KLSNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgotI2luY2x1ZGUgIlNlcnZp
Y2VXb3JrZXJUaHJlYWQuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLXN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE7Ci0KLWNsYXNzIFNX
Q29udGV4dE1hbmFnZXIgewotcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTV0Nv
bnRleHRNYW5hZ2VyJiBzaW5nbGV0b24oKTsKLQotICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlv
bk9yPHVpbnQ2NF90PiBzdGFydFNlcnZpY2VXb3JrZXJDb250ZXh0KHVpbnQ2NF90IHNlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmKTsKLQot
cHJpdmF0ZToKLSAgICBTV0NvbnRleHRNYW5hZ2VyKCk7Ci0gICAgCi0gICAgSGFzaE1hcDx1aW50
NjRfdCwgUmVmUHRyPFNlcnZpY2VXb3JrZXJUaHJlYWQ+PiBtX3dvcmtlclRocmVhZE1hcDsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaAppbmRleCAyMmEwN2I4OWY1OWNlNTgwNDJhYjA1
Mjc5YTlhYjA5OGU4YTQ1OTYwLi44ZGJhNDg5ODg5M2I3MDA0NGI1ZTdmNjJmNzI2YTJkZjBjZGY5
NTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oCkBAIC01Miw3ICs1Miw3IEBAIHByb3RlY3Rl
ZDoKICAgICB2b2lkIHJ1bkV2ZW50TG9vcCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIFNl
cnZpY2VXb3JrZXJUaHJlYWQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNv
bnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYsIFBBTDo6U2Vzc2lvbklEKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBTZXJ2aWNlV29ya2VyVGhyZWFkKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmLCBQQUw6OlNlc3Npb25J
RCk7CiAKICAgICB1aW50NjRfdCBtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyOwogICAgIFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YSBtX2RhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAppbmRleCBkNDFl
ZGJmMTE2MDY2OWUxM2U4ZDgzOTNhNjU3MTU3NmUzMmZmNmIzLi41ZmEzNjFlNTEwZGE2YjA4YmU0
MzkwZjM4MmJkN2RjMmIyODQ4ZTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlz
dHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKQEAgLTY4Myw2ICs2ODMs
NyBAQCBzZXQoV2ViS2l0X01FU1NBR0VTX0lOX0ZJTEVTCiAgICAgV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgogICAgIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5tZXNzYWdlcy5pbgogCisgICAgV2ViUHJvY2Vzcy9TdG9y
YWdlL1NlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5tZXNzYWdlcy5pbgogICAgIFdlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KIAogICAgIFdlYlByb2Nl
c3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLm1lc3NhZ2VzLmluCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggYmE0NGNiYTJjYmJkOGQ2NzliNGRiNDI0NDk1ZGY4
Mzg1MWM1NDhjMy4uMDhiODA5YTIzMDhhOWI3ZTBjMzM2OGViZmJiN2Q1MDJhZjhlODc0NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9X
ZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTI1LDYgKzEyNSw3IEBAIE1FU1NBR0VfUkVD
RUlWRVJTID0gXAogICAgIFJlbW90ZVdlYkluc3BlY3RvclByb3h5IFwKICAgICBSZW1vdGVXZWJJ
bnNwZWN0b3JVSSBcCiAgICAgU2VjSXRlbVNoaW1Qcm94eSBcCisgICAgU2VydmljZVdvcmtlckNs
aWVudEZldGNoIFwKICAgICBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyIFwKICAgICBTdG9y
YWdlQXJlYU1hcCBcCiAgICAgU3RvcmFnZU1hbmFnZXIgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uLmNwcAppbmRleCA2OTk1OGZmYjBlODhmM2ZkOTAwNDAyZGY0NTA3M2U1YzBk
MzI5NDkxLi4xMGNjYmE1MmYzOTE4N2I2YzFiYjcwNzExMGYwOTkzYWRhYjFmNzkyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAj
aW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRl
ICJTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VQ
cm9jZXNzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgpAQCAtOTMsNiArOTQsMzEg
QEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnN0YXJ0U2VydmljZVdvcmtlckNvbnRleHQo
Y29uc3QgU2VydmljZVdvcmtlckNvbnRleHQKICAgICBtX3BlbmRpbmdDb250ZXh0RGF0YXMuYXBw
ZW5kKGRhdGEpOwogfQogCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaCh1
aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0
aW9ucykKK3sKKyAgICBzZW5kVG9Db250ZXh0UHJvY2VzcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6
U3RhcnRGZXRjaEluU2VydmljZVdvcmtlcihpZGVudGlmaWVyKCksIGZldGNoSWRlbnRpZmllciwg
c2VydmljZVdvcmtlcklkZW50aWZpZXIsIHJlcXVlc3QsIG9wdGlvbnMpKTsKK30KKwordm9pZCBX
ZWJTV1NlcnZlckNvbm5lY3Rpb246OmRpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKHVpbnQ2NF90IGZl
dGNoSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit7CisgICAg
bV9jb250ZW50Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZl
dGNoOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSB9LCBmZXRjaElkZW50aWZpZXIpOwor
fQorCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUZldGNoRGF0YSh1aW50
NjRfdCBmZXRjaElkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50
NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKK3sKKyAgICBtX2NvbnRlbnRDb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZFJlY2VpdmVEYXRhIHsgZGF0
YSwgZW5jb2RlZERhdGFMZW5ndGggfSwgZmV0Y2hJZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJT
V1NlcnZlckNvbm5lY3Rpb246OmRpZEZpbmlzaEZldGNoKHVpbnQ2NF90IGZldGNoSWRlbnRpZmll
cikKK3sKKyAgICBtX2NvbnRlbnRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29y
a2VyQ2xpZW50RmV0Y2g6OkRpZEZpbmlzaCB7IH0sIGZldGNoSWRlbnRpZmllcik7Cit9CisKK3Zv
aWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpkaWRGYWlsRmV0Y2godWludDY0X3QgZmV0Y2hJZGVu
dGlmaWVyKQoreworICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkRmFpbCB7IH0sIGZldGNoSWRlbnRpZmllcik7Cit9CisK
IHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzZW5kVG9D
b250ZXh0UHJvY2VzcyhVJiYgbWVzc2FnZSkKIHsKICAgICBpZiAoIW1fY29udGV4dENvbm5lY3Rp
b24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKaW5kZXggZGNjNDk2MTY1MmEz
ZDcxYjZmOTg0NjQzMWQ3Mzc2YjhmYzU1NTIyMy4uYWUzYTI1ZDNjZWY2MDU2MWE1MjljMGRmOWI1
OTc0ODAwODM1MDgxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaApAQCAt
NTEsMTUgKzUxLDIyIEBAIHB1YmxpYzoKIAogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgp
IGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9CiAKKyAgICB2b2lkIGRpZFJlY2VpdmVGZXRj
aFJlc3BvbnNlKHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYpOworICAgIHZvaWQgZGlkUmVjZWl2ZUZldGNoRGF0YSh1aW50NjRfdCBmZXRj
aElkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGludDY0X3QgZW5jb2RlZERh
dGFMZW5ndGgpOworICAgIHZvaWQgZGlkRmluaXNoRmV0Y2godWludDY0X3QgZmV0Y2hJZGVudGlm
aWVyKTsKKyAgICB2b2lkIGRpZEZhaWxGZXRjaCh1aW50NjRfdCBmZXRjaElkZW50aWZpZXIpOwor
CiBwcml2YXRlOgogICAgIC8vIEltcGxlbWVudCBTV1NlcnZlcjo6Q29ubmVjdGlvbiAoTWVzc2Fn
ZXMgdG8gdGhlIGNsaWVudCBXZWJQcm9jZXNzKQogICAgIHZvaWQgcmVqZWN0Sm9iSW5DbGllbnQo
dWludDY0X3Qgam9iSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYpIGZp
bmFsOwogICAgIHZvaWQgcmVzb2x2ZUpvYkluQ2xpZW50KHVpbnQ2NF90IGpvYklkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJikgZmluYWw7CiAg
ICAgdm9pZCBzdGFydFNjcmlwdEZldGNoSW5DbGllbnQodWludDY0X3Qgam9iSWRlbnRpZmllcikg
ZmluYWw7CiAKKyAgICB2b2lkIHN0YXJ0RmV0Y2godWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCB1
aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJik7CisKICAgICAvLyBNZXNzYWdl
cyB0byB0aGUgU1cgY29udGV4dCBXZWJQcm9jZXNzCiAgICAgdm9pZCBzdGFydFNlcnZpY2VXb3Jr
ZXJDb250ZXh0KGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYpIGZpbmFs
OwotICAgIAorCiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigp
IGZpbmFsIHsgcmV0dXJuIG1fY29udGVudENvbm5lY3Rpb24ucHRyKCk7IH0KICAgICB1aW50NjRf
dCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGZpbmFsIHsgcmV0dXJuIGlkZW50aWZpZXIo
KTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdl
cy5pbgppbmRleCBlNGNmYjk2MDVhNmNlNTAxOTIxNmYyMWNmNmQ2OTE3YmViMzAyZGMwLi5mM2Ri
M2I5MGRhZTkzYTkyNmRmNWJiZGVhMWEzNzc5NTM0NjY0OTEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTI2LDYgKzI2LDggQEAg
bWVzc2FnZXMgLT4gV2ViU1dTZXJ2ZXJDb25uZWN0aW9uIHsKICAgICAjIFdoZW4gcG9zc2libGUs
IHRoZXNlIG1lc3NhZ2VzIGNhbiBiZSBpbXBsZW1lbnRlZCBkaXJlY3RseSBieSBXZWJDb3JlOjpT
V0NsaWVudENvbm5lY3Rpb24KICAgICBTY2hlZHVsZUpvYkluU2VydmVyKHN0cnVjdCBXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySm9iRGF0YSBqb2JEYXRhKQogICAgIEZpbmlzaEZldGNoaW5nU2NyaXB0
SW5TZXJ2ZXIoc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCByZXN1bHQp
CisKKyAgICBTdGFydEZldGNoKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgc3RydWN0
IFdlYkNvcmU6OkZldGNoT3B0aW9ucyBvcHRpb25zKQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9T
dG9yYWdlUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQ
cm9jZXNzLmNwcAppbmRleCAyOGIyMmMyZGRlNGI2NzdmNThmOWRhNTRkYjk1OGViYzM3ZTNkMGUz
Li4yYzk3YWNjYzljN2VjMzY0MWRlMmM1Njc0ZmRiNzU0MWZjYzQ3ZWY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcApAQCAtNDA1LDYgKzQw
NSwzMCBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpzZXJ2aWNlV29ya2VyQ29udGV4dFN0YXJ0ZWQo
dWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aQogICAgICAgICBjb25uZWN0aW9uLT5zY3Jp
cHRDb250ZXh0U3RhcnRlZChyZWdpc3RyYXRpb25LZXksIGlkZW50aWZpZXIsIHdvcmtlcklEKTsK
IH0KIAordm9pZCBTdG9yYWdlUHJvY2Vzczo6ZGlkRmFpbEZldGNoKHVpbnQ2NF90IHNlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIpCit7CisgICAgaWYg
KGF1dG8qIGNvbm5lY3Rpb24gPSBtX3N3U2VydmVyQ29ubmVjdGlvbnMuZ2V0KHNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgY29ubmVjdGlvbi0+ZGlkRmFpbEZldGNoKGZldGNo
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgU3RvcmFnZVByb2Nlc3M6OmRpZFJlY2VpdmVGZXRjaFJl
c3BvbnNlKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRj
aElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQor
eworICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gbV9zd1NlcnZlckNvbm5lY3Rpb25zLmdldChz
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIGNvbm5lY3Rpb24tPmRpZFJlY2Vp
dmVGZXRjaFJlc3BvbnNlKGZldGNoSWRlbnRpZmllciwgcmVzcG9uc2UpOworfQorCit2b2lkIFN0
b3JhZ2VQcm9jZXNzOjpkaWRSZWNlaXZlRmV0Y2hEYXRhKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKK3sKKyAgICBpZiAoYXV0
byogY29ubmVjdGlvbiA9IG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5nZXQoc2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIpKQorICAgICAgICBjb25uZWN0aW9uLT5kaWRSZWNlaXZlRmV0Y2hEYXRhKGZl
dGNoSWRlbnRpZmllciwgZGF0YSwgZW5jb2RlZERhdGFMZW5ndGgpOworfQorCit2b2lkIFN0b3Jh
Z2VQcm9jZXNzOjpkaWRGaW5pc2hGZXRjaCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvKiBjb25uZWN0
aW9uID0gbV9zd1NlcnZlckNvbm5lY3Rpb25zLmdldChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
cikpCisgICAgICAgIGNvbm5lY3Rpb24tPmRpZEZpbmlzaEZldGNoKGZldGNoSWRlbnRpZmllcik7
Cit9CisKIHZvaWQgU3RvcmFnZVByb2Nlc3M6OnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKFdl
YlNXU2VydmVyQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHsKICAgICBBU1NFUlQoIW1fc3dTZXJ2
ZXJDb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9uLmlkZW50aWZpZXIoKSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oIGIvU291
cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCmluZGV4IGQ0Y2U1MTE3
MTk3ZTVjMGFkNGJjZTkwMjQ3M2JiZGY3ZGVlYTlkOGYuLmNmZDRiYzFjNDAwYmY4ZTc2MTJhODIx
MmE1ZWQ2ZWY5ZWM1NWVjMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nl
c3MvU3RvcmFnZVByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0
b3JhZ2VQcm9jZXNzLmgKQEAgLTExOSw2ICsxMTksMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRp
ZEdldFdvcmtlckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBJUEM6OkF0dGFjaG1lbnQm
IGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllcik7CiAgICAgdm9pZCBzZXJ2aWNlV29ya2VyQ29u
dGV4dEZhaWxlZFRvU3RhcnQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBjb25zdCBTdHJpbmcm
IHdvcmtlcklELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgIHZvaWQgc2VydmljZVdvcmtl
ckNvbnRleHRTdGFydGVkKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25z
dCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgdWludDY0X3QgaWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiB3b3JrZXJJRCk7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVGZXRj
aFJlc3BvbnNlKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBm
ZXRjaElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICB2
b2lkIGRpZFJlY2VpdmVGZXRjaERhdGEodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwg
aW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRGaW5pc2hGZXRjaCh1aW50
NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVy
KTsKKyAgICB2b2lkIGRpZEZhaWxGZXRjaCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyKTsKICNlbmRpZgogI2lmIEVOQUJMRShJTkRF
WEVEX0RBVEFCQVNFKQogICAgIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IGlu
ZGV4ZWREYXRhYmFzZU9yaWdpbnMoY29uc3QgU3RyaW5nJiBwYXRoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLm1lc3NhZ2VzLmluCmlu
ZGV4IGVlNjI4ZDUzNzdjYjU2ZDI2NTAxOGNlZmQzYTIxMDgwNWU5YjQyZjIuLjIwNjRkNjliZWRh
NzdkZmU3N2NhNmNhNTk3M2Y1MzhiMGY4NDJiNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMzcsNyAr
MzcsMTMgQEAgbWVzc2FnZXMgLT4gU3RvcmFnZVByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogCiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIERpZEdldFdvcmtlckNvbnRleHRQcm9jZXNz
Q29ubmVjdGlvbihJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbkhhbmRsZSkKKwogICAgIFNlcnZp
Y2VXb3JrZXJDb250ZXh0RmFpbGVkVG9TdGFydCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgcmVn
aXN0cmF0aW9uS2V5LCBTdHJpbmcgd29ya2VySUQsIFN0cmluZyBtZXNzYWdlKQogICAgIFNlcnZp
Y2VXb3JrZXJDb250ZXh0U3RhcnRlZCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciwgc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgcmVnaXN0cmF0
aW9uS2V5LCB1aW50NjRfdCBpZGVudGlmaWVyLCBTdHJpbmcgd29ya2VySUQpCisKKyAgICBEaWRG
YWlsRmV0Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZl
dGNoSWRlbnRpZmllcikKKyAgICBEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSh1aW50NjRfdCBzZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKQorICAgIERpZFJlY2VpdmVGZXRjaERhdGEodWlu
dDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmll
ciwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCisg
ICAgRGlkRmluaXNoRmV0Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVp
bnQ2NF90IGZldGNoSWRlbnRpZmllcikKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOGI4Njk1MGMxODExNmY2MDFjOThk
MWM4NjY1NTYyYjQ2MjRhYjIyMi4uYTFjYjdjYzJjYzFkZmExYjc3MzNhY2U5Y2I3NTRiODdjMjI2
ZDE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC04OTAsNiArODkwLDkgQEAKIAkJNDEzMDc1QjIxREU4NUY1ODAwMzlFQzY5IC8qIExp
YldlYlJUQ1NvY2tldEZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQxMzA3NUE2MURFODVFRTcwMDM5RUM2OSAvKiBMaWJXZWJSVENTb2NrZXRG
YWN0b3J5LmggKi87IH07CiAJCTQxMzA3NUIzMURFODVGNTgwMDM5RUM2OSAvKiBMaWJXZWJSVENQ
cm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTMwNzVBNzFERTg1RUU3MDAzOUVDNjkgLyogTGliV2ViUlRDUHJvdmlkZXIuY3BwICovOyB9
OwogCQk0MTMwNzVCNDFERTg1RjU4MDAzOUVDNjkgLyogTGliV2ViUlRDUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzA3NUE4MURFODVF
RTcwMDM5RUM2OSAvKiBMaWJXZWJSVENQcm92aWRlci5oICovOyB9OworCQk0MTMxRjNEMTFGOTZC
Q0NDMDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzFGM0QwMUY5NkJDQzgwMDU5OTk1
QSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guY3BwICovOyB9OworCQk0MTMxRjNENDFGOTZF
OTM1MDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxMzFGM0QzMUY5NkU5MzEwMDU5
OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwICovOyB9OworCQk0MTMxRjNE
NTFGOTZFOTM1MDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTMxRjNEMjFGOTZFOTMw
MDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmggKi87IH07CiAJCTQxMzVG
QkQxMUY0RkI4MDkwMDc0QzQ3QiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzNUZCQ0YxRjRGQjdG
MjAwNzRDNDdCIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAgKi87IH07CiAJCTQxODk3
RUNGMUY0MTVENjIwMDE2RkE0MiAvKiBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODk3RUNFMUY0MTVE
NUMwMDE2RkE0MiAvKiBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcCAqLzsgfTsKIAkJNDE4
OTdFRDAxRjQxNUQ2NTAwMTZGQTQyIC8qIFdlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODk3RUNDMUY0MTVE
NUMwMDE2RkE0MiAvKiBXZWJDYWNoZVN0b3JhZ2VQcm92aWRlci5jcHAgKi87IH07CkBAIC0xMDI5
LDcgKzEwMzIsOSBAQAogCQk1MTc5NTU2QTE2Mjg3NkYzMDBGQTQzQjYgLyogTmV0d29ya1Byb2Nl
c3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEND
N0UwMTYxMzhFMjkwMEQwM0VEMyAvKiBOZXR3b3JrUHJvY2Vzcy5oICovOyB9OwogCQk1MTc5NTU2
RDE2Mjg3N0IxMDBGQTQzQjYgLyogTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBDQzdFQTE2MTM4RTcyMDBEMDNF
RDMgLyogTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgKi87IH07CiAJCTUxNzk1NTZFMTYyODc3QjMw
MEZBNDNCNiAvKiBOZXR3b3JrUHJvY2Vzc1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBDQzdFQjE2MTM4RTcyMDBEMDNFRDMgLyogTmV0d29y
a1Byb2Nlc3NQcm94eS5oICovOyB9OworCQk2MTdBNTJEODFGNDNBOURBMDBEQ0RDMEEgLyogU2Vy
dmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYxN0E1MkQ3MUY0M0E5QjYwMERDREMwQSAv
KiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAq
LzsgfTsKIAkJNTE3QTUyRDgxRjQzQTlEQTAwRENEQzBBIC8qIFdlYlNXU2VydmVyQ29ubmVjdGlv
bk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTdBNTJENzFGNDNBOUI2MDBEQ0RDMEEgLyogV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJNjE3QTUyRDkxRjQzQTlEQTAwRENEQzBB
IC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MTdBNTJENjFGNDNBOUI2MDBEQ0RDMEEgLyog
U2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZXMuaCAqLzsgfTsKIAkJNTE3QTUyRDkxRjQz
QTlEQTAwRENEQzBBIC8qIFdlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdBNTJENjFGNDNBOUI2MDBE
Q0RDMEEgLyogV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCAqLzsgfTsKIAkJNTE3QTUz
MDQxRjQ3OTNDNjAwRENEQzBBIC8qIFdlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdBNTMwMzFGNDc5M0IyMDBE
Q0RDMEEgLyogV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcCAqLzsgfTsKIAkJNTE3QTUzMDUxRjQ3
OTNDNjAwRENEQzBBIC8qIFdlYlNXQ2xpZW50Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3QTUzMDIxRjQ3OTNCMjAwRENEQzBBIC8q
IFdlYlNXQ2xpZW50Q29ubmVjdGlvbi5oICovOyB9OwpAQCAtMzE3OCw2ICszMTgzLDExIEBACiAJ
CTQxMzA3NUE2MURFODVFRTcwMDM5RUM2OSAvKiBMaWJXZWJSVENTb2NrZXRGYWN0b3J5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJUQ1NvY2tldEZhY3RvcnkuaDsg
cGF0aCA9IE5ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldEZhY3RvcnkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEzMDc1QTcxREU4NUVFNzAwMzlFQzY5IC8qIExpYldlYlJU
Q1Byb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbGluZUVuZGluZyA9
IDA7IG5hbWUgPSBMaWJXZWJSVENQcm92aWRlci5jcHA7IHBhdGggPSBOZXR3b3JrL3dlYnJ0Yy9M
aWJXZWJSVENQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VT
cGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcuY3BwOyB9OwogCQk0MTMwNzVBODFE
RTg1RUU3MDAzOUVDNjkgLyogTGliV2ViUlRDUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBsaW5lRW5kaW5nID0gMDsgbmFtZSA9IExpYldlYlJUQ1Byb3ZpZGVyLmg7IHBhdGgg
PSBOZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLm9iamNw
cDsgfTsKKwkJNDEzMUYzQ0UxRjk2QTQ5NTAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRG
ZXRjaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ2xp
ZW50RmV0Y2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEzMUYzQ0YxRjk2QTkz
NjAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5tZXNzYWdlcy5pbiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gubWVzc2FnZXMuaW47IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxMzFGM0QwMUY5NkJDQzgwMDU5OTk1QSAvKiBT
ZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU2VydmljZVdvcmtlckNsaWVudEZldGNoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDEzMUYzRDIxRjk2RTkzMDAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDb250
ZXh0TWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29y
a2VyQ29udGV4dE1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEzMUYz
RDMxRjk2RTkzMTAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ29udGV4dE1h
bmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTM1RkJDRjFGNEZCN0Yy
MDA3NEM0N0IgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMzVGQkQwMUY0RkI3RjIwMDc0QzQ3QiAvKiBDYWNo
ZVN0b3JhZ2VFbmdpbmVDYWNoZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxODk3RUNCMUY0MTVENUMwMDE2RkE0MiAvKiBXZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLm1l
c3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMzM0LDcgKzMzNDQsOSBAQAogCQk1MTZBNEE1
QjEyMEEyQ0NEMDBDMDVCN0YgLyogQVBJRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQVBJRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3QTMz
QjMxMzBCMzA4QzAwRjgwQ0I1IC8qIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0EzM0I0MTMwQjMwOEMwMEY4
MENCNSAvKiBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNjE3QTUyRDYxRjQzQTlCNjAwRENEQzBBIC8qIFNlcnZpY2VXb3JrZXJG
ZXRjaENsaWVudE1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxN0E1MkQ2MUY0M0E5QjYwMERDREMwQSAvKiBXZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNz
YWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTV1NlcnZlckNvbm5l
Y3Rpb25NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2MTdBNTJENzFG
NDNBOUI2MDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZVJlY2VpdmVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJD
bGllbnRGZXRjaE1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxN0E1MkQ3MUY0M0E5QjYwMERDREMwQSAvKiBXZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNz
YWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTE3QTUzMDIxRjQ3OTNCMjAwRENEQzBBIC8qIFdlYlNXQ2xpZW50Q29ubmVj
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTV0NsaWVudENvbm5l
Y3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3QTUzMDMxRjQ3OTNCMjAw
RENEQzBBIC8qIFdlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNjE2OCw2ICs2MTgwLDExIEBACiAJCTUxMThFOTk4MUYyOTUyNTkw
MDNFRjlGNSAvKiBTdG9yYWdlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQk0MTMxRjNEMDFGOTZCQ0M4MDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNsaWVu
dEZldGNoLmNwcCAqLywKKwkJCQk0MTMxRjNDRTFGOTZBNDk1MDA1OTk5NUEgLyogU2VydmljZVdv
cmtlckNsaWVudEZldGNoLmggKi8sCisJCQkJNDEzMUYzQ0YxRjk2QTkzNjAwNTk5OTVBIC8qIFNl
cnZpY2VXb3JrZXJDbGllbnRGZXRjaC5tZXNzYWdlcy5pbiAqLywKKwkJCQk0MTMxRjNEMzFGOTZF
OTMxMDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcCAqLywKKwkJCQk0
MTMxRjNEMjFGOTZFOTMwMDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmgg
Ki8sCiAJCQkJNTFCRUI2MjkxRjNBNUFDRDAwNTAyOUI5IC8qIFdlYlNlcnZpY2VXb3JrZXJQcm92
aWRlci5jcHAgKi8sCiAJCQkJNTFCRUI2MkExRjNBNUFDRDAwNTAyOUI5IC8qIFdlYlNlcnZpY2VX
b3JrZXJQcm92aWRlci5oICovLAogCQkJCTUxN0E1MzAzMUY0NzkzQjIwMERDREMwQSAvKiBXZWJT
V0NsaWVudENvbm5lY3Rpb24uY3BwICovLApAQCAtODAxMCw2ICs4MDI3LDcgQEAKIAkJCQkxQkJC
RTQ5RTE5QjY2QzUzMDA2QjdEODEgLyogUmVtb3RlV2ViSW5zcGVjdG9yVUlNZXNzYWdlUmVjZWl2
ZXIuY3BwICovLAogCQkJCUUxOEU2OTEzMTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQlFMThFNjkxNDE2OUI2NjdCMDA5QjY2NzAg
LyogU2VjSXRlbVNoaW1Qcm94eU1lc3NhZ2VzLmggKi8sCisJCQkJNjE3QTUyRDcxRjQzQTlCNjAw
RENEQzBBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaENvbm5lY3Rpb25NZXNzYWdlUmVjZWl2
ZXIuY3BwICovLAogCQkJCTJERTY5NDNCMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmlj
YXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkyREU2OTQzQzE4QkQy
QTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VzLmggKi8s
CiAJCQkJMUEzMzRERUIxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLywKQEAgLTg3ODEsNiArODc5OSw3IEBACiAJCQkJRTE4RTY5MEMxNjlCNTYz
RjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxOEU2
OTE4MTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5TWVzc2FnZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxNEQ5RjU3MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xs
ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQxMzFGM0Q1MUY5NkU5MzUwMDU5OTk1QSAvKiBTZXJ2
aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRkRFNjVBMTk1
NEE0MkIwMEM0OEZGQSAvKiBTZXNzaW9uU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMDAy
RDQ5MTk2QjM0NUQwMEI5QUQ0NCAvKiBTZXNzaW9uU3RhdGVDb2RpbmcuaCBpbiBIZWFkZXJzICov
LAogCQkJCTc1M0UzRTBFMTg4NzM5ODkwMDE4ODQ5NiAvKiBTZXNzaW9uVHJhY2tlci5oIGluIEhl
YWRlcnMgKi8sCkBAIC0xMDM3MCw2ICsxMDM4OSw5IEBACiAJCQkJRTE4RTY5MEIxNjlCNTYzRjAw
OUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE4RTY5
MTcxNjlCNjY3QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0RDlGNTgxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2Vz
Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovLAorCQkJCTQxMzFGM0QxMUY5NkJDQ0MwMDU5OTk1
QSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2guY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNjE3
QTUyRDgxRjQzQTlEQTAwRENEQzBBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaENvbm5lY3Rp
b25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDEzMUYzRDQxRjk2RTkz
NTAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxQUZERTY1OTE5NTRBNDJCMDBDNDhGRkEgLyogU2Vzc2lvblN0YXRlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTFBMDAyRDQ4MTk2QjM0NUQwMEI5QUQ0NCAvKiBTZXNzaW9uU3RhdGVD
b2RpbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTcyODQ0ODE5NTlGODA0MDAwN0JDRTUgLyog
U2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRl
eCBiODk1ZDBiOGZhMzFjZTAxNjZkMmE0MGRiYzk0OTFmMDgxNDM1YmIxLi40NTA3N2E0MGZhZWUx
OWZjNDNiMjRlNmFkYTc5ZTAzMWE5Nzc1ZjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC00Myw2ICs0Myw3
IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJXZWJTZXJ2
aWNlV29ya2VyUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHku
aCIKICNpbmNsdWRlICJXZWJVUkxTY2hlbWVUYXNrUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0FwcGxpY2F0aW9uQ2FjaGVIb3N0Lmg+CkBAIC0yMTUsNiArMjE2LDI5IEBAIHZvaWQgV2ViTG9h
ZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIs
IENhY2hlZFJlc291CiAgICAgICAgIH0KICAgICB9CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCisgICAgV2ViU2VydmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKS5oYW5kbGVGZXRj
aChyZXNvdXJjZUxvYWRlciwgcmVzb3VyY2UsIHdlYlBhZ2UgPyB3ZWJQYWdlLT5zZXNzaW9uSUQo
KSA6IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCksIFt0cmFja2luZ1BhcmFtZXRl
cnMsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIG1heGltdW1CdWZm
ZXJpbmdUaW1lID0gbWF4aW11bUJ1ZmZlcmluZ1RpbWUocmVzb3VyY2UpLCByZXNvdXJjZUxvYWRl
ciA9IG1ha2VSZWYocmVzb3VyY2VMb2FkZXIpXSAoU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpS
ZXN1bHQgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSBTZXJ2aWNlV29y
a2VyQ2xpZW50RmV0Y2g6OlJlc3VsdDo6VW5oYW5kbGVkKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJMb2FkZXJT
dHJhdGVneTo6c2NoZWR1bGVMb2FkLCB1cmwgJyVzJyB3aWxsIGJlIHNjaGVkdWxlZCB0aHJvdWdo
IFNlcnZpY2VXb3JrZXIgaGFuZGxlIGZldGNoIGFsZ29yaXRobSIsIHJlc291cmNlTG9hZGVyLT51
cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOworICAgICAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS53ZWJMb2FkZXJTdHJhdGVneSgpLnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2Vz
cyhyZXNvdXJjZUxvYWRlci5nZXQoKSwgcmVzb3VyY2VMb2FkZXItPm9yaWdpbmFsUmVxdWVzdCgp
LCBXVEZNb3ZlKHRyYWNraW5nUGFyYW1ldGVycyksIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBT
VG9IVFRQUmVkaXJlY3QsIG1heGltdW1CdWZmZXJpbmdUaW1lKTsKKyAgICB9KTsKKyNlbHNlCisg
ICAgTE9HKE5ldHdvcmtTY2hlZHVsaW5nLCAiKFdlYlByb2Nlc3MpIFdlYkxvYWRlclN0cmF0ZWd5
OjpzY2hlZHVsZUxvYWQsIHVybCAnJXMnIHdpbGwgYmUgc2NoZWR1bGVkIHRocm91Z2ggU2Vydmlj
ZVdvcmtlciBoYW5kbGUgZmV0Y2ggYWxnb3JpdGhtIiwgcmVzb3VyY2VMb2FkZXIudXJsKCkuc3Ry
aW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKKyAgICBzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nl
c3MocmVzb3VyY2VMb2FkZXIsIHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKSwgdHJhY2tpbmdQYXJh
bWV0ZXJzLCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBtYXhpbXVt
QnVmZmVyaW5nVGltZShyZXNvdXJjZSkpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViTG9hZGVyU3Ry
YXRlZ3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhSZXNvdXJjZUxvYWRlciYgcmVz
b3VyY2VMb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViUmVz
b3VyY2VMb2FkZXI6OlRyYWNraW5nUGFyYW1ldGVycyYgdHJhY2tpbmdQYXJhbWV0ZXJzLCBib29s
IHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFNlY29uZHMgbWF4aW11
bUJ1ZmZlcmluZ1RpbWUpCit7CisgICAgUmVzb3VyY2VMb2FkSWRlbnRpZmllciBpZGVudGlmaWVy
ID0gcmVzb3VyY2VMb2FkZXIuaWRlbnRpZmllcigpOworICAgIEFTU0VSVChpZGVudGlmaWVyKTsK
KworICAgIFdlYkZyYW1lTG9hZGVyQ2xpZW50KiB3ZWJGcmFtZUxvYWRlckNsaWVudCA9IHRvV2Vi
RnJhbWVMb2FkZXJDbGllbnQocmVzb3VyY2VMb2FkZXIuZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkp
OworICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IHdlYkZyYW1lTG9hZGVyQ2xpZW50ID8gd2ViRnJh
bWVMb2FkZXJDbGllbnQtPndlYkZyYW1lKCkgOiBudWxscHRyOworICAgIFdlYlBhZ2UqIHdlYlBh
Z2UgPSB3ZWJGcmFtZSA/IHdlYkZyYW1lLT5wYWdlKCkgOiBudWxscHRyOworCiAgICAgTE9HKE5l
dHdvcmtTY2hlZHVsaW5nLCAiKFdlYlByb2Nlc3MpIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVs
ZUxvYWQsIHVybCAnJXMnIHdpbGwgYmUgc2NoZWR1bGVkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNz
IHdpdGggcHJpb3JpdHkgJWQiLCByZXNvdXJjZUxvYWRlci51cmwoKS5zdHJpbmcoKS5sYXRpbjEo
KS5kYXRhKCksIHN0YXRpY19jYXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9y
aXR5KCkpKTsKIAogICAgIENvbnRlbnRTbmlmZmluZ1BvbGljeSBjb250ZW50U25pZmZpbmdQb2xp
Y3kgPSByZXNvdXJjZUxvYWRlci5zaG91bGRTbmlmZkNvbnRlbnQoKSA/IFNuaWZmQ29udGVudCA6
IERvTm90U25pZmZDb250ZW50OwpAQCAtMjI1LDcgKzI0OSw3IEBAIHZvaWQgV2ViTG9hZGVyU3Ry
YXRlZ3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIENhY2hl
ZFJlc291CiAgICAgbG9hZFBhcmFtZXRlcnMud2ViUGFnZUlEID0gd2ViUGFnZSA/IHdlYlBhZ2Ut
PnBhZ2VJRCgpIDogMDsKICAgICBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlEID0gd2ViRnJhbWUg
PyB3ZWJGcmFtZS0+ZnJhbWVJRCgpIDogMDsKICAgICBsb2FkUGFyYW1ldGVycy5zZXNzaW9uSUQg
PSB3ZWJQYWdlID8gd2ViUGFnZS0+c2Vzc2lvbklEKCkgOiBQQUw6OlNlc3Npb25JRDo6ZGVmYXVs
dFNlc3Npb25JRCgpOwotICAgIGxvYWRQYXJhbWV0ZXJzLnJlcXVlc3QgPSByZXNvdXJjZUxvYWRl
ci5yZXF1ZXN0KCk7CisgICAgbG9hZFBhcmFtZXRlcnMucmVxdWVzdCA9IHJlcXVlc3Q7CiAgICAg
bG9hZFBhcmFtZXRlcnMuY29udGVudFNuaWZmaW5nUG9saWN5ID0gY29udGVudFNuaWZmaW5nUG9s
aWN5OwogICAgIGxvYWRQYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gc3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3k7CiAgICAgLy8gSWYgdGhlcmUgaXMgbm8gV2ViRnJhbWUgdGhlbiB0
aGlzIHJlc291cmNlIGNhbm5vdCBiZSBhdXRoZW50aWNhdGVkIHdpdGggdGhlIGNsaWVudC4KQEAg
LTIzMyw3ICsyNTcsNyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVz
b3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogICAgIGxvYWRQYXJhbWV0
ZXJzLnNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QgPSBzaG91bGRDbGVh
clJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0OwogICAgIGxvYWRQYXJhbWV0ZXJzLmRlZmVy
c0xvYWRpbmcgPSByZXNvdXJjZUxvYWRlci5kZWZlcnNMb2FkaW5nKCk7CiAgICAgbG9hZFBhcmFt
ZXRlcnMubmVlZHNDZXJ0aWZpY2F0ZUluZm8gPSByZXNvdXJjZUxvYWRlci5zaG91bGRJbmNsdWRl
Q2VydGlmaWNhdGVJbmZvKCk7Ci0gICAgbG9hZFBhcmFtZXRlcnMubWF4aW11bUJ1ZmZlcmluZ1Rp
bWUgPSBtYXhpbXVtQnVmZmVyaW5nVGltZShyZXNvdXJjZSk7CisgICAgbG9hZFBhcmFtZXRlcnMu
bWF4aW11bUJ1ZmZlcmluZ1RpbWUgPSBtYXhpbXVtQnVmZmVyaW5nVGltZTsKICAgICBsb2FkUGFy
YW1ldGVycy5kZXJpdmVkQ2FjaGVkRGF0YVR5cGVzVG9SZXRyaWV2ZSA9IHJlc291cmNlTG9hZGVy
Lm9wdGlvbnMoKS5kZXJpdmVkQ2FjaGVkRGF0YVR5cGVzVG9SZXRyaWV2ZTsKIAogICAgIEFTU0VS
VCgobG9hZFBhcmFtZXRlcnMud2ViUGFnZUlEICYmIGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQp
IHx8IGxvYWRQYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPT0gQ2xpZW50Q3JlZGVu
dGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMpOwpAQCAtMzAwLDcgKzMy
NCwxMiBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpyZW1vdmUoUmVzb3VyY2VMb2FkZXIqIHJl
c291cmNlTG9hZGVyKQogICAgICAgICBMT0dfRVJST1IoIldlYkxvYWRlclN0cmF0ZWd5IHJlbW92
aW5nIGEgUmVzb3VyY2VMb2FkZXIgdGhhdCBoYXMgbm8gaWRlbnRpZmllci4iKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICAKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBp
ZiAoV2ViU2VydmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKS5jYW5jZWxGZXRjaChpZGVu
dGlmaWVyKSkKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisKICAgICBSZWZQdHI8V2ViUmVzb3Vy
Y2VMb2FkZXI+IGxvYWRlciA9IG1fd2ViUmVzb3VyY2VMb2FkZXJzLnRha2UoaWRlbnRpZmllcik7
CiAgICAgLy8gTG9hZGVyIG1heSBub3QgYmUgcmVnaXN0ZXJlZCBpZiB3ZSBjcmVhdGVkIGl0LCBi
dXQgaGF2ZW4ndCBzY2hlZHVsZWQgeWV0IChhIGJ1bmRsZSBjbGllbnQgY2FuIGRlY2lkZSB0byBj
YW5jZWwgc3VjaCByZXF1ZXN0IHZpYSB3aWxsU2VuZFJlcXVlc3QpLgogICAgIGlmICghbG9hZGVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVy
U3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0
cmF0ZWd5LmgKaW5kZXggYjQ4ZjY4MTE4ZjQ0OWM3NzY4ZDE3OTY2MTY1YmI2NmEzMjViMjM2Zi4u
Mjc5MmFiOTFjMDhhNTNhMzI5YTJkYTM1Mzc0ZjAyMzM5YzUxNjllYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCkBAIC03
Nyw2ICs3Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFVSTFNjaGVtZVRhc2tQcm94eShXZWJV
UkxTY2hlbWVUYXNrUHJveHkmKTsKICAgICB2b2lkIHJlbW92ZVVSTFNjaGVtZVRhc2tQcm94eShX
ZWJVUkxTY2hlbWVUYXNrUHJveHkmKTsKIAorICAgIHZvaWQgc2NoZWR1bGVMb2FkRnJvbU5ldHdv
cmtQcm9jZXNzKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgV2ViUmVzb3VyY2VMb2FkZXI6OlRyYWNraW5nUGFyYW1ldGVycyYs
IGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgU2Vjb25kcyBt
YXhpbXVtQnVmZmVyaW5nVGltZSk7CisKIHByaXZhdGU6CiAgICAgdm9pZCBzY2hlZHVsZUxvYWQo
V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXImLCBXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZSosIGJvb2wg
c2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCk7CiAgICAgdm9pZCBzY2hl
ZHVsZUludGVybmFsbHlGYWlsZWRMb2FkKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xp
ZW50RmV0Y2guY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdv
cmtlckNsaWVudEZldGNoLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMDcxNTU5NWJkNjM1MDliOGViMjg4MjY0
MmFiYjQxMGNkZTdhOGIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLmNwcApAQCAtMCwwICsxLDEwNCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29y
a2VyQ2xpZW50RmV0Y2guaCIKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKworI2luY2x1
ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworU2VydmljZVdvcmtlckNsaWVudEZl
dGNoOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2goV2ViU2VydmljZVdvcmtlclByb3ZpZGVyJiBz
ZXJ2aWNlV29ya2VyUHJvdmlkZXIsIFJlZjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcj4mJiBsb2Fk
ZXIsIHVpbnQ2NF90IGlkZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlv
biwgQ2FsbGJhY2smJiBjYWxsYmFjaykKKyAgICA6IG1fc2VydmljZVdvcmtlclByb3ZpZGVyKHNl
cnZpY2VXb3JrZXJQcm92aWRlcikKKyAgICAsIG1fbG9hZGVyKFdURk1vdmUobG9hZGVyKSkKKyAg
ICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICwgbV9jb25uZWN0aW9uKFdURk1vdmUo
Y29ubmVjdGlvbikpCisgICAgLCBtX2NhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKQoreworfQor
Cit2b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAgIGF1dG8gcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpOworCisgICAgaWYgKCEocmVzcG9uc2UuaHR0cFN0YXR1
c0NvZGUoKSA8PSAzMDAgfHwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDAgfHwgcmVz
cG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQgfHwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUo
KSA9PSAzMDUgfHwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDYpKSB7CisgICAgICAg
IC8vIEZJWE1FOiBTdXBwb3J0IHJlZGlyZWN0aW9ucy4KKyAgICAgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICAgICAgbV9sb2FkZXItPmRpZEZhaWwoeyB9KTsKKyAgICAgICAgaWYgKGF1dG8gY2Fs
bGJhY2sgPSBXVEZNb3ZlKG1fY2FsbGJhY2spKQorICAgICAgICAgICAgY2FsbGJhY2soUmVzdWx0
OjpTdWNjZWVkZWQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHJlc3BvbnNl
LnR5cGUoKSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpUeXBlOjpFcnJvcikgeworICAgICAgICAvLyBB
ZGQgc3VwcG9ydCBmb3IgYSBiZXR0ZXIgZXJyb3IuCisgICAgICAgIG1fbG9hZGVyLT5kaWRGYWls
KHsgfSk7CisgICAgICAgIGlmIChhdXRvIGNhbGxiYWNrID0gV1RGTW92ZShtX2NhbGxiYWNrKSkK
KyAgICAgICAgICAgIGNhbGxiYWNrKFJlc3VsdDo6U3VjY2VlZGVkKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIG1fbG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpOwor
ICAgIGlmIChhdXRvIGNhbGxiYWNrID0gV1RGTW92ZShtX2NhbGxiYWNrKSkKKyAgICAgICAgY2Fs
bGJhY2soUmVzdWx0OjpTdWNjZWVkZWQpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRG
ZXRjaDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2
NF90IGVuY29kZWREYXRhTGVuZ3RoKQoreworICAgIG1fbG9hZGVyLT5kaWRSZWNlaXZlRGF0YShy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpLCBl
bmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7Cit9CisKK3ZvaWQgU2VydmljZVdv
cmtlckNsaWVudEZldGNoOjpkaWRGaW5pc2goKQoreworICAgIEFTU0VSVCghbV9jYWxsYmFjayk7
CisKKyAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKTsKKyAgICBtX2xvYWRl
ci0+ZGlkRmluaXNoTG9hZGluZyhOZXR3b3JrTG9hZE1ldHJpY3MgeyB9KTsKKyAgICBtX3NlcnZp
Y2VXb3JrZXJQcm92aWRlci5mZXRjaEZpbmlzaGVkKG1faWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpkaWRGYWlsKCkKK3sKKyAgICBpZiAoYXV0byBjYWxs
YmFjayA9IFdURk1vdmUobV9jYWxsYmFjaykpCisgICAgICAgIGNhbGxiYWNrKFJlc3VsdDo6VW5o
YW5kbGVkKTsKKworICAgIG1fc2VydmljZVdvcmtlclByb3ZpZGVyLmZldGNoRmluaXNoZWQobV9p
ZGVudGlmaWVyKTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OmNhbmNlbCgp
Cit7CisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBXVEZNb3ZlKG1fY2FsbGJhY2spKQorICAgICAg
ICBjYWxsYmFjayhSZXN1bHQ6OkNhbmNlbGxlZCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kMDUyMDk2MDM3MGZjZDE0OTAwMmFlMjgwYmNlNzJjNjcxNjZlMzIyCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSAiTWVzc2Fn
ZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VMb2FkZXIuaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjsK
KworY2xhc3MgU2VydmljZVdvcmtlckNsaWVudEZldGNoIGZpbmFsIDogcHVibGljIFJlZkNvdW50
ZWQ8U2VydmljZVdvcmtlckNsaWVudEZldGNoPiwgcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwg
cHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK3B1YmxpYzoKKyAgICBlbnVtIGNsYXNzIFJl
c3VsdCB7IFN1Y2NlZWRlZCwgQ2FuY2VsbGVkLCBVbmhhbmRsZWQgfTsKKyAgICB1c2luZyBDYWxs
YmFjayA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXN1bHQpPjsKKworICAgIHN0YXRp
YyBSZWY8U2VydmljZVdvcmtlckNsaWVudEZldGNoPiBjcmVhdGUoV2ViU2VydmljZVdvcmtlclBy
b3ZpZGVyJiBzZXJ2aWNlV29ya2VyUHJvdmlkZXIsIFJlZjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
cj4mJiBsb2FkZXIsIHVpbnQ2NF90IGlkZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYg
Y29ubmVjdGlvbiwgQ2FsbGJhY2smJiBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaCB7IHNlcnZpY2VXb3JrZXJQcm92
aWRlciwgV1RGTW92ZShsb2FkZXIpLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGNvbm5lY3Rpb24pLCBX
VEZNb3ZlKGNhbGxiYWNrKSB9KTsKKyAgICB9CisKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworICAgIHZvaWQgY2FuY2Vs
KCk7CisKKyAgICBib29sIGlzT25nb2luZygpIGNvbnN0IHsgcmV0dXJuICEhbV9jYWxsYmFjazsg
fQorCitwcml2YXRlOgorICAgIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaChXZWJTZXJ2aWNlV29y
a2VyUHJvdmlkZXImLCBSZWY8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI+JiYsIHVpbnQ2NF90IGlk
ZW50aWZpZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIENhbGxiYWNrJiYpOworCisgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgaW50NjRf
dCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRGaW5pc2goKTsKKyAgICB2b2lkIGRp
ZEZhaWwoKTsKKworICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24o
KSBmaW5hbCB7IHJldHVybiBtX2Nvbm5lY3Rpb24ucHRyKCk7IH0KKyAgICB1aW50NjRfdCBtZXNz
YWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGZpbmFsIHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQor
CisgICAgV2ViU2VydmljZVdvcmtlclByb3ZpZGVyJiBtX3NlcnZpY2VXb3JrZXJQcm92aWRlcjsK
KyAgICBSZWY8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI+IG1fbG9hZGVyOworICAgIHVpbnQ2NF90
IG1faWRlbnRpZmllciB7IDAgfTsKKyAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rp
b247CisgICAgQ2FsbGJhY2sgbV9jYWxsYmFjazsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNsaWVudEZldGNoLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNs
aWVudEZldGNoLm1lc3NhZ2VzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmExMDgxYjRiZDBiZWY0ZTlkOGRiYjE2
OTgzZjI2MmY4OGI5MjNlZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gubWVzc2FnZXMuaW4KQEAgLTAs
MCArMSwzMiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCittZXNzYWdlcyAtPiBTZXJ2aWNlV29ya2VyQ2xpZW50
RmV0Y2ggeworICAgIERpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
IHJlc3BvbnNlKQorICAgIERpZFJlY2VpdmVEYXRhKElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhLCBp
bnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQorICAgIERpZEZpbmlzaCgpCisgICAgRGlkRmFpbCgp
Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNvbnRl
eHRNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MzcxMzkyNDIzODE1N2I2ZjQ4ZWY1ZWVlNmM2ZDcy
ZjdhZTYxMjM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDk3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJD
b250ZXh0TWFuYWdlci5oIgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVk
ZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlN0b3JhZ2VQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNs
dWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
UmVxdWVzdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgorI2luY2x1
ZGUgPHBhbC9TZXNzaW9uSUQuaD4KKwordXNpbmcgbmFtZXNwYWNlIFBBTDsKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBTZXJ2aWNlV29ya2Vy
Q29udGV4dE1hbmFnZXI6OnN0YXJ0U2VydmljZVdvcmtlckNvbnRleHQodWludDY0X3Qgc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0
YSkKK3sKKyAgICAvLyBGSVhNRTogUHJvdmlkZSBhIHNlbnNpY2FsIHNlc3Npb24gSUQuCisgICAg
YXV0byB0aHJlYWQgPSBTZXJ2aWNlV29ya2VyVGhyZWFkOjpjcmVhdGUoc2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIsIGRhdGEsIFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKKyAgICBh
dXRvIHRocmVhZElkZW50aWZpZXIgPSB0aHJlYWQtPmlkZW50aWZpZXIoKTsKKyAgICBhdXRvIHJl
c3VsdCA9IG1fd29ya2VyVGhyZWFkTWFwLmFkZCh0aHJlYWRJZGVudGlmaWVyLCBXVEZNb3ZlKHRo
cmVhZCkpOworICAgIEFTU0VSVChyZXN1bHQuaXNOZXdFbnRyeSk7CisKKyAgICByZXN1bHQuaXRl
cmF0b3ItPnZhbHVlLT5zdGFydCgpOworCisgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJDb250ZXh0
IHByb2Nlc3MgUElEOiAlaSBzdGFydGVkIHdvcmtlciB0aHJlYWQgJXNcbiIsIGdldHBpZCgpLCBk
YXRhLndvcmtlcklELnV0ZjgoKS5kYXRhKCkpOworCisgICAgbV9jb25uZWN0aW9uVG9TdG9yYWdl
UHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OlNlcnZpY2VXb3JrZXJDb250
ZXh0U3RhcnRlZChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgZGF0YS5yZWdpc3RyYXRpb25L
ZXksIHRocmVhZElkZW50aWZpZXIsIGRhdGEud29ya2VySUQpLCAwKTsKK30KKwordm9pZCBTZXJ2
aWNlV29ya2VyQ29udGV4dE1hbmFnZXI6OnN0YXJ0RmV0Y2godWludDY0X3Qgc2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgdWludDY0X3Qgc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
RmV0Y2hPcHRpb25zJiBvcHRpb25zKQoreworICAgIFVOVVNFRF9QQVJBTShzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllcik7CisKKyAgICAvLyBGSVhNRTogSGFyZCBjb2Rpbmcgc29tZSBmZXRjaGVzIGZv
ciB0ZXN0aW5nIHB1cnBvc2UgdW50aWwgd2UgaW1wbGVtZW50IHRoZSBjcmVhdGlvbiBvZiBmZXRj
aCBldmVudC4KKyAgICBpZiAocmVxdWVzdC51cmwoKS5zdHJpbmcoKS5jb250YWlucygidGVzdDEi
KSkgeworICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOworICAgICAgICByZXNwb25z
ZS5zZXRVUkwocmVxdWVzdC51cmwoKSk7CisgICAgICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXND
b2RlKDIwMCk7CisgICAgICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNUZXh0KEFTQ0lJTGl0ZXJh
bCgiSGVsbG8gZnJvbSBzZXJ2aWNlIHdvcmtlciIpKTsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9T
dG9yYWdlUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OkRpZFJlY2VpdmVG
ZXRjaFJlc3BvbnNlKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIs
IHJlc3BvbnNlKSwgMCk7CisgICAgICAgIG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpEaWRGaW5pc2hGZXRjaChzZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgaWYgKHJlcXVlc3QudXJsKCkuc3RyaW5nKCkuY29udGFpbnMoInRlc3QyIikpIHsK
KyAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKKyAgICAgICAgcmVzcG9uc2Uuc2V0
VVJMKHJlcXVlc3QudXJsKCkpOworICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZSg1
MDApOworICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChBU0NJSUxpdGVyYWwoIkVy
cm9yIGZyb20gc2VydmljZSB3b3JrZXIiKSk7CisgICAgICAgIG1fY29ubmVjdGlvblRvU3RvcmFn
ZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpEaWRSZWNlaXZlRmV0Y2hS
ZXNwb25zZShzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyLCByZXNw
b25zZSksIDApOworICAgICAgICBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6RGlkRmluaXNoRmV0Y2goc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIsIGZldGNoSWRlbnRpZmllciksIDApOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIGlmIChyZXF1ZXN0LnVybCgpLnN0cmluZygpLmNvbnRhaW5zKCJ0ZXN0MyIpKSB7CisgICAg
ICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CisgICAgICAgIHJlc3BvbnNlLnNldFVSTChy
ZXF1ZXN0LnVybCgpKTsKKyAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoNTAwKTsK
KyAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoQVNDSUlMaXRlcmFsKCJFcnJvciBm
cm9tIHNlcnZpY2Ugd29ya2VyIikpOworICAgICAgICByZXNwb25zZS5zZXRUeXBlKFJlc291cmNl
UmVzcG9uc2U6OlR5cGU6OkVycm9yKTsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9TdG9yYWdlUHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OkRpZFJlY2VpdmVGZXRjaFJlc3Bv
bnNlKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIsIHJlc3BvbnNl
KSwgMCk7CisgICAgICAgIG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OlN0b3JhZ2VQcm9jZXNzOjpEaWRGaW5pc2hGZXRjaChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciwgZmV0Y2hJZGVudGlmaWVyKSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJv
Y2Vzczo6RGlkRmFpbEZldGNoKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBmZXRjaElkZW50
aWZpZXIpLCAwKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40OGI2OTEwYTc2MTllODlhMWE3ZDE4YWE2ZGMxNmFjYzVkMGVlMGE5Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNvbnRl
eHRNYW5hZ2VyLmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBGZXRjaE9wdGlvbnM7Citj
bGFzcyBSZXNvdXJjZVJlcXVlc3Q7CitzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhOwor
fQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgU2VydmljZVdvcmtlckNvbnRleHRNYW5h
Z2VyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIo
UmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQorICAgICAgICA6IG1fY29ubmVjdGlv
blRvU3RvcmFnZVByb2Nlc3MoV1RGTW92ZShjb25uZWN0aW9uKSkKKyAgICB7CisgICAgfQorCisg
ICAgdm9pZCBzdGFydFNlcnZpY2VXb3JrZXJDb250ZXh0KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmKTsK
KyAgICB2b2lkIHN0YXJ0RmV0Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIs
IHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgdWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OkZldGNo
T3B0aW9ucyYpOworCitwcml2YXRlOgorICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVj
dGlvblRvU3RvcmFnZVByb2Nlc3M7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ+PiBtX3dvcmtlclRocmVhZE1hcDsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25u
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50
Q29ubmVjdGlvbi5jcHAKaW5kZXggNzZhZTdiNTViYTAzMGNjYjAzODM3ODZlODg3Mjg1OTlmZmJk
NmFkYS4uYmIxZTFjYzlhOTVlYjg2OTY0MTE5OTgyMTA1MDU0NjY4ZWNiNDllYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENv
bm5lY3Rpb24uY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRG
ZXRjaC5oIgogI2luY2x1ZGUgIlN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJTV09y
aWdpblRhYmxlLmgiCkBAIC03NSw2ICs3NiwxNSBAQCB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlv
bjo6c2V0U1dPcmlnaW5UYWJsZVNoYXJlZE1lbW9yeShjb25zdCBTaGFyZWRNZW1vcnk6Okhhbgog
ICAgIG1fc3dPcmlnaW5UYWJsZS0+c2V0U2hhcmVkTWVtb3J5KGhhbmRsZSk7CiB9CiAKK1JlZjxT
ZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g+IFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6c3RhcnRGZXRj
aChXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXImIHByb3ZpZGVyLCBSZWY8V2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI+JiYgbG9hZGVyLCB1aW50NjRfdCBpZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyQ2xp
ZW50RmV0Y2g6OkNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgQVNTRVJUKGxvYWRlci0+b3B0
aW9ucygpLnNlcnZpY2VXb3JrZXJzTW9kZSA9PSBTZXJ2aWNlV29ya2Vyc01vZGU6OkFsbCk7Cisg
ICAgLy8gRklYTUU6IERlY2lkZSB3aGV0aGVyIHRvIGFzc2VydCBmb3IgbG9hZGVyLT5vcHRpb25z
KCkuc2VydmljZVdvcmtlcklkZW50aWZpZXIgb25jZSB3ZSBoYXZlIGEgc3RvcnkgZm9yIG5hdmln
YXRpb24gbG9hZHMuCisKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246
OlN0YXJ0RmV0Y2goaWRlbnRpZmllciwgbG9hZGVyLT5vcHRpb25zKCkuc2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIGxvYWRlci0+b3JpZ2luYWxSZXF1ZXN0KCksIGxvYWRlci0+b3B0aW9ucygpKSk7
CisgICAgcmV0dXJuIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6Y3JlYXRlKHByb3ZpZGVyLCBX
VEZNb3ZlKGxvYWRlciksIGlkZW50aWZpZXIsIG1fY29ubmVjdGlvbi5nZXQoKSwgV1RGTW92ZShj
YWxsYmFjaykpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKaW5kZXggMjYxN2VjMmU3NGYwZTU0ZTI0
NDY2OGMyYzIzNWQzNjNiZGFkZDY1My4uOTFiOWY4YzYyNGNlYTFhZmU2NTI2OGU4NDg0OGJjNjI0
YmVmZDRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDbGllbnRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJD
b25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVNlbmRlci5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5oIgogI2lu
Y2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU1dDbGllbnRDb25uZWN0
aW9uLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgpAQCAtMzcsMTEgKzM4LDEzIEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBFeGNlcHRpb25EYXRhOworY2xhc3MgUmVzb3Vy
Y2VMb2FkZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJTV09yaWdpblRh
YmxlOworY2xhc3MgV2ViU2VydmljZVdvcmtlclByb3ZpZGVyOwogCiBjbGFzcyBXZWJTV0NsaWVu
dENvbm5lY3Rpb24gOiBwdWJsaWMgV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uLCBwdWJsaWMg
SVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGlj
OgpAQCAtNTgsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKIAogICAgIGJvb2wgaGFzU2Vy
dmljZVdvcmtlclJlZ2lzdGVyZWRGb3JPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4mKSBjb25zdCBmaW5hbDsKKyAgICBSZWY8U2VydmljZVdvcmtlckNsaWVudEZldGNoPiBzdGFy
dEZldGNoKFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlciYsIFJlZjxXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlcj4mJiwgdWludDY0X3QgaWRlbnRpZmllciwgU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpD
YWxsYmFjayYmKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHNjaGVkdWxlU3RvcmFnZUpvYihjb25z
dCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5j
cHAKaW5kZXggNjFkOGNlNTZlZWM1YmQ0MTczYjY0MmJlOTA2MWU3M2M3NzM3NmY5OS4uM2FiYTQ5
MWQ2YjhlNjE3ZjFjY2YyNTFmNWUyNDczMjgyMDZiMTc2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlk
ZXIuY3BwCkBAIC01OCw2ICs1OCw2MCBAQCBXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb24mIFdl
YlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2VydmljZVdvcmtlckNvbm5lY3Rpb25GbwogICAgIHJl
dHVybiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Npb24oc2Vzc2lvbklEKTsKIH0KIAor
c3RhdGljIGlubGluZSBib29sIHNob3VsZEhhbmRsZUZldGNoKGNvbnN0IFdlYlNXQ2xpZW50Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBSZXNv
dXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgaWYgKG9wdGlvbnMuc2VydmljZVdv
cmtlcnNNb2RlICE9IFNlcnZpY2VXb3JrZXJzTW9kZTo6QWxsKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHByb2JhYmx5IGFzc2VydCB0aGF0IG9wdGlv
bnMuc2VydmljZVdvcmtlcnNJZGVudGlmaWVyIGlzIG5vdCBudWxsLgorICAgIGlmIChpc1BvdGVu
dGlhbE5hdmlnYXRpb25PclN1YnJlc291cmNlUmVxdWVzdChvcHRpb25zLmRlc3RpbmF0aW9uKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gRklYTUU6IEltcGxlbWVudCBub24tc3Vi
cmVzb3VyY2UgcmVxdWVzdCBsb2Fkcy4KKyAgICBpZiAoaXNOb25TdWJyZXNvdXJjZVJlcXVlc3Qo
b3B0aW9ucy5kZXN0aW5hdGlvbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICgh
cmVzb3VyY2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBjb25uZWN0aW9u
Lmhhc1NlcnZpY2VXb3JrZXJSZWdpc3RlcmVkRm9yT3JpZ2luKCpyZXNvdXJjZS0+b3JpZ2luKCkp
OworfQorCit2b2lkIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6aGFuZGxlRmV0Y2goUmVzb3Vy
Y2VMb2FkZXImIGxvYWRlciwgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6Q2FsbGJhY2smJiBjYWxsYmFj
aykKK3sKKyAgICBhdXRvJiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2Vi
VG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VydmljZVdvcmtlckNvbm5lY3Rpb25Gb3JT
ZXNzaW9uKHNlc3Npb25JRCk7CisKKyAgICBpZiAoIXNob3VsZEhhbmRsZUZldGNoKGNvbm5lY3Rp
b24sIHJlc291cmNlLCBsb2FkZXIub3B0aW9ucygpKSkgeworICAgICAgICAvLyBGSVhNRTogQWRk
IGFuIG9wdGlvbiB0byBlcnJvciByZXNvdXJjZSBsb2FkIGZvciBEVEwgdG8gYWN0dWFsbHkgZ28g
dGhyb3VnaCBwcmVmbGlnaHQuCisgICAgICAgIGNhbGxiYWNrKFNlcnZpY2VXb3JrZXJDbGllbnRG
ZXRjaDo6UmVzdWx0OjpVbmhhbmRsZWQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
YXV0byBmZXRjaCA9IGNvbm5lY3Rpb24uc3RhcnRGZXRjaCgqdGhpcywgbG9hZGVyLCBsb2FkZXIu
aWRlbnRpZmllcigpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgQVNTRVJUKGZldGNoLT5pc09u
Z29pbmcoKSk7CisKKyAgICBtX29uZ29pbmdGZXRjaFRhc2tzLmFkZChsb2FkZXIuaWRlbnRpZmll
cigpLCBXVEZNb3ZlKGZldGNoKSk7Cit9CisKK2Jvb2wgV2ViU2VydmljZVdvcmtlclByb3ZpZGVy
OjpjYW5jZWxGZXRjaCh1aW50NjRfdCBmZXRjaElkZW50aWZpZXIpCit7CisgICAgYXV0byBmZXRj
aCA9IG1fb25nb2luZ0ZldGNoVGFza3MudGFrZShmZXRjaElkZW50aWZpZXIpOworICAgIGlmIChm
ZXRjaCkKKyAgICAgICAgKCpmZXRjaCktPmNhbmNlbCgpOworICAgIHJldHVybiAhIWZldGNoOwor
fQorCit2b2lkIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6ZmV0Y2hGaW5pc2hlZCh1aW50NjRf
dCBmZXRjaElkZW50aWZpZXIpCit7CisgICAgbV9vbmdvaW5nRmV0Y2hUYXNrcy50YWtlKGZldGNo
SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViU2VydmljZVdvcmtlclByb3ZpZGVyOjpkaWRSZWNl
aXZlU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBpZiAoYXV0byBmZXRjaCA9IG1f
b25nb2luZ0ZldGNoVGFza3MuZ2V0KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkKKyAgICAgICAg
ZmV0Y2gtPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3Jr
ZXJQcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vydmlj
ZVdvcmtlclByb3ZpZGVyLmgKaW5kZXggNzc1ZjVlZTA0YjJjNmZkZDc1NmEyZWNlODhjNjhhNzcw
ZmM3MDEwZi4uMDk4YjczZDUzZTVjYzkxZDcyMmIzOTAwYzY0Y2UwMDc5MWE4YTBhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclBy
b3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vydmlj
ZVdvcmtlclByb3ZpZGVyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKIAorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclByb3ZpZGVyLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAKQEAgLTM2LDEyICszNywxOSBAQCBjbGFzcyBXZWJTZXJ2aWNlV29ya2Vy
UHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U2VydmljZVdvcmtlclByb3ZpZGVyIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgV2ViU2VydmljZVdvcmtlclByb3ZpZGVyJiBzaW5nbGV0b24o
KTsKIAorICAgIHZvaWQgaGFuZGxlRmV0Y2goV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXImLCBXZWJD
b3JlOjpDYWNoZWRSZXNvdXJjZSosIFBBTDo6U2Vzc2lvbklELCBTZXJ2aWNlV29ya2VyQ2xpZW50
RmV0Y2g6OkNhbGxiYWNrJiYpOworICAgIGJvb2wgY2FuY2VsRmV0Y2godWludDY0X3QgZmV0Y2hJ
ZGVudGlmaWVyKTsKKyAgICB2b2lkIGZldGNoRmluaXNoZWQodWludDY0X3QgZmV0Y2hJZGVudGlm
aWVyKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CisKIHByaXZhdGU6CiAgICAgZnJp
ZW5kIE5ldmVyRGVzdHJveWVkPFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcj47CiAgICAgV2ViU2Vy
dmljZVdvcmtlclByb3ZpZGVyKCk7CiAKICAgICBXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb24m
IHNlcnZpY2VXb3JrZXJDb25uZWN0aW9uRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRCkgZmluYWw7
CiAKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWY8U2VydmljZVdvcmtlckNsaWVudEZldGNoPj4g
bV9vbmdvaW5nRmV0Y2hUYXNrczsKIH07IC8vIGNsYXNzIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRl
cgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9u
LmNwcAppbmRleCA1YTEyZDA0ZGNiZDIzMTEyYzQwMzkzMTk0NWU1ZmM1NTYxMDMwNzc2Li5iMmRm
ODM3ZTFkODMzNTkxZmE1YjQ4NGUzMzliY2Q4NTYzYzE1MDFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViVG9TdG9yYWdlUHJv
Y2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0yNywxMSArMjcsMTMgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbi5oIgogCisjaW5jbHVk
ZSAiU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTdG9yYWdl
VG9XZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViSURCQ29ubmVj
dGlvblRvU2VydmVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVk
ZSAiV2ViU1dDbGllbnRDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViU1dDbGllbnRDb25uZWN0
aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCIKIAog
dXNpbmcgbmFtZXNwYWNlIFBBTDsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNjcsNiAr
NjksMTAgQEAgdm9pZCBXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW8KICAgICAgICAgICAgIHNlcnZpY2VXb3Jr
ZXJDb25uZWN0aW9uLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1l
KCkgPT0gTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpKSB7CisgICAgICAgIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCku
ZGlkUmVjZWl2ZVNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2UoY29ubmVjdGlvbiwgZGVj
b2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAjZW5kaWYKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA2
ZTI3NjcxMWVjYzU4N2I5NzRhY2EzMTMxNmRiZDFjYTNjZjcxOTFiLi4xZjdiMjA0MDM3NjQ0Zjgx
ODdjMDljZjEzZjlmYzlhNTc1N2IxMWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKICNpbmNsdWRlICJQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ29udGV4
dE1hbmFnZXIuaCIKICNpbmNsdWRlICJTZXNzaW9uVHJhY2tlci5oIgogI2luY2x1ZGUgIlN0YXRp
c3RpY3NEYXRhLmgiCiAjaW5jbHVkZSAiU3RvcmFnZVByb2Nlc3NNZXNzYWdlcy5oIgpAQCAtMTA1
LDcgKzEwNiw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRPYnNlcnZlci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TV0Nv
bnRleHRNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY2hlbWVSZWdpc3RyeS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YS5oPgpAQCAtMTYyMiw3ICsxNjIyLDcgQEAgTGliV2ViUlRDTmV0
d29yayYgV2ViUHJvY2Vzczo6bGliV2ViUlRDTmV0d29yaygpCiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQogdm9pZCBXZWJQcm9jZXNzOjpnZXRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbigpCiB7
Ci0gICAgQVNTRVJUKCFtX3dvcmtlckNvbnRleHRDb25uZWN0aW9uKTsKKyAgICBBU1NFUlQoIW1f
c2VydmljZVdvcmtlck1hbmFnZXIpOwogCiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAg
ICAgSVBDOjpDb25uZWN0aW9uOjpTb2NrZXRQYWlyIHNvY2tldFBhaXIgPSBJUEM6OkNvbm5lY3Rp
b246OmNyZWF0ZVBsYXRmb3JtQ29ubmVjdGlvbigpOwpAQCAtMTY0MiwyMCArMTY0MiwyNyBAQCB2
b2lkIFdlYlByb2Nlc3M6OmdldFdvcmtlckNvbnRleHRDb25uZWN0aW9uKCkKICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2VuZGlmCiAKLSAgICBtX3dvcmtlckNvbnRleHRDb25u
ZWN0aW9uID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJDb25uZWN0aW9uKGNvbm5lY3Rp
b25JZGVudGlmaWVyLCAqdGhpcyk7Ci0gICAgbV93b3JrZXJDb250ZXh0Q29ubmVjdGlvbi0+b3Bl
bigpOwotCisgICAgYXV0byB3b3JrZXJDb250ZXh0Q29ubmVjdGlvbiA9IElQQzo6Q29ubmVjdGlv
bjo6Y3JlYXRlU2VydmVyQ29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRpZmllciwgKnRoaXMpOwor
ICAgIHdvcmtlckNvbnRleHRDb25uZWN0aW9uLT5vcGVuKCk7CisgICAgbV9zZXJ2aWNlV29ya2Vy
TWFuYWdlciA9ICBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIoV1RGTW92ZSh3b3JrZXJDb250
ZXh0Q29ubmVjdGlvbikpOwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6RGlkR2V0V29y
a2VyQ29udGV4dENvbm5lY3Rpb24oY29ubmVjdGlvbkNsaWVudFBvcnQpLCAwKTsKIH0KIAogdm9p
ZCBXZWJQcm9jZXNzOjpzdGFydFNlcnZpY2VXb3JrZXJDb250ZXh0KHVpbnQ2NF90IHNlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEp
CiB7Ci0gICAgYXV0byBjb250ZXh0UmVzdWx0ID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9u
KCkuc3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4dChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwg
ZGF0YSk7Ci0gICAgCi0gICAgaWYgKGNvbnRleHRSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCi0gICAg
ICAgIG1fd29ya2VyQ29udGV4dENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9j
ZXNzOjpTZXJ2aWNlV29ya2VyQ29udGV4dEZhaWxlZFRvU3RhcnQoc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIsIGRhdGEucmVnaXN0cmF0aW9uS2V5LCBkYXRhLndvcmtlcklELCBjb250ZXh0UmVz
dWx0LmV4Y2VwdGlvbigpLm1lc3NhZ2UoKSksIDApOwotICAgIGVsc2UKLSAgICAgICAgbV93b3Jr
ZXJDb250ZXh0Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OlNlcnZp
Y2VXb3JrZXJDb250ZXh0U3RhcnRlZChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgZGF0YS5y
ZWdpc3RyYXRpb25LZXksIGNvbnRleHRSZXN1bHQucmV0dXJuVmFsdWUoKSwgZGF0YS53b3JrZXJJ
RCksIDApOworICAgIEFTU0VSVChtX3NlcnZpY2VXb3JrZXJNYW5hZ2VyKTsKKyAgICBpZiAoIW1f
c2VydmljZVdvcmtlck1hbmFnZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc2VydmljZVdv
cmtlck1hbmFnZXItPnN0YXJ0U2VydmljZVdvcmtlckNvbnRleHQoc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIsIGRhdGEpOworfQorCit2b2lkIFdlYlByb2Nlc3M6OnN0YXJ0RmV0Y2hJblNlcnZp
Y2VXb3JrZXIodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZl
dGNoSWRlbnRpZmllciwgdWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zKQorewor
ICAgIGlmICghbV9zZXJ2aWNlV29ya2VyTWFuYWdlcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9zZXJ2aWNlV29ya2VyTWFuYWdlci0+c3RhcnRGZXRjaChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciwgZmV0Y2hJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcmVxdWVzdCwg
b3B0aW9ucyk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgK
aW5kZXggNWMyZTZjNzZkZjc4MjQ1YTFiMzE1NDljNmUwMTFmZTRmNWQ0ZDNmNy4uZmVlMTQzNjI2
YjcxZWI5MTBjODczNTBmMDU2ZDIyNzZhYmZjOTFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VDYWNoZXNUb0NsZWFyLmgiCiAj
aW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDb250
ZXh0TWFuYWdlci5oIgogI2luY2x1ZGUgIlRleHRDaGVja2VyU3RhdGUuaCIKICNpbmNsdWRlICJW
aWV3VXBkYXRlRGlzcGF0Y2hlci5oIgogI2luY2x1ZGUgIldlYkluc3BlY3RvckludGVycnVwdERp
c3BhdGNoZXIuaCIKQEAgLTMwMCw3ICszMDEsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKICAgICB2b2lkIGdldFdvcmtlckNvbnRleHRDb25uZWN0aW9uKCk7CiAgICAg
dm9pZCBzdGFydFNlcnZpY2VXb3JrZXJDb250ZXh0KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmKTsKLSAg
ICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX3dvcmtlckNvbnRleHRDb25uZWN0aW9uOworICAg
IHZvaWQgc3RhcnRGZXRjaEluU2VydmljZVdvcmtlcih1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCB1aW50NjRfdCBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2Vi
Q29yZTo6RmV0Y2hPcHRpb25zJik7CiAjZW5kaWYKIAogICAgIHZvaWQgcmVsZWFzZVBhZ2VDYWNo
ZSgpOwpAQCAtNDM4LDYgKzQzOSw5IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oV0FZTEFORCkK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5PiBtX3dheWxhbmRD
b21wb3NpdG9yRGlzcGxheTsKICNlbmRpZgorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAg
ICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlcj4gbV9zZXJ2aWNlV29y
a2VyTWFuYWdlcjsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDIyMDYz
NjAxZTA2M2FiNWIyMTc4ZmY3YjM2YzljOTkxMjgxMDc5N2YuLmZhNTQ3MmMxMjI5MTU4OWY0MDhl
OWI0YWJjMWY5ZmNhMGYzNWEwODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xMTcsNSArMTE3LDYgQEAgbWVzc2FnZXMgLT4gV2Vi
UHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
IEdldFdvcmtlckNvbnRleHRDb25uZWN0aW9uKCkKICAgICBTdGFydFNlcnZpY2VXb3JrZXJDb250
ZXh0KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6
U2VydmljZVdvcmtlckNvbnRleHREYXRhIGNvbnRleHREYXRhKQorICAgIFN0YXJ0RmV0Y2hJblNl
cnZpY2VXb3JrZXIodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90
IGZldGNoSWRlbnRpZmllciwgdWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBzdHJ1Y3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25z
IG9wdGlvbnMpCiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxMTQwYWEwODU4NTIzYjNlNTMwMjdmY2UwZTM4
OGZhNzA1NTZhYTM4Li5mNDJkYWMxN2I5MWRlYmI1YzAwNjBkZjIzMzY4NzVlNTdmMDZkOGZlIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTctMTAtMTkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgorCisgICAgICAgIEFkZCBwcmVsaW1pbmFyeSBzdXBwb3J0IGZvciBTZXJ2aWNl
V29ya2VyIEhhbmRsZSBGZXRjaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc4NDc1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTA2NjQyND4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICAqIGh0dHAvdGVzdHMv
d29ya2Vycy9zZXJ2aWNlL2Jhc2ljLWZldGNoLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvYmFzaWMtZmV0Y2guaHR0cHMuaHRt
bDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2Vz
L2Jhc2ljLWZldGNoLXdvcmtlci5qczogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93b3Jr
ZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2ljLWZldGNoLmpzOiBBZGRlZC4KKwogMjAxNy0xMC0x
OSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVmZXJyZXIg
cG9saWN5IHNob3VsZCBiZSBpbmhlcml0ZWQgZnJvbSBjcmVhdG9yCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1mZXRjaC5odHRwcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1m
ZXRjaC5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmZkNjQ5ZjA5YmYxNDMwMWNlODdj
ZDBjOWZjNjI0YWRjNjBkNjRmZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2ljLWZldGNoLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDYgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxMjogdGVzdDEgc3RhdHVzIGNvZGU6
IDIwMAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEzOiB0ZXN0MSBzdGF0dXMgdGV4dDogSGVsbG8g
ZnJvbSBzZXJ2aWNlIHdvcmtlcgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE2OiB0ZXN0MiBzdGF0
dXMgY29kZTogNTAwCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTc6IHRlc3QyIHN0YXR1cyB0ZXh0
OiBFcnJvciBmcm9tIHNlcnZpY2Ugd29ya2VyCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjY6IHRl
c3QzIGZldGNoIGZhaWxlZCBhcyBleHBlY3RlZAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1mZXRjaC5odHRwcy5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvYmFzaWMtZmV0Y2guaHR0cHMuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42MmEwNjZhYzk4ZWY3OGI4ODRmNWZjYWU0NmE5NDE4YTU4YTVjYmFkCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvYmFz
aWMtZmV0Y2guaHR0cHMuaHRtbApAQCAtMCwwICsxLDkgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3N3LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorCis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2Jhc2ljLWZldGNoLmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29y
a2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9iYXNpYy1mZXRjaC13b3JrZXIuanMgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvYmFzaWMtZmV0Y2gtd29ya2Vy
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjI5ZDhhMmJkMzAxNWNhZTRhNGE0ODU2YTI0ZjM5YWY4NmMxNmQxNzQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2Vydmlj
ZS9yZXNvdXJjZXMvYmFzaWMtZmV0Y2gtd29ya2VyLmpzCkBAIC0wLDAgKzEgQEAKKy8vIEZJWE1F
OiByZWdpc3RlciBhbiBvbmZldGNoIGV2ZW50IGhhbmRsZXIgYW5kIGhhbmRsZSAidGVzdDEiLCAi
dGVzdDIiIGFuZCAidGVzdDMiIFVSTHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9iYXNpYy1mZXRjaC5qcyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9iYXNpYy1mZXRjaC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yODc0M2EyNjQyOWIxNzc3YjI0Y2I3NjEyNWY4MDAzY2M5YzQ4ZDRkCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3Vy
Y2VzL2Jhc2ljLWZldGNoLmpzCkBAIC0wLDAgKzEsMzQgQEAKK2Z1bmN0aW9uIGRvbmUoKQorewor
ICAgIGZpbmlzaFNXVGVzdCgpOworfQorCithc3luYyBmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICB0
cnkgeworICAgICAgICBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcigicmVz
b3VyY2VzL2Jhc2ljLWZldGNoLXdvcmtlci5qcyIsIHsgfSk7CisKKyAgICAgICAgdmFyIHJlc3Bv
bnNlID0gYXdhaXQgZmV0Y2goInRlc3QxIik7CisgICAgICAgIGNvbnNvbGUubG9nKCJ0ZXN0MSBz
dGF0dXMgY29kZTogIiArIHJlc3BvbnNlLnN0YXR1cyk7CisgICAgICAgIGNvbnNvbGUubG9nKCJ0
ZXN0MSBzdGF0dXMgdGV4dDogIiArIHJlc3BvbnNlLnN0YXR1c1RleHQpOworCisgICAgICAgIHZh
ciByZXNwb25zZSA9IGF3YWl0IGZldGNoKCJ0ZXN0MiIpOworICAgICAgICBjb25zb2xlLmxvZygi
dGVzdDIgc3RhdHVzIGNvZGU6ICIgKyByZXNwb25zZS5zdGF0dXMpOworICAgICAgICBjb25zb2xl
LmxvZygidGVzdDIgc3RhdHVzIHRleHQ6ICIgKyByZXNwb25zZS5zdGF0dXNUZXh0KTsKKworICAg
ICAgICB0cnkgeworICAgICAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCgidGVzdDMiKTsK
KyAgICAgICAgICAgIGNvbnNvbGUubG9nKCJ0ZXN0MyBmZXRjaCBzdWNjZWVkZWQgdW5leHBlY3Rl
ZGx5Iik7CisgICAgICAgICAgICBjb25zb2xlLmxvZygidGVzdDMgc3RhdHVzIGNvZGU6ICIgKyBy
ZXNwb25zZS5zdGF0dXMpOworICAgICAgICAgICAgY29uc29sZS5sb2coInRlc3QzIHN0YXR1cyB0
ZXh0OiAiICsgcmVzcG9uc2Uuc3RhdHVzVGV4dCk7CisKKyAgICAgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICAgICAgY29uc29sZS5sb2coInRlc3QzIGZldGNoIGZhaWxlZCBhcyBleHBlY3RlZCIp
OworICAgICAgICB9CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIGNvbnNvbGUubG9nKCJHb3Qg
ZXhjZXB0aW9uOiAiICsgZSk7CisgICAgfQorICAgIGZpbmlzaFNXVGVzdCgpOworfQorCit0ZXN0
KCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>