<?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>202195</bug_id>
          
          <creation_ts>2019-09-25 03:45:24 -0700</creation_ts>
          <short_desc>Reuse existing web processes for running service workers</short_desc>
          <delta_ts>2019-12-05 10:36:06 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Service Workers</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=202992</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>202185</dependson>
          <blocked>202309</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>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>japhet</cc>
    
    <cc>pnormand</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1574011</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-25 03:45:24 -0700</bug_when>
    <thetext>Reuse existing web processes for running service workers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1574012</commentid>
    <comment_count>1</comment_count>
      <attachid>379534</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-25 03:48:30 -0700</bug_when>
    <thetext>Created attachment 379534
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1574027</commentid>
    <comment_count>2</comment_count>
      <attachid>379540</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-25 06:01:15 -0700</bug_when>
    <thetext>Created attachment 379540
Fix API tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1574419</commentid>
    <comment_count>3</comment_count>
      <attachid>379630</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-26 04:22:43 -0700</bug_when>
    <thetext>Created attachment 379630
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1574733</commentid>
    <comment_count>4</comment_count>
      <attachid>379630</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-09-26 22:12:35 -0700</bug_when>
    <thetext>Comment on attachment 379630
Patch

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

&gt; Source/WebKit/ChangeLog:26
&gt; +        We no longer terminate the web process when stopping service workers or when network process crash.

Is a runaway ServiceWorker still terminated when it has no clients?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1574738</commentid>
    <comment_count>5</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-26 22:58:22 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #4)
&gt; Comment on attachment 379630 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=379630&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/ChangeLog:26
&gt; &gt; +        We no longer terminate the web process when stopping service workers or when network process crash.
&gt; 
&gt; Is a runaway ServiceWorker still terminated when it has no clients?

Yes, we reuse the existing way to terminate service workers which if stop is not done after a timeout will make the process exit.

This is ok in that particular case since there is no client/page in the given process.
In other cases, like when marking a worker as redundant, we might actually exit the process that is running some pages.

This seems ok to me since we are partitioning by registrable domain and a bad service worker might anyway make the pages disfunction as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575005</commentid>
    <comment_count>6</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-27 15:44:09 -0700</bug_when>
    <thetext>Ping review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575265</commentid>
    <comment_count>7</comment_count>
      <attachid>379630</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-30 09:23:30 -0700</bug_when>
    <thetext>Comment on attachment 379630
Patch

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

&gt; Source/WebKit/UIProcess/WebProcessProxy.cpp:1445
&gt; +        disableServiceWorkers();

I don&apos;t understand why this is here.

&gt; LayoutTests/ChangeLog:3
&gt; +        ServiceWorkerFetchTask can use the NetworkConnectionToWebProcess sessionID

Inconsistent ChangeLog title.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575270</commentid>
    <comment_count>8</comment_count>
      <attachid>379630</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-30 09:55:56 -0700</bug_when>
    <thetext>Comment on attachment 379630
Patch

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

&gt;&gt; Source/WebKit/UIProcess/WebProcessProxy.cpp:1445
&gt;&gt; +        disableServiceWorkers();
&gt; 
&gt; I don&apos;t understand why this is here.

This is not strictly necessary.

AIUI, this code means that we are about to run JavaScript from various domains in this process.
In that case, it seems better to stop all service workers running in this process.
They will be relaunched in a process with a matching registrable domain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576455</commentid>
    <comment_count>9</comment_count>
      <attachid>379630</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-10-03 09:56:54 -0700</bug_when>
    <thetext>Comment on attachment 379630
Patch

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

This mostly seems good.

If we are writing code that says &quot;an existing web process can be reused for a service worker later&quot;, then I think we should have at least one API test that verifies that precise behavior.

&gt; Source/WebCore/workers/service/context/SWContextManager.h:98
&gt; +    static constexpr Seconds workerTerminationTimeoutForTest { 100_ms }; // Only used by layout tests.

I don&apos;t think workerTerminationTimeoutForTest is a better name than syncWorkerTerminationTimeout

Sync termination is not only about testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576807</commentid>
    <comment_count>10</comment_count>
      <attachid>380209</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-04 04:16:11 -0700</bug_when>
    <thetext>Created attachment 380209
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576828</commentid>
    <comment_count>11</comment_count>
      <attachid>380216</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-04 05:39:29 -0700</bug_when>
    <thetext>Created attachment 380216
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576847</commentid>
    <comment_count>12</comment_count>
      <attachid>380221</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-04 07:35:35 -0700</bug_when>
    <thetext>Created attachment 380221
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578181</commentid>
    <comment_count>13</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-09 04:09:11 -0700</bug_when>
    <thetext>Ping review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578240</commentid>
    <comment_count>14</comment_count>
      <attachid>380221</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-09 08:44:03 -0700</bug_when>
    <thetext>Comment on attachment 380221
Patch

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

&gt; Source/WebCore/testing/Internals.cpp:5237
&gt; +int Internals::processId() const

I think this should either be processID or processIdentifier, I have a preference for the latter.

&gt; Source/WebCore/workers/service/context/SWContextManager.h:72
&gt; +        bool m_isStopped { false };

Protected data members are not great practiced. I think this should be private. If it needs to be set from a subclass, then introduce a protected setter.

&gt; Source/WebCore/workers/service/context/SWContextManager.h:98
&gt; +    static constexpr Seconds syncWorkerTerminationTimeout { 100_ms }; // Only used by layout tests.

Doesn&apos;t Brady&apos;s patch from a couple days ago use sync worker termination is non-testing cases, when a service worker that not handle a fetch in time?

&gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:895
&gt; +    RELEASE_LOG(ServiceWorker, &quot;WebProcess %llu no longer useful for running service workers&quot;, webProcessIdentifier().toUInt64());

We should not be logging in ephemeral sessions. NetworkConnectionToWebProcess has a sessionID for you to do the check.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKProcessPoolPrivate.h:114
&gt; +- (void)_setForceSeparateServiceWorkerProcess:(BOOL)forceServiceWorkerProcess WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));

Why do we need this? Having to support both separate and merged models increases code complexity.

&gt; Source/WebKit/UIProcess/WebProcessPool.cpp:729
&gt; +            RELEASE_LOG(ServiceWorker, &quot;WebProcessPool::establishWorkerContextConnectionToNetworkProcess reusing an existing web process %p&quot;, serviceWorkerProcessProxy);

Please log PID too.

&gt; Source/WebKit/UIProcess/WebProcessPool.cpp:738
&gt; +        RELEASE_LOG(ServiceWorker, &quot;WebProcessPool::establishWorkerContextConnectionToNetworkProcess creating a new service worker process %p&quot;, serviceWorkerProcessProxy);

Please log PID too.

&gt; Source/WebKit/UIProcess/WebProcessPool.cpp:755
&gt; +    RegistrableDomainWithSessionID key { process.registrableDomain(), process.websiteDataStore().sessionID() };

The process&apos; registrable domain can change throughout the lifetime of a WebProcessProxy, this is therefore unsafe. In particular, if you do a load for a given domainA in a WebContent process, then a WebContent process&apos;s registrable domain becomes domainA. If later on, you do a load for domainB in this same process, then the web process&apos;s registrable domain gets nulled out (since the WebContent process is no longer associated with a single registrable domain). There are many reasons right now causing us to load different domains in a single process, since we are sometimes unable to process swap on navigation (e.g. due to opener links).

&gt; Source/WebKit/UIProcess/WebProcessPool.cpp:1141
&gt; +        auto iterator = m_serviceWorkerProcesses.find(RegistrableDomainWithSessionID { process-&gt;registrableDomain(), process-&gt;websiteDataStore().sessionID() });

Using process-&gt;registrableDomain() as key is unsafe here as mentioned earlier.

&gt; Source/WebKit/UIProcess/WebProcessPool.cpp:2538
&gt; +void WebProcessPool::setForceSeparateServiceWorkerProcess(bool forceServiceWorkerProcess)

Missing &quot;Separate&quot; in the parameter name.

&gt; Source/WebKit/UIProcess/WebProcessPool.h:530
&gt; +    void setForceSeparateServiceWorkerProcess(bool forceServiceWorkerProcess);

Parameter name should be omitted.

&gt; Source/WebKit/UIProcess/WebProcessPool.h:810
&gt; +    bool m_forceServiceWorkerProcess { false };

Bad naming:
- Missing a prefix for boolean variables
- You&apos;re missing &quot;Separate&quot; in there

&gt; Source/WebKit/UIProcess/WebProcessProxy.cpp:923
&gt; +    if (isRunningServiceWorkers())

2 issues here:
- Why isn&apos;t this in canTerminateAuxiliaryProcess() with the other conditions?
- If you add a new condition for not shutting down a process, then it usually means you need to add a call to maybeShutdown() when this condition may have changed. I do not see any new calls to maybeShutdown() in this patch, which raises a red flag. You should likely be calling maybeShutdown() when a process stops running service workers (unless we are already and I merely do not see it in this patch).

&gt; Source/WebKit/UIProcess/WebProcessProxy.cpp:1445
&gt; +        disableServiceWorkers();

Oh, I see now that you deal with the registrable domain&apos;s getting reset here. Looks like this makes sure we remove the process from the HashMap before its registrable domain. 
Please disregard my previous comments about the registrable domain changing then. This looks fragile but acceptable.

&gt; Source/WebKit/UIProcess/WebProcessProxy.cpp:1548
&gt; +    if (m_processPool)

m_processPool should never be null. Just use the processPool() getter which returns a ref.

&gt; Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.cpp:99
&gt; +    WebProcess::singleton().disableTermination();

Please explain in the change log why this is needed. It is not obvious to me why and why it is OK, mostly because I am unfamiliar with disableTermination.

&gt; Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.h:98
&gt; +    void stop();

I am unclear what it means to &quot;stop&quot; a *connection*. Terminate or closing a connection makes sense, but stopping is less clear.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578605</commentid>
    <comment_count>15</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-10 05:09:41 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKProcessPoolPrivate.h:114
&gt; &gt; +- (void)_setForceSeparateServiceWorkerProcess:(BOOL)forceServiceWorkerProcess WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
&gt; 
&gt; Why do we need this? Having to support both separate and merged models
&gt; increases code complexity.

The added complexity is limited to an if check in WebProcessPool::establishWorkerContextConnectionToNetworkProcess.
We use this for instance in layout tests to check the effect of a service worker crash on a service worker client.
We also use this in API tests.

&gt; &gt; Source/WebKit/UIProcess/WebProcessProxy.cpp:923
&gt; &gt; +    if (isRunningServiceWorkers())
&gt; 
&gt; 2 issues here:
&gt; - Why isn&apos;t this in canTerminateAuxiliaryProcess() with the other conditions?
&gt; - If you add a new condition for not shutting down a process, then it
&gt; usually means you need to add a call to maybeShutdown() when this condition
&gt; may have changed. I do not see any new calls to maybeShutdown() in this
&gt; patch, which raises a red flag. You should likely be calling maybeShutdown()
&gt; when a process stops running service workers (unless we are already and I
&gt; merely do not see it in this patch).

The principle is to use enableTermination/disableTermination which kicks in whenever network process decides that a given connection is no longer needed.
WebProcessProxy will disable service workers, which will make WebProcess close the connection to UIProcess if there is no page running in the web process.
Since we have this logic in UIProcess as well, it is indeed more consistent to also do the same in UIProcess.

&gt; &gt; Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.cpp:99
&gt; &gt; +    WebProcess::singleton().disableTermination();
&gt; 
&gt; Please explain in the change log why this is needed. It is not obvious to me
&gt; why and why it is OK, mostly because I am unfamiliar with disableTermination.

disableTermination/enableTermination is used in WebProcess whenever a page is created/removed.
We reuse the same mechanism for service workers by making the service worker connection counts as a page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578615</commentid>
    <comment_count>16</comment_count>
      <attachid>380637</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-10 06:20:50 -0700</bug_when>
    <thetext>Created attachment 380637
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578624</commentid>
    <comment_count>17</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-10 06:56:29 -0700</bug_when>
    <thetext>If the code path is used only for testing and not a configuration we want to ship, I do not know why we are keeping it. The complexity is not just an if check, it is keeping a decent amount of extra code around and not knowing which code path is being taken.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578633</commentid>
    <comment_count>18</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-10 07:15:12 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #17)
&gt; If the code path is used only for testing and not a configuration we want to
&gt; ship, I do not know why we are keeping it.

This is basically a runtime flag that can be switched on and off.
This seems actually good to me to have in case we discover issues.
I guess we could try to go with WebPreferences.

&gt; The complexity is not just an if
&gt; check, it is keeping a decent amount of extra code around and not knowing
&gt; which code path is being taken.

There is an if check and getters/setters.
Other than that, I am not sure to see what additional complexity this switch is adding.

In terms of complexity, I agree the approach to reuse existing processes adds some complexity. In particular, in some cases, service workers will run in the same process as a page and sometimes they will not. This is independent though of the switch to enable this approach or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578661</commentid>
    <comment_count>19</comment_count>
      <attachid>380637</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-10 08:30:58 -0700</bug_when>
    <thetext>Comment on attachment 380637
Patch

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

&gt; Tools/ChangeLog:9
&gt; +        This is useful for tests trying to crash the service worker process.

Can&apos;t those tests simply window.open() another origin to get a separate service worker process?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578759</commentid>
    <comment_count>20</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-10 11:37:46 -0700</bug_when>
    <thetext>&gt; Can&apos;t those tests simply window.open() another origin to get a separate
&gt; service worker process?

We could probably do that, until we support full process isolation, where it might break.

I honestly do not really see the added complexity of this boolean.

I am also thinking of being able to turn the feature on/off for perf comparison as part of the Debug menu.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579502</commentid>
    <comment_count>21</comment_count>
      <attachid>380637</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-13 12:11:38 -0700</bug_when>
    <thetext>Comment on attachment 380637
Patch

Rejecting attachment 380637 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 380637, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 5000 characters of output:
.
Fetching: https://bugs.webkit.org/attachment.cgi?id=380637&amp;action=edit
Fetching: https://bugs.webkit.org/show_bug.cgi?id=202195&amp;ctype=xml&amp;excludefield=attachmentdata
Processing 1 patch from 1 bug.
Processing patch 380637 from bug 202195.
Fetching: https://bugs.webkit.org/attachment.cgi?id=380637
Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Chris Dumez&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Parsed 47 diffs from patch file(s).
patching file Source/WebCore/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Source/WebKit/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Source/WebCore/testing/Internals.cpp
Hunk #2 succeeded at 5252 with fuzz 2 (offset 4 lines).
patching file Source/WebCore/testing/Internals.h
Hunk #1 succeeded at 892 (offset 2 lines).
patching file Source/WebCore/testing/Internals.idl
patching file Source/WebCore/testing/ServiceWorkerInternals.cpp
patching file Source/WebCore/testing/ServiceWorkerInternals.h
patching file Source/WebCore/testing/ServiceWorkerInternals.idl
patching file Source/WebCore/workers/service/ServiceWorkerProvider.cpp
patching file Source/WebCore/workers/service/context/SWContextManager.cpp
patching file Source/WebCore/workers/service/context/SWContextManager.h
patching file Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp
patching file Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h
patching file Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.messages.in
patching file Source/WebKit/NetworkProcess/NetworkHTTPSUpgradeChecker.cpp
patching file Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp
Hunk #6 FAILED at 141.
1 out of 6 hunks FAILED -- saving rejects to file Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp.rej
patching file Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h
patching file Source/WebKit/UIProcess/API/C/WKContext.cpp
patching file Source/WebKit/UIProcess/API/C/WKContextPrivate.h
patching file Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm
Hunk #1 succeeded at 448 (offset 1 line).
Hunk #2 succeeded at 509 (offset 1 line).
patching file Source/WebKit/UIProcess/API/Cocoa/WKProcessPoolPrivate.h
patching file Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp
patching file Source/WebKit/UIProcess/Network/NetworkProcessProxy.h
patching file Source/WebKit/UIProcess/Network/NetworkProcessProxy.messages.in
patching file Source/WebKit/UIProcess/WebProcessPool.cpp
Hunk #1 succeeded at 671 (offset 1 line).
Hunk #2 succeeded at 702 (offset 1 line).
Hunk #3 succeeded at 1134 (offset -1 lines).
Hunk #4 succeeded at 1151 (offset -1 lines).
Hunk #5 succeeded at 1240 (offset -1 lines).
Hunk #6 succeeded at 1719 (offset -3 lines).
Hunk #7 succeeded at 2454 (offset -79 lines).
patching file Source/WebKit/UIProcess/WebProcessPool.h
Hunk #1 succeeded at 387 (offset 3 lines).
Hunk #2 succeeded at 520 (offset -8 lines).
Hunk #3 succeeded at 797 (offset -10 lines).
patching file Source/WebKit/UIProcess/WebProcessProxy.cpp
Hunk #2 succeeded at 962 with fuzz 1 (offset 3 lines).
Hunk #3 succeeded at 1469 (offset 3 lines).
Hunk #4 succeeded at 1568 (offset 5 lines).
patching file Source/WebKit/UIProcess/WebProcessProxy.h
Hunk #1 succeeded at 123 (offset -2 lines).
patching file Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.cpp
patching file Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.h
patching file Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.messages.in
patching file Source/WebKit/WebProcess/WebProcess.cpp
patching file Tools/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm
patching file Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl
patching file Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp
patching file Tools/WebKitTestRunner/InjectedBundle/TestRunner.h
patching file Tools/WebKitTestRunner/TestController.cpp
patching file Tools/WebKitTestRunner/TestInvocation.cpp
patching file LayoutTests/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file LayoutTests/http/tests/workers/service/resources/postmessage-after-sw-process-crash.js
patching file LayoutTests/http/tests/workers/service/resources/postmessage-after-terminate.js
patching file LayoutTests/http/tests/workers/service/resources/postmessage-after-terminating-hung-worker.js
patching file LayoutTests/http/wpt/service-workers/online.https.html
patching file LayoutTests/http/wpt/service-workers/service-worker-different-process.https-expected.txt
patching file LayoutTests/http/wpt/service-workers/service-worker-different-process.https.html
patching file LayoutTests/http/wpt/service-workers/service-worker-process-worker.js

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Chris Dumez&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: https://webkit-queues.webkit.org/results/13125926</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579558</commentid>
    <comment_count>22</comment_count>
      <attachid>380857</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-13 23:48:58 -0700</bug_when>
    <thetext>Created attachment 380857
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579565</commentid>
    <comment_count>23</comment_count>
      <attachid>380857</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-14 00:54:08 -0700</bug_when>
    <thetext>Comment on attachment 380857
Patch for landing

Clearing flags on attachment: 380857

Committed r251067: &lt;https://trac.webkit.org/changeset/251067&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579566</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-14 00:54:10 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579596</commentid>
    <comment_count>25</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2019-10-14 04:14:34 -0700</bug_when>
    <thetext>This broke some GTK bots. Any idea?
https://build.webkit.org/builders/GTK%20Linux%2064-bit%20Release%20Debian%20Stable%20%28Build%29/builds/26075/steps/compile-webkit/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579597</commentid>
    <comment_count>26</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2019-10-14 04:15:30 -0700</bug_when>
    <thetext>WebKit::WebProcessProxy::createForServiceWorkers(WebKit::WebProcessPool&amp;, WebCore::RegistrableDomain&amp;&amp;, WebKit::WebsiteDataStore&amp;): error: undefined reference to &apos;WebKit::WebProcessProxy::enableServiceWorkers()&apos;
collect2: error: ld returned 1 exit status</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579598</commentid>
    <comment_count>27</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-14 04:20:02 -0700</bug_when>
    <thetext>(In reply to Philippe Normand from comment #26)
&gt; WebKit::WebProcessProxy::createForServiceWorkers(WebKit::WebProcessPool&amp;,
&gt; WebCore::RegistrableDomain&amp;&amp;, WebKit::WebsiteDataStore&amp;): error: undefined
&gt; reference to &apos;WebKit::WebProcessProxy::enableServiceWorkers()&apos;
&gt; collect2: error: ld returned 1 exit status

Oh probably ENABLE(SERVICE_WORKER) issue, I&apos;ll fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579600</commentid>
    <comment_count>28</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-14 04:26:26 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579601</commentid>
    <comment_count>29</comment_count>
      <attachid>380875</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-14 04:26:29 -0700</bug_when>
    <thetext>Created attachment 380875
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579602</commentid>
    <comment_count>30</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-14 04:26:39 -0700</bug_when>
    <thetext>&lt;rdar://problem/56245134&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579603</commentid>
    <comment_count>31</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-14 04:26:41 -0700</bug_when>
    <thetext>&lt;rdar://problem/56245136&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579604</commentid>
    <comment_count>32</comment_count>
      <attachid>380875</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2019-10-14 04:29:18 -0700</bug_when>
    <thetext>Comment on attachment 380875
Patch

rs=me :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579636</commentid>
    <comment_count>33</comment_count>
      <attachid>380875</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-14 08:37:10 -0700</bug_when>
    <thetext>Comment on attachment 380875
Patch

Clearing flags on attachment: 380875

Committed r251073: &lt;https://trac.webkit.org/changeset/251073&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1579637</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-14 08:37:12 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379534</attachid>
            <date>2019-09-25 03:48:30 -0700</date>
            <delta_ts>2019-09-25 06:01:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202195-20190925124828.patch</filename>
            <type>text/plain</type>
            <size>44651</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwMjAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjcyYjBhODYxMTExZjM3
YTA5YjVjYTlmZTVjMjRlMTZjMTkzNGI3Zi4uMjM2YWEwZjcwNjIyM2UyNGU3YTViYmZiMGM3Yjdk
YmRiMmNiMTJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE5LTA5LTI1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXVzZSBleGlzdGluZyB3
ZWIgcHJvY2Vzc2VzIGZvciBydW5uaW5nIHNlcnZpY2Ugd29ya2VycworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMTk1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0
cy4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclByb3ZpZGVyOjpyZWdpc3RlclNlcnZp
Y2VXb3JrZXJDbGllbnRzKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0Nv
bnRleHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6OnNl
dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1dDb250ZXh0TWFuYWdlcjo6c3RvcEFs
bFNlcnZpY2VXb3JrZXJzKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0Nv
bnRleHRNYW5hZ2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2VyOjpDb25u
ZWN0aW9uOjppc1N0b3BwZWQgY29uc3QpOgorCiAyMDE5LTA5LTI1ICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBIYW5kbGUgdGhlIGNhc2Ugb2YgYSBzZXJ2aWNl
IHdvcmtlciB0YWtpbmcgdG9vIG11Y2ggdGltZSB0byBwcm9jZXNzIGEgZmV0Y2ggZXZlbnQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggMzQ2NzIzMmQxYWQwMmY0NGJmYmVkOWZhZmYzM2FlOTFiMzdjZDUwOC4uMGIzZGJh
MGNjYTVjNjk0NWIxOGM0YjU1MjAyMjRlOWY4OTEzODg1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1
NiBAQAorMjAxOS0wOS0yNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmV1c2UgZXhpc3Rpbmcgd2ViIHByb2Nlc3NlcyBmb3IgcnVubmluZyBzZXJ2aWNlIHdv
cmtlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MjE5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
dXNpbmcgd2ViIHByb2Nlc3NlcyBmb3Igc2VydmljZSB3b3JrZXJzCisKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246On5XZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOgorICAgICAg
ICAoV0tDb250ZXh0U2V0Rm9yY2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9v
bCBfc2V0Rm9yY2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzOl0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6d29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRl
ZCk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVtb3Zl
RnJvbVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6ZGlzY29ubmVjdFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp0ZXJt
aW5hdGVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpz
ZXRGb3JjZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6Om1heWJlU2h1dERvd24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpc2FibGVTZXJ2aWNlV29ya2Vycyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZW5hYmxlU2VydmljZVdvcmtlcnMp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Byb3h5Ojppc01hdGNoaW5nUmVnaXN0cmFibGVEb21haW4gY29uc3QpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fdXNlckFnZW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnRlcm1pbmF0ZVdvcmtlcik6CisgICAgICAg
IChXZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzeW5jVGVybWluYXRlV29y
a2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnN0
b3ApOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpuZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb25DbG9zZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpyZWdpc3RlclNlcnZp
Y2VXb3JrZXJDbGllbnRzKToKKwogMjAxOS0wOS0yNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBh
cHBsZS5jb20+CiAKICAgICAgICAgSGFuZGxlIHRoZSBjYXNlIG9mIGEgc2VydmljZSB3b3JrZXIg
dGFraW5nIHRvbyBtdWNoIHRpbWUgdG8gcHJvY2VzcyBhIGZldGNoIGV2ZW50CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclByb3ZpZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUHJvdmlkZXIu
Y3BwCmluZGV4IGVlZDI2NmQ1NmI5N2U5MWJkN2M5NDgwY2I1YzIzMzM1ZDhmMmUzY2IuLjU5YjMz
MjU1MzY2MTExZDIwZWRkNDAzOWJkNTQ3N2NkZmRlZDVlZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwCkBA
IC0yOSw2ICsyOSw5IEBACiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgi
CisjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJTV0NsaWVudENvbm5l
Y3Rpb24uaCIKICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgogCkBAIC02NCw2ICs2Nyw4IEBA
IHZvaWQgU2VydmljZVdvcmtlclByb3ZpZGVyOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRz
KCkKIHsKICAgICBzZXRNYXlIYXZlUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJzKCk7CiAgICAgZm9y
IChhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMoKSkgeworICAgICAgICBp
ZiAoIWRvY3VtZW50LT5wYWdlKCkgfHwgZG9jdW1lbnQtPnBhZ2UoKS0+bWFpbkZyYW1lKCkubG9h
ZGVyKCkuY2xpZW50KCkuaXNTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQoKSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoU2NoZW1lUmVnaXN0cnk6OmNhblNlcnZpY2VX
b3JrZXJzSGFuZGxlVVJMU2NoZW1lKGRvY3VtZW50LT51cmwoKS5wcm90b2NvbCgpLnRvU3RyaW5n
V2l0aG91dENvcHlpbmcoKSkpCiAgICAgICAgICAgICBkb2N1bWVudC0+c2V0U2VydmljZVdvcmtl
ckNvbm5lY3Rpb24oJnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKCkpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0
TWFuYWdlci5jcHAKaW5kZXggNzc0ZjM4NWYxOGFiYmE4MTI4OGI3OTE0YWM5YzkxZWIyNTE0NGYz
NS4uYWVkMTNkNzMwZTY5MmM5MDcxM2M1ZjlkMDQ5ZDIwMjQ5ODcyZDJkOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0
TWFuYWdlci5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgU1dDb250ZXh0TWFuYWdlciYgU1dDb250ZXh0
TWFuYWdlcjo6c2luZ2xldG9uKCkKIAogdm9pZCBTV0NvbnRleHRNYW5hZ2VyOjpzZXRDb25uZWN0
aW9uKHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCiB7Ci0gICAgQVNT
RVJUKCFtX2Nvbm5lY3Rpb24pOworICAgIEFTU0VSVCghbV9jb25uZWN0aW9uIHx8IG1fY29ubmVj
dGlvbi0+aXNTdG9wcGVkKCkpOwogICAgIG1fY29ubmVjdGlvbiA9IFdURk1vdmUoY29ubmVjdGlv
bik7CiB9CiAKQEAgLTE3Nyw2ICsxNzcsMTYgQEAgU1dDb250ZXh0TWFuYWdlcjo6U2VydmljZVdv
cmtlclRlcm1pbmF0aW9uUmVxdWVzdDo6U2VydmljZVdvcmtlclRlcm1pbmF0aW9uUmVxdWUKICAg
ICBtX3RpbWVvdXRUaW1lci5zdGFydE9uZVNob3QodGltZW91dCk7CiB9CiAKK3ZvaWQgU1dDb250
ZXh0TWFuYWdlcjo6c3RvcEFsbFNlcnZpY2VXb3JrZXJzKCkKK3sKKyAgICBhdXRvIHNlcnZpY2VX
b3JrZXJzID0gV1RGTW92ZShtX3dvcmtlck1hcCk7CisgICAgZm9yIChhdXRvJiBzZXJ2aWNlV29y
a2VyIDogc2VydmljZVdvcmtlcnMudmFsdWVzKCkpIHsKKyAgICAgICAgc2VydmljZVdvcmtlci0+
c2V0QXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCgpOworICAgICAgICBtX3BlbmRpbmdTZXJ2aWNl
V29ya2VyVGVybWluYXRpb25SZXF1ZXN0cy5hZGQoc2VydmljZVdvcmtlci0+aWRlbnRpZmllcigp
LCBtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJUZXJtaW5hdGlvblJlcXVlc3Q+KCp0aGlzLCBzZXJ2
aWNlV29ya2VyLT5pZGVudGlmaWVyKCksIHdvcmtlclRlcm1pbmF0aW9uVGltZW91dCkpOworICAg
ICAgICBzZXJ2aWNlV29ya2VyLT50aHJlYWQoKS5zdG9wKFtdIHsgfSk7CisgICAgfQorfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCmluZGV4IDYy
OGMzZjM4OTJiZWVlMjQyYzJlZjdmZjllZTIyMTYwZmRkYzIxMzUuLjVkNzgzY2M0YWQ1NTg5Yjk3
ZTI4MjAwNjVmYmQ2ZmZlY2MxZjI3MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKQEAgLTY1LDYgKzY1
LDExIEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGNsYWltKFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpID0gMDsKIAogICAgICAgICB2
aXJ0dWFsIGJvb2wgaXNUaHJvdHRsZWFibGUoKSBjb25zdCA9IDA7CisKKyAgICAgICAgYm9vbCBp
c1N0b3BwZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU3RvcHBlZDsgfQorCisgICAgcHJvdGVjdGVk
OgorICAgICAgICBib29sIG1faXNTdG9wcGVkIHsgZmFsc2UgfTsKICAgICB9OwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRDb25uZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9u
PiYmKTsKQEAgLTg3LDYgKzkyLDExIEBAIHB1YmxpYzoKIAogICAgIFNlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eSogd29ya2VyQnlJRChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKSB7
IHJldHVybiBtX3dvcmtlck1hcC5nZXQoaWRlbnRpZmllcik7IH0KIAorICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc3RvcEFsbFNlcnZpY2VXb3JrZXJzKCk7CisKKyAgICBzdGF0aWMgY29uc3RleHBy
IFNlY29uZHMgd29ya2VyVGVybWluYXRpb25UaW1lb3V0IHsgMTBfcyB9OworICAgIHN0YXRpYyBj
b25zdGV4cHIgU2Vjb25kcyB3b3JrZXJUZXJtaW5hdGlvblRpbWVvdXRGb3JUZXN0IHsgMTAwX21z
IH07IC8vIE9ubHkgdXNlZCBieSBsYXlvdXQgdGVzdHMuCisKIHByaXZhdGU6CiAgICAgU1dDb250
ZXh0TWFuYWdlcigpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRl
eCAyNjQzY2FiMjlkMTBiMzNkZmFkYWRjODUxNDA5YmFhZGZlNWJiYTRkLi44MDU1MzgyMmYwODlk
NzdlOWI0NmEzYjliNjI5NGJmYjE1NDUxMTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cApAQCAtMjE4LDE5ICsyMTgsMTUgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW8KICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0g
TWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpKSB7Ci0gICAgICAgIEFTU0VSVChtX3N3Q29udGV4dENvbm5lY3Rpb24pOwotICAgICAg
ICBpZiAobV9zd0NvbnRleHRDb25uZWN0aW9uKSB7CisgICAgICAgIGlmIChtX3N3Q29udGV4dENv
bm5lY3Rpb24pCiAgICAgICAgICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24tPmRpZFJlY2VpdmVN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSkgewotICAgICAgICBBU1NFUlQobV9zd0NvbnRleHRDb25uZWN0aW9uKTsK
LSAgICAgICAgaWYgKG1fc3dDb250ZXh0Q29ubmVjdGlvbikgeworICAgICAgICBpZiAobV9zd0Nv
bnRleHRDb25uZWN0aW9uKQogICAgICAgICAgICAgbV9zd0NvbnRleHRDb25uZWN0aW9uLT5kaWRS
ZWNlaXZlRmV0Y2hUYXNrTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQorICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCiAKQEAg
LTg3NCw2ICs4NzAsMTQgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0
YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihSZWdpc3RyYWJsZURvbWEKICAgICBpZiAoYXV0byog
c2VydmVyID0gbV9uZXR3b3JrUHJvY2Vzcy0+c3dTZXJ2ZXJGb3JTZXNzaW9uSWZFeGlzdHMobV9z
ZXNzaW9uSUQpKQogICAgICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPFdl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4oKnRoaXMsIFdURk1vdmUocmVnaXN0cmFibGVE
b21haW4pLCAqc2VydmVyKTsKIH0KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKCkKK3sKKyAgICBSRUxF
QVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiV2ViUHJvY2VzcyAlbGx1IG5vIGxvbmdlciB1c2VmdWwg
Zm9yIHJ1bm5pbmcgc2VydmljZSB3b3JrZXJzIiwgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKS50b1VJ
bnQ2NCgpKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpXb3JrZXJDb250ZXh0Q29ubmVj
dGlvbk5vTG9uZ2VyTmVlZGVkIHsgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9LCAwKTsKKworICAg
IG1fc3dDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7Cit9CiAjZW5kaWYKIAogdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlTmV3TWVzc2FnZVBvcnRDaGFubmVsKGNv
bnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcG9ydDEsIGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRp
ZmllciYgcG9ydDIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggOTdkYzI0YjhmYWE3OWZl
MDZlZmYwZmExNmRkOWYyNjg3NTY4YTA1NS4uYWI0ZjBkZTc0ZjFlNmYxNTY0MzYwZjkyZWUwNTNk
YTY5ODJlOTY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMTU1LDYgKzE1NSwxMCBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGNoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5KGNv
bnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhhc0FjdGl2aXR5KT4mJik7
CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgdm9pZCBzZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vz
c0lkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
Y3BwCmluZGV4IDdhNDZhYWIxNzVlMmE5MGY1MDE4MTY3MTkyNWM4OWFhZjE4NjVhOGEuLjJlZjM1
MTU4MWVjZmE0YWQ2ODYyZTNlNGUyOTNiZWVkYzkzMjA1ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC01MSw3ICs1MSwxMCBA
QCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OldlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbihOZXR3b3JrQ29ubmVjdGlvbgogCiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246On5XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKQogewotICAgIGNvbm5lY3Rpb25D
bG9zZWQoKTsKKyAgICBhdXRvIGZldGNoZXMgPSBXVEZNb3ZlKG1fb25nb2luZ0ZldGNoZXMpOwor
ICAgIGZvciAoYXV0byYgZmV0Y2ggOiBmZXRjaGVzLnZhbHVlcygpKQorICAgICAgICBmZXRjaC0+
ZmFpbChSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgeyB9LCAi
U2VydmljZSBXb3JrZXIgY29udGV4dCBjbG9zZWQiX3MgfSk7CisKICAgICBpZiAobV9zZXJ2ZXIg
JiYgbV9zZXJ2ZXItPmNvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0
cmFibGVEb21haW4oKSkgPT0gdGhpcykKICAgICAgICAgbV9zZXJ2ZXItPnJlbW92ZUNvbnRleHRD
b25uZWN0aW9uKCp0aGlzKTsKIH0KQEAgLTY2LDEzICs2OSw2IEBAIHVpbnQ2NF90IFdlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25z
dAogICAgIHJldHVybiAwOwogfQogCi12b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bjo6Y29ubmVjdGlvbkNsb3NlZCgpCi17Ci0gICAgYXV0byBmZXRjaGVzID0gV1RGTW92ZShtX29u
Z29pbmdGZXRjaGVzKTsKLSAgICBmb3IgKGF1dG8mIGZldGNoIDogZmV0Y2hlcy52YWx1ZXMoKSkK
LSAgICAgICAgZmV0Y2gtPmZhaWwoUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50
ZXJuYWwsIDAsIHsgfSwgIlNlcnZpY2UgV29ya2VyIGNvbnRleHQgY2xvc2VkIl9zIH0pOwotfQot
CiB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZp
Y2VXb3JrZXJDbGllbnQoY29uc3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIGRlc3Rp
bmF0aW9uSWRlbnRpZmllciwgY29uc3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmIG1lc3NhZ2Us
IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
c291cmNlT3JpZ2luKQogewogICAgIGlmICghbV9zZXJ2ZXIpCkBAIC0xMzQsOSArMTMwLDcgQEAg
dm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmRpZEZpbmlzaFNraXBXYWl0aW5n
KHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAKIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjpjb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpCiB7Ci0gICAgUkVMRUFTRV9MT0coU2Vy
dmljZVdvcmtlciwgIlNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgaXMgbm8gbG9uZ2VyIG5lZWRlZCwg
dGVybWluYXRpbmcgaXQiKTsKLSAgICB0ZXJtaW5hdGUoKTsKLSAgICBjb25uZWN0aW9uQ2xvc2Vk
KCk7CisgICAgbV9jb25uZWN0aW9uLnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5l
ZWRlZCgpOwogfQogCiB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2V0VGhy
b3R0bGVTdGF0ZShib29sIGlzVGhyb3R0bGVhYmxlKQpAQCAtMTQ1LDExICsxMzksNiBAQCB2b2lk
IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2V0VGhyb3R0bGVTdGF0ZShib29sIGlz
VGhyb3R0bGVhYmxlKQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uOjpTZXRUaHJvdHRsZVN0YXRlIHsgaXNUaHJvdHRsZWFibGUgfSk7CiB9CiAKLXZvaWQg
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp0ZXJtaW5hdGUoKQotewotICAgIHNlbmQo
TWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpUZXJtaW5hdGVQcm9jZXNz
KCkpOwotfQotCiB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c3RhcnRGZXRj
aChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29udGVu
dENvbm5lY3Rpb24sIFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIsIEZldGNoSWRlbnRpZmllciBjb250ZW50RmV0Y2hJZGVudGlm
aWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMs
IGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgcmVmZXJy
ZXIpCiB7CiAgICAgYXV0byBmZXRjaElkZW50aWZpZXIgPSBGZXRjaElkZW50aWZpZXI6OmdlbmVy
YXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmgKaW5kZXggNzQ3MWJjNTIyYTQwZmZiNGU3Y2RiMWE3YTkyMmY5YTUyYmUxZDU2My4uMGQ3Njdj
M2U4NDY1NTE0MjM2ODgwYmU3MTA0MDU3MGZjZGMzNWE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtNTksOCArNTksNiBAQCBwdWJs
aWM6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCi0gICAgdm9pZCB0
ZXJtaW5hdGUoKTsKLQogICAgIHZvaWQgc3RhcnRGZXRjaChQQUw6OlNlc3Npb25JRCwgUmVmPElQ
Qzo6Q29ubmVjdGlvbj4mJiwgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwg
V2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6RmV0Y2hP
cHRpb25zJiwgY29uc3QgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYpOwog
ICAgIHZvaWQgY2FuY2VsRmV0Y2goV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
Zmllcik7CiAgICAgdm9pZCBjb250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKFdlYkNvcmU6
OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwg
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKaW5kZXggNTg5MzgwM2FhYjhiZWFmYjNmY2VjYWMyNGFi
ZWI5MjM0ZjVhNTY3My4uMzkzNTNkY2IwOTkxYTRmYWM2OWI3ODQwMGJiMDA5MjhhYWJiMTdkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCkBAIC02Nzks
MyArNjc5LDggQEAgdm9pZCBXS0NvbnRleHRDbGVhckxlZ2FjeVByaXZhdGVCcm93c2luZ0xvY2Fs
U3RvcmFnZShXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgdm8KICAgICAgICAgICAgIGNhbGxiYWNr
KGNvbnRleHQpOwogICAgIH0pOwogfQorCit2b2lkIFdLQ29udGV4dFNldEZvcmNlU2VwYXJhdGVT
ZXJ2aWNlV29ya2VyUHJvY2VzcyhXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgYm9vbCBmb3JjZVNl
cnZpY2VXb3JrZXJQcm9jZXNzKQoreworICAgIFdlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpLT5z
ZXRGb3JjZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MoZm9yY2VTZXJ2aWNlV29ya2VyUHJv
Y2Vzcyk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Nv
bnRleHRQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQ
cml2YXRlLmgKaW5kZXggNWE5NTM2ZTY5YWE3NmE0ZGQ1N2M1NmY4NWE2NmZhYzI5ZjVkMGE1My4u
ZTIxMGRhNzU5ZmQ3ZDg4YzM1YjAwZDY3YzRmNjk1NmJjZjQzNTNjNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaApAQCAtMTI0LDYgKzEy
NCw4IEBAIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFN5bmNMb2NhbFN0b3JhZ2UoV0tDb250ZXh0
UmVmIGNvbnRleHRSZWYsIHZvaWQqIGNvbnRleHQsCiB0eXBlZGVmIHZvaWQgKCpXS0NvbnRleHRD
bGVhckxlZ2FjeVByaXZhdGVCcm93c2luZ0xvY2FsU3RvcmFnZUNhbGxiYWNrKSh2b2lkKiBmdW5j
dGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0Q2xlYXJMZWdhY3lQcml2YXRl
QnJvd3NpbmdMb2NhbFN0b3JhZ2UoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIHZvaWQqIGNvbnRl
eHQsIFdLQ29udGV4dENsZWFyTGVnYWN5UHJpdmF0ZUJyb3dzaW5nTG9jYWxTdG9yYWdlQ2FsbGJh
Y2sgY2FsbGJhY2spOwogCitXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRGb3JjZVNlcGFyYXRl
U2VydmljZVdvcmtlclByb2Nlc3MoV0tDb250ZXh0UmVmIGNvbnRleHQsIGJvb2wgZm9yY2VTZXJ2
aWNlV29ya2VyUHJvY2Vzcyk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCmlu
ZGV4IGY1Y2E0Njc1ODk1ZTEyZTZiNmQ5MzhlZDdiYzhkN2Y1ZTU4YjA4Y2YuLmIzZTA3YjNjY2Ey
OTNhMmYwYzZjMzhiYTk4YzE0MGFlNWQzMzVjOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCkBAIC00NTcsNiArNDU3LDExIEBA
IHN0YXRpYyBOU0RpY3Rpb25hcnkgKnBvbGljaWVzSGFzaE1hcFRvRGljdGlvbmFyeShjb25zdCBI
YXNoTWFwPFN0cmluZywgSGFzaE1hcDxTCiAgICAgX3Byb2Nlc3NQb29sLT5kaXNhYmxlU2Vydmlj
ZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5KCk7CiB9CiAKKy0gKHZvaWQpX3NldEZvcmNl
U2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2VzczooQk9PTClmb3JjZVNlcnZpY2VXb3JrZXJQcm9j
ZXNzCit7CisgICAgX3Byb2Nlc3NQb29sLT5zZXRGb3JjZVNlcGFyYXRlU2VydmljZVdvcmtlclBy
b2Nlc3MoZm9yY2VTZXJ2aWNlV29ya2VyUHJvY2Vzcyk7Cit9CisKIC0gKHBpZF90KV9uZXR3b3Jr
UHJvY2Vzc0lkZW50aWZpZXIKIHsKICAgICByZXR1cm4gX3Byb2Nlc3NQb29sLT5uZXR3b3JrUHJv
Y2Vzc0lkZW50aWZpZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKaW5kZXggYWRlZGRjODI0MDA4NzYwMzc2
YjI5YWNiOWRhNmYzYjZiNmYzZjEyYS4uNTEwMjJiMDAyODY2MmExNjliYzE2ZmY0OThlMWYzNTg5
ODk2ZGU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
UHJvY2Vzc1Bvb2xQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKQEAgLTkwLDYgKzkwLDcgQEAKIC0gKHZvaWQpX3Nl
bmROZXR3b3JrUHJvY2Vzc0RpZFJlc3VtZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClfdGVybWluYXRlU2VydmljZVdvcmtlclBy
b2Nlc3NlcyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0KSwgaW9zKDEyLjApKTsKIC0gKHZv
aWQpX2Rpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcygxMC4xNCksIGlvcygxMi4wKSk7CistICh2b2lkKV9zZXRGb3JjZVNlcGFy
YXRlU2VydmljZVdvcmtlclByb2Nlc3M6KEJPT0wpZm9yY2VTZXJ2aWNlV29ya2VyUHJvY2VzcyBX
S19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiAv
LyBUZXN0IG9ubHkuCiAtIChwaWRfdClfbmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoMTAuMTMpLCBpb3MoMTEuMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggOTBl
NWZmYWIyODkwOTBjM2M0NjdmMWQ4OGMxYjg5MzlhOWE1NTY4Ni4uZjhjMTE0Y2JjYWQ4NmI4OTIz
ZDQ4ZjQ0M2U1ZmQ2MjgxYzU0NzJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0xMjA0LDYgKzEyMDQs
MTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29u
bmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUmVnaXMKIHsKICAgICBtX3Byb2Nlc3NQb29sLmVzdGFi
bGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcygqdGhpcywgV1RGTW92
ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlc3Npb25JRCk7CiB9CisKK3ZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6d29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvKiBwcm9jZXNzID0g
V2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihpZGVudGlmaWVyKSkKKyAgICAg
ICAgcHJvY2Vzcy0+ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7Cit9CiAjZW5kaWYKIAogdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IGN1
cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8dWludDY0X3Q+IHF1b3RhKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggZDRiZGE3Y2VjNzU5M2RlNDllMjc4ZTRlZWQ3
YTc1MzUwZWY1MjhkNy4uNTRhN2Y3MzVkMGY3ZGNhYjZkZDhhMTBiNmZkMzAzMmZkMjZmMjIyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmgKQEAgLTIzOSw2ICsyMzksNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQogICAgIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFBBTDo6U2Vzc2lv
bklEKTsKKyAgICB2b2lkIHdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2Vi
Q29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOwogI2VuZGlmCiAKICAgICB2b2lkIHJlcXVlc3RTdG9y
YWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIHVp
bnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0X3Qgc3BhY2VSZXF1aXJl
ZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDx1aW50NjRfdD4gcXVvdGEpPiYmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCBhNmRiYjdjNWM5MzYzM2MyMTQ0ZmVk
OWRmOTY2OWYzYmY1M2FmNjM0Li40NmU5MGEzMjlhYjRiZDVlNGE1YmNkMWU5NzFlNGZhMjUwOTE1
YjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC02Miw2ICs2Miw3IEBAIG1l
c3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogCiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIEVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURv
bWFpbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQorICAgIFdvcmtlckNvbnRleHRDb25uZWN0
aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllcikK
ICNlbmRpZgogCiAgICAgUmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luLCB1aW50NjRfdCBxdW90YSwg
dWludDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQpIC0+IChPcHRpb25h
bDx1aW50NjRfdD4gbmV3UXVvdGEpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAKaW5kZXggZDY3ZWU3YThhZDcyNGJkYTFiNmNlNTAzZDZkMTQ2YjAzOTlk
ZjE3NS4uMzliMDIxYzA4ZGU5ZjQ5YzBhM2JjNzA0MmM3Nzc2Njk5MTdmNGRjNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNjcwLDYgKzY3MCwxMiBA
QCB2b2lkIFdlYlByb2Nlc3NQb29sOjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoTmV0d29ya1Byb2Nl
c3NQcm94eSYgbmV0d29ya1Byb2Nlc3NQcgogICAgIGF1dG8mIG5ld05ldHdvcmtQcm9jZXNzID0g
ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKICAgICBmb3IgKGF1dG8mIHJlcGx5IDogcGVuZGluZ1Jl
cGxpZXMpCiAgICAgICAgIG5ld05ldHdvcmtQcm9jZXNzLmdldE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbigqcmVwbHkuZmlyc3QsIFdURk1vdmUocmVwbHkuc2Vjb25kKSk7CisKKyNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCisgICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9zZXJ2aWNlV29ya2Vy
UHJvY2Vzc2VzLnZhbHVlcygpKQorICAgICAgICBwcm9jZXNzLT5kaXNhYmxlU2VydmljZVdvcmtl
cnMoKTsKKyAgICBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuY2xlYXIoKTsKKyNlbmRpZgogfQog
CiB2b2lkIFdlYlByb2Nlc3NQb29sOjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJv
Y2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJveHksIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6Okdl
dE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCkBAIC02OTYs
MjQgKzcwMiw2MCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1BybwogICAgIH0KIAogICAgIFJlZ2lz
dHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRCByZWdpc3RyYWJsZURvbWFpbldpdGhTZXNzaW9uSUQg
eyBSZWdpc3RyYWJsZURvbWFpbiB7IHJlZ2lzdHJhYmxlRG9tYWluIH0sIHNlc3Npb25JRCB9Owot
ICAgIGlmIChtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuY29udGFpbnMocmVnaXN0cmFibGVEb21h
aW5XaXRoU2Vzc2lvbklEKSkKKyAgICBpZiAobV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNvbnRh
aW5zKHJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRCkpIHsKKyAgICAgICAgUkVMRUFTRV9M
T0coU2VydmljZVdvcmtlciwgIldlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgcHJvY2VzcyBhbHJlYWR5IGNyZWF0ZWQiKTsKICAg
ICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIGlmIChtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMu
aXNFbXB0eSgpKQogICAgICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nl
c3M6OlJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudHMgeyB9KTsKIAotICAgIGF1dG8gc2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yU2VydmljZVdv
cmtlcnMoKnRoaXMsIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCAqd2Vic2l0ZURhdGFTdG9y
ZSk7Ci0gICAgbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmFkZChXVEZNb3ZlKHJlZ2lzdHJhYmxl
RG9tYWluV2l0aFNlc3Npb25JRCksIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkucHRyKCkpOwor
ICAgIFdlYlByb2Nlc3NQcm94eSogc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSB7IG51bGxwdHIg
fTsKKyAgICBpZiAoIW1fZm9yY2VTZXJ2aWNlV29ya2VyUHJvY2VzcykgeworICAgICAgICBmb3Ig
KGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykgeworICAgICAgICAgICAgaWYgKHByb2Nlc3Mg
PT0gbV9wcmV3YXJtZWRQcm9jZXNzIHx8IHByb2Nlc3MgPT0gbV9kdW1teVByb2Nlc3NQcm94eSkK
KyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmICgmcHJvY2Vzcy0+d2Vi
c2l0ZURhdGFTdG9yZSgpICE9IHdlYnNpdGVEYXRhU3RvcmUpCisgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICBpZiAoIXByb2Nlc3MtPmlzTWF0Y2hpbmdSZWdpc3RyYWJsZURv
bWFpbihyZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAg
ICB1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpOwotICAgIGluaXRpYWxpemVOZXdXZWJQcm9jZXNz
KHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksIHdlYnNpdGVEYXRhU3RvcmUpOworICAgICAgICAg
ICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSA9IHByb2Nlc3MuZ2V0KCk7CisgICAgICAgICAg
ICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lbmFibGVTZXJ2aWNlV29ya2VycyhyZWdpc3Ry
YWJsZURvbWFpbik7CisKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJX
ZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzIHJldXNpbmcgYW4gZXhpc3Rpbmcgd2ViIHByb2Nlc3MgJXAiLCBzZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5KTsKKworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CiAK
LSAgICBhdXRvKiBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5UHRyID0gc2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eS5wdHIoKTsKLSAgICBtX3Byb2Nlc3Nlcy5hcHBlbmQoV1RGTW92ZShzZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5KSk7CisgICAgaWYgKCFzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
KSB7CisgICAgICAgIGF1dG8gbmV3UHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVh
dGVGb3JTZXJ2aWNlV29ya2VycygqdGhpcywgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksICp3
ZWJzaXRlRGF0YVN0b3JlKTsKKyAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSA9IG5l
d1Byb2Nlc3NQcm94eS5wdHIoKTsKIAotICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHlQdHIt
PmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KG1fc2VydmljZVdvcmtlclByZWZlcmVuY2Vz
ID8gbV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMudmFsdWUoKSA6IG1fZGVmYXVsdFBhZ2VHcm91
cC0+cHJlZmVyZW5jZXMoKS5zdG9yZSgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0coU2VydmljZVdv
cmtlciwgIldlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MgY3JlYXRpbmcgYSBuZXcgc2VydmljZSB3b3JrZXIgcHJvY2VzcyAlcCIs
IHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkpOworCisgICAgICAgIHVwZGF0ZVByb2Nlc3NBc3Nl
cnRpb25zKCk7CisgICAgICAgIGluaXRpYWxpemVOZXdXZWJQcm9jZXNzKG5ld1Byb2Nlc3NQcm94
eSwgd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgICAgIG1fcHJvY2Vzc2VzLmFwcGVuZChXVEZNb3Zl
KG5ld1Byb2Nlc3NQcm94eSkpOworICAgIH0KKworICAgIEFTU0VSVCghbV9zZXJ2aWNlV29ya2Vy
UHJvY2Vzc2VzLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRCkpOworICAg
IG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5hZGQoV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbldp
dGhTZXNzaW9uSUQpLCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KTsKKworICAgIHNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KG1fc2Vydmlj
ZVdvcmtlclByZWZlcmVuY2VzID8gbV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMudmFsdWUoKSA6
IG1fZGVmYXVsdFBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zdG9yZSgpKTsKICAgICBpZiAoIW1f
c2VydmljZVdvcmtlclVzZXJBZ2VudC5pc051bGwoKSkKLSAgICAgICAgc2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eVB0ci0+c2V0U2VydmljZVdvcmtlclVzZXJBZ2VudChtX3NlcnZpY2VXb3JrZXJV
c2VyQWdlbnQpOworICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5zZXRTZXJ2aWNl
V29ya2VyVXNlckFnZW50KG1fc2VydmljZVdvcmtlclVzZXJBZ2VudCk7Cit9CisKK3ZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnJlbW92ZUZyb21TZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKFdlYlByb2Nlc3NQ
cm94eSYgcHJvY2VzcykKK3sKKyAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiV2ViUHJv
Y2Vzc1Bvb2w6OnJlbW92ZUZyb21TZXJ2aWNlV29ya2VyUHJvY2Vzc2VzICVwIiwgJnByb2Nlc3Mp
OworCisgICAgUmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEIGtleSB7IHByb2Nlc3MucmVn
aXN0cmFibGVEb21haW4oKSwgcHJvY2Vzcy53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCkg
fTsKKyAgICBBU1NFUlQobV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNvbnRhaW5zKGtleSkpOwor
ICAgIEFTU0VSVChtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuZ2V0KGtleSkgPT0gJnByb2Nlc3Mp
OworICAgIG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5yZW1vdmUoa2V5KTsKIH0KICNlbmRpZgog
CkBAIC0xMTA4LDggKzExNTAsOSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaXNjb25uZWN0UHJv
Y2VzcyhXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCiAgICAgaWYgKHByb2Nlc3MtPmlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkpIHsKLSAgICAg
ICAgYXV0byogcmVtb3ZlZFByb2Nlc3MgPSBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMudGFrZShS
ZWdpc3RyYWJsZURvbWFpbldpdGhTZXNzaW9uSUQgeyBwcm9jZXNzLT5yZWdpc3RyYWJsZURvbWFp
bigpLCBwcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCkgfSk7Ci0gICAgICAg
IEFTU0VSVF9VTlVTRUQocmVtb3ZlZFByb2Nlc3MsIHJlbW92ZWRQcm9jZXNzID09IHByb2Nlc3Mp
OworICAgICAgICBhdXRvIGl0ZXJhdG9yID0gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmZpbmQo
UmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEIHsgcHJvY2Vzcy0+cmVnaXN0cmFibGVEb21h
aW4oKSwgcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpIH0pOworICAgICAg
ICBpZiAoaXRlcmF0b3IgIT0gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmVuZCgpICYmIGl0ZXJh
dG9yLT52YWx1ZSA9PSBwcm9jZXNzKQorICAgICAgICAgICAgbV9zZXJ2aWNlV29ya2VyUHJvY2Vz
c2VzLnJlbW92ZShpdGVyYXRvcik7CiAgICAgICAgIHVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCk7
CiAgICAgfQogI2VuZGlmCkBAIC0xMjIyLDggKzEyNjUsNiBAQCBSZWY8V2ViUGFnZVByb3h5PiBX
ZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8
QVBJOgogICAgIGF1dG8gcGFnZSA9IHByb2Nlc3MtPmNyZWF0ZVdlYlBhZ2UocGFnZUNsaWVudCwg
V1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQotICAgIEFTU0VSVCghcHJvY2Vzcy0+aXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSk7Ci0KICAg
ICBpZiAoIW1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzKSB7CiAgICAgICAgIG1fc2VydmljZVdv
cmtlclByZWZlcmVuY2VzID0gcGFnZS0+cHJlZmVyZW5jZXNTdG9yZSgpOwogICAgICAgICBmb3Ig
KGF1dG8qIHNlcnZpY2VXb3JrZXJQcm9jZXNzIDogbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnZh
bHVlcygpKQpAQCAtMTcxOCw2ICsxNzU5LDEzIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmNsZWFy
Q2FjaGVkQ3JlZGVudGlhbHMoKQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjp0ZXJtaW5hdGVOZXR3
b3JrUHJvY2VzcygpCiB7CisgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIldlYlByb2Nl
c3NQb29sOjp0ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcyIpOworCisjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQorICAgIHdoaWxlICghbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmlzRW1wdHkoKSkK
KyAgICAgICAgbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmJlZ2luKCktPnZhbHVlLT5kaXNhYmxl
U2VydmljZVdvcmtlcnMoKTsKKyNlbmRpZgorCiAgICAgaWYgKCFtX25ldHdvcmtQcm9jZXNzKQog
ICAgICAgICByZXR1cm47CiAgICAgCkBAIC0yNTQxLDQgKzI1ODksMTUgQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6Y2xlYXJXZWJQcm9jZXNzSXNQbGF5aW5nQXVkaWJsZU1lZGlhKFdlYkNvcmU6OlBy
b2Nlc3NJZGVudGkKICAgICB9CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEZvcmNlU2Vw
YXJhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzcyhib29sIGZvcmNlU2VydmljZVdvcmtlclByb2Nlc3Mp
Cit7CisgICAgaWYgKG1fZm9yY2VTZXJ2aWNlV29ya2VyUHJvY2VzcyA9PSBmb3JjZVNlcnZpY2VX
b3JrZXJQcm9jZXNzKQorICAgICAgICByZXR1cm47CisKKyAgICBSRUxFQVNFX0xPRyhTZXJ2aWNl
V29ya2VyLCAiV2ViUHJvY2Vzc1Bvb2w6OnNldEZvcmNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJv
Y2VzcyAlZCIsIGZvcmNlU2VydmljZVdvcmtlclByb2Nlc3MpOworCisgICAgbV9mb3JjZVNlcnZp
Y2VXb3JrZXJQcm9jZXNzID0gZm9yY2VTZXJ2aWNlV29ya2VyUHJvY2VzczsKKyAgICB0ZXJtaW5h
dGVOZXR3b3JrUHJvY2VzcygpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDRiNThlNzk0OTg2NzJkOWMzZDAx
OWE3NzcyN2RjNjc1M2E1ODY4MTEuLjU0YTk0OTJkNTM2NTA2NTc5MzcyZTU3ZmU1MjA4ZTQzOWM0
NTE3NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMzg3
LDYgKzM4Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzU2VydmljZVdvcmtlclBhZ2VJRChXZWJQ
YWdlUHJveHlJZGVudGlmaWVyKSBjb25zdDsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAg
ICAgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mo
TmV0d29ya1Byb2Nlc3NQcm94eSYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFBBTDo6
U2Vzc2lvbklEKTsKKyAgICB2b2lkIHJlbW92ZUZyb21TZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKFdl
YlByb2Nlc3NQcm94eSYpOwogICAgIHNpemVfdCBzZXJ2aWNlV29ya2VyUHJveGllc0NvdW50KCkg
Y29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnNpemUoKTsgfQogICAgIHZv
aWQgc2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyKGJvb2wgYWxsb3dz
KSB7IG1fYWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyID0gYWxsb3dzOyB9
CiAgICAgYm9vbCBhbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXIoKSBjb25z
dCB7IHJldHVybiBtX2FsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlcjsgfQpA
QCAtNTM0LDYgKzUzNSw4IEBAIHB1YmxpYzoKICAgICAKICAgICBQbHVnSW5BdXRvU3RhcnRQcm92
aWRlciYgcGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIoKSB7IHJldHVybiBtX3BsdWdJbkF1dG9TdGFy
dFByb3ZpZGVyOyB9CiAKKyAgICB2b2lkIHNldEZvcmNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJv
Y2Vzcyhib29sIGZvcmNlU2VydmljZVdvcmtlclByb2Nlc3MpOworCiBwcml2YXRlOgogICAgIHZv
aWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiAKQEAgLTgxOCw2ICs4MjEsNyBAQCBwcml2YXRlOgog
I2Vsc2UKICAgICBib29sIG1faXNEZWxheWVkV2ViUHJvY2Vzc0xhdW5jaERpc2FibGVkIHsgZmFs
c2UgfTsKICNlbmRpZgorICAgIGJvb2wgbV9mb3JjZVNlcnZpY2VXb3JrZXJQcm9jZXNzIHsgZmFs
c2UgfTsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBmZmFmYTdlYThmNzg4NDRmYzY0NTk0OTM4NDgz
ZjRhZTU0MjFkMjQxLi40MzY3NDZjOGRlZDM3YThkNzc1OTIyNTdiZWVhZWI0MDFkYWJmYjQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTkyMCw2
ICs5MjAsOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6bWF5YmVTaHV0RG93bihBbGxvd1Byb2Nl
c3NDYWNoaW5nIGFsbG93UHJvY2Vzc0NhY2hpbmcpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
KyAgICBpZiAoaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSkKKyAgICAgICAgcmV0dXJuOworCiAg
ICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6OlRlcm1pbmF0ZWQgfHwgIWNhblRlcm1pbmF0ZUF1eGls
aWFyeVByb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNTMyLDYgKzE1MzUsMjMgQEAg
dm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVNlcnZpY2VXb3JrZXJQcmVmZXJlbmNlc1N0b3Jl
KGNvbnN0IFdlYlByZWZlcmVuY2VzU3QKICAgICBBU1NFUlQobV9zZXJ2aWNlV29ya2VySW5mb3Jt
YXRpb24pOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
OjpVcGRhdGVQcmVmZXJlbmNlc1N0b3JlIHsgc3RvcmUgfSwgMCk7CiB9CisKK3ZvaWQgV2ViUHJv
Y2Vzc1Byb3h5OjpkaXNhYmxlU2VydmljZVdvcmtlcnMoKQoreworICAgIEFTU0VSVChtX3NlcnZp
Y2VXb3JrZXJJbmZvcm1hdGlvbik7CisgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gPSB7
IH07CisgICAgaWYgKG1fcHJvY2Vzc1Bvb2wpCisgICAgICAgIG1fcHJvY2Vzc1Bvb2wtPnJlbW92
ZUZyb21TZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCp0aGlzKTsKKworICAgIHNlbmQoTWVzc2FnZXM6
OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTdG9wIHsgfSwgMCk7Cit9CisKK3ZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjplbmFibGVTZXJ2aWNlV29ya2Vycyhjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgZG9tYWluKQoreworICAgIEFTU0VSVCghbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24p
OworICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uID0gU2VydmljZVdvcmtlckluZm9ybWF0
aW9uIHsgV2ViUGFnZVByb3h5SWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwgUGFnZUlkZW50aWZpZXI6
OmdlbmVyYXRlKCkgfTsKKyAgICBtX3JlZ2lzdHJhYmxlRG9tYWluID0gZG9tYWluOworfQogI2Vu
ZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuaAppbmRleCA1ZTE5YzJmNzQzZTE1M2M0NzRjODZiZWQzZDg2NjcxNGFlYjY4
OWFjLi5lNWU3ZGY4OWM4MWE4YzMzMmJiMjNjYWY4NTgxZDczMjA3MGJjZWRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtMTI1LDEwICsxMjUsMTQgQEAg
cHVibGljOgogICAgIFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbElmRXhpc3RzKCkgY29uc3Q7
CiAgICAgV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sKCkgY29uc3Q7CiAKKyAgICBib29sIGlz
TWF0Y2hpbmdSZWdpc3RyYWJsZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYgZG9tYWluKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluID8gKm1fcmVnaXN0
cmFibGVEb21haW4gPT0gZG9tYWluIDogZmFsc2U7IH0KICAgICBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0cmFibGVE
b21haW4udmFsdWVPcihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IH0pOyB9CiAgICAgdm9p
ZCBzZXRJc0luUHJvY2Vzc0NhY2hlKGJvb2wpOwogICAgIGJvb2wgaXNJblByb2Nlc3NDYWNoZSgp
IGNvbnN0IHsgcmV0dXJuIG1faXNJblByb2Nlc3NDYWNoZTsgfQogCisgICAgdm9pZCBlbmFibGVT
ZXJ2aWNlV29ya2Vycyhjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpOworICAgIHZv
aWQgZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7CisKICAgICBXZWJzaXRlRGF0YVN0b3JlJiB3ZWJz
aXRlRGF0YVN0b3JlKCkgY29uc3QgeyBBU1NFUlQobV93ZWJzaXRlRGF0YVN0b3JlKTsgcmV0dXJu
ICptX3dlYnNpdGVEYXRhU3RvcmU7IH0KICAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoV2Vi
c2l0ZURhdGFTdG9yZSYpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3Bw
CmluZGV4IGE2MjQ2MmVlYjk1ODA1NDhmZGMxNDFkZDE5NDRjYzBmMDg5NWI2YmMuLjRhZWRiNzkx
N2JlMWYwY2E5MTIzOTU1ZTkzNDk1Y2RjZDkzMzY5ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5jcHAKQEAgLTY5LDkgKzY5LDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB1c2lu
ZyBuYW1lc3BhY2UgUEFMOwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXN0YXRpYyBjb25z
dCBTZWNvbmRzIGFzeW5jV29ya2VyVGVybWluYXRpb25UaW1lb3V0IHsgMTBfcyB9Owotc3RhdGlj
IGNvbnN0IFNlY29uZHMgc3luY1dvcmtlclRlcm1pbmF0aW9uVGltZW91dCB7IDEwMF9tcyB9OyAv
LyBPbmx5IHVzZWQgYnkgbGF5b3V0IHRlc3RzLgotCiBTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJD
bGllbnQ6OlNlcnZpY2VXb3JrZXJGcmFtZUxvYWRlckNsaWVudChXZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJv
eHlJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29u
c3QgU3RyaW5nJiB1c2VyQWdlbnQpCiAgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKICAg
ICAsIG1fd2ViUGFnZVByb3h5SUQod2ViUGFnZVByb3h5SUQpCkBAIC0xMDAsNiArOTcsNyBAQCBX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24oUmVmPElQQzo6Q29ubmVjdGlvbgogewogICAgIHVwZGF0ZVByZWZlcmVuY2VzU3RvcmUoc3Rv
cmUpOwogICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpFc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9u
IHsgbV9yZWdpc3RyYWJsZURvbWFpbiB9LCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5kaXNhYmxlVGVybWluYXRpb24oKTsKIH0KIAogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b246On5XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbigpID0gZGVmYXVsdDsKQEAgLTI1NCwx
MiArMjUyLDEyIEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnNvZnRVcGRh
dGUoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIKIAogdm9pZCBXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbjo6dGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIpCiB7Ci0gICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkudGVybWlu
YXRlV29ya2VyKGlkZW50aWZpZXIsIGFzeW5jV29ya2VyVGVybWluYXRpb25UaW1lb3V0LCBudWxs
cHRyKTsKKyAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS50ZXJtaW5hdGVXb3JrZXIo
aWRlbnRpZmllciwgU1dDb250ZXh0TWFuYWdlcjo6d29ya2VyVGVybWluYXRpb25UaW1lb3V0LCBu
dWxscHRyKTsKIH0KIAogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c3luY1Rl
cm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBNZXNzYWdl
czo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlN5bmNUZXJtaW5hdGVXb3JrZXI6OkRl
bGF5ZWRSZXBseSYmIHJlcGx5KQogewotICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigp
LnRlcm1pbmF0ZVdvcmtlcihpZGVudGlmaWVyLCBzeW5jV29ya2VyVGVybWluYXRpb25UaW1lb3V0
LCBXVEZNb3ZlKHJlcGx5KSk7CisgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkudGVy
bWluYXRlV29ya2VyKGlkZW50aWZpZXIsIFNXQ29udGV4dE1hbmFnZXI6OndvcmtlclRlcm1pbmF0
aW9uVGltZW91dEZvclRlc3QsIFdURk1vdmUocmVwbHkpKTsKIH0KIAogdm9pZCBXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoY29u
c3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIGRlc3RpbmF0aW9uSWRlbnRpZmllciwg
Y29uc3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmIG1lc3NhZ2UsIFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQpAQCAt
MzQ5LDEwICszNDcsMTIgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZGlk
RmluaXNoU2tpcFdhaXRpbmcodWludDY0X3QgY2FsbGJhY2tJRCkKICAgICAgICAgY2FsbGJhY2so
KTsKIH0KIAotdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6dGVybWluYXRlUHJv
Y2VzcygpCit2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzdG9wKCkKIHsKLSAg
ICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiU2VydmljZSB3b3JrZXIgcHJvY2VzcyBpcyBl
eGl0aW5nIGJlY2F1c2UgaXQgaXMgbm8gbG9uZ2VyIG5lZWRlZCIpOwotICAgIF9leGl0KEVYSVRf
U1VDQ0VTUyk7CisgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIlNlcnZpY2Ugd29ya2Vy
IHByb2Nlc3MgaXMgcmVxdWVzdGVkIHRvIHN0b3AgYWxsIHNlcnZpY2Ugd29ya2VycyIpOworICAg
IG1faXNTdG9wcGVkID0gdHJ1ZTsKKyAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5z
dG9wQWxsU2VydmljZVdvcmtlcnMoKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbmFi
bGVUZXJtaW5hdGlvbigpOwogfQogCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
OjpzZXRUaHJvdHRsZVN0YXRlKGJvb2wgaXNUaHJvdHRsZWFibGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uaAppbmRleCA3ZDYyNjAxOTYxOTE0ZjNmZTJkNTkyNWM5Yjk3YzRkMTQwZGQz
YWUxLi40NTBlYjRmNDJkZWI3NTlmMDg5NjJhNjgyZjI2MmI5MDZhNzRlNGNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAgLTk1LDcgKzk1LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGNsYWltQ29tcGxldGVkKHVpbnQ2NF90IGNsYWltUmVxdWVzdElkZW50aWZpZXIpOwogICAg
IHZvaWQgZGlkRmluaXNoU2tpcFdhaXRpbmcodWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9p
ZCBzZXRVc2VyQWdlbnQoU3RyaW5nJiYgdXNlckFnZW50KTsKLSAgICBOT19SRVRVUk4gdm9pZCB0
ZXJtaW5hdGVQcm9jZXNzKCk7CisgICAgdm9pZCBzdG9wKCk7CiAgICAgdm9pZCBzZXRUaHJvdHRs
ZVN0YXRlKGJvb2wgaXNUaHJvdHRsZWFibGUpOwogCiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4g
bV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggZWFkOGNiZDNjMzA0ZDZkNzE1M2EyYmU3NDI1
MGM3NDIyNGNmODcwYS4uMDUwZTA1MjI2NzcwOWU0NDU0YjE1MWZlZDc4ZWI2NDVjOTRjNGVkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAg
LTM5LDcgKzM5LDcgQEAgbWVzc2FnZXMgLT4gV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24g
ewogICAgIERpZEZpbmlzaFNraXBXYWl0aW5nKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgU2V0
VXNlckFnZW50KFN0cmluZyB1c2VyQWdlbnQpCiAgICAgVXBkYXRlUHJlZmVyZW5jZXNTdG9yZShz
dHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlKQotICAgIFRlcm1pbmF0ZVBy
b2Nlc3MoKQorICAgIFN0b3AoKQogICAgIFNldFRocm90dGxlU3RhdGUoYm9vbCBpc1Rocm90dGxl
YWJsZSkKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDYw
ZDRjN2I3YmE3NTNlMDM0YjZhYzIxMGE1MTgwMjUxNDNlNGI2NWIuLmYzYWI5NDcyYTRlOTVkZmY3
OGM4YmFhM2QwOTNhZWI2NzI0ODg2YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKQEAgLTEyMjYsMTAgKzEyMjYsOCBAQCB2b2lkIFdlYlByb2Nlc3M6Om5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbkNsb3NlZChOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24qIGNvbm5lYwog
I2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKFNXQ29udGV4dE1h
bmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkgewotICAgICAgICBSRUxFQVNFX0xPRyhT
ZXJ2aWNlV29ya2VyLCAiU2VydmljZSB3b3JrZXIgcHJvY2VzcyBpcyBleGl0aW5nIGJlY2F1c2Ug
bmV0d29yayBwcm9jZXNzIGlzIGdvbmUiKTsKLSAgICAgICAgX2V4aXQoRVhJVF9TVUNDRVNTKTsK
LSAgICB9CisgICAgaWYgKFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24o
KSkKKyAgICAgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc3RvcEFsbFNlcnZpY2VX
b3JrZXJzKCk7CiAjZW5kaWYKIAogICAgIG1fbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uID0gbnVs
bHB0cjsKQEAgLTE3OTksOCArMTc5Nyw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVpbnQ2NF90IHBhZ2VHCiAKIHZv
aWQgV2ViUHJvY2Vzczo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50cygpCiB7Ci0gICAgLy8g
V2UgZG8gbm90IHdhbnQgdG8gcmVnaXN0ZXIgc2VydmljZSB3b3JrZXIgZHVtbXkgZG9jdW1lbnRz
LgotICAgIEFTU0VSVCghU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigp
KTsKICAgICBTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLnJlZ2lzdGVyU2Vydmlj
ZVdvcmtlckNsaWVudHMoKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IGRhOTExYjkyYzVmYWQ2NzhmNDFlZmI1NGJkNDZjZGQ1NGUzMjBj
NGQuLjUyNzBmZTBjZTIzZGFjM2JhMDg2YWM3M2NiNmQ2NTYzODg3ZDI1YjQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAor
MjAxOS0wOS0yNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAg
UmV1c2UgZXhpc3Rpbmcgd2ViIHByb2Nlc3NlcyBmb3IgcnVubmluZyBzZXJ2aWNlIHdvcmtlcnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjE5NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9zZSBh
IHdheSB0byBzcGluIGEgc2VwYXJhdGUgc2VydmljZSB3b3JrZXIgcHJvY2Vzcy4KKyAgICAgICAg
VGhpcyBpcyB1c2VkIGZvciB0ZXN0cyBleHBlY3RpbmcgdG8gY3Jhc2ggdGhlIHNlcnZpY2Ugd29y
a2VyIHByb2Nlc3MuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNl
dEZvcmNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzcyk6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVy
OjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRp
ZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorCiAyMDE5LTA5
LTIwICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBbRVdT
XSBKU0MgcXVldWVzIHNob3VsZCByZS1idWlsZCBUb1QgYW5kIGNvbXBhcmUgcmVzdWx0cyBvbiBi
dWlsZCBmYWlsdXJlCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRleCBmNTM0YmIwMTBiNmY2
ZjEzNzBiMDliZTU4NGZiOTg2NTAwZjNiODI0Li4xY2Y4NTc0ZGYwYmI3MzM2ODlmYTM2ZWQ5NDFh
NWM0MmYzYmJkMzVhIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAgLTM2Myw2ICszNjMs
NyBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAKICAgICB2b2lkIHRlcm1pbmF0ZU5ldHdvcmtQ
cm9jZXNzKCk7CiAgICAgdm9pZCB0ZXJtaW5hdGVTZXJ2aWNlV29ya2VyUHJvY2VzcygpOworICAg
IHZvaWQgc2V0Rm9yY2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKGJvb2xlYW4gdmFsdWUp
OwogCiAgICAgdm9pZCBzZXRDYW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbihib29s
ZWFuIGNhbkhhbmRsZSk7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gY2FuRG9TZXJ2
ZXJUcnVzdEV2YWx1YXRpb25Jbk5ldHdvcmtQcm9jZXNzOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggMTU3NGVjNGNj
NjI4NzliMDgyYWUyNzM4YTJmYzgxZDcwNDA5ZDRlNi4uMmI1NzkxNmY5YTRjYWFlNGI5MGEzMjFm
NTVkMzM2ZjUxNWNjMGU4YyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC0xMjY2LDYgKzEyNjYsMTMgQEAgdm9pZCBU
ZXN0UnVubmVyOjp0ZXJtaW5hdGVTZXJ2aWNlV29ya2VyUHJvY2VzcygpCiAgICAgV0tCdW5kbGVQ
YWdlUG9zdFN5bmNocm9ub3VzTWVzc2FnZUZvclRlc3RpbmcoSW5qZWN0ZWRCdW5kbGU6OnNpbmds
ZXRvbigpLnBhZ2UoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0
cik7CiB9CiAKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0Rm9yY2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQ
cm9jZXNzKGJvb2wgdmFsdWUpCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3Nh
Z2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2V0Rm9yY2VT
ZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzIikpOworICAgIFdLUmV0YWluUHRyPFdLQm9vbGVh
blJlZj4gbWVzc2FnZUJvZHkgPSBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZSh2YWx1ZSkpOworICAg
IFdLQnVuZGxlUGFnZVBvc3RTeW5jaHJvbm91c01lc3NhZ2VGb3JUZXN0aW5nKEluamVjdGVkQnVu
ZGxlOjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3Nh
Z2VCb2R5LmdldCgpLCBudWxscHRyKTsKK30KKwogc3RhdGljIHVuc2lnbmVkIG5leHRVSVNjcmlw
dENhbGxiYWNrSUQoKQogewogICAgIHN0YXRpYyB1bnNpZ25lZCBjYWxsYmFja0lEID0gRmlyc3RV
SVNjcmlwdENhbGxiYWNrSUQ7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4IDkzOWI2YmU5ZDhlNTFhNzA2MjU0NWQ0MzQ2ZjVi
NDVjN2VhYTVhZTAuLjZlYjJjYWIzOTEzNWE2ZGU3ZDIyMTY0ZDI4ZjBjMjM2M2NlZTIzYjQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5oCkBAIC00NjAsNiArNDYwLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB0ZXJtaW5hdGVOZXR3
b3JrUHJvY2VzcygpOwogICAgIHZvaWQgdGVybWluYXRlU2VydmljZVdvcmtlclByb2Nlc3MoKTsK
KyAgICB2b2lkIHNldEZvcmNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzcyhib29sKTsKIAog
ICAgIHZvaWQgcmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKEpTVmFsdWVSZWYpOwogICAgIHZv
aWQgY2FsbERpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFsc0NhbGxiYWNrKCk7CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDNhOGM4OWFjYWJjMzkwYWE0
YzA5MTE5NTEzYTEwMDRlOTNkN2Q1NDQuLmQ2ODE0MGU1YzUzMWEwNDFjMjY0ODhkMDVhNTNhZTZl
OWRiNTliMWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBA
IC05NjcsNiArOTY3LDggQEAgYm9vbCBUZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lz
dGVudFZhbHVlcyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucywgUmUKIAogICAgIFdLQ29udGV4
dENsZWFyQ3VycmVudE1vZGlmaWVyU3RhdGVGb3JUZXN0aW5nKFRlc3RDb250cm9sbGVyOjpzaW5n
bGV0b24oKS5jb250ZXh0KCkpOwogCisgICAgV0tDb250ZXh0U2V0Rm9yY2VTZXBhcmF0ZVNlcnZp
Y2VXb3JrZXJQcm9jZXNzKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5jb250ZXh0KCksIGZh
bHNlKTsKKwogICAgIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBhbHNvIGVuc3VyZSB0
aGF0IHRoZXJlIGlzIG9ubHkgb25lIHBhZ2Ugb3Blbi4KIAogICAgIC8vIFJlc2V0IHRoZSBFdmVu
dFNlbmRlciBmb3IgZWFjaCB0ZXN0LgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmNwcAppbmRleCA2MDdlNWJiZGI0YjA1NmViNmI1YjY0ZWIwMDE3ZGI4MDVjMDdhOTkyLi4w
MGE0YWFhZjhiYzRkNWQ5NTk1OTA1NTM3MDY0Njg5MTAyOTY2Y2M2IDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtMTU2Miw2ICsxNTYyLDEzIEBAIFdLUmV0
YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01l
c3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAorICAg
IGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0Rm9yY2VT
ZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzIikpIHsKKyAgICAgICAgQVNTRVJUKFdLR2V0VHlw
ZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS0Jvb2xlYW5HZXRUeXBlSUQoKSk7CisgICAgICAgIGF1dG8g
Zm9yY2VTZXJ2aWNlV29ya2VyUHJvY2VzcyA9IFdLQm9vbGVhbkdldFZhbHVlKHN0YXRpY19jYXN0
PFdLQm9vbGVhblJlZj4obWVzc2FnZUJvZHkpKTsKKyAgICAgICAgV0tDb250ZXh0U2V0Rm9yY2VT
ZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5j
b250ZXh0KCksIGZvcmNlU2VydmljZVdvcmtlclByb2Nlc3MpOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICB9CisKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNz
YWdlTmFtZSwgIlNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24iKSkgewogICAg
ICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLRGljdGlvbmFyeUdldFR5
cGVJRCgpKTsKICAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNldFdlYkF1dGhl
bnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oc3RhdGljX2Nhc3Q8V0tEaWN0aW9uYXJ5UmVmPiht
ZXNzYWdlQm9keSkpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDMyNWY2YzUzOThmY2RmZWQzNDA1YmZkNThmMWRjM2U4OGI4
NDJjMmYuLmVmYTJhYjczMTBlNDUzOTg1YmRjMTgyYWM4NDliMDJjMTJmYmQwNDggMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAxOS0wOS0yNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5j
b20+CisKKyAgICAgICAgUmV1c2UgZXhpc3Rpbmcgd2ViIHByb2Nlc3NlcyBmb3IgcnVubmluZyBz
ZXJ2aWNlIHdvcmtlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwMjE5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3Bvc3RtZXNzYWdl
LWFmdGVyLXN3LXByb2Nlc3MtY3Jhc2guanM6CisgICAgICAgIChhc3luYy5kb1Rlc3QpOgorCiAy
MDE5LTA5LTIxICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAg
W1BvaW50ZXIgRXZlbnRzXSB0b3VjaC1hY3Rpb24gc2V0IHRvIHBhbi14IG9yIHBhbi15IGFsb25l
IHNob3VsZCBkaXNhYmxlIHNjcm9sbGluZyBhbHRvZ2V0aGVyIGlmIHRoZSBpbnRpYWwgZ2VzdHVy
ZSBpcyBpbiB0aGUgZGlzYWxsb3dlZCBkaXJlY3Rpb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9wb3N0bWVzc2FnZS1hZnRlci1z
dy1wcm9jZXNzLWNyYXNoLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZp
Y2UvcmVzb3VyY2VzL3Bvc3RtZXNzYWdlLWFmdGVyLXN3LXByb2Nlc3MtY3Jhc2guanMKaW5kZXgg
NGY3MjE2NGNhZmQ4Y2VjMDliZDhhODJlNzZiYWFkYjIzZTkwNjhkZS4uNTQzZjM2Njk4ODkzZDJl
NTE0ZTRmODZhMjU4YzcwMzJkMjQ4ODUxMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3Bvc3RtZXNzYWdlLWFmdGVyLXN3LXByb2Nl
c3MtY3Jhc2guanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
cmVzb3VyY2VzL3Bvc3RtZXNzYWdlLWFmdGVyLXN3LXByb2Nlc3MtY3Jhc2guanMKQEAgLTM3LDEw
ICszNywyMCBAQCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5hZGRFdmVudExpc3RlbmVyKCJtZXNz
YWdlIiwgZnVuY3Rpb24oZXZlbnQpIHsKICAgICBmaW5pc2hTV1Rlc3QoKTsKIH0pOwogCi1uYXZp
Z2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcigicmVzb3VyY2VzL3Bvc3RtZXNzYWdlLWFmdGVy
LXN3LXByb2Nlc3MtY3Jhc2gtd29ya2VyLmpzIiwgeyB9KS50aGVuKGZ1bmN0aW9uKHJlZ2lzdHJh
dGlvbikgewotICAgIHdvcmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOwotICAgIGxvZygi
KiBTZW5kaW5nIFN0YXRlIHRvIFNlcnZpY2UgV29ya2VyIik7Ci0gICAgd29ya2VyLnBvc3RNZXNz
YWdlKCJTZXRTdGF0ZSIpOwotICAgIGxvZygiKiBBc2tpbmcgU2VydmljZSBXb3JrZXIgaWYgaXQg
cmVjZWl2ZWQgdGhlIHN0YXRlIik7Ci0gICAgd29ya2VyLnBvc3RNZXNzYWdlKCJIYXNTdGF0ZSIp
OwotfSk7Cithc3luYyBmdW5jdGlvbiBkb1Rlc3QoKQoreworICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRGb3JjZVNlcGFyYXRlU2VydmljZVdvcmtlclBy
b2Nlc3ModHJ1ZSk7CisKKyAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVv
dXQocmVzb2x2ZSwgMTAwKSk7CisKKyAgICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rl
cigicmVzb3VyY2VzL3Bvc3RtZXNzYWdlLWFmdGVyLXN3LXByb2Nlc3MtY3Jhc2gtd29ya2VyLmpz
IiwgeyB9KS50aGVuKGZ1bmN0aW9uKHJlZ2lzdHJhdGlvbikgeworICAgICAgICB3b3JrZXIgPSBy
ZWdpc3RyYXRpb24uaW5zdGFsbGluZzsKKyAgICAgICAgbG9nKCIqIFNlbmRpbmcgU3RhdGUgdG8g
U2VydmljZSBXb3JrZXIiKTsKKyAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKCJTZXRTdGF0ZSIp
OworICAgICAgICBsb2coIiogQXNraW5nIFNlcnZpY2UgV29ya2VyIGlmIGl0IHJlY2VpdmVkIHRo
ZSBzdGF0ZSIpOworICAgICAgICB3b3JrZXIucG9zdE1lc3NhZ2UoIkhhc1N0YXRlIik7CisgICAg
fSk7Cit9CisKK2RvVGVzdCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379540</attachid>
            <date>2019-09-25 06:01:15 -0700</date>
            <delta_ts>2019-09-26 04:22:38 -0700</delta_ts>
            <desc>Fix API tests</desc>
            <filename>bug-202195-20190925150114.patch</filename>
            <type>text/plain</type>
            <size>49029</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwMjAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjcyYjBhODYxMTExZjM3
YTA5YjVjYTlmZTVjMjRlMTZjMTkzNGI3Zi4uMjM2YWEwZjcwNjIyM2UyNGU3YTViYmZiMGM3Yjdk
YmRiMmNiMTJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE5LTA5LTI1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXVzZSBleGlzdGluZyB3
ZWIgcHJvY2Vzc2VzIGZvciBydW5uaW5nIHNlcnZpY2Ugd29ya2VycworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMTk1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0
cy4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclByb3ZpZGVyOjpyZWdpc3RlclNlcnZp
Y2VXb3JrZXJDbGllbnRzKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0Nv
bnRleHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6OnNl
dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1dDb250ZXh0TWFuYWdlcjo6c3RvcEFs
bFNlcnZpY2VXb3JrZXJzKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0Nv
bnRleHRNYW5hZ2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2VyOjpDb25u
ZWN0aW9uOjppc1N0b3BwZWQgY29uc3QpOgorCiAyMDE5LTA5LTI1ICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBIYW5kbGUgdGhlIGNhc2Ugb2YgYSBzZXJ2aWNl
IHdvcmtlciB0YWtpbmcgdG9vIG11Y2ggdGltZSB0byBwcm9jZXNzIGEgZmV0Y2ggZXZlbnQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggMzQ2NzIzMmQxYWQwMmY0NGJmYmVkOWZhZmYzM2FlOTFiMzdjZDUwOC4uMGIzZGJh
MGNjYTVjNjk0NWIxOGM0YjU1MjAyMjRlOWY4OTEzODg1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1
NiBAQAorMjAxOS0wOS0yNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmV1c2UgZXhpc3Rpbmcgd2ViIHByb2Nlc3NlcyBmb3IgcnVubmluZyBzZXJ2aWNlIHdv
cmtlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MjE5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
dXNpbmcgd2ViIHByb2Nlc3NlcyBmb3Igc2VydmljZSB3b3JrZXJzCisKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246On5XZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOgorICAgICAg
ICAoV0tDb250ZXh0U2V0Rm9yY2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9v
bCBfc2V0Rm9yY2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzOl0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6d29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRl
ZCk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVtb3Zl
RnJvbVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6ZGlzY29ubmVjdFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp0ZXJt
aW5hdGVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpz
ZXRGb3JjZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6Om1heWJlU2h1dERvd24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpc2FibGVTZXJ2aWNlV29ya2Vycyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZW5hYmxlU2VydmljZVdvcmtlcnMp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Byb3h5Ojppc01hdGNoaW5nUmVnaXN0cmFibGVEb21haW4gY29uc3QpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fdXNlckFnZW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnRlcm1pbmF0ZVdvcmtlcik6CisgICAgICAg
IChXZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzeW5jVGVybWluYXRlV29y
a2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnN0
b3ApOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpuZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb25DbG9zZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpyZWdpc3RlclNlcnZp
Y2VXb3JrZXJDbGllbnRzKToKKwogMjAxOS0wOS0yNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBh
cHBsZS5jb20+CiAKICAgICAgICAgSGFuZGxlIHRoZSBjYXNlIG9mIGEgc2VydmljZSB3b3JrZXIg
dGFraW5nIHRvbyBtdWNoIHRpbWUgdG8gcHJvY2VzcyBhIGZldGNoIGV2ZW50CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclByb3ZpZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUHJvdmlkZXIu
Y3BwCmluZGV4IGVlZDI2NmQ1NmI5N2U5MWJkN2M5NDgwY2I1YzIzMzM1ZDhmMmUzY2IuLjU5YjMz
MjU1MzY2MTExZDIwZWRkNDAzOWJkNTQ3N2NkZmRlZDVlZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwCkBA
IC0yOSw2ICsyOSw5IEBACiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgi
CisjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJTV0NsaWVudENvbm5l
Y3Rpb24uaCIKICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgogCkBAIC02NCw2ICs2Nyw4IEBA
IHZvaWQgU2VydmljZVdvcmtlclByb3ZpZGVyOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRz
KCkKIHsKICAgICBzZXRNYXlIYXZlUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJzKCk7CiAgICAgZm9y
IChhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMoKSkgeworICAgICAgICBp
ZiAoIWRvY3VtZW50LT5wYWdlKCkgfHwgZG9jdW1lbnQtPnBhZ2UoKS0+bWFpbkZyYW1lKCkubG9h
ZGVyKCkuY2xpZW50KCkuaXNTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQoKSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoU2NoZW1lUmVnaXN0cnk6OmNhblNlcnZpY2VX
b3JrZXJzSGFuZGxlVVJMU2NoZW1lKGRvY3VtZW50LT51cmwoKS5wcm90b2NvbCgpLnRvU3RyaW5n
V2l0aG91dENvcHlpbmcoKSkpCiAgICAgICAgICAgICBkb2N1bWVudC0+c2V0U2VydmljZVdvcmtl
ckNvbm5lY3Rpb24oJnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKCkpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0
TWFuYWdlci5jcHAKaW5kZXggNzc0ZjM4NWYxOGFiYmE4MTI4OGI3OTE0YWM5YzkxZWIyNTE0NGYz
NS4uYWVkMTNkNzMwZTY5MmM5MDcxM2M1ZjlkMDQ5ZDIwMjQ5ODcyZDJkOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0
TWFuYWdlci5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgU1dDb250ZXh0TWFuYWdlciYgU1dDb250ZXh0
TWFuYWdlcjo6c2luZ2xldG9uKCkKIAogdm9pZCBTV0NvbnRleHRNYW5hZ2VyOjpzZXRDb25uZWN0
aW9uKHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCiB7Ci0gICAgQVNT
RVJUKCFtX2Nvbm5lY3Rpb24pOworICAgIEFTU0VSVCghbV9jb25uZWN0aW9uIHx8IG1fY29ubmVj
dGlvbi0+aXNTdG9wcGVkKCkpOwogICAgIG1fY29ubmVjdGlvbiA9IFdURk1vdmUoY29ubmVjdGlv
bik7CiB9CiAKQEAgLTE3Nyw2ICsxNzcsMTYgQEAgU1dDb250ZXh0TWFuYWdlcjo6U2VydmljZVdv
cmtlclRlcm1pbmF0aW9uUmVxdWVzdDo6U2VydmljZVdvcmtlclRlcm1pbmF0aW9uUmVxdWUKICAg
ICBtX3RpbWVvdXRUaW1lci5zdGFydE9uZVNob3QodGltZW91dCk7CiB9CiAKK3ZvaWQgU1dDb250
ZXh0TWFuYWdlcjo6c3RvcEFsbFNlcnZpY2VXb3JrZXJzKCkKK3sKKyAgICBhdXRvIHNlcnZpY2VX
b3JrZXJzID0gV1RGTW92ZShtX3dvcmtlck1hcCk7CisgICAgZm9yIChhdXRvJiBzZXJ2aWNlV29y
a2VyIDogc2VydmljZVdvcmtlcnMudmFsdWVzKCkpIHsKKyAgICAgICAgc2VydmljZVdvcmtlci0+
c2V0QXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCgpOworICAgICAgICBtX3BlbmRpbmdTZXJ2aWNl
V29ya2VyVGVybWluYXRpb25SZXF1ZXN0cy5hZGQoc2VydmljZVdvcmtlci0+aWRlbnRpZmllcigp
LCBtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJUZXJtaW5hdGlvblJlcXVlc3Q+KCp0aGlzLCBzZXJ2
aWNlV29ya2VyLT5pZGVudGlmaWVyKCksIHdvcmtlclRlcm1pbmF0aW9uVGltZW91dCkpOworICAg
ICAgICBzZXJ2aWNlV29ya2VyLT50aHJlYWQoKS5zdG9wKFtdIHsgfSk7CisgICAgfQorfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCmluZGV4IDYy
OGMzZjM4OTJiZWVlMjQyYzJlZjdmZjllZTIyMTYwZmRkYzIxMzUuLjVkNzgzY2M0YWQ1NTg5Yjk3
ZTI4MjAwNjVmYmQ2ZmZlY2MxZjI3MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKQEAgLTY1LDYgKzY1
LDExIEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGNsYWltKFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpID0gMDsKIAogICAgICAgICB2
aXJ0dWFsIGJvb2wgaXNUaHJvdHRsZWFibGUoKSBjb25zdCA9IDA7CisKKyAgICAgICAgYm9vbCBp
c1N0b3BwZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU3RvcHBlZDsgfQorCisgICAgcHJvdGVjdGVk
OgorICAgICAgICBib29sIG1faXNTdG9wcGVkIHsgZmFsc2UgfTsKICAgICB9OwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRDb25uZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9u
PiYmKTsKQEAgLTg3LDYgKzkyLDExIEBAIHB1YmxpYzoKIAogICAgIFNlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eSogd29ya2VyQnlJRChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKSB7
IHJldHVybiBtX3dvcmtlck1hcC5nZXQoaWRlbnRpZmllcik7IH0KIAorICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc3RvcEFsbFNlcnZpY2VXb3JrZXJzKCk7CisKKyAgICBzdGF0aWMgY29uc3RleHBy
IFNlY29uZHMgd29ya2VyVGVybWluYXRpb25UaW1lb3V0IHsgMTBfcyB9OworICAgIHN0YXRpYyBj
b25zdGV4cHIgU2Vjb25kcyB3b3JrZXJUZXJtaW5hdGlvblRpbWVvdXRGb3JUZXN0IHsgMTAwX21z
IH07IC8vIE9ubHkgdXNlZCBieSBsYXlvdXQgdGVzdHMuCisKIHByaXZhdGU6CiAgICAgU1dDb250
ZXh0TWFuYWdlcigpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRl
eCAyNjQzY2FiMjlkMTBiMzNkZmFkYWRjODUxNDA5YmFhZGZlNWJiYTRkLi5iOWQxZWQ1MWNmNjY2
N2M1OWI0YjlhMGFiMzIyMWFmYWI1ZjFmZjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cApAQCAtMjE4LDE5ICsyMTgsMTUgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW8KICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0g
TWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpKSB7Ci0gICAgICAgIEFTU0VSVChtX3N3Q29udGV4dENvbm5lY3Rpb24pOwotICAgICAg
ICBpZiAobV9zd0NvbnRleHRDb25uZWN0aW9uKSB7CisgICAgICAgIGlmIChtX3N3Q29udGV4dENv
bm5lY3Rpb24pCiAgICAgICAgICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24tPmRpZFJlY2VpdmVN
ZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSkgewotICAgICAgICBBU1NFUlQobV9zd0NvbnRleHRDb25uZWN0aW9uKTsK
LSAgICAgICAgaWYgKG1fc3dDb250ZXh0Q29ubmVjdGlvbikgeworICAgICAgICBpZiAobV9zd0Nv
bnRleHRDb25uZWN0aW9uKQogICAgICAgICAgICAgbV9zd0NvbnRleHRDb25uZWN0aW9uLT5kaWRS
ZWNlaXZlRmV0Y2hUYXNrTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQorICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCiAKQEAg
LTg3NCw2ICs4NzAsMTkgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0
YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihSZWdpc3RyYWJsZURvbWEKICAgICBpZiAoYXV0byog
c2VydmVyID0gbV9uZXR3b3JrUHJvY2Vzcy0+c3dTZXJ2ZXJGb3JTZXNzaW9uSWZFeGlzdHMobV9z
ZXNzaW9uSUQpKQogICAgICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPFdl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4oKnRoaXMsIFdURk1vdmUocmVnaXN0cmFibGVE
b21haW4pLCAqc2VydmVyKTsKIH0KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Y2xvc2VTV0NvbnRleHRDb25uZWN0aW9uKCkKK3sKKyAgICBtX3N3Q29udGV4dENvbm5lY3Rp
b24gPSBudWxscHRyOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpz
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoKQoreworICAgIFJFTEVBU0Vf
TE9HKFNlcnZpY2VXb3JrZXIsICJXZWJQcm9jZXNzICVsbHUgbm8gbG9uZ2VyIHVzZWZ1bCBmb3Ig
cnVubmluZyBzZXJ2aWNlIHdvcmtlcnMiLCB3ZWJQcm9jZXNzSWRlbnRpZmllcigpLnRvVUludDY0
KCkpOworICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OldvcmtlckNvbnRleHRDb25uZWN0aW9u
Tm9Mb25nZXJOZWVkZWQgeyB3ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0sIDApOworCisgICAgbV9z
d0NvbnRleHRDb25uZWN0aW9uID0gbnVsbHB0cjsKK30KICNlbmRpZgogCiB2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVhdGVOZXdNZXNzYWdlUG9ydENoYW5uZWwoY29uc3Qg
TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0MSwgY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVy
JiBwb3J0MikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCA5N2RjMjRiOGZhYTc5ZmUwNmVm
ZjBmYTE2ZGQ5ZjI2ODc1NjhhMDU1Li5iNGFiOGIwYTE3YmNjNjNkNjY2YWYyNjU4NzFmYzdhYTZm
YWI1NjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0xNTUsNiArMTU1LDEwIEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgY2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkoY29uc3Qg
V2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0aXZpdHkpPiYmKTsKIAor
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICB2b2lkIHNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb25Ob0xvbmdlck5lZWRlZCgpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nlc3MmLCBXZWJDb3JlOjpQcm9jZXNzSWRl
bnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CiAK
QEAgLTIxNCw2ICsyMTgsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
ICAgICB2b2lkIGVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbigpOwogICAgIHZvaWQgZXN0YWJs
aXNoU1dDb250ZXh0Q29ubmVjdGlvbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmKTsKKyAg
ICB2b2lkIGNsb3NlU1dDb250ZXh0Q29ubmVjdGlvbigpOwogICAgIHZvaWQgdW5yZWdpc3RlclNX
Q29ubmVjdGlvbigpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCmluZGV4IDJhZDMxM2FiODI0ZDUxZGFjYjY4MjllM2Q5YjE1ZTBiNzc1Y2EzZDku
LjNiY2QwZWIxMmEyNjIwMTdmMmEwMjRiNGUzNWIxYzY1YjcxNDA5YWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtODEsNiArODEsNyBAQCBtZXNzYWdl
cyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIEVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbigp
CiAgICAgRXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiBkb21haW4pCisgICAgQ2xvc2VTV0NvbnRleHRDb25uZWN0aW9uKCkKICNlbmRpZgogCiAg
ICAgQ3JlYXRlTmV3TWVzc2FnZVBvcnRDaGFubmVsKHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9y
dElkZW50aWZpZXIgcG9ydDEsIHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIg
cG9ydDIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uY3BwCmluZGV4IDdhNDZhYWIxNzVlMmE5MGY1MDE4MTY3MTkyNWM4OWFhZjE4NjVhOGEuLjJl
ZjM1MTU4MWVjZmE0YWQ2ODYyZTNlNGUyOTNiZWVkYzkzMjA1ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC01MSw3ICs1MSwx
MCBAQCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OldlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbihOZXR3b3JrQ29ubmVjdGlvbgogCiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246On5XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKQogewotICAgIGNvbm5lY3Rp
b25DbG9zZWQoKTsKKyAgICBhdXRvIGZldGNoZXMgPSBXVEZNb3ZlKG1fb25nb2luZ0ZldGNoZXMp
OworICAgIGZvciAoYXV0byYgZmV0Y2ggOiBmZXRjaGVzLnZhbHVlcygpKQorICAgICAgICBmZXRj
aC0+ZmFpbChSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgeyB9
LCAiU2VydmljZSBXb3JrZXIgY29udGV4dCBjbG9zZWQiX3MgfSk7CisKICAgICBpZiAobV9zZXJ2
ZXIgJiYgbV9zZXJ2ZXItPmNvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVn
aXN0cmFibGVEb21haW4oKSkgPT0gdGhpcykKICAgICAgICAgbV9zZXJ2ZXItPnJlbW92ZUNvbnRl
eHRDb25uZWN0aW9uKCp0aGlzKTsKIH0KQEAgLTY2LDEzICs2OSw2IEBAIHVpbnQ2NF90IFdlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBj
b25zdAogICAgIHJldHVybiAwOwogfQogCi12b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6Y29ubmVjdGlvbkNsb3NlZCgpCi17Ci0gICAgYXV0byBmZXRjaGVzID0gV1RGTW92ZSht
X29uZ29pbmdGZXRjaGVzKTsKLSAgICBmb3IgKGF1dG8mIGZldGNoIDogZmV0Y2hlcy52YWx1ZXMo
KSkKLSAgICAgICAgZmV0Y2gtPmZhaWwoUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0
SW50ZXJuYWwsIDAsIHsgfSwgIlNlcnZpY2UgV29ya2VyIGNvbnRleHQgY2xvc2VkIl9zIH0pOwot
fQotCiB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1Nl
cnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIGRl
c3RpbmF0aW9uSWRlbnRpZmllciwgY29uc3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmIG1lc3Nh
Z2UsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgc291cmNlT3JpZ2luKQogewogICAgIGlmICghbV9zZXJ2ZXIpCkBAIC0xMzQsOSArMTMwLDcg
QEAgdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmRpZEZpbmlzaFNraXBXYWl0
aW5nKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAKIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOjpjb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpCiB7Ci0gICAgUkVMRUFTRV9MT0co
U2VydmljZVdvcmtlciwgIlNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgaXMgbm8gbG9uZ2VyIG5lZWRl
ZCwgdGVybWluYXRpbmcgaXQiKTsKLSAgICB0ZXJtaW5hdGUoKTsKLSAgICBjb25uZWN0aW9uQ2xv
c2VkKCk7CisgICAgbV9jb25uZWN0aW9uLnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdl
ck5lZWRlZCgpOwogfQogCiB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2V0
VGhyb3R0bGVTdGF0ZShib29sIGlzVGhyb3R0bGVhYmxlKQpAQCAtMTQ1LDExICsxMzksNiBAQCB2
b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2V0VGhyb3R0bGVTdGF0ZShib29s
IGlzVGhyb3R0bGVhYmxlKQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uOjpTZXRUaHJvdHRsZVN0YXRlIHsgaXNUaHJvdHRsZWFibGUgfSk7CiB9CiAKLXZv
aWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp0ZXJtaW5hdGUoKQotewotICAgIHNl
bmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpUZXJtaW5hdGVQcm9j
ZXNzKCkpOwotfQotCiB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c3RhcnRG
ZXRjaChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29u
dGVudENvbm5lY3Rpb24sIFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIEZldGNoSWRlbnRpZmllciBjb250ZW50RmV0Y2hJZGVu
dGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlv
bnMsIGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgcmVm
ZXJyZXIpCiB7CiAgICAgYXV0byBmZXRjaElkZW50aWZpZXIgPSBGZXRjaElkZW50aWZpZXI6Omdl
bmVyYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmgKaW5kZXggNzQ3MWJjNTIyYTQwZmZiNGU3Y2RiMWE3YTkyMmY5YTUyYmUxZDU2My4uMGQ3
NjdjM2U4NDY1NTE0MjM2ODgwYmU3MTA0MDU3MGZjZGMzNWE4MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtNTksOCArNTksNiBAQCBw
dWJsaWM6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCi0gICAgdm9p
ZCB0ZXJtaW5hdGUoKTsKLQogICAgIHZvaWQgc3RhcnRGZXRjaChQQUw6OlNlc3Npb25JRCwgUmVm
PElQQzo6Q29ubmVjdGlvbj4mJiwgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6RmV0
Y2hPcHRpb25zJiwgY29uc3QgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYp
OwogICAgIHZvaWQgY2FuY2VsRmV0Y2goV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRl
bnRpZmllcik7CiAgICAgdm9pZCBjb250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKFdlYkNv
cmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmll
ciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKaW5kZXggNTg5MzgwM2FhYjhiZWFmYjNmY2VjYWMy
NGFiZWI5MjM0ZjVhNTY3My4uMzkzNTNkY2IwOTkxYTRmYWM2OWI3ODQwMGJiMDA5MjhhYWJiMTdk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCkBAIC02
NzksMyArNjc5LDggQEAgdm9pZCBXS0NvbnRleHRDbGVhckxlZ2FjeVByaXZhdGVCcm93c2luZ0xv
Y2FsU3RvcmFnZShXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgdm8KICAgICAgICAgICAgIGNhbGxi
YWNrKGNvbnRleHQpOwogICAgIH0pOwogfQorCit2b2lkIFdLQ29udGV4dFNldEZvcmNlU2VwYXJh
dGVTZXJ2aWNlV29ya2VyUHJvY2VzcyhXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgYm9vbCBmb3Jj
ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKQoreworICAgIFdlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYp
LT5zZXRGb3JjZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MoZm9yY2VTZXJ2aWNlV29ya2Vy
UHJvY2Vzcyk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S0NvbnRleHRQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRl
eHRQcml2YXRlLmgKaW5kZXggNWE5NTM2ZTY5YWE3NmE0ZGQ1N2M1NmY4NWE2NmZhYzI5ZjVkMGE1
My4uZTIxMGRhNzU5ZmQ3ZDg4YzM1YjAwZDY3YzRmNjk1NmJjZjQzNTNjNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaApAQCAtMTI0LDYg
KzEyNCw4IEBAIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFN5bmNMb2NhbFN0b3JhZ2UoV0tDb250
ZXh0UmVmIGNvbnRleHRSZWYsIHZvaWQqIGNvbnRleHQsCiB0eXBlZGVmIHZvaWQgKCpXS0NvbnRl
eHRDbGVhckxlZ2FjeVByaXZhdGVCcm93c2luZ0xvY2FsU3RvcmFnZUNhbGxiYWNrKSh2b2lkKiBm
dW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0Q2xlYXJMZWdhY3lQcml2
YXRlQnJvd3NpbmdMb2NhbFN0b3JhZ2UoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIHZvaWQqIGNv
bnRleHQsIFdLQ29udGV4dENsZWFyTGVnYWN5UHJpdmF0ZUJyb3dzaW5nTG9jYWxTdG9yYWdlQ2Fs
bGJhY2sgY2FsbGJhY2spOwogCitXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRGb3JjZVNlcGFy
YXRlU2VydmljZVdvcmtlclByb2Nlc3MoV0tDb250ZXh0UmVmIGNvbnRleHQsIGJvb2wgZm9yY2VT
ZXJ2aWNlV29ya2VyUHJvY2Vzcyk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9v
bC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1t
CmluZGV4IGY1Y2E0Njc1ODk1ZTEyZTZiNmQ5MzhlZDdiYzhkN2Y1ZTU4YjA4Y2YuLjA5OWVmMTBi
Y2RiOTRhNTg2N2M5Yzc3NGU4MmQ4ZmZmNTc3ZDViYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCkBAIC00NTcsNiArNDU3LDEx
IEBAIHN0YXRpYyBOU0RpY3Rpb25hcnkgKnBvbGljaWVzSGFzaE1hcFRvRGljdGlvbmFyeShjb25z
dCBIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxTCiAgICAgX3Byb2Nlc3NQb29sLT5kaXNhYmxlU2Vy
dmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5KCk7CiB9CiAKKy0gKHZvaWQpX3NldEZv
cmNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2VzczooQk9PTClmb3JjZVNlcnZpY2VXb3JrZXJQ
cm9jZXNzCit7CisgICAgX3Byb2Nlc3NQb29sLT5zZXRGb3JjZVNlcGFyYXRlU2VydmljZVdvcmtl
clByb2Nlc3MoZm9yY2VTZXJ2aWNlV29ya2VyUHJvY2Vzcyk7Cit9CisKIC0gKHBpZF90KV9uZXR3
b3JrUHJvY2Vzc0lkZW50aWZpZXIKIHsKICAgICByZXR1cm4gX3Byb2Nlc3NQb29sLT5uZXR3b3Jr
UHJvY2Vzc0lkZW50aWZpZXIoKTsKQEAgLTUxNCwxMiArNTE5LDEyIEBAIHN0YXRpYyBOU0RpY3Rp
b25hcnkgKnBvbGljaWVzSGFzaE1hcFRvRGljdGlvbmFyeShjb25zdCBIYXNoTWFwPFN0cmluZywg
SGFzaE1hcDxTCiAKIC0gKHNpemVfdClfd2ViUGFnZUNvbnRlbnRQcm9jZXNzQ291bnQKIHsKLSAg
ICBhdXRvIGFsbFdlYlByb2Nlc3NlcyA9IF9wcm9jZXNzUG9vbC0+cHJvY2Vzc2VzKCk7CisgICAg
YXV0byByZXN1bHQgPSBfcHJvY2Vzc1Bvb2wtPnByb2Nlc3NlcygpLnNpemUoKTsKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCi0gICAgcmV0dXJuIGFsbFdlYlByb2Nlc3Nlcy5zaXplKCkgLSBf
cHJvY2Vzc1Bvb2wtPnNlcnZpY2VXb3JrZXJQcm94aWVzQ291bnQoKTsKLSNlbHNlCi0gICAgcmV0
dXJuIGFsbFdlYlByb2Nlc3Nlcy5zaXplKCk7CisgICAgaWYgKF9wcm9jZXNzUG9vbC0+Zm9yY2VT
ZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKCkpCisgICAgICAgIHJlc3VsdCAtPSBfcHJvY2Vz
c1Bvb2wtPnNlcnZpY2VXb3JrZXJQcm94aWVzQ291bnQoKTsKICNlbmRpZgorICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKIC0gKHZvaWQpX3ByZWNvbm5lY3RUb1NlcnZlcjooTlNVUkwgKilzZXJ2ZXJV
UkwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nl
c3NQb29sUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJv
Y2Vzc1Bvb2xQcml2YXRlLmgKaW5kZXggYWRlZGRjODI0MDA4NzYwMzc2YjI5YWNiOWRhNmYzYjZi
NmYzZjEyYS4uNTEwMjJiMDAyODY2MmExNjliYzE2ZmY0OThlMWYzNTg5ODk2ZGU4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bv
b2xQcml2YXRlLmgKQEAgLTkwLDYgKzkwLDcgQEAKIC0gKHZvaWQpX3NlbmROZXR3b3JrUHJvY2Vz
c0RpZFJlc3VtZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9T
X1RCQSkpOwogLSAodm9pZClfdGVybWluYXRlU2VydmljZVdvcmtlclByb2Nlc3NlcyBXS19BUElf
QVZBSUxBQkxFKG1hY29zKDEwLjE0KSwgaW9zKDEyLjApKTsKIC0gKHZvaWQpX2Rpc2FibGVTZXJ2
aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXkgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygx
MC4xNCksIGlvcygxMi4wKSk7CistICh2b2lkKV9zZXRGb3JjZVNlcGFyYXRlU2VydmljZVdvcmtl
clByb2Nlc3M6KEJPT0wpZm9yY2VTZXJ2aWNlV29ya2VyUHJvY2VzcyBXS19BUElfQVZBSUxBQkxF
KG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiAvLyBUZXN0IG9ubHkuCiAt
IChwaWRfdClfbmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
MTAuMTMpLCBpb3MoMTEuMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggOTBlNWZmYWIyODkwOTBjM2M0
NjdmMWQ4OGMxYjg5MzlhOWE1NTY4Ni4uZjhjMTE0Y2JjYWQ4NmI4OTIzZDQ4ZjQ0M2U1ZmQ2Mjgx
YzU0NzJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0xMjA0LDYgKzEyMDQsMTIgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MoUmVnaXMKIHsKICAgICBtX3Byb2Nlc3NQb29sLmVzdGFibGlzaFdvcmtlckNvbnRl
eHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcygqdGhpcywgV1RGTW92ZShyZWdpc3RyYWJsZURv
bWFpbiksIHNlc3Npb25JRCk7CiB9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6d29ya2Vy
Q29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmll
ciBpZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvKiBwcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5
Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihpZGVudGlmaWVyKSkKKyAgICAgICAgcHJvY2Vzcy0+ZGlz
YWJsZVNlcnZpY2VXb3JrZXJzKCk7Cit9CiAjZW5kaWYKIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpyZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWlu
dDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoT3B0aW9uYWw8dWludDY0X3Q+IHF1b3RhKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmgKaW5kZXggZDRiZGE3Y2VjNzU5M2RlNDllMjc4ZTRlZWQ3YTc1MzUwZWY1MjhkNy4u
NTRhN2Y3MzVkMGY3ZGNhYjZkZDhhMTBiNmZkMzAzMmZkMjZmMjIyOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAg
LTIzOSw2ICsyMzksNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQog
ICAgIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
KFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFBBTDo6U2Vzc2lvbklEKTsKKyAgICB2b2lk
IHdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXIpOwogI2VuZGlmCiAKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHF1b3RhLCB1
aW50NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0X3Qgc3BhY2VSZXF1aXJlZCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChPcHRpb25hbDx1aW50NjRfdD4gcXVvdGEpPiYmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5tZXNzYWdlcy5pbgppbmRleCBhNmRiYjdjNWM5MzYzM2MyMTQ0ZmVkOWRmOTY2OWYzYmY1M2Fm
NjM0Li40NmU5MGEzMjlhYjRiZDVlNGE1YmNkMWU5NzFlNGZhMjUwOTE1YjBhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC02Miw2ICs2Miw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdv
cmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQogICAgIEVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKQorICAgIFdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVk
ZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllcikKICNlbmRpZgogCiAgICAg
UmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luLCB1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVu
dFNpemUsIHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQpIC0+IChPcHRpb25hbDx1aW50NjRfdD4gbmV3
UXVvdGEpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAK
aW5kZXggZDY3ZWU3YThhZDcyNGJkYTFiNmNlNTAzZDZkMTQ2YjAzOTlkZjE3NS4uODA0NzNlYTZh
MWUxMTgxMTVhYWY0NDI5YTA5MjJkMTFjMWMzNGFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNjcwLDYgKzY3MCwxMiBAQCB2b2lkIFdlYlByb2Nl
c3NQb29sOjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoTmV0d29ya1Byb2Nlc3NQcm94eSYgbmV0d29y
a1Byb2Nlc3NQcgogICAgIGF1dG8mIG5ld05ldHdvcmtQcm9jZXNzID0gZW5zdXJlTmV0d29ya1By
b2Nlc3MoKTsKICAgICBmb3IgKGF1dG8mIHJlcGx5IDogcGVuZGluZ1JlcGxpZXMpCiAgICAgICAg
IG5ld05ldHdvcmtQcm9jZXNzLmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigqcmVwbHkuZmly
c3QsIFdURk1vdmUocmVwbHkuc2Vjb25kKSk7CisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CisgICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnZhbHVl
cygpKQorICAgICAgICBwcm9jZXNzLT5kaXNhYmxlU2VydmljZVdvcmtlcnMoKTsKKyAgICBtX3Nl
cnZpY2VXb3JrZXJQcm9jZXNzZXMuY2xlYXIoKTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYlByb2Nl
c3NQb29sOjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQ
cm9jZXNzUHJveHksIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCkBAIC02OTYsMjQgKzcwMiw1OSBAQCB2
b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3MoTmV0d29ya1BybwogICAgIH0KIAogICAgIFJlZ2lzdHJhYmxlRG9tYWluV2l0
aFNlc3Npb25JRCByZWdpc3RyYWJsZURvbWFpbldpdGhTZXNzaW9uSUQgeyBSZWdpc3RyYWJsZURv
bWFpbiB7IHJlZ2lzdHJhYmxlRG9tYWluIH0sIHNlc3Npb25JRCB9OwotICAgIGlmIChtX3NlcnZp
Y2VXb3JrZXJQcm9jZXNzZXMuY29udGFpbnMocmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklE
KSkKKyAgICBpZiAobV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNvbnRhaW5zKHJlZ2lzdHJhYmxl
RG9tYWluV2l0aFNlc3Npb25JRCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtl
ciwgIldlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3MgcHJvY2VzcyBhbHJlYWR5IGNyZWF0ZWQiKTsKICAgICAgICAgcmV0dXJuOwor
ICAgIH0KIAogICAgIGlmIChtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuaXNFbXB0eSgpKQogICAg
ICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlJlZ2lzdGVyU2Vy
dmljZVdvcmtlckNsaWVudHMgeyB9KTsKIAotICAgIGF1dG8gc2VydmljZVdvcmtlclByb2Nlc3NQ
cm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yU2VydmljZVdvcmtlcnMoKnRoaXMsIFdU
Rk1vdmUocmVnaXN0cmFibGVEb21haW4pLCAqd2Vic2l0ZURhdGFTdG9yZSk7Ci0gICAgbV9zZXJ2
aWNlV29ya2VyUHJvY2Vzc2VzLmFkZChXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Np
b25JRCksIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkucHRyKCkpOworICAgIFdlYlByb2Nlc3NQ
cm94eSogc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSB7IG51bGxwdHIgfTsKKyAgICBpZiAoIW1f
Zm9yY2VTZXJ2aWNlV29ya2VyUHJvY2VzcykgeworICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3Mg
OiBtX3Byb2Nlc3NlcykgeworICAgICAgICAgICAgaWYgKHByb2Nlc3MgPT0gbV9wcmV3YXJtZWRQ
cm9jZXNzIHx8IHByb2Nlc3MgPT0gbV9kdW1teVByb2Nlc3NQcm94eSkKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmICgmcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgp
ICE9IHdlYnNpdGVEYXRhU3RvcmUpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICBpZiAoIXByb2Nlc3MtPmlzTWF0Y2hpbmdSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJs
ZURvbWFpbikpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIHNlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHkgPSBwcm9jZXNzLmdldCgpOworICAgICAgICAgICAgc2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlU2VydmljZVdvcmtlcnMoKTsKKworICAgICAgICAg
ICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIldlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hX
b3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgcmV1c2luZyBhbiBleGlzdGlu
ZyB3ZWIgcHJvY2VzcyAlcCIsIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CiAKLSAgICB1cGRhdGVQcm9jZXNzQXNzZXJ0aW9u
cygpOwotICAgIGluaXRpYWxpemVOZXdXZWJQcm9jZXNzKHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJv
eHksIHdlYnNpdGVEYXRhU3RvcmUpOworICAgIGlmICghc2VydmljZVdvcmtlclByb2Nlc3NQcm94
eSkgeworICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3Jl
YXRlRm9yU2VydmljZVdvcmtlcnMoKnRoaXMsIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCAq
d2Vic2l0ZURhdGFTdG9yZSk7CisgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBu
ZXdQcm9jZXNzUHJveHkucHRyKCk7CiAKLSAgICBhdXRvKiBzZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5UHRyID0gc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5wdHIoKTsKLSAgICBtX3Byb2Nlc3Nl
cy5hcHBlbmQoV1RGTW92ZShzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KSk7CisgICAgICAgIFJF
TEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2Vy
Q29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIGNyZWF0aW5nIGEgbmV3IHNlcnZpY2Ug
d29ya2VyIHByb2Nlc3MgJXAiLCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KTsKIAotICAgIHNl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHlQdHItPmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0
KG1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzID8gbV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMu
dmFsdWUoKSA6IG1fZGVmYXVsdFBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zdG9yZSgpKTsKKyAg
ICAgICAgdXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMoKTsKKyAgICAgICAgaW5pdGlhbGl6ZU5ld1dl
YlByb2Nlc3MobmV3UHJvY2Vzc1Byb3h5LCB3ZWJzaXRlRGF0YVN0b3JlKTsKKyAgICAgICAgbV9w
cm9jZXNzZXMuYXBwZW5kKFdURk1vdmUobmV3UHJvY2Vzc1Byb3h5KSk7CisgICAgfQorCisgICAg
QVNTRVJUKCFtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuY29udGFpbnMocmVnaXN0cmFibGVEb21h
aW5XaXRoU2Vzc2lvbklEKSk7CisgICAgbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmFkZChXVEZN
b3ZlKHJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRCksIHNlcnZpY2VXb3JrZXJQcm9jZXNz
UHJveHkpOworCisgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZXN0YWJsaXNoU2Vydmlj
ZVdvcmtlckNvbnRleHQobV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMgPyBtX3NlcnZpY2VXb3Jr
ZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDogbV9kZWZhdWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygp
LnN0b3JlKCkpOwogICAgIGlmICghbV9zZXJ2aWNlV29ya2VyVXNlckFnZW50LmlzTnVsbCgpKQot
ICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5UHRyLT5zZXRTZXJ2aWNlV29ya2VyVXNl
ckFnZW50KG1fc2VydmljZVdvcmtlclVzZXJBZ2VudCk7CisgICAgICAgIHNlcnZpY2VXb3JrZXJQ
cm9jZXNzUHJveHktPnNldFNlcnZpY2VXb3JrZXJVc2VyQWdlbnQobV9zZXJ2aWNlV29ya2VyVXNl
ckFnZW50KTsKK30KKwordm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVtb3ZlRnJvbVNlcnZpY2VXb3Jr
ZXJQcm9jZXNzZXMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQoreworICAgIFJFTEVBU0VfTE9H
KFNlcnZpY2VXb3JrZXIsICJXZWJQcm9jZXNzUG9vbDo6cmVtb3ZlRnJvbVNlcnZpY2VXb3JrZXJQ
cm9jZXNzZXMgJXAiLCAmcHJvY2Vzcyk7CisKKyAgICBSZWdpc3RyYWJsZURvbWFpbldpdGhTZXNz
aW9uSUQga2V5IHsgcHJvY2Vzcy5yZWdpc3RyYWJsZURvbWFpbigpLCBwcm9jZXNzLndlYnNpdGVE
YXRhU3RvcmUoKS5zZXNzaW9uSUQoKSB9OworICAgIEFTU0VSVChtX3NlcnZpY2VXb3JrZXJQcm9j
ZXNzZXMuY29udGFpbnMoa2V5KSk7CisgICAgQVNTRVJUKG1fc2VydmljZVdvcmtlclByb2Nlc3Nl
cy5nZXQoa2V5KSA9PSAmcHJvY2Vzcyk7CisgICAgbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnJl
bW92ZShrZXkpOwogfQogI2VuZGlmCiAKQEAgLTExMDgsOCArMTE0OSw5IEBAIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKIAog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAocHJvY2Vzcy0+aXNSdW5uaW5nU2Vy
dmljZVdvcmtlcnMoKSkgewotICAgICAgICBhdXRvKiByZW1vdmVkUHJvY2VzcyA9IG1fc2Vydmlj
ZVdvcmtlclByb2Nlc3Nlcy50YWtlKFJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRCB7IHBy
b2Nlc3MtPnJlZ2lzdHJhYmxlRG9tYWluKCksIHByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKS5z
ZXNzaW9uSUQoKSB9KTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChyZW1vdmVkUHJvY2VzcywgcmVt
b3ZlZFByb2Nlc3MgPT0gcHJvY2Vzcyk7CisgICAgICAgIGF1dG8gaXRlcmF0b3IgPSBtX3NlcnZp
Y2VXb3JrZXJQcm9jZXNzZXMuZmluZChSZWdpc3RyYWJsZURvbWFpbldpdGhTZXNzaW9uSUQgeyBw
cm9jZXNzLT5yZWdpc3RyYWJsZURvbWFpbigpLCBwcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCku
c2Vzc2lvbklEKCkgfSk7CisgICAgICAgIGlmIChpdGVyYXRvciAhPSBtX3NlcnZpY2VXb3JrZXJQ
cm9jZXNzZXMuZW5kKCkgJiYgaXRlcmF0b3ItPnZhbHVlID09IHByb2Nlc3MpCisgICAgICAgICAg
ICBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMucmVtb3ZlKGl0ZXJhdG9yKTsKICAgICAgICAgdXBk
YXRlUHJvY2Vzc0Fzc2VydGlvbnMoKTsKICAgICB9CiAjZW5kaWYKQEAgLTEyMjIsOCArMTI2NCw2
IEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQb29sOjpjcmVhdGVXZWJQYWdlKFBhZ2VD
bGllbnQmIHBhZ2VDbGllbnQsIFJlZjxBUEk6CiAgICAgYXV0byBwYWdlID0gcHJvY2Vzcy0+Y3Jl
YXRlV2ViUGFnZShwYWdlQ2xpZW50LCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CiAKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgQVNTRVJUKCFwcm9jZXNzLT5pc1J1bm5pbmdT
ZXJ2aWNlV29ya2VycygpKTsKLQogICAgIGlmICghbV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMp
IHsKICAgICAgICAgbV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMgPSBwYWdlLT5wcmVmZXJlbmNl
c1N0b3JlKCk7CiAgICAgICAgIGZvciAoYXV0byogc2VydmljZVdvcmtlclByb2Nlc3MgOiBtX3Nl
cnZpY2VXb3JrZXJQcm9jZXNzZXMudmFsdWVzKCkpCkBAIC0xNzE4LDYgKzE3NTgsMTMgQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6Y2xlYXJDYWNoZWRDcmVkZW50aWFscygpCiAKIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKCkKIHsKKyAgICBSRUxFQVNFX0xPRyhT
ZXJ2aWNlV29ya2VyLCAiV2ViUHJvY2Vzc1Bvb2w6OnRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzIik7
CisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgd2hpbGUgKCFtX3NlcnZpY2VXb3Jr
ZXJQcm9jZXNzZXMuaXNFbXB0eSgpKQorICAgICAgICBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMu
YmVnaW4oKS0+dmFsdWUtPmRpc2FibGVTZXJ2aWNlV29ya2VycygpOworI2VuZGlmCisKICAgICBp
ZiAoIW1fbmV0d29ya1Byb2Nlc3MpCiAgICAgICAgIHJldHVybjsKICAgICAKQEAgLTI1NDEsNCAr
MjU4OCwxNSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpjbGVhcldlYlByb2Nlc3NJc1BsYXlpbmdB
dWRpYmxlTWVkaWEoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aQogICAgIH0KIH0KIAordm9pZCBXZWJQ
cm9jZXNzUG9vbDo6c2V0Rm9yY2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKGJvb2wgZm9y
Y2VTZXJ2aWNlV29ya2VyUHJvY2VzcykKK3sKKyAgICBpZiAobV9mb3JjZVNlcnZpY2VXb3JrZXJQ
cm9jZXNzID09IGZvcmNlU2VydmljZVdvcmtlclByb2Nlc3MpCisgICAgICAgIHJldHVybjsKKwor
ICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJXZWJQcm9jZXNzUG9vbDo6c2V0Rm9yY2VT
ZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzICVkIiwgZm9yY2VTZXJ2aWNlV29ya2VyUHJvY2Vz
cyk7CisKKyAgICBtX2ZvcmNlU2VydmljZVdvcmtlclByb2Nlc3MgPSBmb3JjZVNlcnZpY2VXb3Jr
ZXJQcm9jZXNzOworICAgIHRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5k
ZXggNGI1OGU3OTQ5ODY3MmQ5YzNkMDE5YTc3NzI3ZGM2NzUzYTU4NjgxMS4uY2YyZjU0ZjhmZTdm
MzhmYTMwYmI2Nzk0MDI4YTgyMjA4ODg2YzZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oCkBAIC0zODcsNiArMzg3LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNT
ZXJ2aWNlV29ya2VyUGFnZUlEKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIpIGNvbnN0OwogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc1Byb3h5JiwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mJiwgUEFMOjpTZXNzaW9uSUQpOworICAgIHZvaWQgcmVtb3ZlRnJvbVNl
cnZpY2VXb3JrZXJQcm9jZXNzZXMoV2ViUHJvY2Vzc1Byb3h5Jik7CiAgICAgc2l6ZV90IHNlcnZp
Y2VXb3JrZXJQcm94aWVzQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJQcm9j
ZXNzZXMuc2l6ZSgpOyB9CiAgICAgdm9pZCBzZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNl
cnZpY2VXb3JrZXIoYm9vbCBhbGxvd3MpIHsgbV9hbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNl
cnZpY2VXb3JrZXIgPSBhbGxvd3M7IH0KICAgICBib29sIGFsbG93c0FueVNTTENlcnRpZmljYXRl
Rm9yU2VydmljZVdvcmtlcigpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dzQW55U1NMQ2VydGlmaWNh
dGVGb3JTZXJ2aWNlV29ya2VyOyB9CkBAIC01MzQsNiArNTM1LDkgQEAgcHVibGljOgogICAgIAog
ICAgIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyJiBwbHVnSW5BdXRvU3RhcnRQcm92aWRlcigpIHsg
cmV0dXJuIG1fcGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI7IH0KIAorICAgIHZvaWQgc2V0Rm9yY2VT
ZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKGJvb2wgZm9yY2VTZXJ2aWNlV29ya2VyUHJvY2Vz
cyk7CisgICAgYm9vbCBmb3JjZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MoKSBjb25zdCB7
IHJldHVybiBtX2ZvcmNlU2VydmljZVdvcmtlclByb2Nlc3M7IH0KKwogcHJpdmF0ZToKICAgICB2
b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwogCkBAIC04MTgsNiArODIyLDcgQEAgcHJpdmF0ZToK
ICNlbHNlCiAgICAgYm9vbCBtX2lzRGVsYXllZFdlYlByb2Nlc3NMYXVuY2hEaXNhYmxlZCB7IGZh
bHNlIH07CiAjZW5kaWYKKyAgICBib29sIG1fZm9yY2VTZXJ2aWNlV29ya2VyUHJvY2VzcyB7IGZh
bHNlIH07CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggZmZhZmE3ZWE4Zjc4ODQ0ZmM2NDU5NDkzODQ4
M2Y0YWU1NDIxZDI0MS4uN2Y1NjVkYjI3NTgyZDAyMzNlNzI3NjVmOTM0OTRlZDJhZThjMjliMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0xMzks
NyArMTM5LDcgQEAgUmVmPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVG
b3JTZXJ2aWNlV29ya2VycyhXZWJQcm9jZXNzUG9vbCYgcHIKIHsKICAgICBhdXRvIHByb3h5ID0g
YWRvcHRSZWYoKm5ldyBXZWJQcm9jZXNzUHJveHkocHJvY2Vzc1Bvb2wsICZ3ZWJzaXRlRGF0YVN0
b3JlLCBJc1ByZXdhcm1lZDo6Tm8pKTsKICAgICBwcm94eS0+bV9yZWdpc3RyYWJsZURvbWFpbiA9
IFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pOwotICAgIHByb3h5LT5tX3NlcnZpY2VXb3JrZXJJ
bmZvcm1hdGlvbiA9IFNlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiB7IFdlYlBhZ2VQcm94eUlkZW50
aWZpZXI6OmdlbmVyYXRlKCksIFBhZ2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07CisgICAgcHJv
eHktPmVuYWJsZVNlcnZpY2VXb3JrZXJzKCk7CiAgICAgcHJveHktPmNvbm5lY3QoKTsKICAgICBy
ZXR1cm4gcHJveHk7CiB9CkBAIC05MjAsNiArOTIwLDkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6
Om1heWJlU2h1dERvd24oQWxsb3dQcm9jZXNzQ2FjaGluZyBhbGxvd1Byb2Nlc3NDYWNoaW5nKQog
ICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKGlzUnVubmluZ1NlcnZpY2VXb3JrZXJz
KCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChzdGF0ZSgpID09IFN0YXRlOjpUZXJtaW5h
dGVkIHx8ICFjYW5UZXJtaW5hdGVBdXhpbGlhcnlQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsK
IApAQCAtMTQzOCw2ICsxNDQxLDkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1lKGNvbnN0IFVSTCYgdXJsKQogCiAgICAgYXV0byByZWdp
c3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdXJsIH07CiAgICAg
aWYgKG1fcmVnaXN0cmFibGVEb21haW4gJiYgKm1fcmVnaXN0cmFibGVEb21haW4gIT0gcmVnaXN0
cmFibGVEb21haW4pIHsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgZGlzYWJsZVNl
cnZpY2VXb3JrZXJzKCk7CisjZW5kaWYKICAgICAgICAgLy8gTnVsbCBvdXQgcmVnaXN0cmFibGUg
ZG9tYWluIHNpbmNlIHRoaXMgcHJvY2VzcyBoYXMgbm93IGJlZW4gdXNlZCBmb3Igc2V2ZXJhbCBk
b21haW5zLgogICAgICAgICBtX3JlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4geyB9OwogICAgICAgICByZXR1cm47CkBAIC0xNTMyLDYgKzE1MzgsMjUgQEAgdm9p
ZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVNlcnZpY2VXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKGNv
bnN0IFdlYlByZWZlcmVuY2VzU3QKICAgICBBU1NFUlQobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRp
b24pOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpV
cGRhdGVQcmVmZXJlbmNlc1N0b3JlIHsgc3RvcmUgfSwgMCk7CiB9CisKK3ZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjpkaXNhYmxlU2VydmljZVdvcmtlcnMoKQoreworICAgIGlmICghbV9zZXJ2aWNlV29y
a2VySW5mb3JtYXRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIG1fc2VydmljZVdvcmtlcklu
Zm9ybWF0aW9uID0geyB9OworICAgIGlmIChtX3Byb2Nlc3NQb29sKQorICAgICAgICBtX3Byb2Nl
c3NQb29sLT5yZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3NlcygqdGhpcyk7CisKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U3RvcCB7IH0sIDAp
OworfQorCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5hYmxlU2VydmljZVdvcmtlcnMoKQorewor
ICAgIEFTU0VSVChtX3JlZ2lzdHJhYmxlRG9tYWluICYmICFtX3JlZ2lzdHJhYmxlRG9tYWluLmlz
RW1wdHkoKSk7CisgICAgQVNTRVJUKCFtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbik7CisgICAg
bV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gPSBTZXJ2aWNlV29ya2VySW5mb3JtYXRpb24geyBX
ZWJQYWdlUHJveHlJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBQYWdlSWRlbnRpZmllcjo6Z2VuZXJh
dGUoKSB9OworfQogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCA1ZTE5YzJmNzQzZTE1M2M0NzRjODZi
ZWQzZDg2NjcxNGFlYjY4OWFjLi43OGQwZWY0ZjY2YTkzZDUxZjBhYjYxNWRlOWY4NjY0ZjJmNDMy
Y2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtMTI1
LDEwICsxMjUsMTQgQEAgcHVibGljOgogICAgIFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbElm
RXhpc3RzKCkgY29uc3Q7CiAgICAgV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sKCkgY29uc3Q7
CiAKKyAgICBib29sIGlzTWF0Y2hpbmdSZWdpc3RyYWJsZURvbWFpbihjb25zdCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9t
YWluID8gKm1fcmVnaXN0cmFibGVEb21haW4gPT0gZG9tYWluIDogZmFsc2U7IH0KICAgICBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbigpIGNvbnN0IHsgcmV0dXJu
IG1fcmVnaXN0cmFibGVEb21haW4udmFsdWVPcihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7
IH0pOyB9CiAgICAgdm9pZCBzZXRJc0luUHJvY2Vzc0NhY2hlKGJvb2wpOwogICAgIGJvb2wgaXNJ
blByb2Nlc3NDYWNoZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNJblByb2Nlc3NDYWNoZTsgfQogCisg
ICAgdm9pZCBlbmFibGVTZXJ2aWNlV29ya2VycygpOworICAgIHZvaWQgZGlzYWJsZVNlcnZpY2VX
b3JrZXJzKCk7CisKICAgICBXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKCkgY29u
c3QgeyBBU1NFUlQobV93ZWJzaXRlRGF0YVN0b3JlKTsgcmV0dXJuICptX3dlYnNpdGVEYXRhU3Rv
cmU7IH0KICAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSYpOwog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCmluZGV4IGE2MjQ2MmVlYjk1
ODA1NDhmZGMxNDFkZDE5NDRjYzBmMDg5NWI2YmMuLjY5MGE1OWI2MzVkMzhmYjk1NmU0MjUwNTM4
NDVjY2E3OTNhM2ZiZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAg
LTY5LDkgKzY5LDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgUEFMOwog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXN0YXRpYyBjb25zdCBTZWNvbmRzIGFzeW5jV29y
a2VyVGVybWluYXRpb25UaW1lb3V0IHsgMTBfcyB9Owotc3RhdGljIGNvbnN0IFNlY29uZHMgc3lu
Y1dvcmtlclRlcm1pbmF0aW9uVGltZW91dCB7IDEwMF9tcyB9OyAvLyBPbmx5IHVzZWQgYnkgbGF5
b3V0IHRlc3RzLgotCiBTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQ6OlNlcnZpY2VXb3Jr
ZXJGcmFtZUxvYWRlckNsaWVudChXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgUGFnZUlkZW50aWZp
ZXIgcGFnZUlELCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiB1c2VyQWdl
bnQpCiAgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKICAgICAsIG1fd2ViUGFnZVByb3h5
SUQod2ViUGFnZVByb3h5SUQpCkBAIC0xMDAsNiArOTcsNyBAQCBXZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbjo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVj
dGlvbgogewogICAgIHVwZGF0ZVByZWZlcmVuY2VzU3RvcmUoc3RvcmUpOwogICAgIG1fY29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpFc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uIHsgbV9yZWdpc3RyYWJsZURv
bWFpbiB9LCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5kaXNhYmxlVGVybWluYXRp
b24oKTsKIH0KIAogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246On5XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbigpID0gZGVmYXVsdDsKQEAgLTI1NCwxMiArMjUyLDEyIEBAIHZvaWQg
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnNvZnRVcGRhdGUoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIKIAogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
dGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0g
ICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkudGVybWluYXRlV29ya2VyKGlkZW50aWZp
ZXIsIGFzeW5jV29ya2VyVGVybWluYXRpb25UaW1lb3V0LCBudWxscHRyKTsKKyAgICBTV0NvbnRl
eHRNYW5hZ2VyOjpzaW5nbGV0b24oKS50ZXJtaW5hdGVXb3JrZXIoaWRlbnRpZmllciwgU1dDb250
ZXh0TWFuYWdlcjo6d29ya2VyVGVybWluYXRpb25UaW1lb3V0LCBudWxscHRyKTsKIH0KIAogdm9p
ZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c3luY1Rlcm1pbmF0ZVdvcmtlcihTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb246OlN5bmNUZXJtaW5hdGVXb3JrZXI6OkRlbGF5ZWRSZXBseSYmIHJlcGx5
KQogewotICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnRlcm1pbmF0ZVdvcmtlcihp
ZGVudGlmaWVyLCBzeW5jV29ya2VyVGVybWluYXRpb25UaW1lb3V0LCBXVEZNb3ZlKHJlcGx5KSk7
CisgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkudGVybWluYXRlV29ya2VyKGlkZW50
aWZpZXIsIFNXQ29udGV4dE1hbmFnZXI6OndvcmtlclRlcm1pbmF0aW9uVGltZW91dEZvclRlc3Qs
IFdURk1vdmUocmVwbHkpKTsKIH0KIAogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2VydmljZVdvcmtlckNs
aWVudElkZW50aWZpZXImIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgY29uc3QgTWVzc2FnZVdpdGhN
ZXNzYWdlUG9ydHMmIG1lc3NhZ2UsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQpAQCAtMzQ5LDEwICszNDcsMTQgQEAg
dm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZGlkRmluaXNoU2tpcFdhaXRpbmco
dWludDY0X3QgY2FsbGJhY2tJRCkKICAgICAgICAgY2FsbGJhY2soKTsKIH0KIAotdm9pZCBXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6dGVybWluYXRlUHJvY2VzcygpCit2b2lkIFdlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzdG9wKCkKIHsKLSAgICBSRUxFQVNFX0xPRyhTZXJ2
aWNlV29ya2VyLCAiU2VydmljZSB3b3JrZXIgcHJvY2VzcyBpcyBleGl0aW5nIGJlY2F1c2UgaXQg
aXMgbm8gbG9uZ2VyIG5lZWRlZCIpOwotICAgIF9leGl0KEVYSVRfU1VDQ0VTUyk7CisgICAgUkVM
RUFTRV9MT0coU2VydmljZVdvcmtlciwgIlNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgaXMgcmVxdWVz
dGVkIHRvIHN0b3AgYWxsIHNlcnZpY2Ugd29ya2VycyIpOworICAgIG1faXNTdG9wcGVkID0gdHJ1
ZTsKKworICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDbG9zZVNXQ29udGV4dENvbm5lY3Rpb24geyB9
LCAwKTsKKyAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zdG9wQWxsU2VydmljZVdv
cmtlcnMoKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbmFibGVUZXJtaW5hdGlvbigp
OwogfQogCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzZXRUaHJvdHRsZVN0
YXRlKGJvb2wgaXNUaHJvdHRsZWFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaApp
bmRleCA3ZDYyNjAxOTYxOTE0ZjNmZTJkNTkyNWM5Yjk3YzRkMTQwZGQzYWUxLi40NTBlYjRmNDJk
ZWI3NTlmMDg5NjJhNjgyZjI2MmI5MDZhNzRlNGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLmgKQEAgLTk1LDcgKzk1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsYWltQ29tcGxl
dGVkKHVpbnQ2NF90IGNsYWltUmVxdWVzdElkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkRmluaXNo
U2tpcFdhaXRpbmcodWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBzZXRVc2VyQWdlbnQo
U3RyaW5nJiYgdXNlckFnZW50KTsKLSAgICBOT19SRVRVUk4gdm9pZCB0ZXJtaW5hdGVQcm9jZXNz
KCk7CisgICAgdm9pZCBzdG9wKCk7CiAgICAgdm9pZCBzZXRUaHJvdHRsZVN0YXRlKGJvb2wgaXNU
aHJvdHRsZWFibGUpOwogCiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVz
c2FnZXMuaW4KaW5kZXggZWFkOGNiZDNjMzA0ZDZkNzE1M2EyYmU3NDI1MGM3NDIyNGNmODcwYS4u
MDUwZTA1MjI2NzcwOWU0NDU0YjE1MWZlZDc4ZWI2NDVjOTRjNGVkNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTM5LDcgKzM5LDcgQEAg
bWVzc2FnZXMgLT4gV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gewogICAgIERpZEZpbmlz
aFNraXBXYWl0aW5nKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgU2V0VXNlckFnZW50KFN0cmlu
ZyB1c2VyQWdlbnQpCiAgICAgVXBkYXRlUHJlZmVyZW5jZXNTdG9yZShzdHJ1Y3QgV2ViS2l0OjpX
ZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlKQotICAgIFRlcm1pbmF0ZVByb2Nlc3MoKQorICAgIFN0
b3AoKQogICAgIFNldFRocm90dGxlU3RhdGUoYm9vbCBpc1Rocm90dGxlYWJsZSkKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDYwZDRjN2I3YmE3NTNlMDM0
YjZhYzIxMGE1MTgwMjUxNDNlNGI2NWIuLmYzYWI5NDcyYTRlOTVkZmY3OGM4YmFhM2QwOTNhZWI2
NzI0ODg2YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTEy
MjYsMTAgKzEyMjYsOCBAQCB2b2lkIFdlYlByb2Nlc3M6Om5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bkNsb3NlZChOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24qIGNvbm5lYwogI2VuZGlmCiAKICNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRv
bigpLmNvbm5lY3Rpb24oKSkgewotICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAi
U2VydmljZSB3b3JrZXIgcHJvY2VzcyBpcyBleGl0aW5nIGJlY2F1c2UgbmV0d29yayBwcm9jZXNz
IGlzIGdvbmUiKTsKLSAgICAgICAgX2V4aXQoRVhJVF9TVUNDRVNTKTsKLSAgICB9CisgICAgaWYg
KFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKKyAgICAgICAgU1dD
b250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc3RvcEFsbFNlcnZpY2VXb3JrZXJzKCk7CiAjZW5k
aWYKIAogICAgIG1fbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uID0gbnVsbHB0cjsKQEAgLTE3OTks
OCArMTc5Nyw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVpbnQ2NF90IHBhZ2VHCiAKIHZvaWQgV2ViUHJvY2Vzczo6
cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50cygpCiB7Ci0gICAgLy8gV2UgZG8gbm90IHdhbnQg
dG8gcmVnaXN0ZXIgc2VydmljZSB3b3JrZXIgZHVtbXkgZG9jdW1lbnRzLgotICAgIEFTU0VSVCgh
U1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKTsKICAgICBTZXJ2aWNl
V29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudHMo
KTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IGRhOTExYjkyYzVmYWQ2NzhmNDFlZmI1NGJkNDZjZGQ1NGUzMjBjNGQuLjUyNzBmZTBjZTIz
ZGFjM2JhMDg2YWM3M2NiNmQ2NTYzODg3ZDI1YjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxOS0wOS0yNSAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV1c2UgZXhpc3Rpbmcg
d2ViIHByb2Nlc3NlcyBmb3IgcnVubmluZyBzZXJ2aWNlIHdvcmtlcnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjE5NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9zZSBhIHdheSB0byBzcGluIGEg
c2VwYXJhdGUgc2VydmljZSB3b3JrZXIgcHJvY2Vzcy4KKyAgICAgICAgVGhpcyBpcyB1c2VkIGZv
ciB0ZXN0cyBleHBlY3RpbmcgdG8gY3Jhc2ggdGhlIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MuCisK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RS
dW5uZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNldEZvcmNlU2VwYXJhdGVT
ZXJ2aWNlV29ya2VyUHJvY2Vzcyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9D
b25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJv
bm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorCiAyMDE5LTA5LTIwICBBYWthc2ggSmFp
biAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBbRVdTXSBKU0MgcXVldWVzIHNo
b3VsZCByZS1idWlsZCBUb1QgYW5kIGNvbXBhcmUgcmVzdWx0cyBvbiBidWlsZCBmYWlsdXJlCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VX
b3JrZXJCYXNpYy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2Vy
dmljZVdvcmtlckJhc2ljLm1tCmluZGV4IDNmNjZiNGQzMzUxYmJmNThmMzc4NzkxZWFkNzQ3MmFj
MDg0MWJlN2IuLjQ0Zjc4MDBjMDhiMTVhYTYyYjBkNzMzNjIwYzM4YTM5YzQ5MDY0ZDIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtl
ckJhc2ljLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2Vy
dmljZVdvcmtlckJhc2ljLm1tCkBAIC0xMTczLDcgKzExNzMsNyBAQCBURVNUKFNlcnZpY2VXb3Jr
ZXJzLCBTZXJ2aWNlV29ya2VyUHJvY2Vzc0NyZWF0aW9uKQogICAgIGRvbmUgPSBmYWxzZTsKIAog
ICAgIC8vIE1ha2Ugc3VyZSB0aGF0IGxvYWRpbmcgdGhlIHNpbXBsZSBwYWdlIGRpZCBub3Qgc3Rh
cnQgdGhlIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MuCi0gICAgRVhQRUNUX0VRKDF1LCB3ZWJWaWV3
LmdldCgpLmNvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wuX3dlYlByb2Nlc3NDb3VudElnbm9yaW5n
UHJld2FybWVkKTsKKyAgICBFWFBFQ1RfRVEoMHUsIHdlYlZpZXcuZ2V0KCkuY29uZmlndXJhdGlv
bi5wcm9jZXNzUG9vbC5fc2VydmljZVdvcmtlclByb2Nlc3NDb3VudCk7CiAKICAgICB3ZWJWaWV3
ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOm5ld0NvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAg
ICBFWFBFQ1RfRVEoMnUsIHdlYlZpZXcuZ2V0KCkuY29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbC5f
d2ViUHJvY2Vzc0NvdW50SWdub3JpbmdQcmV3YXJtZWQpOwpAQCAtMTE4Myw3ICsxMTgzLDcgQEAg
VEVTVChTZXJ2aWNlV29ya2VycywgU2VydmljZVdvcmtlclByb2Nlc3NDcmVhdGlvbikKICAgICBk
b25lID0gZmFsc2U7CiAKICAgICAvLyBNYWtlIHN1cmUgdGhhdCBsb2FkaW5nIHRoaXMgcGFnZSBk
aWQgc3RhcnQgdGhlIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MuCi0gICAgRVhQRUNUX0VRKDN1LCB3
ZWJWaWV3LmdldCgpLmNvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wuX3dlYlByb2Nlc3NDb3VudEln
bm9yaW5nUHJld2FybWVkKTsKKyAgICBFWFBFQ1RfRVEoMXUsIHdlYlZpZXcuZ2V0KCkuY29uZmln
dXJhdGlvbi5wcm9jZXNzUG9vbC5fc2VydmljZVdvcmtlclByb2Nlc3NDb3VudCk7CiAKICAgICBb
W2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vi
c2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUg
ZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CiAgICAgICAgIGRvbmUgPSB0cnVl
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5k
aW5ncy9UZXN0UnVubmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKaW5kZXggZjUzNGJiMDEwYjZmNmYxMzcwYjA5YmU1
ODRmYjk4NjUwMGYzYjgyNC4uMWNmODU3NGRmMGJiNzMzNjg5ZmEzNmVkOTQxYTVjNDJmM2JiZDM1
YSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5k
aW5ncy9UZXN0UnVubmVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCkBAIC0zNjMsNiArMzYzLDcgQEAgaW50ZXJm
YWNlIFRlc3RSdW5uZXIgewogCiAgICAgdm9pZCB0ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcygpOwog
ICAgIHZvaWQgdGVybWluYXRlU2VydmljZVdvcmtlclByb2Nlc3MoKTsKKyAgICB2b2lkIHNldEZv
cmNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzcyhib29sZWFuIHZhbHVlKTsKIAogICAgIHZv
aWQgc2V0Q2FuSGFuZGxlSFRUUFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24oYm9vbGVhbiBjYW5IYW5k
bGUpOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGNhbkRvU2VydmVyVHJ1c3RFdmFs
dWF0aW9uSW5OZXR3b3JrUHJvY2VzczsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDE1NzRlYzRjYzYyODc5YjA4MmFl
MjczOGEyZmM4MWQ3MDQwOWQ0ZTYuLjJiNTc5MTZmOWE0Y2FhZTRiOTBhMzIxZjU1ZDMzNmY1MTVj
YzBlOGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcApAQCAtMTI2Niw2ICsxMjY2LDEzIEBAIHZvaWQgVGVzdFJ1bm5lcjo6
dGVybWluYXRlU2VydmljZVdvcmtlclByb2Nlc3MoKQogICAgIFdLQnVuZGxlUGFnZVBvc3RTeW5j
aHJvbm91c01lc3NhZ2VGb3JUZXN0aW5nKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5wYWdl
KCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpOwogfQogCit2
b2lkIFRlc3RSdW5uZXI6OnNldEZvcmNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzcyhib29s
IHZhbHVlKQoreworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFk
b3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlNldEZvcmNlU2VwYXJhdGVTZXJ2
aWNlV29ya2VyUHJvY2VzcyIpKTsKKyAgICBXS1JldGFpblB0cjxXS0Jvb2xlYW5SZWY+IG1lc3Nh
Z2VCb2R5ID0gYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUodmFsdWUpKTsKKyAgICBXS0J1bmRsZVBh
Z2VQb3N0U3luY2hyb25vdXNNZXNzYWdlRm9yVGVzdGluZyhJbmplY3RlZEJ1bmRsZTo6c2luZ2xl
dG9uKCkucGFnZSgpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQo
KSwgbnVsbHB0cik7Cit9CisKIHN0YXRpYyB1bnNpZ25lZCBuZXh0VUlTY3JpcHRDYWxsYmFja0lE
KCkKIHsKICAgICBzdGF0aWMgdW5zaWduZWQgY2FsbGJhY2tJRCA9IEZpcnN0VUlTY3JpcHRDYWxs
YmFja0lEOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuaAppbmRleCA5MzliNmJlOWQ4ZTUxYTcwNjI1NDVkNDM0NmY1YjQ1YzdlYWE1YWUw
Li42ZWIyY2FiMzkxMzVhNmRlN2QyMjE2NGQyOGYwYzIzNjNjZWUyM2I0IDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtNDYw
LDYgKzQ2MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdGVybWluYXRlTmV0d29ya1Byb2Nlc3Mo
KTsKICAgICB2b2lkIHRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKCk7CisgICAgdm9pZCBz
ZXRGb3JjZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MoYm9vbCk7CiAKICAgICB2b2lkIHJl
bW92ZUFsbFNlc3Npb25DcmVkZW50aWFscyhKU1ZhbHVlUmVmKTsKICAgICB2b2lkIGNhbGxEaWRS
ZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHNDYWxsYmFjaygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCAzYThjODlhY2FiYzM5MGFhNGMwOTExOTUxM2Ex
MDA0ZTkzZDdkNTQ0Li5kNjgxNDBlNWM1MzFhMDQxYzI2NDg4ZDA1YTUzYWU2ZTlkYjU5YjFhIDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtOTY3LDYgKzk2
Nyw4IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMo
Y29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMsIFJlCiAKICAgICBXS0NvbnRleHRDbGVhckN1cnJl
bnRNb2RpZmllclN0YXRlRm9yVGVzdGluZyhUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuY29u
dGV4dCgpKTsKIAorICAgIFdLQ29udGV4dFNldEZvcmNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJv
Y2VzcyhUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuY29udGV4dCgpLCBmYWxzZSk7CisKICAg
ICAvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBzaG91bGQgYWxzbyBlbnN1cmUgdGhhdCB0aGVyZSBp
cyBvbmx5IG9uZSBwYWdlIG9wZW4uCiAKICAgICAvLyBSZXNldCB0aGUgRXZlbnRTZW5kZXIgZm9y
IGVhY2ggdGVzdC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9j
YXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5k
ZXggNjA3ZTViYmRiNGIwNTZlYjZiNWI2NGViMDAxN2RiODA1YzA3YTk5Mi4uMDBhNGFhYWY4YmM0
ZDVkOTU5NTkwNTUzNzA2NDY4OTEwMjk2NmNjNiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0SW52b2NhdGlvbi5jcHAKQEAgLTE1NjIsNiArMTU2MiwxMyBAQCBXS1JldGFpblB0cjxXS1R5
cGVSZWY+IFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUlu
amVjdGVkQgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKKyAgICBpZiAoV0tTdHJp
bmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldEZvcmNlU2VwYXJhdGVTZXJ2
aWNlV29ya2VyUHJvY2VzcyIpKSB7CisgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdl
Qm9keSkgPT0gV0tCb29sZWFuR2V0VHlwZUlEKCkpOworICAgICAgICBhdXRvIGZvcmNlU2Vydmlj
ZVdvcmtlclByb2Nlc3MgPSBXS0Jvb2xlYW5HZXRWYWx1ZShzdGF0aWNfY2FzdDxXS0Jvb2xlYW5S
ZWY+KG1lc3NhZ2VCb2R5KSk7CisgICAgICAgIFdLQ29udGV4dFNldEZvcmNlU2VwYXJhdGVTZXJ2
aWNlV29ya2VyUHJvY2VzcyhUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuY29udGV4dCgpLCBm
b3JjZVNlcnZpY2VXb3JrZXJQcm9jZXNzKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fQorCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJT
ZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uIikpIHsKICAgICAgICAgQVNTRVJU
KFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS0RpY3Rpb25hcnlHZXRUeXBlSUQoKSk7CiAg
ICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zZXRXZWJBdXRoZW50aWNhdGlvbk1v
Y2tDb25maWd1cmF0aW9uKHN0YXRpY19jYXN0PFdLRGljdGlvbmFyeVJlZj4obWVzc2FnZUJvZHkp
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCAzMjVmNmM1Mzk4ZmNkZmVkMzQwNWJmZDU4ZjFkYzNlODhiODQyYzJmLi5lZmEy
YWI3MzEwZTQ1Mzk4NWJkYzE4MmFjODQ5YjAyYzEyZmJkMDQ4IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTktMDktMjUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAg
ICAgIFJldXNlIGV4aXN0aW5nIHdlYiBwcm9jZXNzZXMgZm9yIHJ1bm5pbmcgc2VydmljZSB3b3Jr
ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDIx
OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0
dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9wb3N0bWVzc2FnZS1hZnRlci1zdy1w
cm9jZXNzLWNyYXNoLmpzOgorICAgICAgICAoYXN5bmMuZG9UZXN0KToKKwogMjAxOS0wOS0yMSAg
QW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFtQb2ludGVyIEV2
ZW50c10gdG91Y2gtYWN0aW9uIHNldCB0byBwYW4teCBvciBwYW4teSBhbG9uZSBzaG91bGQgZGlz
YWJsZSBzY3JvbGxpbmcgYWx0b2dldGhlciBpZiB0aGUgaW50aWFsIGdlc3R1cmUgaXMgaW4gdGhl
IGRpc2FsbG93ZWQgZGlyZWN0aW9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvcG9zdG1lc3NhZ2UtYWZ0ZXItc3ctcHJvY2Vzcy1j
cmFzaC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNl
cy9wb3N0bWVzc2FnZS1hZnRlci1zdy1wcm9jZXNzLWNyYXNoLmpzCmluZGV4IDRmNzIxNjRjYWZk
OGNlYzA5YmQ4YTgyZTc2YmFhZGIyM2U5MDY4ZGUuLjU0M2YzNjY5ODg5M2QyZTUxNGU0Zjg2YTI1
OGM3MDMyZDI0ODg1MTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vy
cy9zZXJ2aWNlL3Jlc291cmNlcy9wb3N0bWVzc2FnZS1hZnRlci1zdy1wcm9jZXNzLWNyYXNoLmpz
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9w
b3N0bWVzc2FnZS1hZnRlci1zdy1wcm9jZXNzLWNyYXNoLmpzCkBAIC0zNywxMCArMzcsMjAgQEAg
bmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGZ1bmN0
aW9uKGV2ZW50KSB7CiAgICAgZmluaXNoU1dUZXN0KCk7CiB9KTsKIAotbmF2aWdhdG9yLnNlcnZp
Y2VXb3JrZXIucmVnaXN0ZXIoInJlc291cmNlcy9wb3N0bWVzc2FnZS1hZnRlci1zdy1wcm9jZXNz
LWNyYXNoLXdvcmtlci5qcyIsIHsgfSkudGhlbihmdW5jdGlvbihyZWdpc3RyYXRpb24pIHsKLSAg
ICB3b3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFsbGluZzsKLSAgICBsb2coIiogU2VuZGluZyBT
dGF0ZSB0byBTZXJ2aWNlIFdvcmtlciIpOwotICAgIHdvcmtlci5wb3N0TWVzc2FnZSgiU2V0U3Rh
dGUiKTsKLSAgICBsb2coIiogQXNraW5nIFNlcnZpY2UgV29ya2VyIGlmIGl0IHJlY2VpdmVkIHRo
ZSBzdGF0ZSIpOwotICAgIHdvcmtlci5wb3N0TWVzc2FnZSgiSGFzU3RhdGUiKTsKLX0pOworYXN5
bmMgZnVuY3Rpb24gZG9UZXN0KCkKK3sKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgIHRlc3RSdW5uZXIuc2V0Rm9yY2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKHRydWUp
OworCisgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUs
IDEwMCkpOworCisgICAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoInJlc291cmNl
cy9wb3N0bWVzc2FnZS1hZnRlci1zdy1wcm9jZXNzLWNyYXNoLXdvcmtlci5qcyIsIHsgfSkudGhl
bihmdW5jdGlvbihyZWdpc3RyYXRpb24pIHsKKyAgICAgICAgd29ya2VyID0gcmVnaXN0cmF0aW9u
Lmluc3RhbGxpbmc7CisgICAgICAgIGxvZygiKiBTZW5kaW5nIFN0YXRlIHRvIFNlcnZpY2UgV29y
a2VyIik7CisgICAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSgiU2V0U3RhdGUiKTsKKyAgICAgICAg
bG9nKCIqIEFza2luZyBTZXJ2aWNlIFdvcmtlciBpZiBpdCByZWNlaXZlZCB0aGUgc3RhdGUiKTsK
KyAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKCJIYXNTdGF0ZSIpOworICAgIH0pOworfQorCitk
b1Rlc3QoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379630</attachid>
            <date>2019-09-26 04:22:43 -0700</date>
            <delta_ts>2019-10-04 04:16:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202195-20190926132241.patch</filename>
            <type>text/plain</type>
            <size>55092</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwMzgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzRjZjFjY2U4YTZkY2Jh
ZDEzOTk4MmNlZTI2OGZkOWJlNmVmMDdmMS4uMWIzMzU4YmMyYWMwYTQ1ZmExYzY1MmZhMTkzMDAy
NjQ1YmU0MzNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE5LTA5LTI2ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXVzZSBleGlzdGluZyB3
ZWIgcHJvY2Vzc2VzIGZvciBydW5uaW5nIHNlcnZpY2Ugd29ya2VycworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMTk1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0
cy4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclByb3ZpZGVyOjpyZWdpc3RlclNlcnZp
Y2VXb3JrZXJDbGllbnRzKToKKyAgICAgICAgRG8gbm90IHJlZ2lzdGVyIGR1bW15IGRvY3VtZW50
cyB3aG9zZSBzb2xlIHB1cnBvc2UgaXMgdG8gZG8gbG9hZGluZyBmb3Igc2VydmljZSB3b3JrZXJz
LgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1dDb250ZXh0TWFuYWdlcjo6c2V0Q29ubmVjdGlvbik6Cisg
ICAgICAgIE5vdyB0aGF0IGNvbm5lY3Rpb25zIG1pZ2h0IGJlIGNyZWF0ZWQgbW9yZSB0aGFuIG9u
Y2Ugb24gYSBnaXZlbiBwcm9jZXNzLAorICAgICAgICBNYWtlIHN1cmUgdGhhdCB0aGUgcmVwbGFj
ZWQgY29ubmVjdGlvbiBpcyBzdG9wcGVkIG9yIHRoZXJlIGlzIG5vIHJlcGxhY2VkIGNvbm5lY3Rp
b24uCisgICAgICAgIChXZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2VyOjpzdG9wQWxsU2VydmljZVdv
cmtlcnMpOgorICAgICAgICBBZGQgcm91dGluZSB0byBzdG9wIGFsbCBzZXJ2aWNlIHdvcmtlcnMg
cnVubmluZyBpbiBhIGdpdmVuIHdlYiBwcm9jZXNzLgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNXQ29udGV4
dE1hbmFnZXI6OkNvbm5lY3Rpb246OmlzU3RvcHBlZCBjb25zdCk6CisKIDIwMTktMDktMjYgIERl
dmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIEZsYWt5IFRlc3Q6IGlu
c3BlY3Rvci9jYW52YXMvdXBkYXRlU2hhZGVyLmh0bWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggODY1ZWJjZWI4MGEx
ZTAzODA4MmVjMDZlY2U2ZmU4MmY0NDI0ZDg1YS4uYjk5NTJlOTQ5NzI1ZmQyOGZjNGEwNGMxZDdj
ZDFkODQxYTIxYjdjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5MSBAQAorMjAxOS0wOS0yNiAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV1c2UgZXhpc3Rpbmcg
d2ViIHByb2Nlc3NlcyBmb3IgcnVubmluZyBzZXJ2aWNlIHdvcmtlcnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjE5NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gbmV0d29yayBwcm9jZXNzIGFz
a3MgZm9yIGEgc2VydmljZSB3b3JrZXIgY29udGV4dCBjb25uZWN0aW9uLAorICAgICAgICB3ZSBu
b3cgaXRlcmF0ZSB0aHJvdWdoIGV4aXN0aW5nIHdlYiBwcm9jZXNzZXMgYW5kIHJldXNlIG9uZSBp
ZiBib3RoIHNlc3Npb24KKyAgICAgICAgYW5kIHJlZ2lzdHJhYmxlIGRvbWFpbiBtYXRjaC4KKyAg
ICAgICAgV2UgdGhlbiBhc2sgdGhlIHdlYiBwcm9jZXNzIHRvIGNyZWF0ZSBhIGNvbnRleHQgY29u
bmVjdGlvbiB0byB0aGUgbmV0d29yayBwcm9jZXNzLgorCisgICAgICAgIFdoZW4gbmV0d29yayBw
cm9jZXNzIG5vIGxvbmdlciBuZWVkcyB0aGUgY29ubmVjdGlvbiwgaXQgaW5zdHJ1Y3RzIHRoZSBV
SVByb2Nlc3MKKyAgICAgICAgdGhhdCB3aWxsIHVwZGF0ZSBpdHMgc3RhdGUgc28gdGhhdCB0aGUg
d2ViIHByb2Nlc3MgaXMgbm8gbG9uZ2VyIGNvbnNpZGVyZWQgYXMgcnVubmluZworICAgICAgICBz
ZXJ2aWNlIHdvcmtlcnMuCisgICAgICAgIFVJUHJvY2VzcyB0aGVuIGluc3RydWN0cyB0aGUgd2Vi
IHByb2Nlc3MgdG8gc3RvcCBpdHMgc2VydmljZSB3b3JrZXJzIGFuZCBpdHMgY29ubmVjdGlvbi4K
KworICAgICAgICBMYXRlciBvbiwgdGhlIHNhbWUgd2ViIHByb2Nlc3MgbWF5IGJlIHJldXNlZCBm
b3IgcnVubmluZyBzZXJ2aWNlIHdvcmtlcnMgaW4gd2hpY2ggY2FzZQorICAgICAgICBhIG5ldyBj
b25uZWN0aW9uIHdpbGwgcmVwbGFjZSB0aGUgc3RvcHBlZCBjb25uZWN0aW9uLgorCisgICAgICAg
IFNpbWlsYXJseSwgb24gbmV0d29yayBwcm9jZXNzIGNyYXNoLCBhbGwgd2ViIHByb2Nlc3MgcnVu
bmluZyBzZXJ2aWNlIHdvcmtlcnMgYXJlIHVwZGF0ZWQKKyAgICAgICAgc28gdGhhdCB0aGV5IGFy
ZSBubyBsb25nZXIgY29uc2lkZXJlZCBhcyBydW5uaW5nIHNlcnZpY2Ugd29ya2Vycy4KKworICAg
ICAgICBBZGQgYSBib29sZWFuIHN0YXRlIHRvIFdlYlByb2Nlc3NQb29sIHRvIGNvbnRyb2wgd2hl
dGhlciBjcmVhdGluZyBhIHNlcGFyYXRlIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MuCisKKyAgICAg
ICAgV2Ugbm8gbG9uZ2VyIHRlcm1pbmF0ZSB0aGUgd2ViIHByb2Nlc3Mgd2hlbiBzdG9wcGluZyBz
ZXJ2aWNlIHdvcmtlcnMgb3Igd2hlbiBuZXR3b3JrIHByb2Nlc3MgY3Jhc2guCisgICAgICAgIFdl
IHVzZSB0aGUgZW5hYmxlVGVybWluYXRpb24vZGlzYWJsZVRlcm1pbmF0aW9uIGF0IGNvbnRleHQg
Y29ubmVjdGlvbiBzdGFydC9zdG9wIHRpbWUuCisgICAgICAgIFdlIGNvbnNpZGVyIHRoYXQgdGhl
IGNvbnRleHQgY29ubmVjdGlvbiBpcyBzaW1pbGFyIHRvIHJ1bm5pbmcgYSBwYWdlIGluIHRoZSBw
cm9jZXNzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICBVcGRhdGUgdGhlIGNvZGUgYXMgdGhl
IHN3IGNvbnRleHQgY29ubmVjdGlvbiBtYXkgYmUgbnVsbCBidXQgd2UgbWF5IHN0aWxsIHJlY2Vp
dmUgbWVzc2FnZXMKKyAgICAgICAgdW50aWwgVUlQcm9jZXNzIGluc3RydWN0cyB3ZWIgcHJvY2Vz
cy4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFi
bGlzaFNXQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Y2xvc2VTV0NvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb25Ob0xvbmdlck5lZWRlZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6V2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjp+V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVy
Q29ubmVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6Y29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25DbG9zZWQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnRl
cm1pbmF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjppcGNDb25uZWN0aW9uIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcDoKKyAgICAgICAgKFdL
Q29udGV4dFNldEZvcmNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzcyk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3Nl
dEZvcmNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2VzczpdKToKKyAgICAgICAgKC1bV0tQcm9j
ZXNzUG9vbCBfd2ViUGFnZUNvbnRlbnRQcm9jZXNzQ291bnRdKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OndvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlbW92ZUZyb21T
ZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OmRpc2Nvbm5lY3RQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNy
ZWF0ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dGVybWluYXRl
TmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0Rm9y
Y2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JTZXJ2aWNlV29ya2Vy
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6bWF5YmVTaHV0RG93bik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRG
b3JNYWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpc2FibGVT
ZXJ2aWNlV29ya2Vycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZW5hYmxl
U2VydmljZVdvcmtlcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojppc01hdGNoaW5nUmVnaXN0cmFibGVE
b21haW4gY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fdXNlckFnZW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnRlcm1pbmF0ZVdv
cmtlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpz
eW5jVGVybWluYXRlV29ya2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb246OnN0b3ApOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnRlcm1pbmF0ZVByb2Nlc3MpOiBEZWxl
dGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpuZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb25DbG9zZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpyZWdpc3RlclNlcnZp
Y2VXb3JrZXJDbGllbnRzKToKKwogMjAxOS0wOS0yNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCByZXBsYWNlbWVudCBTUEkgb24gX1dL
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gZm9yIGVuYWJsaW5nIHNwZWN1bGF0aXZlIGNh
Y2hlIHZhbGlkYXRpb24gYW5kIElQQy1mcmVlIHNlcnZlciB0cnVzdCBldmFsdWF0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclByb3Zp
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUHJv
dmlkZXIuY3BwCmluZGV4IGVlZDI2NmQ1NmI5N2U5MWJkN2M5NDgwY2I1YzIzMzM1ZDhmMmUzY2Iu
LjU5YjMzMjU1MzY2MTExZDIwZWRkNDAzOWJkNTQ3N2NkZmRlZDVlZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUHJvdmlkZXIu
Y3BwCkBAIC0yOSw2ICsyOSw5IEBACiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCiAjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9h
ZGVyLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJTV0NsaWVu
dENvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgogCkBAIC02NCw2ICs2
Nyw4IEBAIHZvaWQgU2VydmljZVdvcmtlclByb3ZpZGVyOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJD
bGllbnRzKCkKIHsKICAgICBzZXRNYXlIYXZlUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJzKCk7CiAg
ICAgZm9yIChhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMoKSkgeworICAg
ICAgICBpZiAoIWRvY3VtZW50LT5wYWdlKCkgfHwgZG9jdW1lbnQtPnBhZ2UoKS0+bWFpbkZyYW1l
KCkubG9hZGVyKCkuY2xpZW50KCkuaXNTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQoKSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoU2NoZW1lUmVnaXN0cnk6OmNhblNl
cnZpY2VXb3JrZXJzSGFuZGxlVVJMU2NoZW1lKGRvY3VtZW50LT51cmwoKS5wcm90b2NvbCgpLnRv
U3RyaW5nV2l0aG91dENvcHlpbmcoKSkpCiAgICAgICAgICAgICBkb2N1bWVudC0+c2V0U2Vydmlj
ZVdvcmtlckNvbm5lY3Rpb24oJnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKCkpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4
dE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dD
b250ZXh0TWFuYWdlci5jcHAKaW5kZXggNzc0ZjM4NWYxOGFiYmE4MTI4OGI3OTE0YWM5YzkxZWIy
NTE0NGYzNS4uYWVkMTNkNzMwZTY5MmM5MDcxM2M1ZjlkMDQ5ZDIwMjQ5ODcyZDJkOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFu
YWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dD
b250ZXh0TWFuYWdlci5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgU1dDb250ZXh0TWFuYWdlciYgU1dD
b250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkKIAogdm9pZCBTV0NvbnRleHRNYW5hZ2VyOjpzZXRD
b25uZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCiB7Ci0g
ICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb24pOworICAgIEFTU0VSVCghbV9jb25uZWN0aW9uIHx8IG1f
Y29ubmVjdGlvbi0+aXNTdG9wcGVkKCkpOwogICAgIG1fY29ubmVjdGlvbiA9IFdURk1vdmUoY29u
bmVjdGlvbik7CiB9CiAKQEAgLTE3Nyw2ICsxNzcsMTYgQEAgU1dDb250ZXh0TWFuYWdlcjo6U2Vy
dmljZVdvcmtlclRlcm1pbmF0aW9uUmVxdWVzdDo6U2VydmljZVdvcmtlclRlcm1pbmF0aW9uUmVx
dWUKICAgICBtX3RpbWVvdXRUaW1lci5zdGFydE9uZVNob3QodGltZW91dCk7CiB9CiAKK3ZvaWQg
U1dDb250ZXh0TWFuYWdlcjo6c3RvcEFsbFNlcnZpY2VXb3JrZXJzKCkKK3sKKyAgICBhdXRvIHNl
cnZpY2VXb3JrZXJzID0gV1RGTW92ZShtX3dvcmtlck1hcCk7CisgICAgZm9yIChhdXRvJiBzZXJ2
aWNlV29ya2VyIDogc2VydmljZVdvcmtlcnMudmFsdWVzKCkpIHsKKyAgICAgICAgc2VydmljZVdv
cmtlci0+c2V0QXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCgpOworICAgICAgICBtX3BlbmRpbmdT
ZXJ2aWNlV29ya2VyVGVybWluYXRpb25SZXF1ZXN0cy5hZGQoc2VydmljZVdvcmtlci0+aWRlbnRp
ZmllcigpLCBtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJUZXJtaW5hdGlvblJlcXVlc3Q+KCp0aGlz
LCBzZXJ2aWNlV29ya2VyLT5pZGVudGlmaWVyKCksIHdvcmtlclRlcm1pbmF0aW9uVGltZW91dCkp
OworICAgICAgICBzZXJ2aWNlV29ya2VyLT50aHJlYWQoKS5zdG9wKFtdIHsgfSk7CisgICAgfQor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCmlu
ZGV4IDYyOGMzZjM4OTJiZWVlMjQyYzJlZjdmZjllZTIyMTYwZmRkYzIxMzUuLjVkNzgzY2M0YWQ1
NTg5Yjk3ZTI4MjAwNjVmYmQ2ZmZlY2MxZjI3MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKQEAgLTY1
LDYgKzY1LDExIEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGNsYWltKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpID0gMDsKIAogICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNUaHJvdHRsZWFibGUoKSBjb25zdCA9IDA7CisKKyAgICAgICAg
Ym9vbCBpc1N0b3BwZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU3RvcHBlZDsgfQorCisgICAgcHJv
dGVjdGVkOgorICAgICAgICBib29sIG1faXNTdG9wcGVkIHsgZmFsc2UgfTsKICAgICB9OwogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb25uZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxDb25u
ZWN0aW9uPiYmKTsKQEAgLTg3LDYgKzkyLDExIEBAIHB1YmxpYzoKIAogICAgIFNlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eSogd29ya2VyQnlJRChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlm
aWVyKSB7IHJldHVybiBtX3dvcmtlck1hcC5nZXQoaWRlbnRpZmllcik7IH0KIAorICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc3RvcEFsbFNlcnZpY2VXb3JrZXJzKCk7CisKKyAgICBzdGF0aWMgY29u
c3RleHByIFNlY29uZHMgd29ya2VyVGVybWluYXRpb25UaW1lb3V0IHsgMTBfcyB9OworICAgIHN0
YXRpYyBjb25zdGV4cHIgU2Vjb25kcyB3b3JrZXJUZXJtaW5hdGlvblRpbWVvdXRGb3JUZXN0IHsg
MTAwX21zIH07IC8vIE9ubHkgdXNlZCBieSBsYXlvdXQgdGVzdHMuCisKIHByaXZhdGU6CiAgICAg
U1dDb250ZXh0TWFuYWdlcigpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cAppbmRleCA3ZWVlN2UwNDY3OTZjODYwOWIxYjczM2E1Mjc2ODY1YzUzY2QxYzRmLi41YzlkNWYy
MmFhMWNkOGM1ZTdhZWFhN2Q1YzJjNmI3NzM5ODg3YTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcApAQCAtMjE4LDE5ICsyMTgsMTUgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW8KICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1l
KCkgPT0gTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIEFTU0VSVChtX3N3Q29udGV4dENvbm5lY3Rpb24pOwot
ICAgICAgICBpZiAobV9zd0NvbnRleHRDb25uZWN0aW9uKSB7CisgICAgICAgIGlmIChtX3N3Q29u
dGV4dENvbm5lY3Rpb24pCiAgICAgICAgICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24tPmRpZFJl
Y2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoZGVjb2Rlci5tZXNz
YWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSkgewotICAgICAgICBBU1NFUlQobV9zd0NvbnRleHRDb25uZWN0
aW9uKTsKLSAgICAgICAgaWYgKG1fc3dDb250ZXh0Q29ubmVjdGlvbikgeworICAgICAgICBpZiAo
bV9zd0NvbnRleHRDb25uZWN0aW9uKQogICAgICAgICAgICAgbV9zd0NvbnRleHRDb25uZWN0aW9u
LT5kaWRSZWNlaXZlRmV0Y2hUYXNrTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlm
CiAKQEAgLTg4Myw3ICs4NzksMjAgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6ZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKCkKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oUmVnaXN0cmFibGVEb21h
aW4mJiByZWdpc3RyYWJsZURvbWFpbikKIHsKICAgICBpZiAoYXV0byogc2VydmVyID0gbV9uZXR3
b3JrUHJvY2Vzcy0+c3dTZXJ2ZXJGb3JTZXNzaW9uSWZFeGlzdHMobV9zZXNzaW9uSUQpKQotICAg
ICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPFdlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbj4obV9uZXR3b3JrUHJvY2VzcywgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFp
biksICpzZXJ2ZXIsIG1fY29ubmVjdGlvbi5nZXQoKSk7CisgICAgICAgIG1fc3dDb250ZXh0Q29u
bmVjdGlvbiA9IG1ha2VVbmlxdWU8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPigqdGhp
cywgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksICpzZXJ2ZXIpOworfQorCit2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjbG9zZVNXQ29udGV4dENvbm5lY3Rpb24oKQorewor
ICAgIG1fc3dDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7Cit9CisKK3ZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5l
ZWRlZCgpCit7CisgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIldlYlByb2Nlc3MgJWxs
dSBubyBsb25nZXIgdXNlZnVsIGZvciBydW5uaW5nIHNlcnZpY2Ugd29ya2VycyIsIHdlYlByb2Nl
c3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+cGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZCB7IHdlYlByb2Nlc3NJZGVudGlm
aWVyKCkgfSwgMCk7CisKKyAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOwogfQog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCA2ZjdmN2ZhNzFjZDczODA0Y2M4
OWQ5ZmUyYTMzMWNhMTY3NmUwOTdhLi4xMTZiYTg3ODU5Nzk4MTA0NGVlYjc0MjliMjBkMzVmZmIy
YzhlMjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0xNTUsNiArMTU1LDEwIEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgY2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkoY29uc3Qg
V2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0aXZpdHkpPiYmKTsKIAor
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICB2b2lkIHNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb25Ob0xvbmdlck5lZWRlZCgpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nlc3MmLCBXZWJDb3JlOjpQcm9jZXNzSWRl
bnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CiAK
QEAgLTIxNCw2ICsyMTgsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
ICAgICB2b2lkIGVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbigpOwogICAgIHZvaWQgZXN0YWJs
aXNoU1dDb250ZXh0Q29ubmVjdGlvbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmKTsKKyAg
ICB2b2lkIGNsb3NlU1dDb250ZXh0Q29ubmVjdGlvbigpOwogICAgIHZvaWQgdW5yZWdpc3RlclNX
Q29ubmVjdGlvbigpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCmluZGV4IDJhZDMxM2FiODI0ZDUxZGFjYjY4MjllM2Q5YjE1ZTBiNzc1Y2EzZDku
LjNiY2QwZWIxMmEyNjIwMTdmMmEwMjRiNGUzNWIxYzY1YjcxNDA5YWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtODEsNiArODEsNyBAQCBtZXNzYWdl
cyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIEVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbigp
CiAgICAgRXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiBkb21haW4pCisgICAgQ2xvc2VTV0NvbnRleHRDb25uZWN0aW9uKCkKICNlbmRpZgogCiAg
ICAgQ3JlYXRlTmV3TWVzc2FnZVBvcnRDaGFubmVsKHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9y
dElkZW50aWZpZXIgcG9ydDEsIHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIg
cG9ydDIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uY3BwCmluZGV4IDU4MDk0ZDYyOGNiMDgzMDViOTc1YTgxMTkyZGNjYjNjYmM5NDRlMWEuLmZl
M2U2Yzc2M2Q5NTdmMjBkMmYwZWVkYTMxMzc2NmIzMDBhMmJkZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0zMCw3ICszMCw3
IEBACiAKICNpbmNsdWRlICJGb3JtRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKLSNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoVGFzay5oIgog
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldl
YkNvcmVBcmd1bWVudENvZGVycy5oIgpAQCAtNDEsMTAgKzQxLDkgQEAKIG5hbWVzcGFjZSBXZWJL
aXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVdlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiBu
ZXR3b3JrUHJvY2VzcywgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgU1dT
ZXJ2ZXImIHNlcnZlciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQorV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24o
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIFJlZ2lzdHJhYmxlRG9t
YWluJiYgcmVnaXN0cmFibGVEb21haW4sIFNXU2VydmVyJiBzZXJ2ZXIpCiAgICAgOiBTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24oV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbikpCi0gICAgLCBt
X2lwY0Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKLSAgICAsIG1fbmV0d29ya1Byb2Nl
c3MobmV0d29ya1Byb2Nlc3MpCisgICAgLCBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKICAgICAs
IG1fc2VydmVyKG1ha2VXZWFrUHRyKHNlcnZlcikpCiB7CiAgICAgc2VydmVyLmFkZENvbnRleHRD
b25uZWN0aW9uKCp0aGlzKTsKQEAgLTUyLDE0ICs1MSwxNyBAQCBXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihOZXR3b3JrUHJvY2Vz
cyYgbgogCiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246On5XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24oKQogewotICAgIGNvbm5lY3Rpb25DbG9zZWQoKTsKKyAgICBhdXRvIGZl
dGNoZXMgPSBXVEZNb3ZlKG1fb25nb2luZ0ZldGNoZXMpOworICAgIGZvciAoYXV0byYgZmV0Y2gg
OiBmZXRjaGVzLnZhbHVlcygpKQorICAgICAgICBmZXRjaC0+ZmFpbChSZXNvdXJjZUVycm9yIHsg
ZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgeyB9LCAiU2VydmljZSBXb3JrZXIgY29udGV4
dCBjbG9zZWQiX3MgfSk7CisKICAgICBpZiAobV9zZXJ2ZXIgJiYgbV9zZXJ2ZXItPmNvbnRleHRD
b25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4oKSkgPT0gdGhp
cykKICAgICAgICAgbV9zZXJ2ZXItPnJlbW92ZUNvbnRleHRDb25uZWN0aW9uKCp0aGlzKTsKIH0K
IAogSVBDOjpDb25uZWN0aW9uKiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1lc3Nh
Z2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pcGNDb25uZWN0aW9u
LnB0cigpOworICAgIHJldHVybiAmbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKTsKIH0KIAogdWlu
dDY0X3QgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVyRGVzdGlu
YXRpb25JRCgpIGNvbnN0CkBAIC02NywxMyArNjksNiBAQCB1aW50NjRfdCBXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKICAg
ICByZXR1cm4gMDsKIH0KIAotdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNv
bm5lY3Rpb25DbG9zZWQoKQotewotICAgIGF1dG8gZmV0Y2hlcyA9IFdURk1vdmUobV9vbmdvaW5n
RmV0Y2hlcyk7Ci0gICAgZm9yIChhdXRvJiBmZXRjaCA6IGZldGNoZXMudmFsdWVzKCkpCi0gICAg
ICAgIGZldGNoLT5mYWlsKFJlc291cmNlRXJyb3IgeyBlcnJvckRvbWFpbldlYktpdEludGVybmFs
LCAwLCB7IH0sICJTZXJ2aWNlIFdvcmtlciBjb250ZXh0IGNsb3NlZCJfcyB9KTsKLX0KLQogdm9p
ZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29y
a2VyQ2xpZW50KGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0aW5hdGlv
bklkZW50aWZpZXIsIGNvbnN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiBtZXNzYWdlLCBTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZU9yaWdpbikKIHsKICAgICBpZiAoIW1fc2VydmVyKQpAQCAtMTM1LDkgKzEzMCw3IEBAIHZvaWQg
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpkaWRGaW5pc2hTa2lwV2FpdGluZyh1aW50
NjRfdCBjYWxsYmFja0lEKQogCiB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
Y29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKQogewotICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VX
b3JrZXIsICJTZXJ2aWNlIHdvcmtlciBwcm9jZXNzIGlzIG5vIGxvbmdlciBuZWVkZWQsIHRlcm1p
bmF0aW5nIGl0Iik7Ci0gICAgdGVybWluYXRlKCk7Ci0gICAgY29ubmVjdGlvbkNsb3NlZCgpOwor
ICAgIG1fY29ubmVjdGlvbi5zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQo
KTsKIH0KIAogdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnNldFRocm90dGxl
U3RhdGUoYm9vbCBpc1Rocm90dGxlYWJsZSkKQEAgLTE0NiwxMSArMTM5LDYgQEAgdm9pZCBXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnNldFRocm90dGxlU3RhdGUoYm9vbCBpc1Rocm90
dGxlYWJsZSkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6U2V0VGhyb3R0bGVTdGF0ZSB7IGlzVGhyb3R0bGVhYmxlIH0pOwogfQogCi12b2lkIFdlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6dGVybWluYXRlKCkKLXsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VGVybWluYXRlUHJvY2VzcygpKTsK
LX0KLQogdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnN0YXJ0RmV0Y2goUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbnRlbnRDb25u
ZWN0aW9uLCBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBGZXRjaElkZW50aWZpZXIgY29udGVudEZldGNoSWRlbnRpZmllciwg
U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25z
dCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQog
ewogICAgIGF1dG8gZmV0Y2hJZGVudGlmaWVyID0gRmV0Y2hJZGVudGlmaWVyOjpnZW5lcmF0ZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCmlu
ZGV4IGEzYzY0ZWQxMjc4ZGY2N2E5OWUwMDU5N2E0NDIwZWEyMTc2NDkyYWQuLmJhZDBjNjA0MTgz
YTlmNTI0YTFhZDhhNzBhNjBmNDc3YmIyZjE1NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTQ5LDIwICs0OSwxNiBAQCBjbGFzcyBT
ZXNzaW9uSUQ7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBOZXR3b3JrUHJvY2VzczsK
K2NsYXNzIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogCiBjbGFzcyBXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24gOiBwdWJsaWMgV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdl
UmVjZWl2ZXIgewogcHVibGljOgotICAgIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihO
ZXR3b3JrUHJvY2VzcyYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFdlYkNvcmU6OlNX
U2VydmVyJiwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJik7CisgICAgV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mJiwgV2ViQ29yZTo6U1dTZXJ2ZXImKTsKICAgICB+V2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uKCk7CiAKLSAgICBJUEM6OkNvbm5lY3Rpb24qIGlwY0Nvbm5lY3Rp
b24oKSBjb25zdCB7IHJldHVybiBtX2lwY0Nvbm5lY3Rpb24ucHRyKCk7IH0KLQogICAgIC8vIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKIAotICAgIHZvaWQgdGVybWluYXRlKCk7Ci0K
ICAgICB2b2lkIHN0YXJ0RmV0Y2goUEFMOjpTZXNzaW9uSUQsIFJlZjxJUEM6OkNvbm5lY3Rpb24+
JiYsIFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNo
SWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OkZldGNoT3B0aW9ucyYsIGNvbnN0
IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGNhbmNl
bEZldGNoKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OkZl
dGNoSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgIHZv
aWQgY29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZShXZWJDb3JlOjpTV1NlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyKTsKQEAgLTk1LDggKzkxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgY29ubmVjdGlvbkNsb3NlZCgpOwogCi0gICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9pcGND
b25uZWN0aW9uOwotICAgIFJlZjxOZXR3b3JrUHJvY2Vzcz4gbV9uZXR3b3JrUHJvY2VzczsKKyAg
ICBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9jb25uZWN0aW9uOwogICAgIFdlYWtQ
dHI8V2ViQ29yZTo6U1dTZXJ2ZXI+IG1fc2VydmVyOwogCiAgICAgSGFzaE1hcDxTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrOjpJZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXI+IG1fb25n
b2luZ0ZldGNoSWRlbnRpZmllcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tD
b250ZXh0LmNwcAppbmRleCBhYzYxYTI5MWQ2Y2NhOGM0ZDQxOWQ3NTk3ZTVhNjY4MjRlN2UzNTQ5
Li5jMzVhNGM1NmZlNTk0YzUyMGYxNjIyNjI2N2VhMWY5MjJjOTVlNDFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKQEAgLTY1OSwzICs2NTksOCBAQCB2
b2lkIFdLQ29udGV4dENsZWFyTGVnYWN5UHJpdmF0ZUJyb3dzaW5nTG9jYWxTdG9yYWdlKFdLQ29u
dGV4dFJlZiBjb250ZXh0UmVmLCB2bwogICAgICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAg
ICAgfSk7CiB9CisKK3ZvaWQgV0tDb250ZXh0U2V0Rm9yY2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQ
cm9jZXNzKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBib29sIGZvcmNlU2VydmljZVdvcmtlclBy
b2Nlc3MpCit7CisgICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnNldEZvcmNlU2VwYXJh
dGVTZXJ2aWNlV29ya2VyUHJvY2Vzcyhmb3JjZVNlcnZpY2VXb3JrZXJQcm9jZXNzKTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaAppbmRl
eCA5MjQ5NWNhZGZkMDMxMjJjZmMyM2Q0NzQ1M2UwNzhiMWViOTI0N2NlLi4xYTA0OTY5MjJmNWVm
MTExZWFkYzBkYTA1ZDlmNTFhNjBhY2M4N2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oCkBAIC0xMjQsNiArMTI0LDggQEAgV0tfRVhQ
T1JUIHZvaWQgV0tDb250ZXh0U3luY0xvY2FsU3RvcmFnZShXS0NvbnRleHRSZWYgY29udGV4dFJl
Ziwgdm9pZCogY29udGV4dCwKIHR5cGVkZWYgdm9pZCAoKldLQ29udGV4dENsZWFyTGVnYWN5UHJp
dmF0ZUJyb3dzaW5nTG9jYWxTdG9yYWdlQ2FsbGJhY2spKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7
CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRDbGVhckxlZ2FjeVByaXZhdGVCcm93c2luZ0xvY2Fs
U3RvcmFnZShXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgdm9pZCogY29udGV4dCwgV0tDb250ZXh0
Q2xlYXJMZWdhY3lQcml2YXRlQnJvd3NpbmdMb2NhbFN0b3JhZ2VDYWxsYmFjayBjYWxsYmFjayk7
CiAKK1dLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldEZvcmNlU2VwYXJhdGVTZXJ2aWNlV29ya2Vy
UHJvY2VzcyhXS0NvbnRleHRSZWYgY29udGV4dCwgYm9vbCBmb3JjZVNlcnZpY2VXb3JrZXJQcm9j
ZXNzKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KaW5kZXggYzg1N2E4Njgy
NmU5MmEwODVkMDk5Njg4ZDNmNWNlM2I3OTA5NjVjNi4uNWZkMTRiNTdhYWRmM2MyMmMwYjdiYjRi
YzE3NmVjMTJjNzUyOWNkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KQEAgLTQ1OCw2ICs0NTgsMTEgQEAgc3RhdGljIE5TRGlj
dGlvbmFyeSAqcG9saWNpZXNIYXNoTWFwVG9EaWN0aW9uYXJ5KGNvbnN0IEhhc2hNYXA8U3RyaW5n
LCBIYXNoTWFwPFMKICAgICBfcHJvY2Vzc1Bvb2wtPmRpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vz
c1Rlcm1pbmF0aW9uRGVsYXkoKTsKIH0KIAorLSAodm9pZClfc2V0Rm9yY2VTZXBhcmF0ZVNlcnZp
Y2VXb3JrZXJQcm9jZXNzOihCT09MKWZvcmNlU2VydmljZVdvcmtlclByb2Nlc3MKK3sKKyAgICBf
cHJvY2Vzc1Bvb2wtPnNldEZvcmNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzcyhmb3JjZVNl
cnZpY2VXb3JrZXJQcm9jZXNzKTsKK30KKwogLSAocGlkX3QpX25ldHdvcmtQcm9jZXNzSWRlbnRp
ZmllcgogewogICAgIHJldHVybiBfcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzSWRlbnRpZmll
cigpOwpAQCAtNTE1LDEyICs1MjAsMTIgQEAgc3RhdGljIE5TRGljdGlvbmFyeSAqcG9saWNpZXNI
YXNoTWFwVG9EaWN0aW9uYXJ5KGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFMKIAogLSAo
c2l6ZV90KV93ZWJQYWdlQ29udGVudFByb2Nlc3NDb3VudAogewotICAgIGF1dG8gYWxsV2ViUHJv
Y2Vzc2VzID0gX3Byb2Nlc3NQb29sLT5wcm9jZXNzZXMoKTsKKyAgICBhdXRvIHJlc3VsdCA9IF9w
cm9jZXNzUG9vbC0+cHJvY2Vzc2VzKCkuc2l6ZSgpOwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKLSAgICByZXR1cm4gYWxsV2ViUHJvY2Vzc2VzLnNpemUoKSAtIF9wcm9jZXNzUG9vbC0+c2Vy
dmljZVdvcmtlclByb3hpZXNDb3VudCgpOwotI2Vsc2UKLSAgICByZXR1cm4gYWxsV2ViUHJvY2Vz
c2VzLnNpemUoKTsKKyAgICBpZiAoX3Byb2Nlc3NQb29sLT5mb3JjZVNlcGFyYXRlU2VydmljZVdv
cmtlclByb2Nlc3MoKSkKKyAgICAgICAgcmVzdWx0IC09IF9wcm9jZXNzUG9vbC0+c2VydmljZVdv
cmtlclByb3hpZXNDb3VudCgpOwogI2VuZGlmCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogLSAo
dm9pZClfcHJlY29ubmVjdFRvU2VydmVyOihOU1VSTCAqKXNlcnZlclVSTApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUu
aAppbmRleCBmMzExYjdhNDc3ZDk1YzIwYWU5MTVjOTMyYjA2M2FjOTdkZTQ0MmM1Li40NGFlOTE5
OGJiZDAyYWUwYTJiYTQ3YTI5MGMzNTk4YzgwOTFkNzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaApAQCAt
OTQsNiArOTQsNyBAQAogLSAodm9pZClfc2VuZE5ldHdvcmtQcm9jZXNzRGlkUmVzdW1lIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAtICh2b2lk
KV90ZXJtaW5hdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
MTAuMTQpLCBpb3MoMTIuMCkpOwogLSAodm9pZClfZGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNz
VGVybWluYXRpb25EZWxheSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0KSwgaW9zKDEyLjAp
KTsKKy0gKHZvaWQpX3NldEZvcmNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2VzczooQk9PTClm
b3JjZVNlcnZpY2VXb3JrZXJQcm9jZXNzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIC8vIFRlc3Qgb25seS4KIC0gKHBpZF90KV9uZXR3b3Jr
UHJvY2Vzc0lkZW50aWZpZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMyksIGlvcygxMS4w
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcAppbmRleCBkYzU0ODhjNDczNjhiODBkZWRlZWVlYzg4ZmRkM2NhZTI4
NDE1MjJkLi41ZWVmZDMxN2YzZGQwY2IyYmNiMjBlNjhlNGUyMzViZGZlYzk5M2RhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5jcHAKQEAgLTEyMDUsNiArMTIwNSwxMiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhSZWdpcwog
ewogICAgIG1fcHJvY2Vzc1Bvb2wuZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzKCp0aGlzLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgc2Vzc2lvbklE
KTsKIH0KKwordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp3b3JrZXJDb250ZXh0Q29ubmVjdGlv
bk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7
CisgICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVu
dGlmaWVyKGlkZW50aWZpZXIpKQorICAgICAgICBwcm9jZXNzLT5kaXNhYmxlU2VydmljZVdvcmtl
cnMoKTsKK30KICNlbmRpZgogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9y
YWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRP
cmlnaW4mIG9yaWdpbiwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6
ZSwgdWludDY0X3Qgc3BhY2VSZXF1aXJlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25h
bDx1aW50NjRfdD4gcXVvdGEpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCBi
YjBlMmJmMjNkOGZiNWEwMmM1YzQ0OTk2YTljZDg1YTQ3YWM0ZjVjLi5lMGEzNGM3MDJhYmRjY2Ux
MjcxODhjMmJkYjg3OTQ1OGNhNDFjOGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMjM5LDYgKzIzOSw3IEBA
IHByaXZhdGU6CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBlc3RhYmxp
c2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mJiwgUEFMOjpTZXNzaW9uSUQpOworICAgIHZvaWQgd29ya2VyQ29udGV4dENv
bm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CiAjZW5k
aWYKIAogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCwgY29uc3Qg
V2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgdWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRT
aXplLCB1aW50NjRfdCBzcGFjZVJlcXVpcmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlv
bmFsPHVpbnQ2NF90PiBxdW90YSk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmlu
ZGV4IGE2ZGJiN2M1YzkzNjMzYzIxNDRmZWQ5ZGY5NjY5ZjNiZjUzYWY2MzQuLjQ2ZTkwYTMyOWFi
NGJkNWU0YTViY2QxZTk3MWU0ZmEyNTA5MTViMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2Fn
ZXMuaW4KQEAgLTYyLDYgKzYyLDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBM
ZWdhY3lSZWNlaXZlciB7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgRXN0YWJs
aXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQp
CisgICAgV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllciBpZGVudGlmaWVyKQogI2VuZGlmCiAKICAgICBSZXF1ZXN0U3RvcmFnZVNw
YWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdp
biBvcmlnaW4sIHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0X3Qg
c3BhY2VSZXF1aXJlZCkgLT4gKE9wdGlvbmFsPHVpbnQ2NF90PiBuZXdRdW90YSkgQXN5bmMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCA4ZTQ2MzBiZGEz
YmFiNTgyYjZmNWQ2NGVkNTg4ZjZjMGQzMGI1OWQ2Li5mNjdkNGNlZjkzZTVhYTcyZTEzODYxZGIz
MWZlY2RiOGU5YjBlMDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwCkBAIC02ODMsNiArNjgzLDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6Om5ldHdvcmtQ
cm9jZXNzQ3Jhc2hlZChOZXR3b3JrUHJvY2Vzc1Byb3h5JiBuZXR3b3JrUHJvY2Vzc1ByCiAgICAg
YXV0byYgbmV3TmV0d29ya1Byb2Nlc3MgPSBlbnN1cmVOZXR3b3JrUHJvY2VzcygpOwogICAgIGZv
ciAoYXV0byYgcmVwbHkgOiBwZW5kaW5nUmVwbGllcykKICAgICAgICAgbmV3TmV0d29ya1Byb2Nl
c3MuZ2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCpyZXBseS5maXJzdCwgV1RGTW92ZShyZXBs
eS5zZWNvbmQpKTsKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBmb3IgKGF1dG8q
IHByb2Nlc3MgOiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMudmFsdWVzKCkpCisgICAgICAgIHBy
b2Nlc3MtPmRpc2FibGVTZXJ2aWNlV29ya2VycygpOworICAgIG1fc2VydmljZVdvcmtlclByb2Nl
c3Nlcy5jbGVhcigpOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmdldE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQcm94eSwgTWVz
c2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxh
eWVkUmVwbHkmJiByZXBseSkKQEAgLTcwOSwyNCArNzE1LDU5IEBAIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3
b3JrUHJvCiAgICAgfQogCiAgICAgUmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEIHJlZ2lz
dHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRCB7IFJlZ2lzdHJhYmxlRG9tYWluIHsgcmVnaXN0cmFi
bGVEb21haW4gfSwgc2Vzc2lvbklEIH07Ci0gICAgaWYgKG1fc2VydmljZVdvcmtlclByb2Nlc3Nl
cy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbldpdGhTZXNzaW9uSUQpKQorICAgIGlmIChtX3Nl
cnZpY2VXb3JrZXJQcm9jZXNzZXMuY29udGFpbnMocmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lv
bklEKSkgeworICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiV2ViUHJvY2Vzc1Bv
b2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyBwcm9j
ZXNzIGFscmVhZHkgY3JlYXRlZCIpOwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgaWYg
KG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5pc0VtcHR5KCkpCiAgICAgICAgIHNlbmRUb0FsbFBy
b2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6UmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50
cyB7IH0pOwogCi0gICAgYXV0byBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vz
c1Byb3h5OjpjcmVhdGVGb3JTZXJ2aWNlV29ya2VycygqdGhpcywgV1RGTW92ZShyZWdpc3RyYWJs
ZURvbWFpbiksICp3ZWJzaXRlRGF0YVN0b3JlKTsKLSAgICBtX3NlcnZpY2VXb3JrZXJQcm9jZXNz
ZXMuYWRkKFdURk1vdmUocmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEKSwgc2VydmljZVdv
cmtlclByb2Nlc3NQcm94eS5wdHIoKSk7CisgICAgV2ViUHJvY2Vzc1Byb3h5KiBzZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5IHsgbnVsbHB0ciB9OworICAgIGlmICghbV9mb3JjZVNlcnZpY2VXb3Jr
ZXJQcm9jZXNzKSB7CisgICAgICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKSB7
CisgICAgICAgICAgICBpZiAocHJvY2VzcyA9PSBtX3ByZXdhcm1lZFByb2Nlc3MgfHwgcHJvY2Vz
cyA9PSBtX2R1bW15UHJvY2Vzc1Byb3h5KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAgICAgaWYgKCZwcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gd2Vic2l0ZURhdGFT
dG9yZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmICghcHJvY2Vz
cy0+aXNNYXRjaGluZ1JlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQ
cm94eSA9IHByb2Nlc3MuZ2V0KCk7CisgICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5LT5lbmFibGVTZXJ2aWNlV29ya2VycygpOworCisgICAgICAgICAgICBSRUxFQVNFX0xPRyhT
ZXJ2aWNlV29ya2VyLCAiV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyByZXVzaW5nIGFuIGV4aXN0aW5nIHdlYiBwcm9jZXNzICVw
Iiwgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgIH0KIAotICAgIHVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCk7Ci0gICAgaW5pdGlh
bGl6ZU5ld1dlYlByb2Nlc3Moc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwgd2Vic2l0ZURhdGFT
dG9yZSk7CisgICAgaWYgKCFzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KSB7CisgICAgICAgIGF1
dG8gbmV3UHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JTZXJ2aWNlV29y
a2VycygqdGhpcywgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksICp3ZWJzaXRlRGF0YVN0b3Jl
KTsKKyAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSA9IG5ld1Byb2Nlc3NQcm94eS5w
dHIoKTsKIAotICAgIGF1dG8qIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHlQdHIgPSBzZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5LnB0cigpOwotICAgIG1fcHJvY2Vzc2VzLmFwcGVuZChXVEZNb3Zl
KHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkpKTsKKyAgICAgICAgUkVMRUFTRV9MT0coU2Vydmlj
ZVdvcmtlciwgIldlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3MgY3JlYXRpbmcgYSBuZXcgc2VydmljZSB3b3JrZXIgcHJvY2VzcyAl
cCIsIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkpOwogCi0gICAgc2VydmljZVdvcmtlclByb2Nl
c3NQcm94eVB0ci0+ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQobV9zZXJ2aWNlV29ya2Vy
UHJlZmVyZW5jZXMgPyBtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDogbV9kZWZh
dWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnN0b3JlKCkpOworICAgICAgICB1cGRhdGVQcm9j
ZXNzQXNzZXJ0aW9ucygpOworICAgICAgICBpbml0aWFsaXplTmV3V2ViUHJvY2VzcyhuZXdQcm9j
ZXNzUHJveHksIHdlYnNpdGVEYXRhU3RvcmUpOworICAgICAgICBtX3Byb2Nlc3Nlcy5hcHBlbmQo
V1RGTW92ZShuZXdQcm9jZXNzUHJveHkpKTsKKyAgICB9CisKKyAgICBBU1NFUlQoIW1fc2Vydmlj
ZVdvcmtlclByb2Nlc3Nlcy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbldpdGhTZXNzaW9uSUQp
KTsKKyAgICBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYWRkKFdURk1vdmUocmVnaXN0cmFibGVE
b21haW5XaXRoU2Vzc2lvbklEKSwgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSk7CisKKyAgICBz
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dCht
X3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyA/IG1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzLnZh
bHVlKCkgOiBtX2RlZmF1bHRQYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc3RvcmUoKSk7CiAgICAg
aWYgKCFtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQuaXNOdWxsKCkpCi0gICAgICAgIHNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHlQdHItPnNldFNlcnZpY2VXb3JrZXJVc2VyQWdlbnQobV9zZXJ2aWNl
V29ya2VyVXNlckFnZW50KTsKKyAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+c2V0
U2VydmljZVdvcmtlclVzZXJBZ2VudChtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQpOworfQorCit2
b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3NlcyhXZWJQ
cm9jZXNzUHJveHkmIHByb2Nlc3MpCit7CisgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwg
IldlYlByb2Nlc3NQb29sOjpyZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3NlcyAlcCIsICZw
cm9jZXNzKTsKKworICAgIFJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRCBrZXkgeyBwcm9j
ZXNzLnJlZ2lzdHJhYmxlRG9tYWluKCksIHByb2Nlc3Mud2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Np
b25JRCgpIH07CisgICAgQVNTRVJUKG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5jb250YWlucyhr
ZXkpKTsKKyAgICBBU1NFUlQobV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmdldChrZXkpID09ICZw
cm9jZXNzKTsKKyAgICBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMucmVtb3ZlKGtleSk7CiB9CiAj
ZW5kaWYKIApAQCAtMTEyMSw4ICsxMTYyLDkgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlzY29u
bmVjdFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQogCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQogICAgIGlmIChwcm9jZXNzLT5pc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKSB7
Ci0gICAgICAgIGF1dG8qIHJlbW92ZWRQcm9jZXNzID0gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2Vz
LnRha2UoUmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEIHsgcHJvY2Vzcy0+cmVnaXN0cmFi
bGVEb21haW4oKSwgcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpIH0pOwot
ICAgICAgICBBU1NFUlRfVU5VU0VEKHJlbW92ZWRQcm9jZXNzLCByZW1vdmVkUHJvY2VzcyA9PSBw
cm9jZXNzKTsKKyAgICAgICAgYXV0byBpdGVyYXRvciA9IG1fc2VydmljZVdvcmtlclByb2Nlc3Nl
cy5maW5kKFJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRCB7IHByb2Nlc3MtPnJlZ2lzdHJh
YmxlRG9tYWluKCksIHByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSB9KTsK
KyAgICAgICAgaWYgKGl0ZXJhdG9yICE9IG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5lbmQoKSAm
JiBpdGVyYXRvci0+dmFsdWUgPT0gcHJvY2VzcykKKyAgICAgICAgICAgIG1fc2VydmljZVdvcmtl
clByb2Nlc3Nlcy5yZW1vdmUoaXRlcmF0b3IpOwogICAgICAgICB1cGRhdGVQcm9jZXNzQXNzZXJ0
aW9ucygpOwogICAgIH0KICNlbmRpZgpAQCAtMTIzNSw4ICsxMjc3LDYgQEAgUmVmPFdlYlBhZ2VQ
cm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVu
dCwgUmVmPEFQSToKICAgICBhdXRvIHBhZ2UgPSBwcm9jZXNzLT5jcmVhdGVXZWJQYWdlKHBhZ2VD
bGllbnQsIFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKIAogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKLSAgICBBU1NFUlQoIXByb2Nlc3MtPmlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkp
OwotCiAgICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcykgewogICAgICAgICBtX3Nl
cnZpY2VXb3JrZXJQcmVmZXJlbmNlcyA9IHBhZ2UtPnByZWZlcmVuY2VzU3RvcmUoKTsKICAgICAg
ICAgZm9yIChhdXRvKiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA6IG1fc2VydmljZVdvcmtlclByb2Nl
c3Nlcy52YWx1ZXMoKSkKQEAgLTE3MzEsNiArMTc3MSwxMyBAQCB2b2lkIFdlYlByb2Nlc3NQb29s
OjpjbGVhckNhY2hlZENyZWRlbnRpYWxzKCkKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6dGVybWlu
YXRlTmV0d29ya1Byb2Nlc3MoKQogeworICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJX
ZWJQcm9jZXNzUG9vbDo6dGVybWluYXRlTmV0d29ya1Byb2Nlc3MiKTsKKworI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKKyAgICB3aGlsZSAoIW1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5pc0Vt
cHR5KCkpCisgICAgICAgIG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5iZWdpbigpLT52YWx1ZS0+
ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7CisjZW5kaWYKKwogICAgIGlmICghbV9uZXR3b3JrUHJv
Y2VzcykKICAgICAgICAgcmV0dXJuOwogICAgIApAQCAtMjU1NCw0ICsyNjAxLDE1IEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OmNsZWFyV2ViUHJvY2Vzc0lzUGxheWluZ0F1ZGlibGVNZWRpYShXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpCiAgICAgfQogfQogCit2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRG
b3JjZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MoYm9vbCBmb3JjZVNlcnZpY2VXb3JrZXJQ
cm9jZXNzKQoreworICAgIGlmIChtX2ZvcmNlU2VydmljZVdvcmtlclByb2Nlc3MgPT0gZm9yY2VT
ZXJ2aWNlV29ya2VyUHJvY2VzcykKKyAgICAgICAgcmV0dXJuOworCisgICAgUkVMRUFTRV9MT0co
U2VydmljZVdvcmtlciwgIldlYlByb2Nlc3NQb29sOjpzZXRGb3JjZVNlcGFyYXRlU2VydmljZVdv
cmtlclByb2Nlc3MgJWQiLCBmb3JjZVNlcnZpY2VXb3JrZXJQcm9jZXNzKTsKKworICAgIG1fZm9y
Y2VTZXJ2aWNlV29ya2VyUHJvY2VzcyA9IGZvcmNlU2VydmljZVdvcmtlclByb2Nlc3M7CisgICAg
dGVybWluYXRlTmV0d29ya1Byb2Nlc3MoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCAyMjU1NGM0ZWY2OTRl
MzI2YjIxYmY4MTQxNTFmM2YyNjEzMTYzMTU2Li5jOWI5NGRjMGMzNzRjYjBlMzg3NjFhNGRiZTJk
ZDk5YTQ3NTg4ODcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgK
QEAgLTM4NSw2ICszODUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJQYWdl
SUQoV2ViUGFnZVByb3h5SWRlbnRpZmllcikgY29uc3Q7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQogICAgIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJveHkmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYm
LCBQQUw6OlNlc3Npb25JRCk7CisgICAgdm9pZCByZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nl
c3NlcyhXZWJQcm9jZXNzUHJveHkmKTsKICAgICBzaXplX3Qgc2VydmljZVdvcmtlclByb3hpZXND
b3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5zaXplKCk7IH0K
ICAgICB2b2lkIHNldEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlcihib29s
IGFsbG93cykgeyBtX2FsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlciA9IGFs
bG93czsgfQogICAgIGJvb2wgYWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2Vy
KCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3Jr
ZXI7IH0KQEAgLTUzMiw2ICs1MzMsOSBAQCBwdWJsaWM6CiAgICAgCiAgICAgUGx1Z0luQXV0b1N0
YXJ0UHJvdmlkZXImIHBsdWdJbkF1dG9TdGFydFByb3ZpZGVyKCkgeyByZXR1cm4gbV9wbHVnSW5B
dXRvU3RhcnRQcm92aWRlcjsgfQogCisgICAgdm9pZCBzZXRGb3JjZVNlcGFyYXRlU2VydmljZVdv
cmtlclByb2Nlc3MoYm9vbCBmb3JjZVNlcnZpY2VXb3JrZXJQcm9jZXNzKTsKKyAgICBib29sIGZv
cmNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fZm9yY2VT
ZXJ2aWNlV29ya2VyUHJvY2VzczsgfQorCiBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0
aWFsaXplKCk7CiAKQEAgLTgxMyw2ICs4MTcsNyBAQCBwcml2YXRlOgogI2Vsc2UKICAgICBib29s
IG1faXNEZWxheWVkV2ViUHJvY2Vzc0xhdW5jaERpc2FibGVkIHsgZmFsc2UgfTsKICNlbmRpZgor
ICAgIGJvb2wgbV9mb3JjZVNlcnZpY2VXb3JrZXJQcm9jZXNzIHsgZmFsc2UgfTsKIH07CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcAppbmRleCBmZmFmYTdlYThmNzg4NDRmYzY0NTk0OTM4NDgzZjRhZTU0MjFkMjQxLi5k
MGQ4NWE5NGNiZmEyNTJmYjBmMWI3Nzk4MDNiNzk3MTc3ZGFhNDA5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCBSZWY8
V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvclNlcnZpY2VXb3JrZXJz
KFdlYlByb2Nlc3NQb29sJiBwcgogewogICAgIGF1dG8gcHJveHkgPSBhZG9wdFJlZigqbmV3IFdl
YlByb2Nlc3NQcm94eShwcm9jZXNzUG9vbCwgJndlYnNpdGVEYXRhU3RvcmUsIElzUHJld2FybWVk
OjpObykpOwogICAgIHByb3h5LT5tX3JlZ2lzdHJhYmxlRG9tYWluID0gV1RGTW92ZShyZWdpc3Ry
YWJsZURvbWFpbik7Ci0gICAgcHJveHktPm1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uID0gU2Vy
dmljZVdvcmtlckluZm9ybWF0aW9uIHsgV2ViUGFnZVByb3h5SWRlbnRpZmllcjo6Z2VuZXJhdGUo
KSwgUGFnZUlkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKKyAgICBwcm94eS0+ZW5hYmxlU2Vydmlj
ZVdvcmtlcnMoKTsKICAgICBwcm94eS0+Y29ubmVjdCgpOwogICAgIHJldHVybiBwcm94eTsKIH0K
QEAgLTkyMCw2ICs5MjAsOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6bWF5YmVTaHV0RG93bihB
bGxvd1Byb2Nlc3NDYWNoaW5nIGFsbG93UHJvY2Vzc0NhY2hpbmcpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKKyAgICBpZiAoaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSkKKyAgICAgICAgcmV0
dXJuOworCiAgICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6OlRlcm1pbmF0ZWQgfHwgIWNhblRlcm1p
bmF0ZUF1eGlsaWFyeVByb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNDM4LDYgKzE0
NDEsOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JN
YWluRnJhbWUoY29uc3QgVVJMJiB1cmwpCiAKICAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0g
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfTsKICAgICBpZiAobV9yZWdpc3RyYWJs
ZURvbWFpbiAmJiAqbV9yZWdpc3RyYWJsZURvbWFpbiAhPSByZWdpc3RyYWJsZURvbWFpbikgewor
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICAgICAgZGlzYWJsZVNlcnZpY2VXb3JrZXJz
KCk7CisjZW5kaWYKICAgICAgICAgLy8gTnVsbCBvdXQgcmVnaXN0cmFibGUgZG9tYWluIHNpbmNl
IHRoaXMgcHJvY2VzcyBoYXMgbm93IGJlZW4gdXNlZCBmb3Igc2V2ZXJhbCBkb21haW5zLgogICAg
ICAgICBtX3JlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB9
OwogICAgICAgICByZXR1cm47CkBAIC0xNTMyLDYgKzE1MzgsMjUgQEAgdm9pZCBXZWJQcm9jZXNz
UHJveHk6OnVwZGF0ZVNlcnZpY2VXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZl
cmVuY2VzU3QKICAgICBBU1NFUlQobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pOwogICAgIHNl
bmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpVcGRhdGVQcmVmZXJl
bmNlc1N0b3JlIHsgc3RvcmUgfSwgMCk7CiB9CisKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaXNh
YmxlU2VydmljZVdvcmtlcnMoKQoreworICAgIGlmICghbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRp
b24pCisgICAgICAgIHJldHVybjsKKworICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uID0g
eyB9OworICAgIGlmIChtX3Byb2Nlc3NQb29sKQorICAgICAgICBtX3Byb2Nlc3NQb29sLT5yZW1v
dmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3NlcygqdGhpcyk7CisKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U3RvcCB7IH0sIDApOworfQorCit2b2lk
IFdlYlByb2Nlc3NQcm94eTo6ZW5hYmxlU2VydmljZVdvcmtlcnMoKQoreworICAgIEFTU0VSVCht
X3JlZ2lzdHJhYmxlRG9tYWluICYmICFtX3JlZ2lzdHJhYmxlRG9tYWluLT5pc0VtcHR5KCkpOwor
ICAgIEFTU0VSVCghbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pOworICAgIG1fc2VydmljZVdv
cmtlckluZm9ybWF0aW9uID0gU2VydmljZVdvcmtlckluZm9ybWF0aW9uIHsgV2ViUGFnZVByb3h5
SWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwgUGFnZUlkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKK30K
ICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggNWUxOWMyZjc0M2UxNTNjNDc0Yzg2YmVkM2Q4NjY3MTRh
ZWI2ODlhYy4uNzhkMGVmNGY2NmE5M2Q1MWYwYWI2MTVkZTlmODY2NGYyZjQzMmNlOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTEyNSwxMCArMTI1LDE0
IEBAIHB1YmxpYzoKICAgICBXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2xJZkV4aXN0cygpIGNv
bnN0OwogICAgIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCgpIGNvbnN0OwogCisgICAgYm9v
bCBpc01hdGNoaW5nUmVnaXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mIGRvbWFpbikgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbiA/ICptX3Jl
Z2lzdHJhYmxlRG9tYWluID09IGRvbWFpbiA6IGZhbHNlOyB9CiAgICAgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4oKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJh
YmxlRG9tYWluLnZhbHVlT3IoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB9KTsgfQogICAg
IHZvaWQgc2V0SXNJblByb2Nlc3NDYWNoZShib29sKTsKICAgICBib29sIGlzSW5Qcm9jZXNzQ2Fj
aGUoKSBjb25zdCB7IHJldHVybiBtX2lzSW5Qcm9jZXNzQ2FjaGU7IH0KIAorICAgIHZvaWQgZW5h
YmxlU2VydmljZVdvcmtlcnMoKTsKKyAgICB2b2lkIGRpc2FibGVTZXJ2aWNlV29ya2VycygpOwor
CiAgICAgV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9yZSgpIGNvbnN0IHsgQVNTRVJU
KG1fd2Vic2l0ZURhdGFTdG9yZSk7IHJldHVybiAqbV93ZWJzaXRlRGF0YVN0b3JlOyB9CiAgICAg
dm9pZCBzZXRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmKTsKICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAppbmRleCA3NTFlNTEwNTUxNTk5ODZiYTU4YjY4
NjBiZDUxOTQ5MmM5NjU3YzQ5Li41NDIyMGExYzZmZDU3ZWNlODAzMzBmZGUyOTQyYjg2YTI0Mzg5
ODllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC02OCw5ICs2OCw2
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFBBTDsKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCi1zdGF0aWMgY29uc3QgU2Vjb25kcyBhc3luY1dvcmtlclRlcm1pbmF0
aW9uVGltZW91dCB7IDEwX3MgfTsKLXN0YXRpYyBjb25zdCBTZWNvbmRzIHN5bmNXb3JrZXJUZXJt
aW5hdGlvblRpbWVvdXQgeyAxMDBfbXMgfTsgLy8gT25seSB1c2VkIGJ5IGxheW91dCB0ZXN0cy4K
LQogU2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50OjpTZXJ2aWNlV29ya2VyRnJhbWVMb2Fk
ZXJDbGllbnQoV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQogICAgIDog
bV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCiAgICAgLCBtX3dlYlBhZ2VQcm94eUlEKHdlYlBhZ2VQ
cm94eUlEKQpAQCAtOTksNiArOTYsNyBAQCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbgogewogICAg
IHVwZGF0ZVByZWZlcmVuY2VzU3RvcmUoc3RvcmUpOwogICAgIG1fY29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpF
c3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uIHsgbV9yZWdpc3RyYWJsZURvbWFpbiB9LCAwKTsK
KyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5kaXNhYmxlVGVybWluYXRpb24oKTsKIH0KIAog
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246On5XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbigpID0gZGVmYXVsdDsKQEAgLTI1MywxMiArMjUxLDEyIEBAIHZvaWQgV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb246OnNvZnRVcGRhdGUoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIKIAogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6dGVybWluYXRlV29y
a2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgU1dDb250ZXh0
TWFuYWdlcjo6c2luZ2xldG9uKCkudGVybWluYXRlV29ya2VyKGlkZW50aWZpZXIsIGFzeW5jV29y
a2VyVGVybWluYXRpb25UaW1lb3V0LCBudWxscHRyKTsKKyAgICBTV0NvbnRleHRNYW5hZ2VyOjpz
aW5nbGV0b24oKS50ZXJtaW5hdGVXb3JrZXIoaWRlbnRpZmllciwgU1dDb250ZXh0TWFuYWdlcjo6
d29ya2VyVGVybWluYXRpb25UaW1lb3V0LCBudWxscHRyKTsKIH0KIAogdm9pZCBXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6c3luY1Rlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBpZGVudGlmaWVyLCBNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b246OlN5bmNUZXJtaW5hdGVXb3JrZXI6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewotICAgIFNX
Q29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnRlcm1pbmF0ZVdvcmtlcihpZGVudGlmaWVyLCBz
eW5jV29ya2VyVGVybWluYXRpb25UaW1lb3V0LCBXVEZNb3ZlKHJlcGx5KSk7CisgICAgU1dDb250
ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkudGVybWluYXRlV29ya2VyKGlkZW50aWZpZXIsIFNXQ29u
dGV4dE1hbmFnZXI6OndvcmtlclRlcm1pbmF0aW9uVGltZW91dEZvclRlc3QsIFdURk1vdmUocmVw
bHkpKTsKIH0KIAogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6cG9zdE1lc3Nh
Z2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXImIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgY29uc3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMm
IG1lc3NhZ2UsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlT3JpZ2luKQpAQCAtMzQ4LDEwICszNDYsMTQgQEAgdm9pZCBXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZGlkRmluaXNoU2tpcFdhaXRpbmcodWludDY0X3QgY2Fs
bGJhY2tJRCkKICAgICAgICAgY2FsbGJhY2soKTsKIH0KIAotdm9pZCBXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6dGVybWluYXRlUHJvY2VzcygpCit2b2lkIFdlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjpzdG9wKCkKIHsKLSAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAi
U2VydmljZSB3b3JrZXIgcHJvY2VzcyBpcyBleGl0aW5nIGJlY2F1c2UgaXQgaXMgbm8gbG9uZ2Vy
IG5lZWRlZCIpOwotICAgIF9leGl0KEVYSVRfU1VDQ0VTUyk7CisgICAgUkVMRUFTRV9MT0coU2Vy
dmljZVdvcmtlciwgIlNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgaXMgcmVxdWVzdGVkIHRvIHN0b3Ag
YWxsIHNlcnZpY2Ugd29ya2VycyIpOworICAgIG1faXNTdG9wcGVkID0gdHJ1ZTsKKworICAgIG1f
Y29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpDbG9zZVNXQ29udGV4dENvbm5lY3Rpb24geyB9LCAwKTsKKyAgICBT
V0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zdG9wQWxsU2VydmljZVdvcmtlcnMoKTsKKyAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbmFibGVUZXJtaW5hdGlvbigpOwogfQogCiB2b2lk
IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzZXRUaHJvdHRsZVN0YXRlKGJvb2wgaXNU
aHJvdHRsZWFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCA3ZDYyNjAx
OTYxOTE0ZjNmZTJkNTkyNWM5Yjk3YzRkMTQwZGQzYWUxLi40NTBlYjRmNDJkZWI3NTlmMDg5NjJh
NjgyZjI2MmI5MDZhNzRlNGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAg
LTk1LDcgKzk1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsYWltQ29tcGxldGVkKHVpbnQ2NF90
IGNsYWltUmVxdWVzdElkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkRmluaXNoU2tpcFdhaXRpbmco
dWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBzZXRVc2VyQWdlbnQoU3RyaW5nJiYgdXNl
ckFnZW50KTsKLSAgICBOT19SRVRVUk4gdm9pZCB0ZXJtaW5hdGVQcm9jZXNzKCk7CisgICAgdm9p
ZCBzdG9wKCk7CiAgICAgdm9pZCBzZXRUaHJvdHRsZVN0YXRlKGJvb2wgaXNUaHJvdHRsZWFibGUp
OwogCiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5k
ZXggZWFkOGNiZDNjMzA0ZDZkNzE1M2EyYmU3NDI1MGM3NDIyNGNmODcwYS4uMDUwZTA1MjI2Nzcw
OWU0NDU0YjE1MWZlZDc4ZWI2NDVjOTRjNGVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTM5LDcgKzM5LDcgQEAgbWVzc2FnZXMgLT4g
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gewogICAgIERpZEZpbmlzaFNraXBXYWl0aW5n
KHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgU2V0VXNlckFnZW50KFN0cmluZyB1c2VyQWdlbnQp
CiAgICAgVXBkYXRlUHJlZmVyZW5jZXNTdG9yZShzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNl
c1N0b3JlIHN0b3JlKQotICAgIFRlcm1pbmF0ZVByb2Nlc3MoKQorICAgIFN0b3AoKQogICAgIFNl
dFRocm90dGxlU3RhdGUoYm9vbCBpc1Rocm90dGxlYWJsZSkKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDYwZDRjN2I3YmE3NTNlMDM0YjZhYzIxMGE1MTgw
MjUxNDNlNGI2NWIuLmYzYWI5NDcyYTRlOTVkZmY3OGM4YmFhM2QwOTNhZWI2NzI0ODg2YjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTEyMjYsMTAgKzEyMjYs
OCBAQCB2b2lkIFdlYlByb2Nlc3M6Om5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZChOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24qIGNvbm5lYwogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCi0gICAgaWYgKFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rp
b24oKSkgewotICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiU2VydmljZSB3b3Jr
ZXIgcHJvY2VzcyBpcyBleGl0aW5nIGJlY2F1c2UgbmV0d29yayBwcm9jZXNzIGlzIGdvbmUiKTsK
LSAgICAgICAgX2V4aXQoRVhJVF9TVUNDRVNTKTsKLSAgICB9CisgICAgaWYgKFNXQ29udGV4dE1h
bmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKKyAgICAgICAgU1dDb250ZXh0TWFuYWdl
cjo6c2luZ2xldG9uKCkuc3RvcEFsbFNlcnZpY2VXb3JrZXJzKCk7CiAjZW5kaWYKIAogICAgIG1f
bmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uID0gbnVsbHB0cjsKQEAgLTE3OTksOCArMTc5Nyw2IEBA
IHZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzKHVpbnQ2NF90IHBhZ2VHCiAKIHZvaWQgV2ViUHJvY2Vzczo6cmVnaXN0ZXJTZXJ2
aWNlV29ya2VyQ2xpZW50cygpCiB7Ci0gICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gcmVnaXN0ZXIg
c2VydmljZSB3b3JrZXIgZHVtbXkgZG9jdW1lbnRzLgotICAgIEFTU0VSVCghU1dDb250ZXh0TWFu
YWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKTsKICAgICBTZXJ2aWNlV29ya2VyUHJvdmlk
ZXI6OnNpbmdsZXRvbigpLnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudHMoKTsKIH0KIApkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDMyMzQ4NTY0
MTE2MDg3N2M4M2ZlZjM4NzRjMDQ4OThmZDY3ZTk1OTcuLjBmNDQzNjFhYzY3OWVlNjc2ZWRiYTZm
ZGI5YjY2NTY2YzE4NTc3YjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxOS0wOS0yNiAgWW91ZW5uIEZhYmxldCAg
PHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV1c2UgZXhpc3Rpbmcgd2ViIHByb2Nlc3Nl
cyBmb3IgcnVubmluZyBzZXJ2aWNlIHdvcmtlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjE5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBlbmZvcmNpbmcgYSBzZXBhcmF0
ZSBwcm9jZXNzIGZvciBzZXJ2aWNlIHdvcmtlcnMuCisgICAgICAgIFRoaXMgaXMgdXNlZnVsIGZv
ciB0ZXN0cyB0cnlpbmcgdG8gY3Jhc2ggdGhlIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MuIAorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFz
aWMubW06CisgICAgICAgIFVwZGF0ZSB0ZXN0IHRvIHVzZSBzZXJ2aWNlV29ya2VyUHJvY2Vzc0Nv
dW50LgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3Mv
VGVzdFJ1bm5lci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0Rm9yY2VTZXBh
cmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJlc2V0U3Rh
dGVUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdElu
dm9jYXRpb24uY3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5
bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisKIDIwMTktMDktMjUgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgcmVw
bGFjZW1lbnQgU1BJIG9uIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGZvciBlbmFi
bGluZyBzcGVjdWxhdGl2ZSBjYWNoZSB2YWxpZGF0aW9uIGFuZCBJUEMtZnJlZSBzZXJ2ZXIgdHJ1
c3QgZXZhbHVhdGlvbgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQppbmRleCAzZjY2YjRkMzM1MWJiZjU4
ZjM3ODc5MWVhZDc0NzJhYzA4NDFiZTdiLi40NGY3ODAwYzA4YjE1YWE2MmIwZDczMzYyMGMzOGEz
OWM0OTA2NGQyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQpAQCAtMTE3Myw3ICsxMTczLDcgQEAg
VEVTVChTZXJ2aWNlV29ya2VycywgU2VydmljZVdvcmtlclByb2Nlc3NDcmVhdGlvbikKICAgICBk
b25lID0gZmFsc2U7CiAKICAgICAvLyBNYWtlIHN1cmUgdGhhdCBsb2FkaW5nIHRoZSBzaW1wbGUg
cGFnZSBkaWQgbm90IHN0YXJ0IHRoZSBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzLgotICAgIEVYUEVD
VF9FUSgxdSwgd2ViVmlldy5nZXQoKS5jb25maWd1cmF0aW9uLnByb2Nlc3NQb29sLl93ZWJQcm9j
ZXNzQ291bnRJZ25vcmluZ1ByZXdhcm1lZCk7CisgICAgRVhQRUNUX0VRKDB1LCB3ZWJWaWV3Lmdl
dCgpLmNvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wuX3NlcnZpY2VXb3JrZXJQcm9jZXNzQ291bnQp
OwogCiAgICAgd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpuZXdDb25maWd1cmF0
aW9uLmdldCgpXSk7CiAgICAgRVhQRUNUX0VRKDJ1LCB3ZWJWaWV3LmdldCgpLmNvbmZpZ3VyYXRp
b24ucHJvY2Vzc1Bvb2wuX3dlYlByb2Nlc3NDb3VudElnbm9yaW5nUHJld2FybWVkKTsKQEAgLTEx
ODMsNyArMTE4Myw3IEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIFNlcnZpY2VXb3JrZXJQcm9jZXNz
Q3JlYXRpb24pCiAgICAgZG9uZSA9IGZhbHNlOwogCiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgbG9h
ZGluZyB0aGlzIHBhZ2UgZGlkIHN0YXJ0IHRoZSBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzLgotICAg
IEVYUEVDVF9FUSgzdSwgd2ViVmlldy5nZXQoKS5jb25maWd1cmF0aW9uLnByb2Nlc3NQb29sLl93
ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1ByZXdhcm1lZCk7CisgICAgRVhQRUNUX0VRKDF1LCB3ZWJW
aWV3LmdldCgpLmNvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wuX3NlcnZpY2VXb3JrZXJQcm9jZXNz
Q291bnQpOwogCiAgICAgW1tjb25maWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVdIHJlbW92ZURh
dGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZp
ZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgewogICAg
ICAgICBkb25lID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IDNjZDk0YmVk
YTQ3MDYwNDlhZTA5YmI4YjMxMjNlMTlhNjNjOWZlNjYuLmZlNDAyNTg0ZDRiZWZiYTYxMjEzYTYy
N2NhMTk0NzNhYTYyYjgyMTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtMzYzLDYg
KzM2Myw3IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKIAogICAgIHZvaWQgdGVybWluYXRlTmV0
d29ya1Byb2Nlc3MoKTsKICAgICB2b2lkIHRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKCk7
CisgICAgdm9pZCBzZXRGb3JjZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MoYm9vbGVhbiB2
YWx1ZSk7CiAKICAgICB2b2lkIHNldENhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9u
KGJvb2xlYW4gY2FuSGFuZGxlKTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBjYW5E
b1NlcnZlclRydXN0RXZhbHVhdGlvbkluTmV0d29ya1Byb2Nlc3M7CmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCBiNDk1
Y2ZhMGQ0MmU5MjZlZTUxNjIxNWZlM2MwMzBiOTEzMGZlM2E3Li4yMWU4YWU5MmZhZjI2YmY3ZTk4
MTk5MTIxZTlmNDk1NTYxZmM2ZjljIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTEyNjYsNiArMTI2NiwxMyBAQCB2
b2lkIFRlc3RSdW5uZXI6OnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKCkKICAgICBXS0J1
bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNzYWdlRm9yVGVzdGluZyhJbmplY3RlZEJ1bmRsZTo6
c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBudWxscHRyLCBu
dWxscHRyKTsKIH0KIAordm9pZCBUZXN0UnVubmVyOjpzZXRGb3JjZVNlcGFyYXRlU2VydmljZVdv
cmtlclByb2Nlc3MoYm9vbCB2YWx1ZSkKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
bWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTZXRG
b3JjZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tC
b29sZWFuUmVmPiBtZXNzYWdlQm9keSA9IGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKHZhbHVlKSk7
CisgICAgV0tCdW5kbGVQYWdlUG9zdFN5bmNocm9ub3VzTWVzc2FnZUZvclRlc3RpbmcoSW5qZWN0
ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwg
bWVzc2FnZUJvZHkuZ2V0KCksIG51bGxwdHIpOworfQorCiBzdGF0aWMgdW5zaWduZWQgbmV4dFVJ
U2NyaXB0Q2FsbGJhY2tJRCgpCiB7CiAgICAgc3RhdGljIHVuc2lnbmVkIGNhbGxiYWNrSUQgPSBG
aXJzdFVJU2NyaXB0Q2FsbGJhY2tJRDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5kZXggMmRhMjhiYmRkNjI2NmI2YjdiYjkyNjQ0
OTdmYWNkZWY2NDQxMzc3OS4uNzQwYTZiNGU5MDZjNmNiN2QyMmE4MjMzMTc0NjhjODJmOTVlZjlk
ZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmgKQEAgLTQ2MCw2ICs0NjAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHRlcm1pbmF0
ZU5ldHdvcmtQcm9jZXNzKCk7CiAgICAgdm9pZCB0ZXJtaW5hdGVTZXJ2aWNlV29ya2VyUHJvY2Vz
cygpOworICAgIHZvaWQgc2V0Rm9yY2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKGJvb2wp
OwogCiAgICAgdm9pZCByZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoSlNWYWx1ZVJlZik7CiAg
ICAgdm9pZCBjYWxsRGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzQ2FsbGJhY2soKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggZDJhMTBjYTY0YjRh
YmFiZTFmZGM3ODRiNTM4NzMzZWExYjlkMGJmMy4uYTEwNDJlNTk4NGFjNmZiYWJiYTE5Y2VlNDQx
ZTZjYjRmMDg0MGQ5YiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHAKQEAgLTk2Nyw2ICs5NjcsOCBAQCBib29sIFRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9D
b25zaXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zLCBSZQogCiAgICAgV0tD
b250ZXh0Q2xlYXJDdXJyZW50TW9kaWZpZXJTdGF0ZUZvclRlc3RpbmcoVGVzdENvbnRyb2xsZXI6
OnNpbmdsZXRvbigpLmNvbnRleHQoKSk7CiAKKyAgICBXS0NvbnRleHRTZXRGb3JjZVNlcGFyYXRl
U2VydmljZVdvcmtlclByb2Nlc3MoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmNvbnRleHQo
KSwgZmFsc2UpOworCiAgICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gc2hvdWxkIGFsc28gZW5z
dXJlIHRoYXQgdGhlcmUgaXMgb25seSBvbmUgcGFnZSBvcGVuLgogCiAgICAgLy8gUmVzZXQgdGhl
IEV2ZW50U2VuZGVyIGZvciBlYWNoIHRlc3QuCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdElu
dm9jYXRpb24uY3BwCmluZGV4IGZkMjUyMDBkNDAyZjBjZmQzMjJjYmViYTE4ZjA1YjA5ZjRmY2Qx
ZmUuLmU1M2QyYmVlNWNjMzczYmY3NjhhOTAwOTQyOGFjOWQxNjA4YjM0NTQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC0xNTYyLDYgKzE1NjIsMTMgQEAg
V0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9u
b3VzTWVzc2FnZUZyb21JbmplY3RlZEIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRG
b3JjZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MiKSkgeworICAgICAgICBBU1NFUlQoV0tH
ZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLQm9vbGVhbkdldFR5cGVJRCgpKTsKKyAgICAgICAg
YXV0byBmb3JjZVNlcnZpY2VXb3JrZXJQcm9jZXNzID0gV0tCb29sZWFuR2V0VmFsdWUoc3RhdGlj
X2Nhc3Q8V0tCb29sZWFuUmVmPihtZXNzYWdlQm9keSkpOworICAgICAgICBXS0NvbnRleHRTZXRG
b3JjZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRv
bigpLmNvbnRleHQoKSwgZm9yY2VTZXJ2aWNlV29ya2VyUHJvY2Vzcyk7CisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIH0KKwogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5n
KG1lc3NhZ2VOYW1lLCAiU2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbiIpKSB7
CiAgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tEaWN0aW9uYXJ5
R2V0VHlwZUlEKCkpOwogICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0V2Vi
QXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbihzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlS
ZWY+KG1lc3NhZ2VCb2R5KSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZmE2OWFlNmE1ZWE4YTdiYzg3NmQ4YTExM2Y3NTEw
NzMwOTEzMjk5Yi4uZWMxYTgwZWQzMmMxOTI2ZWNmNGNlZTU5OTYyMjY4MDJjOTY2ZTFkOSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTA5LTI2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrIGNhbiB1c2UgdGhlIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIHNlc3Npb25JRAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMjA4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2Vydmlj
ZS9yZXNvdXJjZXMvcG9zdG1lc3NhZ2UtYWZ0ZXItc3ctcHJvY2Vzcy1jcmFzaC5qczoKKyAgICAg
ICAgKGFzeW5jLmRvVGVzdCk6CisgICAgICAgICh0aGVuKTogRGVsZXRlZC4KKwogMjAxOS0wOS0y
NSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCB2ZXJ5IGJh
c2ljIFBhZ2VDYWNoZSBzdXBwb3J0IGZvciBSVENQZWVyQ29ubmVjdGlvbgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3Bvc3RtZXNz
YWdlLWFmdGVyLXN3LXByb2Nlc3MtY3Jhc2guanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dv
cmtlcnMvc2VydmljZS9yZXNvdXJjZXMvcG9zdG1lc3NhZ2UtYWZ0ZXItc3ctcHJvY2Vzcy1jcmFz
aC5qcwppbmRleCA0ZjcyMTY0Y2FmZDhjZWMwOWJkOGE4MmU3NmJhYWRiMjNlOTA2OGRlLi5kMDg2
ZGM3MjJiNTk2Y2U0YmI4MTQ3N2Y5NmYyMDZmMjRlNDM5ZGQ3IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvcG9zdG1lc3NhZ2UtYWZ0
ZXItc3ctcHJvY2Vzcy1jcmFzaC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtl
cnMvc2VydmljZS9yZXNvdXJjZXMvcG9zdG1lc3NhZ2UtYWZ0ZXItc3ctcHJvY2Vzcy1jcmFzaC5q
cwpAQCAtMzcsMTAgKzM3LDIwIEBAIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLmFkZEV2ZW50TGlz
dGVuZXIoIm1lc3NhZ2UiLCBmdW5jdGlvbihldmVudCkgewogICAgIGZpbmlzaFNXVGVzdCgpOwog
fSk7CiAKLW5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCJyZXNvdXJjZXMvcG9zdG1l
c3NhZ2UtYWZ0ZXItc3ctcHJvY2Vzcy1jcmFzaC13b3JrZXIuanMiLCB7IH0pLnRoZW4oZnVuY3Rp
b24ocmVnaXN0cmF0aW9uKSB7Ci0gICAgd29ya2VyID0gcmVnaXN0cmF0aW9uLmluc3RhbGxpbmc7
Ci0gICAgbG9nKCIqIFNlbmRpbmcgU3RhdGUgdG8gU2VydmljZSBXb3JrZXIiKTsKLSAgICB3b3Jr
ZXIucG9zdE1lc3NhZ2UoIlNldFN0YXRlIik7Ci0gICAgbG9nKCIqIEFza2luZyBTZXJ2aWNlIFdv
cmtlciBpZiBpdCByZWNlaXZlZCB0aGUgc3RhdGUiKTsKLSAgICB3b3JrZXIucG9zdE1lc3NhZ2Uo
Ikhhc1N0YXRlIik7Ci19KTsKK2FzeW5jIGZ1bmN0aW9uIGRvVGVzdCgpCit7CisgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0Rm9yY2VTZXBhcmF0ZVNl
cnZpY2VXb3JrZXJQcm9jZXNzKHRydWUpOworICAgICAgICBhd2FpdCBmZXRjaCgiIikudGhlbigo
KSA9PiB7IH0sICgpID0+IHsgfSk7CisgICAgfQorCisgICAgbmF2aWdhdG9yLnNlcnZpY2VXb3Jr
ZXIucmVnaXN0ZXIoInJlc291cmNlcy9wb3N0bWVzc2FnZS1hZnRlci1zdy1wcm9jZXNzLWNyYXNo
LXdvcmtlci5qcyIsIHsgfSkudGhlbihmdW5jdGlvbihyZWdpc3RyYXRpb24pIHsKKyAgICAgICAg
d29ya2VyID0gcmVnaXN0cmF0aW9uLmluc3RhbGxpbmc7CisgICAgICAgIGxvZygiKiBTZW5kaW5n
IFN0YXRlIHRvIFNlcnZpY2UgV29ya2VyIik7CisgICAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSgi
U2V0U3RhdGUiKTsKKyAgICAgICAgbG9nKCIqIEFza2luZyBTZXJ2aWNlIFdvcmtlciBpZiBpdCBy
ZWNlaXZlZCB0aGUgc3RhdGUiKTsKKyAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKCJIYXNTdGF0
ZSIpOworICAgIH0pOworfQorCitkb1Rlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9vbmxpbmUtd29ya2VyLmpzIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvc2VydmljZS13b3JrZXJzL29ubGluZS13b3JrZXIuanMKaW5kZXggM2NlMGNhODMzMTRk
NzVkMjVhMzUyMTljOTgzNGEyOTJjYWQ2ZWVlMC4uMDUzNjNmNGQyYzc2MTFjM2JlOWE2YjM2Mjlh
MjY5MDE1NjZmM2NmYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13
b3JrZXJzL29ubGluZS13b3JrZXIuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2Vydmlj
ZS13b3JrZXJzL29ubGluZS13b3JrZXIuanMKQEAgLTI3LDcgKzI3LDcgQEAgYXN5bmMgZnVuY3Rp
b24gZG9UZXN0KGV2ZW50KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAg
ICAgaWYgKHNlbGYuaW50ZXJuYWxzLnByb2Nlc3NOYW1lICE9PSAibm9uZSIgJiYgc2VsZi5pbnRl
cm5hbHMucHJvY2Vzc05hbWUgIT09ICJXZWJLaXRUZXN0UnVubmVyIFNlcnZpY2UgV29ya2VyIChs
b2NhbGhvc3QpIikgeworICAgICAgICBpZiAoc2VsZi5pbnRlcm5hbHMucHJvY2Vzc05hbWUgIT09
ICJub25lIiAmJiBzZWxmLmludGVybmFscy5wcm9jZXNzTmFtZSAhPT0gIldlYktpdFRlc3RSdW5u
ZXIgU2VydmljZSBXb3JrZXIgKGxvY2FsaG9zdCkiICYmICFzZWxmLmludGVybmFscy5wcm9jZXNz
TmFtZS5zdGFydHNXaXRoKCJjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQiKSkgewogICAgICAg
ICAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCJGQUlMOiB3cm9uZyBzZXJ2aWNlIHdvcmtl
ciBwcm9jZXNzIG5hbWU6ICIgKyBzZWxmLmludGVybmFscy5wcm9jZXNzTmFtZSArICInIik7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380209</attachid>
            <date>2019-10-04 04:16:11 -0700</date>
            <delta_ts>2019-10-04 05:39:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202195-20191004131609.patch</filename>
            <type>text/plain</type>
            <size>67563</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNzA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTc1M2JmMzkzOTE5YjQ4
Yjc4ZDc5OWNkMjJmMDE3MmVhNDQzMzViZC4uOGZlZDNhMjA2YWRkYjY0ZTM2YjIyYmNkNGI0NTAx
MGRhZTc3MWRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE5LTEwLTA0ICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXVzZSBleGlzdGluZyB3
ZWIgcHJvY2Vzc2VzIGZvciBydW5uaW5nIHNlcnZpY2Ugd29ya2VycworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMTk1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvd3B0L3NlcnZpY2Ut
d29ya2Vycy9zZXJ2aWNlLXdvcmtlci1kaWZmZXJlbnQtcHJvY2Vzcy5odHRwcy5odG1sCisgICAg
ICAgICAgICAgICBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc2FtZS1w
cm9jZXNzLmh0dHBzLmh0bWwKKworICAgICAgICBVcGRhdGUgaW1wbGVtZW50YXRpb24gdG8gYmUg
YWJsZSB0byBydW4gc2VydmljZSB3b3JrZXJzIGpvaW50bHkgd2l0aCBwYWdlLgorICAgICAgICBB
ZGQgaW50ZXJuYWxzIEFQSSB0byBnZXQgdGhlIHByb2Nlc3MgSUQuCisgICAgICAgIFRoaXMgYWxs
b3dzIHdyaXRpbmcgdGVzdHMgdG8gY2hlY2sgd2hldGhlciBhIHNlcnZpY2Ugd29ya2VyIGlzIGlu
IHRoZSBzYW1lIHByb2Nlc3MgYXMgaXRzIGNsaWVudCBvciBub3QuCisKKyAgICAgICAgKiB0ZXN0
aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnByb2Nlc3NJ
ZCBjb25zdCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0
aW5nL0ludGVybmFscy5pZGw6CisgICAgICAgICogdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJu
YWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJbnRlcm5hbHM6OnByb2Nl
c3NJZCBjb25zdCk6CisgICAgICAgICogdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmg6
CisgICAgICAgICogdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlkbDoKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50
cyk6CisgICAgICAgIERvIG5vdCByZWdpc3RlciBkdW1teSBkb2N1bWVudHMgd2hvc2Ugc29sZSBw
dXJwb3NlIGlzIHRvIGRvIGxvYWRpbmcgZm9yIHNlcnZpY2Ugd29ya2Vycy4KKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6OnNldENvbm5lY3Rpb24pOgorICAgICAgICBOb3cgdGhh
dCBjb25uZWN0aW9ucyBtaWdodCBiZSBjcmVhdGVkIG1vcmUgdGhhbiBvbmNlIG9uIGEgZ2l2ZW4g
cHJvY2VzcywKKyAgICAgICAgTWFrZSBzdXJlIHRoYXQgdGhlIHJlcGxhY2VkIGNvbm5lY3Rpb24g
aXMgc3RvcHBlZCBvciB0aGVyZSBpcyBubyByZXBsYWNlZCBjb25uZWN0aW9uLgorICAgICAgICAo
V2ViQ29yZTo6U1dDb250ZXh0TWFuYWdlcjo6c3RvcEFsbFNlcnZpY2VXb3JrZXJzKToKKyAgICAg
ICAgQWRkIHJvdXRpbmUgdG8gc3RvcCBhbGwgc2VydmljZSB3b3JrZXJzIHJ1bm5pbmcgaW4gYSBn
aXZlbiB3ZWIgcHJvY2Vzcy4KKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0Nv
bnRleHRNYW5hZ2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2VyOjpDb25u
ZWN0aW9uOjppc1N0b3BwZWQgY29uc3QpOgorCiAyMDE5LTEwLTAzICBBbnR0aSBLb2l2aXN0byAg
PGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ1NTIFNoYWRvdyBQYXJ0c10gQ29ycmVjdCBp
bnRlcmFjdGlvbiB3aXRoIG90aGVyIHBzZXVkbyBlbGVtZW50cwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhNTE3MGVh
MzE1ODdmZTlhOWUxMjM1YWJkZDEzNTFlMWQyZTJjOGU3Li42ZmU3NTg1YjJjNjlkYWM3MmYwMWNi
NDNmYTBhMmE5NDk4YmM4M2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDE5LTEwLTA0
ICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXVzZSBleGlz
dGluZyB3ZWIgcHJvY2Vzc2VzIGZvciBydW5uaW5nIHNlcnZpY2Ugd29ya2VycworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMTk1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBuZXR3b3JrIHByb2Nl
c3MgYXNrcyBmb3IgYSBzZXJ2aWNlIHdvcmtlciBjb250ZXh0IGNvbm5lY3Rpb24sCisgICAgICAg
IHdlIG5vdyBpdGVyYXRlIHRocm91Z2ggZXhpc3Rpbmcgd2ViIHByb2Nlc3NlcyBhbmQgcmV1c2Ug
b25lIGlmIGJvdGggc2Vzc2lvbgorICAgICAgICBhbmQgcmVnaXN0cmFibGUgZG9tYWluIG1hdGNo
LgorICAgICAgICBXZSB0aGVuIGFzayB0aGUgd2ViIHByb2Nlc3MgdG8gY3JlYXRlIGEgY29udGV4
dCBjb25uZWN0aW9uIHRvIHRoZSBuZXR3b3JrIHByb2Nlc3MuCisKKyAgICAgICAgV2hlbiBuZXR3
b3JrIHByb2Nlc3Mgbm8gbG9uZ2VyIG5lZWRzIHRoZSBjb25uZWN0aW9uLCBpdCBpbnN0cnVjdHMg
dGhlIFVJUHJvY2VzcworICAgICAgICB0aGF0IHdpbGwgdXBkYXRlIGl0cyBzdGF0ZSBzbyB0aGF0
IHRoZSB3ZWIgcHJvY2VzcyBpcyBubyBsb25nZXIgY29uc2lkZXJlZCBhcyBydW5uaW5nCisgICAg
ICAgIHNlcnZpY2Ugd29ya2Vycy4KKyAgICAgICAgVUlQcm9jZXNzIHRoZW4gaW5zdHJ1Y3RzIHRo
ZSB3ZWIgcHJvY2VzcyB0byBzdG9wIGl0cyBzZXJ2aWNlIHdvcmtlcnMgYW5kIGl0cyBjb25uZWN0
aW9uLgorCisgICAgICAgIExhdGVyIG9uLCB0aGUgc2FtZSB3ZWIgcHJvY2VzcyBtYXkgYmUgcmV1
c2VkIGZvciBydW5uaW5nIHNlcnZpY2Ugd29ya2VycyBpbiB3aGljaCBjYXNlCisgICAgICAgIGEg
bmV3IGNvbm5lY3Rpb24gd2lsbCByZXBsYWNlIHRoZSBzdG9wcGVkIGNvbm5lY3Rpb24uCisKKyAg
ICAgICAgU2ltaWxhcmx5LCBvbiBuZXR3b3JrIHByb2Nlc3MgY3Jhc2gsIGFsbCB3ZWIgcHJvY2Vz
cyBydW5uaW5nIHNlcnZpY2Ugd29ya2VycyBhcmUgdXBkYXRlZAorICAgICAgICBzbyB0aGF0IHRo
ZXkgYXJlIG5vIGxvbmdlciBjb25zaWRlcmVkIGFzIHJ1bm5pbmcgc2VydmljZSB3b3JrZXJzLgor
CisgICAgICAgIEFkZCBhIGJvb2xlYW4gc3RhdGUgdG8gV2ViUHJvY2Vzc1Bvb2wgdG8gY29udHJv
bCB3aGV0aGVyIGNyZWF0aW5nIGEgc2VwYXJhdGUgc2VydmljZSB3b3JrZXIgcHJvY2Vzcy4KKwor
ICAgICAgICBXZSBubyBsb25nZXIgdGVybWluYXRlIHRoZSB3ZWIgcHJvY2VzcyB3aGVuIHN0b3Bw
aW5nIHNlcnZpY2Ugd29ya2VycyBvciB3aGVuIG5ldHdvcmsgcHJvY2VzcyBjcmFzaC4KKyAgICAg
ICAgV2UgdXNlIHRoZSBlbmFibGVUZXJtaW5hdGlvbi9kaXNhYmxlVGVybWluYXRpb24gYXQgY29u
dGV4dCBjb25uZWN0aW9uIHN0YXJ0L3N0b3AgdGltZS4KKyAgICAgICAgV2UgY29uc2lkZXIgdGhh
dCB0aGUgY29udGV4dCBjb25uZWN0aW9uIGlzIHNpbWlsYXIgdG8gcnVubmluZyBhIHBhZ2UgaW4g
dGhlIHByb2Nlc3MuCisKKyAgICAgICAgTmV0d29ya1Byb2Nlc3MgaXMgaGFuZGxpbmcgdGhlIG1h
bmFnZW1lbnQgb2Ygc2VydmljZSB3b3JrZXIgcHJvY2Vzc2VzIGJ5IGNoZWNraW5nIGZvciBjbGll
bnRzLgorICAgICAgICBJbiBjYXNlIHRoZXJlIGlzIG5vIGNsaWVudCwgdGhlIHByb2Nlc3MgaXMg
dGVybWluYXRlZC4KKyAgICAgICAgVGhpcyByZW1vdmVzIHRoZSBuZWVkIGZvciB0aGUgV2ViUHJv
Y2Vzc1Bvb2wgc2VydmljZSB3b3JrZXIgcHJvY2VzcyB0aW1lci4KKyAgICAgICAgVGhpcyBwYXRj
aCByZW1vdmVzIHRoaXMgdGltZXIuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNs
b3NlU1dDb250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6fldl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24gY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1lc3NhZ2VT
ZW5kZXJEZXN0aW5hdGlvbklEIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2V0VGhyb3R0bGVTdGF0
ZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0
LmNwcDoKKyAgICAgICAgKFdLQ29udGV4dFNldEZvcmNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJv
Y2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW06CisgICAgICAgICgt
W1dLUHJvY2Vzc1Bvb2wgX3NldEZvcmNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2VzczpdKToK
KyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfd2ViUGFnZUNvbnRlbnRQcm9jZXNzQ291bnRdKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OndvcmtlckNvbnRleHRDb25uZWN0aW9u
Tm9Mb25nZXJOZWVkZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4
dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnJlbW92ZUZyb21TZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6dGVybWluYXRlTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6Y2xlYXJXZWJQcm9jZXNzSXNQbGF5aW5nQXVkaWJsZU1lZGlhKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldEZvcmNlU2VwYXJhdGVTZXJ2aWNlV29ya2Vy
UHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQcm94eTo6Y3JlYXRlRm9yU2VydmljZVdvcmtlcnMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUHJveHk6Om1heWJlU2h1dERvd24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1lKToKKyAgICAgICAg
SWYgdGhlIFVSTCBpcyB1c2luZyB0aGUgYWJvdXQgcHJvdG9jb2wsIHdlIGRvIG5vdCBzZXQgdGhl
IHJlZ2lzdHJhYmxlIGRvbWFpbi4KKyAgICAgICAgVGhpcyBhbGxvd3MgcHJvY2Vzc2VzIGRvaW5n
IGFib3V0OmJsYW5rIG5hdmlnYXRpb24gYmVmb3JlIGdvaW5nIHRvIHRoZSByZWFsIHBhZ2UgdG8g
aGF2ZSBhIGdvb2QgcmVnaXN0cmFibGUgZG9tYWluLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUHJveHk6OmRpc2FibGVTZXJ2aWNlV29ya2Vycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQcm94eTo6ZW5hYmxlU2VydmljZVdvcmtlcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojppc01h
dGNoaW5nUmVnaXN0cmFibGVEb21haW4gY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6
Om1fdXNlckFnZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OnRlcm1pbmF0ZVdvcmtlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uOjpzeW5jVGVybWluYXRlV29ya2VyKToKKyAgICAgICAgKFdlYktpdDo6
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnN0b3ApOgorICAgICAgICAqIFdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjpuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRzKToKKwogMjAx
OS0xMC0wMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0dUS10gV2ViQXV0b21hdGlvbjogbWFrZSBzZXRXaW5kb3dSZWN0IHN5bmNocm9ub3Vz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggNTg0MjA2ZjUxNjljYzlkNDEy
MTYwZjBjMTNiMzJmZjllMjY4NzRhZC4uNGMyZjcwMGU2YjZkYTYyM2M4YmUwMzNkMTI1MDQ2Njk1
ZDUwMmY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTkyLDYgKzE5
Miw3IEBACiAjaW5jbHVkZSA8d3RmL0xhbmd1YWdlLmg+CiAjaW5jbHVkZSA8d3RmL01lbW9yeVBy
ZXNzdXJlSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CisjaW5jbHVk
ZSA8d3RmL1Byb2Nlc3NJRC5oPgogI2luY2x1ZGUgPHd0Zi9VUkxIZWxwZXJzLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0Nv
bmNhdGVuYXRlTnVtYmVycy5oPgpAQCAtNTIzMyw0ICs1MjM0LDkgQEAgdm9pZCBJbnRlcm5hbHM6
OmFkZFByZWZldGNoTG9hZEV2ZW50TGlzdGVuZXIoSFRNTExpbmtFbGVtZW50JiBsaW5rLCBSZWZQ
dHI8RXZlbnQKICAgICB9CiB9CiAKK2ludCBJbnRlcm5hbHM6OnByb2Nlc3NJZCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGdldEN1cnJlbnRQcm9jZXNzSUQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggNTg3MGRlNDYzMjIwZmU5
ODI4ZWY0YmIxNzZiNmUwZjk3MjMxMGU4MC4uOTQwMmZjYzFkN2M4MTUyODRjMDhmMGU2MTI3ODNi
OWE5OTEwNzZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC04ODIsNiArODgy
LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRQcmVmZXRjaExvYWRFdmVudExpc3RlbmVyKEhU
TUxMaW5rRWxlbWVudCYsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmKTsKIAorICAgIGludCBwcm9j
ZXNzSWQoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBJbnRlcm5hbHMoRG9jdW1l
bnQmKTsKICAgICBEb2N1bWVudCogY29udGV4dERvY3VtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggNDY4ZWYyMzFkNzRlMTk4NjVjMDQ5NDNiMjdjMjY0
YzYxNmVhZmI5YS4uNjgxOTBjOTVjOTE4N2FmY2VkNDQ4MjQ5MTA1NmQzZTVjNjQ5NTViYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtNzIzLDYgKzcyMyw3IEBAIGVudW0g
Q29tcG9zaXRpbmdQb2xpY3kgewogCiAgICAgYm9vbGVhbiBpc0FueVdvcmtsZXRHbG9iYWxTY29w
ZUFsaXZlKCk7CiAKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBwcm9jZXNzSWQ7CiAgICAg
RE9NU3RyaW5nIHNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyKERvY3VtZW50IGRvY3VtZW50
KTsKICAgICBQcm9taXNlPHZvaWQ+IHN0b3JlUmVnaXN0cmF0aW9uc09uRGlzaygpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcAppbmRl
eCA1NTQ0NTYxNWUwZTFlODFlY2ExNGI4MTZjM2U4ZTQ5MWI3MzdiM2Y0Li4wZmY4MTZiN2I4YjA3
YWQ4NzdkNTgzMTM4NjBiYzM0ZmVkZDg2YWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNs
dWRlICJGZXRjaEV2ZW50LmgiCiAjaW5jbHVkZSAiSlNGZXRjaFJlc3BvbnNlLmgiCiAjaW5jbHVk
ZSAiU1dDb250ZXh0TWFuYWdlci5oIgorI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMDIsNiArMTAzLDExIEBAIGJvb2wgU2VydmljZVdvcmtl
ckludGVybmFsczo6aXNUaHJvdHRsZWFibGUoKSBjb25zdAogICAgIHJldHVybiBjb25uZWN0aW9u
ID8gY29ubmVjdGlvbi0+aXNUaHJvdHRsZWFibGUoKSA6IHRydWU7CiB9CiAKK2ludCBTZXJ2aWNl
V29ya2VySW50ZXJuYWxzOjpwcm9jZXNzSWQoKSBjb25zdAoreworICAgIHJldHVybiBnZXRDdXJy
ZW50UHJvY2Vzc0lEKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMu
aCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5oCmluZGV4
IDg5Mzk1NzQ0Yjk4N2QyMzY0MzRiZjUxMmNjNzEzMzg3MjdiYmNmNjEuLjg5OTlmNDFlYmZlY2Uz
YWU5ZWJmZmM4NWQwNDhhNzJjYzNhZDMwMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvU2VydmljZVdvcmtlckludGVybmFscy5oCkBAIC01Myw2ICs1Myw4IEBAIHB1YmxpYzoKIAog
ICAgIGJvb2wgaXNUaHJvdHRsZWFibGUoKSBjb25zdDsKIAorICAgIGludCBwcm9jZXNzSWQoKSBj
b25zdDsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBTZXJ2aWNlV29ya2VySW50ZXJuYWxzKFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
U2VydmljZVdvcmtlckludGVybmFscy5pZGwKaW5kZXggNTM1ZGQ4MDVmODhjMzYxZjJiMGY0ZDY2
ZWMwYzYwM2U4OTZiZjNjZi4uNjRkYjBjNGZkOGU0NzY2N2VmMTk3MjhjN2VjMTc2ZjYxZjIzN2M1
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJu
YWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5h
bHMuaWRsCkBAIC0zOCw0ICszOCw2IEBACiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIHByb2Nlc3NOYW1lOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGlzVGhyb3R0
bGVhYmxlOworCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgcHJvY2Vzc0lkOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUHJv
dmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJQ
cm92aWRlci5jcHAKaW5kZXggZWVkMjY2ZDU2Yjk3ZTkxYmQ3Yzk0ODBjYjVjMjMzMzVkOGYyZTNj
Yi4uNTliMzMyNTUzNjYxMTFkMjBlZGQ0MDM5YmQ1NDc3Y2RmZGVkNWVkZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJQcm92aWRl
ci5jcHAKQEAgLTI5LDYgKzI5LDkgQEAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKICNp
bmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVM
b2FkZXIuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIlNXQ2xp
ZW50Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCiAKQEAgLTY0LDYg
KzY3LDggQEAgdm9pZCBTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnJlZ2lzdGVyU2VydmljZVdvcmtl
ckNsaWVudHMoKQogewogICAgIHNldE1heUhhdmVSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMoKTsK
ICAgICBmb3IgKGF1dG8qIGRvY3VtZW50IDogRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpKSB7Cisg
ICAgICAgIGlmICghZG9jdW1lbnQtPnBhZ2UoKSB8fCBkb2N1bWVudC0+cGFnZSgpLT5tYWluRnJh
bWUoKS5sb2FkZXIoKS5jbGllbnQoKS5pc1NlcnZpY2VXb3JrZXJGcmFtZUxvYWRlckNsaWVudCgp
KQorICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChTY2hlbWVSZWdpc3RyeTo6Y2Fu
U2VydmljZVdvcmtlcnNIYW5kbGVVUkxTY2hlbWUoZG9jdW1lbnQtPnVybCgpLnByb3RvY29sKCku
dG9TdHJpbmdXaXRob3V0Q29weWluZygpKSkKICAgICAgICAgICAgIGRvY3VtZW50LT5zZXRTZXJ2
aWNlV29ya2VyQ29ubmVjdGlvbigmc2VydmljZVdvcmtlckNvbm5lY3Rpb24oKSk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250
ZXh0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
V0NvbnRleHRNYW5hZ2VyLmNwcAppbmRleCA3NzRmMzg1ZjE4YWJiYTgxMjg4Yjc5MTRhYzljOTFl
YjI1MTQ0ZjM1Li5hZWQxM2Q3MzBlNjkyYzkwNzEzYzVmOWQwNDlkMjAyNDk4NzJkMmQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRN
YW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
V0NvbnRleHRNYW5hZ2VyLmNwcApAQCAtNDIsNyArNDIsNyBAQCBTV0NvbnRleHRNYW5hZ2VyJiBT
V0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKQogCiB2b2lkIFNXQ29udGV4dE1hbmFnZXI6OnNl
dENvbm5lY3Rpb24oc3RkOjp1bmlxdWVfcHRyPENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKIHsK
LSAgICBBU1NFUlQoIW1fY29ubmVjdGlvbik7CisgICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb24gfHwg
bV9jb25uZWN0aW9uLT5pc1N0b3BwZWQoKSk7CiAgICAgbV9jb25uZWN0aW9uID0gV1RGTW92ZShj
b25uZWN0aW9uKTsKIH0KIApAQCAtMTc3LDYgKzE3NywxNiBAQCBTV0NvbnRleHRNYW5hZ2VyOjpT
ZXJ2aWNlV29ya2VyVGVybWluYXRpb25SZXF1ZXN0OjpTZXJ2aWNlV29ya2VyVGVybWluYXRpb25S
ZXF1ZQogICAgIG1fdGltZW91dFRpbWVyLnN0YXJ0T25lU2hvdCh0aW1lb3V0KTsKIH0KIAordm9p
ZCBTV0NvbnRleHRNYW5hZ2VyOjpzdG9wQWxsU2VydmljZVdvcmtlcnMoKQoreworICAgIGF1dG8g
c2VydmljZVdvcmtlcnMgPSBXVEZNb3ZlKG1fd29ya2VyTWFwKTsKKyAgICBmb3IgKGF1dG8mIHNl
cnZpY2VXb3JrZXIgOiBzZXJ2aWNlV29ya2Vycy52YWx1ZXMoKSkgeworICAgICAgICBzZXJ2aWNl
V29ya2VyLT5zZXRBc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkKCk7CisgICAgICAgIG1fcGVuZGlu
Z1NlcnZpY2VXb3JrZXJUZXJtaW5hdGlvblJlcXVlc3RzLmFkZChzZXJ2aWNlV29ya2VyLT5pZGVu
dGlmaWVyKCksIG1ha2VVbmlxdWU8U2VydmljZVdvcmtlclRlcm1pbmF0aW9uUmVxdWVzdD4oKnRo
aXMsIHNlcnZpY2VXb3JrZXItPmlkZW50aWZpZXIoKSwgd29ya2VyVGVybWluYXRpb25UaW1lb3V0
KSk7CisgICAgICAgIHNlcnZpY2VXb3JrZXItPnRocmVhZCgpLnN0b3AoW10geyB9KTsKKyAgICB9
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgK
aW5kZXggNjI4YzNmMzg5MmJlZWUyNDJjMmVmN2ZmOWVlMjIxNjBmZGRjMjEzNS4uNWQ3ODNjYzRh
ZDU1ODliOTdlMjgyMDA2NWZiZDZmZmVjYzFmMjczOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaApAQCAt
NjUsNiArNjUsMTEgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgY2xhaW0oU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgPSAwOwogCiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBpc1Rocm90dGxlYWJsZSgpIGNvbnN0ID0gMDsKKworICAgICAg
ICBib29sIGlzU3RvcHBlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdG9wcGVkOyB9CisKKyAgICBw
cm90ZWN0ZWQ6CisgICAgICAgIGJvb2wgbV9pc1N0b3BwZWQgeyBmYWxzZSB9OwogICAgIH07CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbm5lY3Rpb24oc3RkOjp1bmlxdWVfcHRyPENv
bm5lY3Rpb24+JiYpOwpAQCAtODcsNiArOTIsMTEgQEAgcHVibGljOgogCiAgICAgU2VydmljZVdv
cmtlclRocmVhZFByb3h5KiB3b3JrZXJCeUlEKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIpIHsgcmV0dXJuIG1fd29ya2VyTWFwLmdldChpZGVudGlmaWVyKTsgfQogCisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzdG9wQWxsU2VydmljZVdvcmtlcnMoKTsKKworICAgIHN0YXRpYyBj
b25zdGV4cHIgU2Vjb25kcyB3b3JrZXJUZXJtaW5hdGlvblRpbWVvdXQgeyAxMF9zIH07CisgICAg
c3RhdGljIGNvbnN0ZXhwciBTZWNvbmRzIHdvcmtlclRlcm1pbmF0aW9uVGltZW91dEZvclRlc3Qg
eyAxMDBfbXMgfTsgLy8gT25seSB1c2VkIGJ5IGxheW91dCB0ZXN0cy4KKwogcHJpdmF0ZToKICAg
ICBTV0NvbnRleHRNYW5hZ2VyKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCmluZGV4IDEyOGM4OWM0ZGNjNDU0MDEyYmIwZWZjMzMyZGM4NWQwZTNhMzQ4YzIuLmQ1YjJh
NTM5M2M5NDYxMDgyYzU5NDZiMTFjZWVhNmEwYTE5ZjUwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCkBAIC0yMTgsMTkgKzIxOCwxNSBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpbwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5h
bWUoKSA9PSBNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAgICAgQVNTRVJUKG1fc3dDb250ZXh0Q29ubmVjdGlvbik7
Ci0gICAgICAgIGlmIChtX3N3Q29udGV4dENvbm5lY3Rpb24pIHsKKyAgICAgICAgaWYgKG1fc3dD
b250ZXh0Q29ubmVjdGlvbikKICAgICAgICAgICAgIG1fc3dDb250ZXh0Q29ubmVjdGlvbi0+ZGlk
UmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChkZWNvZGVyLm1l
c3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIEFTU0VSVChtX3N3Q29udGV4dENvbm5l
Y3Rpb24pOwotICAgICAgICBpZiAobV9zd0NvbnRleHRDb25uZWN0aW9uKSB7CisgICAgICAgIGlm
IChtX3N3Q29udGV4dENvbm5lY3Rpb24pCiAgICAgICAgICAgICBtX3N3Q29udGV4dENvbm5lY3Rp
b24tPmRpZFJlY2VpdmVGZXRjaFRhc2tNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5k
aWYKIApAQCAtODg2LDcgKzg4MiwyMCBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjplc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oKQogdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihSZWdpc3RyYWJsZURv
bWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluKQogewogICAgIGlmIChhdXRvKiBzZXJ2ZXIgPSBtX25l
dHdvcmtQcm9jZXNzLT5zd1NlcnZlckZvclNlc3Npb25JZkV4aXN0cyhtX3Nlc3Npb25JRCkpCi0g
ICAgICAgIG1fc3dDb250ZXh0Q29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8V2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uPihtX25ldHdvcmtQcm9jZXNzLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9t
YWluKSwgKnNlcnZlciwgbV9jb25uZWN0aW9uLmdldCgpKTsKKyAgICAgICAgbV9zd0NvbnRleHRD
b25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24+KCp0
aGlzLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgKnNlcnZlcik7Cit9CisKK3ZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNsb3NlU1dDb250ZXh0Q29ubmVjdGlvbigpCit7
CisgICAgbV9zd0NvbnRleHRDb25uZWN0aW9uID0gbnVsbHB0cjsKK30KKwordm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2Vy
TmVlZGVkKCkKK3sKKyAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiV2ViUHJvY2VzcyAl
bGx1IG5vIGxvbmdlciB1c2VmdWwgZm9yIHJ1bm5pbmcgc2VydmljZSB3b3JrZXJzIiwgd2ViUHJv
Y2Vzc0lkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkIHsgd2ViUHJvY2Vzc0lkZW50
aWZpZXIoKSB9LCAwKTsKKworICAgIG1fc3dDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7CiB9
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDZmN2Y3ZmE3MWNkNzM4MDRj
Yzg5ZDlmZTJhMzMxY2ExNjc2ZTA5N2EuLjExNmJhODc4NTk3OTgxMDQ0ZWViNzQyOWIyMGQzNWZm
YjJjOGUyNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTE1NSw2ICsxNTUsMTAgQEAg
cHVibGljOgogCiAgICAgdm9pZCBjaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShjb25z
dCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eSk+JiYpOwog
CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIHZvaWQgc2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbk5vTG9uZ2VyTmVlZGVkKCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhOZXR3b3JrUHJvY2VzcyYsIFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKTsK
IApAQCAtMjE0LDYgKzIxOCw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQogICAgIHZvaWQgZXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKCk7CiAgICAgdm9pZCBlc3Rh
Ymxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYpOwor
ICAgIHZvaWQgY2xvc2VTV0NvbnRleHRDb25uZWN0aW9uKCk7CiAgICAgdm9pZCB1bnJlZ2lzdGVy
U1dDb25uZWN0aW9uKCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KaW5kZXggMmFkMzEzYWI4MjRkNTFkYWNiNjgyOWUzZDliMTVlMGI3NzVjYTNk
OS4uM2JjZDBlYjEyYTI2MjAxN2YyYTAyNGI0ZTM1YjFjNjViNzE0MDlhZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC04MSw2ICs4MSw3IEBAIG1lc3Nh
Z2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgRXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9u
KCkKICAgICBFc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluIGRvbWFpbikKKyAgICBDbG9zZVNXQ29udGV4dENvbm5lY3Rpb24oKQogI2VuZGlmCiAK
ICAgICBDcmVhdGVOZXdNZXNzYWdlUG9ydENoYW5uZWwoc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQ
b3J0SWRlbnRpZmllciBwb3J0MSwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmll
ciBwb3J0MikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5jcHAKaW5kZXggNTgwOTRkNjI4Y2IwODMwNWI5NzVhODExOTJkY2NiM2NiYzk0NGUxYS4u
ZmUzZTZjNzYzZDk1N2YyMGQyZjBlZWRhMzEzNzY2YjMwMGEyYmRlMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTMwLDcgKzMw
LDcgQEAKIAogI2luY2x1ZGUgIkZvcm1EYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgotI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCisjaW5jbHVkZSAiTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgi
CiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoVGFza01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCkBAIC00MSwxMCArNDEsOSBAQAogbmFtZXNwYWNlIFdl
YktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oTmV0d29ya1Byb2Nlc3Mm
IG5ldHdvcmtQcm9jZXNzLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBT
V1NlcnZlciYgc2VydmVyLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCitXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgUmVnaXN0cmFibGVE
b21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgU1dTZXJ2ZXImIHNlcnZlcikKICAgICA6IFNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbihXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSkKLSAgICAs
IG1faXBjQ29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQotICAgICwgbV9uZXR3b3JrUHJv
Y2VzcyhuZXR3b3JrUHJvY2VzcykKKyAgICAsIG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQogICAg
ICwgbV9zZXJ2ZXIobWFrZVdlYWtQdHIoc2VydmVyKSkKIHsKICAgICBzZXJ2ZXIuYWRkQ29udGV4
dENvbm5lY3Rpb24oKnRoaXMpOwpAQCAtNTIsMTQgKzUxLDE3IEBAIFdlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKE5ldHdvcmtQcm9j
ZXNzJiBuCiAKIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6fldlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbigpCiB7Ci0gICAgY29ubmVjdGlvbkNsb3NlZCgpOworICAgIGF1dG8g
ZmV0Y2hlcyA9IFdURk1vdmUobV9vbmdvaW5nRmV0Y2hlcyk7CisgICAgZm9yIChhdXRvJiBmZXRj
aCA6IGZldGNoZXMudmFsdWVzKCkpCisgICAgICAgIGZldGNoLT5mYWlsKFJlc291cmNlRXJyb3Ig
eyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB7IH0sICJTZXJ2aWNlIFdvcmtlciBjb250
ZXh0IGNsb3NlZCJfcyB9KTsKKwogICAgIGlmIChtX3NlcnZlciAmJiBtX3NlcnZlci0+Y29udGV4
dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbigpKSA9PSB0
aGlzKQogICAgICAgICBtX3NlcnZlci0+cmVtb3ZlQ29udGV4dENvbm5lY3Rpb24oKnRoaXMpOwog
fQogCiBJUEM6OkNvbm5lY3Rpb24qIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVz
c2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAogewotICAgIHJldHVybiBtX2lwY0Nvbm5lY3Rp
b24ucHRyKCk7CisgICAgcmV0dXJuICZtX2Nvbm5lY3Rpb24uY29ubmVjdGlvbigpOwogfQogCiB1
aW50NjRfdCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJEZXN0
aW5hdGlvbklEKCkgY29uc3QKQEAgLTY3LDEzICs2OSw2IEBAIHVpbnQ2NF90IFdlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAog
ICAgIHJldHVybiAwOwogfQogCi12b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
Y29ubmVjdGlvbkNsb3NlZCgpCi17Ci0gICAgYXV0byBmZXRjaGVzID0gV1RGTW92ZShtX29uZ29p
bmdGZXRjaGVzKTsKLSAgICBmb3IgKGF1dG8mIGZldGNoIDogZmV0Y2hlcy52YWx1ZXMoKSkKLSAg
ICAgICAgZmV0Y2gtPmZhaWwoUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJu
YWwsIDAsIHsgfSwgIlNlcnZpY2UgV29ya2VyIGNvbnRleHQgY2xvc2VkIl9zIH0pOwotfQotCiB2
b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VX
b3JrZXJDbGllbnQoY29uc3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIGRlc3RpbmF0
aW9uSWRlbnRpZmllciwgY29uc3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmIG1lc3NhZ2UsIFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlT3JpZ2luKQogewogICAgIGlmICghbV9zZXJ2ZXIpCkBAIC0xMzUsOSArMTMwLDcgQEAgdm9p
ZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmRpZEZpbmlzaFNraXBXYWl0aW5nKHVp
bnQ2NF90IGNhbGxiYWNrSUQpCiAKIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Ojpjb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpCiB7Ci0gICAgUkVMRUFTRV9MT0coU2Vydmlj
ZVdvcmtlciwgIlNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgaXMgbm8gbG9uZ2VyIG5lZWRlZCwgdGVy
bWluYXRpbmcgaXQiKTsKLSAgICB0ZXJtaW5hdGUoKTsKLSAgICBjb25uZWN0aW9uQ2xvc2VkKCk7
CisgICAgbV9jb25uZWN0aW9uLnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRl
ZCgpOwogfQogCiB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2V0VGhyb3R0
bGVTdGF0ZShib29sIGlzVGhyb3R0bGVhYmxlKQpAQCAtMTQ2LDExICsxMzksNiBAQCB2b2lkIFdl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2V0VGhyb3R0bGVTdGF0ZShib29sIGlzVGhy
b3R0bGVhYmxlKQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uOjpTZXRUaHJvdHRsZVN0YXRlIHsgaXNUaHJvdHRsZWFibGUgfSk7CiB9CiAKLXZvaWQgV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp0ZXJtaW5hdGUoKQotewotICAgIHNlbmQoTWVz
c2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpUZXJtaW5hdGVQcm9jZXNzKCkp
OwotfQotCiB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c3RhcnRGZXRjaChQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29udGVudENv
bm5lY3Rpb24sIFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIsIEZldGNoSWRlbnRpZmllciBjb250ZW50RmV0Y2hJZGVudGlmaWVy
LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNv
bnN0IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIp
CiB7CiAgICAgYXV0byBmZXRjaElkZW50aWZpZXIgPSBGZXRjaElkZW50aWZpZXI6OmdlbmVyYXRl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgK
aW5kZXggYTNjNjRlZDEyNzhkZjY3YTk5ZTAwNTk3YTQ0MjBlYTIxNzY0OTJhZC4uYmFkMGM2MDQx
ODNhOWY1MjRhMWFkOGE3MGE2MGY0NzdiYjJmMTU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtNDksMjAgKzQ5LDE2IEBAIGNsYXNz
IFNlc3Npb25JRDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIE5ldHdvcmtQcm9jZXNz
OworY2xhc3MgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiAKIGNsYXNzIFdlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbiA6IHB1YmxpYyBXZWJDb3JlOjpTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
KE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgV2ViQ29yZTo6
U1dTZXJ2ZXImLCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmKTsKKyAgICBXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiYmLCBXZWJDb3JlOjpTV1NlcnZlciYpOwogICAgIH5XZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24oKTsKIAotICAgIElQQzo6Q29ubmVjdGlvbiogaXBjQ29ubmVj
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXBjQ29ubmVjdGlvbi5wdHIoKTsgfQotCiAgICAgLy8g
SVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCi0gICAgdm9pZCB0ZXJtaW5hdGUoKTsK
LQogICAgIHZvaWQgc3RhcnRGZXRjaChQQUw6OlNlc3Npb25JRCwgUmVmPElQQzo6Q29ubmVjdGlv
bj4mJiwgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6RmV0
Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiwgY29u
c3QgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgY2Fu
Y2VsRmV0Y2goV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6
RmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAg
dm9pZCBjb250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKFdlYkNvcmU6OlNXU2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6U2Vy
dmljZVdvcmtlcklkZW50aWZpZXIpOwpAQCAtOTUsOCArOTEsNyBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCBjb25uZWN0aW9uQ2xvc2VkKCk7CiAKLSAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2lw
Y0Nvbm5lY3Rpb247Ci0gICAgUmVmPE5ldHdvcmtQcm9jZXNzPiBtX25ldHdvcmtQcm9jZXNzOwor
ICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2Nvbm5lY3Rpb247CiAgICAgV2Vh
a1B0cjxXZWJDb3JlOjpTV1NlcnZlcj4gbV9zZXJ2ZXI7CiAKICAgICBIYXNoTWFwPFNlcnZpY2VX
b3JrZXJGZXRjaFRhc2s6OklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllcj4gbV9v
bmdvaW5nRmV0Y2hJZGVudGlmaWVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S0NvbnRleHQuY3BwCmluZGV4IGNmZmViMGVmN2EyYTM1NGE1YmY3MTVjMmEzNWRiNDFhY2E3ODBm
MDYuLjI2ZDBlNGRjMGVmNjA2Nzg4MTkwNDY4NGIzMzE0ZTk1NmZiMzgyYTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcApAQCAtNjU3LDMgKzY1Nyw4IEBA
IHZvaWQgV0tDb250ZXh0Q2xlYXJMZWdhY3lQcml2YXRlQnJvd3NpbmdMb2NhbFN0b3JhZ2UoV0tD
b250ZXh0UmVmIGNvbnRleHRSZWYsIHZvCiAgICAgICAgICAgICBjYWxsYmFjayhjb250ZXh0KTsK
ICAgICB9KTsKIH0KKwordm9pZCBXS0NvbnRleHRTZXRGb3JjZVNlcGFyYXRlU2VydmljZVdvcmtl
clByb2Nlc3MoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGJvb2wgZm9yY2VTZXJ2aWNlV29ya2Vy
UHJvY2VzcykKK3sKKyAgICBXZWJLaXQ6OnRvSW1wbChjb250ZXh0UmVmKS0+c2V0Rm9yY2VTZXBh
cmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKGZvcmNlU2VydmljZVdvcmtlclByb2Nlc3MpOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oCmlu
ZGV4IDkyNDk1Y2FkZmQwMzEyMmNmYzIzZDQ3NDUzZTA3OGIxZWI5MjQ3Y2UuLjFhMDQ5NjkyMmY1
ZWYxMTFlYWRjMGRhMDVkOWY1MWE2MGFjYzg3ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmgKQEAgLTEyNCw2ICsxMjQsOCBAQCBXS19F
WFBPUlQgdm9pZCBXS0NvbnRleHRTeW5jTG9jYWxTdG9yYWdlKFdLQ29udGV4dFJlZiBjb250ZXh0
UmVmLCB2b2lkKiBjb250ZXh0LAogdHlwZWRlZiB2b2lkICgqV0tDb250ZXh0Q2xlYXJMZWdhY3lQ
cml2YXRlQnJvd3NpbmdMb2NhbFN0b3JhZ2VDYWxsYmFjaykodm9pZCogZnVuY3Rpb25Db250ZXh0
KTsKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dENsZWFyTGVnYWN5UHJpdmF0ZUJyb3dzaW5nTG9j
YWxTdG9yYWdlKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCB2b2lkKiBjb250ZXh0LCBXS0NvbnRl
eHRDbGVhckxlZ2FjeVByaXZhdGVCcm93c2luZ0xvY2FsU3RvcmFnZUNhbGxiYWNrIGNhbGxiYWNr
KTsKIAorV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0Rm9yY2VTZXBhcmF0ZVNlcnZpY2VXb3Jr
ZXJQcm9jZXNzKFdLQ29udGV4dFJlZiBjb250ZXh0LCBib29sIGZvcmNlU2VydmljZVdvcmtlclBy
b2Nlc3MpOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQppbmRleCA0YWQzNDc4
N2U4NzFkYzUxNmRkNzBkZjExOGFmNmNhNTIyZTc2ZGZlLi44ZDdkYWNmMzZhMDY4YjJlZWExMTEx
NGQ2MDVjNmIyNWFkYzZhYzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQpAQCAtNDUyLDYgKzQ1MiwxMSBAQCBzdGF0aWMgTlNE
aWN0aW9uYXJ5ICpwb2xpY2llc0hhc2hNYXBUb0RpY3Rpb25hcnkoY29uc3QgSGFzaE1hcDxTdHJp
bmcsIEhhc2hNYXA8UwogICAgIF9wcm9jZXNzUG9vbC0+dGVybWluYXRlU2VydmljZVdvcmtlclBy
b2Nlc3NlcygpOwogfQogCistICh2b2lkKV9zZXRGb3JjZVNlcGFyYXRlU2VydmljZVdvcmtlclBy
b2Nlc3M6KEJPT0wpZm9yY2VTZXJ2aWNlV29ya2VyUHJvY2VzcworeworICAgIF9wcm9jZXNzUG9v
bC0+c2V0Rm9yY2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKGZvcmNlU2VydmljZVdvcmtl
clByb2Nlc3MpOworfQorCiAtIChwaWRfdClfbmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyCiB7CiAg
ICAgcmV0dXJuIF9wcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyKCk7CkBAIC01
MDgsMTIgKzUxMywxMiBAQCBzdGF0aWMgTlNEaWN0aW9uYXJ5ICpwb2xpY2llc0hhc2hNYXBUb0Rp
Y3Rpb25hcnkoY29uc3QgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8UwogCiAtIChzaXplX3QpX3dl
YlBhZ2VDb250ZW50UHJvY2Vzc0NvdW50CiB7Ci0gICAgYXV0byBhbGxXZWJQcm9jZXNzZXMgPSBf
cHJvY2Vzc1Bvb2wtPnByb2Nlc3NlcygpOworICAgIGF1dG8gcmVzdWx0ID0gX3Byb2Nlc3NQb29s
LT5wcm9jZXNzZXMoKS5zaXplKCk7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHJl
dHVybiBhbGxXZWJQcm9jZXNzZXMuc2l6ZSgpIC0gX3Byb2Nlc3NQb29sLT5zZXJ2aWNlV29ya2Vy
UHJveGllc0NvdW50KCk7Ci0jZWxzZQotICAgIHJldHVybiBhbGxXZWJQcm9jZXNzZXMuc2l6ZSgp
OworICAgIGlmIChfcHJvY2Vzc1Bvb2wtPmZvcmNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2Vz
cygpKQorICAgICAgICByZXN1bHQgLT0gX3Byb2Nlc3NQb29sLT5zZXJ2aWNlV29ya2VyUHJveGll
c0NvdW50KCk7CiAjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiAtICh2b2lkKV9wcmVj
b25uZWN0VG9TZXJ2ZXI6KE5TVVJMICopc2VydmVyVVJMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCmluZGV4IGI1
ODAyMzg3MWRiNTZmYWQzMjVjODZlNTMxMzhkZWQyNmNkMDFlMmQuLmFmZmYwMDNiYzIzOGExYWMy
NDRlODgzOGJiNzE1ZWQ5YzZhOThkN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCkBAIC0xMTEsNiArMTEx
LDcgQEAKIC0gKE5TVUludGVnZXIpX21heGltdW1TdXNwZW5kZWRQYWdlQ291bnQgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcygxMC4xNC40KSwgaW9zKDEyLjIpKTsKIC0gKE5TVUludGVnZXIpX3Byb2Nl
c3NDYWNoZUNhcGFjaXR5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQuNCksIGlvcygxMi4y
KSk7CiAtIChOU1VJbnRlZ2VyKV9wcm9jZXNzQ2FjaGVTaXplIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9zZXRGb3JjZVNlcGFy
YXRlU2VydmljZVdvcmtlclByb2Nlc3M6KEJPT0wpZm9yY2VTZXJ2aWNlV29ya2VyUHJvY2VzcyBX
S19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiAv
LyBUZXN0IG9ubHkuIFJldHVybnMgd2ViIHByb2Nlc3NlcyBydW5uaW5nIHdlYiBwYWdlcyAoZG9l
cyBub3QgaW5jbHVkZSB3ZWIgcHJvY2Vzc2VzIHJ1bm5pbmcgc2VydmljZSB3b3JrZXJzKQogLSAo
c2l6ZV90KV93ZWJQYWdlQ29udGVudFByb2Nlc3NDb3VudCBXS19BUElfQVZBSUxBQkxFKG1hY29z
KDEwLjEzLjQpLCBpb3MoMTEuMykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggMjc3M2EwNmU1YTUwNDEz
ZDM0OGU3MTU3MWU1MWJmNmQ4ZDYwOTE5ZC4uY2ZjYjhlOGViZWU0YTJlN2QwZjRkMjhjYThjMWFj
NDM3MzlkNTIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0xMjI5LDYgKzEyMjksMTIgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3MoUmVnaXMKIHsKICAgICBtX3Byb2Nlc3NQb29sLmVzdGFibGlzaFdvcmtlckNv
bnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcygqdGhpcywgV1RGTW92ZShyZWdpc3RyYWJs
ZURvbWFpbiksIHNlc3Npb25JRCk7CiB9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6d29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciBpZGVudGlmaWVyKQoreworICAgIGlmIChhdXRvKiBwcm9jZXNzID0gV2ViUHJvY2Vzc1By
b3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihpZGVudGlmaWVyKSkKKyAgICAgICAgcHJvY2Vzcy0+
ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7Cit9CiAjZW5kaWYKIAogdm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpyZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwg
dWludDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoT3B0aW9uYWw8dWludDY0X3Q+IHF1b3RhKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmgKaW5kZXggMmQ2YWRiZTNiYTNkNWZjZTVjOTZhZWY2M2FlZmJjZjZlZjJjZDA2
My4uMjE0MjdhNDJhYTM1ODI4ZTY4YjQ0M2Q0MjkzOTJkZTlhMDUzNzg4MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgK
QEAgLTI0NSw2ICsyNDUsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQogICAgIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFBBTDo6U2Vzc2lvbklEKTsKKyAgICB2
b2lkIHdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vz
c0lkZW50aWZpZXIpOwogI2VuZGlmCiAKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlU3BhY2UoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYsIHVpbnQ2NF90IHF1b3Rh
LCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0X3Qgc3BhY2VSZXF1aXJlZCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChPcHRpb25hbDx1aW50NjRfdD4gcXVvdGEpPiYmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5tZXNzYWdlcy5pbgppbmRleCBhNmRiYjdjNWM5MzYzM2MyMTQ0ZmVkOWRmOTY2OWYzYmY1
M2FmNjM0Li40NmU5MGEzMjlhYjRiZDVlNGE1YmNkMWU5NzFlNGZhMjUwOTE1YjBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC02Miw2ICs2Miw3IEBAIG1lc3NhZ2VzIC0+IE5l
dHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogCiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQogICAgIEVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKQorICAgIFdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJO
ZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllcikKICNlbmRpZgogCiAg
ICAgUmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBX
ZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luLCB1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3Vy
cmVudFNpemUsIHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQpIC0+IChPcHRpb25hbDx1aW50NjRfdD4g
bmV3UXVvdGEpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAKaW5kZXggOTkxZTI3ZTJjZGViNmQxMjkwZWUwZjU5YmVlODljODgyNGI2ZjJjZC4uODRhMDFi
YzA3ZjMwYTczZjgxZDdhZWM1MjA1MzNmM2E4YjJjNThlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNjc0LDYgKzY3NCwxMiBAQCB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoTmV0d29ya1Byb2Nlc3NQcm94eSYgbmV0
d29ya1Byb2Nlc3NQcgogICAgIGF1dG8mIG5ld05ldHdvcmtQcm9jZXNzID0gZW5zdXJlTmV0d29y
a1Byb2Nlc3MoKTsKICAgICBmb3IgKGF1dG8mIHJlcGx5IDogcGVuZGluZ1JlcGxpZXMpCiAgICAg
ICAgIG5ld05ldHdvcmtQcm9jZXNzLmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigqcmVwbHku
Zmlyc3QsIFdURk1vdmUocmVwbHkuc2Vjb25kKSk7CisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCisgICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnZh
bHVlcygpKQorICAgICAgICBwcm9jZXNzLT5kaXNhYmxlU2VydmljZVdvcmtlcnMoKTsKKyAgICBt
X3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuY2xlYXIoKTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiB3
ZWJQcm9jZXNzUHJveHksIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCkBAIC03MDAsMjQgKzcwNiw1NyBA
QCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MoTmV0d29ya1BybwogICAgIH0KIAogICAgIFJlZ2lzdHJhYmxlRG9tYWlu
V2l0aFNlc3Npb25JRCByZWdpc3RyYWJsZURvbWFpbldpdGhTZXNzaW9uSUQgeyBSZWdpc3RyYWJs
ZURvbWFpbiB7IHJlZ2lzdHJhYmxlRG9tYWluIH0sIHNlc3Npb25JRCB9OwotICAgIGlmIChtX3Nl
cnZpY2VXb3JrZXJQcm9jZXNzZXMuY29udGFpbnMocmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lv
bklEKSkKKyAgICBpZiAobV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNvbnRhaW5zKHJlZ2lzdHJh
YmxlRG9tYWluV2l0aFNlc3Npb25JRCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0coU2VydmljZVdv
cmtlciwgIldlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MgcHJvY2VzcyBhbHJlYWR5IGNyZWF0ZWQiKTsKICAgICAgICAgcmV0dXJu
OworICAgIH0KIAogICAgIGlmIChtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuaXNFbXB0eSgpKQog
ICAgICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlJlZ2lzdGVy
U2VydmljZVdvcmtlckNsaWVudHMgeyB9KTsKIAotICAgIGF1dG8gc2VydmljZVdvcmtlclByb2Nl
c3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yU2VydmljZVdvcmtlcnMoKnRoaXMs
IFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCAqd2Vic2l0ZURhdGFTdG9yZSk7Ci0gICAgbV9z
ZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmFkZChXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluV2l0aFNl
c3Npb25JRCksIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkucHRyKCkpOworICAgIFdlYlByb2Nl
c3NQcm94eSogc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSB7IG51bGxwdHIgfTsKKyAgICBpZiAo
IW1fZm9yY2VTZXJ2aWNlV29ya2VyUHJvY2VzcykgeworICAgICAgICBmb3IgKGF1dG8mIHByb2Nl
c3MgOiBtX3Byb2Nlc3NlcykgeworICAgICAgICAgICAgaWYgKHByb2Nlc3MgPT0gbV9wcmV3YXJt
ZWRQcm9jZXNzIHx8IHByb2Nlc3MgPT0gbV9kdW1teVByb2Nlc3NQcm94eSkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmICgmcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9y
ZSgpICE9IHdlYnNpdGVEYXRhU3RvcmUpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICBpZiAoIXByb2Nlc3MtPmlzTWF0Y2hpbmdSZWdpc3RyYWJsZURvbWFpbihyZWdpc3Ry
YWJsZURvbWFpbikpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIHNl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBwcm9jZXNzLmdldCgpOworICAgICAgICAgICAgc2Vy
dmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlU2VydmljZVdvcmtlcnMoKTsKKworICAgICAg
ICAgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIldlYlByb2Nlc3NQb29sOjplc3RhYmxp
c2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgcmV1c2luZyBhbiBleGlz
dGluZyB3ZWIgcHJvY2VzcyAlcCIsIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIXNlcnZpY2VXb3JrZXJQ
cm9jZXNzUHJveHkpIHsKKyAgICAgICAgYXV0byBuZXdQcm9jZXNzUHJveHkgPSBXZWJQcm9jZXNz
UHJveHk6OmNyZWF0ZUZvclNlcnZpY2VXb3JrZXJzKCp0aGlzLCBXVEZNb3ZlKHJlZ2lzdHJhYmxl
RG9tYWluKSwgKndlYnNpdGVEYXRhU3RvcmUpOworICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5ID0gbmV3UHJvY2Vzc1Byb3h5LnB0cigpOwogCi0gICAgdXBkYXRlUHJvY2Vzc0Fzc2Vy
dGlvbnMoKTsKLSAgICBpbml0aWFsaXplTmV3V2ViUHJvY2VzcyhzZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5LCB3ZWJzaXRlRGF0YVN0b3JlKTsKKyAgICAgICAgUkVMRUFTRV9MT0coU2VydmljZVdv
cmtlciwgIldlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MgY3JlYXRpbmcgYSBuZXcgc2VydmljZSB3b3JrZXIgcHJvY2VzcyAlcCIs
IHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkpOwogCi0gICAgYXV0byogc2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eVB0ciA9IHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkucHRyKCk7Ci0gICAgbV9w
cm9jZXNzZXMuYXBwZW5kKFdURk1vdmUoc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSkpOworICAg
ICAgICB1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpOworICAgICAgICBpbml0aWFsaXplTmV3V2Vi
UHJvY2VzcyhuZXdQcm9jZXNzUHJveHksIHdlYnNpdGVEYXRhU3RvcmUpOworICAgICAgICBtX3By
b2Nlc3Nlcy5hcHBlbmQoV1RGTW92ZShuZXdQcm9jZXNzUHJveHkpKTsKKyAgICB9CiAKLSAgICBz
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5UHRyLT5lc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4
dChtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyA/IG1fc2VydmljZVdvcmtlclByZWZlcmVuY2Vz
LnZhbHVlKCkgOiBtX2RlZmF1bHRQYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc3RvcmUoKSk7Cisg
ICAgQVNTRVJUKCFtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuY29udGFpbnMocmVnaXN0cmFibGVE
b21haW5XaXRoU2Vzc2lvbklEKSk7CisgICAgbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmFkZChX
VEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRCksIHNlcnZpY2VXb3JrZXJQcm9j
ZXNzUHJveHkpOworCisgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZXN0YWJsaXNoU2Vy
dmljZVdvcmtlckNvbnRleHQobV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMgPyBtX3NlcnZpY2VX
b3JrZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDogbV9kZWZhdWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNl
cygpLnN0b3JlKCkpOwogICAgIGlmICghbV9zZXJ2aWNlV29ya2VyVXNlckFnZW50LmlzTnVsbCgp
KQotICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5UHRyLT5zZXRTZXJ2aWNlV29ya2Vy
VXNlckFnZW50KG1fc2VydmljZVdvcmtlclVzZXJBZ2VudCk7CisgICAgICAgIHNlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHktPnNldFNlcnZpY2VXb3JrZXJVc2VyQWdlbnQobV9zZXJ2aWNlV29ya2Vy
VXNlckFnZW50KTsKK30KKwordm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVtb3ZlRnJvbVNlcnZpY2VX
b3JrZXJQcm9jZXNzZXMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQoreworICAgIFJlZ2lzdHJh
YmxlRG9tYWluV2l0aFNlc3Npb25JRCBrZXkgeyBwcm9jZXNzLnJlZ2lzdHJhYmxlRG9tYWluKCks
IHByb2Nlc3Mud2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpIH07CisgICAgQVNTRVJUKG1f
c2VydmljZVdvcmtlclByb2Nlc3Nlcy5jb250YWlucyhrZXkpKTsKKyAgICBBU1NFUlQobV9zZXJ2
aWNlV29ya2VyUHJvY2Vzc2VzLmdldChrZXkpID09ICZwcm9jZXNzKTsKKyAgICBtX3NlcnZpY2VX
b3JrZXJQcm9jZXNzZXMucmVtb3ZlKGtleSk7CiB9CiAjZW5kaWYKIApAQCAtMTEwMCw4ICsxMTM5
LDkgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nlc3MoV2ViUHJvY2Vzc1By
b3h5KiBwcm9jZXNzKQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChwcm9j
ZXNzLT5pc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKSB7Ci0gICAgICAgIGF1dG8qIHJlbW92ZWRQ
cm9jZXNzID0gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnRha2UoUmVnaXN0cmFibGVEb21haW5X
aXRoU2Vzc2lvbklEIHsgcHJvY2Vzcy0+cmVnaXN0cmFibGVEb21haW4oKSwgcHJvY2Vzcy0+d2Vi
c2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpIH0pOwotICAgICAgICBBU1NFUlRfVU5VU0VEKHJl
bW92ZWRQcm9jZXNzLCByZW1vdmVkUHJvY2VzcyA9PSBwcm9jZXNzKTsKKyAgICAgICAgYXV0byBp
dGVyYXRvciA9IG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5maW5kKFJlZ2lzdHJhYmxlRG9tYWlu
V2l0aFNlc3Npb25JRCB7IHByb2Nlc3MtPnJlZ2lzdHJhYmxlRG9tYWluKCksIHByb2Nlc3MtPndl
YnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSB9KTsKKyAgICAgICAgaWYgKGl0ZXJhdG9yICE9
IG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5lbmQoKSAmJiBpdGVyYXRvci0+dmFsdWUgPT0gcHJv
Y2VzcykKKyAgICAgICAgICAgIG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5yZW1vdmUoaXRlcmF0
b3IpOwogICAgICAgICB1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpOwogICAgIH0KICNlbmRpZgpA
QCAtMTExNiwxNSArMTE1Niw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9j
ZXNzKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKICNlbmRpZgogCiAgICAgcmVtb3ZlUHJvY2Vz
c0Zyb21PcmlnaW5DYWNoZVNldCgqcHJvY2Vzcyk7Ci0KLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBkbyBiZXR0ZXIgdGhhbiB0aGlzLiBGb3Igbm93
LCB3ZSBqdXN0IGRlc3Ryb3kgdGhlIFNlcnZpY2VXb3JrZXIgcHJvY2VzcwotICAgIC8vIHdoZW5l
dmVyIHRoZXJlIGlzIG5vIHJlZ3VsYXIgV2ViQ29udGVudCBwcm9jZXNzIHJlbWFpbmluZy4KLSAg
ICBpZiAobV9wcm9jZXNzZXMuc2l6ZSgpID09IG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5zaXpl
KCkpIHsKLSAgICAgICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXNUZXJtaW5hdGlvblRp
bWVyLmlzQWN0aXZlKCkpCi0gICAgICAgICAgICBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXNUZXJt
aW5hdGlvblRpbWVyLnN0YXJ0T25lU2hvdChzZXJ2aWNlV29ya2VyVGVybWluYXRpb25EZWxheSk7
Ci0gICAgfQotI2VuZGlmCiB9CiAKIFdlYlByb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OnBy
b2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbihXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0
b3JlLCBXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3Ry
YWJsZURvbWFpbikKQEAgLTEyMTQsOCArMTI0NSw2IEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlBy
b2Nlc3NQb29sOjpjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFJlZjxBUEk6
CiAgICAgYXV0byBwYWdlID0gcHJvY2Vzcy0+Y3JlYXRlV2ViUGFnZShwYWdlQ2xpZW50LCBXVEZN
b3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0g
ICAgQVNTRVJUKCFwcm9jZXNzLT5pc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKTsKLQogICAgIGlm
ICghbV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMpIHsKICAgICAgICAgbV9zZXJ2aWNlV29ya2Vy
UHJlZmVyZW5jZXMgPSBwYWdlLT5wcmVmZXJlbmNlc1N0b3JlKCk7CiAgICAgICAgIGZvciAoYXV0
byogc2VydmljZVdvcmtlclByb2Nlc3MgOiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMudmFsdWVz
KCkpCkBAIC0xNjk2LDYgKzE3MjUsMTEgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6Y2xlYXJDYWNo
ZWRDcmVkZW50aWFscygpCiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnRlcm1pbmF0ZU5ldHdvcmtQ
cm9jZXNzKCkKIHsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgd2hpbGUgKCFtX3Nl
cnZpY2VXb3JrZXJQcm9jZXNzZXMuaXNFbXB0eSgpKQorICAgICAgICBtX3NlcnZpY2VXb3JrZXJQ
cm9jZXNzZXMuYmVnaW4oKS0+dmFsdWUtPmRpc2FibGVTZXJ2aWNlV29ya2VycygpOworI2VuZGlm
CisKICAgICBpZiAoIW1fbmV0d29ya1Byb2Nlc3MpCiAgICAgICAgIHJldHVybjsKICAgICAKQEAg
LTI1MDIsNCArMjUzNiwxNSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpjbGVhcldlYlByb2Nlc3NJ
c1BsYXlpbmdBdWRpYmxlTWVkaWEoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aQogICAgIH0KIH0KIAor
dm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0Rm9yY2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNz
KGJvb2wgZm9yY2VTZXJ2aWNlV29ya2VyUHJvY2VzcykKK3sKKyAgICBpZiAobV9mb3JjZVNlcnZp
Y2VXb3JrZXJQcm9jZXNzID09IGZvcmNlU2VydmljZVdvcmtlclByb2Nlc3MpCisgICAgICAgIHJl
dHVybjsKKworICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJXZWJQcm9jZXNzUG9vbDo6
c2V0Rm9yY2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzICVkIiwgZm9yY2VTZXJ2aWNlV29y
a2VyUHJvY2Vzcyk7CisKKyAgICBtX2ZvcmNlU2VydmljZVdvcmtlclByb2Nlc3MgPSBmb3JjZVNl
cnZpY2VXb3JrZXJQcm9jZXNzOworICAgIHRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKCk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmgKaW5kZXggMDIxMDE0ZWMxMjBjYjQyZDk4NWJlN2Q0N2Q1YWRhMWQxYTVmNjRlMi4uNGI0
NjFmYTkyMmI2YjFhNGRhZDA3MTllMDc5MDk3Y2NmNTU3MTVkMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0zODMsNiArMzgzLDcgQEAgcHVibGljOgogICAg
IGJvb2wgaXNTZXJ2aWNlV29ya2VyUGFnZUlEKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIpIGNvbnN0
OwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGVzdGFibGlzaFdvcmtlckNv
bnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc1Byb3h5JiwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgUEFMOjpTZXNzaW9uSUQpOworICAgIHZvaWQgcmVt
b3ZlRnJvbVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoV2ViUHJvY2Vzc1Byb3h5Jik7CiAgICAgc2l6
ZV90IHNlcnZpY2VXb3JrZXJQcm94aWVzQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VX
b3JrZXJQcm9jZXNzZXMuc2l6ZSgpOyB9CiAgICAgdm9pZCBzZXRBbGxvd3NBbnlTU0xDZXJ0aWZp
Y2F0ZUZvclNlcnZpY2VXb3JrZXIoYm9vbCBhbGxvd3MpIHsgbV9hbGxvd3NBbnlTU0xDZXJ0aWZp
Y2F0ZUZvclNlcnZpY2VXb3JrZXIgPSBhbGxvd3M7IH0KICAgICBib29sIGFsbG93c0FueVNTTENl
cnRpZmljYXRlRm9yU2VydmljZVdvcmtlcigpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dzQW55U1NM
Q2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyOyB9CkBAIC01MjYsNiArNTI3LDkgQEAgcHVibGlj
OgogICAgIAogICAgIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyJiBwbHVnSW5BdXRvU3RhcnRQcm92
aWRlcigpIHsgcmV0dXJuIG1fcGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXI7IH0KIAorICAgIHZvaWQg
c2V0Rm9yY2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKGJvb2wgZm9yY2VTZXJ2aWNlV29y
a2VyUHJvY2Vzcyk7CisgICAgYm9vbCBmb3JjZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3Mo
KSBjb25zdCB7IHJldHVybiBtX2ZvcmNlU2VydmljZVdvcmtlclByb2Nlc3M7IH0KKwogcHJpdmF0
ZToKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwogCkBAIC04MDMsNiArODA3LDcgQEAg
cHJpdmF0ZToKICNlbHNlCiAgICAgYm9vbCBtX2lzRGVsYXllZFdlYlByb2Nlc3NMYXVuY2hEaXNh
YmxlZCB7IGZhbHNlIH07CiAjZW5kaWYKKyAgICBib29sIG1fZm9yY2VTZXJ2aWNlV29ya2VyUHJv
Y2VzcyB7IGZhbHNlIH07CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggZmZhZmE3ZWE4Zjc4ODQ0ZmM2
NDU5NDkzODQ4M2Y0YWU1NDIxZDI0MS4uMDRmMDlkYzAxZmY5ODU3ZDdkMGM5MWQxMTk4M2ZlZmM3
YzRkZWI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
CkBAIC0xMzksNyArMTM5LDcgQEAgUmVmPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Byb3h5
OjpjcmVhdGVGb3JTZXJ2aWNlV29ya2VycyhXZWJQcm9jZXNzUG9vbCYgcHIKIHsKICAgICBhdXRv
IHByb3h5ID0gYWRvcHRSZWYoKm5ldyBXZWJQcm9jZXNzUHJveHkocHJvY2Vzc1Bvb2wsICZ3ZWJz
aXRlRGF0YVN0b3JlLCBJc1ByZXdhcm1lZDo6Tm8pKTsKICAgICBwcm94eS0+bV9yZWdpc3RyYWJs
ZURvbWFpbiA9IFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pOwotICAgIHByb3h5LT5tX3NlcnZp
Y2VXb3JrZXJJbmZvcm1hdGlvbiA9IFNlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiB7IFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXI6OmdlbmVyYXRlKCksIFBhZ2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07
CisgICAgcHJveHktPmVuYWJsZVNlcnZpY2VXb3JrZXJzKCk7CiAgICAgcHJveHktPmNvbm5lY3Qo
KTsKICAgICByZXR1cm4gcHJveHk7CiB9CkBAIC05MjAsNiArOTIwLDkgQEAgdm9pZCBXZWJQcm9j
ZXNzUHJveHk6Om1heWJlU2h1dERvd24oQWxsb3dQcm9jZXNzQ2FjaGluZyBhbGxvd1Byb2Nlc3ND
YWNoaW5nKQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKGlzUnVubmluZ1NlcnZp
Y2VXb3JrZXJzKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChzdGF0ZSgpID09IFN0YXRl
OjpUZXJtaW5hdGVkIHx8ICFjYW5UZXJtaW5hdGVBdXhpbGlhcnlQcm9jZXNzKCkpCiAgICAgICAg
IHJldHVybjsKIApAQCAtMTQzMywxMSArMTQzNiwxNCBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6
ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JNYWluRnJhbWUoY29uc3QgVVJMJiB1cmwpCiAgICAg
UkVMRUFTRV9BU1NFUlQoIWlzSW5Qcm9jZXNzQ2FjaGUoKSk7CiAKICAgICAvLyBUaGlzIHByb2Nl
c3MgaGFzIGJlZW4gdXNlZCBmb3Igc2V2ZXJhbCByZWdpc3RyYWJsZSBkb21haW5zIGFscmVhZHku
Ci0gICAgaWYgKG1fcmVnaXN0cmFibGVEb21haW4gJiYgbV9yZWdpc3RyYWJsZURvbWFpbi0+aXNF
bXB0eSgpKQorICAgIGlmICgobV9yZWdpc3RyYWJsZURvbWFpbiAmJiBtX3JlZ2lzdHJhYmxlRG9t
YWluLT5pc0VtcHR5KCkpIHx8IHVybC5wcm90b2NvbElzQWJvdXQoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIHsgdXJsIH07CiAgICAgaWYgKG1fcmVnaXN0cmFibGVEb21haW4gJiYgKm1fcmVnaXN0cmFi
bGVEb21haW4gIT0gcmVnaXN0cmFibGVEb21haW4pIHsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCisgICAgICAgIGRpc2FibGVTZXJ2aWNlV29ya2VycygpOworI2VuZGlmCiAgICAgICAgIC8v
IE51bGwgb3V0IHJlZ2lzdHJhYmxlIGRvbWFpbiBzaW5jZSB0aGlzIHByb2Nlc3MgaGFzIG5vdyBi
ZWVuIHVzZWQgZm9yIHNldmVyYWwgZG9tYWlucy4KICAgICAgICAgbV9yZWdpc3RyYWJsZURvbWFp
biA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgfTsKICAgICAgICAgcmV0dXJuOwpAQCAt
MTUzMiw2ICsxNTM4LDI1IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVTZXJ2aWNlV29y
a2VyUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0CiAgICAgQVNTRVJUKG1f
c2VydmljZVdvcmtlckluZm9ybWF0aW9uKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6VXBkYXRlUHJlZmVyZW5jZXNTdG9yZSB7IHN0b3JlIH0sIDAp
OwogfQorCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCkKK3sK
KyAgICBpZiAoIW1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiA9IHsgfTsKKyAgICBpZiAobV9wcm9jZXNz
UG9vbCkKKyAgICAgICAgbV9wcm9jZXNzUG9vbC0+cmVtb3ZlRnJvbVNlcnZpY2VXb3JrZXJQcm9j
ZXNzZXMoKnRoaXMpOworCisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb246OlN0b3AgeyB9LCAwKTsKK30KKwordm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuYWJs
ZVNlcnZpY2VXb3JrZXJzKCkKK3sKKyAgICBBU1NFUlQobV9yZWdpc3RyYWJsZURvbWFpbiAmJiAh
bV9yZWdpc3RyYWJsZURvbWFpbi0+aXNFbXB0eSgpKTsKKyAgICBBU1NFUlQoIW1fc2VydmljZVdv
cmtlckluZm9ybWF0aW9uKTsKKyAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiA9IFNlcnZp
Y2VXb3JrZXJJbmZvcm1hdGlvbiB7IFdlYlBhZ2VQcm94eUlkZW50aWZpZXI6OmdlbmVyYXRlKCks
IFBhZ2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07Cit9CiAjZW5kaWYKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4
IGE3M2RjODk5ZDMwNzA5ZjE3ZWZjN2M4ZmU5YzM3MWNkMmJkY2QzYWEuLjVkZTY2NjJmODI2OWZm
NjM0NmM1ODBjOWQ3ZmMxNzAxMDlmY2RmNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5oCkBAIC0xMjUsMTAgKzEyNSwxNCBAQCBwdWJsaWM6CiAgICAgV2ViUHJv
Y2Vzc1Bvb2wqIHByb2Nlc3NQb29sSWZFeGlzdHMoKSBjb25zdDsKICAgICBXZWJQcm9jZXNzUG9v
bCYgcHJvY2Vzc1Bvb2woKSBjb25zdDsKIAorICAgIGJvb2wgaXNNYXRjaGluZ1JlZ2lzdHJhYmxl
RG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pIGNvbnN0IHsg
cmV0dXJuIG1fcmVnaXN0cmFibGVEb21haW4gPyAqbV9yZWdpc3RyYWJsZURvbWFpbiA9PSBkb21h
aW4gOiBmYWxzZTsgfQogICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxl
RG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbi52YWx1ZU9yKFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgfSk7IH0KICAgICB2b2lkIHNldElzSW5Qcm9jZXNzQ2Fj
aGUoYm9vbCk7CiAgICAgYm9vbCBpc0luUHJvY2Vzc0NhY2hlKCkgY29uc3QgeyByZXR1cm4gbV9p
c0luUHJvY2Vzc0NhY2hlOyB9CiAKKyAgICB2b2lkIGVuYWJsZVNlcnZpY2VXb3JrZXJzKCk7Cisg
ICAgdm9pZCBkaXNhYmxlU2VydmljZVdvcmtlcnMoKTsKKwogICAgIFdlYnNpdGVEYXRhU3RvcmUm
IHdlYnNpdGVEYXRhU3RvcmUoKSBjb25zdCB7IEFTU0VSVChtX3dlYnNpdGVEYXRhU3RvcmUpOyBy
ZXR1cm4gKm1fd2Vic2l0ZURhdGFTdG9yZTsgfQogICAgIHZvaWQgc2V0V2Vic2l0ZURhdGFTdG9y
ZShXZWJzaXRlRGF0YVN0b3JlJik7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5jcHAKaW5kZXggNzUxZTUxMDU1MTU5OTg2YmE1OGI2ODYwYmQ1MTk0OTJjOTY1N2M0OS4uNTQy
MjBhMWM2ZmQ1N2VjZTgwMzMwZmRlMjk0MmI4NmEyNDM4OTg5ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmNwcApAQCAtNjgsOSArNjgsNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IHVzaW5nIG5hbWVzcGFjZSBQQUw7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3RhdGlj
IGNvbnN0IFNlY29uZHMgYXN5bmNXb3JrZXJUZXJtaW5hdGlvblRpbWVvdXQgeyAxMF9zIH07Ci1z
dGF0aWMgY29uc3QgU2Vjb25kcyBzeW5jV29ya2VyVGVybWluYXRpb25UaW1lb3V0IHsgMTAwX21z
IH07IC8vIE9ubHkgdXNlZCBieSBsYXlvdXQgdGVzdHMuCi0KIFNlcnZpY2VXb3JrZXJGcmFtZUxv
YWRlckNsaWVudDo6U2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50KFdlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBh
Z2VQcm94eUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKICAgICA6IG1fY29ubmVjdGlvbihjb25uZWN0aW9u
KQogICAgICwgbV93ZWJQYWdlUHJveHlJRCh3ZWJQYWdlUHJveHlJRCkKQEAgLTk5LDYgKzk2LDcg
QEAgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OldlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24KIHsKICAgICB1cGRhdGVQcmVmZXJlbmNlc1N0b3Jl
KHN0b3JlKTsKICAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RXN0YWJsaXNoU1dDb250ZXh0Q29ubmVj
dGlvbiB7IG1fcmVnaXN0cmFibGVEb21haW4gfSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuZGlzYWJsZVRlcm1pbmF0aW9uKCk7CiB9CiAKIFdlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uOjp+V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7CkBAIC0y
NTMsMTIgKzI1MSwxMiBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzb2Z0
VXBkYXRlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyCiAKIHZvaWQgV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb246OnRlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBpZGVudGlmaWVyKQogewotICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnRl
cm1pbmF0ZVdvcmtlcihpZGVudGlmaWVyLCBhc3luY1dvcmtlclRlcm1pbmF0aW9uVGltZW91dCwg
bnVsbHB0cik7CisgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkudGVybWluYXRlV29y
a2VyKGlkZW50aWZpZXIsIFNXQ29udGV4dE1hbmFnZXI6OndvcmtlclRlcm1pbmF0aW9uVGltZW91
dCwgbnVsbHB0cik7CiB9CiAKIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnN5
bmNUZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgTWVz
c2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTeW5jVGVybWluYXRlV29ya2Vy
OjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKLSAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0
b24oKS50ZXJtaW5hdGVXb3JrZXIoaWRlbnRpZmllciwgc3luY1dvcmtlclRlcm1pbmF0aW9uVGlt
ZW91dCwgV1RGTW92ZShyZXBseSkpOworICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigp
LnRlcm1pbmF0ZVdvcmtlcihpZGVudGlmaWVyLCBTV0NvbnRleHRNYW5hZ2VyOjp3b3JrZXJUZXJt
aW5hdGlvblRpbWVvdXRGb3JUZXN0LCBXVEZNb3ZlKHJlcGx5KSk7CiB9CiAKIHZvaWQgV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50
KGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0aW5hdGlvbklkZW50aWZp
ZXIsIGNvbnN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiBtZXNzYWdlLCBTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikK
QEAgLTM0OCwxMCArMzQ2LDE0IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246
OmRpZEZpbmlzaFNraXBXYWl0aW5nKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgICAgIGNhbGxi
YWNrKCk7CiB9CiAKLXZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnRlcm1pbmF0
ZVByb2Nlc3MoKQordm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c3RvcCgpCiB7
Ci0gICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIlNlcnZpY2Ugd29ya2VyIHByb2Nlc3Mg
aXMgZXhpdGluZyBiZWNhdXNlIGl0IGlzIG5vIGxvbmdlciBuZWVkZWQiKTsKLSAgICBfZXhpdChF
WElUX1NVQ0NFU1MpOworICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJTZXJ2aWNlIHdv
cmtlciBwcm9jZXNzIGlzIHJlcXVlc3RlZCB0byBzdG9wIGFsbCBzZXJ2aWNlIHdvcmtlcnMiKTsK
KyAgICBtX2lzU3RvcHBlZCA9IHRydWU7CisKKyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q2xvc2VT
V0NvbnRleHRDb25uZWN0aW9uIHsgfSwgMCk7CisgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xl
dG9uKCkuc3RvcEFsbFNlcnZpY2VXb3JrZXJzKCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5hYmxlVGVybWluYXRpb24oKTsKIH0KIAogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6c2V0VGhyb3R0bGVTdGF0ZShib29sIGlzVGhyb3R0bGVhYmxlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5kZXggN2Q2MjYwMTk2MTkxNGYzZmUyZDU5MjVjOWI5N2M0
ZDE0MGRkM2FlMS4uNDUwZWI0ZjQyZGViNzU5ZjA4OTYyYTY4MmYyNjJiOTA2YTc0ZTRjYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBAIC05NSw3ICs5NSw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBjbGFpbUNvbXBsZXRlZCh1aW50NjRfdCBjbGFpbVJlcXVlc3RJZGVudGlmaWVy
KTsKICAgICB2b2lkIGRpZEZpbmlzaFNraXBXYWl0aW5nKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwog
ICAgIHZvaWQgc2V0VXNlckFnZW50KFN0cmluZyYmIHVzZXJBZ2VudCk7Ci0gICAgTk9fUkVUVVJO
IHZvaWQgdGVybWluYXRlUHJvY2VzcygpOworICAgIHZvaWQgc3RvcCgpOwogICAgIHZvaWQgc2V0
VGhyb3R0bGVTdGF0ZShib29sIGlzVGhyb3R0bGVhYmxlKTsKIAogICAgIFJlZjxJUEM6OkNvbm5l
Y3Rpb24+IG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3M7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IGVhZDhjYmQzYzMwNGQ2ZDcxNTNh
MmJlNzQyNTBjNzQyMjRjZjg3MGEuLjA1MGUwNTIyNjc3MDllNDQ1NGIxNTFmZWQ3OGViNjQ1Yzk0
YzRlZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCkBAIC0zOSw3ICszOSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uIHsKICAgICBEaWRGaW5pc2hTa2lwV2FpdGluZyh1aW50NjRfdCBjYWxsYmFja0lEKQog
ICAgIFNldFVzZXJBZ2VudChTdHJpbmcgdXNlckFnZW50KQogICAgIFVwZGF0ZVByZWZlcmVuY2Vz
U3RvcmUoc3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSkKLSAgICBUZXJt
aW5hdGVQcm9jZXNzKCkKKyAgICBTdG9wKCkKICAgICBTZXRUaHJvdHRsZVN0YXRlKGJvb2wgaXNU
aHJvdHRsZWFibGUpCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApp
bmRleCBmN2IyY2I2NzUxYjIyNDM3Zjc5YjZlMDRiOTRhYmU1NjI4M2RiNDE1Li5kMzI2MmM1NDFh
MzQ4YmI3ZTkxMzkyYWE0M2JjNzUxMWQxYzA2NzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCkBAIC0xMjI1LDEwICsxMjI1LDggQEAgdm9pZCBXZWJQcm9jZXNzOjpu
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQoTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKiBj
b25uZWMKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIGlmIChTV0Nv
bnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpIHsKLSAgICAgICAgUkVMRUFT
RV9MT0coU2VydmljZVdvcmtlciwgIlNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgaXMgZXhpdGluZyBi
ZWNhdXNlIG5ldHdvcmsgcHJvY2VzcyBpcyBnb25lIik7Ci0gICAgICAgIF9leGl0KEVYSVRfU1VD
Q0VTUyk7Ci0gICAgfQorICAgIGlmIChTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25u
ZWN0aW9uKCkpCisgICAgICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnN0b3BBbGxT
ZXJ2aWNlV29ya2VycygpOwogI2VuZGlmCiAKICAgICBtX25ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
biA9IG51bGxwdHI7CkBAIC0xNzk4LDggKzE3OTYsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OmVzdGFi
bGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyh1aW50NjRfdCBwYWdl
RwogCiB2b2lkIFdlYlByb2Nlc3M6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudHMoKQogewot
ICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIHJlZ2lzdGVyIHNlcnZpY2Ugd29ya2VyIGR1bW15IGRv
Y3VtZW50cy4KLSAgICBBU1NFUlQoIVNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5l
Y3Rpb24oKSk7CiAgICAgU2VydmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKS5yZWdpc3Rl
clNlcnZpY2VXb3JrZXJDbGllbnRzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwMGU4Y2YzNmM1YWMwODQ5OGVjNmU4YzBkYzQ2NTgw
YzAzN2ZhYzlmLi42MDM2N2NlYzY2YjFkOTBjZjhjMTNlZjQ1N2VhMzYyMTQ5NWY4M2RkIDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjQgQEAKKzIwMTktMTAtMDQgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisg
ICAgICAgIFJldXNlIGV4aXN0aW5nIHdlYiBwcm9jZXNzZXMgZm9yIHJ1bm5pbmcgc2VydmljZSB3
b3JrZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDIxOTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgc3VwcG9ydCBmb3IgZW5mb3JjaW5nIGEgc2VwYXJhdGUgcHJvY2VzcyBmb3Igc2VydmljZSB3
b3JrZXJzLgorICAgICAgICBUaGlzIGlzIHVzZWZ1bCBmb3IgdGVzdHMgdHJ5aW5nIHRvIGNyYXNo
IHRoZSBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW06CisgICAgICAgIFVwZGF0ZSB0
ZXN0IHRvIHVzZSBzZXJ2aWNlV29ya2VyUHJvY2Vzc0NvdW50LgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAg
ICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0Rm9yY2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNz
KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
aDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAo
V1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21Jbmpl
Y3RlZEJ1bmRsZSk6CisKIDIwMTktMTAtMDMgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04oMjQ5NjQ5KTogVW5hYmxlIHRvIG9wZW4gbG9j
YWwgZmlsZXMgaW4gTWluaUJyb3dzZXIgb24gbWFjT1MKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0KaW5k
ZXggOWNjYTcwMjg5ODMwZjIwNzk3ODRiOGE2ZWU3NTEwNzQzNDA0Yzc4Yy4uZDFhYTkyOWViODgz
OTYyMDdjM2JjMWIwMTM2Zjk5OWRlMDRlNmYyMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0KQEAg
LTExNzMsNyArMTE3Myw3IEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIFNlcnZpY2VXb3JrZXJQcm9j
ZXNzQ3JlYXRpb24pCiAgICAgZG9uZSA9IGZhbHNlOwogCiAgICAgLy8gTWFrZSBzdXJlIHRoYXQg
bG9hZGluZyB0aGUgc2ltcGxlIHBhZ2UgZGlkIG5vdCBzdGFydCB0aGUgc2VydmljZSB3b3JrZXIg
cHJvY2Vzcy4KLSAgICBFWFBFQ1RfRVEoMXUsIHdlYlZpZXcuZ2V0KCkuY29uZmlndXJhdGlvbi5w
cm9jZXNzUG9vbC5fd2ViUHJvY2Vzc0NvdW50SWdub3JpbmdQcmV3YXJtZWQpOworICAgIEVYUEVD
VF9FUSgwdSwgd2ViVmlldy5nZXQoKS5jb25maWd1cmF0aW9uLnByb2Nlc3NQb29sLl9zZXJ2aWNl
V29ya2VyUHJvY2Vzc0NvdW50KTsKIAogICAgIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3Vy
YXRpb246bmV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIEVYUEVDVF9FUSgydSwgd2ViVmll
dy5nZXQoKS5jb25maWd1cmF0aW9uLnByb2Nlc3NQb29sLl93ZWJQcm9jZXNzQ291bnRJZ25vcmlu
Z1ByZXdhcm1lZCk7CkBAIC0xMTgzLDcgKzExODMsNyBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBT
ZXJ2aWNlV29ya2VyUHJvY2Vzc0NyZWF0aW9uKQogICAgIGRvbmUgPSBmYWxzZTsKIAogICAgIC8v
IE1ha2Ugc3VyZSB0aGF0IGxvYWRpbmcgdGhpcyBwYWdlIGRpZCBzdGFydCB0aGUgc2VydmljZSB3
b3JrZXIgcHJvY2Vzcy4KLSAgICBFWFBFQ1RfRVEoM3UsIHdlYlZpZXcuZ2V0KCkuY29uZmlndXJh
dGlvbi5wcm9jZXNzUG9vbC5fd2ViUHJvY2Vzc0NvdW50SWdub3JpbmdQcmV3YXJtZWQpOworICAg
IEVYUEVDVF9FUSgxdSwgd2ViVmlldy5nZXQoKS5jb25maWd1cmF0aW9uLnByb2Nlc3NQb29sLl9z
ZXJ2aWNlV29ya2VyUHJvY2Vzc0NvdW50KTsKIAogICAgIFtbY29uZmlndXJhdGlvbiB3ZWJzaXRl
RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNp
dGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlv
bkhhbmRsZXI6XigpIHsKICAgICAgICAgZG9uZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVy
LmlkbAppbmRleCA0MmFhZDU0ZTMxMTNhMzgzZjczNDkxNzc0MTUyMTdjZWQ5OTBkNGFkLi41YTI2
NDdjNGIzY2M1OGExNzMxMDIyMmMzM2M3Y2Y3YWE1MjdiYzgwIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1
bm5lci5pZGwKQEAgLTM2Niw2ICszNjYsNyBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAKICAg
ICB2b2lkIHRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKCk7CiAgICAgdm9pZCB0ZXJtaW5hdGVTZXJ2
aWNlV29ya2VyUHJvY2VzcygpOworICAgIHZvaWQgc2V0Rm9yY2VTZXBhcmF0ZVNlcnZpY2VXb3Jr
ZXJQcm9jZXNzKGJvb2xlYW4gdmFsdWUpOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2ln
bmVkIGxvbmcgc2VydmVyVHJ1c3RFdmFsdWF0aW9uQ2FsbGJhY2tDYWxsc0NvdW50OwogCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
Y3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNw
cAppbmRleCAwMTEwNGFjZjg0YmFiMTI3ZTUxNzNkMzc5MzJlNDI5OWFmYTNjMTU0Li5hZTczZmJh
ZWJlM2M3MWZkZTgxMTE3OTQzZTM0Mzc4YWUxOGM4YzBiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTEyNzEsNiAr
MTI3MSwxMyBAQCB2b2lkIFRlc3RSdW5uZXI6OnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNz
KCkKICAgICBXS0J1bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNzYWdlRm9yVGVzdGluZyhJbmpl
Y3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgp
LCBudWxscHRyLCBudWxscHRyKTsKIH0KIAordm9pZCBUZXN0UnVubmVyOjpzZXRGb3JjZVNlcGFy
YXRlU2VydmljZVdvcmtlclByb2Nlc3MoYm9vbCB2YWx1ZSkKK3sKKyAgICBXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJTZXRGb3JjZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MiKSk7CisgICAgV0tS
ZXRhaW5QdHI8V0tCb29sZWFuUmVmPiBtZXNzYWdlQm9keSA9IGFkb3B0V0soV0tCb29sZWFuQ3Jl
YXRlKHZhbHVlKSk7CisgICAgV0tCdW5kbGVQYWdlUG9zdFN5bmNocm9ub3VzTWVzc2FnZUZvclRl
c3RpbmcoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpLCBtZXNzYWdl
TmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCksIG51bGxwdHIpOworfQorCiBzdGF0aWMgdW5z
aWduZWQgbmV4dFVJU2NyaXB0Q2FsbGJhY2tJRCgpCiB7CiAgICAgc3RhdGljIHVuc2lnbmVkIGNh
bGxiYWNrSUQgPSBGaXJzdFVJU2NyaXB0Q2FsbGJhY2tJRDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5kZXggZjE3MDAxMjk4MzFi
NmY5NDcwNzYyZjAzMGZlY2Q3MDFjNGQzYmEzYi4uZWRjM2EzMmFkNTYyY2ZiYThiMTQwYjliYTdi
NGNmOTI2ODBlMTJjNyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAgLTQ2NSw2ICs0NjUsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIHRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKCk7CiAgICAgdm9pZCB0ZXJtaW5hdGVTZXJ2aWNl
V29ya2VyUHJvY2VzcygpOworICAgIHZvaWQgc2V0Rm9yY2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQ
cm9jZXNzKGJvb2wpOwogCiAgICAgdm9pZCByZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoSlNW
YWx1ZVJlZik7CiAgICAgdm9pZCBjYWxsRGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzQ2Fs
bGJhY2soKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXgg
MGJkNzc2MWJiZmM1NTA0ZWYyMDU5ZDlhMWYzYjQ0NzU3NjA3NGUwYi4uMTU2YTQzNjNiMTM5MTJl
ZmMyZGMwMWE2ZjliOWZjNDVjNTFmNzUwYSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5jcHAKQEAgLTk3MCw2ICs5NzAsOCBAQCBib29sIFRlc3RDb250cm9sbGVyOjpy
ZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zLCBS
ZQogCiAgICAgV0tDb250ZXh0Q2xlYXJDdXJyZW50TW9kaWZpZXJTdGF0ZUZvclRlc3RpbmcoVGVz
dENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmNvbnRleHQoKSk7CiAKKyAgICBXS0NvbnRleHRTZXRG
b3JjZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRv
bigpLmNvbnRleHQoKSwgZmFsc2UpOworCiAgICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gc2hv
dWxkIGFsc28gZW5zdXJlIHRoYXQgdGhlcmUgaXMgb25seSBvbmUgcGFnZSBvcGVuLgogCiAgICAg
Ly8gUmVzZXQgdGhlIEV2ZW50U2VuZGVyIGZvciBlYWNoIHRlc3QuCmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IDJmOGIzMDZlMmM4Yzg3M2ZmZDMxNzk2MWM4
MTJjNWJjODgyYjYzY2QuLjNjZDk5Nzg3MWQ4ZDhmMWM4MGZlMmUzOGJiYTBhN2FhNjIzNDIyZDcg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC0xNjA3LDYg
KzE2MDcsMTMgQEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0SW52b2NhdGlvbjo6ZGlkUmVj
ZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEIKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2Fn
ZU5hbWUsICJTZXRGb3JjZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MiKSkgeworICAgICAg
ICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLQm9vbGVhbkdldFR5cGVJRCgp
KTsKKyAgICAgICAgYXV0byBmb3JjZVNlcnZpY2VXb3JrZXJQcm9jZXNzID0gV0tCb29sZWFuR2V0
VmFsdWUoc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihtZXNzYWdlQm9keSkpOworICAgICAgICBX
S0NvbnRleHRTZXRGb3JjZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MoVGVzdENvbnRyb2xs
ZXI6OnNpbmdsZXRvbigpLmNvbnRleHQoKSwgZm9yY2VTZXJ2aWNlV29ya2VyUHJvY2Vzcyk7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKwogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxU
b1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmln
dXJhdGlvbiIpKSB7CiAgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0g
V0tEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpOwogICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xl
dG9uKCkuc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbihzdGF0aWNfY2FzdDxX
S0RpY3Rpb25hcnlSZWY+KG1lc3NhZ2VCb2R5KSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjE4N2E3NzZkMjg5NzNkMDdh
NzZlOGNmMDlhZmE5ZTJjN2U0Mzk2OC4uY2U3NzRkYTc2YWUwMzEyZWNlZDYzODYyYTYxYWE0NDBh
NGE2ODhhMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTEwLTA0ICB5b3Vlbm4gZmFibGV0
ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXVzZSBleGlzdGluZyB3ZWIgcHJvY2Vz
c2VzIGZvciBydW5uaW5nIHNlcnZpY2Ugd29ya2VycworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMTk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNv
dXJjZXMvcG9zdG1lc3NhZ2UtYWZ0ZXItc3ctcHJvY2Vzcy1jcmFzaC5qczoKKyAgICAgICAgKGFz
eW5jLmRvVGVzdCk6CisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3Vy
Y2VzL3Bvc3RtZXNzYWdlLWFmdGVyLXRlcm1pbmF0ZS5qczoKKyAgICAgICAgKGFzeW5jLmRvVGVz
dCk6CisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3Bvc3Rt
ZXNzYWdlLWFmdGVyLXRlcm1pbmF0aW5nLWh1bmctd29ya2VyLmpzOgorICAgICAgICAoYXN5bmMu
ZG9UZXN0KToKKyAgICAgICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvb25saW5lLmh0dHBz
Lmh0bWw6CisgICAgICAgICogaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vy
LWRpZmZlcmVudC1wcm9jZXNzLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
aHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLWRpZmZlcmVudC1wcm9jZXNz
Lmh0dHBzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9z
ZXJ2aWNlLXdvcmtlci1wcm9jZXNzLXdvcmtlci5qczogQWRkZWQuCisgICAgICAgICogaHR0cC93
cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNhbWUtcHJvY2Vzcy5odHRwcy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2
aWNlLXdvcmtlci1zYW1lLXByb2Nlc3MuaHR0cHMuaHRtbDogQWRkZWQuCisKIDIwMTktMTAtMDMg
IFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVzeW5jIFdQVCBz
aGFkb3cgRE9NIHRlc3RzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtl
cnMvc2VydmljZS9yZXNvdXJjZXMvcG9zdG1lc3NhZ2UtYWZ0ZXItc3ctcHJvY2Vzcy1jcmFzaC5q
cyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9wb3N0
bWVzc2FnZS1hZnRlci1zdy1wcm9jZXNzLWNyYXNoLmpzCmluZGV4IDRmNzIxNjRjYWZkOGNlYzA5
YmQ4YTgyZTc2YmFhZGIyM2U5MDY4ZGUuLmQwODZkYzcyMmI1OTZjZTRiYjgxNDc3Zjk2ZjIwNmYy
NGU0MzlkZDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2
aWNlL3Jlc291cmNlcy9wb3N0bWVzc2FnZS1hZnRlci1zdy1wcm9jZXNzLWNyYXNoLmpzCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9wb3N0bWVz
c2FnZS1hZnRlci1zdy1wcm9jZXNzLWNyYXNoLmpzCkBAIC0zNywxMCArMzcsMjAgQEAgbmF2aWdh
dG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGZ1bmN0aW9uKGV2
ZW50KSB7CiAgICAgZmluaXNoU1dUZXN0KCk7CiB9KTsKIAotbmF2aWdhdG9yLnNlcnZpY2VXb3Jr
ZXIucmVnaXN0ZXIoInJlc291cmNlcy9wb3N0bWVzc2FnZS1hZnRlci1zdy1wcm9jZXNzLWNyYXNo
LXdvcmtlci5qcyIsIHsgfSkudGhlbihmdW5jdGlvbihyZWdpc3RyYXRpb24pIHsKLSAgICB3b3Jr
ZXIgPSByZWdpc3RyYXRpb24uaW5zdGFsbGluZzsKLSAgICBsb2coIiogU2VuZGluZyBTdGF0ZSB0
byBTZXJ2aWNlIFdvcmtlciIpOwotICAgIHdvcmtlci5wb3N0TWVzc2FnZSgiU2V0U3RhdGUiKTsK
LSAgICBsb2coIiogQXNraW5nIFNlcnZpY2UgV29ya2VyIGlmIGl0IHJlY2VpdmVkIHRoZSBzdGF0
ZSIpOwotICAgIHdvcmtlci5wb3N0TWVzc2FnZSgiSGFzU3RhdGUiKTsKLX0pOworYXN5bmMgZnVu
Y3Rpb24gZG9UZXN0KCkKK3sKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAg
dGVzdFJ1bm5lci5zZXRGb3JjZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3ModHJ1ZSk7Cisg
ICAgICAgIGF3YWl0IGZldGNoKCIiKS50aGVuKCgpID0+IHsgfSwgKCkgPT4geyB9KTsKKyAgICB9
CisKKyAgICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcigicmVzb3VyY2VzL3Bvc3Rt
ZXNzYWdlLWFmdGVyLXN3LXByb2Nlc3MtY3Jhc2gtd29ya2VyLmpzIiwgeyB9KS50aGVuKGZ1bmN0
aW9uKHJlZ2lzdHJhdGlvbikgeworICAgICAgICB3b3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFs
bGluZzsKKyAgICAgICAgbG9nKCIqIFNlbmRpbmcgU3RhdGUgdG8gU2VydmljZSBXb3JrZXIiKTsK
KyAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKCJTZXRTdGF0ZSIpOworICAgICAgICBsb2coIiog
QXNraW5nIFNlcnZpY2UgV29ya2VyIGlmIGl0IHJlY2VpdmVkIHRoZSBzdGF0ZSIpOworICAgICAg
ICB3b3JrZXIucG9zdE1lc3NhZ2UoIkhhc1N0YXRlIik7CisgICAgfSk7Cit9CisKK2RvVGVzdCgp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVz
b3VyY2VzL3Bvc3RtZXNzYWdlLWFmdGVyLXRlcm1pbmF0ZS5qcyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9wb3N0bWVzc2FnZS1hZnRlci10ZXJtaW5h
dGUuanMKaW5kZXggOWQ1Zjk3NWVmNmNlOGE3ZDBhMDczZTk5ZTIzYzI2MmI4YmNlNTA1Mi4uNTdm
MTBmOTgzZWNkYTFlNThlYzY4ZTc3Njc2YWI3Njg1NjY5MGQ0MiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3Bvc3RtZXNzYWdlLWFm
dGVyLXRlcm1pbmF0ZS5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2Vy
dmljZS9yZXNvdXJjZXMvcG9zdG1lc3NhZ2UtYWZ0ZXItdGVybWluYXRlLmpzCkBAIC0xMCw2ICsx
MCwxNSBAQCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdl
IiwgZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAgZmluaXNoU1dUZXN0KCk7CiB9KTsKIAotbmF2
aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoInJlc291cmNlcy9wb3N0bWVzc2FnZS1lY2hv
LXdvcmtlci5qcyIsIHsgfSkudGhlbihmdW5jdGlvbihyZWdpc3RyYXRpb24pIHsKK2FzeW5jIGZ1
bmN0aW9uIGRvVGVzdCgpCit7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAg
IHRlc3RSdW5uZXIuc2V0Rm9yY2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKHRydWUpOwor
ICAgICAgICBhd2FpdCBmZXRjaCgiIikudGhlbigoKSA9PiB7IH0sICgpID0+IHsgfSk7CisgICAg
fQorIAorICAgIGNvbnN0IHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29y
a2VyLnJlZ2lzdGVyKCJyZXNvdXJjZXMvcG9zdG1lc3NhZ2UtZWNoby13b3JrZXIuanMiLCB7IH0p
OwogICAgIHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nLnBvc3RNZXNzYWdlKCJNZXNzYWdlIDEiKTsK
LX0pOworfQorCitkb1Rlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9wb3N0bWVzc2FnZS1hZnRlci10ZXJtaW5hdGluZy1o
dW5nLXdvcmtlci5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jl
c291cmNlcy9wb3N0bWVzc2FnZS1hZnRlci10ZXJtaW5hdGluZy1odW5nLXdvcmtlci5qcwppbmRl
eCBlMGYyZThmZTkzNmIxM2NlNGUzZjA1NGE1OGZlZDQ0YjA2NDJiMzU3Li45NDhlOTA5MTJmODhm
ZWZmMTk2MTMwYWRhZDU4MGM0YWYzM2I2YWFlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvcG9zdG1lc3NhZ2UtYWZ0ZXItdGVybWlu
YXRpbmctaHVuZy13b3JrZXIuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJz
L3NlcnZpY2UvcmVzb3VyY2VzL3Bvc3RtZXNzYWdlLWFmdGVyLXRlcm1pbmF0aW5nLWh1bmctd29y
a2VyLmpzCkBAIC0yMyw3ICsyMywxNyBAQCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5hZGRFdmVu
dExpc3RlbmVyKCJtZXNzYWdlIiwgZnVuY3Rpb24oZXZlbnQpIHsKICAgICB9CiB9KTsKIAotbmF2
aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoInJlc291cmNlcy9wb3N0bWVzc2FnZS1lY2hv
LXdvcmtlci1tYXloYW5nLmpzIiwgeyB9KS50aGVuKGZ1bmN0aW9uKHJlZ2lzdHJhdGlvbikgewor
YXN5bmMgZnVuY3Rpb24gZG9UZXN0KCkKK3sKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICAgICAgdGVzdFJ1bm5lci5zZXRGb3JjZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3Mo
dHJ1ZSk7CisgICAgICAgIGF3YWl0IGZldGNoKCIiKS50aGVuKCgpID0+IHsgfSwgKCkgPT4geyB9
KTsKKyAgICB9CisgCisgICAgY29uc3QgcmVnaXN0cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNl
cnZpY2VXb3JrZXIucmVnaXN0ZXIoInJlc291cmNlcy9wb3N0bWVzc2FnZS1lY2hvLXdvcmtlci1t
YXloYW5nLmpzIiwgeyB9KTsKICAgICB3b3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFsbGluZzsK
ICAgICB3b3JrZXIucG9zdE1lc3NhZ2UoIkhBTkciKTsKLX0pOworfQorCitkb1Rlc3QoKTsKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL29ubGluZS5o
dHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL29ubGluZS5o
dHRwcy5odG1sCmluZGV4IGZhNThkN2RmMTc0YWYzODFkYTQyMGM1MmQyODliMjUyZGRjMWI1NGEu
LmQyODgxMjUxZGNjZjA0OTdmYTY3ZDg2ODI4MWNkNTg4N2NlMDA3ODMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9vbmxpbmUuaHR0cHMuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvb25saW5lLmh0dHBzLmh0bWwK
QEAgLTksNiArOSwxMSBAQCB2YXIgc2NvcGUgPSAiIjsKIHZhciBhY3RpdmVXb3JrZXI7CiAKIHBy
b21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikg
eworICAgICAgICB0ZXN0UnVubmVyLnNldEZvcmNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2Vz
cyh0cnVlKTsKKyAgICAgICAgYXdhaXQgZmV0Y2goIiIpLnRoZW4oKCkgPT4geyB9LCAoKSA9PiB7
IH0pOworICAgIH0KKwogICAgIHZhciByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2Vy
dmljZVdvcmtlci5yZWdpc3Rlcigib25saW5lLXdvcmtlci5qcyIsIHsgc2NvcGUgOiBzY29wZSB9
KTsKICAgICBhY3RpdmVXb3JrZXIgPSByZWdpc3RyYXRpb24uYWN0aXZlOwogICAgIGlmIChhY3Rp
dmVXb3JrZXIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtl
cnMvc2VydmljZS13b3JrZXItZGlmZmVyZW50LXByb2Nlc3MuaHR0cHMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLWRpZmZl
cmVudC1wcm9jZXNzLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMTlhNzg4NmJmOGY2
ZTRjMTM3Nzg4NjI3Mjk2ZGJmNWE0NzM0OWRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLWRpZmZlcmVudC1wcm9j
ZXNzLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBTZXR1cCB3b3Jr
ZXIgCitQQVNTIFRlc3QgdGhhdCBzZXJ2aWNlIHdvcmtlciBpcyBpbiBhIGRpZmZlcmVudCBwcm9j
ZXNzIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMv
c2VydmljZS13b3JrZXItZGlmZmVyZW50LXByb2Nlc3MuaHR0cHMuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1kaWZmZXJlbnQtcHJvY2Vz
cy5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYwYWY1ODEzMGFkMzJkY2VhMDRmMzdkNDQ4OWQ3YTIz
M2ViNWZlODkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNl
LXdvcmtlcnMvc2VydmljZS13b3JrZXItZGlmZmVyZW50LXByb2Nlc3MuaHR0cHMuaHRtbApAQCAt
MCwwICsxLDQwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxzY3JpcHQ+Cit2YXIgYWN0aXZlV29ya2VyOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3Qp
ID0+IHsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5z
ZXRGb3JjZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3ModHJ1ZSk7CisgICAgICAgIGF3YWl0
IGZldGNoKCIiKS50aGVuKCgpID0+IHsgfSwgKCkgPT4geyB9KTsKKyAgICB9CisKKyAgICB2YXIg
cmVnaXN0cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoInNl
cnZpY2Utd29ya2VyLXByb2Nlc3Mtd29ya2VyLmpzIiwgeyBzY29wZSA6ICIiIH0pOworICAgIGFj
dGl2ZVdvcmtlciA9IHJlZ2lzdHJhdGlvbi5hY3RpdmU7CisgICAgaWYgKGFjdGl2ZVdvcmtlcikK
KyAgICAgICAgcmV0dXJuOworICAgIGFjdGl2ZVdvcmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxs
aW5nOworICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgYWN0aXZl
V29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoJ3N0YXRlY2hhbmdlJywgKCkgPT4geworICAgICAgICAg
ICAgaWYgKGFjdGl2ZVdvcmtlci5zdGF0ZSA9PT0gImFjdGl2YXRlZCIpCisgICAgICAgICAgICAg
ICAgcmVzb2x2ZSgpOworICAgICAgICB9KTsKKyAgICB9KTsKK30sICJTZXR1cCB3b3JrZXIiKTsK
KworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgbGV0IHJlc29sdmU7CisgICAg
Y29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKHIgPT4gcmVzb2x2ZSA9IHIpOworICAgIG5hdmln
YXRvci5zZXJ2aWNlV29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZSkgPT4gcmVz
b2x2ZShlLmRhdGEpLCB7b25jZTogdHJ1ZX0pOyAKKyAgICBhY3RpdmVXb3JrZXIucG9zdE1lc3Nh
Z2UoIlBJRCIpOworICAgIGFzc2VydF9ub3RfZXF1YWxzKGF3YWl0IHByb21pc2UsIHdpbmRvdy5p
bnRlcm5hbHMucHJvY2Vzc0lkKTsKK30sICJUZXN0IHRoYXQgc2VydmljZSB3b3JrZXIgaXMgaW4g
YSBkaWZmZXJlbnQgcHJvY2VzcyIpOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdv
cmtlci1wcm9jZXNzLXdvcmtlci5qcyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29y
a2Vycy9zZXJ2aWNlLXdvcmtlci1wcm9jZXNzLXdvcmtlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTI5YTM0
ODMzMDg5OTkyYmJlZWM0NDk1MWNlMzhiZTY0ZmI3MTg1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXByb2Nlc3Mt
d29ya2VyLmpzCkBAIC0wLDAgKzEsMyBAQAorc2VsZi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdl
IiwgKGV2ZW50KSA9PiB7CisgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKHNlbGYuaW50ZXJu
YWxzID8gaW50ZXJuYWxzLnByb2Nlc3NJZCA6ICJuZWVkcyBpbnRlcm5hbCBBUEkiKTsKK30pOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Ut
d29ya2VyLXNhbWUtcHJvY2Vzcy5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc2FtZS1wcm9jZXNzLmh0dHBzLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xM2E5YTM1YjhhNjVkOTYwNDM3OWExYzQyNDY3YmM3NWUw
YjMyM2FkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13
b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNhbWUtcHJvY2Vzcy5odHRwcy1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw0IEBACisKK1BBU1MgU2V0dXAgd29ya2VyIAorUEFTUyBUZXN0IHRoYXQgc2Vydmlj
ZSB3b3JrZXIgaXMgaW4gdGhlIHNhbWUgcHJvY2VzcyAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNhbWUtcHJvY2Vzcy5o
dHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Ut
d29ya2VyLXNhbWUtcHJvY2Vzcy5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBkYTg5ZDdhZmY2NWVh
YWZmOTkzNjJiNWU0Nzc4NjIxYjBiZjM1YWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc2FtZS1wcm9jZXNzLmh0
dHBzLmh0bWwKQEAgLTAsMCArMSwzNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8c2NyaXB0PgordmFyIGFjdGl2ZVdvcmtlcjsKKworcHJvbWlzZV90ZXN0
KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgdmFyIHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5hdmlnYXRv
ci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCJzZXJ2aWNlLXdvcmtlci1wcm9jZXNzLXdvcmtlci5q
cyIsIHsgc2NvcGUgOiAiIiB9KTsKKyAgICBhY3RpdmVXb3JrZXIgPSByZWdpc3RyYXRpb24uYWN0
aXZlOworICAgIGlmIChhY3RpdmVXb3JrZXIpCisgICAgICAgIHJldHVybjsKKyAgICBhY3RpdmVX
b3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFsbGluZzsKKyAgICByZXR1cm4gbmV3IFByb21pc2Uo
cmVzb2x2ZSA9PiB7CisgICAgICAgIGFjdGl2ZVdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdzdGF0
ZWNoYW5nZScsICgpID0+IHsKKyAgICAgICAgICAgIGlmIChhY3RpdmVXb3JrZXIuc3RhdGUgPT09
ICJhY3RpdmF0ZWQiKQorICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgfSk7Cisg
ICAgfSk7Cit9LCAiU2V0dXAgd29ya2VyIik7CisKK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkg
PT4geworICAgIGxldCByZXNvbHZlOworICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZShy
ID0+IHJlc29sdmUgPSByKTsKKyAgICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5hZGRFdmVudExp
c3RlbmVyKCJtZXNzYWdlIiwgKGUpID0+IHJlc29sdmUoZS5kYXRhKSwge29uY2U6IHRydWV9KTsg
CisgICAgYWN0aXZlV29ya2VyLnBvc3RNZXNzYWdlKCJQSUQiKTsKKyAgICBhc3NlcnRfZXF1YWxz
KGF3YWl0IHByb21pc2UsIHdpbmRvdy5pbnRlcm5hbHMucHJvY2Vzc0lkKTsKK30sICJUZXN0IHRo
YXQgc2VydmljZSB3b3JrZXIgaXMgaW4gdGhlIHNhbWUgcHJvY2VzcyIpOworCis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380216</attachid>
            <date>2019-10-04 05:39:29 -0700</date>
            <delta_ts>2019-10-04 07:35:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202195-20191004143927.patch</filename>
            <type>text/plain</type>
            <size>67985</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNzA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTc1M2JmMzkzOTE5YjQ4
Yjc4ZDc5OWNkMjJmMDE3MmVhNDQzMzViZC4uNmNjY2NkMjU4MmQ4ZDJjMzNlMGEyMjJhMTJjMDFi
ZWRjNTVmMjg0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE5LTEwLTA0ICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXVzZSBleGlzdGluZyB3
ZWIgcHJvY2Vzc2VzIGZvciBydW5uaW5nIHNlcnZpY2Ugd29ya2VycworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMTk1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvd3B0L3NlcnZpY2Ut
d29ya2Vycy9zZXJ2aWNlLXdvcmtlci1kaWZmZXJlbnQtcHJvY2Vzcy5odHRwcy5odG1sIGFuZCBB
UEkgdGVzdHMuCisKKyAgICAgICAgVXBkYXRlIGltcGxlbWVudGF0aW9uIHRvIGJlIGFibGUgdG8g
cnVuIHNlcnZpY2Ugd29ya2VycyBqb2ludGx5IHdpdGggcGFnZS4KKyAgICAgICAgQWRkIGludGVy
bmFscyBBUEkgdG8gZ2V0IHRoZSBwcm9jZXNzIElELgorICAgICAgICBUaGlzIGFsbG93cyB3cml0
aW5nIHRlc3RzIHRvIGNoZWNrIHdoZXRoZXIgYSBzZXJ2aWNlIHdvcmtlciBpcyBpbiB0aGUgc2Ft
ZSBwcm9jZXNzIGFzIGl0cyBjbGllbnQgb3Igbm90LgorCisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpwcm9jZXNzSWQgY29uc3Qp
OgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuaWRsOgorICAgICAgICAqIHRlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySW50ZXJuYWxzOjpwcm9jZXNzSWQgY29u
c3QpOgorICAgICAgICAqIHRlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5oOgorICAgICAg
ICAqIHRlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGw6CisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudHMpOgorICAg
ICAgICBEbyBub3QgcmVnaXN0ZXIgZHVtbXkgZG9jdW1lbnRzIHdob3NlIHNvbGUgcHVycG9zZSBp
cyB0byBkbyBsb2FkaW5nIGZvciBzZXJ2aWNlIHdvcmtlcnMuCisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
V0NvbnRleHRNYW5hZ2VyOjpzZXRDb25uZWN0aW9uKToKKyAgICAgICAgTm93IHRoYXQgY29ubmVj
dGlvbnMgbWlnaHQgYmUgY3JlYXRlZCBtb3JlIHRoYW4gb25jZSBvbiBhIGdpdmVuIHByb2Nlc3Ms
CisgICAgICAgIE1ha2Ugc3VyZSB0aGF0IHRoZSByZXBsYWNlZCBjb25uZWN0aW9uIGlzIHN0b3Bw
ZWQgb3IgdGhlcmUgaXMgbm8gcmVwbGFjZWQgY29ubmVjdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6
OlNXQ29udGV4dE1hbmFnZXI6OnN0b3BBbGxTZXJ2aWNlV29ya2Vycyk6CisgICAgICAgIEFkZCBy
b3V0aW5lIHRvIHN0b3AgYWxsIHNlcnZpY2Ugd29ya2VycyBydW5uaW5nIGluIGEgZ2l2ZW4gd2Vi
IHByb2Nlc3MuCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFu
YWdlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1dDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6
aXNTdG9wcGVkIGNvbnN0KToKKwogMjAxOS0xMC0wMyAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBh
cHBsZS5jb20+CiAKICAgICAgICAgW0NTUyBTaGFkb3cgUGFydHNdIENvcnJlY3QgaW50ZXJhY3Rp
b24gd2l0aCBvdGhlciBwc2V1ZG8gZWxlbWVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYTUxNzBlYTMxNTg3ZmU5
YTllMTIzNWFiZGQxMzUxZTFkMmUyYzhlNy4uNmZlNzU4NWIyYzY5ZGFjNzJmMDFjYjQzZmEwYTJh
OTQ5OGJjODNlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5NCBAQAorMjAxOS0xMC0wNCAgeW91ZW5u
IGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV1c2UgZXhpc3Rpbmcgd2Vi
IHByb2Nlc3NlcyBmb3IgcnVubmluZyBzZXJ2aWNlIHdvcmtlcnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjE5NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gbmV0d29yayBwcm9jZXNzIGFza3Mg
Zm9yIGEgc2VydmljZSB3b3JrZXIgY29udGV4dCBjb25uZWN0aW9uLAorICAgICAgICB3ZSBub3cg
aXRlcmF0ZSB0aHJvdWdoIGV4aXN0aW5nIHdlYiBwcm9jZXNzZXMgYW5kIHJldXNlIG9uZSBpZiBi
b3RoIHNlc3Npb24KKyAgICAgICAgYW5kIHJlZ2lzdHJhYmxlIGRvbWFpbiBtYXRjaC4KKyAgICAg
ICAgV2UgdGhlbiBhc2sgdGhlIHdlYiBwcm9jZXNzIHRvIGNyZWF0ZSBhIGNvbnRleHQgY29ubmVj
dGlvbiB0byB0aGUgbmV0d29yayBwcm9jZXNzLgorCisgICAgICAgIFdoZW4gbmV0d29yayBwcm9j
ZXNzIG5vIGxvbmdlciBuZWVkcyB0aGUgY29ubmVjdGlvbiwgaXQgaW5zdHJ1Y3RzIHRoZSBVSVBy
b2Nlc3MKKyAgICAgICAgdGhhdCB3aWxsIHVwZGF0ZSBpdHMgc3RhdGUgc28gdGhhdCB0aGUgd2Vi
IHByb2Nlc3MgaXMgbm8gbG9uZ2VyIGNvbnNpZGVyZWQgYXMgcnVubmluZworICAgICAgICBzZXJ2
aWNlIHdvcmtlcnMuCisgICAgICAgIFVJUHJvY2VzcyB0aGVuIGluc3RydWN0cyB0aGUgd2ViIHBy
b2Nlc3MgdG8gc3RvcCBpdHMgc2VydmljZSB3b3JrZXJzIGFuZCBpdHMgY29ubmVjdGlvbi4KKwor
ICAgICAgICBMYXRlciBvbiwgdGhlIHNhbWUgd2ViIHByb2Nlc3MgbWF5IGJlIHJldXNlZCBmb3Ig
cnVubmluZyBzZXJ2aWNlIHdvcmtlcnMgaW4gd2hpY2ggY2FzZQorICAgICAgICBhIG5ldyBjb25u
ZWN0aW9uIHdpbGwgcmVwbGFjZSB0aGUgc3RvcHBlZCBjb25uZWN0aW9uLgorCisgICAgICAgIFNp
bWlsYXJseSwgb24gbmV0d29yayBwcm9jZXNzIGNyYXNoLCBhbGwgd2ViIHByb2Nlc3MgcnVubmlu
ZyBzZXJ2aWNlIHdvcmtlcnMgYXJlIHVwZGF0ZWQKKyAgICAgICAgc28gdGhhdCB0aGV5IGFyZSBu
byBsb25nZXIgY29uc2lkZXJlZCBhcyBydW5uaW5nIHNlcnZpY2Ugd29ya2Vycy4KKworICAgICAg
ICBBZGQgYSBib29sZWFuIHN0YXRlIHRvIFdlYlByb2Nlc3NQb29sIHRvIGNvbnRyb2wgd2hldGhl
ciBjcmVhdGluZyBhIHNlcGFyYXRlIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MuCisKKyAgICAgICAg
V2Ugbm8gbG9uZ2VyIHRlcm1pbmF0ZSB0aGUgd2ViIHByb2Nlc3Mgd2hlbiBzdG9wcGluZyBzZXJ2
aWNlIHdvcmtlcnMgb3Igd2hlbiBuZXR3b3JrIHByb2Nlc3MgY3Jhc2guCisgICAgICAgIFdlIHVz
ZSB0aGUgZW5hYmxlVGVybWluYXRpb24vZGlzYWJsZVRlcm1pbmF0aW9uIGF0IGNvbnRleHQgY29u
bmVjdGlvbiBzdGFydC9zdG9wIHRpbWUuCisgICAgICAgIFdlIGNvbnNpZGVyIHRoYXQgdGhlIGNv
bnRleHQgY29ubmVjdGlvbiBpcyBzaW1pbGFyIHRvIHJ1bm5pbmcgYSBwYWdlIGluIHRoZSBwcm9j
ZXNzLgorCisgICAgICAgIE5ldHdvcmtQcm9jZXNzIGlzIGhhbmRsaW5nIHRoZSBtYW5hZ2VtZW50
IG9mIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3NlcyBieSBjaGVja2luZyBmb3IgY2xpZW50cy4KKyAg
ICAgICAgSW4gY2FzZSB0aGVyZSBpcyBubyBjbGllbnQsIHRoZSBwcm9jZXNzIGlzIHRlcm1pbmF0
ZWQuCisgICAgICAgIFRoaXMgcmVtb3ZlcyB0aGUgbmVlZCBmb3IgdGhlIFdlYlByb2Nlc3NQb29s
IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgdGltZXIuCisgICAgICAgIFRoaXMgcGF0Y2ggcmVtb3Zl
cyB0aGlzIHRpbWVyLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjbG9zZVNXQ29u
dGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246On5XZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVyRGVz
dGluYXRpb25JRCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6Y29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnNldFRocm90dGxlU3RhdGUpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6Cisg
ICAgICAgIChXS0NvbnRleHRTZXRGb3JjZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tOgorICAgICAgICAoLVtXS1Byb2Nl
c3NQb29sIF9zZXRGb3JjZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3M6XSk6CisgICAgICAg
ICgtW1dLUHJvY2Vzc1Bvb2wgX3dlYlBhZ2VDb250ZW50UHJvY2Vzc0NvdW50XSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp3b3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2Vy
TmVlZGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNz
YWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpy
ZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3Nlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpjcmVhdGVXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OnRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OmNsZWFyV2ViUHJvY2Vzc0lzUGxheWluZ0F1ZGlibGVNZWRpYSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjpzZXRGb3JjZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3Mp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJv
eHk6OmNyZWF0ZUZvclNlcnZpY2VXb3JrZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Byb3h5OjptYXliZVNodXREb3duKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvck1haW5GcmFtZSk6CisgICAgICAgIElmIHRoZSBV
UkwgaXMgdXNpbmcgdGhlIGFib3V0IHByb3RvY29sLCB3ZSBkbyBub3Qgc2V0IHRoZSByZWdpc3Ry
YWJsZSBkb21haW4uCisgICAgICAgIFRoaXMgYWxsb3dzIHByb2Nlc3NlcyBkb2luZyBhYm91dDpi
bGFuayBuYXZpZ2F0aW9uIGJlZm9yZSBnb2luZyB0byB0aGUgcmVhbCBwYWdlIHRvIGhhdmUgYSBn
b29kIHJlZ2lzdHJhYmxlIGRvbWFpbi4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
OjpkaXNhYmxlU2VydmljZVdvcmtlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJv
eHk6OmVuYWJsZVNlcnZpY2VXb3JrZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6aXNNYXRjaGluZ1Jl
Z2lzdHJhYmxlRG9tYWluIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjptX3VzZXJB
Z2VudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp0
ZXJtaW5hdGVXb3JrZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6c3luY1Rlcm1pbmF0ZVdvcmtlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzdG9wKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6bmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uQ2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzczo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50cyk6CisKIDIwMTktMTAtMDMg
IENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtH
VEtdIFdlYkF1dG9tYXRpb246IG1ha2Ugc2V0V2luZG93UmVjdCBzeW5jaHJvbm91cwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDU4NDIwNmY1MTY5Y2M5ZDQxMjE2MGYwYzEz
YjMyZmY5ZTI2ODc0YWQuLjRjMmY3MDBlNmI2ZGE2MjNjOGJlMDMzZDEyNTA0NjY5NWQ1MDJmNzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTE5Miw2ICsxOTIsNyBAQAog
I2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlQcmVzc3VyZUhh
bmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgorI2luY2x1ZGUgPHd0Zi9Q
cm9jZXNzSUQuaD4KICNpbmNsdWRlIDx3dGYvVVJMSGVscGVycy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0
ZU51bWJlcnMuaD4KQEAgLTUyMzMsNCArNTIzNCw5IEBAIHZvaWQgSW50ZXJuYWxzOjphZGRQcmVm
ZXRjaExvYWRFdmVudExpc3RlbmVyKEhUTUxMaW5rRWxlbWVudCYgbGluaywgUmVmUHRyPEV2ZW50
CiAgICAgfQogfQogCitpbnQgSW50ZXJuYWxzOjpwcm9jZXNzSWQoKSBjb25zdAoreworICAgIHJl
dHVybiBnZXRDdXJyZW50UHJvY2Vzc0lEKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDU4NzBkZTQ2MzIyMGZlOTgyOGVmNGJi
MTc2YjZlMGY5NzIzMTBlODAuLjk0MDJmY2MxZDdjODE1Mjg0YzA4ZjBlNjEyNzgzYjlhOTkxMDc2
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtODgyLDYgKzg4Miw4IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgYWRkUHJlZmV0Y2hMb2FkRXZlbnRMaXN0ZW5lcihIVE1MTGlua0Vs
ZW1lbnQmLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJik7CiAKKyAgICBpbnQgcHJvY2Vzc0lkKCkg
Y29uc3Q7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgSW50ZXJuYWxzKERvY3VtZW50Jik7CiAg
ICAgRG9jdW1lbnQqIGNvbnRleHREb2N1bWVudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaWRsCmluZGV4IDQ2OGVmMjMxZDc0ZTE5ODY1YzA0OTQzYjI3YzI2NGM2MTZlYWZi
OWEuLjY4MTkwYzk1YzkxODdhZmNlZDQ0ODI0OTEwNTZkM2U1YzY0OTU1YmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTcyMyw2ICs3MjMsNyBAQCBlbnVtIENvbXBvc2l0
aW5nUG9saWN5IHsKIAogICAgIGJvb2xlYW4gaXNBbnlXb3JrbGV0R2xvYmFsU2NvcGVBbGl2ZSgp
OwogCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgcHJvY2Vzc0lkOwogICAgIERPTVN0cmlu
ZyBzZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcihEb2N1bWVudCBkb2N1bWVudCk7CiAgICAg
UHJvbWlzZTx2b2lkPiBzdG9yZVJlZ2lzdHJhdGlvbnNPbkRpc2soKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5jcHAKaW5kZXggNTU0NDU2
MTVlMGUxZTgxZWNhMTRiODE2YzNlOGU0OTFiNzM3YjNmNC4uMGZmODE2YjdiOGIwN2FkODc3ZDU4
MzEzODYwYmMzNGZlZGQ4NmFkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9T
ZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1Nl
cnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRmV0
Y2hFdmVudC5oIgogI2luY2x1ZGUgIkpTRmV0Y2hSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNXQ29u
dGV4dE1hbmFnZXIuaCIKKyNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtMTAyLDYgKzEwMywxMSBAQCBib29sIFNlcnZpY2VXb3JrZXJJbnRlcm5h
bHM6OmlzVGhyb3R0bGVhYmxlKCkgY29uc3QKICAgICByZXR1cm4gY29ubmVjdGlvbiA/IGNvbm5l
Y3Rpb24tPmlzVGhyb3R0bGVhYmxlKCkgOiB0cnVlOwogfQogCitpbnQgU2VydmljZVdvcmtlcklu
dGVybmFsczo6cHJvY2Vzc0lkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZ2V0Q3VycmVudFByb2Nl
c3NJRCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaAppbmRleCA4OTM5NTc0
NGI5ODdkMjM2NDM0YmY1MTJjYzcxMzM4NzI3YmJjZjYxLi44OTk5ZjQxZWJmZWNlM2FlOWViZmZj
ODVkMDQ4YTcyY2MzYWQzMDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1Nl
cnZpY2VXb3JrZXJJbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZp
Y2VXb3JrZXJJbnRlcm5hbHMuaApAQCAtNTMsNiArNTMsOCBAQCBwdWJsaWM6CiAKICAgICBib29s
IGlzVGhyb3R0bGVhYmxlKCkgY29uc3Q7CiAKKyAgICBpbnQgcHJvY2Vzc0lkKCkgY29uc3Q7CisK
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgU2VydmljZVdvcmtlckludGVybmFscyhTZXJ2aWNlV29y
a2VySWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2Vy
dmljZVdvcmtlckludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VX
b3JrZXJJbnRlcm5hbHMuaWRsCmluZGV4IDUzNWRkODA1Zjg4YzM2MWYyYjBmNGQ2NmVjMGM2MDNl
ODk2YmYzY2YuLjY0ZGIwYzRmZDhlNDc2NjdlZjE5NzI4YzdlYzE3NmY2MWYyMzdjNTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlkbApA
QCAtMzgsNCArMzgsNiBAQAogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBwcm9j
ZXNzTmFtZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBpc1Rocm90dGxlYWJsZTsK
KworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIHByb2Nlc3NJZDsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclByb3ZpZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUHJvdmlkZXIu
Y3BwCmluZGV4IGVlZDI2NmQ1NmI5N2U5MWJkN2M5NDgwY2I1YzIzMzM1ZDhmMmUzY2IuLjU5YjMz
MjU1MzY2MTExZDIwZWRkNDAzOWJkNTQ3N2NkZmRlZDVlZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwCkBA
IC0yOSw2ICsyOSw5IEBACiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgi
CisjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJTV0NsaWVudENvbm5l
Y3Rpb24uaCIKICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgogCkBAIC02NCw2ICs2Nyw4IEBA
IHZvaWQgU2VydmljZVdvcmtlclByb3ZpZGVyOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRz
KCkKIHsKICAgICBzZXRNYXlIYXZlUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJzKCk7CiAgICAgZm9y
IChhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMoKSkgeworICAgICAgICBp
ZiAoIWRvY3VtZW50LT5wYWdlKCkgfHwgZG9jdW1lbnQtPnBhZ2UoKS0+bWFpbkZyYW1lKCkubG9h
ZGVyKCkuY2xpZW50KCkuaXNTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQoKSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoU2NoZW1lUmVnaXN0cnk6OmNhblNlcnZpY2VX
b3JrZXJzSGFuZGxlVVJMU2NoZW1lKGRvY3VtZW50LT51cmwoKS5wcm90b2NvbCgpLnRvU3RyaW5n
V2l0aG91dENvcHlpbmcoKSkpCiAgICAgICAgICAgICBkb2N1bWVudC0+c2V0U2VydmljZVdvcmtl
ckNvbm5lY3Rpb24oJnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKCkpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0
TWFuYWdlci5jcHAKaW5kZXggNzc0ZjM4NWYxOGFiYmE4MTI4OGI3OTE0YWM5YzkxZWIyNTE0NGYz
NS4uYWVkMTNkNzMwZTY5MmM5MDcxM2M1ZjlkMDQ5ZDIwMjQ5ODcyZDJkOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0
TWFuYWdlci5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgU1dDb250ZXh0TWFuYWdlciYgU1dDb250ZXh0
TWFuYWdlcjo6c2luZ2xldG9uKCkKIAogdm9pZCBTV0NvbnRleHRNYW5hZ2VyOjpzZXRDb25uZWN0
aW9uKHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCiB7Ci0gICAgQVNT
RVJUKCFtX2Nvbm5lY3Rpb24pOworICAgIEFTU0VSVCghbV9jb25uZWN0aW9uIHx8IG1fY29ubmVj
dGlvbi0+aXNTdG9wcGVkKCkpOwogICAgIG1fY29ubmVjdGlvbiA9IFdURk1vdmUoY29ubmVjdGlv
bik7CiB9CiAKQEAgLTE3Nyw2ICsxNzcsMTYgQEAgU1dDb250ZXh0TWFuYWdlcjo6U2VydmljZVdv
cmtlclRlcm1pbmF0aW9uUmVxdWVzdDo6U2VydmljZVdvcmtlclRlcm1pbmF0aW9uUmVxdWUKICAg
ICBtX3RpbWVvdXRUaW1lci5zdGFydE9uZVNob3QodGltZW91dCk7CiB9CiAKK3ZvaWQgU1dDb250
ZXh0TWFuYWdlcjo6c3RvcEFsbFNlcnZpY2VXb3JrZXJzKCkKK3sKKyAgICBhdXRvIHNlcnZpY2VX
b3JrZXJzID0gV1RGTW92ZShtX3dvcmtlck1hcCk7CisgICAgZm9yIChhdXRvJiBzZXJ2aWNlV29y
a2VyIDogc2VydmljZVdvcmtlcnMudmFsdWVzKCkpIHsKKyAgICAgICAgc2VydmljZVdvcmtlci0+
c2V0QXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCgpOworICAgICAgICBtX3BlbmRpbmdTZXJ2aWNl
V29ya2VyVGVybWluYXRpb25SZXF1ZXN0cy5hZGQoc2VydmljZVdvcmtlci0+aWRlbnRpZmllcigp
LCBtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJUZXJtaW5hdGlvblJlcXVlc3Q+KCp0aGlzLCBzZXJ2
aWNlV29ya2VyLT5pZGVudGlmaWVyKCksIHdvcmtlclRlcm1pbmF0aW9uVGltZW91dCkpOworICAg
ICAgICBzZXJ2aWNlV29ya2VyLT50aHJlYWQoKS5zdG9wKFtdIHsgfSk7CisgICAgfQorfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCmluZGV4IDYy
OGMzZjM4OTJiZWVlMjQyYzJlZjdmZjllZTIyMTYwZmRkYzIxMzUuLmIwNDJhZGI4MWQ0NzdiNTgw
ZTBmOWYxZmExZGQ4Y2RiNTllZjFkZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKQEAgLTY1LDYgKzY1
LDExIEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGNsYWltKFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpID0gMDsKIAogICAgICAgICB2
aXJ0dWFsIGJvb2wgaXNUaHJvdHRsZWFibGUoKSBjb25zdCA9IDA7CisKKyAgICAgICAgYm9vbCBp
c1N0b3BwZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU3RvcHBlZDsgfQorCisgICAgcHJvdGVjdGVk
OgorICAgICAgICBib29sIG1faXNTdG9wcGVkIHsgZmFsc2UgfTsKICAgICB9OwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRDb25uZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9u
PiYmKTsKQEAgLTg3LDYgKzkyLDExIEBAIHB1YmxpYzoKIAogICAgIFNlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eSogd29ya2VyQnlJRChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKSB7
IHJldHVybiBtX3dvcmtlck1hcC5nZXQoaWRlbnRpZmllcik7IH0KIAorICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc3RvcEFsbFNlcnZpY2VXb3JrZXJzKCk7CisKKyAgICBzdGF0aWMgY29uc3RleHBy
IFNlY29uZHMgd29ya2VyVGVybWluYXRpb25UaW1lb3V0IHsgMTBfcyB9OworICAgIHN0YXRpYyBj
b25zdGV4cHIgU2Vjb25kcyBzeW5jV29ya2VyVGVybWluYXRpb25UaW1lb3V0IHsgMTAwX21zIH07
IC8vIE9ubHkgdXNlZCBieSBsYXlvdXQgdGVzdHMuCisKIHByaXZhdGU6CiAgICAgU1dDb250ZXh0
TWFuYWdlcigpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCAx
MjhjODljNGRjYzQ1NDAxMmJiMGVmYzMzMmRjODVkMGUzYTM0OGMyLi5kNWIyYTUzOTNjOTQ2MTA4
MmM1OTQ2YjExY2VlYTZhMGExOWY1MDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApA
QCAtMjE4LDE5ICsyMTgsMTUgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW8KICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVz
c2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpKSB7Ci0gICAgICAgIEFTU0VSVChtX3N3Q29udGV4dENvbm5lY3Rpb24pOwotICAgICAgICBp
ZiAobV9zd0NvbnRleHRDb25uZWN0aW9uKSB7CisgICAgICAgIGlmIChtX3N3Q29udGV4dENvbm5l
Y3Rpb24pCiAgICAgICAgICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24tPmRpZFJlY2VpdmVNZXNz
YWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2
ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSkgewotICAgICAgICBBU1NFUlQobV9zd0NvbnRleHRDb25uZWN0aW9uKTsKLSAg
ICAgICAgaWYgKG1fc3dDb250ZXh0Q29ubmVjdGlvbikgeworICAgICAgICBpZiAobV9zd0NvbnRl
eHRDb25uZWN0aW9uKQogICAgICAgICAgICAgbV9zd0NvbnRleHRDb25uZWN0aW9uLT5kaWRSZWNl
aXZlRmV0Y2hUYXNrTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQorICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCiAKQEAgLTg4
Niw3ICs4ODIsMjAgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJs
aXNoU1dTZXJ2ZXJDb25uZWN0aW9uKCkKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oUmVnaXN0cmFibGVEb21haW4mJiByZWdp
c3RyYWJsZURvbWFpbikKIHsKICAgICBpZiAoYXV0byogc2VydmVyID0gbV9uZXR3b3JrUHJvY2Vz
cy0+c3dTZXJ2ZXJGb3JTZXNzaW9uSWZFeGlzdHMobV9zZXNzaW9uSUQpKQotICAgICAgICBtX3N3
Q29udGV4dENvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbj4obV9uZXR3b3JrUHJvY2VzcywgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksICpzZXJ2
ZXIsIG1fY29ubmVjdGlvbi5nZXQoKSk7CisgICAgICAgIG1fc3dDb250ZXh0Q29ubmVjdGlvbiA9
IG1ha2VVbmlxdWU8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPigqdGhpcywgV1RGTW92
ZShyZWdpc3RyYWJsZURvbWFpbiksICpzZXJ2ZXIpOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpjbG9zZVNXQ29udGV4dENvbm5lY3Rpb24oKQoreworICAgIG1fc3dD
b250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZCgpCit7
CisgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIldlYlByb2Nlc3MgJWxsdSBubyBsb25n
ZXIgdXNlZnVsIGZvciBydW5uaW5nIHNlcnZpY2Ugd29ya2VycyIsIHdlYlByb2Nlc3NJZGVudGlm
aWVyKCkudG9VSW50NjQoKSk7CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6V29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZCB7IHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwg
MCk7CisKKyAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOwogfQogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCA2ZjdmN2ZhNzFjZDczODA0Y2M4OWQ5ZmUyYTMz
MWNhMTY3NmUwOTdhLi4xMTZiYTg3ODU5Nzk4MTA0NGVlYjc0MjliMjBkMzVmZmIyYzhlMjYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0xNTUsNiArMTU1LDEwIEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgY2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkoY29uc3QgV2ViQ29yZTo6
TWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpN
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0aXZpdHkpPiYmKTsKIAorI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKKyAgICB2b2lkIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Ob0xv
bmdlck5lZWRlZCgpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nlc3MmLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwg
UEFMOjpTZXNzaW9uSUQsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CiAKQEAgLTIxNCw2
ICsyMTgsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lk
IGVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbigpOwogICAgIHZvaWQgZXN0YWJsaXNoU1dDb250
ZXh0Q29ubmVjdGlvbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmKTsKKyAgICB2b2lkIGNs
b3NlU1dDb250ZXh0Q29ubmVjdGlvbigpOwogICAgIHZvaWQgdW5yZWdpc3RlclNXQ29ubmVjdGlv
bigpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
CmluZGV4IDJhZDMxM2FiODI0ZDUxZGFjYjY4MjllM2Q5YjE1ZTBiNzc1Y2EzZDkuLjNiY2QwZWIx
MmEyNjIwMTdmMmEwMjRiNGUzNWIxYzY1YjcxNDA5YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtODEsNiArODEsNyBAQCBtZXNzYWdlcyAtPiBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQogICAgIEVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbigpCiAgICAgRXN0
YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21h
aW4pCisgICAgQ2xvc2VTV0NvbnRleHRDb25uZWN0aW9uKCkKICNlbmRpZgogCiAgICAgQ3JlYXRl
TmV3TWVzc2FnZVBvcnRDaGFubmVsKHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZp
ZXIgcG9ydDEsIHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIgcG9ydDIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmlu
ZGV4IDU4MDk0ZDYyOGNiMDgzMDViOTc1YTgxMTkyZGNjYjNjYmM5NDRlMWEuLmZlM2U2Yzc2M2Q5
NTdmMjBkMmYwZWVkYTMxMzc2NmIzMDBhMmJkZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKICNp
bmNsdWRlICJGb3JtRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNs
dWRlICJOZXR3b3JrUHJvY2Vzcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoVGFzay5oIgogI2luY2x1ZGUg
IlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1
bWVudENvZGVycy5oIgpAQCAtNDEsMTAgKzQxLDkgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJv
Y2VzcywgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgU1dTZXJ2ZXImIHNl
cnZlciwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQorV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVn
aXN0cmFibGVEb21haW4sIFNXU2VydmVyJiBzZXJ2ZXIpCiAgICAgOiBTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24oV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbikpCi0gICAgLCBtX2lwY0Nvbm5l
Y3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKLSAgICAsIG1fbmV0d29ya1Byb2Nlc3MobmV0d29y
a1Byb2Nlc3MpCisgICAgLCBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKICAgICAsIG1fc2VydmVy
KG1ha2VXZWFrUHRyKHNlcnZlcikpCiB7CiAgICAgc2VydmVyLmFkZENvbnRleHRDb25uZWN0aW9u
KCp0aGlzKTsKQEAgLTUyLDE0ICs1MSwxNyBAQCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihOZXR3b3JrUHJvY2VzcyYgbgogCiBX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246On5XZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24oKQogewotICAgIGNvbm5lY3Rpb25DbG9zZWQoKTsKKyAgICBhdXRvIGZldGNoZXMgPSBX
VEZNb3ZlKG1fb25nb2luZ0ZldGNoZXMpOworICAgIGZvciAoYXV0byYgZmV0Y2ggOiBmZXRjaGVz
LnZhbHVlcygpKQorICAgICAgICBmZXRjaC0+ZmFpbChSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21h
aW5XZWJLaXRJbnRlcm5hbCwgMCwgeyB9LCAiU2VydmljZSBXb3JrZXIgY29udGV4dCBjbG9zZWQi
X3MgfSk7CisKICAgICBpZiAobV9zZXJ2ZXIgJiYgbV9zZXJ2ZXItPmNvbnRleHRDb25uZWN0aW9u
Rm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4oKSkgPT0gdGhpcykKICAgICAg
ICAgbV9zZXJ2ZXItPnJlbW92ZUNvbnRleHRDb25uZWN0aW9uKCp0aGlzKTsKIH0KIAogSVBDOjpD
b25uZWN0aW9uKiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJD
b25uZWN0aW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pcGNDb25uZWN0aW9uLnB0cigpOwor
ICAgIHJldHVybiAmbV9jb25uZWN0aW9uLmNvbm5lY3Rpb24oKTsKIH0KIAogdWludDY0X3QgV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgp
IGNvbnN0CkBAIC02NywxMyArNjksNiBAQCB1aW50NjRfdCBXZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKICAgICByZXR1cm4g
MDsKIH0KIAotdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25D
bG9zZWQoKQotewotICAgIGF1dG8gZmV0Y2hlcyA9IFdURk1vdmUobV9vbmdvaW5nRmV0Y2hlcyk7
Ci0gICAgZm9yIChhdXRvJiBmZXRjaCA6IGZldGNoZXMudmFsdWVzKCkpCi0gICAgICAgIGZldGNo
LT5mYWlsKFJlc291cmNlRXJyb3IgeyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB7IH0s
ICJTZXJ2aWNlIFdvcmtlciBjb250ZXh0IGNsb3NlZCJfcyB9KTsKLX0KLQogdm9pZCBXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50
KGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0aW5hdGlvbklkZW50aWZp
ZXIsIGNvbnN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiBtZXNzYWdlLCBTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikK
IHsKICAgICBpZiAoIW1fc2VydmVyKQpAQCAtMTM1LDkgKzEzMCw3IEBAIHZvaWQgV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpkaWRGaW5pc2hTa2lwV2FpdGluZyh1aW50NjRfdCBjYWxs
YmFja0lEKQogCiB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlv
bklzTm9Mb25nZXJOZWVkZWQoKQogewotICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJT
ZXJ2aWNlIHdvcmtlciBwcm9jZXNzIGlzIG5vIGxvbmdlciBuZWVkZWQsIHRlcm1pbmF0aW5nIGl0
Iik7Ci0gICAgdGVybWluYXRlKCk7Ci0gICAgY29ubmVjdGlvbkNsb3NlZCgpOworICAgIG1fY29u
bmVjdGlvbi5zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoKTsKIH0KIAog
dm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnNldFRocm90dGxlU3RhdGUoYm9v
bCBpc1Rocm90dGxlYWJsZSkKQEAgLTE0NiwxMSArMTM5LDYgQEAgdm9pZCBXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb246OnNldFRocm90dGxlU3RhdGUoYm9vbCBpc1Rocm90dGxlYWJsZSkK
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U2V0VGhy
b3R0bGVTdGF0ZSB7IGlzVGhyb3R0bGVhYmxlIH0pOwogfQogCi12b2lkIFdlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6dGVybWluYXRlKCkKLXsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VGVybWluYXRlUHJvY2VzcygpKTsKLX0KLQogdm9p
ZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnN0YXJ0RmV0Y2goUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbnRlbnRDb25uZWN0aW9uLCBX
ZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBGZXRjaElkZW50aWZpZXIgY29udGVudEZldGNoSWRlbnRpZmllciwgU2VydmljZVdv
cmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQogewogICAgIGF1
dG8gZmV0Y2hJZGVudGlmaWVyID0gRmV0Y2hJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4IGEzYzY0
ZWQxMjc4ZGY2N2E5OWUwMDU5N2E0NDIwZWEyMTc2NDkyYWQuLmJhZDBjNjA0MTgzYTlmNTI0YTFh
ZDhhNzBhNjBmNDc3YmIyZjE1NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTQ5LDIwICs0OSwxNiBAQCBjbGFzcyBTZXNzaW9uSUQ7
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBOZXR3b3JrUHJvY2VzczsKK2NsYXNzIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogCiBjbGFzcyBXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24gOiBwdWJsaWMgV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIg
ewogcHVibGljOgotICAgIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihOZXR3b3JrUHJv
Y2VzcyYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFdlYkNvcmU6OlNXU2VydmVyJiwg
UmVmPElQQzo6Q29ubmVjdGlvbj4mJik7CisgICAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mJiwgV2ViQ29yZTo6U1dTZXJ2ZXImKTsKICAgICB+V2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uKCk7CiAKLSAgICBJUEM6OkNvbm5lY3Rpb24qIGlwY0Nvbm5lY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX2lwY0Nvbm5lY3Rpb24ucHRyKCk7IH0KLQogICAgIC8vIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImKSBmaW5hbDsKIAotICAgIHZvaWQgdGVybWluYXRlKCk7Ci0KICAgICB2b2lk
IHN0YXJ0RmV0Y2goUEFMOjpTZXNzaW9uSUQsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFdlYkNv
cmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmll
ciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OkZldGNoT3B0aW9ucyYsIGNvbnN0IElQQzo6Rm9y
bURhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGNhbmNlbEZldGNoKFdl
YkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRp
ZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgIHZvaWQgY29udGlu
dWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZShXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyKTsKQEAgLTk1LDggKzkxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29ubmVj
dGlvbkNsb3NlZCgpOwogCi0gICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9pcGNDb25uZWN0aW9u
OwotICAgIFJlZjxOZXR3b3JrUHJvY2Vzcz4gbV9uZXR3b3JrUHJvY2VzczsKKyAgICBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9jb25uZWN0aW9uOwogICAgIFdlYWtQdHI8V2ViQ29y
ZTo6U1dTZXJ2ZXI+IG1fc2VydmVyOwogCiAgICAgSGFzaE1hcDxTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrOjpJZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXI+IG1fb25nb2luZ0ZldGNo
SWRlbnRpZmllcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S0NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNw
cAppbmRleCBjZmZlYjBlZjdhMmEzNTRhNWJmNzE1YzJhMzVkYjQxYWNhNzgwZjA2Li4yNmQwZTRk
YzBlZjYwNjc4ODE5MDQ2ODRiMzMxNGU5NTZmYjM4MmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKQEAgLTY1NywzICs2NTcsOCBAQCB2b2lkIFdLQ29u
dGV4dENsZWFyTGVnYWN5UHJpdmF0ZUJyb3dzaW5nTG9jYWxTdG9yYWdlKFdLQ29udGV4dFJlZiBj
b250ZXh0UmVmLCB2bwogICAgICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CiB9
CisKK3ZvaWQgV0tDb250ZXh0U2V0Rm9yY2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKFdL
Q29udGV4dFJlZiBjb250ZXh0UmVmLCBib29sIGZvcmNlU2VydmljZVdvcmtlclByb2Nlc3MpCit7
CisgICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnNldEZvcmNlU2VwYXJhdGVTZXJ2aWNl
V29ya2VyUHJvY2Vzcyhmb3JjZVNlcnZpY2VXb3JrZXJQcm9jZXNzKTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaAppbmRleCA5MjQ5NWNh
ZGZkMDMxMjJjZmMyM2Q0NzQ1M2UwNzhiMWViOTI0N2NlLi4xYTA0OTY5MjJmNWVmMTExZWFkYzBk
YTA1ZDlmNTFhNjBhY2M4N2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS0NvbnRleHRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tDb250ZXh0UHJpdmF0ZS5oCkBAIC0xMjQsNiArMTI0LDggQEAgV0tfRVhQT1JUIHZvaWQg
V0tDb250ZXh0U3luY0xvY2FsU3RvcmFnZShXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgdm9pZCog
Y29udGV4dCwKIHR5cGVkZWYgdm9pZCAoKldLQ29udGV4dENsZWFyTGVnYWN5UHJpdmF0ZUJyb3dz
aW5nTG9jYWxTdG9yYWdlQ2FsbGJhY2spKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CiBXS19FWFBP
UlQgdm9pZCBXS0NvbnRleHRDbGVhckxlZ2FjeVByaXZhdGVCcm93c2luZ0xvY2FsU3RvcmFnZShX
S0NvbnRleHRSZWYgY29udGV4dFJlZiwgdm9pZCogY29udGV4dCwgV0tDb250ZXh0Q2xlYXJMZWdh
Y3lQcml2YXRlQnJvd3NpbmdMb2NhbFN0b3JhZ2VDYWxsYmFjayBjYWxsYmFjayk7CiAKK1dLX0VY
UE9SVCB2b2lkIFdLQ29udGV4dFNldEZvcmNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2VzcyhX
S0NvbnRleHRSZWYgY29udGV4dCwgYm9vbCBmb3JjZVNlcnZpY2VXb3JrZXJQcm9jZXNzKTsKKwog
I2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KaW5kZXggNGFkMzQ3ODdlODcxZGM1MTZk
ZDcwZGYxMThhZjZjYTUyMmU3NmRmZS4uOGQ3ZGFjZjM2YTA2OGIyZWVhMTExMTRkNjA1YzZiMjVh
ZGM2YWMzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
UHJvY2Vzc1Bvb2wubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
UHJvY2Vzc1Bvb2wubW0KQEAgLTQ1Miw2ICs0NTIsMTEgQEAgc3RhdGljIE5TRGljdGlvbmFyeSAq
cG9saWNpZXNIYXNoTWFwVG9EaWN0aW9uYXJ5KGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFw
PFMKICAgICBfcHJvY2Vzc1Bvb2wtPnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKTsK
IH0KIAorLSAodm9pZClfc2V0Rm9yY2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzOihCT09M
KWZvcmNlU2VydmljZVdvcmtlclByb2Nlc3MKK3sKKyAgICBfcHJvY2Vzc1Bvb2wtPnNldEZvcmNl
U2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzcyhmb3JjZVNlcnZpY2VXb3JrZXJQcm9jZXNzKTsK
K30KKwogLSAocGlkX3QpX25ldHdvcmtQcm9jZXNzSWRlbnRpZmllcgogewogICAgIHJldHVybiBf
cHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzSWRlbnRpZmllcigpOwpAQCAtNTA4LDEyICs1MTMs
MTIgQEAgc3RhdGljIE5TRGljdGlvbmFyeSAqcG9saWNpZXNIYXNoTWFwVG9EaWN0aW9uYXJ5KGNv
bnN0IEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFMKIAogLSAoc2l6ZV90KV93ZWJQYWdlQ29udGVu
dFByb2Nlc3NDb3VudAogewotICAgIGF1dG8gYWxsV2ViUHJvY2Vzc2VzID0gX3Byb2Nlc3NQb29s
LT5wcm9jZXNzZXMoKTsKKyAgICBhdXRvIHJlc3VsdCA9IF9wcm9jZXNzUG9vbC0+cHJvY2Vzc2Vz
KCkuc2l6ZSgpOwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICByZXR1cm4gYWxsV2Vi
UHJvY2Vzc2VzLnNpemUoKSAtIF9wcm9jZXNzUG9vbC0+c2VydmljZVdvcmtlclByb3hpZXNDb3Vu
dCgpOwotI2Vsc2UKLSAgICByZXR1cm4gYWxsV2ViUHJvY2Vzc2VzLnNpemUoKTsKKyAgICBpZiAo
X3Byb2Nlc3NQb29sLT5mb3JjZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MoKSkKKyAgICAg
ICAgcmVzdWx0IC09IF9wcm9jZXNzUG9vbC0+c2VydmljZVdvcmtlclByb3hpZXNDb3VudCgpOwog
I2VuZGlmCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogLSAodm9pZClfcHJlY29ubmVjdFRvU2Vy
dmVyOihOU1VSTCAqKXNlcnZlclVSTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAppbmRleCBiNTgwMjM4NzFkYjU2
ZmFkMzI1Yzg2ZTUzMTM4ZGVkMjZjZDAxZTJkLi5hZmZmMDAzYmMyMzhhMWFjMjQ0ZTg4MzhiYjcx
NWVkOWM2YTk4ZDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaApAQCAtMTExLDYgKzExMSw3IEBACiAtIChO
U1VJbnRlZ2VyKV9tYXhpbXVtU3VzcGVuZGVkUGFnZUNvdW50IFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoMTAuMTQuNCksIGlvcygxMi4yKSk7CiAtIChOU1VJbnRlZ2VyKV9wcm9jZXNzQ2FjaGVDYXBh
Y2l0eSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0LjQpLCBpb3MoMTIuMikpOwogLSAoTlNV
SW50ZWdlcilfcHJvY2Vzc0NhY2hlU2l6ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfc2V0Rm9yY2VTZXBhcmF0ZVNlcnZpY2VX
b3JrZXJQcm9jZXNzOihCT09MKWZvcmNlU2VydmljZVdvcmtlclByb2Nlc3MgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogLy8gVGVzdCBvbmx5
LiBSZXR1cm5zIHdlYiBwcm9jZXNzZXMgcnVubmluZyB3ZWIgcGFnZXMgKGRvZXMgbm90IGluY2x1
ZGUgd2ViIHByb2Nlc3NlcyBydW5uaW5nIHNlcnZpY2Ugd29ya2VycykKIC0gKHNpemVfdClfd2Vi
UGFnZUNvbnRlbnRQcm9jZXNzQ291bnQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSwg
aW9zKDExLjMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDI3NzNhMDZlNWE1MDQxM2QzNDhlNzE1NzFl
NTFiZjZkOGQ2MDkxOWQuLmNmY2I4ZThlYmVlNGEyZTdkMGY0ZDI4Y2E4YzFhYzQzNzM5ZDUyMTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcApAQCAtMTIyOSw2ICsxMjI5LDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
KFJlZ2lzCiB7CiAgICAgbV9wcm9jZXNzUG9vbC5lc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MoKnRoaXMsIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBz
ZXNzaW9uSUQpOwogfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OndvcmtlckNvbnRleHRD
b25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRp
ZmllcikKK3sKKyAgICBpZiAoYXV0byogcHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vz
c0ZvcklkZW50aWZpZXIoaWRlbnRpZmllcikpCisgICAgICAgIHByb2Nlc3MtPmRpc2FibGVTZXJ2
aWNlV29ya2VycygpOworfQogI2VuZGlmCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVx
dWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6
OkNsaWVudE9yaWdpbiYgb3JpZ2luLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1
cnJlbnRTaXplLCB1aW50NjRfdCBzcGFjZVJlcXVpcmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE9wdGlvbmFsPHVpbnQ2NF90PiBxdW90YSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
CmluZGV4IDJkNmFkYmUzYmEzZDVmY2U1Yzk2YWVmNjNhZWZiY2Y2ZWYyY2QwNjMuLjIxNDI3YTQy
YWEzNTgyOGU2OGI0NDNkNDI5MzkyZGU5YTA1Mzc4ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0yNDUsNiAr
MjQ1LDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lk
IGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQQUw6OlNlc3Npb25JRCk7CisgICAgdm9pZCB3b3JrZXJD
b250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVy
KTsKICNlbmRpZgogCiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mLCB1aW50NjRfdCBxdW90YSwgdWludDY0X3Qg
Y3VycmVudFNpemUsIHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoT3B0aW9uYWw8dWludDY0X3Q+IHF1b3RhKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2Fn
ZXMuaW4KaW5kZXggYTZkYmI3YzVjOTM2MzNjMjE0NGZlZDlkZjk2NjlmM2JmNTNhZjYzNC4uNDZl
OTBhMzI5YWI0YmQ1ZTRhNWJjZDFlOTcxZTRmYTI1MDkxNWIwYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5tZXNzYWdlcy5pbgpAQCAtNjIsNiArNjIsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vz
c1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAg
ICBFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCkKKyAgICBXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAjZW5kaWYKIAogICAgIFJlcXVlc3RT
dG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6Q2xp
ZW50T3JpZ2luIG9yaWdpbiwgdWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTaXplLCB1
aW50NjRfdCBzcGFjZVJlcXVpcmVkKSAtPiAoT3B0aW9uYWw8dWludDY0X3Q+IG5ld1F1b3RhKSBB
c3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDk5
MWUyN2UyY2RlYjZkMTI5MGVlMGY1OWJlZTg5Yzg4MjRiNmYyY2QuLmIyZGFkZDEyMjkzMTg4Yjli
MWVlOWViN2I1YzkyY2Y2NWEyNDcyNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAKQEAgLTY3NCw2ICs2NzQsMTEgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6
bmV0d29ya1Byb2Nlc3NDcmFzaGVkKE5ldHdvcmtQcm9jZXNzUHJveHkmIG5ldHdvcmtQcm9jZXNz
UHIKICAgICBhdXRvJiBuZXdOZXR3b3JrUHJvY2VzcyA9IGVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7
CiAgICAgZm9yIChhdXRvJiByZXBseSA6IHBlbmRpbmdSZXBsaWVzKQogICAgICAgICBuZXdOZXR3
b3JrUHJvY2Vzcy5nZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKnJlcGx5LmZpcnN0LCBXVEZN
b3ZlKHJlcGx5LnNlY29uZCkpOworCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIHdo
aWxlICghbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmlzRW1wdHkoKSkKKyAgICAgICAgbV9zZXJ2
aWNlV29ya2VyUHJvY2Vzc2VzLmJlZ2luKCktPnZhbHVlLT5kaXNhYmxlU2VydmljZVdvcmtlcnMo
KTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpnZXROZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJveHksIE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYg
cmVwbHkpCkBAIC03MDAsMjQgKzcwNSw1NyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxp
c2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1BybwogICAg
IH0KIAogICAgIFJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRCByZWdpc3RyYWJsZURvbWFp
bldpdGhTZXNzaW9uSUQgeyBSZWdpc3RyYWJsZURvbWFpbiB7IHJlZ2lzdHJhYmxlRG9tYWluIH0s
IHNlc3Npb25JRCB9OwotICAgIGlmIChtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuY29udGFpbnMo
cmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEKSkKKyAgICBpZiAobV9zZXJ2aWNlV29ya2Vy
UHJvY2Vzc2VzLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRCkpIHsKKyAg
ICAgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIldlYlByb2Nlc3NQb29sOjplc3RhYmxp
c2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgcHJvY2VzcyBhbHJlYWR5
IGNyZWF0ZWQiKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIGlmIChtX3NlcnZpY2VX
b3JrZXJQcm9jZXNzZXMuaXNFbXB0eSgpKQogICAgICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVz
c2FnZXM6OldlYlByb2Nlc3M6OlJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudHMgeyB9KTsKIAot
ICAgIGF1dG8gc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3Jl
YXRlRm9yU2VydmljZVdvcmtlcnMoKnRoaXMsIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCAq
d2Vic2l0ZURhdGFTdG9yZSk7Ci0gICAgbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmFkZChXVEZN
b3ZlKHJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRCksIHNlcnZpY2VXb3JrZXJQcm9jZXNz
UHJveHkucHRyKCkpOworICAgIFdlYlByb2Nlc3NQcm94eSogc2VydmljZVdvcmtlclByb2Nlc3NQ
cm94eSB7IG51bGxwdHIgfTsKKyAgICBpZiAoIW1fZm9yY2VTZXJ2aWNlV29ya2VyUHJvY2Vzcykg
eworICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykgeworICAgICAgICAg
ICAgaWYgKHByb2Nlc3MgPT0gbV9wcmV3YXJtZWRQcm9jZXNzIHx8IHByb2Nlc3MgPT0gbV9kdW1t
eVByb2Nlc3NQcm94eSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlm
ICgmcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpICE9IHdlYnNpdGVEYXRhU3RvcmUpCisgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAoIXByb2Nlc3MtPmlzTWF0Y2hp
bmdSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBwcm9j
ZXNzLmdldCgpOworICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxl
U2VydmljZVdvcmtlcnMoKTsKKworICAgICAgICAgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtl
ciwgIldlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3MgcmV1c2luZyBhbiBleGlzdGluZyB3ZWIgcHJvY2VzcyAlcCIsIHNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBpZiAoIXNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkpIHsKKyAgICAgICAgYXV0byBu
ZXdQcm9jZXNzUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvclNlcnZpY2VXb3JrZXJz
KCp0aGlzLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgKndlYnNpdGVEYXRhU3RvcmUpOwor
ICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0gbmV3UHJvY2Vzc1Byb3h5LnB0cigp
OwogCi0gICAgdXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMoKTsKLSAgICBpbml0aWFsaXplTmV3V2Vi
UHJvY2VzcyhzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LCB3ZWJzaXRlRGF0YVN0b3JlKTsKKyAg
ICAgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIldlYlByb2Nlc3NQb29sOjplc3RhYmxp
c2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgY3JlYXRpbmcgYSBuZXcg
c2VydmljZSB3b3JrZXIgcHJvY2VzcyAlcCIsIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkpOwog
Ci0gICAgYXV0byogc2VydmljZVdvcmtlclByb2Nlc3NQcm94eVB0ciA9IHNlcnZpY2VXb3JrZXJQ
cm9jZXNzUHJveHkucHRyKCk7Ci0gICAgbV9wcm9jZXNzZXMuYXBwZW5kKFdURk1vdmUoc2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eSkpOworICAgICAgICB1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygp
OworICAgICAgICBpbml0aWFsaXplTmV3V2ViUHJvY2VzcyhuZXdQcm9jZXNzUHJveHksIHdlYnNp
dGVEYXRhU3RvcmUpOworICAgICAgICBtX3Byb2Nlc3Nlcy5hcHBlbmQoV1RGTW92ZShuZXdQcm9j
ZXNzUHJveHkpKTsKKyAgICB9CiAKLSAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5UHRyLT5l
c3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyA/
IG1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzLnZhbHVlKCkgOiBtX2RlZmF1bHRQYWdlR3JvdXAt
PnByZWZlcmVuY2VzKCkuc3RvcmUoKSk7CisgICAgQVNTRVJUKCFtX3NlcnZpY2VXb3JrZXJQcm9j
ZXNzZXMuY29udGFpbnMocmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEKSk7CisgICAgbV9z
ZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmFkZChXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluV2l0aFNl
c3Npb25JRCksIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkpOworCisgICAgc2VydmljZVdvcmtl
clByb2Nlc3NQcm94eS0+ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQobV9zZXJ2aWNlV29y
a2VyUHJlZmVyZW5jZXMgPyBtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDogbV9k
ZWZhdWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnN0b3JlKCkpOwogICAgIGlmICghbV9zZXJ2
aWNlV29ya2VyVXNlckFnZW50LmlzTnVsbCgpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5UHRyLT5zZXRTZXJ2aWNlV29ya2VyVXNlckFnZW50KG1fc2VydmljZVdvcmtlclVzZXJB
Z2VudCk7CisgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPnNldFNlcnZpY2VXb3Jr
ZXJVc2VyQWdlbnQobV9zZXJ2aWNlV29ya2VyVXNlckFnZW50KTsKK30KKwordm9pZCBXZWJQcm9j
ZXNzUG9vbDo6cmVtb3ZlRnJvbVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoV2ViUHJvY2Vzc1Byb3h5
JiBwcm9jZXNzKQoreworICAgIFJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRCBrZXkgeyBw
cm9jZXNzLnJlZ2lzdHJhYmxlRG9tYWluKCksIHByb2Nlc3Mud2Vic2l0ZURhdGFTdG9yZSgpLnNl
c3Npb25JRCgpIH07CisgICAgQVNTRVJUKG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5jb250YWlu
cyhrZXkpKTsKKyAgICBBU1NFUlQobV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmdldChrZXkpID09
ICZwcm9jZXNzKTsKKyAgICBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMucmVtb3ZlKGtleSk7CiB9
CiAjZW5kaWYKIApAQCAtMTEwMCw4ICsxMTM4LDkgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlz
Y29ubmVjdFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQogCiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQogICAgIGlmIChwcm9jZXNzLT5pc1J1bm5pbmdTZXJ2aWNlV29ya2Vycygp
KSB7Ci0gICAgICAgIGF1dG8qIHJlbW92ZWRQcm9jZXNzID0gbV9zZXJ2aWNlV29ya2VyUHJvY2Vz
c2VzLnRha2UoUmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEIHsgcHJvY2Vzcy0+cmVnaXN0
cmFibGVEb21haW4oKSwgcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpIH0p
OwotICAgICAgICBBU1NFUlRfVU5VU0VEKHJlbW92ZWRQcm9jZXNzLCByZW1vdmVkUHJvY2VzcyA9
PSBwcm9jZXNzKTsKKyAgICAgICAgYXV0byBpdGVyYXRvciA9IG1fc2VydmljZVdvcmtlclByb2Nl
c3Nlcy5maW5kKFJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRCB7IHByb2Nlc3MtPnJlZ2lz
dHJhYmxlRG9tYWluKCksIHByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSB9
KTsKKyAgICAgICAgaWYgKGl0ZXJhdG9yICE9IG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5lbmQo
KSAmJiBpdGVyYXRvci0+dmFsdWUgPT0gcHJvY2VzcykKKyAgICAgICAgICAgIG1fc2VydmljZVdv
cmtlclByb2Nlc3Nlcy5yZW1vdmUoaXRlcmF0b3IpOwogICAgICAgICB1cGRhdGVQcm9jZXNzQXNz
ZXJ0aW9ucygpOwogICAgIH0KICNlbmRpZgpAQCAtMTExNiwxNSArMTE1NSw2IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykK
ICNlbmRpZgogCiAgICAgcmVtb3ZlUHJvY2Vzc0Zyb21PcmlnaW5DYWNoZVNldCgqcHJvY2Vzcyk7
Ci0KLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBk
byBiZXR0ZXIgdGhhbiB0aGlzLiBGb3Igbm93LCB3ZSBqdXN0IGRlc3Ryb3kgdGhlIFNlcnZpY2VX
b3JrZXIgcHJvY2VzcwotICAgIC8vIHdoZW5ldmVyIHRoZXJlIGlzIG5vIHJlZ3VsYXIgV2ViQ29u
dGVudCBwcm9jZXNzIHJlbWFpbmluZy4KLSAgICBpZiAobV9wcm9jZXNzZXMuc2l6ZSgpID09IG1f
c2VydmljZVdvcmtlclByb2Nlc3Nlcy5zaXplKCkpIHsKLSAgICAgICAgaWYgKCFtX3NlcnZpY2VX
b3JrZXJQcm9jZXNzZXNUZXJtaW5hdGlvblRpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgICAgICBt
X3NlcnZpY2VXb3JrZXJQcm9jZXNzZXNUZXJtaW5hdGlvblRpbWVyLnN0YXJ0T25lU2hvdChzZXJ2
aWNlV29ya2VyVGVybWluYXRpb25EZWxheSk7Ci0gICAgfQotI2VuZGlmCiB9CiAKIFdlYlByb2Nl
c3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbihXZWJz
aXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlLCBXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikKQEAgLTEyMTQsOCArMTI0NCw2
IEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQb29sOjpjcmVhdGVXZWJQYWdlKFBhZ2VD
bGllbnQmIHBhZ2VDbGllbnQsIFJlZjxBUEk6CiAgICAgYXV0byBwYWdlID0gcHJvY2Vzcy0+Y3Jl
YXRlV2ViUGFnZShwYWdlQ2xpZW50LCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CiAKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgQVNTRVJUKCFwcm9jZXNzLT5pc1J1bm5pbmdT
ZXJ2aWNlV29ya2VycygpKTsKLQogICAgIGlmICghbV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMp
IHsKICAgICAgICAgbV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMgPSBwYWdlLT5wcmVmZXJlbmNl
c1N0b3JlKCk7CiAgICAgICAgIGZvciAoYXV0byogc2VydmljZVdvcmtlclByb2Nlc3MgOiBtX3Nl
cnZpY2VXb3JrZXJQcm9jZXNzZXMudmFsdWVzKCkpCkBAIC0xNjk2LDYgKzE3MjQsMTEgQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6Y2xlYXJDYWNoZWRDcmVkZW50aWFscygpCiAKIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKCkKIHsKKyNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCisgICAgd2hpbGUgKCFtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuaXNFbXB0eSgp
KQorICAgICAgICBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYmVnaW4oKS0+dmFsdWUtPmRpc2Fi
bGVTZXJ2aWNlV29ya2VycygpOworI2VuZGlmCisKICAgICBpZiAoIW1fbmV0d29ya1Byb2Nlc3Mp
CiAgICAgICAgIHJldHVybjsKICAgICAKQEAgLTI1MDIsNCArMjUzNSwxOSBAQCB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpjbGVhcldlYlByb2Nlc3NJc1BsYXlpbmdBdWRpYmxlTWVkaWEoV2ViQ29yZTo6
UHJvY2Vzc0lkZW50aQogICAgIH0KIH0KIAordm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0Rm9yY2VT
ZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKGJvb2wgZm9yY2VTZXJ2aWNlV29ya2VyUHJvY2Vz
cykKK3sKKyAgICBpZiAobV9mb3JjZVNlcnZpY2VXb3JrZXJQcm9jZXNzID09IGZvcmNlU2Vydmlj
ZVdvcmtlclByb2Nlc3MpCisgICAgICAgIHJldHVybjsKKworICAgIFJFTEVBU0VfTE9HKFNlcnZp
Y2VXb3JrZXIsICJXZWJQcm9jZXNzUG9vbDo6c2V0Rm9yY2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQ
cm9jZXNzICVkIiwgZm9yY2VTZXJ2aWNlV29ya2VyUHJvY2Vzcyk7CisKKyAgICBtX2ZvcmNlU2Vy
dmljZVdvcmtlclByb2Nlc3MgPSBmb3JjZVNlcnZpY2VXb3JrZXJQcm9jZXNzOworI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKKyAgICB3aGlsZSAoIW1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5p
c0VtcHR5KCkpCisgICAgICAgIG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5iZWdpbigpLT52YWx1
ZS0+ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7CisjZW5kaWYKKyAgICB0ZXJtaW5hdGVOZXR3b3Jr
UHJvY2VzcygpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDAyMTAxNGVjMTIwY2I0MmQ5ODViZTdkNDdkNWFk
YTFkMWE1ZjY0ZTIuLjRiNDYxZmE5MjJiNmIxYTRkYWQwNzE5ZTA3OTA5N2NjZjU1NzE1ZDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMzgzLDYgKzM4Myw3
IEBAIHB1YmxpYzoKICAgICBib29sIGlzU2VydmljZVdvcmtlclBhZ2VJRChXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyKSBjb25zdDsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBl
c3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1By
b2Nlc3NQcm94eSYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFBBTDo6U2Vzc2lvbklE
KTsKKyAgICB2b2lkIHJlbW92ZUZyb21TZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKFdlYlByb2Nlc3NQ
cm94eSYpOwogICAgIHNpemVfdCBzZXJ2aWNlV29ya2VyUHJveGllc0NvdW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnNpemUoKTsgfQogICAgIHZvaWQgc2V0QWxs
b3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyKGJvb2wgYWxsb3dzKSB7IG1fYWxs
b3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyID0gYWxsb3dzOyB9CiAgICAgYm9v
bCBhbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXIoKSBjb25zdCB7IHJldHVy
biBtX2FsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlcjsgfQpAQCAtNTI2LDYg
KzUyNyw5IEBAIHB1YmxpYzoKICAgICAKICAgICBQbHVnSW5BdXRvU3RhcnRQcm92aWRlciYgcGx1
Z0luQXV0b1N0YXJ0UHJvdmlkZXIoKSB7IHJldHVybiBtX3BsdWdJbkF1dG9TdGFydFByb3ZpZGVy
OyB9CiAKKyAgICB2b2lkIHNldEZvcmNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzcyhib29s
IGZvcmNlU2VydmljZVdvcmtlclByb2Nlc3MpOworICAgIGJvb2wgZm9yY2VTZXBhcmF0ZVNlcnZp
Y2VXb3JrZXJQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV9mb3JjZVNlcnZpY2VXb3JrZXJQcm9j
ZXNzOyB9CisKIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKIApAQCAt
ODAzLDYgKzgwNyw3IEBAIHByaXZhdGU6CiAjZWxzZQogICAgIGJvb2wgbV9pc0RlbGF5ZWRXZWJQ
cm9jZXNzTGF1bmNoRGlzYWJsZWQgeyBmYWxzZSB9OwogI2VuZGlmCisgICAgYm9vbCBtX2ZvcmNl
U2VydmljZVdvcmtlclByb2Nlc3MgeyBmYWxzZSB9OwogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUg
VD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGZm
YWZhN2VhOGY3ODg0NGZjNjQ1OTQ5Mzg0ODNmNGFlNTQyMWQyNDEuLjA0ZjA5ZGMwMWZmOTg1N2Q3
ZDBjOTFkMTE5ODNmZWZjN2M0ZGViNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIFJlZjxXZWJQcm9jZXNzUHJveHk+
IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yU2VydmljZVdvcmtlcnMoV2ViUHJvY2Vzc1Bvb2wm
IHByCiB7CiAgICAgYXV0byBwcm94eSA9IGFkb3B0UmVmKCpuZXcgV2ViUHJvY2Vzc1Byb3h5KHBy
b2Nlc3NQb29sLCAmd2Vic2l0ZURhdGFTdG9yZSwgSXNQcmV3YXJtZWQ6Ok5vKSk7CiAgICAgcHJv
eHktPm1fcmVnaXN0cmFibGVEb21haW4gPSBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKTsKLSAg
ICBwcm94eS0+bV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gPSBTZXJ2aWNlV29ya2VySW5mb3Jt
YXRpb24geyBXZWJQYWdlUHJveHlJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBQYWdlSWRlbnRpZmll
cjo6Z2VuZXJhdGUoKSB9OworICAgIHByb3h5LT5lbmFibGVTZXJ2aWNlV29ya2VycygpOwogICAg
IHByb3h5LT5jb25uZWN0KCk7CiAgICAgcmV0dXJuIHByb3h5OwogfQpAQCAtOTIwLDYgKzkyMCw5
IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjptYXliZVNodXREb3duKEFsbG93UHJvY2Vzc0NhY2hp
bmcgYWxsb3dQcm9jZXNzQ2FjaGluZykKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlm
IChpc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAo
c3RhdGUoKSA9PSBTdGF0ZTo6VGVybWluYXRlZCB8fCAhY2FuVGVybWluYXRlQXV4aWxpYXJ5UHJv
Y2VzcygpKQogICAgICAgICByZXR1cm47CiAKQEAgLTE0MzMsMTEgKzE0MzYsMTQgQEAgdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1lKGNvbnN0
IFVSTCYgdXJsKQogICAgIFJFTEVBU0VfQVNTRVJUKCFpc0luUHJvY2Vzc0NhY2hlKCkpOwogCiAg
ICAgLy8gVGhpcyBwcm9jZXNzIGhhcyBiZWVuIHVzZWQgZm9yIHNldmVyYWwgcmVnaXN0cmFibGUg
ZG9tYWlucyBhbHJlYWR5LgotICAgIGlmIChtX3JlZ2lzdHJhYmxlRG9tYWluICYmIG1fcmVnaXN0
cmFibGVEb21haW4tPmlzRW1wdHkoKSkKKyAgICBpZiAoKG1fcmVnaXN0cmFibGVEb21haW4gJiYg
bV9yZWdpc3RyYWJsZURvbWFpbi0+aXNFbXB0eSgpKSB8fCB1cmwucHJvdG9jb2xJc0Fib3V0KCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9OwogICAgIGlmIChtX3JlZ2lzdHJhYmxlRG9tYWlu
ICYmICptX3JlZ2lzdHJhYmxlRG9tYWluICE9IHJlZ2lzdHJhYmxlRG9tYWluKSB7CisjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQorICAgICAgICBkaXNhYmxlU2VydmljZVdvcmtlcnMoKTsKKyNl
bmRpZgogICAgICAgICAvLyBOdWxsIG91dCByZWdpc3RyYWJsZSBkb21haW4gc2luY2UgdGhpcyBw
cm9jZXNzIGhhcyBub3cgYmVlbiB1c2VkIGZvciBzZXZlcmFsIGRvbWFpbnMuCiAgICAgICAgIG1f
cmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IH07CiAgICAg
ICAgIHJldHVybjsKQEAgLTE1MzIsNiArMTUzOCwyNSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6
dXBkYXRlU2VydmljZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNT
dAogICAgIEFTU0VSVChtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbik7CiAgICAgc2VuZChNZXNz
YWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlVwZGF0ZVByZWZlcmVuY2VzU3Rv
cmUgeyBzdG9yZSB9LCAwKTsKIH0KKwordm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpc2FibGVTZXJ2
aWNlV29ya2VycygpCit7CisgICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gPSB7IH07Cisg
ICAgaWYgKG1fcHJvY2Vzc1Bvb2wpCisgICAgICAgIG1fcHJvY2Vzc1Bvb2wtPnJlbW92ZUZyb21T
ZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCp0aGlzKTsKKworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTdG9wIHsgfSwgMCk7Cit9CisKK3ZvaWQgV2ViUHJv
Y2Vzc1Byb3h5OjplbmFibGVTZXJ2aWNlV29ya2VycygpCit7CisgICAgQVNTRVJUKG1fcmVnaXN0
cmFibGVEb21haW4gJiYgIW1fcmVnaXN0cmFibGVEb21haW4tPmlzRW1wdHkoKSk7CisgICAgQVNT
RVJUKCFtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbik7CisgICAgbV9zZXJ2aWNlV29ya2VySW5m
b3JtYXRpb24gPSBTZXJ2aWNlV29ya2VySW5mb3JtYXRpb24geyBXZWJQYWdlUHJveHlJZGVudGlm
aWVyOjpnZW5lcmF0ZSgpLCBQYWdlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OworfQogI2VuZGlm
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaAppbmRleCBhNzNkYzg5OWQzMDcwOWYxN2VmYzdjOGZlOWMzNzFjZDJiZGNkM2Fh
Li41ZGU2NjYyZjgyNjlmZjYzNDZjNTgwYzlkN2ZjMTcwMTA5ZmNkZjUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtMTI1LDEwICsxMjUsMTQgQEAgcHVi
bGljOgogICAgIFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbElmRXhpc3RzKCkgY29uc3Q7CiAg
ICAgV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sKCkgY29uc3Q7CiAKKyAgICBib29sIGlzTWF0
Y2hpbmdSZWdpc3RyYWJsZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYg
ZG9tYWluKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluID8gKm1fcmVnaXN0cmFi
bGVEb21haW4gPT0gZG9tYWluIDogZmFsc2U7IH0KICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiByZWdpc3RyYWJsZURvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0cmFibGVEb21h
aW4udmFsdWVPcihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IH0pOyB9CiAgICAgdm9pZCBz
ZXRJc0luUHJvY2Vzc0NhY2hlKGJvb2wpOwogICAgIGJvb2wgaXNJblByb2Nlc3NDYWNoZSgpIGNv
bnN0IHsgcmV0dXJuIG1faXNJblByb2Nlc3NDYWNoZTsgfQogCisgICAgdm9pZCBlbmFibGVTZXJ2
aWNlV29ya2VycygpOworICAgIHZvaWQgZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7CisKICAgICBX
ZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKCkgY29uc3QgeyBBU1NFUlQobV93ZWJz
aXRlRGF0YVN0b3JlKTsgcmV0dXJuICptX3dlYnNpdGVEYXRhU3RvcmU7IH0KICAgICB2b2lkIHNl
dFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSYpOwogICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uY3BwCmluZGV4IDc1MWU1MTA1NTE1OTk4NmJhNThiNjg2MGJkNTE5
NDkyYzk2NTdjNDkuLjE3NzkwODhjNGQ3ODQ5YTFhMTc0ZDVmYmQ4MTAxMWU3MzI4YmU1MTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTY4LDkgKzY4LDYgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgUEFMOwogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKLXN0YXRpYyBjb25zdCBTZWNvbmRzIGFzeW5jV29ya2VyVGVybWluYXRpb25UaW1l
b3V0IHsgMTBfcyB9Owotc3RhdGljIGNvbnN0IFNlY29uZHMgc3luY1dvcmtlclRlcm1pbmF0aW9u
VGltZW91dCB7IDEwMF9tcyB9OyAvLyBPbmx5IHVzZWQgYnkgbGF5b3V0IHRlc3RzLgotCiBTZXJ2
aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQ6OlNlcnZpY2VXb3JrZXJGcmFtZUxvYWRlckNsaWVu
dChXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2ViUGFnZVByb3h5
SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCiAgICAgOiBtX2Nvbm5l
Y3Rpb24oY29ubmVjdGlvbikKICAgICAsIG1fd2ViUGFnZVByb3h5SUQod2ViUGFnZVByb3h5SUQp
CkBAIC05OSw2ICs5Niw3IEBAIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uCiB7CiAgICAgdXBkYXRl
UHJlZmVyZW5jZXNTdG9yZShzdG9yZSk7CiAgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkVzdGFibGlz
aFNXQ29udGV4dENvbm5lY3Rpb24geyBtX3JlZ2lzdHJhYmxlRG9tYWluIH0sIDApOworICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmRpc2FibGVUZXJtaW5hdGlvbigpOwogfQogCiBXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6fldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKCkg
PSBkZWZhdWx0OwpAQCAtMjUzLDEyICsyNTEsMTIgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbjo6c29mdFVwZGF0ZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcgog
CiB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp0ZXJtaW5hdGVXb3JrZXIoU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBTV0NvbnRleHRNYW5hZ2Vy
OjpzaW5nbGV0b24oKS50ZXJtaW5hdGVXb3JrZXIoaWRlbnRpZmllciwgYXN5bmNXb3JrZXJUZXJt
aW5hdGlvblRpbWVvdXQsIG51bGxwdHIpOworICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRv
bigpLnRlcm1pbmF0ZVdvcmtlcihpZGVudGlmaWVyLCBTV0NvbnRleHRNYW5hZ2VyOjp3b3JrZXJU
ZXJtaW5hdGlvblRpbWVvdXQsIG51bGxwdHIpOwogfQogCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjpzeW5jVGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIsIE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U3lu
Y1Rlcm1pbmF0ZVdvcmtlcjo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7Ci0gICAgU1dDb250ZXh0
TWFuYWdlcjo6c2luZ2xldG9uKCkudGVybWluYXRlV29ya2VyKGlkZW50aWZpZXIsIHN5bmNXb3Jr
ZXJUZXJtaW5hdGlvblRpbWVvdXQsIFdURk1vdmUocmVwbHkpKTsKKyAgICBTV0NvbnRleHRNYW5h
Z2VyOjpzaW5nbGV0b24oKS50ZXJtaW5hdGVXb3JrZXIoaWRlbnRpZmllciwgU1dDb250ZXh0TWFu
YWdlcjo6c3luY1dvcmtlclRlcm1pbmF0aW9uVGltZW91dCwgV1RGTW92ZShyZXBseSkpOwogfQog
CiB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2Vydmlj
ZVdvcmtlckNsaWVudChjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgZGVzdGlu
YXRpb25JZGVudGlmaWVyLCBjb25zdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYgbWVzc2FnZSwg
U2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBz
b3VyY2VPcmlnaW4pCkBAIC0zNDgsMTAgKzM0NiwxNCBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjpkaWRGaW5pc2hTa2lwV2FpdGluZyh1aW50NjRfdCBjYWxsYmFja0lEKQog
ICAgICAgICBjYWxsYmFjaygpOwogfQogCi12b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uOjp0ZXJtaW5hdGVQcm9jZXNzKCkKK3ZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b246OnN0b3AoKQogewotICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJTZXJ2aWNlIHdv
cmtlciBwcm9jZXNzIGlzIGV4aXRpbmcgYmVjYXVzZSBpdCBpcyBubyBsb25nZXIgbmVlZGVkIik7
Ci0gICAgX2V4aXQoRVhJVF9TVUNDRVNTKTsKKyAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2Vy
LCAiU2VydmljZSB3b3JrZXIgcHJvY2VzcyBpcyByZXF1ZXN0ZWQgdG8gc3RvcCBhbGwgc2Vydmlj
ZSB3b3JrZXJzIik7CisgICAgbV9pc1N0b3BwZWQgPSB0cnVlOworCisgICAgbV9jb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OkNsb3NlU1dDb250ZXh0Q29ubmVjdGlvbiB7IH0sIDApOworICAgIFNXQ29udGV4dE1h
bmFnZXI6OnNpbmdsZXRvbigpLnN0b3BBbGxTZXJ2aWNlV29ya2VycygpOworICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuYWJsZVRlcm1pbmF0aW9uKCk7CiB9CiAKIHZvaWQgV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb246OnNldFRocm90dGxlU3RhdGUoYm9vbCBpc1Rocm90dGxlYWJs
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCmluZGV4IDdkNjI2MDE5NjE5MTRmM2Zl
MmQ1OTI1YzliOTdjNGQxNDBkZDNhZTEuLjQ1MGViNGY0MmRlYjc1OWYwODk2MmE2ODJmMjYyYjkw
NmE3NGU0Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaApAQCAtOTUsNyArOTUs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xhaW1Db21wbGV0ZWQodWludDY0X3QgY2xhaW1SZXF1
ZXN0SWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRGaW5pc2hTa2lwV2FpdGluZyh1aW50NjRfdCBj
YWxsYmFja0lEKTsKICAgICB2b2lkIHNldFVzZXJBZ2VudChTdHJpbmcmJiB1c2VyQWdlbnQpOwot
ICAgIE5PX1JFVFVSTiB2b2lkIHRlcm1pbmF0ZVByb2Nlc3MoKTsKKyAgICB2b2lkIHN0b3AoKTsK
ICAgICB2b2lkIHNldFRocm90dGxlU3RhdGUoYm9vbCBpc1Rocm90dGxlYWJsZSk7CiAKICAgICBS
ZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCBlYWQ4Y2Jk
M2MzMDRkNmQ3MTUzYTJiZTc0MjUwYzc0MjI0Y2Y4NzBhLi4wNTBlMDUyMjY3NzA5ZTQ0NTRiMTUx
ZmVkNzhlYjY0NWM5NGM0ZWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5tZXNzYWdlcy5pbgpAQCAtMzksNyArMzksNyBAQCBtZXNzYWdlcyAtPiBXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbiB7CiAgICAgRGlkRmluaXNoU2tpcFdhaXRpbmcodWludDY0X3Qg
Y2FsbGJhY2tJRCkKICAgICBTZXRVc2VyQWdlbnQoU3RyaW5nIHVzZXJBZ2VudCkKICAgICBVcGRh
dGVQcmVmZXJlbmNlc1N0b3JlKHN0cnVjdCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUgc3Rv
cmUpCi0gICAgVGVybWluYXRlUHJvY2VzcygpCisgICAgU3RvcCgpCiAgICAgU2V0VGhyb3R0bGVT
dGF0ZShib29sIGlzVGhyb3R0bGVhYmxlKQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAKaW5kZXggZjdiMmNiNjc1MWIyMjQzN2Y3OWI2ZTA0Yjk0YWJlNTYyODNkYjQx
NS4uZDMyNjJjNTQxYTM0OGJiN2U5MTM5MmFhNDNiYzc1MTFkMWMwNjcxZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTIyNSwxMCArMTIyNSw4IEBAIHZvaWQg
V2ViUHJvY2Vzczo6bmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uQ2xvc2VkKE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbiogY29ubmVjCiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
LSAgICBpZiAoU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKSB7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJTZXJ2aWNlIHdvcmtlciBwcm9jZXNz
IGlzIGV4aXRpbmcgYmVjYXVzZSBuZXR3b3JrIHByb2Nlc3MgaXMgZ29uZSIpOwotICAgICAgICBf
ZXhpdChFWElUX1NVQ0NFU1MpOwotICAgIH0KKyAgICBpZiAoU1dDb250ZXh0TWFuYWdlcjo6c2lu
Z2xldG9uKCkuY29ubmVjdGlvbigpKQorICAgICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0
b24oKS5zdG9wQWxsU2VydmljZVdvcmtlcnMoKTsKICNlbmRpZgogCiAgICAgbV9uZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24gPSBudWxscHRyOwpAQCAtMTc5OCw4ICsxNzk2LDYgQEAgdm9pZCBXZWJQ
cm9jZXNzOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mo
dWludDY0X3QgcGFnZUcKIAogdm9pZCBXZWJQcm9jZXNzOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJD
bGllbnRzKCkKIHsKLSAgICAvLyBXZSBkbyBub3Qgd2FudCB0byByZWdpc3RlciBzZXJ2aWNlIHdv
cmtlciBkdW1teSBkb2N1bWVudHMuCi0gICAgQVNTRVJUKCFTV0NvbnRleHRNYW5hZ2VyOjpzaW5n
bGV0b24oKS5jb25uZWN0aW9uKCkpOwogICAgIFNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xl
dG9uKCkucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50cygpOwogfQogCmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDBlOGNmMzZjNWFjMDg0OThl
YzZlOGMwZGM0NjU4MGMwMzdmYWM5Zi4uMzFhOWRlM2ExNjU3YWU2Yjk0MzkxNjVkNWJmOTY5NGY0
NGNkMTE2YiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI1IEBACisyMDE5LTEwLTA0ICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXVzZSBleGlzdGluZyB3ZWIgcHJvY2Vzc2VzIGZvciBydW5u
aW5nIHNlcnZpY2Ugd29ya2VycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjAyMTk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGVuZm9yY2luZyBhIHNlcGFyYXRlIHByb2Nlc3Mg
Zm9yIHNlcnZpY2Ugd29ya2Vycy4KKyAgICAgICAgVGhpcyBpcyB1c2VmdWwgZm9yIHRlc3RzIHRy
eWluZyB0byBjcmFzaCB0aGUgc2VydmljZSB3b3JrZXIgcHJvY2Vzcy4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tOgorICAg
ICAgICBVcGRhdGUgdGVzdCB0byB1c2Ugc2VydmljZVdvcmtlclByb2Nlc3NDb3VudC4KKyAgICAg
ICAgQWRkIHRlc3QgdG8gY2hlY2sgZm9yIGluIHByb2Nlc3MgYW5kIG91dCBvZiBwcm9jZXNzIHNl
cnZpY2Ugd29ya2Vycy4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNl
dEZvcmNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzcyk6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVy
OjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRp
ZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorCiAyMDE5LTEw
LTAzICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdS
RVNTSU9OKDI0OTY0OSk6IFVuYWJsZSB0byBvcGVuIGxvY2FsIGZpbGVzIGluIE1pbmlCcm93c2Vy
IG9uIG1hY09TCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tCmluZGV4IDljY2E3MDI4OTgzMGYyMDc5Nzg0
YjhhNmVlNzUxMDc0MzQwNGM3OGMuLmI3MjI4ZGNiZDIzY2JlMzdiNjRmNjIwMjJmNzBlYTlhNWI1
ZjA2NGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
U2VydmljZVdvcmtlckJhc2ljLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tCkBAIC0xMTczLDcgKzExNzMsNyBAQCBURVNU
KFNlcnZpY2VXb3JrZXJzLCBTZXJ2aWNlV29ya2VyUHJvY2Vzc0NyZWF0aW9uKQogICAgIGRvbmUg
PSBmYWxzZTsKIAogICAgIC8vIE1ha2Ugc3VyZSB0aGF0IGxvYWRpbmcgdGhlIHNpbXBsZSBwYWdl
IGRpZCBub3Qgc3RhcnQgdGhlIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MuCi0gICAgRVhQRUNUX0VR
KDF1LCB3ZWJWaWV3LmdldCgpLmNvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wuX3dlYlByb2Nlc3ND
b3VudElnbm9yaW5nUHJld2FybWVkKTsKKyAgICBFWFBFQ1RfRVEoMHUsIHdlYlZpZXcuZ2V0KCku
Y29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbC5fc2VydmljZVdvcmtlclByb2Nlc3NDb3VudCk7CiAK
ICAgICB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOm5ld0NvbmZpZ3VyYXRpb24u
Z2V0KCldKTsKICAgICBFWFBFQ1RfRVEoMnUsIHdlYlZpZXcuZ2V0KCkuY29uZmlndXJhdGlvbi5w
cm9jZXNzUG9vbC5fd2ViUHJvY2Vzc0NvdW50SWdub3JpbmdQcmV3YXJtZWQpOwpAQCAtMTE4Myw3
ICsxMTgzLDcgQEAgVEVTVChTZXJ2aWNlV29ya2VycywgU2VydmljZVdvcmtlclByb2Nlc3NDcmVh
dGlvbikKICAgICBkb25lID0gZmFsc2U7CiAKICAgICAvLyBNYWtlIHN1cmUgdGhhdCBsb2FkaW5n
IHRoaXMgcGFnZSBkaWQgc3RhcnQgdGhlIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MuCi0gICAgRVhQ
RUNUX0VRKDN1LCB3ZWJWaWV3LmdldCgpLmNvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wuX3dlYlBy
b2Nlc3NDb3VudElnbm9yaW5nUHJld2FybWVkKTsKKyAgICBFWFBFQ1RfRVEoMXUsIHdlYlZpZXcu
Z2V0KCkuY29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbC5fc2VydmljZVdvcmtlclByb2Nlc3NDb3Vu
dCk7CiAKICAgICBbW2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9yZV0gcmVtb3ZlRGF0YU9m
VHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmllZFNp
bmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CiAgICAgICAg
IGRvbmUgPSB0cnVlOwpAQCAtMTgyNSw2ICsxODI1LDUxIEBAIFRFU1QoU2VydmljZVdvcmtlcnMs
IFBhcmFsbGVsUHJvY2Vzc0xhdW5jaCkKICAgICB3YWl0VW50aWxTZXJ2aWNlV29ya2VyUHJvY2Vz
c0NvdW50KHByb2Nlc3NQb29sLCAyKTsKIH0KIAorc3RhdGljIHNpemVfdCBsYXVuY2hTZXJ2aWNl
V29ya2VyUHJvY2Vzcyhib29sIGZvcmNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2VzcykKK3sK
KyAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9y
aWdpbnNdOworCisgICAgLy8gU3RhcnQgd2l0aCBhIGNsZWFuIHNsYXRlIGRhdGEgc3RvcmUKKyAg
ICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBl
czpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6
W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKKyAgICAgICAgZG9u
ZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsK
KyAgICBkb25lID0gZmFsc2U7CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworCisgICAgYXV0byBtZXNzYWdl
SGFuZGxlciA9IGFkb3B0TlMoW1tTV01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAg
W1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhh
bmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInN3Il07CisKKyAgICBhdXRvIGhhbmRs
ZXIxID0gYWRvcHROUyhbW1NXU2NoZW1lcyBhbGxvY10gaW5pdF0pOworICAgIGhhbmRsZXIxLT5y
ZXNvdXJjZXMuc2V0KCJzdzE6Ly9ob3N0L21haW4uaHRtbCIsIFJlc291cmNlSW5mbyB7IEAidGV4
dC9odG1sIiwgbWFpbkJ5dGVzIH0pOworICAgIGhhbmRsZXIxLT5yZXNvdXJjZXMuc2V0KCJzdzE6
Ly9ob3N0L3N3LmpzIiwgUmVzb3VyY2VJbmZvIHsgQCJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Iiwg
c2NyaXB0Qnl0ZXMgfSk7CisgICAgaGFuZGxlcjEtPnJlc291cmNlcy5zZXQoInN3MTovL2hvc3Qy
L21haW4uaHRtbCIsIFJlc291cmNlSW5mbyB7IEAidGV4dC9odG1sIiwgbWFpbkJ5dGVzIH0pOwor
ICAgIGhhbmRsZXIxLT5yZXNvdXJjZXMuc2V0KCJzdzE6Ly9ob3N0Mi9zdy5qcyIsIFJlc291cmNl
SW5mbyB7IEAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIsIHNjcmlwdEJ5dGVzIH0pOworICAgIFtj
b25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlcjEuZ2V0KCkgZm9yVVJMU2No
ZW1lOkAic3cxIl07CisKKyAgICBhdXRvICpwcm9jZXNzUG9vbCA9IGNvbmZpZ3VyYXRpb24uZ2V0
KCkucHJvY2Vzc1Bvb2w7CisgICAgW3Byb2Nlc3NQb29sIF9zZXRGb3JjZVNlcGFyYXRlU2Vydmlj
ZVdvcmtlclByb2Nlc3M6IGZvcmNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc107CisgICAg
W3Byb2Nlc3NQb29sIF9yZWdpc3RlclVSTFNjaGVtZVNlcnZpY2VXb3JrZXJzQ2FuSGFuZGxlOkAi
c3cxIl07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbi5nZXQoKV0pOworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJzdzE6Ly9ob3N0L21h
aW4uaHRtbCJdXTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworCisgICAg
d2FpdFVudGlsU2VydmljZVdvcmtlclByb2Nlc3NDb3VudChwcm9jZXNzUG9vbCwgMSk7CisgICAg
cmV0dXJuIHdlYlZpZXcuZ2V0KCkuY29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbC5fd2ViUHJvY2Vz
c0NvdW50SWdub3JpbmdQcmV3YXJtZWQ7Cit9CisKK1RFU1QoU2VydmljZVdvcmtlcnMsIE91dE9m
QW5kSW5Qcm9jZXNzU2VydmljZVdvcmtlcikKK3sKKyAgICBib29sIGZvcmNlU2VwYXJhdGVTZXJ2
aWNlV29ya2VyUHJvY2VzcyA9IGZhbHNlOworICAgIEVYUEVDVF9FUSgxdSwgbGF1bmNoU2Vydmlj
ZVdvcmtlclByb2Nlc3MoZm9yY2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKSk7CisKKyAg
ICBmb3JjZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MgPSB0cnVlOworICAgIEVYUEVDVF9F
USgydSwgbGF1bmNoU2VydmljZVdvcmtlclByb2Nlc3MoZm9yY2VTZXBhcmF0ZVNlcnZpY2VXb3Jr
ZXJQcm9jZXNzKSk7Cit9CisKIFRFU1QoU2VydmljZVdvcmtlcnMsIFRocm90dGxlQ3Jhc2gpCiB7
CiAgICAgQVNTRVJUKG1haW5CeXRlcyk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRleCA0
MmFhZDU0ZTMxMTNhMzgzZjczNDkxNzc0MTUyMTdjZWQ5OTBkNGFkLi41YTI2NDdjNGIzY2M1OGEx
NzMxMDIyMmMzM2M3Y2Y3YWE1MjdiYzgwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAg
LTM2Niw2ICszNjYsNyBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAKICAgICB2b2lkIHRlcm1p
bmF0ZU5ldHdvcmtQcm9jZXNzKCk7CiAgICAgdm9pZCB0ZXJtaW5hdGVTZXJ2aWNlV29ya2VyUHJv
Y2VzcygpOworICAgIHZvaWQgc2V0Rm9yY2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKGJv
b2xlYW4gdmFsdWUpOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgc2Vy
dmVyVHJ1c3RFdmFsdWF0aW9uQ2FsbGJhY2tDYWxsc0NvdW50OwogCmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCAwMTEw
NGFjZjg0YmFiMTI3ZTUxNzNkMzc5MzJlNDI5OWFmYTNjMTU0Li5hZTczZmJhZWJlM2M3MWZkZTgx
MTE3OTQzZTM0Mzc4YWUxOGM4YzBiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTEyNzEsNiArMTI3MSwxMyBAQCB2
b2lkIFRlc3RSdW5uZXI6OnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKCkKICAgICBXS0J1
bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNzYWdlRm9yVGVzdGluZyhJbmplY3RlZEJ1bmRsZTo6
c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBudWxscHRyLCBu
dWxscHRyKTsKIH0KIAordm9pZCBUZXN0UnVubmVyOjpzZXRGb3JjZVNlcGFyYXRlU2VydmljZVdv
cmtlclByb2Nlc3MoYm9vbCB2YWx1ZSkKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
bWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTZXRG
b3JjZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tC
b29sZWFuUmVmPiBtZXNzYWdlQm9keSA9IGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKHZhbHVlKSk7
CisgICAgV0tCdW5kbGVQYWdlUG9zdFN5bmNocm9ub3VzTWVzc2FnZUZvclRlc3RpbmcoSW5qZWN0
ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwg
bWVzc2FnZUJvZHkuZ2V0KCksIG51bGxwdHIpOworfQorCiBzdGF0aWMgdW5zaWduZWQgbmV4dFVJ
U2NyaXB0Q2FsbGJhY2tJRCgpCiB7CiAgICAgc3RhdGljIHVuc2lnbmVkIGNhbGxiYWNrSUQgPSBG
aXJzdFVJU2NyaXB0Q2FsbGJhY2tJRDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5kZXggZjE3MDAxMjk4MzFiNmY5NDcwNzYyZjAz
MGZlY2Q3MDFjNGQzYmEzYi4uZWRjM2EzMmFkNTYyY2ZiYThiMTQwYjliYTdiNGNmOTI2ODBlMTJj
NyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmgKQEAgLTQ2NSw2ICs0NjUsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHRlcm1pbmF0
ZU5ldHdvcmtQcm9jZXNzKCk7CiAgICAgdm9pZCB0ZXJtaW5hdGVTZXJ2aWNlV29ya2VyUHJvY2Vz
cygpOworICAgIHZvaWQgc2V0Rm9yY2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKGJvb2wp
OwogCiAgICAgdm9pZCByZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoSlNWYWx1ZVJlZik7CiAg
ICAgdm9pZCBjYWxsRGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzQ2FsbGJhY2soKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggMGJkNzc2MWJiZmM1
NTA0ZWYyMDU5ZDlhMWYzYjQ0NzU3NjA3NGUwYi4uMTU2YTQzNjNiMTM5MTJlZmMyZGMwMWE2Zjli
OWZjNDVjNTFmNzUwYSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHAKQEAgLTk3MCw2ICs5NzAsOCBAQCBib29sIFRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9D
b25zaXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zLCBSZQogCiAgICAgV0tD
b250ZXh0Q2xlYXJDdXJyZW50TW9kaWZpZXJTdGF0ZUZvclRlc3RpbmcoVGVzdENvbnRyb2xsZXI6
OnNpbmdsZXRvbigpLmNvbnRleHQoKSk7CiAKKyAgICBXS0NvbnRleHRTZXRGb3JjZVNlcGFyYXRl
U2VydmljZVdvcmtlclByb2Nlc3MoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmNvbnRleHQo
KSwgZmFsc2UpOworCiAgICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gc2hvdWxkIGFsc28gZW5z
dXJlIHRoYXQgdGhlcmUgaXMgb25seSBvbmUgcGFnZSBvcGVuLgogCiAgICAgLy8gUmVzZXQgdGhl
IEV2ZW50U2VuZGVyIGZvciBlYWNoIHRlc3QuCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdElu
dm9jYXRpb24uY3BwCmluZGV4IDJmOGIzMDZlMmM4Yzg3M2ZmZDMxNzk2MWM4MTJjNWJjODgyYjYz
Y2QuLjNjZDk5Nzg3MWQ4ZDhmMWM4MGZlMmUzOGJiYTBhN2FhNjIzNDIyZDcgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC0xNjA3LDYgKzE2MDcsMTMgQEAg
V0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9u
b3VzTWVzc2FnZUZyb21JbmplY3RlZEIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
CisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRG
b3JjZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MiKSkgeworICAgICAgICBBU1NFUlQoV0tH
ZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLQm9vbGVhbkdldFR5cGVJRCgpKTsKKyAgICAgICAg
YXV0byBmb3JjZVNlcnZpY2VXb3JrZXJQcm9jZXNzID0gV0tCb29sZWFuR2V0VmFsdWUoc3RhdGlj
X2Nhc3Q8V0tCb29sZWFuUmVmPihtZXNzYWdlQm9keSkpOworICAgICAgICBXS0NvbnRleHRTZXRG
b3JjZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRv
bigpLmNvbnRleHQoKSwgZm9yY2VTZXJ2aWNlV29ya2VyUHJvY2Vzcyk7CisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIH0KKwogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5n
KG1lc3NhZ2VOYW1lLCAiU2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbiIpKSB7
CiAgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tEaWN0aW9uYXJ5
R2V0VHlwZUlEKCkpOwogICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0V2Vi
QXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbihzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlS
ZWY+KG1lc3NhZ2VCb2R5KSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjE4N2E3NzZkMjg5NzNkMDdhNzZlOGNmMDlhZmE5
ZTJjN2U0Mzk2OC4uZDhhMDBjMDk2YWZlNzIzYjg5MWZlOThiN2VhMDEwMDY1YjI1ODcwYSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIxIEBACisyMDE5LTEwLTA0ICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXVzZSBleGlzdGluZyB3ZWIgcHJvY2Vzc2VzIGZvciBydW5u
aW5nIHNlcnZpY2Ugd29ya2VycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjAyMTk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvcG9zdG1l
c3NhZ2UtYWZ0ZXItc3ctcHJvY2Vzcy1jcmFzaC5qczoKKyAgICAgICAgKGFzeW5jLmRvVGVzdCk6
CisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3Bvc3RtZXNz
YWdlLWFmdGVyLXRlcm1pbmF0ZS5qczoKKyAgICAgICAgKGFzeW5jLmRvVGVzdCk6CisgICAgICAg
ICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3Bvc3RtZXNzYWdlLWFmdGVy
LXRlcm1pbmF0aW5nLWh1bmctd29ya2VyLmpzOgorICAgICAgICAoYXN5bmMuZG9UZXN0KToKKyAg
ICAgICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvb25saW5lLmh0dHBzLmh0bWw6CisgICAg
ICAgICogaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLWRpZmZlcmVudC1w
cm9jZXNzLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvc2Vy
dmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLWRpZmZlcmVudC1wcm9jZXNzLmh0dHBzLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtl
ci1wcm9jZXNzLXdvcmtlci5qczogQWRkZWQuCisKIDIwMTktMTAtMDMgIFJ5b3N1a2UgTml3YSAg
PHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVzeW5jIFdQVCBzaGFkb3cgRE9NIHRlc3Rz
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNv
dXJjZXMvcG9zdG1lc3NhZ2UtYWZ0ZXItc3ctcHJvY2Vzcy1jcmFzaC5qcyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9wb3N0bWVzc2FnZS1hZnRlci1z
dy1wcm9jZXNzLWNyYXNoLmpzCmluZGV4IDRmNzIxNjRjYWZkOGNlYzA5YmQ4YTgyZTc2YmFhZGIy
M2U5MDY4ZGUuLmQwODZkYzcyMmI1OTZjZTRiYjgxNDc3Zjk2ZjIwNmYyNGU0MzlkZDcgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9w
b3N0bWVzc2FnZS1hZnRlci1zdy1wcm9jZXNzLWNyYXNoLmpzCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9wb3N0bWVzc2FnZS1hZnRlci1zdy1w
cm9jZXNzLWNyYXNoLmpzCkBAIC0zNywxMCArMzcsMjAgQEAgbmF2aWdhdG9yLnNlcnZpY2VXb3Jr
ZXIuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgZmlu
aXNoU1dUZXN0KCk7CiB9KTsKIAotbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoInJl
c291cmNlcy9wb3N0bWVzc2FnZS1hZnRlci1zdy1wcm9jZXNzLWNyYXNoLXdvcmtlci5qcyIsIHsg
fSkudGhlbihmdW5jdGlvbihyZWdpc3RyYXRpb24pIHsKLSAgICB3b3JrZXIgPSByZWdpc3RyYXRp
b24uaW5zdGFsbGluZzsKLSAgICBsb2coIiogU2VuZGluZyBTdGF0ZSB0byBTZXJ2aWNlIFdvcmtl
ciIpOwotICAgIHdvcmtlci5wb3N0TWVzc2FnZSgiU2V0U3RhdGUiKTsKLSAgICBsb2coIiogQXNr
aW5nIFNlcnZpY2UgV29ya2VyIGlmIGl0IHJlY2VpdmVkIHRoZSBzdGF0ZSIpOwotICAgIHdvcmtl
ci5wb3N0TWVzc2FnZSgiSGFzU3RhdGUiKTsKLX0pOworYXN5bmMgZnVuY3Rpb24gZG9UZXN0KCkK
K3sKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRG
b3JjZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3ModHJ1ZSk7CisgICAgICAgIGF3YWl0IGZl
dGNoKCIiKS50aGVuKCgpID0+IHsgfSwgKCkgPT4geyB9KTsKKyAgICB9CisKKyAgICBuYXZpZ2F0
b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcigicmVzb3VyY2VzL3Bvc3RtZXNzYWdlLWFmdGVyLXN3
LXByb2Nlc3MtY3Jhc2gtd29ya2VyLmpzIiwgeyB9KS50aGVuKGZ1bmN0aW9uKHJlZ2lzdHJhdGlv
bikgeworICAgICAgICB3b3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFsbGluZzsKKyAgICAgICAg
bG9nKCIqIFNlbmRpbmcgU3RhdGUgdG8gU2VydmljZSBXb3JrZXIiKTsKKyAgICAgICAgd29ya2Vy
LnBvc3RNZXNzYWdlKCJTZXRTdGF0ZSIpOworICAgICAgICBsb2coIiogQXNraW5nIFNlcnZpY2Ug
V29ya2VyIGlmIGl0IHJlY2VpdmVkIHRoZSBzdGF0ZSIpOworICAgICAgICB3b3JrZXIucG9zdE1l
c3NhZ2UoIkhhc1N0YXRlIik7CisgICAgfSk7Cit9CisKK2RvVGVzdCgpOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3Bvc3RtZXNz
YWdlLWFmdGVyLXRlcm1pbmF0ZS5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9z
ZXJ2aWNlL3Jlc291cmNlcy9wb3N0bWVzc2FnZS1hZnRlci10ZXJtaW5hdGUuanMKaW5kZXggOWQ1
Zjk3NWVmNmNlOGE3ZDBhMDczZTk5ZTIzYzI2MmI4YmNlNTA1Mi4uNTdmMTBmOTgzZWNkYTFlNThl
YzY4ZTc3Njc2YWI3Njg1NjY5MGQ0MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3Bvc3RtZXNzYWdlLWFmdGVyLXRlcm1pbmF0ZS5q
cworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMv
cG9zdG1lc3NhZ2UtYWZ0ZXItdGVybWluYXRlLmpzCkBAIC0xMCw2ICsxMCwxNSBAQCBuYXZpZ2F0
b3Iuc2VydmljZVdvcmtlci5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgZnVuY3Rpb24oZXZl
bnQpIHsKICAgICAgICAgZmluaXNoU1dUZXN0KCk7CiB9KTsKIAotbmF2aWdhdG9yLnNlcnZpY2VX
b3JrZXIucmVnaXN0ZXIoInJlc291cmNlcy9wb3N0bWVzc2FnZS1lY2hvLXdvcmtlci5qcyIsIHsg
fSkudGhlbihmdW5jdGlvbihyZWdpc3RyYXRpb24pIHsKK2FzeW5jIGZ1bmN0aW9uIGRvVGVzdCgp
Cit7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0
Rm9yY2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKHRydWUpOworICAgICAgICBhd2FpdCBm
ZXRjaCgiIikudGhlbigoKSA9PiB7IH0sICgpID0+IHsgfSk7CisgICAgfQorIAorICAgIGNvbnN0
IHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCJy
ZXNvdXJjZXMvcG9zdG1lc3NhZ2UtZWNoby13b3JrZXIuanMiLCB7IH0pOwogICAgIHJlZ2lzdHJh
dGlvbi5pbnN0YWxsaW5nLnBvc3RNZXNzYWdlKCJNZXNzYWdlIDEiKTsKLX0pOworfQorCitkb1Rl
c3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNl
L3Jlc291cmNlcy9wb3N0bWVzc2FnZS1hZnRlci10ZXJtaW5hdGluZy1odW5nLXdvcmtlci5qcyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9wb3N0bWVz
c2FnZS1hZnRlci10ZXJtaW5hdGluZy1odW5nLXdvcmtlci5qcwppbmRleCBlMGYyZThmZTkzNmIx
M2NlNGUzZjA1NGE1OGZlZDQ0YjA2NDJiMzU3Li45NDhlOTA5MTJmODhmZWZmMTk2MTMwYWRhZDU4
MGM0YWYzM2I2YWFlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMv
c2VydmljZS9yZXNvdXJjZXMvcG9zdG1lc3NhZ2UtYWZ0ZXItdGVybWluYXRpbmctaHVuZy13b3Jr
ZXIuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3Vy
Y2VzL3Bvc3RtZXNzYWdlLWFmdGVyLXRlcm1pbmF0aW5nLWh1bmctd29ya2VyLmpzCkBAIC0yMyw3
ICsyMywxNyBAQCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5hZGRFdmVudExpc3RlbmVyKCJtZXNz
YWdlIiwgZnVuY3Rpb24oZXZlbnQpIHsKICAgICB9CiB9KTsKIAotbmF2aWdhdG9yLnNlcnZpY2VX
b3JrZXIucmVnaXN0ZXIoInJlc291cmNlcy9wb3N0bWVzc2FnZS1lY2hvLXdvcmtlci1tYXloYW5n
LmpzIiwgeyB9KS50aGVuKGZ1bmN0aW9uKHJlZ2lzdHJhdGlvbikgeworYXN5bmMgZnVuY3Rpb24g
ZG9UZXN0KCkKK3sKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1
bm5lci5zZXRGb3JjZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3ModHJ1ZSk7CisgICAgICAg
IGF3YWl0IGZldGNoKCIiKS50aGVuKCgpID0+IHsgfSwgKCkgPT4geyB9KTsKKyAgICB9CisgCisg
ICAgY29uc3QgcmVnaXN0cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVn
aXN0ZXIoInJlc291cmNlcy9wb3N0bWVzc2FnZS1lY2hvLXdvcmtlci1tYXloYW5nLmpzIiwgeyB9
KTsKICAgICB3b3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFsbGluZzsKICAgICB3b3JrZXIucG9z
dE1lc3NhZ2UoIkhBTkciKTsKLX0pOworfQorCitkb1Rlc3QoKTsKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL29ubGluZS5odHRwcy5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL29ubGluZS5odHRwcy5odG1sCmluZGV4
IGZhNThkN2RmMTc0YWYzODFkYTQyMGM1MmQyODliMjUyZGRjMWI1NGEuLmQyODgxMjUxZGNjZjA0
OTdmYTY3ZDg2ODI4MWNkNTg4N2NlMDA3ODMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
d3B0L3NlcnZpY2Utd29ya2Vycy9vbmxpbmUuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvb25saW5lLmh0dHBzLmh0bWwKQEAgLTksNiArOSwxMSBA
QCB2YXIgc2NvcGUgPSAiIjsKIHZhciBhY3RpdmVXb3JrZXI7CiAKIHByb21pc2VfdGVzdChhc3lu
YyAodGVzdCkgPT4geworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0
UnVubmVyLnNldEZvcmNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzcyh0cnVlKTsKKyAgICAg
ICAgYXdhaXQgZmV0Y2goIiIpLnRoZW4oKCkgPT4geyB9LCAoKSA9PiB7IH0pOworICAgIH0KKwog
ICAgIHZhciByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdp
c3Rlcigib25saW5lLXdvcmtlci5qcyIsIHsgc2NvcGUgOiBzY29wZSB9KTsKICAgICBhY3RpdmVX
b3JrZXIgPSByZWdpc3RyYXRpb24uYWN0aXZlOwogICAgIGlmIChhY3RpdmVXb3JrZXIpCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3Jr
ZXItZGlmZmVyZW50LXByb2Nlc3MuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLWRpZmZlcmVudC1wcm9jZXNzLmh0
dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMTlhNzg4NmJmOGY2ZTRjMTM3Nzg4NjI3Mjk2
ZGJmNWE0NzM0OWRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2Vy
dmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLWRpZmZlcmVudC1wcm9jZXNzLmh0dHBzLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBTZXR1cCB3b3JrZXIgCitQQVNTIFRlc3Qg
dGhhdCBzZXJ2aWNlIHdvcmtlciBpcyBpbiBhIGRpZmZlcmVudCBwcm9jZXNzIAorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIt
ZGlmZmVyZW50LXByb2Nlc3MuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZp
Y2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1kaWZmZXJlbnQtcHJvY2Vzcy5odHRwcy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjYwYWY1ODEzMGFkMzJkY2VhMDRmMzdkNDQ4OWQ3YTIzM2ViNWZlODkKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2Vydmlj
ZS13b3JrZXItZGlmZmVyZW50LXByb2Nlc3MuaHR0cHMuaHRtbApAQCAtMCwwICsxLDQwIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFy
bmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+Cit2YXIg
YWN0aXZlV29ya2VyOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRGb3JjZVNlcGFyYXRl
U2VydmljZVdvcmtlclByb2Nlc3ModHJ1ZSk7CisgICAgICAgIGF3YWl0IGZldGNoKCIiKS50aGVu
KCgpID0+IHsgfSwgKCkgPT4geyB9KTsKKyAgICB9CisKKyAgICB2YXIgcmVnaXN0cmF0aW9uID0g
YXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoInNlcnZpY2Utd29ya2VyLXBy
b2Nlc3Mtd29ya2VyLmpzIiwgeyBzY29wZSA6ICIiIH0pOworICAgIGFjdGl2ZVdvcmtlciA9IHJl
Z2lzdHJhdGlvbi5hY3RpdmU7CisgICAgaWYgKGFjdGl2ZVdvcmtlcikKKyAgICAgICAgcmV0dXJu
OworICAgIGFjdGl2ZVdvcmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOworICAgIHJldHVy
biBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgYWN0aXZlV29ya2VyLmFkZEV2ZW50
TGlzdGVuZXIoJ3N0YXRlY2hhbmdlJywgKCkgPT4geworICAgICAgICAgICAgaWYgKGFjdGl2ZVdv
cmtlci5zdGF0ZSA9PT0gImFjdGl2YXRlZCIpCisgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwor
ICAgICAgICB9KTsKKyAgICB9KTsKK30sICJTZXR1cCB3b3JrZXIiKTsKKworcHJvbWlzZV90ZXN0
KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgbGV0IHJlc29sdmU7CisgICAgY29uc3QgcHJvbWlzZSA9
IG5ldyBQcm9taXNlKHIgPT4gcmVzb2x2ZSA9IHIpOworICAgIG5hdmlnYXRvci5zZXJ2aWNlV29y
a2VyLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZSkgPT4gcmVzb2x2ZShlLmRhdGEpLCB7
b25jZTogdHJ1ZX0pOyAKKyAgICBhY3RpdmVXb3JrZXIucG9zdE1lc3NhZ2UoIlBJRCIpOworICAg
IGFzc2VydF9ub3RfZXF1YWxzKGF3YWl0IHByb21pc2UsIHdpbmRvdy5pbnRlcm5hbHMucHJvY2Vz
c0lkKTsKK30sICJUZXN0IHRoYXQgc2VydmljZSB3b3JrZXIgaXMgaW4gYSBkaWZmZXJlbnQgcHJv
Y2VzcyIpOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1wcm9jZXNzLXdv
cmtlci5qcyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdv
cmtlci1wcm9jZXNzLXdvcmtlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTI5YTM0ODMzMDg5OTkyYmJlZWM0
NDk1MWNlMzhiZTY0ZmI3MTg1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXByb2Nlc3Mtd29ya2VyLmpzCkBAIC0w
LDAgKzEsMyBAQAorc2VsZi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKGV2ZW50KSA9PiB7
CisgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKHNlbGYuaW50ZXJuYWxzID8gaW50ZXJuYWxz
LnByb2Nlc3NJZCA6ICJuZWVkcyBpbnRlcm5hbCBBUEkiKTsKK30pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380221</attachid>
            <date>2019-10-04 07:35:35 -0700</date>
            <delta_ts>2019-10-10 06:20:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202195-20191004163533.patch</filename>
            <type>text/plain</type>
            <size>67479</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNzA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTc1M2JmMzkzOTE5YjQ4
Yjc4ZDc5OWNkMjJmMDE3MmVhNDQzMzViZC4uNmNjY2NkMjU4MmQ4ZDJjMzNlMGEyMjJhMTJjMDFi
ZWRjNTVmMjg0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE5LTEwLTA0ICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXVzZSBleGlzdGluZyB3
ZWIgcHJvY2Vzc2VzIGZvciBydW5uaW5nIHNlcnZpY2Ugd29ya2VycworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMTk1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvd3B0L3NlcnZpY2Ut
d29ya2Vycy9zZXJ2aWNlLXdvcmtlci1kaWZmZXJlbnQtcHJvY2Vzcy5odHRwcy5odG1sIGFuZCBB
UEkgdGVzdHMuCisKKyAgICAgICAgVXBkYXRlIGltcGxlbWVudGF0aW9uIHRvIGJlIGFibGUgdG8g
cnVuIHNlcnZpY2Ugd29ya2VycyBqb2ludGx5IHdpdGggcGFnZS4KKyAgICAgICAgQWRkIGludGVy
bmFscyBBUEkgdG8gZ2V0IHRoZSBwcm9jZXNzIElELgorICAgICAgICBUaGlzIGFsbG93cyB3cml0
aW5nIHRlc3RzIHRvIGNoZWNrIHdoZXRoZXIgYSBzZXJ2aWNlIHdvcmtlciBpcyBpbiB0aGUgc2Ft
ZSBwcm9jZXNzIGFzIGl0cyBjbGllbnQgb3Igbm90LgorCisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpwcm9jZXNzSWQgY29uc3Qp
OgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuaWRsOgorICAgICAgICAqIHRlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySW50ZXJuYWxzOjpwcm9jZXNzSWQgY29u
c3QpOgorICAgICAgICAqIHRlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5oOgorICAgICAg
ICAqIHRlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGw6CisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudHMpOgorICAg
ICAgICBEbyBub3QgcmVnaXN0ZXIgZHVtbXkgZG9jdW1lbnRzIHdob3NlIHNvbGUgcHVycG9zZSBp
cyB0byBkbyBsb2FkaW5nIGZvciBzZXJ2aWNlIHdvcmtlcnMuCisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
V0NvbnRleHRNYW5hZ2VyOjpzZXRDb25uZWN0aW9uKToKKyAgICAgICAgTm93IHRoYXQgY29ubmVj
dGlvbnMgbWlnaHQgYmUgY3JlYXRlZCBtb3JlIHRoYW4gb25jZSBvbiBhIGdpdmVuIHByb2Nlc3Ms
CisgICAgICAgIE1ha2Ugc3VyZSB0aGF0IHRoZSByZXBsYWNlZCBjb25uZWN0aW9uIGlzIHN0b3Bw
ZWQgb3IgdGhlcmUgaXMgbm8gcmVwbGFjZWQgY29ubmVjdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6
OlNXQ29udGV4dE1hbmFnZXI6OnN0b3BBbGxTZXJ2aWNlV29ya2Vycyk6CisgICAgICAgIEFkZCBy
b3V0aW5lIHRvIHN0b3AgYWxsIHNlcnZpY2Ugd29ya2VycyBydW5uaW5nIGluIGEgZ2l2ZW4gd2Vi
IHByb2Nlc3MuCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFu
YWdlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1dDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6
aXNTdG9wcGVkIGNvbnN0KToKKwogMjAxOS0xMC0wMyAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBh
cHBsZS5jb20+CiAKICAgICAgICAgW0NTUyBTaGFkb3cgUGFydHNdIENvcnJlY3QgaW50ZXJhY3Rp
b24gd2l0aCBvdGhlciBwc2V1ZG8gZWxlbWVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYTUxNzBlYTMxNTg3ZmU5
YTllMTIzNWFiZGQxMzUxZTFkMmUyYzhlNy4uN2Q3MGI2NWQxYmNiMmQyNGE4NDE5MmQ2NzdmNGJl
NGFlNzFhZjg4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5MiBAQAorMjAxOS0xMC0wNCAgeW91ZW5u
IGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV1c2UgZXhpc3Rpbmcgd2Vi
IHByb2Nlc3NlcyBmb3IgcnVubmluZyBzZXJ2aWNlIHdvcmtlcnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjE5NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gbmV0d29yayBwcm9jZXNzIGFza3Mg
Zm9yIGEgc2VydmljZSB3b3JrZXIgY29udGV4dCBjb25uZWN0aW9uLAorICAgICAgICB3ZSBub3cg
aXRlcmF0ZSB0aHJvdWdoIGV4aXN0aW5nIHdlYiBwcm9jZXNzZXMgYW5kIHJldXNlIG9uZSBpZiBi
b3RoIHNlc3Npb24KKyAgICAgICAgYW5kIHJlZ2lzdHJhYmxlIGRvbWFpbiBtYXRjaC4KKyAgICAg
ICAgV2UgdGhlbiBhc2sgdGhlIHdlYiBwcm9jZXNzIHRvIGNyZWF0ZSBhIGNvbnRleHQgY29ubmVj
dGlvbiB0byB0aGUgbmV0d29yayBwcm9jZXNzLgorCisgICAgICAgIFdoZW4gbmV0d29yayBwcm9j
ZXNzIG5vIGxvbmdlciBuZWVkcyB0aGUgY29ubmVjdGlvbiwgaXQgaW5zdHJ1Y3RzIHRoZSBVSVBy
b2Nlc3MKKyAgICAgICAgdGhhdCB3aWxsIHVwZGF0ZSBpdHMgc3RhdGUgc28gdGhhdCB0aGUgd2Vi
IHByb2Nlc3MgaXMgbm8gbG9uZ2VyIGNvbnNpZGVyZWQgYXMgcnVubmluZworICAgICAgICBzZXJ2
aWNlIHdvcmtlcnMuCisgICAgICAgIFVJUHJvY2VzcyB0aGVuIGluc3RydWN0cyB0aGUgd2ViIHBy
b2Nlc3MgdG8gc3RvcCBpdHMgc2VydmljZSB3b3JrZXJzIGFuZCBpdHMgY29ubmVjdGlvbi4KKwor
ICAgICAgICBMYXRlciBvbiwgdGhlIHNhbWUgd2ViIHByb2Nlc3MgbWF5IGJlIHJldXNlZCBmb3Ig
cnVubmluZyBzZXJ2aWNlIHdvcmtlcnMgaW4gd2hpY2ggY2FzZQorICAgICAgICBhIG5ldyBjb25u
ZWN0aW9uIHdpbGwgcmVwbGFjZSB0aGUgc3RvcHBlZCBjb25uZWN0aW9uLgorCisgICAgICAgIFNp
bWlsYXJseSwgb24gbmV0d29yayBwcm9jZXNzIGNyYXNoLCBhbGwgd2ViIHByb2Nlc3MgcnVubmlu
ZyBzZXJ2aWNlIHdvcmtlcnMgYXJlIHVwZGF0ZWQKKyAgICAgICAgc28gdGhhdCB0aGV5IGFyZSBu
byBsb25nZXIgY29uc2lkZXJlZCBhcyBydW5uaW5nIHNlcnZpY2Ugd29ya2Vycy4KKworICAgICAg
ICBBZGQgYSBib29sZWFuIHN0YXRlIHRvIFdlYlByb2Nlc3NQb29sIHRvIGNvbnRyb2wgd2hldGhl
ciBjcmVhdGluZyBhIHNlcGFyYXRlIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MuCisKKyAgICAgICAg
V2Ugbm8gbG9uZ2VyIHRlcm1pbmF0ZSB0aGUgd2ViIHByb2Nlc3Mgd2hlbiBzdG9wcGluZyBzZXJ2
aWNlIHdvcmtlcnMgb3Igd2hlbiBuZXR3b3JrIHByb2Nlc3MgY3Jhc2guCisgICAgICAgIFdlIHVz
ZSB0aGUgZW5hYmxlVGVybWluYXRpb24vZGlzYWJsZVRlcm1pbmF0aW9uIGF0IGNvbnRleHQgY29u
bmVjdGlvbiBzdGFydC9zdG9wIHRpbWUuCisgICAgICAgIFdlIGNvbnNpZGVyIHRoYXQgdGhlIGNv
bnRleHQgY29ubmVjdGlvbiBpcyBzaW1pbGFyIHRvIHJ1bm5pbmcgYSBwYWdlIGluIHRoZSBwcm9j
ZXNzLgorCisgICAgICAgIE5ldHdvcmtQcm9jZXNzIGlzIGhhbmRsaW5nIHRoZSBtYW5hZ2VtZW50
IG9mIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3NlcyBieSBjaGVja2luZyBmb3IgY2xpZW50cy4KKyAg
ICAgICAgSW4gY2FzZSB0aGVyZSBpcyBubyBjbGllbnQsIHRoZSBwcm9jZXNzIGlzIHRlcm1pbmF0
ZWQuCisgICAgICAgIFRoaXMgcmVtb3ZlcyB0aGUgbmVlZCBmb3IgdGhlIFdlYlByb2Nlc3NQb29s
IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgdGltZXIuCisgICAgICAgIFRoaXMgcGF0Y2ggcmVtb3Zl
cyB0aGlzIHRpbWVyLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjbG9zZVNXQ29u
dGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246On5XZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVyRGVz
dGluYXRpb25JRCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6Y29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnNldFRocm90dGxlU3RhdGUpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6Cisg
ICAgICAgIChXS0NvbnRleHRTZXRGb3JjZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tOgorICAgICAgICAoLVtXS1Byb2Nl
c3NQb29sIF9zZXRGb3JjZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3M6XSk6CisgICAgICAg
ICgtW1dLUHJvY2Vzc1Bvb2wgX3dlYlBhZ2VDb250ZW50UHJvY2Vzc0NvdW50XSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp3b3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2Vy
TmVlZGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNz
YWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpy
ZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3Nlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpjcmVhdGVXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OnRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OmNsZWFyV2ViUHJvY2Vzc0lzUGxheWluZ0F1ZGlibGVNZWRpYSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjpzZXRGb3JjZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3Mp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJv
eHk6OmNyZWF0ZUZvclNlcnZpY2VXb3JrZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Byb3h5OjptYXliZVNodXREb3duKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvck1haW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQcm94eTo6ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Byb3h5OjplbmFibGVTZXJ2aWNlV29ya2Vycyk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJv
eHk6OmlzTWF0Y2hpbmdSZWdpc3RyYWJsZURvbWFpbiBjb25zdCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6bV91c2VyQWdlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6dGVybWluYXRlV29ya2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnN5bmNUZXJtaW5hdGVXb3JrZXIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c3RvcCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1l
c3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6Om5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudHMp
OgorCiAyMDE5LTEwLTAzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbR1RLXSBXZWJBdXRvbWF0aW9uOiBtYWtlIHNldFdpbmRvd1JlY3Qgc3lu
Y2hyb25vdXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA1ODQyMDZmNTE2
OWNjOWQ0MTIxNjBmMGMxM2IzMmZmOWUyNjg3NGFkLi40YzJmNzAwZTZiNmRhNjIzYzhiZTAzM2Qx
MjUwNDY2OTVkNTAyZjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0x
OTIsNiArMTkyLDcgQEAKICNpbmNsdWRlIDx3dGYvTGFuZ3VhZ2UuaD4KICNpbmNsdWRlIDx3dGYv
TWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4K
KyNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAjaW5jbHVkZSA8d3RmL1VSTEhlbHBlcnMuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CkBAIC01MjMzLDQgKzUyMzQsOSBAQCB2b2lkIElu
dGVybmFsczo6YWRkUHJlZmV0Y2hMb2FkRXZlbnRMaXN0ZW5lcihIVE1MTGlua0VsZW1lbnQmIGxp
bmssIFJlZlB0cjxFdmVudAogICAgIH0KIH0KIAoraW50IEludGVybmFsczo6cHJvY2Vzc0lkKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gZ2V0Q3VycmVudFByb2Nlc3NJRCgpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCA1ODcwZGU0
NjMyMjBmZTk4MjhlZjRiYjE3NmI2ZTBmOTcyMzEwZTgwLi45NDAyZmNjMWQ3YzgxNTI4NGMwOGYw
ZTYxMjc4M2I5YTk5MTA3NmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTg4
Miw2ICs4ODIsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZFByZWZldGNoTG9hZEV2ZW50TGlz
dGVuZXIoSFRNTExpbmtFbGVtZW50JiwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYpOwogCisgICAg
aW50IHByb2Nlc3NJZCgpIGNvbnN0OworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEludGVybmFs
cyhEb2N1bWVudCYpOwogICAgIERvY3VtZW50KiBjb250ZXh0RG9jdW1lbnQoKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCA0NjhlZjIzMWQ3NGUxOTg2NWMwNDk0
M2IyN2MyNjRjNjE2ZWFmYjlhLi42ODE5MGM5NWM5MTg3YWZjZWQ0NDgyNDkxMDU2ZDNlNWM2NDk1
NWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC03MjMsNiArNzIzLDcg
QEAgZW51bSBDb21wb3NpdGluZ1BvbGljeSB7CiAKICAgICBib29sZWFuIGlzQW55V29ya2xldEds
b2JhbFNjb3BlQWxpdmUoKTsKIAorICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIHByb2Nlc3NJ
ZDsKICAgICBET01TdHJpbmcgc2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIoRG9jdW1lbnQg
ZG9jdW1lbnQpOwogICAgIFByb21pc2U8dm9pZD4gc3RvcmVSZWdpc3RyYXRpb25zT25EaXNrKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVy
bmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMu
Y3BwCmluZGV4IDU1NDQ1NjE1ZTBlMWU4MWVjYTE0YjgxNmMzZThlNDkxYjczN2IzZjQuLjBmZjgx
NmI3YjhiMDdhZDg3N2Q1ODMxMzg2MGJjMzRmZWRkODZhZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcApAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgIkZldGNoRXZlbnQuaCIKICNpbmNsdWRlICJKU0ZldGNoUmVzcG9uc2UuaCIK
ICNpbmNsdWRlICJTV0NvbnRleHRNYW5hZ2VyLmgiCisjaW5jbHVkZSA8d3RmL1Byb2Nlc3NJRC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEwMiw2ICsxMDMsMTEgQEAgYm9vbCBTZXJ2
aWNlV29ya2VySW50ZXJuYWxzOjppc1Rocm90dGxlYWJsZSgpIGNvbnN0CiAgICAgcmV0dXJuIGNv
bm5lY3Rpb24gPyBjb25uZWN0aW9uLT5pc1Rocm90dGxlYWJsZSgpIDogdHJ1ZTsKIH0KIAoraW50
IFNlcnZpY2VXb3JrZXJJbnRlcm5hbHM6OnByb2Nlc3NJZCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGdldEN1cnJlbnRQcm9jZXNzSUQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlcklu
dGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxz
LmgKaW5kZXggODkzOTU3NDRiOTg3ZDIzNjQzNGJmNTEyY2M3MTMzODcyN2JiY2Y2MS4uODk5OWY0
MWViZmVjZTNhZTllYmZmYzg1ZDA0OGE3MmNjM2FkMzAyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmgKQEAgLTUzLDYgKzUzLDggQEAgcHVi
bGljOgogCiAgICAgYm9vbCBpc1Rocm90dGxlYWJsZSgpIGNvbnN0OwogCisgICAgaW50IHByb2Nl
c3NJZCgpIGNvbnN0OworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFNlcnZpY2VXb3JrZXJJbnRl
cm5hbHMoU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlkbAppbmRleCA1MzVkZDgwNWY4OGMzNjFm
MmIwZjRkNjZlYzBjNjAzZTg5NmJmM2NmLi42NGRiMGM0ZmQ4ZTQ3NjY3ZWYxOTcyOGM3ZWMxNzZm
NjFmMjM3YzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3Jr
ZXJJbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtl
ckludGVybmFscy5pZGwKQEAgLTM4LDQgKzM4LDYgQEAKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBET01TdHJpbmcgcHJvY2Vzc05hbWU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4g
aXNUaHJvdHRsZWFibGU7CisKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBwcm9jZXNzSWQ7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlclByb3ZpZGVyLmNwcAppbmRleCBlZWQyNjZkNTZiOTdlOTFiZDdjOTQ4MGNiNWMyMzMz
NWQ4ZjJlM2NiLi41OWIzMzI1NTM2NjExMWQyMGVkZDQwMzliZDU0NzdjZGZkZWQ1ZWRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclByb3Zp
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
clByb3ZpZGVyLmNwcApAQCAtMjksNiArMjksOSBAQAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRl
ICJGcmFtZUxvYWRlci5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiU1dDbGllbnRDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKIApA
QCAtNjQsNiArNjcsOCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJQcm92aWRlcjo6cmVnaXN0ZXJTZXJ2
aWNlV29ya2VyQ2xpZW50cygpCiB7CiAgICAgc2V0TWF5SGF2ZVJlZ2lzdGVyZWRTZXJ2aWNlV29y
a2VycygpOwogICAgIGZvciAoYXV0byogZG9jdW1lbnQgOiBEb2N1bWVudDo6YWxsRG9jdW1lbnRz
KCkpIHsKKyAgICAgICAgaWYgKCFkb2N1bWVudC0+cGFnZSgpIHx8IGRvY3VtZW50LT5wYWdlKCkt
Pm1haW5GcmFtZSgpLmxvYWRlcigpLmNsaWVudCgpLmlzU2VydmljZVdvcmtlckZyYW1lTG9hZGVy
Q2xpZW50KCkpCisgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKFNjaGVtZVJlZ2lz
dHJ5OjpjYW5TZXJ2aWNlV29ya2Vyc0hhbmRsZVVSTFNjaGVtZShkb2N1bWVudC0+dXJsKCkucHJv
dG9jb2woKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpKQogICAgICAgICAgICAgZG9jdW1lbnQt
PnNldFNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKCZzZXJ2aWNlV29ya2VyQ29ubmVjdGlvbigpKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TV0NvbnRleHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwCmluZGV4IDc3NGYzODVmMThhYmJhODEyODhiNzkx
NGFjOWM5MWViMjUxNDRmMzUuLmFlZDEzZDczMGU2OTJjOTA3MTNjNWY5ZDA0OWQyMDI0OTg3MmQy
ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NX
Q29udGV4dE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwCkBAIC00Miw3ICs0Miw3IEBAIFNXQ29udGV4dE1h
bmFnZXImIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpCiAKIHZvaWQgU1dDb250ZXh0TWFu
YWdlcjo6c2V0Q29ubmVjdGlvbihzdGQ6OnVuaXF1ZV9wdHI8Q29ubmVjdGlvbj4mJiBjb25uZWN0
aW9uKQogewotICAgIEFTU0VSVCghbV9jb25uZWN0aW9uKTsKKyAgICBBU1NFUlQoIW1fY29ubmVj
dGlvbiB8fCBtX2Nvbm5lY3Rpb24tPmlzU3RvcHBlZCgpKTsKICAgICBtX2Nvbm5lY3Rpb24gPSBX
VEZNb3ZlKGNvbm5lY3Rpb24pOwogfQogCkBAIC0xNzcsNiArMTc3LDE2IEBAIFNXQ29udGV4dE1h
bmFnZXI6OlNlcnZpY2VXb3JrZXJUZXJtaW5hdGlvblJlcXVlc3Q6OlNlcnZpY2VXb3JrZXJUZXJt
aW5hdGlvblJlcXVlCiAgICAgbV90aW1lb3V0VGltZXIuc3RhcnRPbmVTaG90KHRpbWVvdXQpOwog
fQogCit2b2lkIFNXQ29udGV4dE1hbmFnZXI6OnN0b3BBbGxTZXJ2aWNlV29ya2VycygpCit7Cisg
ICAgYXV0byBzZXJ2aWNlV29ya2VycyA9IFdURk1vdmUobV93b3JrZXJNYXApOworICAgIGZvciAo
YXV0byYgc2VydmljZVdvcmtlciA6IHNlcnZpY2VXb3JrZXJzLnZhbHVlcygpKSB7CisgICAgICAg
IHNlcnZpY2VXb3JrZXItPnNldEFzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQoKTsKKyAgICAgICAg
bV9wZW5kaW5nU2VydmljZVdvcmtlclRlcm1pbmF0aW9uUmVxdWVzdHMuYWRkKHNlcnZpY2VXb3Jr
ZXItPmlkZW50aWZpZXIoKSwgbWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VyVGVybWluYXRpb25SZXF1
ZXN0PigqdGhpcywgc2VydmljZVdvcmtlci0+aWRlbnRpZmllcigpLCB3b3JrZXJUZXJtaW5hdGlv
blRpbWVvdXQpKTsKKyAgICAgICAgc2VydmljZVdvcmtlci0+dGhyZWFkKCkuc3RvcChbXSB7IH0p
OworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFn
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1h
bmFnZXIuaAppbmRleCA2MjhjM2YzODkyYmVlZTI0MmMyZWY3ZmY5ZWUyMjE2MGZkZGMyMTM1Li5i
MDQyYWRiODFkNDc3YjU4MGUwZjlmMWZhMWRkOGNkYjU5ZWYxZGQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdl
ci5oCkBAIC02NSw2ICs2NSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjbGFp
bShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSA9
IDA7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzVGhyb3R0bGVhYmxlKCkgY29uc3QgPSAwOwor
CisgICAgICAgIGJvb2wgaXNTdG9wcGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0b3BwZWQ7IH0K
KworICAgIHByb3RlY3RlZDoKKyAgICAgICAgYm9vbCBtX2lzU3RvcHBlZCB7IGZhbHNlIH07CiAg
ICAgfTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29ubmVjdGlvbihzdGQ6OnVuaXF1
ZV9wdHI8Q29ubmVjdGlvbj4mJik7CkBAIC04Nyw2ICs5MiwxMSBAQCBwdWJsaWM6CiAKICAgICBT
ZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkqIHdvcmtlckJ5SUQoU2VydmljZVdvcmtlcklkZW50aWZp
ZXIgaWRlbnRpZmllcikgeyByZXR1cm4gbV93b3JrZXJNYXAuZ2V0KGlkZW50aWZpZXIpOyB9CiAK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BBbGxTZXJ2aWNlV29ya2VycygpOworCisgICAg
c3RhdGljIGNvbnN0ZXhwciBTZWNvbmRzIHdvcmtlclRlcm1pbmF0aW9uVGltZW91dCB7IDEwX3Mg
fTsKKyAgICBzdGF0aWMgY29uc3RleHByIFNlY29uZHMgc3luY1dvcmtlclRlcm1pbmF0aW9uVGlt
ZW91dCB7IDEwMF9tcyB9OyAvLyBPbmx5IHVzZWQgYnkgbGF5b3V0IHRlc3RzLgorCiBwcml2YXRl
OgogICAgIFNXQ29udGV4dE1hbmFnZXIoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAKaW5kZXggMTI4Yzg5YzRkY2M0NTQwMTJiYjBlZmMzMzJkYzg1ZDBlM2EzNDhjMi4u
ZDViMmE1MzkzYzk0NjEwODJjNTk0NmIxMWNlZWE2YTBhMTlmNTA5MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHAKQEAgLTIxOCwxOSArMjE4LDE1IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2Vp
dmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSkgewotICAgICAgICBBU1NFUlQobV9zd0NvbnRleHRDb25uZWN0
aW9uKTsKLSAgICAgICAgaWYgKG1fc3dDb250ZXh0Q29ubmVjdGlvbikgeworICAgICAgICBpZiAo
bV9zd0NvbnRleHRDb25uZWN0aW9uKQogICAgICAgICAgICAgbV9zd0NvbnRleHRDb25uZWN0aW9u
LT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQorICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKGRlY29k
ZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAgICAgQVNTRVJUKG1fc3dDb250ZXh0
Q29ubmVjdGlvbik7Ci0gICAgICAgIGlmIChtX3N3Q29udGV4dENvbm5lY3Rpb24pIHsKKyAgICAg
ICAgaWYgKG1fc3dDb250ZXh0Q29ubmVjdGlvbikKICAgICAgICAgICAgIG1fc3dDb250ZXh0Q29u
bmVjdGlvbi0+ZGlkUmVjZWl2ZUZldGNoVGFza01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgcmV0dXJuOwogICAgIH0K
ICNlbmRpZgogCkBAIC04ODYsNyArODgyLDIwIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbigpCiB2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjplc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFJlZ2lzdHJh
YmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4pCiB7CiAgICAgaWYgKGF1dG8qIHNlcnZlciA9
IG1fbmV0d29ya1Byb2Nlc3MtPnN3U2VydmVyRm9yU2Vzc2lvbklmRXhpc3RzKG1fc2Vzc2lvbklE
KSkKLSAgICAgICAgbV9zd0NvbnRleHRDb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24+KG1fbmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocmVnaXN0cmFi
bGVEb21haW4pLCAqc2VydmVyLCBtX2Nvbm5lY3Rpb24uZ2V0KCkpOworICAgICAgICBtX3N3Q29u
dGV4dENvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bj4oKnRoaXMsIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCAqc2VydmVyKTsKK30KKwordm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xvc2VTV0NvbnRleHRDb25uZWN0aW9u
KCkKK3sKKyAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOworfQorCit2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9M
b25nZXJOZWVkZWQoKQoreworICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJXZWJQcm9j
ZXNzICVsbHUgbm8gbG9uZ2VyIHVzZWZ1bCBmb3IgcnVubmluZyBzZXJ2aWNlIHdvcmtlcnMiLCB3
ZWJQcm9jZXNzSWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgIG1fbmV0d29ya1Byb2Nlc3Mt
PnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6OldvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQgeyB3ZWJQcm9jZXNz
SWRlbnRpZmllcigpIH0sIDApOworCisgICAgbV9zd0NvbnRleHRDb25uZWN0aW9uID0gbnVsbHB0
cjsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggNmY3ZjdmYTcxY2Q3
MzgwNGNjODlkOWZlMmEzMzFjYTE2NzZlMDk3YS4uMTE2YmE4Nzg1OTc5ODEwNDRlZWI3NDI5YjIw
ZDM1ZmZiMmM4ZTI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMTU1LDYgKzE1NSwx
MCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5
KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhhc0FjdGl2aXR5KT4m
Jik7CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgdm9pZCBzZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZp
ZXIpOwogCkBAIC0yMTQsNiArMjE4LDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiAgICAgdm9pZCBlc3RhYmxpc2hTV1NlcnZlckNvbm5lY3Rpb24oKTsKICAgICB2b2lk
IGVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
Jik7CisgICAgdm9pZCBjbG9zZVNXQ29udGV4dENvbm5lY3Rpb24oKTsKICAgICB2b2lkIHVucmVn
aXN0ZXJTV0Nvbm5lY3Rpb24oKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgppbmRleCAyYWQzMTNhYjgyNGQ1MWRhY2I2ODI5ZTNkOWIxNWUwYjc3
NWNhM2Q5Li4zYmNkMGViMTJhMjYyMDE3ZjJhMDI0YjRlMzViMWM2NWI3MTQwOWFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTgxLDYgKzgxLDcgQEAg
bWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIg
ewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBFc3RhYmxpc2hTV1NlcnZlckNvbm5l
Y3Rpb24oKQogICAgIEVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4gZG9tYWluKQorICAgIENsb3NlU1dDb250ZXh0Q29ubmVjdGlvbigpCiAjZW5k
aWYKIAogICAgIENyZWF0ZU5ld01lc3NhZ2VQb3J0Q2hhbm5lbChzdHJ1Y3QgV2ViQ29yZTo6TWVz
c2FnZVBvcnRJZGVudGlmaWVyIHBvcnQxLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVu
dGlmaWVyIHBvcnQyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmNwcAppbmRleCA1ODA5NGQ2MjhjYjA4MzA1Yjk3NWE4MTE5MmRjY2IzY2JjOTQ0
ZTFhLi5mZTNlNmM3NjNkOTU3ZjIwZDJmMGVlZGEzMTM3NjZiMzAwYTJiZGUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMzAs
NyArMzAsNyBAQAogCiAjaW5jbHVkZSAiRm9ybURhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJM
b2dnaW5nLmgiCi0jaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbmNsdWRlICJOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2suaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrTWVzc2FnZXMuaCIKICNpbmNs
dWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKQEAgLTQxLDEwICs0MSw5IEBACiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihOZXR3b3JrUHJv
Y2VzcyYgbmV0d29ya1Byb2Nlc3MsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21h
aW4sIFNXU2VydmVyJiBzZXJ2ZXIsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikK
K1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBSZWdpc3Ry
YWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBTV1NlcnZlciYgc2VydmVyKQogICAgIDog
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pKQot
ICAgICwgbV9pcGNDb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCi0gICAgLCBtX25ldHdv
cmtQcm9jZXNzKG5ldHdvcmtQcm9jZXNzKQorICAgICwgbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24p
CiAgICAgLCBtX3NlcnZlcihtYWtlV2Vha1B0cihzZXJ2ZXIpKQogewogICAgIHNlcnZlci5hZGRD
b250ZXh0Q29ubmVjdGlvbigqdGhpcyk7CkBAIC01MiwxNCArNTEsMTcgQEAgV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oTmV0d29y
a1Byb2Nlc3MmIG4KIAogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp+V2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkKIHsKLSAgICBjb25uZWN0aW9uQ2xvc2VkKCk7CisgICAg
YXV0byBmZXRjaGVzID0gV1RGTW92ZShtX29uZ29pbmdGZXRjaGVzKTsKKyAgICBmb3IgKGF1dG8m
IGZldGNoIDogZmV0Y2hlcy52YWx1ZXMoKSkKKyAgICAgICAgZmV0Y2gtPmZhaWwoUmVzb3VyY2VF
cnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHsgfSwgIlNlcnZpY2UgV29ya2Vy
IGNvbnRleHQgY2xvc2VkIl9zIH0pOworCiAgICAgaWYgKG1fc2VydmVyICYmIG1fc2VydmVyLT5j
b250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKCkp
ID09IHRoaXMpCiAgICAgICAgIG1fc2VydmVyLT5yZW1vdmVDb250ZXh0Q29ubmVjdGlvbigqdGhp
cyk7CiB9CiAKIElQQzo6Q29ubmVjdGlvbiogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
OjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faXBjQ29u
bmVjdGlvbi5wdHIoKTsKKyAgICByZXR1cm4gJm1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCk7CiB9
CiAKIHVpbnQ2NF90IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRl
ckRlc3RpbmF0aW9uSUQoKSBjb25zdApAQCAtNjcsMTMgKzY5LDYgQEAgdWludDY0X3QgV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNv
bnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjpjb25uZWN0aW9uQ2xvc2VkKCkKLXsKLSAgICBhdXRvIGZldGNoZXMgPSBXVEZNb3ZlKG1f
b25nb2luZ0ZldGNoZXMpOwotICAgIGZvciAoYXV0byYgZmV0Y2ggOiBmZXRjaGVzLnZhbHVlcygp
KQotICAgICAgICBmZXRjaC0+ZmFpbChSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJ
bnRlcm5hbCwgMCwgeyB9LCAiU2VydmljZSBXb3JrZXIgY29udGV4dCBjbG9zZWQiX3MgfSk7Ci19
Ci0KIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2Vy
dmljZVdvcmtlckNsaWVudChjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgZGVz
dGluYXRpb25JZGVudGlmaWVyLCBjb25zdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYgbWVzc2Fn
ZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBzb3VyY2VPcmlnaW4pCiB7CiAgICAgaWYgKCFtX3NlcnZlcikKQEAgLTEzNSw5ICsxMzAsNyBA
QCB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZGlkRmluaXNoU2tpcFdhaXRp
bmcodWludDY0X3QgY2FsbGJhY2tJRCkKIAogdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246OmNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCkKIHsKLSAgICBSRUxFQVNFX0xPRyhT
ZXJ2aWNlV29ya2VyLCAiU2VydmljZSB3b3JrZXIgcHJvY2VzcyBpcyBubyBsb25nZXIgbmVlZGVk
LCB0ZXJtaW5hdGluZyBpdCIpOwotICAgIHRlcm1pbmF0ZSgpOwotICAgIGNvbm5lY3Rpb25DbG9z
ZWQoKTsKKyAgICBtX2Nvbm5lY3Rpb24uc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2Vy
TmVlZGVkKCk7CiB9CiAKIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzZXRU
aHJvdHRsZVN0YXRlKGJvb2wgaXNUaHJvdHRsZWFibGUpCkBAIC0xNDYsMTEgKzEzOSw2IEBAIHZv
aWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzZXRUaHJvdHRsZVN0YXRlKGJvb2wg
aXNUaHJvdHRsZWFibGUpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb246OlNldFRocm90dGxlU3RhdGUgeyBpc1Rocm90dGxlYWJsZSB9KTsKIH0KIAotdm9p
ZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnRlcm1pbmF0ZSgpCi17Ci0gICAgc2Vu
ZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlRlcm1pbmF0ZVByb2Nl
c3MoKSk7Ci19Ci0KIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzdGFydEZl
dGNoKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb250
ZW50Q29ubmVjdGlvbiwgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgRmV0Y2hJZGVudGlmaWVyIGNvbnRlbnRGZXRjaElkZW50
aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9u
cywgY29uc3QgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiByZWZl
cnJlcikKIHsKICAgICBhdXRvIGZldGNoSWRlbnRpZmllciA9IEZldGNoSWRlbnRpZmllcjo6Z2Vu
ZXJhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uaAppbmRleCBhM2M2NGVkMTI3OGRmNjdhOTllMDA1OTdhNDQyMGVhMjE3NjQ5MmFkLi5iYWQw
YzYwNDE4M2E5ZjUyNGExYWQ4YTcwYTYwZjQ3N2JiMmYxNTc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC00OSwyMCArNDksMTYgQEAg
Y2xhc3MgU2Vzc2lvbklEOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgTmV0d29ya1By
b2Nlc3M7CitjbGFzcyBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKIAogY2xhc3MgV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIDogcHVibGljIFdlYkNvcmU6OlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbiwgcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6
TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24oTmV0d29ya1Byb2Nlc3MmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBXZWJD
b3JlOjpTV1NlcnZlciYsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYpOworICAgIFdlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFdlYkNvcmU6OlNXU2VydmVyJik7CiAgICAgfldlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpOwogCi0gICAgSVBDOjpDb25uZWN0aW9uKiBpcGND
b25uZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pcGNDb25uZWN0aW9uLnB0cigpOyB9Ci0KICAg
ICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAKLSAgICB2b2lkIHRlcm1pbmF0
ZSgpOwotCiAgICAgdm9pZCBzdGFydEZldGNoKFBBTDo6U2Vzc2lvbklELCBSZWY8SVBDOjpDb25u
ZWN0aW9uPiYmLCBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3Jl
OjpGZXRjaElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMm
LCBjb25zdCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9p
ZCBjYW5jZWxGZXRjaChXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJD
b3JlOjpGZXRjaElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsK
ICAgICB2b2lkIGNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoV2ViQ29yZTo6U1dTZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyLCBXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CkBAIC05NSw4ICs5MSw3IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIGNvbm5lY3Rpb25DbG9zZWQoKTsKIAotICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+
IG1faXBjQ29ubmVjdGlvbjsKLSAgICBSZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29ya1Byb2Nl
c3M7CisgICAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fY29ubmVjdGlvbjsKICAg
ICBXZWFrUHRyPFdlYkNvcmU6OlNXU2VydmVyPiBtX3NlcnZlcjsKIAogICAgIEhhc2hNYXA8U2Vy
dmljZVdvcmtlckZldGNoVGFzazo6SWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVy
PiBtX29uZ29pbmdGZXRjaElkZW50aWZpZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLQ29udGV4dC5jcHAKaW5kZXggY2ZmZWIwZWY3YTJhMzU0YTViZjcxNWMyYTM1ZGI0MWFj
YTc4MGYwNi4uMjZkMGU0ZGMwZWY2MDY3ODgxOTA0Njg0YjMzMTRlOTU2ZmIzODJhNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCkBAIC02NTcsMyArNjU3
LDggQEAgdm9pZCBXS0NvbnRleHRDbGVhckxlZ2FjeVByaXZhdGVCcm93c2luZ0xvY2FsU3RvcmFn
ZShXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgdm8KICAgICAgICAgICAgIGNhbGxiYWNrKGNvbnRl
eHQpOwogICAgIH0pOwogfQorCit2b2lkIFdLQ29udGV4dFNldEZvcmNlU2VwYXJhdGVTZXJ2aWNl
V29ya2VyUHJvY2VzcyhXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgYm9vbCBmb3JjZVNlcnZpY2VX
b3JrZXJQcm9jZXNzKQoreworICAgIFdlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpLT5zZXRGb3Jj
ZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MoZm9yY2VTZXJ2aWNlV29ya2VyUHJvY2Vzcyk7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRl
LmgKaW5kZXggOTI0OTVjYWRmZDAzMTIyY2ZjMjNkNDc0NTNlMDc4YjFlYjkyNDdjZS4uMWEwNDk2
OTIyZjVlZjExMWVhZGMwZGEwNWQ5ZjUxYTYwYWNjODdkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaApAQCAtMTI0LDYgKzEyNCw4IEBA
IFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFN5bmNMb2NhbFN0b3JhZ2UoV0tDb250ZXh0UmVmIGNv
bnRleHRSZWYsIHZvaWQqIGNvbnRleHQsCiB0eXBlZGVmIHZvaWQgKCpXS0NvbnRleHRDbGVhckxl
Z2FjeVByaXZhdGVCcm93c2luZ0xvY2FsU3RvcmFnZUNhbGxiYWNrKSh2b2lkKiBmdW5jdGlvbkNv
bnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0Q2xlYXJMZWdhY3lQcml2YXRlQnJvd3Np
bmdMb2NhbFN0b3JhZ2UoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIHZvaWQqIGNvbnRleHQsIFdL
Q29udGV4dENsZWFyTGVnYWN5UHJpdmF0ZUJyb3dzaW5nTG9jYWxTdG9yYWdlQ2FsbGJhY2sgY2Fs
bGJhY2spOwogCitXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRGb3JjZVNlcGFyYXRlU2Vydmlj
ZVdvcmtlclByb2Nlc3MoV0tDb250ZXh0UmVmIGNvbnRleHQsIGJvb2wgZm9yY2VTZXJ2aWNlV29y
a2VyUHJvY2Vzcyk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCmluZGV4IDRh
ZDM0Nzg3ZTg3MWRjNTE2ZGQ3MGRmMTE4YWY2Y2E1MjJlNzZkZmUuLjhkN2RhY2YzNmEwNjhiMmVl
YTExMTE0ZDYwNWM2YjI1YWRjNmFjM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCkBAIC00NTIsNiArNDUyLDExIEBAIHN0YXRp
YyBOU0RpY3Rpb25hcnkgKnBvbGljaWVzSGFzaE1hcFRvRGljdGlvbmFyeShjb25zdCBIYXNoTWFw
PFN0cmluZywgSGFzaE1hcDxTCiAgICAgX3Byb2Nlc3NQb29sLT50ZXJtaW5hdGVTZXJ2aWNlV29y
a2VyUHJvY2Vzc2VzKCk7CiB9CiAKKy0gKHZvaWQpX3NldEZvcmNlU2VwYXJhdGVTZXJ2aWNlV29y
a2VyUHJvY2VzczooQk9PTClmb3JjZVNlcnZpY2VXb3JrZXJQcm9jZXNzCit7CisgICAgX3Byb2Nl
c3NQb29sLT5zZXRGb3JjZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MoZm9yY2VTZXJ2aWNl
V29ya2VyUHJvY2Vzcyk7Cit9CisKIC0gKHBpZF90KV9uZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIK
IHsKICAgICByZXR1cm4gX3Byb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIoKTsK
QEAgLTUwOCwxMiArNTEzLDEyIEBAIHN0YXRpYyBOU0RpY3Rpb25hcnkgKnBvbGljaWVzSGFzaE1h
cFRvRGljdGlvbmFyeShjb25zdCBIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxTCiAKIC0gKHNpemVf
dClfd2ViUGFnZUNvbnRlbnRQcm9jZXNzQ291bnQKIHsKLSAgICBhdXRvIGFsbFdlYlByb2Nlc3Nl
cyA9IF9wcm9jZXNzUG9vbC0+cHJvY2Vzc2VzKCk7CisgICAgYXV0byByZXN1bHQgPSBfcHJvY2Vz
c1Bvb2wtPnByb2Nlc3NlcygpLnNpemUoKTsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0g
ICAgcmV0dXJuIGFsbFdlYlByb2Nlc3Nlcy5zaXplKCkgLSBfcHJvY2Vzc1Bvb2wtPnNlcnZpY2VX
b3JrZXJQcm94aWVzQ291bnQoKTsKLSNlbHNlCi0gICAgcmV0dXJuIGFsbFdlYlByb2Nlc3Nlcy5z
aXplKCk7CisgICAgaWYgKF9wcm9jZXNzUG9vbC0+Zm9yY2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQ
cm9jZXNzKCkpCisgICAgICAgIHJlc3VsdCAtPSBfcHJvY2Vzc1Bvb2wtPnNlcnZpY2VXb3JrZXJQ
cm94aWVzQ291bnQoKTsKICNlbmRpZgorICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIC0gKHZvaWQp
X3ByZWNvbm5lY3RUb1NlcnZlcjooTlNVUkwgKilzZXJ2ZXJVUkwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKaW5k
ZXggYjU4MDIzODcxZGI1NmZhZDMyNWM4NmU1MzEzOGRlZDI2Y2QwMWUyZC4uYWZmZjAwM2JjMjM4
YTFhYzI0NGU4ODM4YmI3MTVlZDljNmE5OGQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKQEAgLTExMSw2
ICsxMTEsNyBAQAogLSAoTlNVSW50ZWdlcilfbWF4aW11bVN1c3BlbmRlZFBhZ2VDb3VudCBXS19B
UElfQVZBSUxBQkxFKG1hY29zKDEwLjE0LjQpLCBpb3MoMTIuMikpOwogLSAoTlNVSW50ZWdlcilf
cHJvY2Vzc0NhY2hlQ2FwYWNpdHkgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNC40KSwgaW9z
KDEyLjIpKTsKIC0gKE5TVUludGVnZXIpX3Byb2Nlc3NDYWNoZVNpemUgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3NldEZvcmNl
U2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2VzczooQk9PTClmb3JjZVNlcnZpY2VXb3JrZXJQcm9j
ZXNzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7
CiAKIC8vIFRlc3Qgb25seS4gUmV0dXJucyB3ZWIgcHJvY2Vzc2VzIHJ1bm5pbmcgd2ViIHBhZ2Vz
IChkb2VzIG5vdCBpbmNsdWRlIHdlYiBwcm9jZXNzZXMgcnVubmluZyBzZXJ2aWNlIHdvcmtlcnMp
CiAtIChzaXplX3QpX3dlYlBhZ2VDb250ZW50UHJvY2Vzc0NvdW50IFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoMTAuMTMuNCksIGlvcygxMS4zKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAyNzczYTA2ZTVh
NTA0MTNkMzQ4ZTcxNTcxZTUxYmY2ZDhkNjA5MTlkLi5jZmNiOGU4ZWJlZTRhMmU3ZDBmNGQyOGNh
OGMxYWM0MzczOWQ1MjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTEyMjksNiArMTIyOSwxMiBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyhSZWdpcwogewogICAgIG1fcHJvY2Vzc1Bvb2wuZXN0YWJsaXNoV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKCp0aGlzLCBXVEZNb3ZlKHJlZ2lz
dHJhYmxlRG9tYWluKSwgc2Vzc2lvbklEKTsKIH0KKwordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
Ojp3b3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBXZWJQcm9j
ZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKGlkZW50aWZpZXIpKQorICAgICAgICBwcm9j
ZXNzLT5kaXNhYmxlU2VydmljZVdvcmtlcnMoKTsKK30KICNlbmRpZgogCiB2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgdWludDY0X3QgY3VycmVudFF1
b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0X3Qgc3BhY2VSZXF1aXJlZCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDx1aW50NjRfdD4gcXVvdGEpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaAppbmRleCAyZDZhZGJlM2JhM2Q1ZmNlNWM5NmFlZjYzYWVmYmNmNmVm
MmNkMDYzLi4yMTQyN2E0MmFhMzU4MjhlNjhiNDQzZDQyOTM5MmRlOWEwNTM3ODgzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaApAQCAtMjQ1LDYgKzI0NSw3IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiAgICAgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgUEFMOjpTZXNzaW9uSUQpOwor
ICAgIHZvaWQgd29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllcik7CiAjZW5kaWYKIAogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VTcGFj
ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiwgdWludDY0X3Qg
cXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTaXplLCB1aW50NjRfdCBzcGFjZVJlcXVpcmVkLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPHVpbnQ2NF90PiBxdW90YSk+JiYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGE2ZGJiN2M1YzkzNjMzYzIxNDRmZWQ5ZGY5NjY5
ZjNiZjUzYWY2MzQuLjQ2ZTkwYTMyOWFiNGJkNWU0YTViY2QxZTk3MWU0ZmEyNTA5MTViMGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTYyLDYgKzYyLDcgQEAgbWVzc2FnZXMg
LT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCiAgICAgRXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluLCBQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCisgICAgV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xv
bmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyKQogI2VuZGlm
CiAKICAgICBSZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3Ry
dWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4sIHVpbnQ2NF90IHF1b3RhLCB1aW50NjRf
dCBjdXJyZW50U2l6ZSwgdWludDY0X3Qgc3BhY2VSZXF1aXJlZCkgLT4gKE9wdGlvbmFsPHVpbnQ2
NF90PiBuZXdRdW90YSkgQXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcAppbmRleCA5OTFlMjdlMmNkZWI2ZDEyOTBlZTBmNTliZWU4OWM4ODI0YjZmMmNkLi5i
MmRhZGQxMjI5MzE4OGI5YjFlZTllYjdiNWM5MmNmNjVhMjQ3MjQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC02NzQsNiArNjc0LDExIEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZChOZXR3b3JrUHJvY2Vzc1Byb3h5
JiBuZXR3b3JrUHJvY2Vzc1ByCiAgICAgYXV0byYgbmV3TmV0d29ya1Byb2Nlc3MgPSBlbnN1cmVO
ZXR3b3JrUHJvY2VzcygpOwogICAgIGZvciAoYXV0byYgcmVwbHkgOiBwZW5kaW5nUmVwbGllcykK
ICAgICAgICAgbmV3TmV0d29ya1Byb2Nlc3MuZ2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCpy
ZXBseS5maXJzdCwgV1RGTW92ZShyZXBseS5zZWNvbmQpKTsKKworI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKKyAgICB3aGlsZSAoIW1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5pc0VtcHR5KCkp
CisgICAgICAgIG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5iZWdpbigpLT52YWx1ZS0+ZGlzYWJs
ZVNlcnZpY2VXb3JrZXJzKCk7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6Z2V0
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5
LCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246
OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQpAQCAtNzAwLDI0ICs3MDUsNTcgQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
KE5ldHdvcmtQcm8KICAgICB9CiAKICAgICBSZWdpc3RyYWJsZURvbWFpbldpdGhTZXNzaW9uSUQg
cmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEIHsgUmVnaXN0cmFibGVEb21haW4geyByZWdp
c3RyYWJsZURvbWFpbiB9LCBzZXNzaW9uSUQgfTsKLSAgICBpZiAobV9zZXJ2aWNlV29ya2VyUHJv
Y2Vzc2VzLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRCkpCisgICAgaWYg
KG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbldpdGhT
ZXNzaW9uSUQpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJXZWJQcm9j
ZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
IHByb2Nlc3MgYWxyZWFkeSBjcmVhdGVkIik7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAg
ICBpZiAobV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmlzRW1wdHkoKSkKICAgICAgICAgc2VuZFRv
QWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpSZWdpc3RlclNlcnZpY2VXb3JrZXJD
bGllbnRzIHsgfSk7CiAKLSAgICBhdXRvIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBXZWJQ
cm9jZXNzUHJveHk6OmNyZWF0ZUZvclNlcnZpY2VXb3JrZXJzKCp0aGlzLCBXVEZNb3ZlKHJlZ2lz
dHJhYmxlRG9tYWluKSwgKndlYnNpdGVEYXRhU3RvcmUpOwotICAgIG1fc2VydmljZVdvcmtlclBy
b2Nlc3Nlcy5hZGQoV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbldpdGhTZXNzaW9uSUQpLCBzZXJ2
aWNlV29ya2VyUHJvY2Vzc1Byb3h5LnB0cigpKTsKKyAgICBXZWJQcm9jZXNzUHJveHkqIHNlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHkgeyBudWxscHRyIH07CisgICAgaWYgKCFtX2ZvcmNlU2Vydmlj
ZVdvcmtlclByb2Nlc3MpIHsKKyAgICAgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogbV9wcm9jZXNz
ZXMpIHsKKyAgICAgICAgICAgIGlmIChwcm9jZXNzID09IG1fcHJld2FybWVkUHJvY2VzcyB8fCBw
cm9jZXNzID09IG1fZHVtbXlQcm9jZXNzUHJveHkpCisgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICBpZiAoJnByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSAhPSB3ZWJzaXRl
RGF0YVN0b3JlKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKCFw
cm9jZXNzLT5pc01hdGNoaW5nUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5ID0gcHJvY2Vzcy5nZXQoKTsKKyAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9j
ZXNzUHJveHktPmVuYWJsZVNlcnZpY2VXb3JrZXJzKCk7CisKKyAgICAgICAgICAgIFJFTEVBU0Vf
TE9HKFNlcnZpY2VXb3JrZXIsICJXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4
dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHJldXNpbmcgYW4gZXhpc3Rpbmcgd2ViIHByb2Nl
c3MgJXAiLCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KSB7
CisgICAgICAgIGF1dG8gbmV3UHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVG
b3JTZXJ2aWNlV29ya2VycygqdGhpcywgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksICp3ZWJz
aXRlRGF0YVN0b3JlKTsKKyAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSA9IG5ld1By
b2Nlc3NQcm94eS5wdHIoKTsKIAotICAgIHVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCk7Ci0gICAg
aW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3Moc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwgd2Vic2l0
ZURhdGFTdG9yZSk7CisgICAgICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJXZWJQcm9j
ZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
IGNyZWF0aW5nIGEgbmV3IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgJXAiLCBzZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5KTsKIAotICAgIGF1dG8qIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHlQdHIg
PSBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LnB0cigpOwotICAgIG1fcHJvY2Vzc2VzLmFwcGVu
ZChXVEZNb3ZlKHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkpKTsKKyAgICAgICAgdXBkYXRlUHJv
Y2Vzc0Fzc2VydGlvbnMoKTsKKyAgICAgICAgaW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MobmV3UHJv
Y2Vzc1Byb3h5LCB3ZWJzaXRlRGF0YVN0b3JlKTsKKyAgICAgICAgbV9wcm9jZXNzZXMuYXBwZW5k
KFdURk1vdmUobmV3UHJvY2Vzc1Byb3h5KSk7CisgICAgfQogCi0gICAgc2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eVB0ci0+ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQobV9zZXJ2aWNlV29y
a2VyUHJlZmVyZW5jZXMgPyBtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDogbV9k
ZWZhdWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnN0b3JlKCkpOworICAgIEFTU0VSVCghbV9z
ZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Np
b25JRCkpOworICAgIG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5hZGQoV1RGTW92ZShyZWdpc3Ry
YWJsZURvbWFpbldpdGhTZXNzaW9uSUQpLCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KTsKKwor
ICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250
ZXh0KG1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzID8gbV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5j
ZXMudmFsdWUoKSA6IG1fZGVmYXVsdFBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zdG9yZSgpKTsK
ICAgICBpZiAoIW1fc2VydmljZVdvcmtlclVzZXJBZ2VudC5pc051bGwoKSkKLSAgICAgICAgc2Vy
dmljZVdvcmtlclByb2Nlc3NQcm94eVB0ci0+c2V0U2VydmljZVdvcmtlclVzZXJBZ2VudChtX3Nl
cnZpY2VXb3JrZXJVc2VyQWdlbnQpOworICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
LT5zZXRTZXJ2aWNlV29ya2VyVXNlckFnZW50KG1fc2VydmljZVdvcmtlclVzZXJBZ2VudCk7Cit9
CisKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlbW92ZUZyb21TZXJ2aWNlV29ya2VyUHJvY2Vzc2Vz
KFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKK3sKKyAgICBSZWdpc3RyYWJsZURvbWFpbldpdGhT
ZXNzaW9uSUQga2V5IHsgcHJvY2Vzcy5yZWdpc3RyYWJsZURvbWFpbigpLCBwcm9jZXNzLndlYnNp
dGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSB9OworICAgIEFTU0VSVChtX3NlcnZpY2VXb3JrZXJQ
cm9jZXNzZXMuY29udGFpbnMoa2V5KSk7CisgICAgQVNTRVJUKG1fc2VydmljZVdvcmtlclByb2Nl
c3Nlcy5nZXQoa2V5KSA9PSAmcHJvY2Vzcyk7CisgICAgbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2Vz
LnJlbW92ZShrZXkpOwogfQogI2VuZGlmCiAKQEAgLTExMDAsOCArMTEzOCw5IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykK
IAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAocHJvY2Vzcy0+aXNSdW5uaW5n
U2VydmljZVdvcmtlcnMoKSkgewotICAgICAgICBhdXRvKiByZW1vdmVkUHJvY2VzcyA9IG1fc2Vy
dmljZVdvcmtlclByb2Nlc3Nlcy50YWtlKFJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRCB7
IHByb2Nlc3MtPnJlZ2lzdHJhYmxlRG9tYWluKCksIHByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUo
KS5zZXNzaW9uSUQoKSB9KTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChyZW1vdmVkUHJvY2Vzcywg
cmVtb3ZlZFByb2Nlc3MgPT0gcHJvY2Vzcyk7CisgICAgICAgIGF1dG8gaXRlcmF0b3IgPSBtX3Nl
cnZpY2VXb3JrZXJQcm9jZXNzZXMuZmluZChSZWdpc3RyYWJsZURvbWFpbldpdGhTZXNzaW9uSUQg
eyBwcm9jZXNzLT5yZWdpc3RyYWJsZURvbWFpbigpLCBwcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3Jl
KCkuc2Vzc2lvbklEKCkgfSk7CisgICAgICAgIGlmIChpdGVyYXRvciAhPSBtX3NlcnZpY2VXb3Jr
ZXJQcm9jZXNzZXMuZW5kKCkgJiYgaXRlcmF0b3ItPnZhbHVlID09IHByb2Nlc3MpCisgICAgICAg
ICAgICBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMucmVtb3ZlKGl0ZXJhdG9yKTsKICAgICAgICAg
dXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMoKTsKICAgICB9CiAjZW5kaWYKQEAgLTExMTYsMTUgKzEx
NTUsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2VzcyhXZWJQcm9jZXNz
UHJveHkqIHByb2Nlc3MpCiAjZW5kaWYKIAogICAgIHJlbW92ZVByb2Nlc3NGcm9tT3JpZ2luQ2Fj
aGVTZXQoKnByb2Nlc3MpOwotCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgZG8gYmV0dGVyIHRoYW4gdGhpcy4gRm9yIG5vdywgd2UganVzdCBkZXN0
cm95IHRoZSBTZXJ2aWNlV29ya2VyIHByb2Nlc3MKLSAgICAvLyB3aGVuZXZlciB0aGVyZSBpcyBu
byByZWd1bGFyIFdlYkNvbnRlbnQgcHJvY2VzcyByZW1haW5pbmcuCi0gICAgaWYgKG1fcHJvY2Vz
c2VzLnNpemUoKSA9PSBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuc2l6ZSgpKSB7Ci0gICAgICAg
IGlmICghbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzVGVybWluYXRpb25UaW1lci5pc0FjdGl2ZSgp
KQotICAgICAgICAgICAgbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzVGVybWluYXRpb25UaW1lci5z
dGFydE9uZVNob3Qoc2VydmljZVdvcmtlclRlcm1pbmF0aW9uRGVsYXkpOwotICAgIH0KLSNlbmRp
ZgogfQogCiBXZWJQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yUmVnaXN0
cmFibGVEb21haW4oV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9yZSwgV2ViUGFnZVBy
b3h5KiBwYWdlLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pCkBA
IC0xMjE0LDggKzEyNDQsNiBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3Jl
YXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJOgogICAgIGF1dG8gcGFn
ZSA9IHByb2Nlc3MtPmNyZWF0ZVdlYlBhZ2UocGFnZUNsaWVudCwgV1RGTW92ZShwYWdlQ29uZmln
dXJhdGlvbikpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIEFTU0VSVCghcHJv
Y2Vzcy0+aXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSk7Ci0KICAgICBpZiAoIW1fc2VydmljZVdv
cmtlclByZWZlcmVuY2VzKSB7CiAgICAgICAgIG1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzID0g
cGFnZS0+cHJlZmVyZW5jZXNTdG9yZSgpOwogICAgICAgICBmb3IgKGF1dG8qIHNlcnZpY2VXb3Jr
ZXJQcm9jZXNzIDogbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnZhbHVlcygpKQpAQCAtMTY5Niw2
ICsxNzI0LDExIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmNsZWFyQ2FjaGVkQ3JlZGVudGlhbHMo
KQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjp0ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcygpCiB7Cisj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIHdoaWxlICghbV9zZXJ2aWNlV29ya2VyUHJv
Y2Vzc2VzLmlzRW1wdHkoKSkKKyAgICAgICAgbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmJlZ2lu
KCktPnZhbHVlLT5kaXNhYmxlU2VydmljZVdvcmtlcnMoKTsKKyNlbmRpZgorCiAgICAgaWYgKCFt
X25ldHdvcmtQcm9jZXNzKQogICAgICAgICByZXR1cm47CiAgICAgCkBAIC0yNTAyLDQgKzI1MzUs
MTkgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6Y2xlYXJXZWJQcm9jZXNzSXNQbGF5aW5nQXVkaWJs
ZU1lZGlhKFdlYkNvcmU6OlByb2Nlc3NJZGVudGkKICAgICB9CiB9CiAKK3ZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnNldEZvcmNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzcyhib29sIGZvcmNlU2Vy
dmljZVdvcmtlclByb2Nlc3MpCit7CisgICAgaWYgKG1fZm9yY2VTZXJ2aWNlV29ya2VyUHJvY2Vz
cyA9PSBmb3JjZVNlcnZpY2VXb3JrZXJQcm9jZXNzKQorICAgICAgICByZXR1cm47CisKKyAgICBS
RUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiV2ViUHJvY2Vzc1Bvb2w6OnNldEZvcmNlU2VwYXJh
dGVTZXJ2aWNlV29ya2VyUHJvY2VzcyAlZCIsIGZvcmNlU2VydmljZVdvcmtlclByb2Nlc3MpOwor
CisgICAgbV9mb3JjZVNlcnZpY2VXb3JrZXJQcm9jZXNzID0gZm9yY2VTZXJ2aWNlV29ya2VyUHJv
Y2VzczsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgd2hpbGUgKCFtX3NlcnZpY2VX
b3JrZXJQcm9jZXNzZXMuaXNFbXB0eSgpKQorICAgICAgICBtX3NlcnZpY2VXb3JrZXJQcm9jZXNz
ZXMuYmVnaW4oKS0+dmFsdWUtPmRpc2FibGVTZXJ2aWNlV29ya2VycygpOworI2VuZGlmCisgICAg
dGVybWluYXRlTmV0d29ya1Byb2Nlc3MoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCAwMjEwMTRlYzEyMGNi
NDJkOTg1YmU3ZDQ3ZDVhZGExZDFhNWY2NGUyLi40YjQ2MWZhOTIyYjZiMWE0ZGFkMDcxOWUwNzkw
OTdjY2Y1NTcxNWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgK
QEAgLTM4Myw2ICszODMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJQYWdl
SUQoV2ViUGFnZVByb3h5SWRlbnRpZmllcikgY29uc3Q7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQogICAgIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJveHkmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYm
LCBQQUw6OlNlc3Npb25JRCk7CisgICAgdm9pZCByZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nl
c3NlcyhXZWJQcm9jZXNzUHJveHkmKTsKICAgICBzaXplX3Qgc2VydmljZVdvcmtlclByb3hpZXND
b3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5zaXplKCk7IH0K
ICAgICB2b2lkIHNldEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlcihib29s
IGFsbG93cykgeyBtX2FsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlciA9IGFs
bG93czsgfQogICAgIGJvb2wgYWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2Vy
KCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3Jr
ZXI7IH0KQEAgLTUyNiw2ICs1MjcsOSBAQCBwdWJsaWM6CiAgICAgCiAgICAgUGx1Z0luQXV0b1N0
YXJ0UHJvdmlkZXImIHBsdWdJbkF1dG9TdGFydFByb3ZpZGVyKCkgeyByZXR1cm4gbV9wbHVnSW5B
dXRvU3RhcnRQcm92aWRlcjsgfQogCisgICAgdm9pZCBzZXRGb3JjZVNlcGFyYXRlU2VydmljZVdv
cmtlclByb2Nlc3MoYm9vbCBmb3JjZVNlcnZpY2VXb3JrZXJQcm9jZXNzKTsKKyAgICBib29sIGZv
cmNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fZm9yY2VT
ZXJ2aWNlV29ya2VyUHJvY2VzczsgfQorCiBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0
aWFsaXplKCk7CiAKQEAgLTgwMyw2ICs4MDcsNyBAQCBwcml2YXRlOgogI2Vsc2UKICAgICBib29s
IG1faXNEZWxheWVkV2ViUHJvY2Vzc0xhdW5jaERpc2FibGVkIHsgZmFsc2UgfTsKICNlbmRpZgor
ICAgIGJvb2wgbV9mb3JjZVNlcnZpY2VXb3JrZXJQcm9jZXNzIHsgZmFsc2UgfTsKIH07CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcAppbmRleCBmZmFmYTdlYThmNzg4NDRmYzY0NTk0OTM4NDgzZjRhZTU0MjFkMjQxLi5k
MGQ4NWE5NGNiZmEyNTJmYjBmMWI3Nzk4MDNiNzk3MTc3ZGFhNDA5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCBSZWY8
V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvclNlcnZpY2VXb3JrZXJz
KFdlYlByb2Nlc3NQb29sJiBwcgogewogICAgIGF1dG8gcHJveHkgPSBhZG9wdFJlZigqbmV3IFdl
YlByb2Nlc3NQcm94eShwcm9jZXNzUG9vbCwgJndlYnNpdGVEYXRhU3RvcmUsIElzUHJld2FybWVk
OjpObykpOwogICAgIHByb3h5LT5tX3JlZ2lzdHJhYmxlRG9tYWluID0gV1RGTW92ZShyZWdpc3Ry
YWJsZURvbWFpbik7Ci0gICAgcHJveHktPm1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uID0gU2Vy
dmljZVdvcmtlckluZm9ybWF0aW9uIHsgV2ViUGFnZVByb3h5SWRlbnRpZmllcjo6Z2VuZXJhdGUo
KSwgUGFnZUlkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKKyAgICBwcm94eS0+ZW5hYmxlU2Vydmlj
ZVdvcmtlcnMoKTsKICAgICBwcm94eS0+Y29ubmVjdCgpOwogICAgIHJldHVybiBwcm94eTsKIH0K
QEAgLTkyMCw2ICs5MjAsOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6bWF5YmVTaHV0RG93bihB
bGxvd1Byb2Nlc3NDYWNoaW5nIGFsbG93UHJvY2Vzc0NhY2hpbmcpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKKyAgICBpZiAoaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSkKKyAgICAgICAgcmV0
dXJuOworCiAgICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6OlRlcm1pbmF0ZWQgfHwgIWNhblRlcm1p
bmF0ZUF1eGlsaWFyeVByb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNDM4LDYgKzE0
NDEsOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JN
YWluRnJhbWUoY29uc3QgVVJMJiB1cmwpCiAKICAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0g
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfTsKICAgICBpZiAobV9yZWdpc3RyYWJs
ZURvbWFpbiAmJiAqbV9yZWdpc3RyYWJsZURvbWFpbiAhPSByZWdpc3RyYWJsZURvbWFpbikgewor
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICAgICAgZGlzYWJsZVNlcnZpY2VXb3JrZXJz
KCk7CisjZW5kaWYKICAgICAgICAgLy8gTnVsbCBvdXQgcmVnaXN0cmFibGUgZG9tYWluIHNpbmNl
IHRoaXMgcHJvY2VzcyBoYXMgbm93IGJlZW4gdXNlZCBmb3Igc2V2ZXJhbCBkb21haW5zLgogICAg
ICAgICBtX3JlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB9
OwogICAgICAgICByZXR1cm47CkBAIC0xNTMyLDYgKzE1MzgsMjUgQEAgdm9pZCBXZWJQcm9jZXNz
UHJveHk6OnVwZGF0ZVNlcnZpY2VXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZl
cmVuY2VzU3QKICAgICBBU1NFUlQobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pOwogICAgIHNl
bmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpVcGRhdGVQcmVmZXJl
bmNlc1N0b3JlIHsgc3RvcmUgfSwgMCk7CiB9CisKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaXNh
YmxlU2VydmljZVdvcmtlcnMoKQoreworICAgIGlmICghbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRp
b24pCisgICAgICAgIHJldHVybjsKKworICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uID0g
eyB9OworICAgIGlmIChtX3Byb2Nlc3NQb29sKQorICAgICAgICBtX3Byb2Nlc3NQb29sLT5yZW1v
dmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3NlcygqdGhpcyk7CisKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U3RvcCB7IH0sIDApOworfQorCit2b2lk
IFdlYlByb2Nlc3NQcm94eTo6ZW5hYmxlU2VydmljZVdvcmtlcnMoKQoreworICAgIEFTU0VSVCht
X3JlZ2lzdHJhYmxlRG9tYWluICYmICFtX3JlZ2lzdHJhYmxlRG9tYWluLT5pc0VtcHR5KCkpOwor
ICAgIEFTU0VSVCghbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pOworICAgIG1fc2VydmljZVdv
cmtlckluZm9ybWF0aW9uID0gU2VydmljZVdvcmtlckluZm9ybWF0aW9uIHsgV2ViUGFnZVByb3h5
SWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwgUGFnZUlkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKK30K
ICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggYTczZGM4OTlkMzA3MDlmMTdlZmM3YzhmZTljMzcxY2Qy
YmRjZDNhYS4uNWRlNjY2MmY4MjY5ZmY2MzQ2YzU4MGM5ZDdmYzE3MDEwOWZjZGY1MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTEyNSwxMCArMTI1LDE0
IEBAIHB1YmxpYzoKICAgICBXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2xJZkV4aXN0cygpIGNv
bnN0OwogICAgIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCgpIGNvbnN0OwogCisgICAgYm9v
bCBpc01hdGNoaW5nUmVnaXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mIGRvbWFpbikgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbiA/ICptX3Jl
Z2lzdHJhYmxlRG9tYWluID09IGRvbWFpbiA6IGZhbHNlOyB9CiAgICAgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4oKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJh
YmxlRG9tYWluLnZhbHVlT3IoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB9KTsgfQogICAg
IHZvaWQgc2V0SXNJblByb2Nlc3NDYWNoZShib29sKTsKICAgICBib29sIGlzSW5Qcm9jZXNzQ2Fj
aGUoKSBjb25zdCB7IHJldHVybiBtX2lzSW5Qcm9jZXNzQ2FjaGU7IH0KIAorICAgIHZvaWQgZW5h
YmxlU2VydmljZVdvcmtlcnMoKTsKKyAgICB2b2lkIGRpc2FibGVTZXJ2aWNlV29ya2VycygpOwor
CiAgICAgV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9yZSgpIGNvbnN0IHsgQVNTRVJU
KG1fd2Vic2l0ZURhdGFTdG9yZSk7IHJldHVybiAqbV93ZWJzaXRlRGF0YVN0b3JlOyB9CiAgICAg
dm9pZCBzZXRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmKTsKICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAppbmRleCA3NTFlNTEwNTUxNTk5ODZiYTU4YjY4
NjBiZDUxOTQ5MmM5NjU3YzQ5Li4xNzc5MDg4YzRkNzg0OWExYTE3NGQ1ZmJkODEwMTFlNzMyOGJl
NTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC02OCw5ICs2OCw2
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFBBTDsKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCi1zdGF0aWMgY29uc3QgU2Vjb25kcyBhc3luY1dvcmtlclRlcm1pbmF0
aW9uVGltZW91dCB7IDEwX3MgfTsKLXN0YXRpYyBjb25zdCBTZWNvbmRzIHN5bmNXb3JrZXJUZXJt
aW5hdGlvblRpbWVvdXQgeyAxMDBfbXMgfTsgLy8gT25seSB1c2VkIGJ5IGxheW91dCB0ZXN0cy4K
LQogU2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50OjpTZXJ2aWNlV29ya2VyRnJhbWVMb2Fk
ZXJDbGllbnQoV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQogICAgIDog
bV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCiAgICAgLCBtX3dlYlBhZ2VQcm94eUlEKHdlYlBhZ2VQ
cm94eUlEKQpAQCAtOTksNiArOTYsNyBAQCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbgogewogICAg
IHVwZGF0ZVByZWZlcmVuY2VzU3RvcmUoc3RvcmUpOwogICAgIG1fY29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpF
c3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uIHsgbV9yZWdpc3RyYWJsZURvbWFpbiB9LCAwKTsK
KyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5kaXNhYmxlVGVybWluYXRpb24oKTsKIH0KIAog
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246On5XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbigpID0gZGVmYXVsdDsKQEAgLTI1MywxMiArMjUxLDEyIEBAIHZvaWQgV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb246OnNvZnRVcGRhdGUoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIKIAogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6dGVybWluYXRlV29y
a2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgU1dDb250ZXh0
TWFuYWdlcjo6c2luZ2xldG9uKCkudGVybWluYXRlV29ya2VyKGlkZW50aWZpZXIsIGFzeW5jV29y
a2VyVGVybWluYXRpb25UaW1lb3V0LCBudWxscHRyKTsKKyAgICBTV0NvbnRleHRNYW5hZ2VyOjpz
aW5nbGV0b24oKS50ZXJtaW5hdGVXb3JrZXIoaWRlbnRpZmllciwgU1dDb250ZXh0TWFuYWdlcjo6
d29ya2VyVGVybWluYXRpb25UaW1lb3V0LCBudWxscHRyKTsKIH0KIAogdm9pZCBXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6c3luY1Rlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBpZGVudGlmaWVyLCBNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b246OlN5bmNUZXJtaW5hdGVXb3JrZXI6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewotICAgIFNX
Q29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnRlcm1pbmF0ZVdvcmtlcihpZGVudGlmaWVyLCBz
eW5jV29ya2VyVGVybWluYXRpb25UaW1lb3V0LCBXVEZNb3ZlKHJlcGx5KSk7CisgICAgU1dDb250
ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkudGVybWluYXRlV29ya2VyKGlkZW50aWZpZXIsIFNXQ29u
dGV4dE1hbmFnZXI6OnN5bmNXb3JrZXJUZXJtaW5hdGlvblRpbWVvdXQsIFdURk1vdmUocmVwbHkp
KTsKIH0KIAogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VU
b1NlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIm
IGRlc3RpbmF0aW9uSWRlbnRpZmllciwgY29uc3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmIG1l
c3NhZ2UsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgc291cmNlT3JpZ2luKQpAQCAtMzQ4LDEwICszNDYsMTQgQEAgdm9pZCBXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZGlkRmluaXNoU2tpcFdhaXRpbmcodWludDY0X3QgY2FsbGJh
Y2tJRCkKICAgICAgICAgY2FsbGJhY2soKTsKIH0KIAotdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbjo6dGVybWluYXRlUHJvY2VzcygpCit2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uOjpzdG9wKCkKIHsKLSAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiU2Vy
dmljZSB3b3JrZXIgcHJvY2VzcyBpcyBleGl0aW5nIGJlY2F1c2UgaXQgaXMgbm8gbG9uZ2VyIG5l
ZWRlZCIpOwotICAgIF9leGl0KEVYSVRfU1VDQ0VTUyk7CisgICAgUkVMRUFTRV9MT0coU2Vydmlj
ZVdvcmtlciwgIlNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgaXMgcmVxdWVzdGVkIHRvIHN0b3AgYWxs
IHNlcnZpY2Ugd29ya2VycyIpOworICAgIG1faXNTdG9wcGVkID0gdHJ1ZTsKKworICAgIG1fY29u
bmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpDbG9zZVNXQ29udGV4dENvbm5lY3Rpb24geyB9LCAwKTsKKyAgICBTV0Nv
bnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zdG9wQWxsU2VydmljZVdvcmtlcnMoKTsKKyAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbmFibGVUZXJtaW5hdGlvbigpOwogfQogCiB2b2lkIFdl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzZXRUaHJvdHRsZVN0YXRlKGJvb2wgaXNUaHJv
dHRsZWFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCA3ZDYyNjAxOTYx
OTE0ZjNmZTJkNTkyNWM5Yjk3YzRkMTQwZGQzYWUxLi40NTBlYjRmNDJkZWI3NTlmMDg5NjJhNjgy
ZjI2MmI5MDZhNzRlNGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAgLTk1
LDcgKzk1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsYWltQ29tcGxldGVkKHVpbnQ2NF90IGNs
YWltUmVxdWVzdElkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkRmluaXNoU2tpcFdhaXRpbmcodWlu
dDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBzZXRVc2VyQWdlbnQoU3RyaW5nJiYgdXNlckFn
ZW50KTsKLSAgICBOT19SRVRVUk4gdm9pZCB0ZXJtaW5hdGVQcm9jZXNzKCk7CisgICAgdm9pZCBz
dG9wKCk7CiAgICAgdm9pZCBzZXRUaHJvdHRsZVN0YXRlKGJvb2wgaXNUaHJvdHRsZWFibGUpOwog
CiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXgg
ZWFkOGNiZDNjMzA0ZDZkNzE1M2EyYmU3NDI1MGM3NDIyNGNmODcwYS4uMDUwZTA1MjI2NzcwOWU0
NDU0YjE1MWZlZDc4ZWI2NDVjOTRjNGVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTM5LDcgKzM5LDcgQEAgbWVzc2FnZXMgLT4gV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gewogICAgIERpZEZpbmlzaFNraXBXYWl0aW5nKHVp
bnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgU2V0VXNlckFnZW50KFN0cmluZyB1c2VyQWdlbnQpCiAg
ICAgVXBkYXRlUHJlZmVyZW5jZXNTdG9yZShzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0
b3JlIHN0b3JlKQotICAgIFRlcm1pbmF0ZVByb2Nlc3MoKQorICAgIFN0b3AoKQogICAgIFNldFRo
cm90dGxlU3RhdGUoYm9vbCBpc1Rocm90dGxlYWJsZSkKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGY3YjJjYjY3NTFiMjI0MzdmNzliNmUwNGI5NGFiZTU2
MjgzZGI0MTUuLmQzMjYyYzU0MWEzNDhiYjdlOTEzOTJhYTQzYmM3NTExZDFjMDY3MWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTEyMjUsMTAgKzEyMjUsOCBA
QCB2b2lkIFdlYlByb2Nlc3M6Om5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZChOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24qIGNvbm5lYwogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCi0gICAgaWYgKFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24o
KSkgewotICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiU2VydmljZSB3b3JrZXIg
cHJvY2VzcyBpcyBleGl0aW5nIGJlY2F1c2UgbmV0d29yayBwcm9jZXNzIGlzIGdvbmUiKTsKLSAg
ICAgICAgX2V4aXQoRVhJVF9TVUNDRVNTKTsKLSAgICB9CisgICAgaWYgKFNXQ29udGV4dE1hbmFn
ZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKKyAgICAgICAgU1dDb250ZXh0TWFuYWdlcjo6
c2luZ2xldG9uKCkuc3RvcEFsbFNlcnZpY2VXb3JrZXJzKCk7CiAjZW5kaWYKIAogICAgIG1fbmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uID0gbnVsbHB0cjsKQEAgLTE3OTgsOCArMTc5Niw2IEBAIHZv
aWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzKHVpbnQ2NF90IHBhZ2VHCiAKIHZvaWQgV2ViUHJvY2Vzczo6cmVnaXN0ZXJTZXJ2aWNl
V29ya2VyQ2xpZW50cygpCiB7Ci0gICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gcmVnaXN0ZXIgc2Vy
dmljZSB3b3JrZXIgZHVtbXkgZG9jdW1lbnRzLgotICAgIEFTU0VSVCghU1dDb250ZXh0TWFuYWdl
cjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKTsKICAgICBTZXJ2aWNlV29ya2VyUHJvdmlkZXI6
OnNpbmdsZXRvbigpLnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudHMoKTsKIH0KIApkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDAwZThjZjM2YzVh
YzA4NDk4ZWM2ZThjMGRjNDY1ODBjMDM3ZmFjOWYuLjMxYTlkZTNhMTY1N2FlNmI5NDM5MTY1ZDVi
Zjk2OTRmNDRjZDExNmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxOS0xMC0wNCAgeW91ZW5uIGZhYmxldCAgPHlv
dWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV1c2UgZXhpc3Rpbmcgd2ViIHByb2Nlc3NlcyBm
b3IgcnVubmluZyBzZXJ2aWNlIHdvcmtlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMjE5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBlbmZvcmNpbmcgYSBzZXBhcmF0ZSBw
cm9jZXNzIGZvciBzZXJ2aWNlIHdvcmtlcnMuCisgICAgICAgIFRoaXMgaXMgdXNlZnVsIGZvciB0
ZXN0cyB0cnlpbmcgdG8gY3Jhc2ggdGhlIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5t
bToKKyAgICAgICAgVXBkYXRlIHRlc3QgdG8gdXNlIHNlcnZpY2VXb3JrZXJQcm9jZXNzQ291bnQu
CisgICAgICAgIEFkZCB0ZXN0IHRvIGNoZWNrIGZvciBpbiBwcm9jZXNzIGFuZCBvdXQgb2YgcHJv
Y2VzcyBzZXJ2aWNlIHdvcmtlcnMuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVu
bmVyOjpzZXRGb3JjZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MpOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0
aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKwog
MjAxOS0xMC0wMyAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgUkVHUkVTU0lPTigyNDk2NDkpOiBVbmFibGUgdG8gb3BlbiBsb2NhbCBmaWxlcyBpbiBNaW5p
QnJvd3NlciBvbiBtYWNPUwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQppbmRleCA5Y2NhNzAyODk4MzBm
MjA3OTc4NGI4YTZlZTc1MTA3NDM0MDRjNzhjLi5iNzIyOGRjYmQyM2NiZTM3YjY0ZjYyMDIyZjcw
ZWE5YTViNWYwNjRlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQpAQCAtMTE3Myw3ICsxMTczLDcg
QEAgVEVTVChTZXJ2aWNlV29ya2VycywgU2VydmljZVdvcmtlclByb2Nlc3NDcmVhdGlvbikKICAg
ICBkb25lID0gZmFsc2U7CiAKICAgICAvLyBNYWtlIHN1cmUgdGhhdCBsb2FkaW5nIHRoZSBzaW1w
bGUgcGFnZSBkaWQgbm90IHN0YXJ0IHRoZSBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzLgotICAgIEVY
UEVDVF9FUSgxdSwgd2ViVmlldy5nZXQoKS5jb25maWd1cmF0aW9uLnByb2Nlc3NQb29sLl93ZWJQ
cm9jZXNzQ291bnRJZ25vcmluZ1ByZXdhcm1lZCk7CisgICAgRVhQRUNUX0VRKDB1LCB3ZWJWaWV3
LmdldCgpLmNvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wuX3NlcnZpY2VXb3JrZXJQcm9jZXNzQ291
bnQpOwogCiAgICAgd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpuZXdDb25maWd1
cmF0aW9uLmdldCgpXSk7CiAgICAgRVhQRUNUX0VRKDJ1LCB3ZWJWaWV3LmdldCgpLmNvbmZpZ3Vy
YXRpb24ucHJvY2Vzc1Bvb2wuX3dlYlByb2Nlc3NDb3VudElnbm9yaW5nUHJld2FybWVkKTsKQEAg
LTExODMsNyArMTE4Myw3IEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIFNlcnZpY2VXb3JrZXJQcm9j
ZXNzQ3JlYXRpb24pCiAgICAgZG9uZSA9IGZhbHNlOwogCiAgICAgLy8gTWFrZSBzdXJlIHRoYXQg
bG9hZGluZyB0aGlzIHBhZ2UgZGlkIHN0YXJ0IHRoZSBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzLgot
ICAgIEVYUEVDVF9FUSgzdSwgd2ViVmlldy5nZXQoKS5jb25maWd1cmF0aW9uLnByb2Nlc3NQb29s
Ll93ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1ByZXdhcm1lZCk7CisgICAgRVhQRUNUX0VRKDF1LCB3
ZWJWaWV3LmdldCgpLmNvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wuX3NlcnZpY2VXb3JrZXJQcm9j
ZXNzQ291bnQpOwogCiAgICAgW1tjb25maWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVdIHJlbW92
ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9k
aWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgewog
ICAgICAgICBkb25lID0gdHJ1ZTsKQEAgLTE4MjUsNiArMTgyNSw1MSBAQCBURVNUKFNlcnZpY2VX
b3JrZXJzLCBQYXJhbGxlbFByb2Nlc3NMYXVuY2gpCiAgICAgd2FpdFVudGlsU2VydmljZVdvcmtl
clByb2Nlc3NDb3VudChwcm9jZXNzUG9vbCwgMik7CiB9CiAKK3N0YXRpYyBzaXplX3QgbGF1bmNo
U2VydmljZVdvcmtlclByb2Nlc3MoYm9vbCBmb3JjZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nl
c3MpCit7CisgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNG
b3JBbGxPcmlnaW5zXTsKKworICAgIC8vIFN0YXJ0IHdpdGggYSBjbGVhbiBzbGF0ZSBkYXRhIHN0
b3JlCisgICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gcmVtb3ZlRGF0
YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmll
ZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAg
ICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRv
cHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKworICAgIGF1dG8g
bWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbU1dNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0p
OworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1l
c3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJzdyJdOworCisgICAgYXV0
byBoYW5kbGVyMSA9IGFkb3B0TlMoW1tTV1NjaGVtZXMgYWxsb2NdIGluaXRdKTsKKyAgICBoYW5k
bGVyMS0+cmVzb3VyY2VzLnNldCgic3cxOi8vaG9zdC9tYWluLmh0bWwiLCBSZXNvdXJjZUluZm8g
eyBAInRleHQvaHRtbCIsIG1haW5CeXRlcyB9KTsKKyAgICBoYW5kbGVyMS0+cmVzb3VyY2VzLnNl
dCgic3cxOi8vaG9zdC9zdy5qcyIsIFJlc291cmNlSW5mbyB7IEAiYXBwbGljYXRpb24vamF2YXNj
cmlwdCIsIHNjcmlwdEJ5dGVzIH0pOworICAgIGhhbmRsZXIxLT5yZXNvdXJjZXMuc2V0KCJzdzE6
Ly9ob3N0Mi9tYWluLmh0bWwiLCBSZXNvdXJjZUluZm8geyBAInRleHQvaHRtbCIsIG1haW5CeXRl
cyB9KTsKKyAgICBoYW5kbGVyMS0+cmVzb3VyY2VzLnNldCgic3cxOi8vaG9zdDIvc3cuanMiLCBS
ZXNvdXJjZUluZm8geyBAImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiLCBzY3JpcHRCeXRlcyB9KTsK
KyAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIxLmdldCgpIGZv
clVSTFNjaGVtZTpAInN3MSJdOworCisgICAgYXV0byAqcHJvY2Vzc1Bvb2wgPSBjb25maWd1cmF0
aW9uLmdldCgpLnByb2Nlc3NQb29sOworICAgIFtwcm9jZXNzUG9vbCBfc2V0Rm9yY2VTZXBhcmF0
ZVNlcnZpY2VXb3JrZXJQcm9jZXNzOiBmb3JjZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3Nd
OworICAgIFtwcm9jZXNzUG9vbCBfcmVnaXN0ZXJVUkxTY2hlbWVTZXJ2aWNlV29ya2Vyc0Nhbkhh
bmRsZTpAInN3MSJdOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBb
TlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAic3cxOi8v
aG9zdC9tYWluLmh0bWwiXV07CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsK
KworICAgIHdhaXRVbnRpbFNlcnZpY2VXb3JrZXJQcm9jZXNzQ291bnQocHJvY2Vzc1Bvb2wsIDEp
OworICAgIHJldHVybiB3ZWJWaWV3LmdldCgpLmNvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wuX3dl
YlByb2Nlc3NDb3VudElnbm9yaW5nUHJld2FybWVkOworfQorCitURVNUKFNlcnZpY2VXb3JrZXJz
LCBPdXRPZkFuZEluUHJvY2Vzc1NlcnZpY2VXb3JrZXIpCit7CisgICAgYm9vbCBmb3JjZVNlcGFy
YXRlU2VydmljZVdvcmtlclByb2Nlc3MgPSBmYWxzZTsKKyAgICBFWFBFQ1RfRVEoMXUsIGxhdW5j
aFNlcnZpY2VXb3JrZXJQcm9jZXNzKGZvcmNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzcykp
OworCisgICAgZm9yY2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzID0gdHJ1ZTsKKyAgICBF
WFBFQ1RfRVEoMnUsIGxhdW5jaFNlcnZpY2VXb3JrZXJQcm9jZXNzKGZvcmNlU2VwYXJhdGVTZXJ2
aWNlV29ya2VyUHJvY2VzcykpOworfQorCiBURVNUKFNlcnZpY2VXb3JrZXJzLCBUaHJvdHRsZUNy
YXNoKQogewogICAgIEFTU0VSVChtYWluQnl0ZXMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwK
aW5kZXggNDJhYWQ1NGUzMTEzYTM4M2Y3MzQ5MTc3NDE1MjE3Y2VkOTkwZDRhZC4uNWEyNjQ3YzRi
M2NjNThhMTczMTAyMjJjMzNjN2NmN2FhNTI3YmM4MCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIu
aWRsCkBAIC0zNjYsNiArMzY2LDcgQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIgewogCiAgICAgdm9p
ZCB0ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcygpOwogICAgIHZvaWQgdGVybWluYXRlU2VydmljZVdv
cmtlclByb2Nlc3MoKTsKKyAgICB2b2lkIHNldEZvcmNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJv
Y2Vzcyhib29sZWFuIHZhbHVlKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBs
b25nIHNlcnZlclRydXN0RXZhbHVhdGlvbkNhbGxiYWNrQ2FsbHNDb3VudDsKIApkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5k
ZXggMDExMDRhY2Y4NGJhYjEyN2U1MTczZDM3OTMyZTQyOTlhZmEzYzE1NC4uYWU3M2ZiYWViZTNj
NzFmZGU4MTExNzk0M2UzNDM3OGFlMThjOGMwYiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC0xMjcxLDYgKzEyNzEs
MTMgQEAgdm9pZCBUZXN0UnVubmVyOjp0ZXJtaW5hdGVTZXJ2aWNlV29ya2VyUHJvY2VzcygpCiAg
ICAgV0tCdW5kbGVQYWdlUG9zdFN5bmNocm9ub3VzTWVzc2FnZUZvclRlc3RpbmcoSW5qZWN0ZWRC
dW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbnVs
bHB0ciwgbnVsbHB0cik7CiB9CiAKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0Rm9yY2VTZXBhcmF0ZVNl
cnZpY2VXb3JrZXJQcm9jZXNzKGJvb2wgdmFsdWUpCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiU2V0Rm9yY2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzIikpOworICAgIFdLUmV0YWlu
UHRyPFdLQm9vbGVhblJlZj4gbWVzc2FnZUJvZHkgPSBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZSh2
YWx1ZSkpOworICAgIFdLQnVuZGxlUGFnZVBvc3RTeW5jaHJvbm91c01lc3NhZ2VGb3JUZXN0aW5n
KEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUu
Z2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBudWxscHRyKTsKK30KKwogc3RhdGljIHVuc2lnbmVk
IG5leHRVSVNjcmlwdENhbGxiYWNrSUQoKQogewogICAgIHN0YXRpYyB1bnNpZ25lZCBjYWxsYmFj
a0lEID0gRmlyc3RVSVNjcmlwdENhbGxiYWNrSUQ7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4IGYxNzAwMTI5ODMxYjZmOTQ3
MDc2MmYwMzBmZWNkNzAxYzRkM2JhM2IuLmVkYzNhMzJhZDU2MmNmYmE4YjE0MGI5YmE3YjRjZjky
NjgwZTEyYzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5oCkBAIC00NjUsNiArNDY1LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB0
ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcygpOwogICAgIHZvaWQgdGVybWluYXRlU2VydmljZVdvcmtl
clByb2Nlc3MoKTsKKyAgICB2b2lkIHNldEZvcmNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2Vz
cyhib29sKTsKIAogICAgIHZvaWQgcmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKEpTVmFsdWVS
ZWYpOwogICAgIHZvaWQgY2FsbERpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFsc0NhbGxiYWNr
KCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDBiZDc3
NjFiYmZjNTUwNGVmMjA1OWQ5YTFmM2I0NDc1NzYwNzRlMGIuLjE1NmE0MzYzYjEzOTEyZWZjMmRj
MDFhNmY5YjlmYzQ1YzUxZjc1MGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwCkBAIC05NzAsNiArOTcwLDggQEAgYm9vbCBUZXN0Q29udHJvbGxlcjo6cmVzZXRT
dGF0ZVRvQ29uc2lzdGVudFZhbHVlcyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucywgUmUKIAog
ICAgIFdLQ29udGV4dENsZWFyQ3VycmVudE1vZGlmaWVyU3RhdGVGb3JUZXN0aW5nKFRlc3RDb250
cm9sbGVyOjpzaW5nbGV0b24oKS5jb250ZXh0KCkpOwogCisgICAgV0tDb250ZXh0U2V0Rm9yY2VT
ZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5j
b250ZXh0KCksIGZhbHNlKTsKKwogICAgIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBh
bHNvIGVuc3VyZSB0aGF0IHRoZXJlIGlzIG9ubHkgb25lIHBhZ2Ugb3Blbi4KIAogICAgIC8vIFJl
c2V0IHRoZSBFdmVudFNlbmRlciBmb3IgZWFjaCB0ZXN0LgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCAyZjhiMzA2ZTJjOGM4NzNmZmQzMTc5NjFjODEyYzVi
Yzg4MmI2M2NkLi4zY2Q5OTc4NzFkOGQ4ZjFjODBmZTJlMzhiYmEwYTdhYTYyMzQyMmQ3IDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtMTYwNyw2ICsxNjA3
LDEzIEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVT
eW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1l
LCAiU2V0Rm9yY2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzIikpIHsKKyAgICAgICAgQVNT
RVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS0Jvb2xlYW5HZXRUeXBlSUQoKSk7Cisg
ICAgICAgIGF1dG8gZm9yY2VTZXJ2aWNlV29ya2VyUHJvY2VzcyA9IFdLQm9vbGVhbkdldFZhbHVl
KHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4obWVzc2FnZUJvZHkpKTsKKyAgICAgICAgV0tDb250
ZXh0U2V0Rm9yY2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKFRlc3RDb250cm9sbGVyOjpz
aW5nbGV0b24oKS5jb250ZXh0KCksIGZvcmNlU2VydmljZVdvcmtlclByb2Nlc3MpOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4
Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRp
b24iKSkgewogICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLRGlj
dGlvbmFyeUdldFR5cGVJRCgpKTsKICAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigp
LnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24oc3RhdGljX2Nhc3Q8V0tEaWN0
aW9uYXJ5UmVmPihtZXNzYWdlQm9keSkpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGYxODdhNzc2ZDI4OTczZDA3YTc2ZThj
ZjA5YWZhOWUyYzdlNDM5NjguLmQ4YTAwYzA5NmFmZTcyM2I4OTFmZTk4YjdlYTAxMDA2NWIyNTg3
MGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxOS0xMC0wNCAgeW91ZW5uIGZhYmxldCAgPHlv
dWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV1c2UgZXhpc3Rpbmcgd2ViIHByb2Nlc3NlcyBm
b3IgcnVubmluZyBzZXJ2aWNlIHdvcmtlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMjE5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2Vz
L3Bvc3RtZXNzYWdlLWFmdGVyLXN3LXByb2Nlc3MtY3Jhc2guanM6CisgICAgICAgIChhc3luYy5k
b1Rlc3QpOgorICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9w
b3N0bWVzc2FnZS1hZnRlci10ZXJtaW5hdGUuanM6CisgICAgICAgIChhc3luYy5kb1Rlc3QpOgor
ICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9wb3N0bWVzc2Fn
ZS1hZnRlci10ZXJtaW5hdGluZy1odW5nLXdvcmtlci5qczoKKyAgICAgICAgKGFzeW5jLmRvVGVz
dCk6CisgICAgICAgICogaHR0cC93cHQvc2VydmljZS13b3JrZXJzL29ubGluZS5odHRwcy5odG1s
OgorICAgICAgICAqIGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1kaWZm
ZXJlbnQtcHJvY2Vzcy5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
d3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1kaWZmZXJlbnQtcHJvY2Vzcy5odHRw
cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2Vydmlj
ZS13b3JrZXItcHJvY2Vzcy13b3JrZXIuanM6IEFkZGVkLgorCiAyMDE5LTEwLTAzICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlc3luYyBXUFQgc2hhZG93IERP
TSB0ZXN0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZp
Y2UvcmVzb3VyY2VzL3Bvc3RtZXNzYWdlLWFmdGVyLXN3LXByb2Nlc3MtY3Jhc2guanMgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvcG9zdG1lc3NhZ2Ut
YWZ0ZXItc3ctcHJvY2Vzcy1jcmFzaC5qcwppbmRleCA0ZjcyMTY0Y2FmZDhjZWMwOWJkOGE4MmU3
NmJhYWRiMjNlOTA2OGRlLi5kMDg2ZGM3MjJiNTk2Y2U0YmI4MTQ3N2Y5NmYyMDZmMjRlNDM5ZGQ3
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNv
dXJjZXMvcG9zdG1lc3NhZ2UtYWZ0ZXItc3ctcHJvY2Vzcy1jcmFzaC5qcworKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvcG9zdG1lc3NhZ2UtYWZ0
ZXItc3ctcHJvY2Vzcy1jcmFzaC5qcwpAQCAtMzcsMTAgKzM3LDIwIEBAIG5hdmlnYXRvci5zZXJ2
aWNlV29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmdW5jdGlvbihldmVudCkgewog
ICAgIGZpbmlzaFNXVGVzdCgpOwogfSk7CiAKLW5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lz
dGVyKCJyZXNvdXJjZXMvcG9zdG1lc3NhZ2UtYWZ0ZXItc3ctcHJvY2Vzcy1jcmFzaC13b3JrZXIu
anMiLCB7IH0pLnRoZW4oZnVuY3Rpb24ocmVnaXN0cmF0aW9uKSB7Ci0gICAgd29ya2VyID0gcmVn
aXN0cmF0aW9uLmluc3RhbGxpbmc7Ci0gICAgbG9nKCIqIFNlbmRpbmcgU3RhdGUgdG8gU2Vydmlj
ZSBXb3JrZXIiKTsKLSAgICB3b3JrZXIucG9zdE1lc3NhZ2UoIlNldFN0YXRlIik7Ci0gICAgbG9n
KCIqIEFza2luZyBTZXJ2aWNlIFdvcmtlciBpZiBpdCByZWNlaXZlZCB0aGUgc3RhdGUiKTsKLSAg
ICB3b3JrZXIucG9zdE1lc3NhZ2UoIkhhc1N0YXRlIik7Ci19KTsKK2FzeW5jIGZ1bmN0aW9uIGRv
VGVzdCgpCit7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5u
ZXIuc2V0Rm9yY2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKHRydWUpOworICAgICAgICBh
d2FpdCBmZXRjaCgiIikudGhlbigoKSA9PiB7IH0sICgpID0+IHsgfSk7CisgICAgfQorCisgICAg
bmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoInJlc291cmNlcy9wb3N0bWVzc2FnZS1h
ZnRlci1zdy1wcm9jZXNzLWNyYXNoLXdvcmtlci5qcyIsIHsgfSkudGhlbihmdW5jdGlvbihyZWdp
c3RyYXRpb24pIHsKKyAgICAgICAgd29ya2VyID0gcmVnaXN0cmF0aW9uLmluc3RhbGxpbmc7Cisg
ICAgICAgIGxvZygiKiBTZW5kaW5nIFN0YXRlIHRvIFNlcnZpY2UgV29ya2VyIik7CisgICAgICAg
IHdvcmtlci5wb3N0TWVzc2FnZSgiU2V0U3RhdGUiKTsKKyAgICAgICAgbG9nKCIqIEFza2luZyBT
ZXJ2aWNlIFdvcmtlciBpZiBpdCByZWNlaXZlZCB0aGUgc3RhdGUiKTsKKyAgICAgICAgd29ya2Vy
LnBvc3RNZXNzYWdlKCJIYXNTdGF0ZSIpOworICAgIH0pOworfQorCitkb1Rlc3QoKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9w
b3N0bWVzc2FnZS1hZnRlci10ZXJtaW5hdGUuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dv
cmtlcnMvc2VydmljZS9yZXNvdXJjZXMvcG9zdG1lc3NhZ2UtYWZ0ZXItdGVybWluYXRlLmpzCmlu
ZGV4IDlkNWY5NzVlZjZjZThhN2QwYTA3M2U5OWUyM2MyNjJiOGJjZTUwNTIuLjU3ZjEwZjk4M2Vj
ZGExZTU4ZWM2OGU3NzY3NmFiNzY4NTY2OTBkNDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9wb3N0bWVzc2FnZS1hZnRlci10ZXJt
aW5hdGUuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVz
b3VyY2VzL3Bvc3RtZXNzYWdlLWFmdGVyLXRlcm1pbmF0ZS5qcwpAQCAtMTAsNiArMTAsMTUgQEAg
bmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGZ1bmN0
aW9uKGV2ZW50KSB7CiAgICAgICAgIGZpbmlzaFNXVGVzdCgpOwogfSk7CiAKLW5hdmlnYXRvci5z
ZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCJyZXNvdXJjZXMvcG9zdG1lc3NhZ2UtZWNoby13b3JrZXIu
anMiLCB7IH0pLnRoZW4oZnVuY3Rpb24ocmVnaXN0cmF0aW9uKSB7Cithc3luYyBmdW5jdGlvbiBk
b1Rlc3QoKQoreworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVu
bmVyLnNldEZvcmNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzcyh0cnVlKTsKKyAgICAgICAg
YXdhaXQgZmV0Y2goIiIpLnRoZW4oKCkgPT4geyB9LCAoKSA9PiB7IH0pOworICAgIH0KKyAKKyAg
ICBjb25zdCByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdp
c3RlcigicmVzb3VyY2VzL3Bvc3RtZXNzYWdlLWVjaG8td29ya2VyLmpzIiwgeyB9KTsKICAgICBy
ZWdpc3RyYXRpb24uaW5zdGFsbGluZy5wb3N0TWVzc2FnZSgiTWVzc2FnZSAxIik7Ci19KTsKK30K
KworZG9UZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMv
c2VydmljZS9yZXNvdXJjZXMvcG9zdG1lc3NhZ2UtYWZ0ZXItdGVybWluYXRpbmctaHVuZy13b3Jr
ZXIuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMv
cG9zdG1lc3NhZ2UtYWZ0ZXItdGVybWluYXRpbmctaHVuZy13b3JrZXIuanMKaW5kZXggZTBmMmU4
ZmU5MzZiMTNjZTRlM2YwNTRhNThmZWQ0NGIwNjQyYjM1Ny4uOTQ4ZTkwOTEyZjg4ZmVmZjE5NjEz
MGFkYWQ1ODBjNGFmMzNiNmFhZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3Bvc3RtZXNzYWdlLWFmdGVyLXRlcm1pbmF0aW5nLWh1
bmctd29ya2VyLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNl
L3Jlc291cmNlcy9wb3N0bWVzc2FnZS1hZnRlci10ZXJtaW5hdGluZy1odW5nLXdvcmtlci5qcwpA
QCAtMjMsNyArMjMsMTcgQEAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0ZW5l
cigibWVzc2FnZSIsIGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgfQogfSk7CiAKLW5hdmlnYXRvci5z
ZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCJyZXNvdXJjZXMvcG9zdG1lc3NhZ2UtZWNoby13b3JrZXIt
bWF5aGFuZy5qcyIsIHsgfSkudGhlbihmdW5jdGlvbihyZWdpc3RyYXRpb24pIHsKK2FzeW5jIGZ1
bmN0aW9uIGRvVGVzdCgpCit7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAg
IHRlc3RSdW5uZXIuc2V0Rm9yY2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKHRydWUpOwor
ICAgICAgICBhd2FpdCBmZXRjaCgiIikudGhlbigoKSA9PiB7IH0sICgpID0+IHsgfSk7CisgICAg
fQorIAorICAgIGNvbnN0IHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29y
a2VyLnJlZ2lzdGVyKCJyZXNvdXJjZXMvcG9zdG1lc3NhZ2UtZWNoby13b3JrZXItbWF5aGFuZy5q
cyIsIHsgfSk7CiAgICAgd29ya2VyID0gcmVnaXN0cmF0aW9uLmluc3RhbGxpbmc7CiAgICAgd29y
a2VyLnBvc3RNZXNzYWdlKCJIQU5HIik7Ci19KTsKK30KKworZG9UZXN0KCk7CisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9vbmxpbmUuaHR0cHMuaHRt
bCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9vbmxpbmUuaHR0cHMuaHRt
bAppbmRleCBmYTU4ZDdkZjE3NGFmMzgxZGE0MjBjNTJkMjg5YjI1MmRkYzFiNTRhLi5kMjg4MTI1
MWRjY2YwNDk3ZmE2N2Q4NjgyODFjZDU4ODdjZTAwNzgzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvb25saW5lLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL29ubGluZS5odHRwcy5odG1sCkBAIC05LDYg
KzksMTEgQEAgdmFyIHNjb3BlID0gIiI7CiB2YXIgYWN0aXZlV29ya2VyOwogCiBwcm9taXNlX3Rl
c3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAg
ICAgdGVzdFJ1bm5lci5zZXRGb3JjZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3ModHJ1ZSk7
CisgICAgICAgIGF3YWl0IGZldGNoKCIiKS50aGVuKCgpID0+IHsgfSwgKCkgPT4geyB9KTsKKyAg
ICB9CisKICAgICB2YXIgcmVnaXN0cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3Jr
ZXIucmVnaXN0ZXIoIm9ubGluZS13b3JrZXIuanMiLCB7IHNjb3BlIDogc2NvcGUgfSk7CiAgICAg
YWN0aXZlV29ya2VyID0gcmVnaXN0cmF0aW9uLmFjdGl2ZTsKICAgICBpZiAoYWN0aXZlV29ya2Vy
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZp
Y2Utd29ya2VyLWRpZmZlcmVudC1wcm9jZXNzLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1kaWZmZXJlbnQtcHJv
Y2Vzcy5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjE5YTc4ODZiZjhmNmU0YzEzNzc4
ODYyNzI5NmRiZjVhNDczNDlkZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1kaWZmZXJlbnQtcHJvY2Vzcy5odHRw
cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKK1BBU1MgU2V0dXAgd29ya2VyIAorUEFT
UyBUZXN0IHRoYXQgc2VydmljZSB3b3JrZXIgaXMgaW4gYSBkaWZmZXJlbnQgcHJvY2VzcyAKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Ut
d29ya2VyLWRpZmZlcmVudC1wcm9jZXNzLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dw
dC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItZGlmZmVyZW50LXByb2Nlc3MuaHR0cHMu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42MGFmNTgxMzBhZDMyZGNlYTA0ZjM3ZDQ0ODlkN2EyMzNlYjVmZTg5
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJz
L3NlcnZpY2Utd29ya2VyLWRpZmZlcmVudC1wcm9jZXNzLmh0dHBzLmh0bWwKQEAgLTAsMCArMSw0
MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
dGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0
PgordmFyIGFjdGl2ZVdvcmtlcjsKKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7Cisg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0Rm9yY2VT
ZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKHRydWUpOworICAgICAgICBhd2FpdCBmZXRjaCgi
IikudGhlbigoKSA9PiB7IH0sICgpID0+IHsgfSk7CisgICAgfQorCisgICAgdmFyIHJlZ2lzdHJh
dGlvbiA9IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCJzZXJ2aWNlLXdv
cmtlci1wcm9jZXNzLXdvcmtlci5qcyIsIHsgc2NvcGUgOiAiIiB9KTsKKyAgICBhY3RpdmVXb3Jr
ZXIgPSByZWdpc3RyYXRpb24uYWN0aXZlOworICAgIGlmIChhY3RpdmVXb3JrZXIpCisgICAgICAg
IHJldHVybjsKKyAgICBhY3RpdmVXb3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFsbGluZzsKKyAg
ICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIGFjdGl2ZVdvcmtlci5h
ZGRFdmVudExpc3RlbmVyKCdzdGF0ZWNoYW5nZScsICgpID0+IHsKKyAgICAgICAgICAgIGlmIChh
Y3RpdmVXb3JrZXIuc3RhdGUgPT09ICJhY3RpdmF0ZWQiKQorICAgICAgICAgICAgICAgIHJlc29s
dmUoKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9LCAiU2V0dXAgd29ya2VyIik7CisKK3Byb21p
c2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIGxldCByZXNvbHZlOworICAgIGNvbnN0IHBy
b21pc2UgPSBuZXcgUHJvbWlzZShyID0+IHJlc29sdmUgPSByKTsKKyAgICBuYXZpZ2F0b3Iuc2Vy
dmljZVdvcmtlci5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKGUpID0+IHJlc29sdmUoZS5k
YXRhKSwge29uY2U6IHRydWV9KTsgCisgICAgYWN0aXZlV29ya2VyLnBvc3RNZXNzYWdlKCJQSUQi
KTsKKyAgICBhc3NlcnRfbm90X2VxdWFscyhhd2FpdCBwcm9taXNlLCB3aW5kb3cuaW50ZXJuYWxz
LnByb2Nlc3NJZCk7Cit9LCAiVGVzdCB0aGF0IHNlcnZpY2Ugd29ya2VyIGlzIGluIGEgZGlmZmVy
ZW50IHByb2Nlc3MiKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItcHJv
Y2Vzcy13b3JrZXIuanMgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2Vy
dmljZS13b3JrZXItcHJvY2Vzcy13b3JrZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjkyOWEzNDgzMzA4OTk5
MmJiZWVjNDQ5NTFjZTM4YmU2NGZiNzE4NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1wcm9jZXNzLXdvcmtlci5q
cwpAQCAtMCwwICsxLDMgQEAKK3NlbGYuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIChldmVu
dCkgPT4geworICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZShzZWxmLmludGVybmFscyA/IGlu
dGVybmFscy5wcm9jZXNzSWQgOiAibmVlZHMgaW50ZXJuYWwgQVBJIik7Cit9KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380637</attachid>
            <date>2019-10-10 06:20:50 -0700</date>
            <delta_ts>2019-10-13 23:48:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202195-20191010152048.patch</filename>
            <type>text/plain</type>
            <size>69806</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwOTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDc0ZmVmYjcxM2JmNmJj
ZjRjNzQxNTdkY2MyYmQ1MTg3NjljMDkzOS4uMmZhMTNiNTI1MmMzMzUyMDY2YWFkODgwNWU3YTAz
ZmY3NmFmOWNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE5LTEwLTEwICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXVzZSBleGlzdGluZyB3
ZWIgcHJvY2Vzc2VzIGZvciBydW5uaW5nIHNlcnZpY2Ugd29ya2VycworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMTk1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGltcGxlbWVudGF0aW9uIHRv
IGJlIGFibGUgdG8gcnVuIHNlcnZpY2Ugd29ya2VycyBqb2ludGx5IHdpdGggcGFnZS4KKyAgICAg
ICAgQWRkIGludGVybmFscyBBUEkgdG8gZ2V0IHRoZSBwcm9jZXNzIElELgorICAgICAgICBUaGlz
IGFsbG93cyB3cml0aW5nIHRlc3RzIHRvIGNoZWNrIHdoZXRoZXIgYSBzZXJ2aWNlIHdvcmtlciBp
cyBpbiB0aGUgc2FtZSBwcm9jZXNzIGFzIGl0cyBjbGllbnQgb3Igbm90LgorCisgICAgICAgIFRl
c3Q6IGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1kaWZmZXJlbnQtcHJv
Y2Vzcy5odHRwcy5odG1sCisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnByb2Nlc3NJZGVudGlmaWVyIGNvbnN0KToKKyAgICAg
ICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlk
bDoKKyAgICAgICAgKiB0ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckludGVybmFsczo6cHJvY2Vzc0lkZW50aWZpZXIgY29u
c3QpOgorICAgICAgICAqIHRlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5oOgorICAgICAg
ICAqIHRlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGw6CisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudHMpOgorICAg
ICAgICBEbyBub3QgcmVnaXN0ZXIgZHVtbXkgZG9jdW1lbnRzIHdob3NlIHNvbGUgcHVycG9zZSBp
cyB0byBkbyBsb2FkaW5nIGZvciBzZXJ2aWNlIHdvcmtlcnMuCisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
V0NvbnRleHRNYW5hZ2VyOjpzZXRDb25uZWN0aW9uKToKKyAgICAgICAgTm93IHRoYXQgY29ubmVj
dGlvbnMgbWlnaHQgYmUgY3JlYXRlZCBtb3JlIHRoYW4gb25jZSBvbiBhIGdpdmVuIHByb2Nlc3Ms
CisgICAgICAgIE1ha2Ugc3VyZSB0aGF0IHRoZSByZXBsYWNlZCBjb25uZWN0aW9uIGlzIHN0b3Bw
ZWQgb3IgdGhlcmUgaXMgbm8gcmVwbGFjZWQgY29ubmVjdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6
OlNXQ29udGV4dE1hbmFnZXI6OnN0b3BBbGxTZXJ2aWNlV29ya2Vycyk6CisgICAgICAgIEFkZCBy
b3V0aW5lIHRvIHN0b3AgYWxsIHNlcnZpY2Ugd29ya2VycyBydW5uaW5nIGluIGEgZ2l2ZW4gd2Vi
IHByb2Nlc3MuCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFu
YWdlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1dDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6
aXNDbG9zZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1dDb250ZXh0TWFuYWdlcjo6Q29u
bmVjdGlvbjo6c2V0QXNDbG9zZWQpOgorCiAyMDE5LTEwLTEwICB5b3Vlbm4gZmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYXNzZXJ0cyB0byBNZWRpYVN0cmVhbVByaXZh
dGUgb2JzZXJ2ZXIgcm91dGluZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZTg1OTJjZTllZmNlN2ZhYzYyYWE1ZTBm
ZjBhYzY3OTAwMTM5NmNlYi4uNGQzNGE5ZGJhZWRhNTgyMmYzOTBjNzczYjQ2NmI2ZjhkMGJhOGYz
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5MiBAQAorMjAxOS0xMC0xMCAgeW91ZW5uIGZhYmxldCAg
PHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV1c2UgZXhpc3Rpbmcgd2ViIHByb2Nlc3Nl
cyBmb3IgcnVubmluZyBzZXJ2aWNlIHdvcmtlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjE5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gbmV0d29yayBwcm9jZXNzIGFza3MgZm9yIGEgc2Vy
dmljZSB3b3JrZXIgY29udGV4dCBjb25uZWN0aW9uLAorICAgICAgICB3ZSBub3cgaXRlcmF0ZSB0
aHJvdWdoIGV4aXN0aW5nIHdlYiBwcm9jZXNzZXMgYW5kIHJldXNlIG9uZSBpZiBib3RoIHNlc3Np
b24KKyAgICAgICAgYW5kIHJlZ2lzdHJhYmxlIGRvbWFpbiBtYXRjaC4KKyAgICAgICAgV2UgdGhl
biBhc2sgdGhlIHdlYiBwcm9jZXNzIHRvIGNyZWF0ZSBhIGNvbnRleHQgY29ubmVjdGlvbiB0byB0
aGUgbmV0d29yayBwcm9jZXNzLgorCisgICAgICAgIFdoZW4gbmV0d29yayBwcm9jZXNzIG5vIGxv
bmdlciBuZWVkcyB0aGUgY29ubmVjdGlvbiwgaXQgaW5zdHJ1Y3RzIHRoZSBVSVByb2Nlc3MKKyAg
ICAgICAgdGhhdCB3aWxsIHVwZGF0ZSBpdHMgc3RhdGUgc28gdGhhdCB0aGUgd2ViIHByb2Nlc3Mg
aXMgbm8gbG9uZ2VyIGNvbnNpZGVyZWQgYXMgcnVubmluZworICAgICAgICBzZXJ2aWNlIHdvcmtl
cnMuCisgICAgICAgIFVJUHJvY2VzcyB0aGVuIGluc3RydWN0cyB0aGUgd2ViIHByb2Nlc3MgdG8g
c3RvcCBpdHMgc2VydmljZSB3b3JrZXJzIGFuZCBpdHMgY29ubmVjdGlvbi4KKworICAgICAgICBM
YXRlciBvbiwgdGhlIHNhbWUgd2ViIHByb2Nlc3MgbWF5IGJlIHJldXNlZCBmb3IgcnVubmluZyBz
ZXJ2aWNlIHdvcmtlcnMgaW4gd2hpY2ggY2FzZQorICAgICAgICBhIG5ldyBjb25uZWN0aW9uIHdp
bGwgcmVwbGFjZSB0aGUgc3RvcHBlZCBjb25uZWN0aW9uLgorCisgICAgICAgIFNpbWlsYXJseSwg
b24gbmV0d29yayBwcm9jZXNzIGNyYXNoLCBhbGwgd2ViIHByb2Nlc3MgcnVubmluZyBzZXJ2aWNl
IHdvcmtlcnMgYXJlIHVwZGF0ZWQKKyAgICAgICAgc28gdGhhdCB0aGV5IGFyZSBubyBsb25nZXIg
Y29uc2lkZXJlZCBhcyBydW5uaW5nIHNlcnZpY2Ugd29ya2Vycy4KKworICAgICAgICBBZGQgYSBi
b29sZWFuIHN0YXRlIHRvIFdlYlByb2Nlc3NQb29sIHRvIGNvbnRyb2wgd2hldGhlciBjcmVhdGlu
ZyBhIHNlcGFyYXRlIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MuCisKKyAgICAgICAgV2Ugbm8gbG9u
Z2VyIHRlcm1pbmF0ZSB0aGUgd2ViIHByb2Nlc3Mgd2hlbiBzdG9wcGluZyBzZXJ2aWNlIHdvcmtl
cnMgb3Igd2hlbiBuZXR3b3JrIHByb2Nlc3MgY3Jhc2guCisgICAgICAgIFdlIHVzZSB0aGUgZW5h
YmxlVGVybWluYXRpb24vZGlzYWJsZVRlcm1pbmF0aW9uIGF0IGNvbnRleHQgY29ubmVjdGlvbiBz
dGFydC9zdG9wIHRpbWUuCisgICAgICAgIFdlIGNvbnNpZGVyIHRoYXQgdGhlIGNvbnRleHQgY29u
bmVjdGlvbiBpcyBzaW1pbGFyIHRvIHJ1bm5pbmcgYSBwYWdlIGluIHRoZSBwcm9jZXNzIGFuZCBj
cmVhdGluZy9yZW1vdmluZyBhIHBhZ2UKKyAgICAgICAgY2FsbHMgZGlzYWJsZVRlcm1pbmF0aW9u
L2VuYWJsZVRlcm1pbmF0aW9uLgorCisgICAgICAgIE5ldHdvcmtQcm9jZXNzIGlzIGhhbmRsaW5n
IHRoZSBtYW5hZ2VtZW50IG9mIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3NlcyBieSBjaGVja2luZyBm
b3IgY2xpZW50cy4KKyAgICAgICAgSW4gY2FzZSB0aGVyZSBpcyBubyBjbGllbnQsIHRoZSBwcm9j
ZXNzIGlzIHRlcm1pbmF0ZWQuCisgICAgICAgIFRoaXMgcmVtb3ZlcyB0aGUgbmVlZCBmb3IgdGhl
IFdlYlByb2Nlc3NQb29sIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgdGltZXIuCisgICAgICAgIFRo
aXMgcGF0Y2ggcmVtb3ZlcyB0aGlzIHRpbWVyLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dDb250ZXh0
Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpjbG9zZVNXQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2Vy
TmVlZGVkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtI
VFRQU1VwZ3JhZGVDaGVja2VyLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjp+V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbiBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
Y29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb246OnN0YXJ0RmV0Y2gpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6CisgICAgICAgIChXS0NvbnRleHRT
ZXRVc2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tQcm9jZXNzUG9vbC5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfc2V0VXNlU2VwYXJh
dGVTZXJ2aWNlV29ya2VyUHJvY2VzczpdKToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfd2Vi
UGFnZUNvbnRlbnRQcm9jZXNzQ291bnRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OndvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpuZXR3b3JrUHJvY2Vzc0NyYXNoZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlbW92ZUZyb21TZXJ2aWNlV29ya2Vy
UHJvY2Vzc2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQ
cm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdlYlBhZ2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dGVybWluYXRlTmV0d29ya1Byb2Nl
c3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0VXNlU2VwYXJhdGVTZXJ2
aWNlV29ya2VyUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yU2VydmljZVdvcmtlcnMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNhblRlcm1pbmF0ZUF1eGlsaWFyeVByb2Nlc3MpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
Rm9yTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaXNhYmxl
U2VydmljZVdvcmtlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmVuYWJs
ZVNlcnZpY2VXb3JrZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6aXNNYXRjaGluZ1JlZ2lzdHJhYmxl
RG9tYWluIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjptX3VzZXJBZ2VudCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp0ZXJtaW5hdGVX
b3JrZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
c3luY1Rlcm1pbmF0ZVdvcmtlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjpjbG9zZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6Om5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbkNsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudHMpOgorCiAyMDE5LTEwLTEwICB5b3Vlbm4g
ZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBBbGxvdyBTWVNfX19w
dGhyZWFkX21hcmtjYW5jZWwgY2FsbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmlu
ZGV4IDZkYTFjZjNhMTMxZWQ4NWQwMzM0NzM4NGRjZTdhZGJhNDRiZWVmZmYuLjM2M2VkY2U1NGVh
Yzc0ZjVlN2Q5ZDZlMzRkZDRlMjU1NzI4YjQ0N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKQEAgLTE5Myw2ICsxOTMsNyBAQAogI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgog
I2luY2x1ZGUgPHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvTW9u
b3RvbmljVGltZS5oPgorI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4KICNpbmNsdWRlIDx3dGYv
VVJMSGVscGVycy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KQEAgLTUyNDcsNCArNTI0
OCw5IEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uKGNvbnN0IE1vY2tXZWJBdXRoZW50aWNhdGlvCiB9CiAjZW5kaWYKIAoraW50IEludGVybmFs
czo6cHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdAoreworICAgIHJldHVybiBnZXRDdXJyZW50UHJv
Y2Vzc0lEKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5oCmluZGV4IGMxMzRkZWZkYWFmMTQwYmE5N2QzZGU0NTAwYzQ5NzRhZTRjNTU2ZjMu
LjEyNmViODlhZWUyNDg1MzYyZjk2Njk0ZTM2OWYzMGE0ODJhZTE1NWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaApAQCAtODkwLDYgKzg5MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oY29uc3QgTW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbiYpOwogI2VuZGlmCiAKKyAgICBpbnQgcHJvY2Vzc0lkZW50aWZp
ZXIoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBJbnRlcm5hbHMoRG9jdW1lbnQm
KTsKICAgICBEb2N1bWVudCogY29udGV4dERvY3VtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5pZGwKaW5kZXggNGUzYTQxMmExNGM4MmFiNDJjMzIyNDU4OWQwMjY4OGNk
NTZhZTA0ZS4uYmRjMzY0NWIzMGE5ZDVmNmM4MWYyNGM3MmUyYWZkM2M1Y2JiNGI3MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtNzIzLDYgKzcyMyw3IEBAIGVudW0gQ29t
cG9zaXRpbmdQb2xpY3kgewogCiAgICAgYm9vbGVhbiBpc0FueVdvcmtsZXRHbG9iYWxTY29wZUFs
aXZlKCk7CiAKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBwcm9jZXNzSWRlbnRpZmllcjsK
ICAgICBET01TdHJpbmcgc2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIoRG9jdW1lbnQgZG9j
dW1lbnQpOwogICAgIFByb21pc2U8dm9pZD4gc3RvcmVSZWdpc3RyYXRpb25zT25EaXNrKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFs
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3Bw
CmluZGV4IDU1NDQ1NjE1ZTBlMWU4MWVjYTE0YjgxNmMzZThlNDkxYjczN2IzZjQuLmU4ZDMwYjRi
OWEwZDM5N2JiYmViNWU3Yzc0NDdmOTgwMmU4ZmNiYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcApAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgIkZldGNoRXZlbnQuaCIKICNpbmNsdWRlICJKU0ZldGNoUmVzcG9uc2UuaCIKICNp
bmNsdWRlICJTV0NvbnRleHRNYW5hZ2VyLmgiCisjaW5jbHVkZSA8d3RmL1Byb2Nlc3NJRC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEwMiw2ICsxMDMsMTEgQEAgYm9vbCBTZXJ2aWNl
V29ya2VySW50ZXJuYWxzOjppc1Rocm90dGxlYWJsZSgpIGNvbnN0CiAgICAgcmV0dXJuIGNvbm5l
Y3Rpb24gPyBjb25uZWN0aW9uLT5pc1Rocm90dGxlYWJsZSgpIDogdHJ1ZTsKIH0KIAoraW50IFNl
cnZpY2VXb3JrZXJJbnRlcm5hbHM6OnByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gZ2V0Q3VycmVudFByb2Nlc3NJRCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29y
a2VySW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRl
cm5hbHMuaAppbmRleCA5MzQ4YTBjYzFiMmU1YjMyOGIxMWI1MTE0OTgzNThlYzgwMTNjMmU2Li42
YmFiZWIyODE3ODNmZjljYzFmOWQyYjk5MzEzNTFmYjRlODhjYzc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaApAQCAtNTUsNiArNTUsOCBA
QCBwdWJsaWM6CiAKICAgICBib29sIGlzVGhyb3R0bGVhYmxlKCkgY29uc3Q7CiAKKyAgICBpbnQg
cHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBTZXJ2
aWNlV29ya2VySW50ZXJuYWxzKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGwKaW5kZXggNTM1
ZGQ4MDVmODhjMzYxZjJiMGY0ZDY2ZWMwYzYwM2U4OTZiZjNjZi4uOTI3MWNlNDk4MmU4OThiMWI2
MjMxZjIwMWNmN2Q1Y2ZmN2U2ZDg4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRsCkBAIC0zOCw0ICszOCw2IEBACiAKICAgICByZWFk
b25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHByb2Nlc3NOYW1lOwogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBib29sZWFuIGlzVGhyb3R0bGVhYmxlOworCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxv
bmcgcHJvY2Vzc0lkZW50aWZpZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcAppbmRleCBhNzEzNDU0ZTZm
Y2JjMTc3ZjY5NTUzMzBlNDExMjg3OWNkNjNlMjAwLi40NDNhOTJjZWNkZWVjMDhlNjk4NzU3Nzhm
OTc1MTNhZmZmY2JhNzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcApAQCAtMjksNiArMjksOSBAQAogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVk
ZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgorI2luY2x1ZGUgIkZyYW1lTG9h
ZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiTGVnYWN5U2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRl
ICJTV0NsaWVudENvbm5lY3Rpb24uaCIKIApAQCAtNjQsNiArNjcsOCBAQCB2b2lkIFNlcnZpY2VX
b3JrZXJQcm92aWRlcjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50cygpCiB7CiAgICAgc2V0
TWF5SGF2ZVJlZ2lzdGVyZWRTZXJ2aWNlV29ya2VycygpOwogICAgIGZvciAoYXV0byogZG9jdW1l
bnQgOiBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkpIHsKKyAgICAgICAgaWYgKCFkb2N1bWVudC0+
cGFnZSgpIHx8IGRvY3VtZW50LT5wYWdlKCktPm1haW5GcmFtZSgpLmxvYWRlcigpLmNsaWVudCgp
LmlzU2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50KCkpCisgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgaWYgKExlZ2FjeVNjaGVtZVJlZ2lzdHJ5OjpjYW5TZXJ2aWNlV29ya2Vyc0hh
bmRsZVVSTFNjaGVtZShkb2N1bWVudC0+dXJsKCkucHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRD
b3B5aW5nKCkpKQogICAgICAgICAgICAgZG9jdW1lbnQtPnNldFNlcnZpY2VXb3JrZXJDb25uZWN0
aW9uKCZzZXJ2aWNlV29ya2VyQ29ubmVjdGlvbigpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIu
Y3BwCmluZGV4IDc3NGYzODVmMThhYmJhODEyODhiNzkxNGFjOWM5MWViMjUxNDRmMzUuLmE2ZGU3
ZDJlMzkzMDU0N2RjOGQ4ZGE1YTI5MDA4MWEwOWYwMjJkZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIu
Y3BwCkBAIC00Miw3ICs0Miw3IEBAIFNXQ29udGV4dE1hbmFnZXImIFNXQ29udGV4dE1hbmFnZXI6
OnNpbmdsZXRvbigpCiAKIHZvaWQgU1dDb250ZXh0TWFuYWdlcjo6c2V0Q29ubmVjdGlvbihzdGQ6
OnVuaXF1ZV9wdHI8Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQogewotICAgIEFTU0VSVCghbV9j
b25uZWN0aW9uKTsKKyAgICBBU1NFUlQoIW1fY29ubmVjdGlvbiB8fCBtX2Nvbm5lY3Rpb24tPmlz
Q2xvc2VkKCkpOwogICAgIG1fY29ubmVjdGlvbiA9IFdURk1vdmUoY29ubmVjdGlvbik7CiB9CiAK
QEAgLTE3Nyw2ICsxNzcsMTYgQEAgU1dDb250ZXh0TWFuYWdlcjo6U2VydmljZVdvcmtlclRlcm1p
bmF0aW9uUmVxdWVzdDo6U2VydmljZVdvcmtlclRlcm1pbmF0aW9uUmVxdWUKICAgICBtX3RpbWVv
dXRUaW1lci5zdGFydE9uZVNob3QodGltZW91dCk7CiB9CiAKK3ZvaWQgU1dDb250ZXh0TWFuYWdl
cjo6c3RvcEFsbFNlcnZpY2VXb3JrZXJzKCkKK3sKKyAgICBhdXRvIHNlcnZpY2VXb3JrZXJzID0g
V1RGTW92ZShtX3dvcmtlck1hcCk7CisgICAgZm9yIChhdXRvJiBzZXJ2aWNlV29ya2VyIDogc2Vy
dmljZVdvcmtlcnMudmFsdWVzKCkpIHsKKyAgICAgICAgc2VydmljZVdvcmtlci0+c2V0QXNUZXJt
aW5hdGluZ09yVGVybWluYXRlZCgpOworICAgICAgICBtX3BlbmRpbmdTZXJ2aWNlV29ya2VyVGVy
bWluYXRpb25SZXF1ZXN0cy5hZGQoc2VydmljZVdvcmtlci0+aWRlbnRpZmllcigpLCBtYWtlVW5p
cXVlPFNlcnZpY2VXb3JrZXJUZXJtaW5hdGlvblJlcXVlc3Q+KCp0aGlzLCBzZXJ2aWNlV29ya2Vy
LT5pZGVudGlmaWVyKCksIHdvcmtlclRlcm1pbmF0aW9uVGltZW91dCkpOworICAgICAgICBzZXJ2
aWNlV29ya2VyLT50aHJlYWQoKS5zdG9wKFtdIHsgfSk7CisgICAgfQorfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCmluZGV4IDYyOGMzZjM4OTJi
ZWVlMjQyYzJlZjdmZjllZTIyMTYwZmRkYzIxMzUuLjQ5MzQ2M2VjYTk5ZmVlZjk1MTE2ZTE5MDY3
YjZlOThjY2Q5MGY0MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKQEAgLTY1LDYgKzY1LDE0IEBAIHB1
YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGNsYWltKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpID0gMDsKIAogICAgICAgICB2aXJ0dWFsIGJv
b2wgaXNUaHJvdHRsZWFibGUoKSBjb25zdCA9IDA7CisKKyAgICAgICAgYm9vbCBpc0Nsb3NlZCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNDbG9zZWQ7IH0KKworICAgIHByb3RlY3RlZDoKKyAgICAgICAg
dm9pZCBzZXRBc0Nsb3NlZCgpIHsgbV9pc0Nsb3NlZCA9IHRydWU7IH0KKworICAgIHByaXZhdGU6
CisgICAgICAgIGJvb2wgbV9pc0Nsb3NlZCB7IGZhbHNlIH07CiAgICAgfTsKIAogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0Q29ubmVjdGlvbihzdGQ6OnVuaXF1ZV9wdHI8Q29ubmVjdGlvbj4m
Jik7CkBAIC04Nyw2ICs5NSwxMSBAQCBwdWJsaWM6CiAKICAgICBTZXJ2aWNlV29ya2VyVGhyZWFk
UHJveHkqIHdvcmtlckJ5SUQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikgeyBy
ZXR1cm4gbV93b3JrZXJNYXAuZ2V0KGlkZW50aWZpZXIpOyB9CiAKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHN0b3BBbGxTZXJ2aWNlV29ya2VycygpOworCisgICAgc3RhdGljIGNvbnN0ZXhwciBT
ZWNvbmRzIHdvcmtlclRlcm1pbmF0aW9uVGltZW91dCB7IDEwX3MgfTsKKyAgICBzdGF0aWMgY29u
c3RleHByIFNlY29uZHMgc3luY1dvcmtlclRlcm1pbmF0aW9uVGltZW91dCB7IDEwMF9tcyB9OyAv
LyBPbmx5IHVzZWQgYnkgbGF5b3V0IHRlc3RzLgorCiBwcml2YXRlOgogICAgIFNXQ29udGV4dE1h
bmFnZXIoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNjIx
OGE2ZTkwZmFiZmY0NDE5MzVlZTAxYTc1ZmQ5ZjVkOWQwYTQ2Ni4uMjQ3YzcxYWVlYTgxZmQyMDMz
YWE2NzcwMjBkMjRiZjQ3ZjMzZDJhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAg
LTc0LDYgKzc0LDkgQEAKICNpbmNsdWRlICJXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1lc3Nh
Z2VzLmgiCiAjZW5kaWYKIAorI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKKyNkZWZpbmUg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYo
bV9zZXNzaW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNoYW5uZWwsICIlcCAtIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykK
KwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMjE5
LDE5ICsyMjIsMTUgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW8KICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6
OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7
Ci0gICAgICAgIEFTU0VSVChtX3N3Q29udGV4dENvbm5lY3Rpb24pOwotICAgICAgICBpZiAobV9z
d0NvbnRleHRDb25uZWN0aW9uKSB7CisgICAgICAgIGlmIChtX3N3Q29udGV4dENvbm5lY3Rpb24p
CiAgICAgICAgICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24tPmRpZFJlY2VpdmVNZXNzYWdlKGNv
bm5lY3Rpb24sIGRlY29kZXIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1l
KCkgPT0gTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSkgewotICAgICAgICBBU1NFUlQobV9zd0NvbnRleHRDb25uZWN0aW9uKTsKLSAgICAgICAg
aWYgKG1fc3dDb250ZXh0Q29ubmVjdGlvbikgeworICAgICAgICBpZiAobV9zd0NvbnRleHRDb25u
ZWN0aW9uKQogICAgICAgICAgICAgbV9zd0NvbnRleHRDb25uZWN0aW9uLT5kaWRSZWNlaXZlRmV0
Y2hUYXNrTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQorICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCiAKQEAgLTg4Nyw3ICs4
ODYsMjAgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU1dT
ZXJ2ZXJDb25uZWN0aW9uKCkKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVz
dGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJs
ZURvbWFpbikKIHsKICAgICBpZiAoYXV0byogc2VydmVyID0gbV9uZXR3b3JrUHJvY2Vzcy0+c3dT
ZXJ2ZXJGb3JTZXNzaW9uSWZFeGlzdHMobV9zZXNzaW9uSUQpKQotICAgICAgICBtX3N3Q29udGV4
dENvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4o
bV9uZXR3b3JrUHJvY2VzcywgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksICpzZXJ2ZXIsIG1f
Y29ubmVjdGlvbi5nZXQoKSk7CisgICAgICAgIG1fc3dDb250ZXh0Q29ubmVjdGlvbiA9IG1ha2VV
bmlxdWU8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPigqdGhpcywgV1RGTW92ZShyZWdp
c3RyYWJsZURvbWFpbiksICpzZXJ2ZXIpOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpjbG9zZVNXQ29udGV4dENvbm5lY3Rpb24oKQoreworICAgIG1fc3dDb250ZXh0
Q29ubmVjdGlvbiA9IG51bGxwdHI7Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZCgpCit7CisgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChTZXJ2aWNlV29ya2VyLCAic2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbk5vTG9uZ2VyTmVlZGVkIC0gV2ViUHJvY2VzcyAlbGx1IG5vIGxvbmdlciB1c2VmdWwg
Zm9yIHJ1bm5pbmcgc2VydmljZSB3b3JrZXJzIiwgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKS50b1VJ
bnQ2NCgpKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpXb3JrZXJDb250ZXh0Q29ubmVj
dGlvbk5vTG9uZ2VyTmVlZGVkIHsgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9LCAwKTsKKworICAg
IG1fc3dDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oCmluZGV4IDdkOGJhMzJlYmU3MzFkMDZmMWJiYTdhNjg1OGUwNjFhYmM1MTcy
ZjguLjY0ZTZkNzEzYjQ0MTRkMjI5MTQ2YWVlNjBhODc5ODk1OTczMzMzYWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgKQEAgLTE1NSw2ICsxNTUsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBj
aGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9y
dElkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0
Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eSk+JiYpOwogCisjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQorICAgIHZvaWQgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVk
KCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyhOZXR3b3JrUHJvY2VzcyYsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBQQUw6OlNlc3Np
b25JRCwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKTsKIApAQCAtMjE0LDYgKzIxOCw3IEBA
IHByaXZhdGU6CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHZvaWQgZXN0YWJsaXNo
U1dTZXJ2ZXJDb25uZWN0aW9uKCk7CiAgICAgdm9pZCBlc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0
aW9uKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYpOworICAgIHZvaWQgY2xvc2VTV0NvbnRl
eHRDb25uZWN0aW9uKCk7CiAgICAgdm9pZCB1bnJlZ2lzdGVyU1dDb25uZWN0aW9uKCk7CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMmFk
MzEzYWI4MjRkNTFkYWNiNjgyOWUzZDliMTVlMGI3NzVjYTNkOS4uM2JjZDBlYjEyYTI2MjAxN2Yy
YTAyNGI0ZTM1YjFjNjViNzE0MDlhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCkBAIC04MSw2ICs4MSw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCiAgICAgRXN0YWJsaXNoU1dTZXJ2ZXJDb25uZWN0aW9uKCkKICAgICBFc3RhYmxpc2hTV0Nv
bnRleHRDb25uZWN0aW9uKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbikKKyAgICBD
bG9zZVNXQ29udGV4dENvbm5lY3Rpb24oKQogI2VuZGlmCiAKICAgICBDcmVhdGVOZXdNZXNzYWdl
UG9ydENoYW5uZWwoc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciBwb3J0MSwg
c3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciBwb3J0MikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hl
Y2tlci5jcHAKaW5kZXggMTkzMjZmMmY0N2RjOWY0ZjYyMjhhNGM5YWE4NGY2YzlmYWFiYjczYS4u
ZDYyOTY2MDUxNjc3NGM0OWYzY2JhNWYwODRkNmMwZTRmYTdmOGUwOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hl
Y2tlci5jcHAKQEAgLTM0LDYgKzM0LDggQEAKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCisjdW5kZWYgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRAorI3VuZGVmIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQKICNkZWZpbmUgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChzZXNzaW9uSUQsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihzZXNz
aW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIE5ldHdvcmtI
VFRQU1VwZ3JhZGVDaGVja2VyOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKICNkZWZpbmUg
UkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChzZXNzaW9uSUQsIGZtdCwgLi4uKSBSRUxFQVNF
X0xPR19FUlJPUl9JRihzZXNzaW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdv
cmssICIlcCAtIE5ldHdvcmtIVFRQU1VwZ3JhZGVDaGVja2VyOjoiIGZtdCwgdGhpcywgIyNfX1ZB
X0FSR1NfXykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmNwcAppbmRleCBlMzZiYjEyMWQ1NjA4MDIzZTM3YTQ3NjhlYTQ5YjE3NTJkMDdiY2Jj
Li41MmE1YTI5YWM2YWNiODU4ZWRkMTczMmNlYzg0NDIyZjIwNjI4MzFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMzAsNiAr
MzAsNyBAQAogCiAjaW5jbHVkZSAiRm9ybURhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNs
dWRlICJOZXR3b3JrUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaFRhc2su
aCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrTWVzc2FnZXMuaCIKQEAgLTQyLDEw
ICs0Myw5IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
Ci1XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OldlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIFJlZ2lzdHJhYmxlRG9tYWlu
JiYgcmVnaXN0cmFibGVEb21haW4sIFNXU2VydmVyJiBzZXJ2ZXIsIFJlZjxJUEM6OkNvbm5lY3Rp
b24+JiYgY29ubmVjdGlvbikKK1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6V2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBj
b25uZWN0aW9uLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBTV1NlcnZl
ciYgc2VydmVyKQogICAgIDogU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKFdURk1vdmUocmVn
aXN0cmFibGVEb21haW4pKQotICAgICwgbV9pcGNDb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlv
bikpCi0gICAgLCBtX25ldHdvcmtQcm9jZXNzKG5ldHdvcmtQcm9jZXNzKQorICAgICwgbV9jb25u
ZWN0aW9uKGNvbm5lY3Rpb24pCiAgICAgLCBtX3NlcnZlcihtYWtlV2Vha1B0cihzZXJ2ZXIpKQog
ewogICAgIHNlcnZlci5hZGRDb250ZXh0Q29ubmVjdGlvbigqdGhpcyk7CkBAIC01MywxNCArNTMs
MTcgQEAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24oTmV0d29ya1Byb2Nlc3MmIG4KIAogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOjp+V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkKIHsKLSAgICBjb25uZWN0
aW9uQ2xvc2VkKCk7CisgICAgYXV0byBmZXRjaGVzID0gV1RGTW92ZShtX29uZ29pbmdGZXRjaGVz
KTsKKyAgICBmb3IgKGF1dG8mIGZldGNoIDogZmV0Y2hlcy52YWx1ZXMoKSkKKyAgICAgICAgZmV0
Y2gtPmZhaWwoUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHsg
fSwgIlNlcnZpY2UgV29ya2VyIGNvbnRleHQgY2xvc2VkIl9zIH0pOworCiAgICAgaWYgKG1fc2Vy
dmVyICYmIG1fc2VydmVyLT5jb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJl
Z2lzdHJhYmxlRG9tYWluKCkpID09IHRoaXMpCiAgICAgICAgIG1fc2VydmVyLT5yZW1vdmVDb250
ZXh0Q29ubmVjdGlvbigqdGhpcyk7CiB9CiAKIElQQzo6Q29ubmVjdGlvbiogV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1faXBjQ29ubmVjdGlvbi5wdHIoKTsKKyAgICByZXR1cm4gJm1fY29ubmVjdGlv
bi5jb25uZWN0aW9uKCk7CiB9CiAKIHVpbnQ2NF90IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdApAQCAtNjgsMTMgKzcxLDYg
QEAgdWludDY0X3QgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVy
RGVzdGluYXRpb25JRCgpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uQ2xvc2VkKCkKLXsKLSAgICBhdXRvIGZl
dGNoZXMgPSBXVEZNb3ZlKG1fb25nb2luZ0ZldGNoZXMpOwotICAgIGZvciAoYXV0byYgZmV0Y2gg
OiBmZXRjaGVzLnZhbHVlcygpKQotICAgICAgICBmZXRjaC0+ZmFpbChSZXNvdXJjZUVycm9yIHsg
ZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgeyB9LCAiU2VydmljZSBXb3JrZXIgY29udGV4
dCBjbG9zZWQiX3MgfSk7Ci19Ci0KIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Ojpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChjb25zdCBTZXJ2aWNlV29ya2VyQ2xp
ZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlmaWVyLCBjb25zdCBNZXNzYWdlV2l0aE1l
c3NhZ2VQb3J0cyYgbWVzc2FnZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlSWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCiB7CiAgICAgaWYgKCFtX3NlcnZlcikK
QEAgLTEzNiw5ICsxMzIsNyBAQCB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
ZGlkRmluaXNoU2tpcFdhaXRpbmcodWludDY0X3QgY2FsbGJhY2tJRCkKIAogdm9pZCBXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCkKIHsK
LSAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiU2VydmljZSB3b3JrZXIgcHJvY2VzcyBp
cyBubyBsb25nZXIgbmVlZGVkLCB0ZXJtaW5hdGluZyBpdCIpOwotICAgIHRlcm1pbmF0ZSgpOwot
ICAgIGNvbm5lY3Rpb25DbG9zZWQoKTsKKyAgICBtX2Nvbm5lY3Rpb24uc2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKCk7CiB9CiAKIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjpzZXRUaHJvdHRsZVN0YXRlKGJvb2wgaXNUaHJvdHRsZWFibGUpCkBAIC0x
NDcsMTcgKzE0MSwxMiBAQCB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2V0
VGhyb3R0bGVTdGF0ZShib29sIGlzVGhyb3R0bGVhYmxlKQogICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTZXRUaHJvdHRsZVN0YXRlIHsgaXNUaHJvdHRs
ZWFibGUgfSk7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp0ZXJt
aW5hdGUoKQotewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uOjpUZXJtaW5hdGVQcm9jZXNzKCkpOwotfQotCiB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6c3RhcnRGZXRjaChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYlNXU2Vy
dmVyQ29ubmVjdGlvbiYgY29udGVudENvbm5lY3Rpb24sIEZldGNoSWRlbnRpZmllciBjb250ZW50
RmV0Y2hJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBGZXRjaE9wdGlv
bnMmIG9wdGlvbnMsIGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0
cmluZyYgcmVmZXJyZXIpCiB7CiAgICAgYXV0byBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciA9
IGNvbnRlbnRDb25uZWN0aW9uLmlkZW50aWZpZXIoKTsKICAgICBhdXRvIGZldGNoSWRlbnRpZmll
ciA9IEZldGNoSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKIAotICAgIGF1dG8gcmVzdWx0ID0gbV9v
bmdvaW5nRmV0Y2hlcy5hZGQoZmV0Y2hJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
OjpjcmVhdGUoc2Vzc2lvbklELCBjb250ZW50Q29ubmVjdGlvbiwgKnRoaXMsIGNvbnRlbnRGZXRj
aElkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBtX25ldHdvcmtQcm9jZXNzLT5z
ZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0KCkpKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fb25nb2lu
Z0ZldGNoZXMuYWRkKGZldGNoSWRlbnRpZmllciwgU2VydmljZVdvcmtlckZldGNoVGFzazo6Y3Jl
YXRlKHNlc3Npb25JRCwgY29udGVudENvbm5lY3Rpb24sICp0aGlzLCBjb250ZW50RmV0Y2hJZGVu
dGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgbV9jb25uZWN0aW9uLm5ldHdvcmtQcm9j
ZXNzKCkuc2VydmljZVdvcmtlckZldGNoVGltZW91dCgpKSk7CiAKICAgICBBU1NFUlQoIW1fb25n
b2luZ0ZldGNoSWRlbnRpZmllcnMuY29udGFpbnMoeyBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciwgY29udGVudEZldGNoSWRlbnRpZmllciB9KSk7CiAgICAgbV9vbmdvaW5nRmV0Y2hJZGVudGlm
aWVycy5hZGQoeyBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29udGVudEZldGNoSWRlbnRp
ZmllciB9LCBmZXRjaElkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4IDU3YmI0ZjMzNzYxMzIyODE0N2QxOTA0NjI0ZTQ0
ZjAwNWZkOTM0MWEuLjNlZjNiMTY3OWVjMGZkMjkyZmI5MTRjNzQ1MGI5ZGVlNGRhYjVjMDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAg
LTQ5LDIxICs0OSwxNyBAQCBjbGFzcyBTZXNzaW9uSUQ7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci1jbGFzcyBOZXR3b3JrUHJvY2VzczsKK2NsYXNzIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOwogY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOwogCiBjbGFzcyBXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24gOiBwdWJsaWMgV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIgewogcHVibGljOgotICAgIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihOZXR3
b3JrUHJvY2VzcyYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFdlYkNvcmU6OlNXU2Vy
dmVyJiwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJik7CisgICAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mJiwgV2ViQ29yZTo6U1dTZXJ2ZXImKTsKICAgICB+V2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uKCk7CiAKLSAgICBJUEM6OkNvbm5lY3Rpb24qIGlwY0Nvbm5lY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX2lwY0Nvbm5lY3Rpb24ucHRyKCk7IH0KLQogICAgIC8vIElQQzo6
TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKIAotICAgIHZvaWQgdGVybWluYXRlKCk7Ci0KICAg
ICB2b2lkIHN0YXJ0RmV0Y2goUEFMOjpTZXNzaW9uSUQsIFdlYlNXU2VydmVyQ29ubmVjdGlvbiYs
IFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OkZldGNo
T3B0aW9ucyYsIGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmKTsK
ICAgICB2b2lkIGNhbmNlbEZldGNoKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIpOwogICAgIHZvaWQgY29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZShXZWJDb3Jl
OjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIs
IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKQEAgLTk4LDggKzk0LDcgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgY29ubmVjdGlvbkNsb3NlZCgpOwogCi0gICAgUmVmPElQQzo6Q29u
bmVjdGlvbj4gbV9pcGNDb25uZWN0aW9uOwotICAgIFJlZjxOZXR3b3JrUHJvY2Vzcz4gbV9uZXR3
b3JrUHJvY2VzczsKKyAgICBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9jb25uZWN0
aW9uOwogICAgIFdlYWtQdHI8V2ViQ29yZTo6U1dTZXJ2ZXI+IG1fc2VydmVyOwogCiAgICAgSGFz
aE1hcDxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpJZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElk
ZW50aWZpZXI+IG1fb25nb2luZ0ZldGNoSWRlbnRpZmllcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAppbmRleCA1ZTNjZWRlMzFiYTFmZjgwYmJmNDlhMjNj
YWFjY2M5MzYxZWMzOGMxLi5mYWY4YTUyOGVhMjMwOWFiZmFlMTc3YmRlZWFiMjdjNWQ1ZjA3MzI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKQEAgLTY2
NywzICs2NjcsOCBAQCB2b2lkIFdLQ29udGV4dENsZWFyTGVnYWN5UHJpdmF0ZUJyb3dzaW5nTG9j
YWxTdG9yYWdlKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCB2bwogICAgICAgICAgICAgY2FsbGJh
Y2soY29udGV4dCk7CiAgICAgfSk7CiB9CisKK3ZvaWQgV0tDb250ZXh0U2V0VXNlU2VwYXJhdGVT
ZXJ2aWNlV29ya2VyUHJvY2VzcyhXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgYm9vbCB1c2VTZXBh
cmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKQoreworICAgIFdlYktpdDo6dG9JbXBsKGNvbnRleHRS
ZWYpLT5zZXRVc2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKHVzZVNlcGFyYXRlU2Vydmlj
ZVdvcmtlclByb2Nlc3MpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tDb250ZXh0UHJpdmF0ZS5oCmluZGV4IDkyNDk1Y2FkZmQwMzEyMmNmYzIzZDQ3NDUzZTA3OGIx
ZWI5MjQ3Y2UuLjcyM2I1ZTQ3ZTZlNmFiYzY2NDJkZWJlODRhY2NkZTFmYTU2OGM3OTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmgKQEAg
LTEyNCw2ICsxMjQsOCBAQCBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTeW5jTG9jYWxTdG9yYWdl
KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCB2b2lkKiBjb250ZXh0LAogdHlwZWRlZiB2b2lkICgq
V0tDb250ZXh0Q2xlYXJMZWdhY3lQcml2YXRlQnJvd3NpbmdMb2NhbFN0b3JhZ2VDYWxsYmFjayko
dm9pZCogZnVuY3Rpb25Db250ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dENsZWFyTGVn
YWN5UHJpdmF0ZUJyb3dzaW5nTG9jYWxTdG9yYWdlKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCB2
b2lkKiBjb250ZXh0LCBXS0NvbnRleHRDbGVhckxlZ2FjeVByaXZhdGVCcm93c2luZ0xvY2FsU3Rv
cmFnZUNhbGxiYWNrIGNhbGxiYWNrKTsKIAorV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0VXNl
U2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2VzcyhXS0NvbnRleHRSZWYgY29udGV4dCwgYm9vbCBm
b3JjZVNlcnZpY2VXb3JrZXJQcm9jZXNzKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nl
c3NQb29sLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bv
b2wubW0KaW5kZXggYzJhOTU2NjIzODI5NDEzNjQ0MjQxMjczZDk5YzI4N2Y1YmU2YWVkMS4uOTc3
ZTQyYjNlYmJkYmI0NjFhNGY1YmFlMmZmMGQ4ZTQyN2E0MWJkZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KQEAgLTQ0Nyw2ICs0
NDcsMTEgQEAgc3RhdGljIE5TRGljdGlvbmFyeSAqcG9saWNpZXNIYXNoTWFwVG9EaWN0aW9uYXJ5
KGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFMKICAgICBfcHJvY2Vzc1Bvb2wtPnRlcm1p
bmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKTsKIH0KIAorLSAodm9pZClfc2V0VXNlU2VwYXJh
dGVTZXJ2aWNlV29ya2VyUHJvY2VzczooQk9PTCl1c2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9j
ZXNzCit7CisgICAgX3Byb2Nlc3NQb29sLT5zZXRVc2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9j
ZXNzKHVzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MpOworfQorCiAtIChwaWRfdClfbmV0
d29ya1Byb2Nlc3NJZGVudGlmaWVyCiB7CiAgICAgcmV0dXJuIF9wcm9jZXNzUG9vbC0+bmV0d29y
a1Byb2Nlc3NJZGVudGlmaWVyKCk7CkBAIC01MDMsMTIgKzUwOCwxMiBAQCBzdGF0aWMgTlNEaWN0
aW9uYXJ5ICpwb2xpY2llc0hhc2hNYXBUb0RpY3Rpb25hcnkoY29uc3QgSGFzaE1hcDxTdHJpbmcs
IEhhc2hNYXA8UwogCiAtIChzaXplX3QpX3dlYlBhZ2VDb250ZW50UHJvY2Vzc0NvdW50CiB7Ci0g
ICAgYXV0byBhbGxXZWJQcm9jZXNzZXMgPSBfcHJvY2Vzc1Bvb2wtPnByb2Nlc3NlcygpOworICAg
IGF1dG8gcmVzdWx0ID0gX3Byb2Nlc3NQb29sLT5wcm9jZXNzZXMoKS5zaXplKCk7CiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHJldHVybiBhbGxXZWJQcm9jZXNzZXMuc2l6ZSgpIC0g
X3Byb2Nlc3NQb29sLT5zZXJ2aWNlV29ya2VyUHJveGllc0NvdW50KCk7Ci0jZWxzZQotICAgIHJl
dHVybiBhbGxXZWJQcm9jZXNzZXMuc2l6ZSgpOworICAgIGlmIChfcHJvY2Vzc1Bvb2wtPnVzZVNl
cGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MoKSkKKyAgICAgICAgcmVzdWx0IC09IF9wcm9jZXNz
UG9vbC0+c2VydmljZVdvcmtlclByb3hpZXNDb3VudCgpOwogI2VuZGlmCisgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAogLSAodm9pZClfcHJlY29ubmVjdFRvU2VydmVyOihOU1VSTCAqKXNlcnZlclVS
TApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vz
c1Bvb2xQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9j
ZXNzUG9vbFByaXZhdGUuaAppbmRleCBlZjhiYjU2NzgyMzA5NWM3NTYzOTc1NDQ0Y2MxNDAxOGQ2
ZTUyNTVlLi4zYTgxZDU5OTk5ZGNjOTk5ZjEzOTNjYzMyOTZiOWJlYTYwNTJiYmUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZh
dGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9v
bFByaXZhdGUuaApAQCAtMTExLDYgKzExMSw3IEBACiAtIChOU1VJbnRlZ2VyKV9tYXhpbXVtU3Vz
cGVuZGVkUGFnZUNvdW50IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQuNCksIGlvcygxMi4y
KSk7CiAtIChOU1VJbnRlZ2VyKV9wcm9jZXNzQ2FjaGVDYXBhY2l0eSBXS19BUElfQVZBSUxBQkxF
KG1hY29zKDEwLjE0LjQpLCBpb3MoMTIuMikpOwogLSAoTlNVSW50ZWdlcilfcHJvY2Vzc0NhY2hl
U2l6ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
OworLSAodm9pZClfc2V0VXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2VzczooQk9PTClmb3Jj
ZVNlcnZpY2VXb3JrZXJQcm9jZXNzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSk7CiAKIC8vIFRlc3Qgb25seS4gUmV0dXJucyB3ZWIgcHJvY2Vzc2Vz
IHJ1bm5pbmcgd2ViIHBhZ2VzIChkb2VzIG5vdCBpbmNsdWRlIHdlYiBwcm9jZXNzZXMgcnVubmlu
ZyBzZXJ2aWNlIHdvcmtlcnMpCiAtIChzaXplX3QpX3dlYlBhZ2VDb250ZW50UHJvY2Vzc0NvdW50
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCksIGlvcygxMS4zKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cAppbmRleCA2ZTMwYTA3ZWVmNDUyYzg4MjAyZDUyOGI5N2NlOTQ0NzMxOWI5YjQyLi5jYTFmNWFi
MjYxOGFkZDQ2MzU1MDQ0YWUwZmZmZmRiNmEzNzYzZTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTEy
NDEsNiArMTI0MSwxMiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmVzdGFibGlzaFdvcmtl
ckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhSZWdpcwogewogICAgIG1fcHJvY2Vz
c1Bvb2wuZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKCp0
aGlzLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgc2Vzc2lvbklEKTsKIH0KKwordm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5Ojp3b3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVk
KFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgaWYgKGF1dG8q
IHByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKGlkZW50aWZp
ZXIpKQorICAgICAgICBwcm9jZXNzLT5kaXNhYmxlU2VydmljZVdvcmtlcnMoKTsKK30KICNlbmRp
ZgogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwg
dWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0X3Qgc3Bh
Y2VSZXF1aXJlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDx1aW50NjRfdD4gcXVv
dGEpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCBlNjVhYWY0Yzc2OWYxNjA0
ZjBhNDM0YTE4MDM0Y2JlNzNhYTJhZTkxLi5mYmYyY2U1OWY4ZDA1YWQ3ZGI4OTkzZTJmYmNkMTRi
NDQ0ZDUxNzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMjQ2LDYgKzI0Niw3IEBAIHByaXZhdGU6CiAKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwg
UEFMOjpTZXNzaW9uSUQpOworICAgIHZvaWQgd29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdl
ck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CiAjZW5kaWYKIAogICAgIHZvaWQg
cmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50
T3JpZ2luJiwgdWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTaXplLCB1aW50NjRfdCBz
cGFjZVJlcXVpcmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPHVpbnQ2NF90PiBx
dW90YSk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDNhYjBkYjA1YjVm
YjJhMzk5Nzc4NzUzZjNiZjUzYWQ5ZTZlZmZkYWYuLmY1ZmI1NjU5Y2YzNDNhMDliODU1ZTJkNmIw
MGQ2ZWVkMTE0ZjYxOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTYyLDYg
KzYyLDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7
CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgRXN0YWJsaXNoV29ya2VyQ29udGV4
dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJl
Z2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCisgICAgV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBp
ZGVudGlmaWVyKQogI2VuZGlmCiAKICAgICBSZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgc3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4sIHVpbnQ2
NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0X3Qgc3BhY2VSZXF1aXJlZCkg
LT4gKE9wdGlvbmFsPHVpbnQ2NF90PiBuZXdRdW90YSkgQXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCA5NGFlZmU0YmJlZDU4MTk3ZDE1YWE5ZTk5
MDg5NTAzODdiNjNkZDEzLi44ZjlmNzVmYTJmOGM4OWUyZmJjNDk0MmY3YzdlOGY3Y2RhZDEwNzA1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC02NzAs
NiArNjcwLDExIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6Om5ldHdvcmtQcm9jZXNzQ3Jhc2hlZChO
ZXR3b3JrUHJvY2Vzc1Byb3h5JiBuZXR3b3JrUHJvY2Vzc1ByCiAgICAgYXV0byYgbmV3TmV0d29y
a1Byb2Nlc3MgPSBlbnN1cmVOZXR3b3JrUHJvY2VzcygpOwogICAgIGZvciAoYXV0byYgcmVwbHkg
OiBwZW5kaW5nUmVwbGllcykKICAgICAgICAgbmV3TmV0d29ya1Byb2Nlc3MuZ2V0TmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKCpyZXBseS5maXJzdCwgV1RGTW92ZShyZXBseS5zZWNvbmQpKTsKKwor
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICB3aGlsZSAoIW1fc2VydmljZVdvcmtlclBy
b2Nlc3Nlcy5pc0VtcHR5KCkpCisgICAgICAgIG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5iZWdp
bigpLT52YWx1ZS0+ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7CisjZW5kaWYKIH0KIAogdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94
eSYgd2ViUHJvY2Vzc1Byb3h5LCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQpAQCAtNjk2LDI0ICs3MDEs
NTcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm8KICAgICB9CiAKICAgICBSZWdpc3RyYWJsZURv
bWFpbldpdGhTZXNzaW9uSUQgcmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEIHsgUmVnaXN0
cmFibGVEb21haW4geyByZWdpc3RyYWJsZURvbWFpbiB9LCBzZXNzaW9uSUQgfTsKLSAgICBpZiAo
bV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluV2l0aFNl
c3Npb25JRCkpCisgICAgaWYgKG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5jb250YWlucyhyZWdp
c3RyYWJsZURvbWFpbldpdGhTZXNzaW9uSUQpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGKHNl
c3Npb25JRC5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgU2VydmljZVdvcmtlciwgIldlYlBy
b2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MgcHJvY2VzcyBhbHJlYWR5IGNyZWF0ZWQiKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAog
ICAgIGlmIChtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuaXNFbXB0eSgpKQogICAgICAgICBzZW5k
VG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlJlZ2lzdGVyU2VydmljZVdvcmtl
ckNsaWVudHMgeyB9KTsKIAotICAgIGF1dG8gc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSA9IFdl
YlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yU2VydmljZVdvcmtlcnMoKnRoaXMsIFdURk1vdmUocmVn
aXN0cmFibGVEb21haW4pLCAqd2Vic2l0ZURhdGFTdG9yZSk7Ci0gICAgbV9zZXJ2aWNlV29ya2Vy
UHJvY2Vzc2VzLmFkZChXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluV2l0aFNlc3Npb25JRCksIHNl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHkucHRyKCkpOworICAgIFdlYlByb2Nlc3NQcm94eSogc2Vy
dmljZVdvcmtlclByb2Nlc3NQcm94eSB7IG51bGxwdHIgfTsKKyAgICBpZiAoIW1fdXNlU2VwYXJh
dGVTZXJ2aWNlV29ya2VyUHJvY2VzcykgeworICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBt
X3Byb2Nlc3NlcykgeworICAgICAgICAgICAgaWYgKHByb2Nlc3MgPT0gbV9wcmV3YXJtZWRQcm9j
ZXNzIHx8IHByb2Nlc3MgPT0gbV9kdW1teVByb2Nlc3NQcm94eSkKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgIGlmICgmcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpICE9
IHdlYnNpdGVEYXRhU3RvcmUpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICBpZiAoIXByb2Nlc3MtPmlzTWF0Y2hpbmdSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURv
bWFpbikpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIHNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHkgPSBwcm9jZXNzLmdldCgpOworICAgICAgICAgICAgc2VydmljZVdv
cmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlU2VydmljZVdvcmtlcnMoKTsKKworICAgICAgICAgICAg
UkVMRUFTRV9MT0dfSUYoc2Vzc2lvbklELmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBTZXJ2
aWNlV29ya2VyLCAiV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2VzcyByZXVzaW5nIGFuIGV4aXN0aW5nIHdlYiBwcm9jZXNzICVwLCBw
cm9jZXNzIGlkZW50aWZpZXIgJWQiLCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LCBzZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5LT5wcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFzZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5KSB7CisgICAgICAgIGF1dG8gbmV3UHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5Ojpj
cmVhdGVGb3JTZXJ2aWNlV29ya2VycygqdGhpcywgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiks
ICp3ZWJzaXRlRGF0YVN0b3JlKTsKKyAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSA9
IG5ld1Byb2Nlc3NQcm94eS5wdHIoKTsKIAotICAgIHVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCk7
Ci0gICAgaW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3Moc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwg
d2Vic2l0ZURhdGFTdG9yZSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGKHNlc3Npb25JRC5pc0Fs
d2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgU2VydmljZVdvcmtlciwgIldlYlByb2Nlc3NQb29sOjpl
c3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgY3JlYXRpbmcg
YSBuZXcgc2VydmljZSB3b3JrZXIgcHJvY2VzcyAlcCwgcHJvY2VzcyBpZGVudGlmaWVyICVkIiwg
c2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSk7CiAKLSAgICBhdXRvKiBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
UHRyID0gc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5wdHIoKTsKLSAgICBtX3Byb2Nlc3Nlcy5h
cHBlbmQoV1RGTW92ZShzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KSk7CisgICAgICAgIHVwZGF0
ZVByb2Nlc3NBc3NlcnRpb25zKCk7CisgICAgICAgIGluaXRpYWxpemVOZXdXZWJQcm9jZXNzKG5l
d1Byb2Nlc3NQcm94eSwgd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgICAgIG1fcHJvY2Vzc2VzLmFw
cGVuZChXVEZNb3ZlKG5ld1Byb2Nlc3NQcm94eSkpOworICAgIH0KIAotICAgIHNlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHlQdHItPmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KG1fc2Vydmlj
ZVdvcmtlclByZWZlcmVuY2VzID8gbV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXMudmFsdWUoKSA6
IG1fZGVmYXVsdFBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zdG9yZSgpKTsKKyAgICBBU1NFUlQo
IW1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbldpdGhT
ZXNzaW9uSUQpKTsKKyAgICBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYWRkKFdURk1vdmUocmVn
aXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEKSwgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSk7
CisKKyAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lc3RhYmxpc2hTZXJ2aWNlV29ya2Vy
Q29udGV4dChtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyA/IG1fc2VydmljZVdvcmtlclByZWZl
cmVuY2VzLnZhbHVlKCkgOiBtX2RlZmF1bHRQYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc3RvcmUo
KSk7CiAgICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQuaXNOdWxsKCkpCi0gICAgICAg
IHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHlQdHItPnNldFNlcnZpY2VXb3JrZXJVc2VyQWdlbnQo
bV9zZXJ2aWNlV29ya2VyVXNlckFnZW50KTsKKyAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQ
cm94eS0+c2V0U2VydmljZVdvcmtlclVzZXJBZ2VudChtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQp
OworfQorCit2b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nl
c3NlcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCit7CisgICAgUmVnaXN0cmFibGVEb21haW5X
aXRoU2Vzc2lvbklEIGtleSB7IHByb2Nlc3MucmVnaXN0cmFibGVEb21haW4oKSwgcHJvY2Vzcy53
ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCkgfTsKKyAgICBBU1NFUlQobV9zZXJ2aWNlV29y
a2VyUHJvY2Vzc2VzLmNvbnRhaW5zKGtleSkpOworICAgIEFTU0VSVChtX3NlcnZpY2VXb3JrZXJQ
cm9jZXNzZXMuZ2V0KGtleSkgPT0gJnByb2Nlc3MpOworICAgIG1fc2VydmljZVdvcmtlclByb2Nl
c3Nlcy5yZW1vdmUoa2V5KTsKIH0KICNlbmRpZgogCkBAIC0xMDk3LDggKzExMzUsOSBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkqIHByb2Nl
c3MpCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYgKHByb2Nlc3MtPmlzUnVu
bmluZ1NlcnZpY2VXb3JrZXJzKCkpIHsKLSAgICAgICAgYXV0byogcmVtb3ZlZFByb2Nlc3MgPSBt
X3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMudGFrZShSZWdpc3RyYWJsZURvbWFpbldpdGhTZXNzaW9u
SUQgeyBwcm9jZXNzLT5yZWdpc3RyYWJsZURvbWFpbigpLCBwcm9jZXNzLT53ZWJzaXRlRGF0YVN0
b3JlKCkuc2Vzc2lvbklEKCkgfSk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQocmVtb3ZlZFByb2Nl
c3MsIHJlbW92ZWRQcm9jZXNzID09IHByb2Nlc3MpOworICAgICAgICBhdXRvIGl0ZXJhdG9yID0g
bV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmZpbmQoUmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lv
bklEIHsgcHJvY2Vzcy0+cmVnaXN0cmFibGVEb21haW4oKSwgcHJvY2Vzcy0+d2Vic2l0ZURhdGFT
dG9yZSgpLnNlc3Npb25JRCgpIH0pOworICAgICAgICBpZiAoaXRlcmF0b3IgIT0gbV9zZXJ2aWNl
V29ya2VyUHJvY2Vzc2VzLmVuZCgpICYmIGl0ZXJhdG9yLT52YWx1ZSA9PSBwcm9jZXNzKQorICAg
ICAgICAgICAgbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnJlbW92ZShpdGVyYXRvcik7CiAgICAg
ICAgIHVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCk7CiAgICAgfQogI2VuZGlmCkBAIC0xMTEzLDE1
ICsxMTUyLDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nlc3MoV2ViUHJv
Y2Vzc1Byb3h5KiBwcm9jZXNzKQogI2VuZGlmCiAKICAgICByZW1vdmVQcm9jZXNzRnJvbU9yaWdp
bkNhY2hlU2V0KCpwcm9jZXNzKTsKLQotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIGRvIGJldHRlciB0aGFuIHRoaXMuIEZvciBub3csIHdlIGp1c3Qg
ZGVzdHJveSB0aGUgU2VydmljZVdvcmtlciBwcm9jZXNzCi0gICAgLy8gd2hlbmV2ZXIgdGhlcmUg
aXMgbm8gcmVndWxhciBXZWJDb250ZW50IHByb2Nlc3MgcmVtYWluaW5nLgotICAgIGlmIChtX3By
b2Nlc3Nlcy5zaXplKCkgPT0gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnNpemUoKSkgewotICAg
ICAgICBpZiAoIW1fc2VydmljZVdvcmtlclByb2Nlc3Nlc1Rlcm1pbmF0aW9uVGltZXIuaXNBY3Rp
dmUoKSkKLSAgICAgICAgICAgIG1fc2VydmljZVdvcmtlclByb2Nlc3Nlc1Rlcm1pbmF0aW9uVGlt
ZXIuc3RhcnRPbmVTaG90KHNlcnZpY2VXb3JrZXJUZXJtaW5hdGlvbkRlbGF5KTsKLSAgICB9Ci0j
ZW5kaWYKIH0KIAogV2ViUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0ZvclJl
Z2lzdHJhYmxlRG9tYWluKFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUsIFdlYlBh
Z2VQcm94eSogcGFnZSwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWlu
KQpAQCAtMTIxMSw4ICsxMjQxLDYgQEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6
OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgUmVmPEFQSToKICAgICBhdXRv
IHBhZ2UgPSBwcm9jZXNzLT5jcmVhdGVXZWJQYWdlKHBhZ2VDbGllbnQsIFdURk1vdmUocGFnZUNv
bmZpZ3VyYXRpb24pKTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBBU1NFUlQo
IXByb2Nlc3MtPmlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkpOwotCiAgICAgaWYgKCFtX3NlcnZp
Y2VXb3JrZXJQcmVmZXJlbmNlcykgewogICAgICAgICBtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNl
cyA9IHBhZ2UtPnByZWZlcmVuY2VzU3RvcmUoKTsKICAgICAgICAgZm9yIChhdXRvKiBzZXJ2aWNl
V29ya2VyUHJvY2VzcyA6IG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy52YWx1ZXMoKSkKQEAgLTE2
OTQsNiArMTcyMiwxMSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpjbGVhckNhY2hlZENyZWRlbnRp
YWxzKCkKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6dGVybWluYXRlTmV0d29ya1Byb2Nlc3MoKQog
eworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICB3aGlsZSAoIW1fc2VydmljZVdvcmtl
clByb2Nlc3Nlcy5pc0VtcHR5KCkpCisgICAgICAgIG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5i
ZWdpbigpLT52YWx1ZS0+ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7CisjZW5kaWYKKwogICAgIGlm
ICghbV9uZXR3b3JrUHJvY2VzcykKICAgICAgICAgcmV0dXJuOwogICAgIApAQCAtMjUwMCw0ICsy
NTMzLDE5IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmNsZWFyV2ViUHJvY2Vzc0lzUGxheWluZ0F1
ZGlibGVNZWRpYShXZWJDb3JlOjpQcm9jZXNzSWRlbnRpCiAgICAgfQogfQogCit2b2lkIFdlYlBy
b2Nlc3NQb29sOjpzZXRVc2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKGJvb2wgdXNlU2Vw
YXJhdGVTZXJ2aWNlV29ya2VyUHJvY2VzcykKK3sKKyAgICBpZiAobV91c2VTZXBhcmF0ZVNlcnZp
Y2VXb3JrZXJQcm9jZXNzID09IHVzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MpCisgICAg
ICAgIHJldHVybjsKKworICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJXZWJQcm9jZXNz
UG9vbDo6c2V0VXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2VzcyAlZCIsIHVzZVNlcGFyYXRl
U2VydmljZVdvcmtlclByb2Nlc3MpOworCisgICAgbV91c2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQ
cm9jZXNzID0gdXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2VzczsKKyNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCisgICAgd2hpbGUgKCFtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuaXNFbXB0
eSgpKQorICAgICAgICBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYmVnaW4oKS0+dmFsdWUtPmRp
c2FibGVTZXJ2aWNlV29ya2VycygpOworI2VuZGlmCisgICAgdGVybWluYXRlTmV0d29ya1Byb2Nl
c3MoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaAppbmRleCAzYzhmNjM5NDczNTNhYjEyNTVkZDNlNDNjOGZlN2MyZTQy
YjRhNWJkLi43YjI1ZjY3NTdmZDMzZWM2MWI1N2MzMGVjZTM0N2I2YWY3ODNiMzY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTM4NCw2ICszODQsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJQYWdlSUQoV2ViUGFnZVByb3h5SWRlbnRp
ZmllcikgY29uc3Q7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHZvaWQgZXN0YWJs
aXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNz
UHJveHkmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQQUw6OlNlc3Npb25JRCk7Cisg
ICAgdm9pZCByZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkm
KTsKICAgICBzaXplX3Qgc2VydmljZVdvcmtlclByb3hpZXNDb3VudCgpIGNvbnN0IHsgcmV0dXJu
IG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5zaXplKCk7IH0KICAgICB2b2lkIHNldEFsbG93c0Fu
eVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlcihib29sIGFsbG93cykgeyBtX2FsbG93c0Fu
eVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlciA9IGFsbG93czsgfQogICAgIGJvb2wgYWxs
b3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyKCkgY29uc3QgeyByZXR1cm4gbV9h
bGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXI7IH0KQEAgLTUyNyw2ICs1Mjgs
OSBAQCBwdWJsaWM6CiAgICAgCiAgICAgUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXImIHBsdWdJbkF1
dG9TdGFydFByb3ZpZGVyKCkgeyByZXR1cm4gbV9wbHVnSW5BdXRvU3RhcnRQcm92aWRlcjsgfQog
CisgICAgdm9pZCBzZXRVc2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKGJvb2wpOworICAg
IGJvb2wgdXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1f
dXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2VzczsgfQorCiBwcml2YXRlOgogICAgIHZvaWQg
cGxhdGZvcm1Jbml0aWFsaXplKCk7CiAKQEAgLTgwMyw2ICs4MDcsNyBAQCBwcml2YXRlOgogI2Vs
c2UKICAgICBib29sIG1faXNEZWxheWVkV2ViUHJvY2Vzc0xhdW5jaERpc2FibGVkIHsgZmFsc2Ug
fTsKICNlbmRpZgorICAgIGJvb2wgbV91c2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzIHsg
ZmFsc2UgfTsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA3NDk1MjVhODliM2Q0MTUwZWYwY2QyNDg5
NWU3NTA1MzE0NDk5OWRmLi5hZDQ0NzVkMjU1ZjllOTk3OWEwMjJmMDk0MjExNTc1NjE5ZWFmZjE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTE0
MSw3ICsxNDEsNyBAQCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0
ZUZvclNlcnZpY2VXb3JrZXJzKFdlYlByb2Nlc3NQb29sJiBwcgogewogICAgIGF1dG8gcHJveHkg
PSBhZG9wdFJlZigqbmV3IFdlYlByb2Nlc3NQcm94eShwcm9jZXNzUG9vbCwgJndlYnNpdGVEYXRh
U3RvcmUsIElzUHJld2FybWVkOjpObykpOwogICAgIHByb3h5LT5tX3JlZ2lzdHJhYmxlRG9tYWlu
ID0gV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbik7Ci0gICAgcHJveHktPm1fc2VydmljZVdvcmtl
ckluZm9ybWF0aW9uID0gU2VydmljZVdvcmtlckluZm9ybWF0aW9uIHsgV2ViUGFnZVByb3h5SWRl
bnRpZmllcjo6Z2VuZXJhdGUoKSwgUGFnZUlkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKKyAgICBw
cm94eS0+ZW5hYmxlU2VydmljZVdvcmtlcnMoKTsKICAgICBwcm94eS0+Y29ubmVjdCgpOwogICAg
IHJldHVybiBwcm94eTsKIH0KQEAgLTk1OSw2ICs5NTksOSBAQCBib29sIFdlYlByb2Nlc3NQcm94
eTo6Y2FuVGVybWluYXRlQXV4aWxpYXJ5UHJvY2VzcygpCiAgICAgaWYgKCFtX3BhZ2VNYXAuaXNF
bXB0eSgpIHx8IG1fc3VzcGVuZGVkUGFnZUNvdW50IHx8ICFtX3Byb3Zpc2lvbmFsUGFnZXMuaXNF
bXB0eSgpIHx8IG1faXNJblByb2Nlc3NDYWNoZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisg
ICAgaWYgKGlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KwogICAgIGlmICghbV9wcm9jZXNzUG9vbC0+c2hvdWxkVGVybWluYXRlKHRoaXMpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKQEAgLTE0NjMsNiArMTQ2Niw5IEBAIHZvaWQgV2ViUHJvY2Vzc1By
b3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvck1haW5GcmFtZShjb25zdCBVUkwmIHVybCkK
IAogICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biB7IHVybCB9OwogICAgIGlmIChtX3JlZ2lzdHJhYmxlRG9tYWluICYmICptX3JlZ2lzdHJhYmxl
RG9tYWluICE9IHJlZ2lzdHJhYmxlRG9tYWluKSB7CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQorICAgICAgICBkaXNhYmxlU2VydmljZVdvcmtlcnMoKTsKKyNlbmRpZgogICAgICAgICAvLyBO
dWxsIG91dCByZWdpc3RyYWJsZSBkb21haW4gc2luY2UgdGhpcyBwcm9jZXNzIGhhcyBub3cgYmVl
biB1c2VkIGZvciBzZXZlcmFsIGRvbWFpbnMuCiAgICAgICAgIG1fcmVnaXN0cmFibGVEb21haW4g
PSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IH07CiAgICAgICAgIHJldHVybjsKQEAgLTE1
NTcsNiArMTU2MywyNiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlU2VydmljZVdvcmtl
clByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdAogICAgIEFTU0VSVChtX3Nl
cnZpY2VXb3JrZXJJbmZvcm1hdGlvbik7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb246OlVwZGF0ZVByZWZlcmVuY2VzU3RvcmUgeyBzdG9yZSB9LCAwKTsK
IH0KKwordm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpc2FibGVTZXJ2aWNlV29ya2VycygpCit7Cisg
ICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gPSB7IH07CisgICAgcHJvY2Vzc1Bvb2woKS5y
ZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3NlcygqdGhpcyk7CisKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Q2xvc2UgeyB9LCAwKTsKKworICAg
IG1heWJlU2h1dERvd24oKTsKK30KKwordm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuYWJsZVNlcnZp
Y2VXb3JrZXJzKCkKK3sKKyAgICBBU1NFUlQobV9yZWdpc3RyYWJsZURvbWFpbiAmJiAhbV9yZWdp
c3RyYWJsZURvbWFpbi0+aXNFbXB0eSgpKTsKKyAgICBBU1NFUlQoIW1fc2VydmljZVdvcmtlcklu
Zm9ybWF0aW9uKTsKKyAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiA9IFNlcnZpY2VXb3Jr
ZXJJbmZvcm1hdGlvbiB7IFdlYlBhZ2VQcm94eUlkZW50aWZpZXI6OmdlbmVyYXRlKCksIFBhZ2VJ
ZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07Cit9CiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDViMDUy
MTg5NGIyMTk4ZWJjZWRlYmFlNjNmNjc1MzU2NTYxNGI3MzIuLmY1NTFiMGU2OTEzNThhZjI5ZmVm
M2VkNzcxYjkzYTYwOGM0ZDc0NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5oCkBAIC0xMjUsMTAgKzEyNSwxNCBAQCBwdWJsaWM6CiAgICAgV2ViUHJvY2Vzc1Bv
b2wqIHByb2Nlc3NQb29sSWZFeGlzdHMoKSBjb25zdDsKICAgICBXZWJQcm9jZXNzUG9vbCYgcHJv
Y2Vzc1Bvb2woKSBjb25zdDsKIAorICAgIGJvb2wgaXNNYXRjaGluZ1JlZ2lzdHJhYmxlRG9tYWlu
KGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pIGNvbnN0IHsgcmV0dXJu
IG1fcmVnaXN0cmFibGVEb21haW4gPyAqbV9yZWdpc3RyYWJsZURvbWFpbiA9PSBkb21haW4gOiBm
YWxzZTsgfQogICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWlu
KCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbi52YWx1ZU9yKFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHsgfSk7IH0KICAgICB2b2lkIHNldElzSW5Qcm9jZXNzQ2FjaGUoYm9v
bCk7CiAgICAgYm9vbCBpc0luUHJvY2Vzc0NhY2hlKCkgY29uc3QgeyByZXR1cm4gbV9pc0luUHJv
Y2Vzc0NhY2hlOyB9CiAKKyAgICB2b2lkIGVuYWJsZVNlcnZpY2VXb3JrZXJzKCk7CisgICAgdm9p
ZCBkaXNhYmxlU2VydmljZVdvcmtlcnMoKTsKKwogICAgIFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNp
dGVEYXRhU3RvcmUoKSBjb25zdCB7IEFTU0VSVChtX3dlYnNpdGVEYXRhU3RvcmUpOyByZXR1cm4g
Km1fd2Vic2l0ZURhdGFTdG9yZTsgfQogICAgIHZvaWQgc2V0V2Vic2l0ZURhdGFTdG9yZShXZWJz
aXRlRGF0YVN0b3JlJik7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAK
aW5kZXggNzUxZTUxMDU1MTU5OTg2YmE1OGI2ODYwYmQ1MTk0OTJjOTY1N2M0OS4uNjIyMjgwODNl
ZmU1YzFhOTMwMmY2ZTMxN2I3M2NkYTRhZDgzZjY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLmNwcApAQCAtNjgsOSArNjgsNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5n
IG5hbWVzcGFjZSBQQUw7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3RhdGljIGNvbnN0
IFNlY29uZHMgYXN5bmNXb3JrZXJUZXJtaW5hdGlvblRpbWVvdXQgeyAxMF9zIH07Ci1zdGF0aWMg
Y29uc3QgU2Vjb25kcyBzeW5jV29ya2VyVGVybWluYXRpb25UaW1lb3V0IHsgMTAwX21zIH07IC8v
IE9ubHkgdXNlZCBieSBsYXlvdXQgdGVzdHMuCi0KIFNlcnZpY2VXb3JrZXJGcmFtZUxvYWRlckNs
aWVudDo6U2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50KFdlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94
eUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25z
dCBTdHJpbmcmIHVzZXJBZ2VudCkKICAgICA6IG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQogICAg
ICwgbV93ZWJQYWdlUHJveHlJRCh3ZWJQYWdlUHJveHlJRCkKQEAgLTk5LDYgKzk2LDcgQEAgV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
KFJlZjxJUEM6OkNvbm5lY3Rpb24KIHsKICAgICB1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKHN0b3Jl
KTsKICAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RXN0YWJsaXNoU1dDb250ZXh0Q29ubmVjdGlvbiB7
IG1fcmVnaXN0cmFibGVEb21haW4gfSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZGlzYWJsZVRlcm1pbmF0aW9uKCk7CiB9CiAKIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
Ojp+V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7CkBAIC0yNTMsMTIg
KzI1MSwxMiBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzb2Z0VXBkYXRl
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyCiAKIHZvaWQgV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb246OnRlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBp
ZGVudGlmaWVyKQogewotICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnRlcm1pbmF0
ZVdvcmtlcihpZGVudGlmaWVyLCBhc3luY1dvcmtlclRlcm1pbmF0aW9uVGltZW91dCwgbnVsbHB0
cik7CisgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkudGVybWluYXRlV29ya2VyKGlk
ZW50aWZpZXIsIFNXQ29udGV4dE1hbmFnZXI6OndvcmtlclRlcm1pbmF0aW9uVGltZW91dCwgbnVs
bHB0cik7CiB9CiAKIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnN5bmNUZXJt
aW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgTWVzc2FnZXM6
OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTeW5jVGVybWluYXRlV29ya2VyOjpEZWxh
eWVkUmVwbHkmJiByZXBseSkKIHsKLSAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS50
ZXJtaW5hdGVXb3JrZXIoaWRlbnRpZmllciwgc3luY1dvcmtlclRlcm1pbmF0aW9uVGltZW91dCwg
V1RGTW92ZShyZXBseSkpOworICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnRlcm1p
bmF0ZVdvcmtlcihpZGVudGlmaWVyLCBTV0NvbnRleHRNYW5hZ2VyOjpzeW5jV29ya2VyVGVybWlu
YXRpb25UaW1lb3V0LCBXVEZNb3ZlKHJlcGx5KSk7CiB9CiAKIHZvaWQgV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IFNl
cnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0aW5hdGlvbklkZW50aWZpZXIsIGNvbnN0
IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiBtZXNzYWdlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKQEAgLTM0OCwx
MCArMzQ2LDE0IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmRpZEZpbmlz
aFNraXBXYWl0aW5nKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgICAgIGNhbGxiYWNrKCk7CiB9
CiAKLXZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnRlcm1pbmF0ZVByb2Nlc3Mo
KQordm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Y2xvc2UoKQogewotICAgIFJF
TEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJTZXJ2aWNlIHdvcmtlciBwcm9jZXNzIGlzIGV4aXRp
bmcgYmVjYXVzZSBpdCBpcyBubyBsb25nZXIgbmVlZGVkIik7Ci0gICAgX2V4aXQoRVhJVF9TVUND
RVNTKTsKKyAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiU2VydmljZSB3b3JrZXIgcHJv
Y2VzcyBpcyByZXF1ZXN0ZWQgdG8gc3RvcCBhbGwgc2VydmljZSB3b3JrZXJzIik7CisgICAgc2V0
QXNDbG9zZWQoKTsKKworICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDbG9zZVNXQ29udGV4dENvbm5l
Y3Rpb24geyB9LCAwKTsKKyAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zdG9wQWxs
U2VydmljZVdvcmtlcnMoKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbmFibGVUZXJt
aW5hdGlvbigpOwogfQogCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzZXRU
aHJvdHRsZVN0YXRlKGJvb2wgaXNUaHJvdHRsZWFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24uaAppbmRleCA3ZDYyNjAxOTYxOTE0ZjNmZTJkNTkyNWM5Yjk3YzRkMTQwZGQzYWUxLi4y
NDc2MjVlZDk1YjUxZTNlZmRmYjVkOTY5ZDdjMGVmZDI5ZWZmYWRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmgKQEAgLTk1LDcgKzk1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNs
YWltQ29tcGxldGVkKHVpbnQ2NF90IGNsYWltUmVxdWVzdElkZW50aWZpZXIpOwogICAgIHZvaWQg
ZGlkRmluaXNoU2tpcFdhaXRpbmcodWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBzZXRV
c2VyQWdlbnQoU3RyaW5nJiYgdXNlckFnZW50KTsKLSAgICBOT19SRVRVUk4gdm9pZCB0ZXJtaW5h
dGVQcm9jZXNzKCk7CisgICAgdm9pZCBjbG9zZSgpOwogICAgIHZvaWQgc2V0VGhyb3R0bGVTdGF0
ZShib29sIGlzVGhyb3R0bGVhYmxlKTsKIAogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29u
bmVjdGlvblRvTmV0d29ya1Byb2Nlc3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IGVhZDhjYmQzYzMwNGQ2ZDcxNTNhMmJlNzQyNTBjNzQy
MjRjZjg3MGEuLjcwOWI2ODVmNTZjNjQ2Y2IyMWYyZjNjNzUyMWNlNmRkNGU2NzJlYzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0zOSw3
ICszOSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIHsKICAg
ICBEaWRGaW5pc2hTa2lwV2FpdGluZyh1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIFNldFVzZXJB
Z2VudChTdHJpbmcgdXNlckFnZW50KQogICAgIFVwZGF0ZVByZWZlcmVuY2VzU3RvcmUoc3RydWN0
IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSkKLSAgICBUZXJtaW5hdGVQcm9jZXNz
KCkKKyAgICBDbG9zZSgpCiAgICAgU2V0VGhyb3R0bGVTdGF0ZShib29sIGlzVGhyb3R0bGVhYmxl
KQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMzQwYzlj
NGM5NDQwMzk1ZjQ1ZGM3YTZjN2FjN2NjNmY2NDk3MWZkMy4uZTM0MzBjMjMwZTQ1MmI3NDdlNDRj
N2IzNjI1MjczODg0Mjc5MzUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcApAQCAtMTIyNSwxMCArMTIyNSw4IEBAIHZvaWQgV2ViUHJvY2Vzczo6bmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uQ2xvc2VkKE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiogY29ubmVjCiAjZW5k
aWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBpZiAoU1dDb250ZXh0TWFuYWdl
cjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HKFNlcnZp
Y2VXb3JrZXIsICJTZXJ2aWNlIHdvcmtlciBwcm9jZXNzIGlzIGV4aXRpbmcgYmVjYXVzZSBuZXR3
b3JrIHByb2Nlc3MgaXMgZ29uZSIpOwotICAgICAgICBfZXhpdChFWElUX1NVQ0NFU1MpOwotICAg
IH0KKyAgICBpZiAoU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKQor
ICAgICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zdG9wQWxsU2VydmljZVdvcmtl
cnMoKTsKICNlbmRpZgogCiAgICAgbV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gPSBudWxscHRy
OwpAQCAtMTc5OCw4ICsxNzk2LDYgQEAgdm9pZCBXZWJQcm9jZXNzOjplc3RhYmxpc2hXb3JrZXJD
b250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3ModWludDY0X3QgcGFnZUcKIAogdm9pZCBX
ZWJQcm9jZXNzOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRzKCkKIHsKLSAgICAvLyBXZSBk
byBub3Qgd2FudCB0byByZWdpc3RlciBzZXJ2aWNlIHdvcmtlciBkdW1teSBkb2N1bWVudHMuCi0g
ICAgQVNTRVJUKCFTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpOwog
ICAgIFNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkucmVnaXN0ZXJTZXJ2aWNlV29y
a2VyQ2xpZW50cygpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggMTViMzEzZmFlZWRmMzJkZGZiMmRiMjgwMDkwYTMwOWE5Nzc5Nzg0Yy4u
MTQzMzU0MDk5NWJiZjYwY2ZjOTQ3ODEwMjc0YmM3MjRhYWExOTcyOSAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE5
LTEwLTEwICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXVz
ZSBleGlzdGluZyB3ZWIgcHJvY2Vzc2VzIGZvciBydW5uaW5nIHNlcnZpY2Ugd29ya2VycworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMTk1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQg
Zm9yIGVuZm9yY2luZyBhIHNlcGFyYXRlIHByb2Nlc3MgZm9yIHNlcnZpY2Ugd29ya2Vycy4KKyAg
ICAgICAgVGhpcyBpcyB1c2VmdWwgZm9yIHRlc3RzIHRyeWluZyB0byBjcmFzaCB0aGUgc2Vydmlj
ZSB3b3JrZXIgcHJvY2Vzcy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tOgorICAgICAgICBVcGRhdGUgdGVzdCB0byB1c2Ug
c2VydmljZVdvcmtlclByb2Nlc3NDb3VudC4KKyAgICAgICAgQWRkIHRlc3QgdG8gY2hlY2sgZm9y
IGluIHByb2Nlc3MgYW5kIG91dCBvZiBwcm9jZXNzIHNlcnZpY2Ugd29ya2Vycy4KKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRs
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5j
cHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNldFVzZVNlcGFyYXRlU2VydmljZVdvcmtl
clByb2Nlc3MpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZh
bHVlcyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6Cisg
ICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlKToKKwogMjAxOS0xMC0wOSAgUnVzc2VsbCBFcHN0ZWluICA8cmVw
c3RlaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNTA5
MzAuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Nl
cnZpY2VXb3JrZXJCYXNpYy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvU2VydmljZVdvcmtlckJhc2ljLm1tCmluZGV4IDU3MDA0YmYyOWE0ZjMzYTM1OGEyOTQ2NjM3
M2Q5YmNlNzNhYTVlMjQuLjBjNWRkOTYyZWI1YTdiOWI4NmZlYmExOTQwMDYzZWZiNWJiYTAxZjQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2Vydmlj
ZVdvcmtlckJhc2ljLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvU2VydmljZVdvcmtlckJhc2ljLm1tCkBAIC0xMjQzLDcgKzEyNDMsNyBAQCBURVNUKFNlcnZp
Y2VXb3JrZXJzLCBTZXJ2aWNlV29ya2VyUHJvY2Vzc0NyZWF0aW9uKQogICAgIGRvbmUgPSBmYWxz
ZTsKIAogICAgIC8vIE1ha2Ugc3VyZSB0aGF0IGxvYWRpbmcgdGhlIHNpbXBsZSBwYWdlIGRpZCBu
b3Qgc3RhcnQgdGhlIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MuCi0gICAgRVhQRUNUX0VRKDF1LCB3
ZWJWaWV3LmdldCgpLmNvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wuX3dlYlByb2Nlc3NDb3VudEln
bm9yaW5nUHJld2FybWVkKTsKKyAgICBFWFBFQ1RfRVEoMHUsIHdlYlZpZXcuZ2V0KCkuY29uZmln
dXJhdGlvbi5wcm9jZXNzUG9vbC5fc2VydmljZVdvcmtlclByb2Nlc3NDb3VudCk7CiAKICAgICB3
ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOm5ld0NvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKICAgICBFWFBFQ1RfRVEoMnUsIHdlYlZpZXcuZ2V0KCkuY29uZmlndXJhdGlvbi5wcm9jZXNz
UG9vbC5fd2ViUHJvY2Vzc0NvdW50SWdub3JpbmdQcmV3YXJtZWQpOwpAQCAtMTI1Myw3ICsxMjUz
LDcgQEAgVEVTVChTZXJ2aWNlV29ya2VycywgU2VydmljZVdvcmtlclByb2Nlc3NDcmVhdGlvbikK
ICAgICBkb25lID0gZmFsc2U7CiAKICAgICAvLyBNYWtlIHN1cmUgdGhhdCBsb2FkaW5nIHRoaXMg
cGFnZSBkaWQgc3RhcnQgdGhlIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MuCi0gICAgRVhQRUNUX0VR
KDN1LCB3ZWJWaWV3LmdldCgpLmNvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wuX3dlYlByb2Nlc3ND
b3VudElnbm9yaW5nUHJld2FybWVkKTsKKyAgICBFWFBFQ1RfRVEoMXUsIHdlYlZpZXcuZ2V0KCku
Y29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbC5fc2VydmljZVdvcmtlclByb2Nlc3NDb3VudCk7CiAK
ICAgICBbW2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6
W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNlOltO
U0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CiAgICAgICAgIGRvbmUg
PSB0cnVlOwpAQCAtMTkxMCw2ICsxOTEwLDUzIEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIFBhcmFs
bGVsUHJvY2Vzc0xhdW5jaCkKICAgICB3YWl0VW50aWxTZXJ2aWNlV29ya2VyUHJvY2Vzc0NvdW50
KHByb2Nlc3NQb29sLCAyKTsKIH0KIAorc3RhdGljIHNpemVfdCBsYXVuY2hTZXJ2aWNlV29ya2Vy
UHJvY2Vzcyhib29sIHVzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MpCit7CisgICAgW1dL
V2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsK
KworICAgIGF1dG8qIGRhdGFTdG9yZSA9IGRhdGFTdG9yZVdpdGhSZWdpc3RlcmVkU2VydmljZVdv
cmtlclNjaGVtZShAInN3Iik7CisKKyAgICAvLyBTdGFydCB3aXRoIGEgY2xlYW4gc2xhdGUgZGF0
YSBzdG9yZQorICAgIFtkYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFT
dG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBh
c3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1d
OworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNl
OworCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0
b3JlOmRhdGFTdG9yZV07CisKKyAgICBhdXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1NX
TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNv
bnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5n
ZXQoKSBuYW1lOkAic3ciXTsKKworICAgIGF1dG8gaGFuZGxlcjEgPSBhZG9wdE5TKFtbU1dTY2hl
bWVzIGFsbG9jXSBpbml0XSk7CisgICAgaGFuZGxlcjEtPnJlc291cmNlcy5zZXQoInN3Oi8vaG9z
dC9tYWluLmh0bWwiLCBSZXNvdXJjZUluZm8geyBAInRleHQvaHRtbCIsIG1haW5CeXRlcyB9KTsK
KyAgICBoYW5kbGVyMS0+cmVzb3VyY2VzLnNldCgic3c6Ly9ob3N0L3N3LmpzIiwgUmVzb3VyY2VJ
bmZvIHsgQCJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Iiwgc2NyaXB0Qnl0ZXMgfSk7CisgICAgaGFu
ZGxlcjEtPnJlc291cmNlcy5zZXQoInN3Oi8vaG9zdDIvbWFpbi5odG1sIiwgUmVzb3VyY2VJbmZv
IHsgQCJ0ZXh0L2h0bWwiLCBtYWluQnl0ZXMgfSk7CisgICAgaGFuZGxlcjEtPnJlc291cmNlcy5z
ZXQoInN3Oi8vaG9zdDIvc3cuanMiLCBSZXNvdXJjZUluZm8geyBAImFwcGxpY2F0aW9uL2phdmFz
Y3JpcHQiLCBzY3JpcHRCeXRlcyB9KTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVI
YW5kbGVyOmhhbmRsZXIxLmdldCgpIGZvclVSTFNjaGVtZTpAInN3Il07CisKKyAgICBhdXRvICpw
cm9jZXNzUG9vbCA9IGNvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2w7CisgICAgW3Byb2Nl
c3NQb29sIF9zZXRVc2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzOiB1c2VTZXBhcmF0ZVNl
cnZpY2VXb3JrZXJQcm9jZXNzXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1
ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpA
InN3Oi8vaG9zdC9tYWluLmh0bWwiXV07CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1
ZXN0XTsKKworICAgIHdhaXRVbnRpbFNlcnZpY2VXb3JrZXJQcm9jZXNzQ291bnQocHJvY2Vzc1Bv
b2wsIDEpOworICAgIHJldHVybiB3ZWJWaWV3LmdldCgpLmNvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bv
b2wuX3dlYlByb2Nlc3NDb3VudElnbm9yaW5nUHJld2FybWVkOworfQorCitURVNUKFNlcnZpY2VX
b3JrZXJzLCBPdXRPZkFuZEluUHJvY2Vzc1NlcnZpY2VXb3JrZXIpCit7CisgICAgYm9vbCB1c2VT
ZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzID0gZmFsc2U7CisgICAgRVhQRUNUX0VRKDF1LCBs
YXVuY2hTZXJ2aWNlV29ya2VyUHJvY2Vzcyh1c2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNz
KSk7CisKKyAgICB1c2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzID0gdHJ1ZTsKKyAgICBF
WFBFQ1RfRVEoMnUsIGxhdW5jaFNlcnZpY2VXb3JrZXJQcm9jZXNzKHVzZVNlcGFyYXRlU2Vydmlj
ZVdvcmtlclByb2Nlc3MpKTsKK30KKwogVEVTVChTZXJ2aWNlV29ya2VycywgVGhyb3R0bGVDcmFz
aCkKIHsKICAgICBBU1NFUlQobWFpbkJ5dGVzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmlu
ZGV4IDk1NzAxNDQ0MTU3NDZmODM0ZTczZGMzNzFjMDQxYTU3NDlhMDFjZGQuLmUyNmI0ZmE4YWUy
NGZlZWNmMmVjYzkxMTAwZWI5ZjE2YjE4YTA0MTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlk
bApAQCAtMzY2LDYgKzM2Niw3IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKIAogICAgIHZvaWQg
dGVybWluYXRlTmV0d29ya1Byb2Nlc3MoKTsKICAgICB2b2lkIHRlcm1pbmF0ZVNlcnZpY2VXb3Jr
ZXJQcm9jZXNzKCk7CisgICAgdm9pZCBzZXRVc2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNz
KGJvb2xlYW4gdmFsdWUpOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcg
c2VydmVyVHJ1c3RFdmFsdWF0aW9uQ2FsbGJhY2tDYWxsc0NvdW50OwogCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCA0
NjE3ZWUzZDM0MWRjMWEwZTdmYjNjMDFiZWRiNThkZjVlZTg3YTgxLi45MTdkZTQxY2Y3ZWNmNzU5
MmE0OTNjZjllOThjMTQ5M2NiNTQ0YjEwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTEyNjQsNiArMTI2NCwxMyBA
QCB2b2lkIFRlc3RSdW5uZXI6OnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKCkKICAgICBX
S0J1bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNzYWdlRm9yVGVzdGluZyhJbmplY3RlZEJ1bmRs
ZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBudWxscHRy
LCBudWxscHRyKTsKIH0KIAordm9pZCBUZXN0UnVubmVyOjpzZXRVc2VTZXBhcmF0ZVNlcnZpY2VX
b3JrZXJQcm9jZXNzKGJvb2wgdmFsdWUpCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+
IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2V0
VXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2VzcyIpKTsKKyAgICBXS1JldGFpblB0cjxXS0Jv
b2xlYW5SZWY+IG1lc3NhZ2VCb2R5ID0gYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUodmFsdWUpKTsK
KyAgICBXS0J1bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNzYWdlRm9yVGVzdGluZyhJbmplY3Rl
ZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBt
ZXNzYWdlQm9keS5nZXQoKSwgbnVsbHB0cik7Cit9CisKIHN0YXRpYyB1bnNpZ25lZCBuZXh0VUlT
Y3JpcHRDYWxsYmFja0lEKCkKIHsKICAgICBzdGF0aWMgdW5zaWduZWQgY2FsbGJhY2tJRCA9IEZp
cnN0VUlTY3JpcHRDYWxsYmFja0lEOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCA2MjcxZDUyMzExNGQ4NjljNGZhMjYyYTc5
NWJjZGZkNjA0ODI3YWI1Li5kOTFkYjc4ZGMzZTRlZWU5ODg2ODNlMTg4MzlhNTIwY2U4NjAzZDlk
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuaApAQCAtNDY1LDYgKzQ2NSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdGVybWluYXRl
TmV0d29ya1Byb2Nlc3MoKTsKICAgICB2b2lkIHRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNz
KCk7CisgICAgdm9pZCBzZXRVc2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKGJvb2wpOwog
CiAgICAgdm9pZCByZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoSlNWYWx1ZVJlZik7CiAgICAg
dm9pZCBjYWxsRGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzQ2FsbGJhY2soKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggYzFkMjBkOWE0NTk0MWYw
YTIxZDI5Y2NkZTY0MjRhYTIyYzU4NDhkYS4uZTlkNDI4ZTgzNGY2ZGNjZGU5NzNlMmVlZThiNTIy
Zjg5MzRmZDA2MSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAK
QEAgLTk3OCw2ICs5NzgsOCBAQCBib29sIFRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9Db25z
aXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zLCBSZQogCiAgICAgV0tDb250
ZXh0Q2xlYXJDdXJyZW50TW9kaWZpZXJTdGF0ZUZvclRlc3RpbmcoVGVzdENvbnRyb2xsZXI6OnNp
bmdsZXRvbigpLmNvbnRleHQoKSk7CiAKKyAgICBXS0NvbnRleHRTZXRVc2VTZXBhcmF0ZVNlcnZp
Y2VXb3JrZXJQcm9jZXNzKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5jb250ZXh0KCksIGZh
bHNlKTsKKwogICAgIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBhbHNvIGVuc3VyZSB0
aGF0IHRoZXJlIGlzIG9ubHkgb25lIHBhZ2Ugb3Blbi4KIAogICAgIC8vIFJlc2V0IHRoZSBFdmVu
dFNlbmRlciBmb3IgZWFjaCB0ZXN0LgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmNwcAppbmRleCBhOGY5YTc5YmU5NTg1N2I3MDBkN2ZhYjY3NzI4OTc1Yzk5NGQwNGIyLi44
ZmU5Mjc5Y2ZlZjEwYjQ5YTQ2M2VkMjYyMjJkNmM2MDAyNzQyNzNjIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtMTYxOCw2ICsxNjE4LDEzIEBAIFdLUmV0
YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01l
c3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAorICAg
IGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0VXNlU2Vw
YXJhdGVTZXJ2aWNlV29ya2VyUHJvY2VzcyIpKSB7CisgICAgICAgIEFTU0VSVChXS0dldFR5cGVJ
RChtZXNzYWdlQm9keSkgPT0gV0tCb29sZWFuR2V0VHlwZUlEKCkpOworICAgICAgICBhdXRvIHVz
ZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MgPSBXS0Jvb2xlYW5HZXRWYWx1ZShzdGF0aWNf
Y2FzdDxXS0Jvb2xlYW5SZWY+KG1lc3NhZ2VCb2R5KSk7CisgICAgICAgIFdLQ29udGV4dFNldFVz
ZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigp
LmNvbnRleHQoKSwgdXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzcyk7CisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIH0KKwogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3Ry
aW5nKG1lc3NhZ2VOYW1lLCAiVGVybWluYXRlTmV0d29ya1Byb2Nlc3MiKSkgewogICAgICAgICBB
U1NFUlQoIW1lc3NhZ2VCb2R5KTsKICAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigp
LnRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzQ5ODFmZmE0OTI0ZmM4ZGYwOTVj
MmU4YzIzMjk2OThiMTVjZWY2Ny4uMzIzZDM5ZDQzMDk2Njc3YzYzOGM1ZTE5Nzc4Yjk4YjhhMzRj
NWFhNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE5LTEwLTEwICB5b3Vlbm4gZmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXVzZSBleGlzdGluZyB3ZWIgcHJvY2Vzc2Vz
IGZvciBydW5uaW5nIHNlcnZpY2Ugd29ya2VycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMTk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJj
ZXMvcG9zdG1lc3NhZ2UtYWZ0ZXItc3ctcHJvY2Vzcy1jcmFzaC5qczoKKyAgICAgICAgKGFzeW5j
LmRvVGVzdCk6CisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2Vz
L3Bvc3RtZXNzYWdlLWFmdGVyLXRlcm1pbmF0ZS5qczoKKyAgICAgICAgKGFzeW5jLmRvVGVzdCk6
CisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3Bvc3RtZXNz
YWdlLWFmdGVyLXRlcm1pbmF0aW5nLWh1bmctd29ya2VyLmpzOgorICAgICAgICAoYXN5bmMuZG9U
ZXN0KToKKyAgICAgICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvb25saW5lLmh0dHBzLmh0
bWw6CisgICAgICAgICogaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLWRp
ZmZlcmVudC1wcm9jZXNzLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0
cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLWRpZmZlcmVudC1wcm9jZXNzLmh0
dHBzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2
aWNlLXdvcmtlci1wcm9jZXNzLXdvcmtlci5qczogQWRkZWQuCisKIDIwMTktMTAtMDkgIFl1cnkg
U2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTGF5b3V0VGVzdCBp
bnNwZWN0b3IvZG9tLWRlYnVnZ2VyL25vZGUtcmVtb3ZlZC5odG1sIGlzIGZsYWt5CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvcG9z
dG1lc3NhZ2UtYWZ0ZXItc3ctcHJvY2Vzcy1jcmFzaC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9wb3N0bWVzc2FnZS1hZnRlci1zdy1wcm9jZXNz
LWNyYXNoLmpzCmluZGV4IDRmNzIxNjRjYWZkOGNlYzA5YmQ4YTgyZTc2YmFhZGIyM2U5MDY4ZGUu
LjEyMDRjYzY1OTRmNDZlMzc1ZjgwM2YwMjM5OTQ3YmM3ZDViMzI2ZGEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9wb3N0bWVzc2Fn
ZS1hZnRlci1zdy1wcm9jZXNzLWNyYXNoLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9wb3N0bWVzc2FnZS1hZnRlci1zdy1wcm9jZXNzLWNy
YXNoLmpzCkBAIC0zNywxMCArMzcsMjAgQEAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZl
bnRMaXN0ZW5lcigibWVzc2FnZSIsIGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgZmluaXNoU1dUZXN0
KCk7CiB9KTsKIAotbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoInJlc291cmNlcy9w
b3N0bWVzc2FnZS1hZnRlci1zdy1wcm9jZXNzLWNyYXNoLXdvcmtlci5qcyIsIHsgfSkudGhlbihm
dW5jdGlvbihyZWdpc3RyYXRpb24pIHsKLSAgICB3b3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFs
bGluZzsKLSAgICBsb2coIiogU2VuZGluZyBTdGF0ZSB0byBTZXJ2aWNlIFdvcmtlciIpOwotICAg
IHdvcmtlci5wb3N0TWVzc2FnZSgiU2V0U3RhdGUiKTsKLSAgICBsb2coIiogQXNraW5nIFNlcnZp
Y2UgV29ya2VyIGlmIGl0IHJlY2VpdmVkIHRoZSBzdGF0ZSIpOwotICAgIHdvcmtlci5wb3N0TWVz
c2FnZSgiSGFzU3RhdGUiKTsKLX0pOworYXN5bmMgZnVuY3Rpb24gZG9UZXN0KCkKK3sKKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRVc2VTZXBhcmF0
ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKHRydWUpOworICAgICAgICBhd2FpdCBmZXRjaCgiIikudGhl
bigoKSA9PiB7IH0sICgpID0+IHsgfSk7CisgICAgfQorCisgICAgbmF2aWdhdG9yLnNlcnZpY2VX
b3JrZXIucmVnaXN0ZXIoInJlc291cmNlcy9wb3N0bWVzc2FnZS1hZnRlci1zdy1wcm9jZXNzLWNy
YXNoLXdvcmtlci5qcyIsIHsgfSkudGhlbihmdW5jdGlvbihyZWdpc3RyYXRpb24pIHsKKyAgICAg
ICAgd29ya2VyID0gcmVnaXN0cmF0aW9uLmluc3RhbGxpbmc7CisgICAgICAgIGxvZygiKiBTZW5k
aW5nIFN0YXRlIHRvIFNlcnZpY2UgV29ya2VyIik7CisgICAgICAgIHdvcmtlci5wb3N0TWVzc2Fn
ZSgiU2V0U3RhdGUiKTsKKyAgICAgICAgbG9nKCIqIEFza2luZyBTZXJ2aWNlIFdvcmtlciBpZiBp
dCByZWNlaXZlZCB0aGUgc3RhdGUiKTsKKyAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKCJIYXNT
dGF0ZSIpOworICAgIH0pOworfQorCitkb1Rlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9wb3N0bWVzc2FnZS1hZnRlci10
ZXJtaW5hdGUuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNv
dXJjZXMvcG9zdG1lc3NhZ2UtYWZ0ZXItdGVybWluYXRlLmpzCmluZGV4IDlkNWY5NzVlZjZjZThh
N2QwYTA3M2U5OWUyM2MyNjJiOGJjZTUwNTIuLmFjN2NhZDc0ZWM2YWU4ZTEwOTA5NTU3NTMwYmU0
ZThhMmU0M2QwZjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9z
ZXJ2aWNlL3Jlc291cmNlcy9wb3N0bWVzc2FnZS1hZnRlci10ZXJtaW5hdGUuanMKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3Bvc3RtZXNzYWdl
LWFmdGVyLXRlcm1pbmF0ZS5qcwpAQCAtMTAsNiArMTAsMTUgQEAgbmF2aWdhdG9yLnNlcnZpY2VX
b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAg
ICAgIGZpbmlzaFNXVGVzdCgpOwogfSk7CiAKLW5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lz
dGVyKCJyZXNvdXJjZXMvcG9zdG1lc3NhZ2UtZWNoby13b3JrZXIuanMiLCB7IH0pLnRoZW4oZnVu
Y3Rpb24ocmVnaXN0cmF0aW9uKSB7Cithc3luYyBmdW5jdGlvbiBkb1Rlc3QoKQoreworICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLnNldFVzZVNlcGFyYXRl
U2VydmljZVdvcmtlclByb2Nlc3ModHJ1ZSk7CisgICAgICAgIGF3YWl0IGZldGNoKCIiKS50aGVu
KCgpID0+IHsgfSwgKCkgPT4geyB9KTsKKyAgICB9CisgCisgICAgY29uc3QgcmVnaXN0cmF0aW9u
ID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoInJlc291cmNlcy9wb3N0
bWVzc2FnZS1lY2hvLXdvcmtlci5qcyIsIHsgfSk7CiAgICAgcmVnaXN0cmF0aW9uLmluc3RhbGxp
bmcucG9zdE1lc3NhZ2UoIk1lc3NhZ2UgMSIpOwotfSk7Cit9CisKK2RvVGVzdCgpOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3Bv
c3RtZXNzYWdlLWFmdGVyLXRlcm1pbmF0aW5nLWh1bmctd29ya2VyLmpzIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3Bvc3RtZXNzYWdlLWFmdGVyLXRl
cm1pbmF0aW5nLWh1bmctd29ya2VyLmpzCmluZGV4IGUwZjJlOGZlOTM2YjEzY2U0ZTNmMDU0YTU4
ZmVkNDRiMDY0MmIzNTcuLjg2YTQzMWI1YzcyMWUwMjkyMDZhMmEzMzlhYTFkYjgwODlhMWZjZDIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291
cmNlcy9wb3N0bWVzc2FnZS1hZnRlci10ZXJtaW5hdGluZy1odW5nLXdvcmtlci5qcworKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvcG9zdG1lc3Nh
Z2UtYWZ0ZXItdGVybWluYXRpbmctaHVuZy13b3JrZXIuanMKQEAgLTIzLDcgKzIzLDE3IEBAIG5h
dmlnYXRvci5zZXJ2aWNlV29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmdW5jdGlv
bihldmVudCkgewogICAgIH0KIH0pOwogCi1uYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rl
cigicmVzb3VyY2VzL3Bvc3RtZXNzYWdlLWVjaG8td29ya2VyLW1heWhhbmcuanMiLCB7IH0pLnRo
ZW4oZnVuY3Rpb24ocmVnaXN0cmF0aW9uKSB7Cithc3luYyBmdW5jdGlvbiBkb1Rlc3QoKQorewor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLnNldFVzZVNl
cGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3ModHJ1ZSk7CisgICAgICAgIGF3YWl0IGZldGNoKCIi
KS50aGVuKCgpID0+IHsgfSwgKCkgPT4geyB9KTsKKyAgICB9CisgCisgICAgY29uc3QgcmVnaXN0
cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoInJlc291cmNl
cy9wb3N0bWVzc2FnZS1lY2hvLXdvcmtlci1tYXloYW5nLmpzIiwgeyB9KTsKICAgICB3b3JrZXIg
PSByZWdpc3RyYXRpb24uaW5zdGFsbGluZzsKICAgICB3b3JrZXIucG9zdE1lc3NhZ2UoIkhBTkci
KTsKLX0pOworfQorCitkb1Rlc3QoKTsKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93
cHQvc2VydmljZS13b3JrZXJzL29ubGluZS5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvc2VydmljZS13b3JrZXJzL29ubGluZS5odHRwcy5odG1sCmluZGV4IGZhNThkN2RmMTc0YWYz
ODFkYTQyMGM1MmQyODliMjUyZGRjMWI1NGEuLjRiOTJiNGJlZTc2ZjFiNTFjMmYwN2NlNDZkNWQ2
N2FiYzk3OWNlOWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29y
a2Vycy9vbmxpbmUuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNl
LXdvcmtlcnMvb25saW5lLmh0dHBzLmh0bWwKQEAgLTksNiArOSwxMSBAQCB2YXIgc2NvcGUgPSAi
IjsKIHZhciBhY3RpdmVXb3JrZXI7CiAKIHByb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4gewor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLnNldFVzZVNl
cGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3ModHJ1ZSk7CisgICAgICAgIGF3YWl0IGZldGNoKCIi
KS50aGVuKCgpID0+IHsgfSwgKCkgPT4geyB9KTsKKyAgICB9CisKICAgICB2YXIgcmVnaXN0cmF0
aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoIm9ubGluZS13b3Jr
ZXIuanMiLCB7IHNjb3BlIDogc2NvcGUgfSk7CiAgICAgYWN0aXZlV29ya2VyID0gcmVnaXN0cmF0
aW9uLmFjdGl2ZTsKICAgICBpZiAoYWN0aXZlV29ya2VyKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLWRpZmZlcmVudC1wcm9j
ZXNzLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29y
a2Vycy9zZXJ2aWNlLXdvcmtlci1kaWZmZXJlbnQtcHJvY2Vzcy5odHRwcy1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZjE5YTc4ODZiZjhmNmU0YzEzNzc4ODYyNzI5NmRiZjVhNDczNDlkZgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2
aWNlLXdvcmtlci1kaWZmZXJlbnQtcHJvY2Vzcy5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSw0IEBACisKK1BBU1MgU2V0dXAgd29ya2VyIAorUEFTUyBUZXN0IHRoYXQgc2VydmljZSB3b3Jr
ZXIgaXMgaW4gYSBkaWZmZXJlbnQgcHJvY2VzcyAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLWRpZmZlcmVudC1wcm9jZXNz
Lmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2Vydmlj
ZS13b3JrZXItZGlmZmVyZW50LXByb2Nlc3MuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ODMyNjM5
MzYzYTRmYjY5NjE3YWJmNWNiN2VlZGY3NTA1ZDMyNDJmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLWRpZmZlcmVu
dC1wcm9jZXNzLmh0dHBzLmh0bWwKQEAgLTAsMCArMSw0MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgordmFyIGFjdGl2ZVdvcmtlcjsKKwor
cHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0VXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2Vz
cyh0cnVlKTsKKyAgICAgICAgYXdhaXQgZmV0Y2goIiIpLnRoZW4oKCkgPT4geyB9LCAoKSA9PiB7
IH0pOworICAgIH0KKworICAgIHZhciByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2Vy
dmljZVdvcmtlci5yZWdpc3Rlcigic2VydmljZS13b3JrZXItcHJvY2Vzcy13b3JrZXIuanMiLCB7
IHNjb3BlIDogIiIgfSk7CisgICAgYWN0aXZlV29ya2VyID0gcmVnaXN0cmF0aW9uLmFjdGl2ZTsK
KyAgICBpZiAoYWN0aXZlV29ya2VyKQorICAgICAgICByZXR1cm47CisgICAgYWN0aXZlV29ya2Vy
ID0gcmVnaXN0cmF0aW9uLmluc3RhbGxpbmc7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29s
dmUgPT4geworICAgICAgICBhY3RpdmVXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignc3RhdGVjaGFu
Z2UnLCAoKSA9PiB7CisgICAgICAgICAgICBpZiAoYWN0aXZlV29ya2VyLnN0YXRlID09PSAiYWN0
aXZhdGVkIikKKyAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgIH0pOworICAgIH0p
OworfSwgIlNldHVwIHdvcmtlciIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsK
KyAgICBsZXQgcmVzb2x2ZTsKKyAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UociA9PiBy
ZXNvbHZlID0gcik7CisgICAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0ZW5l
cigibWVzc2FnZSIsIChlKSA9PiByZXNvbHZlKGUuZGF0YSksIHtvbmNlOiB0cnVlfSk7IAorICAg
IGFjdGl2ZVdvcmtlci5wb3N0TWVzc2FnZSgiUElEIik7CisgICAgYXNzZXJ0X25vdF9lcXVhbHMo
YXdhaXQgcHJvbWlzZSwgd2luZG93LmludGVybmFscy5wcm9jZXNzSWRlbnRpZmllcik7Cit9LCAi
VGVzdCB0aGF0IHNlcnZpY2Ugd29ya2VyIGlzIGluIGEgZGlmZmVyZW50IHByb2Nlc3MiKTsKKwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItcHJvY2Vzcy13b3JrZXIuanMgYi9M
YXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItcHJvY2Vz
cy13b3JrZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmFlNTc3MGNjY2Y4YmRkYzJmMTJjOGMzYzFkNTYyMDBk
ZGFkZmVhZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Ut
d29ya2Vycy9zZXJ2aWNlLXdvcmtlci1wcm9jZXNzLXdvcmtlci5qcwpAQCAtMCwwICsxLDMgQEAK
K3NlbGYuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIChldmVudCkgPT4geworICAgIGV2ZW50
LnNvdXJjZS5wb3N0TWVzc2FnZShzZWxmLmludGVybmFscyA/IGludGVybmFscy5wcm9jZXNzSWRl
bnRpZmllciA6ICJuZWVkcyBpbnRlcm5hbCBBUEkiKTsKK30pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380857</attachid>
            <date>2019-10-13 23:48:58 -0700</date>
            <delta_ts>2019-11-20 14:17:38 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-202195-20191014084855.patch</filename>
            <type>text/plain</type>
            <size>69934</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjc2ZDMxOTZkZGI0MTYy
ODM0MTU1Y2Y2MjAwMGE4Y2M2MWIzMjA3NC4uMWZjYTE4Nzg3YmVkOWEzZDQxZjVlNzQ1NDcxY2Q5
NjljODVkZjdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE5LTEwLTEzICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXVzZSBleGlzdGluZyB3
ZWIgcHJvY2Vzc2VzIGZvciBydW5uaW5nIHNlcnZpY2Ugd29ya2VycworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMTk1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgVXBkYXRlIGltcGxlbWVudGF0aW9uIHRvIGJl
IGFibGUgdG8gcnVuIHNlcnZpY2Ugd29ya2VycyBqb2ludGx5IHdpdGggcGFnZS4KKyAgICAgICAg
QWRkIGludGVybmFscyBBUEkgdG8gZ2V0IHRoZSBwcm9jZXNzIElELgorICAgICAgICBUaGlzIGFs
bG93cyB3cml0aW5nIHRlc3RzIHRvIGNoZWNrIHdoZXRoZXIgYSBzZXJ2aWNlIHdvcmtlciBpcyBp
biB0aGUgc2FtZSBwcm9jZXNzIGFzIGl0cyBjbGllbnQgb3Igbm90LgorCisgICAgICAgIFRlc3Q6
IGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1kaWZmZXJlbnQtcHJvY2Vz
cy5odHRwcy5odG1sCisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbHM6OnByb2Nlc3NJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoK
KyAgICAgICAgKiB0ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2VydmljZVdvcmtlckludGVybmFsczo6cHJvY2Vzc0lkZW50aWZpZXIgY29uc3Qp
OgorICAgICAgICAqIHRlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5oOgorICAgICAgICAq
IHRlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGw6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyUHJvdmlkZXI6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudHMpOgorICAgICAg
ICBEbyBub3QgcmVnaXN0ZXIgZHVtbXkgZG9jdW1lbnRzIHdob3NlIHNvbGUgcHVycG9zZSBpcyB0
byBkbyBsb2FkaW5nIGZvciBzZXJ2aWNlIHdvcmtlcnMuCisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV0Nv
bnRleHRNYW5hZ2VyOjpzZXRDb25uZWN0aW9uKToKKyAgICAgICAgTm93IHRoYXQgY29ubmVjdGlv
bnMgbWlnaHQgYmUgY3JlYXRlZCBtb3JlIHRoYW4gb25jZSBvbiBhIGdpdmVuIHByb2Nlc3MsCisg
ICAgICAgIE1ha2Ugc3VyZSB0aGF0IHRoZSByZXBsYWNlZCBjb25uZWN0aW9uIGlzIHN0b3BwZWQg
b3IgdGhlcmUgaXMgbm8gcmVwbGFjZWQgY29ubmVjdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlNX
Q29udGV4dE1hbmFnZXI6OnN0b3BBbGxTZXJ2aWNlV29ya2Vycyk6CisgICAgICAgIEFkZCByb3V0
aW5lIHRvIHN0b3AgYWxsIHNlcnZpY2Ugd29ya2VycyBydW5uaW5nIGluIGEgZ2l2ZW4gd2ViIHBy
b2Nlc3MuCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6U1dDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbjo6aXND
bG9zZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1dDb250ZXh0TWFuYWdlcjo6Q29ubmVj
dGlvbjo6c2V0QXNDbG9zZWQpOgorCiAyMDE5LTEwLTEzICBUaW0gSG9ydG9uICA8dGltb3RoeV9o
b3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3AgJ3VzaW5nIG5hbWVzcGFjZSAqTmFtZXMn
IGluIGZpbGVzIGdlbmVyYXRlZCBieSBtYWtlX25hbWVzLnBsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNjNTU0NmIz
NWU2YjQzNDZhMmUxMTUxZGFiNjkyNzFlMDUwM2NkYzQuLjk3OTUxOTc4ZTk3MmNhYzgzZTg1NDg4
MDUyNWJiMzI4YzhlNTg0YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTIgQEAKKzIwMTktMTAtMTMg
IHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFJldXNlIGV4aXN0
aW5nIHdlYiBwcm9jZXNzZXMgZm9yIHJ1bm5pbmcgc2VydmljZSB3b3JrZXJzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDIxOTUKKworICAgICAgICBS
ZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICBXaGVuIG5ldHdvcmsgcHJvY2VzcyBh
c2tzIGZvciBhIHNlcnZpY2Ugd29ya2VyIGNvbnRleHQgY29ubmVjdGlvbiwKKyAgICAgICAgd2Ug
bm93IGl0ZXJhdGUgdGhyb3VnaCBleGlzdGluZyB3ZWIgcHJvY2Vzc2VzIGFuZCByZXVzZSBvbmUg
aWYgYm90aCBzZXNzaW9uCisgICAgICAgIGFuZCByZWdpc3RyYWJsZSBkb21haW4gbWF0Y2guCisg
ICAgICAgIFdlIHRoZW4gYXNrIHRoZSB3ZWIgcHJvY2VzcyB0byBjcmVhdGUgYSBjb250ZXh0IGNv
bm5lY3Rpb24gdG8gdGhlIG5ldHdvcmsgcHJvY2Vzcy4KKworICAgICAgICBXaGVuIG5ldHdvcmsg
cHJvY2VzcyBubyBsb25nZXIgbmVlZHMgdGhlIGNvbm5lY3Rpb24sIGl0IGluc3RydWN0cyB0aGUg
VUlQcm9jZXNzCisgICAgICAgIHRoYXQgd2lsbCB1cGRhdGUgaXRzIHN0YXRlIHNvIHRoYXQgdGhl
IHdlYiBwcm9jZXNzIGlzIG5vIGxvbmdlciBjb25zaWRlcmVkIGFzIHJ1bm5pbmcKKyAgICAgICAg
c2VydmljZSB3b3JrZXJzLgorICAgICAgICBVSVByb2Nlc3MgdGhlbiBpbnN0cnVjdHMgdGhlIHdl
YiBwcm9jZXNzIHRvIHN0b3AgaXRzIHNlcnZpY2Ugd29ya2VycyBhbmQgaXRzIGNvbm5lY3Rpb24u
CisKKyAgICAgICAgTGF0ZXIgb24sIHRoZSBzYW1lIHdlYiBwcm9jZXNzIG1heSBiZSByZXVzZWQg
Zm9yIHJ1bm5pbmcgc2VydmljZSB3b3JrZXJzIGluIHdoaWNoIGNhc2UKKyAgICAgICAgYSBuZXcg
Y29ubmVjdGlvbiB3aWxsIHJlcGxhY2UgdGhlIHN0b3BwZWQgY29ubmVjdGlvbi4KKworICAgICAg
ICBTaW1pbGFybHksIG9uIG5ldHdvcmsgcHJvY2VzcyBjcmFzaCwgYWxsIHdlYiBwcm9jZXNzIHJ1
bm5pbmcgc2VydmljZSB3b3JrZXJzIGFyZSB1cGRhdGVkCisgICAgICAgIHNvIHRoYXQgdGhleSBh
cmUgbm8gbG9uZ2VyIGNvbnNpZGVyZWQgYXMgcnVubmluZyBzZXJ2aWNlIHdvcmtlcnMuCisKKyAg
ICAgICAgQWRkIGEgYm9vbGVhbiBzdGF0ZSB0byBXZWJQcm9jZXNzUG9vbCB0byBjb250cm9sIHdo
ZXRoZXIgY3JlYXRpbmcgYSBzZXBhcmF0ZSBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzLgorCisgICAg
ICAgIFdlIG5vIGxvbmdlciB0ZXJtaW5hdGUgdGhlIHdlYiBwcm9jZXNzIHdoZW4gc3RvcHBpbmcg
c2VydmljZSB3b3JrZXJzIG9yIHdoZW4gbmV0d29yayBwcm9jZXNzIGNyYXNoLgorICAgICAgICBX
ZSB1c2UgdGhlIGVuYWJsZVRlcm1pbmF0aW9uL2Rpc2FibGVUZXJtaW5hdGlvbiBhdCBjb250ZXh0
IGNvbm5lY3Rpb24gc3RhcnQvc3RvcCB0aW1lLgorICAgICAgICBXZSBjb25zaWRlciB0aGF0IHRo
ZSBjb250ZXh0IGNvbm5lY3Rpb24gaXMgc2ltaWxhciB0byBydW5uaW5nIGEgcGFnZSBpbiB0aGUg
cHJvY2VzcyBhbmQgY3JlYXRpbmcvcmVtb3ZpbmcgYSBwYWdlCisgICAgICAgIGNhbGxzIGRpc2Fi
bGVUZXJtaW5hdGlvbi9lbmFibGVUZXJtaW5hdGlvbi4KKworICAgICAgICBOZXR3b3JrUHJvY2Vz
cyBpcyBoYW5kbGluZyB0aGUgbWFuYWdlbWVudCBvZiBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzZXMg
YnkgY2hlY2tpbmcgZm9yIGNsaWVudHMuCisgICAgICAgIEluIGNhc2UgdGhlcmUgaXMgbm8gY2xp
ZW50LCB0aGUgcHJvY2VzcyBpcyB0ZXJtaW5hdGVkLgorICAgICAgICBUaGlzIHJlbW92ZXMgdGhl
IG5lZWQgZm9yIHRoZSBXZWJQcm9jZXNzUG9vbCBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzIHRpbWVy
LgorICAgICAgICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhpcyB0aW1lci4KKworICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdl
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFi
bGlzaFNXQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Y2xvc2VTV0NvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb25Ob0xvbmdlck5lZWRlZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5jcHA6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OldlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6fldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRl
ckNvbm5lY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246OmNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKToKKyAgICAgICAgKFdlYktp
dDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzdGFydEZldGNoKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOgorICAgICAg
ICAoV0tDb250ZXh0U2V0VXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzcyk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wg
X3NldFVzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3M6XSk6CisgICAgICAgICgtW1dLUHJv
Y2Vzc1Bvb2wgX3dlYlBhZ2VDb250ZW50UHJvY2Vzc0NvdW50XSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzc1Byb3h5Ojp3b3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6bmV0d29ya1Byb2Nlc3NDcmFzaGVkKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpyZW1vdmVGcm9t
U2VydmljZVdvcmtlclByb2Nlc3Nlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
OjpkaXNjb25uZWN0UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpj
cmVhdGVXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnRlcm1pbmF0
ZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldFVz
ZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvclNlcnZpY2VXb3JrZXJz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjYW5UZXJtaW5hdGVBdXhpbGlh
cnlQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZEZvck1haW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
cm94eTo6ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Byb3h5OjplbmFibGVTZXJ2aWNlV29ya2Vycyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmlzTWF0Y2hp
bmdSZWdpc3RyYWJsZURvbWFpbiBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV91
c2VyQWdlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6dGVybWluYXRlV29ya2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb246OnN5bmNUZXJtaW5hdGVXb3JrZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Y2xvc2UpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzOjpuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRzKToKKwogMjAxOS0x
MC0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEJhY2svRm9y
d2FyZCBjYWNoZSBkb2VzIG5vdCB3b3JrIGFmdGVyIGRvaW5nIGEgZmF2b3JpdGUgbmF2aWdhdGlv
bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDI4YjIwNjNlM2Q3M2NiZWVl
YjFmY2RmZDQ0Yjg2ZmM4MzA2MjExM2EuLjNhOWU2YzJiMmI3NzVlZjQ0ODgzZmQzODQ5ZTA5ZDE5
NzNhNjk1MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTE5Myw2ICsx
OTMsNyBAQAogI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlQ
cmVzc3VyZUhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgorI2luY2x1
ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4KICNpbmNsdWRlIDx3dGYvVVJMSGVscGVycy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdD
b25jYXRlbmF0ZU51bWJlcnMuaD4KQEAgLTUyNTEsNCArNTI1Miw5IEBAIHZvaWQgSW50ZXJuYWxz
OjpzZXRNYXhDYW52YXNQaXhlbE1lbW9yeSh1bnNpZ25lZCBzaXplKQogICAgIEhUTUxDYW52YXNF
bGVtZW50OjpzZXRNYXhQaXhlbE1lbW9yeUZvclRlc3Rpbmcoc2l6ZSk7CiB9CiAKK2ludCBJbnRl
cm5hbHM6OnByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZ2V0Q3VycmVu
dFByb2Nlc3NJRCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaAppbmRleCA3ZmNhNjU2NTRhZjc1MDlmMTNmZDYwOTczNWZlYzdkN2QxN2Nj
NWFiLi5iYTJiYjk3NGE5MmNlZjFhYzdlMzQ0NzZlYmIxMmVhZWRkNzA3YTg5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTg5Miw2ICs4OTIsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKGNvbnN0IE1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24mKTsKICNlbmRpZgogCisgICAgaW50IHByb2Nlc3NJZGVu
dGlmaWVyKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgSW50ZXJuYWxzKERvY3Vt
ZW50Jik7CiAgICAgRG9jdW1lbnQqIGNvbnRleHREb2N1bWVudCgpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGVhZmZmNjgzYTcwNTkwOTZiYmFmOWI3OWQ2MjVj
NDE2ODdhZjFkOTUuLjFlZWUzYzlkM2FlM2IyNmVlN2Y0YWQxMjcwOTg1NTZiYWRjNjJlYzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTcyMyw2ICs3MjMsNyBAQCBlbnVt
IENvbXBvc2l0aW5nUG9saWN5IHsKIAogICAgIGJvb2xlYW4gaXNBbnlXb3JrbGV0R2xvYmFsU2Nv
cGVBbGl2ZSgpOwogCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgcHJvY2Vzc0lkZW50aWZp
ZXI7CiAgICAgRE9NU3RyaW5nIHNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyKERvY3VtZW50
IGRvY3VtZW50KTsKICAgICBQcm9taXNlPHZvaWQ+IHN0b3JlUmVnaXN0cmF0aW9uc09uRGlzaygp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRl
cm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxz
LmNwcAppbmRleCA1NTQ0NTYxNWUwZTFlODFlY2ExNGI4MTZjM2U4ZTQ5MWI3MzdiM2Y0Li5lOGQz
MGI0YjlhMGQzOTdiYmJlYjVlN2M3NDQ3Zjk4MDJlOGZjYmE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5jcHAKQEAgLTMxLDYgKzMxLDcg
QEAKICNpbmNsdWRlICJGZXRjaEV2ZW50LmgiCiAjaW5jbHVkZSAiSlNGZXRjaFJlc3BvbnNlLmgi
CiAjaW5jbHVkZSAiU1dDb250ZXh0TWFuYWdlci5oIgorI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMDIsNiArMTAzLDExIEBAIGJvb2wgU2Vy
dmljZVdvcmtlckludGVybmFsczo6aXNUaHJvdHRsZWFibGUoKSBjb25zdAogICAgIHJldHVybiBj
b25uZWN0aW9uID8gY29ubmVjdGlvbi0+aXNUaHJvdHRsZWFibGUoKSA6IHRydWU7CiB9CiAKK2lu
dCBTZXJ2aWNlV29ya2VySW50ZXJuYWxzOjpwcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGdldEN1cnJlbnRQcm9jZXNzSUQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2Vydmlj
ZVdvcmtlckludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2Vy
SW50ZXJuYWxzLmgKaW5kZXggOTM0OGEwY2MxYjJlNWIzMjhiMTFiNTExNDk4MzU4ZWM4MDEzYzJl
Ni4uNmJhYmViMjgxNzgzZmY5Y2MxZjlkMmI5OTMxMzUxZmI0ZTg4Y2M3NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmgKQEAgLTU1LDYgKzU1
LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1Rocm90dGxlYWJsZSgpIGNvbnN0OwogCisgICAg
aW50IHByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQg
U2VydmljZVdvcmtlckludGVybmFscyhTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRsCmluZGV4
IDUzNWRkODA1Zjg4YzM2MWYyYjBmNGQ2NmVjMGM2MDNlODk2YmYzY2YuLjkyNzFjZTQ5ODJlODk4
YjFiNjIzMWYyMDFjZjdkNWNmZjdlNmQ4ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlkbApAQCAtMzgsNCArMzgsNiBAQAogCiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBwcm9jZXNzTmFtZTsKICAgICByZWFkb25seSBh
dHRyaWJ1dGUgYm9vbGVhbiBpc1Rocm90dGxlYWJsZTsKKworICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBsb25nIHByb2Nlc3NJZGVudGlmaWVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAKaW5kZXggYTcxMzQ1
NGU2ZmNiYzE3N2Y2OTU1MzMwZTQxMTI4NzljZDYzZTIwMC4uNDQzYTkyY2VjZGVlYzA4ZTY5ODc1
Nzc4Zjk3NTEzYWZmZmNiYTc4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAKQEAgLTI5LDYgKzI5LDkgQEAK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2lu
Y2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKKyNpbmNsdWRlICJGcmFt
ZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkxlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5j
bHVkZSAiU1dDbGllbnRDb25uZWN0aW9uLmgiCiAKQEAgLTY0LDYgKzY3LDggQEAgdm9pZCBTZXJ2
aWNlV29ya2VyUHJvdmlkZXI6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudHMoKQogewogICAg
IHNldE1heUhhdmVSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMoKTsKICAgICBmb3IgKGF1dG8qIGRv
Y3VtZW50IDogRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpKSB7CisgICAgICAgIGlmICghZG9jdW1l
bnQtPnBhZ2UoKSB8fCBkb2N1bWVudC0+cGFnZSgpLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5jbGll
bnQoKS5pc1NlcnZpY2VXb3JrZXJGcmFtZUxvYWRlckNsaWVudCgpKQorICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIGlmIChMZWdhY3lTY2hlbWVSZWdpc3RyeTo6Y2FuU2VydmljZVdvcmtl
cnNIYW5kbGVVUkxTY2hlbWUoZG9jdW1lbnQtPnVybCgpLnByb3RvY29sKCkudG9TdHJpbmdXaXRo
b3V0Q29weWluZygpKSkKICAgICAgICAgICAgIGRvY3VtZW50LT5zZXRTZXJ2aWNlV29ya2VyQ29u
bmVjdGlvbigmc2VydmljZVdvcmtlckNvbm5lY3Rpb24oKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5h
Z2VyLmNwcAppbmRleCA3NzRmMzg1ZjE4YWJiYTgxMjg4Yjc5MTRhYzljOTFlYjI1MTQ0ZjM1Li5h
NmRlN2QyZTM5MzA1NDdkYzhkOGRhNWEyOTAwODFhMDlmMDIyZGZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5h
Z2VyLmNwcApAQCAtNDIsNyArNDIsNyBAQCBTV0NvbnRleHRNYW5hZ2VyJiBTV0NvbnRleHRNYW5h
Z2VyOjpzaW5nbGV0b24oKQogCiB2b2lkIFNXQ29udGV4dE1hbmFnZXI6OnNldENvbm5lY3Rpb24o
c3RkOjp1bmlxdWVfcHRyPENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKIHsKLSAgICBBU1NFUlQo
IW1fY29ubmVjdGlvbik7CisgICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb24gfHwgbV9jb25uZWN0aW9u
LT5pc0Nsb3NlZCgpKTsKICAgICBtX2Nvbm5lY3Rpb24gPSBXVEZNb3ZlKGNvbm5lY3Rpb24pOwog
fQogCkBAIC0xNzcsNiArMTc3LDE2IEBAIFNXQ29udGV4dE1hbmFnZXI6OlNlcnZpY2VXb3JrZXJU
ZXJtaW5hdGlvblJlcXVlc3Q6OlNlcnZpY2VXb3JrZXJUZXJtaW5hdGlvblJlcXVlCiAgICAgbV90
aW1lb3V0VGltZXIuc3RhcnRPbmVTaG90KHRpbWVvdXQpOwogfQogCit2b2lkIFNXQ29udGV4dE1h
bmFnZXI6OnN0b3BBbGxTZXJ2aWNlV29ya2VycygpCit7CisgICAgYXV0byBzZXJ2aWNlV29ya2Vy
cyA9IFdURk1vdmUobV93b3JrZXJNYXApOworICAgIGZvciAoYXV0byYgc2VydmljZVdvcmtlciA6
IHNlcnZpY2VXb3JrZXJzLnZhbHVlcygpKSB7CisgICAgICAgIHNlcnZpY2VXb3JrZXItPnNldEFz
VGVybWluYXRpbmdPclRlcm1pbmF0ZWQoKTsKKyAgICAgICAgbV9wZW5kaW5nU2VydmljZVdvcmtl
clRlcm1pbmF0aW9uUmVxdWVzdHMuYWRkKHNlcnZpY2VXb3JrZXItPmlkZW50aWZpZXIoKSwgbWFr
ZVVuaXF1ZTxTZXJ2aWNlV29ya2VyVGVybWluYXRpb25SZXF1ZXN0PigqdGhpcywgc2VydmljZVdv
cmtlci0+aWRlbnRpZmllcigpLCB3b3JrZXJUZXJtaW5hdGlvblRpbWVvdXQpKTsKKyAgICAgICAg
c2VydmljZVdvcmtlci0+dGhyZWFkKCkuc3RvcChbXSB7IH0pOworICAgIH0KK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAppbmRleCA2MjhjM2Yz
ODkyYmVlZTI0MmMyZWY3ZmY5ZWUyMjE2MGZkZGMyMTM1Li40OTM0NjNlY2E5OWZlZWY5NTExNmUx
OTA2N2I2ZTk4Y2NkOTBmNDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCkBAIC02NSw2ICs2NSwxNCBA
QCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjbGFpbShTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSA9IDA7CiAKICAgICAgICAgdmlydHVh
bCBib29sIGlzVGhyb3R0bGVhYmxlKCkgY29uc3QgPSAwOworCisgICAgICAgIGJvb2wgaXNDbG9z
ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQ2xvc2VkOyB9CisKKyAgICBwcm90ZWN0ZWQ6CisgICAg
ICAgIHZvaWQgc2V0QXNDbG9zZWQoKSB7IG1faXNDbG9zZWQgPSB0cnVlOyB9CisKKyAgICBwcml2
YXRlOgorICAgICAgICBib29sIG1faXNDbG9zZWQgeyBmYWxzZSB9OwogICAgIH07CiAKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbm5lY3Rpb24oc3RkOjp1bmlxdWVfcHRyPENvbm5lY3Rp
b24+JiYpOwpAQCAtODcsNiArOTUsMTEgQEAgcHVibGljOgogCiAgICAgU2VydmljZVdvcmtlclRo
cmVhZFByb3h5KiB3b3JrZXJCeUlEKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIp
IHsgcmV0dXJuIG1fd29ya2VyTWFwLmdldChpZGVudGlmaWVyKTsgfQogCisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzdG9wQWxsU2VydmljZVdvcmtlcnMoKTsKKworICAgIHN0YXRpYyBjb25zdGV4
cHIgU2Vjb25kcyB3b3JrZXJUZXJtaW5hdGlvblRpbWVvdXQgeyAxMF9zIH07CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBTZWNvbmRzIHN5bmNXb3JrZXJUZXJtaW5hdGlvblRpbWVvdXQgeyAxMDBfbXMg
fTsgLy8gT25seSB1c2VkIGJ5IGxheW91dCB0ZXN0cy4KKwogcHJpdmF0ZToKICAgICBTV0NvbnRl
eHRNYW5hZ2VyKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4
IDYyMThhNmU5MGZhYmZmNDQxOTM1ZWUwMWE3NWZkOWY1ZDlkMGE0NjYuLjI0N2M3MWFlZWE4MWZk
MjAzM2FhNjc3MDIwZDI0YmY0N2YzM2QyYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CkBAIC03NCw2ICs3NCw5IEBACiAjaW5jbHVkZSAiV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlN
ZXNzYWdlcy5oIgogI2VuZGlmCiAKKyN1bmRlZiBSRUxFQVNFX0xPR19JRl9BTExPV0VECisjZGVm
aW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9H
X0lGKG1fc2Vzc2lvbklELmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAg
LSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdT
X18pCisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAg
LTIxOSwxOSArMjIyLDE1IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3Nh
Z2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSkgewotICAgICAgICBBU1NFUlQobV9zd0NvbnRleHRDb25uZWN0aW9uKTsKLSAgICAgICAgaWYg
KG1fc3dDb250ZXh0Q29ubmVjdGlvbikgeworICAgICAgICBpZiAobV9zd0NvbnRleHRDb25uZWN0
aW9uKQogICAgICAgICAgICAgbV9zd0NvbnRleHRDb25uZWN0aW9uLT5kaWRSZWNlaXZlTWVzc2Fn
ZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQor
ICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVy
TmFtZSgpID09IE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCkpIHsKLSAgICAgICAgQVNTRVJUKG1fc3dDb250ZXh0Q29ubmVjdGlvbik7Ci0gICAg
ICAgIGlmIChtX3N3Q29udGV4dENvbm5lY3Rpb24pIHsKKyAgICAgICAgaWYgKG1fc3dDb250ZXh0
Q29ubmVjdGlvbikKICAgICAgICAgICAgIG1fc3dDb250ZXh0Q29ubmVjdGlvbi0+ZGlkUmVjZWl2
ZUZldGNoVGFza01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KKyAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgogCkBAIC04ODcs
NyArODg2LDIwIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVzdGFibGlz
aFNXU2VydmVyQ29ubmVjdGlvbigpCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Ojplc3RhYmxpc2hTV0NvbnRleHRDb25uZWN0aW9uKFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0
cmFibGVEb21haW4pCiB7CiAgICAgaWYgKGF1dG8qIHNlcnZlciA9IG1fbmV0d29ya1Byb2Nlc3Mt
PnN3U2VydmVyRm9yU2Vzc2lvbklmRXhpc3RzKG1fc2Vzc2lvbklEKSkKLSAgICAgICAgbV9zd0Nv
bnRleHRDb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24+KG1fbmV0d29ya1Byb2Nlc3MsIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCAqc2VydmVy
LCBtX2Nvbm5lY3Rpb24uZ2V0KCkpOworICAgICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24gPSBt
YWtlVW5pcXVlPFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbj4oKnRoaXMsIFdURk1vdmUo
cmVnaXN0cmFibGVEb21haW4pLCAqc2VydmVyKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Y2xvc2VTV0NvbnRleHRDb25uZWN0aW9uKCkKK3sKKyAgICBtX3N3Q29u
dGV4dENvbm5lY3Rpb24gPSBudWxscHRyOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoKQorewor
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoU2VydmljZVdvcmtlciwgInNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZCAtIFdlYlByb2Nlc3MgJWxsdSBubyBsb25nZXIgdXNl
ZnVsIGZvciBydW5uaW5nIHNlcnZpY2Ugd29ya2VycyIsIHdlYlByb2Nlc3NJZGVudGlmaWVyKCku
dG9VSW50NjQoKSk7CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6V29ya2VyQ29udGV4dENv
bm5lY3Rpb25Ob0xvbmdlck5lZWRlZCB7IHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CisK
KyAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOwogfQogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaAppbmRleCA3ZDhiYTMyZWJlNzMxZDA2ZjFiYmE3YTY4NThlMDYxYWJj
NTE3MmY4Li42NGU2ZDcxM2I0NDE0ZDIyOTE0NmFlZTYwYTg3OTg5NTk3MzMzM2FkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0xNTUsNiArMTU1LDEwIEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgY2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkoY29uc3QgV2ViQ29yZTo6TWVzc2Fn
ZVBvcnRJZGVudGlmaWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpNZXNzYWdl
UG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0aXZpdHkpPiYmKTsKIAorI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKKyAgICB2b2lkIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5l
ZWRlZCgpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MoTmV0d29ya1Byb2Nlc3MmLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgUEFMOjpT
ZXNzaW9uSUQsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CiAKQEAgLTIxNCw2ICsyMTgs
NyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGVzdGFi
bGlzaFNXU2VydmVyQ29ubmVjdGlvbigpOwogICAgIHZvaWQgZXN0YWJsaXNoU1dDb250ZXh0Q29u
bmVjdGlvbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmKTsKKyAgICB2b2lkIGNsb3NlU1dD
b250ZXh0Q29ubmVjdGlvbigpOwogICAgIHZvaWQgdW5yZWdpc3RlclNXQ29ubmVjdGlvbigpOwog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4
IDJhZDMxM2FiODI0ZDUxZGFjYjY4MjllM2Q5YjE1ZTBiNzc1Y2EzZDkuLjNiY2QwZWIxMmEyNjIw
MTdmMmEwMjRiNGUzNWIxYzY1YjcxNDA5YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgpAQCAtODEsNiArODEsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQogICAgIEVzdGFibGlzaFNXU2VydmVyQ29ubmVjdGlvbigpCiAgICAgRXN0YWJsaXNo
U1dDb250ZXh0Q29ubmVjdGlvbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4pCisg
ICAgQ2xvc2VTV0NvbnRleHRDb25uZWN0aW9uKCkKICNlbmRpZgogCiAgICAgQ3JlYXRlTmV3TWVz
c2FnZVBvcnRDaGFubmVsKHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIgcG9y
dDEsIHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIgcG9ydDIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtIVFRQU1VwZ3JhZGVDaGVj
a2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFk
ZUNoZWNrZXIuY3BwCmluZGV4IDE5MzI2ZjJmNDdkYzlmNGY2MjI4YTRjOWFhODRmNmM5ZmFhYmI3
M2EuLmQ2Mjk2NjA1MTY3NzRjNDlmM2NiYTVmMDg0ZDZjMGU0ZmE3ZjhlMDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFkZUNoZWNrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0hUVFBTVXBncmFk
ZUNoZWNrZXIuY3BwCkBAIC0zNCw2ICszNCw4IEBACiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIAorI3VuZGVmIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQKKyN1bmRlZiBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VECiAjZGVmaW5lIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoc2Vzc2lvbklELCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYo
c2Vzc2lvbklELmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSBOZXR3
b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCiAjZGVm
aW5lIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoc2Vzc2lvbklELCBmbXQsIC4uLikgUkVM
RUFTRV9MT0dfRVJST1JfSUYoc2Vzc2lvbklELmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBO
ZXR3b3JrLCAiJXAgLSBOZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlcjo6IiBmbXQsIHRoaXMsICMj
X19WQV9BUkdTX18pCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5jcHAKaW5kZXggODVkOWU5NTVhYTQyZWI5MjZiMDgzZDIwNDE1ZDM0N2IzMjU1
ZDY1Mi4uNmMxNGU2ZGE1MjQzMDYwZTZiOGYwMzQ1MmVlNDg2YzYwZjRlYmExNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTMw
LDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkZvcm1EYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAj
aW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoVGFza01lc3NhZ2VzLmgiCkBAIC00
MiwxMCArNDMsOSBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAotV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBSZWdpc3RyYWJsZURv
bWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBTV1NlcnZlciYgc2VydmVyLCBSZWY8SVBDOjpDb25u
ZWN0aW9uPiYmIGNvbm5lY3Rpb24pCitXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Oldl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyYgY29ubmVjdGlvbiwgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgU1dT
ZXJ2ZXImIHNlcnZlcikKICAgICA6IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihXVEZNb3Zl
KHJlZ2lzdHJhYmxlRG9tYWluKSkKLSAgICAsIG1faXBjQ29ubmVjdGlvbihXVEZNb3ZlKGNvbm5l
Y3Rpb24pKQotICAgICwgbV9uZXR3b3JrUHJvY2VzcyhuZXR3b3JrUHJvY2VzcykKKyAgICAsIG1f
Y29ubmVjdGlvbihjb25uZWN0aW9uKQogICAgICwgbV9zZXJ2ZXIobWFrZVdlYWtQdHIoc2VydmVy
KSkKIHsKICAgICBzZXJ2ZXIuYWRkQ29udGV4dENvbm5lY3Rpb24oKnRoaXMpOwpAQCAtNTMsMTQg
KzUzLDE3IEBAIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6V2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiBuCiAKIFdlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6fldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpCiB7Ci0gICAgY29u
bmVjdGlvbkNsb3NlZCgpOworICAgIGF1dG8gZmV0Y2hlcyA9IFdURk1vdmUobV9vbmdvaW5nRmV0
Y2hlcyk7CisgICAgZm9yIChhdXRvJiBmZXRjaCA6IGZldGNoZXMudmFsdWVzKCkpCisgICAgICAg
IGZldGNoLT5mYWlsKFJlc291cmNlRXJyb3IgeyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAw
LCB7IH0sICJTZXJ2aWNlIFdvcmtlciBjb250ZXh0IGNsb3NlZCJfcyB9KTsKKwogICAgIGlmICht
X3NlcnZlciAmJiBtX3NlcnZlci0+Y29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFp
bihyZWdpc3RyYWJsZURvbWFpbigpKSA9PSB0aGlzKQogICAgICAgICBtX3NlcnZlci0+cmVtb3Zl
Q29udGV4dENvbm5lY3Rpb24oKnRoaXMpOwogfQogCiBJUEM6OkNvbm5lY3Rpb24qIFdlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAog
ewotICAgIHJldHVybiBtX2lwY0Nvbm5lY3Rpb24ucHRyKCk7CisgICAgcmV0dXJuICZtX2Nvbm5l
Y3Rpb24uY29ubmVjdGlvbigpOwogfQogCiB1aW50NjRfdCBXZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKQEAgLTY4LDEzICs3
MSw2IEBAIHVpbnQ2NF90IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWVzc2FnZVNl
bmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAogICAgIHJldHVybiAwOwogfQogCi12b2lkIFdlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y29ubmVjdGlvbkNsb3NlZCgpCi17Ci0gICAgYXV0
byBmZXRjaGVzID0gV1RGTW92ZShtX29uZ29pbmdGZXRjaGVzKTsKLSAgICBmb3IgKGF1dG8mIGZl
dGNoIDogZmV0Y2hlcy52YWx1ZXMoKSkKLSAgICAgICAgZmV0Y2gtPmZhaWwoUmVzb3VyY2VFcnJv
ciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHsgfSwgIlNlcnZpY2UgV29ya2VyIGNv
bnRleHQgY2xvc2VkIl9zIH0pOwotfQotCiB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2VydmljZVdvcmtl
ckNsaWVudElkZW50aWZpZXImIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgY29uc3QgTWVzc2FnZVdp
dGhNZXNzYWdlUG9ydHMmIG1lc3NhZ2UsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQogewogICAgIGlmICghbV9zZXJ2
ZXIpCkBAIC0xMzYsOSArMTMyLDcgQEAgdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OmRpZEZpbmlzaFNraXBXYWl0aW5nKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAKIHZvaWQgV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgp
CiB7Ci0gICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIlNlcnZpY2Ugd29ya2VyIHByb2Nl
c3MgaXMgbm8gbG9uZ2VyIG5lZWRlZCwgdGVybWluYXRpbmcgaXQiKTsKLSAgICB0ZXJtaW5hdGUo
KTsKLSAgICBjb25uZWN0aW9uQ2xvc2VkKCk7CisgICAgbV9jb25uZWN0aW9uLnNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZCgpOwogfQogCiB2b2lkIFdlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6c2V0VGhyb3R0bGVTdGF0ZShib29sIGlzVGhyb3R0bGVhYmxlKQpA
QCAtMTQ3LDE3ICsxNDEsMTIgQEAgdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
OnNldFRocm90dGxlU3RhdGUoYm9vbCBpc1Rocm90dGxlYWJsZSkKICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U2V0VGhyb3R0bGVTdGF0ZSB7IGlzVGhy
b3R0bGVhYmxlIH0pOwogfQogCi12b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
dGVybWluYXRlKCkKLXsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6VGVybWluYXRlUHJvY2VzcygpKTsKLX0KLQogdm9pZCBXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246OnN0YXJ0RmV0Y2goUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJT
V1NlcnZlckNvbm5lY3Rpb24mIGNvbnRlbnRDb25uZWN0aW9uLCBGZXRjaElkZW50aWZpZXIgY29u
dGVudEZldGNoSWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgRmV0Y2hP
cHRpb25zJiBvcHRpb25zLCBjb25zdCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25z
dCBTdHJpbmcmIHJlZmVycmVyKQogewogICAgIGF1dG8gc2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIgPSBjb250ZW50Q29ubmVjdGlvbi5pZGVudGlmaWVyKCk7CiAgICAgYXV0byBmZXRjaElkZW50
aWZpZXIgPSBGZXRjaElkZW50aWZpZXI6OmdlbmVyYXRlKCk7CiAKLSAgICBhdXRvIHJlc3VsdCA9
IG1fb25nb2luZ0ZldGNoZXMuYWRkKGZldGNoSWRlbnRpZmllciwgbWFrZVVuaXF1ZTxTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrPihzZXNzaW9uSUQsIGNvbnRlbnRDb25uZWN0aW9uLCAqdGhpcywgY29u
dGVudEZldGNoSWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIG1fbmV0d29ya1By
b2Nlc3MtPnNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXQoKSkpOworICAgIGF1dG8gcmVzdWx0ID0g
bV9vbmdvaW5nRmV0Y2hlcy5hZGQoZmV0Y2hJZGVudGlmaWVyLCBtYWtlVW5pcXVlPFNlcnZpY2VX
b3JrZXJGZXRjaFRhc2s+KHNlc3Npb25JRCwgY29udGVudENvbm5lY3Rpb24sICp0aGlzLCBjb250
ZW50RmV0Y2hJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgbV9jb25uZWN0aW9u
Lm5ldHdvcmtQcm9jZXNzKCkuc2VydmljZVdvcmtlckZldGNoVGltZW91dCgpKSk7CiAKICAgICBB
U1NFUlQoIW1fb25nb2luZ0ZldGNoSWRlbnRpZmllcnMuY29udGFpbnMoeyBzZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciwgY29udGVudEZldGNoSWRlbnRpZmllciB9KSk7CiAgICAgbV9vbmdvaW5n
RmV0Y2hJZGVudGlmaWVycy5hZGQoeyBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29udGVu
dEZldGNoSWRlbnRpZmllciB9LCBmZXRjaElkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4IGUzMGYzNDFlMTdiZTE4NjA4
Y2VlYzlhMjAzMmJkYTAyOWE0Y2E1ZjYuLmRkOTUzMWRkZTNmZGExZWJiMjRlNjk3MzEyODE5MDZj
YjAzMDQ1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmgKQEAgLTQ5LDIxICs0OSwxNyBAQCBjbGFzcyBTZXNzaW9uSUQ7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi1jbGFzcyBOZXR3b3JrUHJvY2VzczsKK2NsYXNzIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOwogY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOwogCiBjbGFzcyBX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gOiBwdWJsaWMgV2ViQ29yZTo6U1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBD
OjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIFdlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbihOZXR3b3JrUHJvY2VzcyYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFdl
YkNvcmU6OlNXU2VydmVyJiwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJik7CisgICAgV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgV2ViQ29yZTo6U1dTZXJ2ZXImKTsKICAgICB+V2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCk7CiAKLSAgICBJUEM6OkNvbm5lY3Rpb24qIGlw
Y0Nvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lwY0Nvbm5lY3Rpb24ucHRyKCk7IH0KLQog
ICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKIAotICAgIHZvaWQgdGVybWlu
YXRlKCk7Ci0KICAgICB2b2lkIHN0YXJ0RmV0Y2goUEFMOjpTZXNzaW9uSUQsIFdlYlNXU2VydmVy
Q29ubmVjdGlvbiYsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdl
YkNvcmU6OkZldGNoT3B0aW9ucyYsIGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmLCBjb25z
dCBTdHJpbmcmKTsKICAgICB2b2lkIGNhbmNlbEZldGNoKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIpOwogICAgIHZvaWQgY29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNw
b25zZShXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRj
aElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKQEAgLTk4LDgg
Kzk0LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29ubmVjdGlvbkNsb3NlZCgpOwogCi0gICAg
UmVmPElQQzo6Q29ubmVjdGlvbj4gbV9pcGNDb25uZWN0aW9uOwotICAgIFJlZjxOZXR3b3JrUHJv
Y2Vzcz4gbV9uZXR3b3JrUHJvY2VzczsKKyAgICBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyYgbV9jb25uZWN0aW9uOwogICAgIFdlYWtQdHI8V2ViQ29yZTo6U1dTZXJ2ZXI+IG1fc2VydmVy
OwogCiAgICAgSGFzaE1hcDxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpJZGVudGlmaWVyLCBXZWJD
b3JlOjpGZXRjaElkZW50aWZpZXI+IG1fb25nb2luZ0ZldGNoSWRlbnRpZmllcnM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAppbmRleCA1ZTNjZWRlMzFiYTFm
ZjgwYmJmNDlhMjNjYWFjY2M5MzYxZWMzOGMxLi5mYWY4YTUyOGVhMjMwOWFiZmFlMTc3YmRlZWFi
MjdjNWQ1ZjA3MzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4
dC5jcHAKQEAgLTY2NywzICs2NjcsOCBAQCB2b2lkIFdLQ29udGV4dENsZWFyTGVnYWN5UHJpdmF0
ZUJyb3dzaW5nTG9jYWxTdG9yYWdlKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCB2bwogICAgICAg
ICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CiB9CisKK3ZvaWQgV0tDb250ZXh0U2V0
VXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2VzcyhXS0NvbnRleHRSZWYgY29udGV4dFJlZiwg
Ym9vbCB1c2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKQoreworICAgIFdlYktpdDo6dG9J
bXBsKGNvbnRleHRSZWYpLT5zZXRVc2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKHVzZVNl
cGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oCmluZGV4IDkyNDk1Y2FkZmQwMzEyMmNmYzIz
ZDQ3NDUzZTA3OGIxZWI5MjQ3Y2UuLjcyM2I1ZTQ3ZTZlNmFiYzY2NDJkZWJlODRhY2NkZTFmYTU2
OGM3OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4
dFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQ
cml2YXRlLmgKQEAgLTEyNCw2ICsxMjQsOCBAQCBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTeW5j
TG9jYWxTdG9yYWdlKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCB2b2lkKiBjb250ZXh0LAogdHlw
ZWRlZiB2b2lkICgqV0tDb250ZXh0Q2xlYXJMZWdhY3lQcml2YXRlQnJvd3NpbmdMb2NhbFN0b3Jh
Z2VDYWxsYmFjaykodm9pZCogZnVuY3Rpb25Db250ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdLQ29u
dGV4dENsZWFyTGVnYWN5UHJpdmF0ZUJyb3dzaW5nTG9jYWxTdG9yYWdlKFdLQ29udGV4dFJlZiBj
b250ZXh0UmVmLCB2b2lkKiBjb250ZXh0LCBXS0NvbnRleHRDbGVhckxlZ2FjeVByaXZhdGVCcm93
c2luZ0xvY2FsU3RvcmFnZUNhbGxiYWNrIGNhbGxiYWNrKTsKIAorV0tfRVhQT1JUIHZvaWQgV0tD
b250ZXh0U2V0VXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2VzcyhXS0NvbnRleHRSZWYgY29u
dGV4dCwgYm9vbCBmb3JjZVNlcnZpY2VXb3JrZXJQcm9jZXNzKTsKKwogI2lmZGVmIF9fY3BsdXNw
bHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1Byb2Nlc3NQb29sLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLUHJvY2Vzc1Bvb2wubW0KaW5kZXggNjA3ZjIwZjEwZDg0N2E4YWJhZTg1NTNkZDQ2M2Q5ZWJj
MjVjNjA1ZS4uMGI4MTBiNWZhZTBlMWFjYTUxMDNiODU0MTkxYjA0MmE5MTM5OWNlYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0K
QEAgLTQ0OCw2ICs0NDgsMTEgQEAgc3RhdGljIE5TRGljdGlvbmFyeSAqcG9saWNpZXNIYXNoTWFw
VG9EaWN0aW9uYXJ5KGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFMKICAgICBfcHJvY2Vz
c1Bvb2wtPnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoKTsKIH0KIAorLSAodm9pZClf
c2V0VXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2VzczooQk9PTCl1c2VTZXBhcmF0ZVNlcnZp
Y2VXb3JrZXJQcm9jZXNzCit7CisgICAgX3Byb2Nlc3NQb29sLT5zZXRVc2VTZXBhcmF0ZVNlcnZp
Y2VXb3JrZXJQcm9jZXNzKHVzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MpOworfQorCiAt
IChwaWRfdClfbmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyCiB7CiAgICAgcmV0dXJuIF9wcm9jZXNz
UG9vbC0+bmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyKCk7CkBAIC01MDQsMTIgKzUwOSwxMiBAQCBz
dGF0aWMgTlNEaWN0aW9uYXJ5ICpwb2xpY2llc0hhc2hNYXBUb0RpY3Rpb25hcnkoY29uc3QgSGFz
aE1hcDxTdHJpbmcsIEhhc2hNYXA8UwogCiAtIChzaXplX3QpX3dlYlBhZ2VDb250ZW50UHJvY2Vz
c0NvdW50CiB7Ci0gICAgYXV0byBhbGxXZWJQcm9jZXNzZXMgPSBfcHJvY2Vzc1Bvb2wtPnByb2Nl
c3NlcygpOworICAgIGF1dG8gcmVzdWx0ID0gX3Byb2Nlc3NQb29sLT5wcm9jZXNzZXMoKS5zaXpl
KCk7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHJldHVybiBhbGxXZWJQcm9jZXNz
ZXMuc2l6ZSgpIC0gX3Byb2Nlc3NQb29sLT5zZXJ2aWNlV29ya2VyUHJveGllc0NvdW50KCk7Ci0j
ZWxzZQotICAgIHJldHVybiBhbGxXZWJQcm9jZXNzZXMuc2l6ZSgpOworICAgIGlmIChfcHJvY2Vz
c1Bvb2wtPnVzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MoKSkKKyAgICAgICAgcmVzdWx0
IC09IF9wcm9jZXNzUG9vbC0+c2VydmljZVdvcmtlclByb3hpZXNDb3VudCgpOwogI2VuZGlmCisg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogLSAodm9pZClfcHJlY29ubmVjdFRvU2VydmVyOihOU1VS
TCAqKXNlcnZlclVSTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAppbmRleCBlZjhiYjU2NzgyMzA5NWM3NTYzOTc1
NDQ0Y2MxNDAxOGQ2ZTUyNTVlLi4zYTgxZDU5OTk5ZGNjOTk5ZjEzOTNjYzMyOTZiOWJlYTYwNTJi
YmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9j
ZXNzUG9vbFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tQcm9jZXNzUG9vbFByaXZhdGUuaApAQCAtMTExLDYgKzExMSw3IEBACiAtIChOU1VJbnRlZ2Vy
KV9tYXhpbXVtU3VzcGVuZGVkUGFnZUNvdW50IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQu
NCksIGlvcygxMi4yKSk7CiAtIChOU1VJbnRlZ2VyKV9wcm9jZXNzQ2FjaGVDYXBhY2l0eSBXS19B
UElfQVZBSUxBQkxFKG1hY29zKDEwLjE0LjQpLCBpb3MoMTIuMikpOwogLSAoTlNVSW50ZWdlcilf
cHJvY2Vzc0NhY2hlU2l6ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOworLSAodm9pZClfc2V0VXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2Vz
czooQk9PTClmb3JjZVNlcnZpY2VXb3JrZXJQcm9jZXNzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
V0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIC8vIFRlc3Qgb25seS4gUmV0dXJucyB3
ZWIgcHJvY2Vzc2VzIHJ1bm5pbmcgd2ViIHBhZ2VzIChkb2VzIG5vdCBpbmNsdWRlIHdlYiBwcm9j
ZXNzZXMgcnVubmluZyBzZXJ2aWNlIHdvcmtlcnMpCiAtIChzaXplX3QpX3dlYlBhZ2VDb250ZW50
UHJvY2Vzc0NvdW50IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCksIGlvcygxMS4zKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcAppbmRleCA2ZTMwYTA3ZWVmNDUyYzg4MjAyZDUyOGI5N2NlOTQ0NzMxOWI5
YjQyLi5jYTFmNWFiMjYxOGFkZDQ2MzU1MDQ0YWUwZmZmZmRiNmEzNzYzZTRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5jcHAKQEAgLTEyNDEsNiArMTI0MSwxMiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmVz
dGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhSZWdpcwogewog
ICAgIG1fcHJvY2Vzc1Bvb2wuZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzKCp0aGlzLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgc2Vzc2lvbklEKTsK
IH0KKwordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp3b3JrZXJDb250ZXh0Q29ubmVjdGlvbk5v
TG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7Cisg
ICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlm
aWVyKGlkZW50aWZpZXIpKQorICAgICAgICBwcm9jZXNzLT5kaXNhYmxlU2VydmljZVdvcmtlcnMo
KTsKK30KICNlbmRpZgogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdl
U3BhY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmln
aW4mIG9yaWdpbiwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwg
dWludDY0X3Qgc3BhY2VSZXF1aXJlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDx1
aW50NjRfdD4gcXVvdGEpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCBlNjVh
YWY0Yzc2OWYxNjA0ZjBhNDM0YTE4MDM0Y2JlNzNhYTJhZTkxLi5mYmYyY2U1OWY4ZDA1YWQ3ZGI4
OTkzZTJmYmNkMTRiNDQ0ZDUxNzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMjQ2LDYgKzI0Niw3IEBAIHBy
aXZhdGU6CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBlc3RhYmxpc2hX
b3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mJiwgUEFMOjpTZXNzaW9uSUQpOworICAgIHZvaWQgd29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CiAjZW5kaWYK
IAogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2Vi
Q29yZTo6Q2xpZW50T3JpZ2luJiwgdWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTaXpl
LCB1aW50NjRfdCBzcGFjZVJlcXVpcmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFs
PHVpbnQ2NF90PiBxdW90YSk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4
IDNhYjBkYjA1YjVmYjJhMzk5Nzc4NzUzZjNiZjUzYWQ5ZTZlZmZkYWYuLmY1ZmI1NjU5Y2YzNDNh
MDliODU1ZTJkNmIwMGQ2ZWVkMTE0ZjYxOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW4KQEAgLTYyLDYgKzYyLDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdh
Y3lSZWNlaXZlciB7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgRXN0YWJsaXNo
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCisg
ICAgV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNz
SWRlbnRpZmllciBpZGVudGlmaWVyKQogI2VuZGlmCiAKICAgICBSZXF1ZXN0U3RvcmFnZVNwYWNl
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiBv
cmlnaW4sIHVpbnQ2NF90IHF1b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0X3Qgc3Bh
Y2VSZXF1aXJlZCkgLT4gKE9wdGlvbmFsPHVpbnQ2NF90PiBuZXdRdW90YSkgQXN5bmMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBiNzJkM2Q0YTA3NDQ3
NjYyZDI2YTNjZWEzN2MzYzMyY2U3MDkzODViLi5lMzYwMDgxNTdjZDRjNjIxNjVmN2M0NWE4NjBm
OTMzM2FiMjNkZGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCkBAIC02NzEsNiArNjcxLDExIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6Om5ldHdvcmtQcm9j
ZXNzQ3Jhc2hlZChOZXR3b3JrUHJvY2Vzc1Byb3h5JiBuZXR3b3JrUHJvY2Vzc1ByCiAgICAgYXV0
byYgbmV3TmV0d29ya1Byb2Nlc3MgPSBlbnN1cmVOZXR3b3JrUHJvY2VzcygpOwogICAgIGZvciAo
YXV0byYgcmVwbHkgOiBwZW5kaW5nUmVwbGllcykKICAgICAgICAgbmV3TmV0d29ya1Byb2Nlc3Mu
Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCpyZXBseS5maXJzdCwgV1RGTW92ZShyZXBseS5z
ZWNvbmQpKTsKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICB3aGlsZSAoIW1fc2Vy
dmljZVdvcmtlclByb2Nlc3Nlcy5pc0VtcHR5KCkpCisgICAgICAgIG1fc2VydmljZVdvcmtlclBy
b2Nlc3Nlcy5iZWdpbigpLT52YWx1ZS0+ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7CisjZW5kaWYK
IH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFdl
YlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5LCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5
OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQpAQCAt
Njk3LDI0ICs3MDIsNTcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm8KICAgICB9CiAKICAgICBS
ZWdpc3RyYWJsZURvbWFpbldpdGhTZXNzaW9uSUQgcmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lv
bklEIHsgUmVnaXN0cmFibGVEb21haW4geyByZWdpc3RyYWJsZURvbWFpbiB9LCBzZXNzaW9uSUQg
fTsKLSAgICBpZiAobV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNvbnRhaW5zKHJlZ2lzdHJhYmxl
RG9tYWluV2l0aFNlc3Npb25JRCkpCisgICAgaWYgKG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5j
b250YWlucyhyZWdpc3RyYWJsZURvbWFpbldpdGhTZXNzaW9uSUQpKSB7CisgICAgICAgIFJFTEVB
U0VfTE9HX0lGKHNlc3Npb25JRC5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgU2VydmljZVdv
cmtlciwgIldlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MgcHJvY2VzcyBhbHJlYWR5IGNyZWF0ZWQiKTsKICAgICAgICAgcmV0dXJu
OworICAgIH0KIAogICAgIGlmIChtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuaXNFbXB0eSgpKQog
ICAgICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlJlZ2lzdGVy
U2VydmljZVdvcmtlckNsaWVudHMgeyB9KTsKIAotICAgIGF1dG8gc2VydmljZVdvcmtlclByb2Nl
c3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yU2VydmljZVdvcmtlcnMoKnRoaXMs
IFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCAqd2Vic2l0ZURhdGFTdG9yZSk7Ci0gICAgbV9z
ZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmFkZChXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluV2l0aFNl
c3Npb25JRCksIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkucHRyKCkpOworICAgIFdlYlByb2Nl
c3NQcm94eSogc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSB7IG51bGxwdHIgfTsKKyAgICBpZiAo
IW1fdXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2VzcykgeworICAgICAgICBmb3IgKGF1dG8m
IHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykgeworICAgICAgICAgICAgaWYgKHByb2Nlc3MgPT0gbV9w
cmV3YXJtZWRQcm9jZXNzIHx8IHByb2Nlc3MgPT0gbV9kdW1teVByb2Nlc3NQcm94eSkKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmICgmcHJvY2Vzcy0+d2Vic2l0ZURh
dGFTdG9yZSgpICE9IHdlYnNpdGVEYXRhU3RvcmUpCisgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICBpZiAoIXByb2Nlc3MtPmlzTWF0Y2hpbmdSZWdpc3RyYWJsZURvbWFpbihy
ZWdpc3RyYWJsZURvbWFpbikpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAg
ICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBwcm9jZXNzLmdldCgpOworICAgICAgICAg
ICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlU2VydmljZVdvcmtlcnMoKTsKKwor
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUYoc2Vzc2lvbklELmlzQWx3YXlzT25Mb2dnaW5nQWxs
b3dlZCgpLCBTZXJ2aWNlV29ya2VyLCAiV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFdvcmtlckNv
bnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyByZXVzaW5nIGFuIGV4aXN0aW5nIHdlYiBw
cm9jZXNzICVwLCBwcm9jZXNzIGlkZW50aWZpZXIgJWQiLCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5LCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5wcm9jZXNzSWRlbnRpZmllcigpKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFzZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5KSB7CisgICAgICAgIGF1dG8gbmV3UHJvY2Vzc1Byb3h5ID0gV2ViUHJv
Y2Vzc1Byb3h5OjpjcmVhdGVGb3JTZXJ2aWNlV29ya2VycygqdGhpcywgV1RGTW92ZShyZWdpc3Ry
YWJsZURvbWFpbiksICp3ZWJzaXRlRGF0YVN0b3JlKTsKKyAgICAgICAgc2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eSA9IG5ld1Byb2Nlc3NQcm94eS5wdHIoKTsKIAotICAgIHVwZGF0ZVByb2Nlc3NB
c3NlcnRpb25zKCk7Ci0gICAgaW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3Moc2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eSwgd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGKHNl
c3Npb25JRC5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgU2VydmljZVdvcmtlciwgIldlYlBy
b2Nlc3NQb29sOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MgY3JlYXRpbmcgYSBuZXcgc2VydmljZSB3b3JrZXIgcHJvY2VzcyAlcCwgcHJvY2VzcyBpZGVu
dGlmaWVyICVkIiwgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwgc2VydmljZVdvcmtlclByb2Nl
c3NQcm94eS0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAKLSAgICBhdXRvKiBzZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5UHRyID0gc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5wdHIoKTsKLSAgICBt
X3Byb2Nlc3Nlcy5hcHBlbmQoV1RGTW92ZShzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KSk7Cisg
ICAgICAgIHVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCk7CisgICAgICAgIGluaXRpYWxpemVOZXdX
ZWJQcm9jZXNzKG5ld1Byb2Nlc3NQcm94eSwgd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgICAgIG1f
cHJvY2Vzc2VzLmFwcGVuZChXVEZNb3ZlKG5ld1Byb2Nlc3NQcm94eSkpOworICAgIH0KIAotICAg
IHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHlQdHItPmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250
ZXh0KG1fc2VydmljZVdvcmtlclByZWZlcmVuY2VzID8gbV9zZXJ2aWNlV29ya2VyUHJlZmVyZW5j
ZXMudmFsdWUoKSA6IG1fZGVmYXVsdFBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zdG9yZSgpKTsK
KyAgICBBU1NFUlQoIW1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5jb250YWlucyhyZWdpc3RyYWJs
ZURvbWFpbldpdGhTZXNzaW9uSUQpKTsKKyAgICBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYWRk
KFdURk1vdmUocmVnaXN0cmFibGVEb21haW5XaXRoU2Vzc2lvbklEKSwgc2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eSk7CisKKyAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lc3RhYmxpc2hT
ZXJ2aWNlV29ya2VyQ29udGV4dChtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcyA/IG1fc2Vydmlj
ZVdvcmtlclByZWZlcmVuY2VzLnZhbHVlKCkgOiBtX2RlZmF1bHRQYWdlR3JvdXAtPnByZWZlcmVu
Y2VzKCkuc3RvcmUoKSk7CiAgICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJVc2VyQWdlbnQuaXNOdWxs
KCkpCi0gICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHlQdHItPnNldFNlcnZpY2VXb3Jr
ZXJVc2VyQWdlbnQobV9zZXJ2aWNlV29ya2VyVXNlckFnZW50KTsKKyAgICAgICAgc2VydmljZVdv
cmtlclByb2Nlc3NQcm94eS0+c2V0U2VydmljZVdvcmtlclVzZXJBZ2VudChtX3NlcnZpY2VXb3Jr
ZXJVc2VyQWdlbnQpOworfQorCit2b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1vdmVGcm9tU2Vydmlj
ZVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCit7CisgICAgUmVnaXN0
cmFibGVEb21haW5XaXRoU2Vzc2lvbklEIGtleSB7IHByb2Nlc3MucmVnaXN0cmFibGVEb21haW4o
KSwgcHJvY2Vzcy53ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCkgfTsKKyAgICBBU1NFUlQo
bV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmNvbnRhaW5zKGtleSkpOworICAgIEFTU0VSVChtX3Nl
cnZpY2VXb3JrZXJQcm9jZXNzZXMuZ2V0KGtleSkgPT0gJnByb2Nlc3MpOworICAgIG1fc2Vydmlj
ZVdvcmtlclByb2Nlc3Nlcy5yZW1vdmUoa2V5KTsKIH0KICNlbmRpZgogCkBAIC0xMDk2LDggKzEx
MzQsOSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2VzcyhXZWJQcm9jZXNz
UHJveHkqIHByb2Nlc3MpCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYgKHBy
b2Nlc3MtPmlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkpIHsKLSAgICAgICAgYXV0byogcmVtb3Zl
ZFByb2Nlc3MgPSBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMudGFrZShSZWdpc3RyYWJsZURvbWFp
bldpdGhTZXNzaW9uSUQgeyBwcm9jZXNzLT5yZWdpc3RyYWJsZURvbWFpbigpLCBwcm9jZXNzLT53
ZWJzaXRlRGF0YVN0b3JlKCkuc2Vzc2lvbklEKCkgfSk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQo
cmVtb3ZlZFByb2Nlc3MsIHJlbW92ZWRQcm9jZXNzID09IHByb2Nlc3MpOworICAgICAgICBhdXRv
IGl0ZXJhdG9yID0gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmZpbmQoUmVnaXN0cmFibGVEb21h
aW5XaXRoU2Vzc2lvbklEIHsgcHJvY2Vzcy0+cmVnaXN0cmFibGVEb21haW4oKSwgcHJvY2Vzcy0+
d2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpIH0pOworICAgICAgICBpZiAoaXRlcmF0b3Ig
IT0gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmVuZCgpICYmIGl0ZXJhdG9yLT52YWx1ZSA9PSBw
cm9jZXNzKQorICAgICAgICAgICAgbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnJlbW92ZShpdGVy
YXRvcik7CiAgICAgICAgIHVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCk7CiAgICAgfQogI2VuZGlm
CkBAIC0xMTEyLDE1ICsxMTUxLDYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlzY29ubmVjdFBy
b2Nlc3MoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQogI2VuZGlmCiAKICAgICByZW1vdmVQcm9j
ZXNzRnJvbU9yaWdpbkNhY2hlU2V0KCpwcm9jZXNzKTsKLQotI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGRvIGJldHRlciB0aGFuIHRoaXMuIEZvciBu
b3csIHdlIGp1c3QgZGVzdHJveSB0aGUgU2VydmljZVdvcmtlciBwcm9jZXNzCi0gICAgLy8gd2hl
bmV2ZXIgdGhlcmUgaXMgbm8gcmVndWxhciBXZWJDb250ZW50IHByb2Nlc3MgcmVtYWluaW5nLgot
ICAgIGlmIChtX3Byb2Nlc3Nlcy5zaXplKCkgPT0gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnNp
emUoKSkgewotICAgICAgICBpZiAoIW1fc2VydmljZVdvcmtlclByb2Nlc3Nlc1Rlcm1pbmF0aW9u
VGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgICAgIG1fc2VydmljZVdvcmtlclByb2Nlc3Nlc1Rl
cm1pbmF0aW9uVGltZXIuc3RhcnRPbmVTaG90KHNlcnZpY2VXb3JrZXJUZXJtaW5hdGlvbkRlbGF5
KTsKLSAgICB9Ci0jZW5kaWYKIH0KIAogV2ViUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6
cHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWluKFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRh
U3RvcmUsIFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lz
dHJhYmxlRG9tYWluKQpAQCAtMTIxMCw4ICsxMjQwLDYgQEAgUmVmPFdlYlBhZ2VQcm94eT4gV2Vi
UHJvY2Vzc1Bvb2w6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgUmVmPEFQ
SToKICAgICBhdXRvIHBhZ2UgPSBwcm9jZXNzLT5jcmVhdGVXZWJQYWdlKHBhZ2VDbGllbnQsIFdU
Rk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
LSAgICBBU1NFUlQoIXByb2Nlc3MtPmlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkpOwotCiAgICAg
aWYgKCFtX3NlcnZpY2VXb3JrZXJQcmVmZXJlbmNlcykgewogICAgICAgICBtX3NlcnZpY2VXb3Jr
ZXJQcmVmZXJlbmNlcyA9IHBhZ2UtPnByZWZlcmVuY2VzU3RvcmUoKTsKICAgICAgICAgZm9yIChh
dXRvKiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA6IG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy52YWx1
ZXMoKSkKQEAgLTE2OTEsNiArMTcxOSwxMSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpjbGVhckNh
Y2hlZENyZWRlbnRpYWxzKCkKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6dGVybWluYXRlTmV0d29y
a1Byb2Nlc3MoKQogeworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICB3aGlsZSAoIW1f
c2VydmljZVdvcmtlclByb2Nlc3Nlcy5pc0VtcHR5KCkpCisgICAgICAgIG1fc2VydmljZVdvcmtl
clByb2Nlc3Nlcy5iZWdpbigpLT52YWx1ZS0+ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7CisjZW5k
aWYKKwogICAgIGlmICghbV9uZXR3b3JrUHJvY2VzcykKICAgICAgICAgcmV0dXJuOwogICAgIApA
QCAtMjQyMSw0ICsyNDU0LDE5IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmNsZWFyV2ViUHJvY2Vz
c0lzUGxheWluZ0F1ZGlibGVNZWRpYShXZWJDb3JlOjpQcm9jZXNzSWRlbnRpCiAgICAgfQogfQog
Cit2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRVc2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNz
KGJvb2wgdXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2VzcykKK3sKKyAgICBpZiAobV91c2VT
ZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzID09IHVzZVNlcGFyYXRlU2VydmljZVdvcmtlclBy
b2Nlc3MpCisgICAgICAgIHJldHVybjsKKworICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIs
ICJXZWJQcm9jZXNzUG9vbDo6c2V0VXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2VzcyAlZCIs
IHVzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MpOworCisgICAgbV91c2VTZXBhcmF0ZVNl
cnZpY2VXb3JrZXJQcm9jZXNzID0gdXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2VzczsKKyNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgd2hpbGUgKCFtX3NlcnZpY2VXb3JrZXJQcm9j
ZXNzZXMuaXNFbXB0eSgpKQorICAgICAgICBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMuYmVnaW4o
KS0+dmFsdWUtPmRpc2FibGVTZXJ2aWNlV29ya2VycygpOworI2VuZGlmCisgICAgdGVybWluYXRl
TmV0d29ya1Byb2Nlc3MoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCA2MGVmNDkzMWEyNDhlNWY3NzVhZTQz
YWFiNGJiOWQ0OTBkYjY1ZTJiLi45ZTFhZjcyMTI1MDM2NmViMWY0NGY3MzE2MmVhYTNjZjExYzc5
MTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTM4Nyw2
ICszODcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJQYWdlSUQoV2ViUGFn
ZVByb3h5SWRlbnRpZmllcikgY29uc3Q7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
IHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5l
dHdvcmtQcm9jZXNzUHJveHkmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQQUw6OlNl
c3Npb25JRCk7CisgICAgdm9pZCByZW1vdmVGcm9tU2VydmljZVdvcmtlclByb2Nlc3NlcyhXZWJQ
cm9jZXNzUHJveHkmKTsKICAgICBzaXplX3Qgc2VydmljZVdvcmtlclByb3hpZXNDb3VudCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy5zaXplKCk7IH0KICAgICB2b2lk
IHNldEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlcihib29sIGFsbG93cykg
eyBtX2FsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlciA9IGFsbG93czsgfQog
ICAgIGJvb2wgYWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyKCkgY29uc3Qg
eyByZXR1cm4gbV9hbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXI7IH0KQEAg
LTUxOSw2ICs1MjAsOSBAQCBwdWJsaWM6CiAgICAgCiAgICAgUGx1Z0luQXV0b1N0YXJ0UHJvdmlk
ZXImIHBsdWdJbkF1dG9TdGFydFByb3ZpZGVyKCkgeyByZXR1cm4gbV9wbHVnSW5BdXRvU3RhcnRQ
cm92aWRlcjsgfQogCisgICAgdm9pZCBzZXRVc2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNz
KGJvb2wpOworICAgIGJvb2wgdXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2VzcygpIGNvbnN0
IHsgcmV0dXJuIG1fdXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2VzczsgfQorCiBwcml2YXRl
OgogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiAKQEAgLTc5Myw2ICs3OTcsNyBAQCBw
cml2YXRlOgogI2Vsc2UKICAgICBib29sIG1faXNEZWxheWVkV2ViUHJvY2Vzc0xhdW5jaERpc2Fi
bGVkIHsgZmFsc2UgfTsKICNlbmRpZgorICAgIGJvb2wgbV91c2VTZXBhcmF0ZVNlcnZpY2VXb3Jr
ZXJQcm9jZXNzIHsgZmFsc2UgfTsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA5OTYwYWNmMDhkM2E5
NzZjOTQ4NDU3N2VkNjY1YmIxYjg2OTE2NjMwLi42OTg4NjU0OWJjNjhiNzllY2U1ZDk0YzVkYjZk
YTZlNDMxYzg4ZTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNz
UHJveHk6OmNyZWF0ZUZvclNlcnZpY2VXb3JrZXJzKFdlYlByb2Nlc3NQb29sJiBwcgogewogICAg
IGF1dG8gcHJveHkgPSBhZG9wdFJlZigqbmV3IFdlYlByb2Nlc3NQcm94eShwcm9jZXNzUG9vbCwg
JndlYnNpdGVEYXRhU3RvcmUsIElzUHJld2FybWVkOjpObykpOwogICAgIHByb3h5LT5tX3JlZ2lz
dHJhYmxlRG9tYWluID0gV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbik7Ci0gICAgcHJveHktPm1f
c2VydmljZVdvcmtlckluZm9ybWF0aW9uID0gU2VydmljZVdvcmtlckluZm9ybWF0aW9uIHsgV2Vi
UGFnZVByb3h5SWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwgUGFnZUlkZW50aWZpZXI6OmdlbmVyYXRl
KCkgfTsKKyAgICBwcm94eS0+ZW5hYmxlU2VydmljZVdvcmtlcnMoKTsKICAgICBwcm94eS0+Y29u
bmVjdCgpOwogICAgIHJldHVybiBwcm94eTsKIH0KQEAgLTk2Miw2ICs5NjIsOSBAQCBib29sIFdl
YlByb2Nlc3NQcm94eTo6Y2FuVGVybWluYXRlQXV4aWxpYXJ5UHJvY2VzcygpCiAgICAgaWYgKCFt
X3BhZ2VNYXAuaXNFbXB0eSgpIHx8IG1fc3VzcGVuZGVkUGFnZUNvdW50IHx8ICFtX3Byb3Zpc2lv
bmFsUGFnZXMuaXNFbXB0eSgpIHx8IG1faXNJblByb2Nlc3NDYWNoZSB8fCBtX3NodXRkb3duUHJl
dmVudGluZ1Njb3BlQ291bnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGlmIChpc1J1
bm5pbmdTZXJ2aWNlV29ya2VycygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBpZiAo
IW1fcHJvY2Vzc1Bvb2wtPnNob3VsZFRlcm1pbmF0ZSh0aGlzKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCkBAIC0xNDY2LDYgKzE0NjksOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JNYWluRnJhbWUoY29uc3QgVVJMJiB1cmwpCiAKICAgICBhdXRv
IHJlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfTsK
ICAgICBpZiAobV9yZWdpc3RyYWJsZURvbWFpbiAmJiAqbV9yZWdpc3RyYWJsZURvbWFpbiAhPSBy
ZWdpc3RyYWJsZURvbWFpbikgeworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICAgICAg
ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKCk7CisjZW5kaWYKICAgICAgICAgLy8gTnVsbCBvdXQgcmVn
aXN0cmFibGUgZG9tYWluIHNpbmNlIHRoaXMgcHJvY2VzcyBoYXMgbm93IGJlZW4gdXNlZCBmb3Ig
c2V2ZXJhbCBkb21haW5zLgogICAgICAgICBtX3JlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4geyB9OwogICAgICAgICByZXR1cm47CkBAIC0xNTYyLDYgKzE1Njgs
MjYgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVNlcnZpY2VXb3JrZXJQcmVmZXJlbmNl
c1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3QKICAgICBBU1NFUlQobV9zZXJ2aWNlV29ya2Vy
SW5mb3JtYXRpb24pOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uOjpVcGRhdGVQcmVmZXJlbmNlc1N0b3JlIHsgc3RvcmUgfSwgMCk7CiB9CisKK3ZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpkaXNhYmxlU2VydmljZVdvcmtlcnMoKQoreworICAgIGlmICghbV9z
ZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIG1fc2Vydmlj
ZVdvcmtlckluZm9ybWF0aW9uID0geyB9OworICAgIHByb2Nlc3NQb29sKCkucmVtb3ZlRnJvbVNl
cnZpY2VXb3JrZXJQcm9jZXNzZXMoKnRoaXMpOworCisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkNsb3NlIHsgfSwgMCk7CisKKyAgICBtYXliZVNodXRE
b3duKCk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmFibGVTZXJ2aWNlV29ya2Vycygp
Cit7CisgICAgQVNTRVJUKG1fcmVnaXN0cmFibGVEb21haW4gJiYgIW1fcmVnaXN0cmFibGVEb21h
aW4tPmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKCFtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbik7
CisgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gPSBTZXJ2aWNlV29ya2VySW5mb3JtYXRp
b24geyBXZWJQYWdlUHJveHlJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBQYWdlSWRlbnRpZmllcjo6
Z2VuZXJhdGUoKSB9OworfQogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCA4MzIzNDlhOTlmMDAxZjc0
NGI1YzZlYzgwYzZmZGQzMWRhNzMxMTM4Li5jMDdiMWVlODNlMTZkNmY4OWRhYmRkM2Y2ZWE4MjM3
N2M3ODYxYTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApA
QCAtMTIzLDEwICsxMjMsMTQgQEAgcHVibGljOgogICAgIFdlYlByb2Nlc3NQb29sKiBwcm9jZXNz
UG9vbElmRXhpc3RzKCkgY29uc3Q7CiAgICAgV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sKCkg
Y29uc3Q7CiAKKyAgICBib29sIGlzTWF0Y2hpbmdSZWdpc3RyYWJsZURvbWFpbihjb25zdCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJh
YmxlRG9tYWluID8gKm1fcmVnaXN0cmFibGVEb21haW4gPT0gZG9tYWluIDogZmFsc2U7IH0KICAg
ICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbigpIGNvbnN0IHsg
cmV0dXJuIG1fcmVnaXN0cmFibGVEb21haW4udmFsdWVPcihXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiB7IH0pOyB9CiAgICAgdm9pZCBzZXRJc0luUHJvY2Vzc0NhY2hlKGJvb2wpOwogICAgIGJv
b2wgaXNJblByb2Nlc3NDYWNoZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNJblByb2Nlc3NDYWNoZTsg
fQogCisgICAgdm9pZCBlbmFibGVTZXJ2aWNlV29ya2VycygpOworICAgIHZvaWQgZGlzYWJsZVNl
cnZpY2VXb3JrZXJzKCk7CisKICAgICBXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3Jl
KCkgY29uc3QgeyBBU1NFUlQobV93ZWJzaXRlRGF0YVN0b3JlKTsgcmV0dXJuICptX3dlYnNpdGVE
YXRhU3RvcmU7IH0KICAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9y
ZSYpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCmluZGV4IDc1MWU1
MTA1NTE1OTk4NmJhNThiNjg2MGJkNTE5NDkyYzk2NTdjNDkuLjYyMjI4MDgzZWZlNWMxYTkzMDJm
NmUzMTdiNzNjZGE0YWQ4M2Y2NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5j
cHAKQEAgLTY4LDkgKzY4LDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2Ug
UEFMOwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXN0YXRpYyBjb25zdCBTZWNvbmRzIGFz
eW5jV29ya2VyVGVybWluYXRpb25UaW1lb3V0IHsgMTBfcyB9Owotc3RhdGljIGNvbnN0IFNlY29u
ZHMgc3luY1dvcmtlclRlcm1pbmF0aW9uVGltZW91dCB7IDEwMF9tcyB9OyAvLyBPbmx5IHVzZWQg
YnkgbGF5b3V0IHRlc3RzLgotCiBTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQ6OlNlcnZp
Y2VXb3JrZXJGcmFtZUxvYWRlckNsaWVudChXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgUGFnZUlk
ZW50aWZpZXIgcGFnZUlELCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiB1
c2VyQWdlbnQpCiAgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKICAgICAsIG1fd2ViUGFn
ZVByb3h5SUQod2ViUGFnZVByb3h5SUQpCkBAIC05OSw2ICs5Niw3IEBAIFdlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpD
b25uZWN0aW9uCiB7CiAgICAgdXBkYXRlUHJlZmVyZW5jZXNTdG9yZShzdG9yZSk7CiAgICAgbV9j
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OkVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24geyBtX3JlZ2lzdHJh
YmxlRG9tYWluIH0sIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmRpc2FibGVUZXJt
aW5hdGlvbigpOwogfQogCiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6fldlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uKCkgPSBkZWZhdWx0OwpAQCAtMjUzLDEyICsyNTEsMTIgQEAg
dm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c29mdFVwZGF0ZShXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllcgogCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uOjp0ZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikK
IHsKLSAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS50ZXJtaW5hdGVXb3JrZXIoaWRl
bnRpZmllciwgYXN5bmNXb3JrZXJUZXJtaW5hdGlvblRpbWVvdXQsIG51bGxwdHIpOworICAgIFNX
Q29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnRlcm1pbmF0ZVdvcmtlcihpZGVudGlmaWVyLCBT
V0NvbnRleHRNYW5hZ2VyOjp3b3JrZXJUZXJtaW5hdGlvblRpbWVvdXQsIG51bGxwdHIpOwogfQog
CiB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzeW5jVGVybWluYXRlV29ya2Vy
KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIE1lc3NhZ2VzOjpXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6U3luY1Rlcm1pbmF0ZVdvcmtlcjo6RGVsYXllZFJlcGx5JiYg
cmVwbHkpCiB7Ci0gICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkudGVybWluYXRlV29y
a2VyKGlkZW50aWZpZXIsIHN5bmNXb3JrZXJUZXJtaW5hdGlvblRpbWVvdXQsIFdURk1vdmUocmVw
bHkpKTsKKyAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS50ZXJtaW5hdGVXb3JrZXIo
aWRlbnRpZmllciwgU1dDb250ZXh0TWFuYWdlcjo6c3luY1dvcmtlclRlcm1pbmF0aW9uVGltZW91
dCwgV1RGTW92ZShyZXBseSkpOwogfQogCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChjb25zdCBTZXJ2aWNlV29ya2Vy
Q2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlmaWVyLCBjb25zdCBNZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0cyYgbWVzc2FnZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlSWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCkBAIC0zNDgsMTAgKzM0NiwxNCBA
QCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpkaWRGaW5pc2hTa2lwV2FpdGlu
Zyh1aW50NjRfdCBjYWxsYmFja0lEKQogICAgICAgICBjYWxsYmFjaygpOwogfQogCi12b2lkIFdl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp0ZXJtaW5hdGVQcm9jZXNzKCkKK3ZvaWQgV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmNsb3NlKCkKIHsKLSAgICBSRUxFQVNFX0xPRyhT
ZXJ2aWNlV29ya2VyLCAiU2VydmljZSB3b3JrZXIgcHJvY2VzcyBpcyBleGl0aW5nIGJlY2F1c2Ug
aXQgaXMgbm8gbG9uZ2VyIG5lZWRlZCIpOwotICAgIF9leGl0KEVYSVRfU1VDQ0VTUyk7CisgICAg
UkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIlNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgaXMgcmVx
dWVzdGVkIHRvIHN0b3AgYWxsIHNlcnZpY2Ugd29ya2VycyIpOworICAgIHNldEFzQ2xvc2VkKCk7
CisKKyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q2xvc2VTV0NvbnRleHRDb25uZWN0aW9uIHsgfSwg
MCk7CisgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc3RvcEFsbFNlcnZpY2VXb3Jr
ZXJzKCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5hYmxlVGVybWluYXRpb24oKTsK
IH0KIAogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c2V0VGhyb3R0bGVTdGF0
ZShib29sIGlzVGhyb3R0bGVhYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5k
ZXggN2Q2MjYwMTk2MTkxNGYzZmUyZDU5MjVjOWI5N2M0ZDE0MGRkM2FlMS4uMjQ3NjI1ZWQ5NWI1
MWUzZWZkZmI1ZDk2OWQ3YzBlZmQyOWVmZmFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5oCkBAIC05NSw3ICs5NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGFpbUNvbXBsZXRl
ZCh1aW50NjRfdCBjbGFpbVJlcXVlc3RJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZEZpbmlzaFNr
aXBXYWl0aW5nKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgc2V0VXNlckFnZW50KFN0
cmluZyYmIHVzZXJBZ2VudCk7Ci0gICAgTk9fUkVUVVJOIHZvaWQgdGVybWluYXRlUHJvY2Vzcygp
OworICAgIHZvaWQgY2xvc2UoKTsKICAgICB2b2lkIHNldFRocm90dGxlU3RhdGUoYm9vbCBpc1Ro
cm90dGxlYWJsZSk7CiAKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNz
YWdlcy5pbgppbmRleCBlYWQ4Y2JkM2MzMDRkNmQ3MTUzYTJiZTc0MjUwYzc0MjI0Y2Y4NzBhLi43
MDliNjg1ZjU2YzY0NmNiMjFmMmYzYzc1MjFjZTZkZDRlNjcyZWM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMzksNyArMzksNyBAQCBt
ZXNzYWdlcyAtPiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiB7CiAgICAgRGlkRmluaXNo
U2tpcFdhaXRpbmcodWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBTZXRVc2VyQWdlbnQoU3RyaW5n
IHVzZXJBZ2VudCkKICAgICBVcGRhdGVQcmVmZXJlbmNlc1N0b3JlKHN0cnVjdCBXZWJLaXQ6Oldl
YlByZWZlcmVuY2VzU3RvcmUgc3RvcmUpCi0gICAgVGVybWluYXRlUHJvY2VzcygpCisgICAgQ2xv
c2UoKQogICAgIFNldFRocm90dGxlU3RhdGUoYm9vbCBpc1Rocm90dGxlYWJsZSkKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDM0MGM5YzRjOTQ0MDM5NWY0
NWRjN2E2YzdhYzdjYzZmNjQ5NzFmZDMuLmUzNDMwYzIzMGU0NTJiNzQ3ZTQ0YzdiMzYyNTI3Mzg4
NDI3OTM1MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTEy
MjUsMTAgKzEyMjUsOCBAQCB2b2lkIFdlYlByb2Nlc3M6Om5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bkNsb3NlZChOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24qIGNvbm5lYwogI2VuZGlmCiAKICNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRv
bigpLmNvbm5lY3Rpb24oKSkgewotICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAi
U2VydmljZSB3b3JrZXIgcHJvY2VzcyBpcyBleGl0aW5nIGJlY2F1c2UgbmV0d29yayBwcm9jZXNz
IGlzIGdvbmUiKTsKLSAgICAgICAgX2V4aXQoRVhJVF9TVUNDRVNTKTsKLSAgICB9CisgICAgaWYg
KFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKKyAgICAgICAgU1dD
b250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc3RvcEFsbFNlcnZpY2VXb3JrZXJzKCk7CiAjZW5k
aWYKIAogICAgIG1fbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uID0gbnVsbHB0cjsKQEAgLTE3OTgs
OCArMTc5Niw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVpbnQ2NF90IHBhZ2VHCiAKIHZvaWQgV2ViUHJvY2Vzczo6
cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50cygpCiB7Ci0gICAgLy8gV2UgZG8gbm90IHdhbnQg
dG8gcmVnaXN0ZXIgc2VydmljZSB3b3JrZXIgZHVtbXkgZG9jdW1lbnRzLgotICAgIEFTU0VSVCgh
U1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKTsKICAgICBTZXJ2aWNl
V29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudHMo
KTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDg5OTI0ZDVmODg1ZDhlMDRlMDU5N2EwOGEyMjRiMWUzNTFjZDQ4MGQuLjVkNzdkMGM3MGNl
ZmM5Y2U4NGJlZDg1OGVhYmQ4ZmRiMWMyMzNhOTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxOS0xMC0xMyAgeW91
ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV1c2UgZXhpc3Rpbmcg
d2ViIHByb2Nlc3NlcyBmb3IgcnVubmluZyBzZXJ2aWNlIHdvcmtlcnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjE5NQorCisgICAgICAgIFJldmll
d2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBlbmZvcmNpbmcg
YSBzZXBhcmF0ZSBwcm9jZXNzIGZvciBzZXJ2aWNlIHdvcmtlcnMuCisgICAgICAgIFRoaXMgaXMg
dXNlZnVsIGZvciB0ZXN0cyB0cnlpbmcgdG8gY3Jhc2ggdGhlIHNlcnZpY2Ugd29ya2VyIHByb2Nl
c3MuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VX
b3JrZXJCYXNpYy5tbToKKyAgICAgICAgVXBkYXRlIHRlc3QgdG8gdXNlIHNlcnZpY2VXb3JrZXJQ
cm9jZXNzQ291bnQuCisgICAgICAgIEFkZCB0ZXN0IHRvIGNoZWNrIGZvciBpbiBwcm9jZXNzIGFu
ZCBvdXQgb2YgcHJvY2VzcyBzZXJ2aWNlIHdvcmtlcnMuCisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAo
V1RSOjpUZXN0UnVubmVyOjpzZXRVc2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKToKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdU
Ujo6VGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RSOjpU
ZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1
bmRsZSk6CisKIDIwMTktMTAtMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBCYWNrL0ZvcndhcmQgY2FjaGUgZG9lcyBub3Qgd29yayBhZnRlciBkb2luZyBhIGZh
dm9yaXRlIG5hdmlnYXRpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0KaW5kZXggNTcwMDRiZjI5YTRm
MzNhMzU4YTI5NDY2MzczZDliY2U3M2FhNWUyNC4uMGM1ZGQ5NjJlYjVhN2I5Yjg2ZmViYTE5NDAw
NjNlZmI1YmJhMDFmNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0KQEAgLTEyNDMsNyArMTI0Myw3
IEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIFNlcnZpY2VXb3JrZXJQcm9jZXNzQ3JlYXRpb24pCiAg
ICAgZG9uZSA9IGZhbHNlOwogCiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgbG9hZGluZyB0aGUgc2lt
cGxlIHBhZ2UgZGlkIG5vdCBzdGFydCB0aGUgc2VydmljZSB3b3JrZXIgcHJvY2Vzcy4KLSAgICBF
WFBFQ1RfRVEoMXUsIHdlYlZpZXcuZ2V0KCkuY29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbC5fd2Vi
UHJvY2Vzc0NvdW50SWdub3JpbmdQcmV3YXJtZWQpOworICAgIEVYUEVDVF9FUSgwdSwgd2ViVmll
dy5nZXQoKS5jb25maWd1cmF0aW9uLnByb2Nlc3NQb29sLl9zZXJ2aWNlV29ya2VyUHJvY2Vzc0Nv
dW50KTsKIAogICAgIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246bmV3Q29uZmln
dXJhdGlvbi5nZXQoKV0pOwogICAgIEVYUEVDVF9FUSgydSwgd2ViVmlldy5nZXQoKS5jb25maWd1
cmF0aW9uLnByb2Nlc3NQb29sLl93ZWJQcm9jZXNzQ291bnRJZ25vcmluZ1ByZXdhcm1lZCk7CkBA
IC0xMjUzLDcgKzEyNTMsNyBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBTZXJ2aWNlV29ya2VyUHJv
Y2Vzc0NyZWF0aW9uKQogICAgIGRvbmUgPSBmYWxzZTsKIAogICAgIC8vIE1ha2Ugc3VyZSB0aGF0
IGxvYWRpbmcgdGhpcyBwYWdlIGRpZCBzdGFydCB0aGUgc2VydmljZSB3b3JrZXIgcHJvY2Vzcy4K
LSAgICBFWFBFQ1RfRVEoM3UsIHdlYlZpZXcuZ2V0KCkuY29uZmlndXJhdGlvbi5wcm9jZXNzUG9v
bC5fd2ViUHJvY2Vzc0NvdW50SWdub3JpbmdQcmV3YXJtZWQpOworICAgIEVYUEVDVF9FUSgxdSwg
d2ViVmlldy5nZXQoKS5jb25maWd1cmF0aW9uLnByb2Nlc3NQb29sLl9zZXJ2aWNlV29ya2VyUHJv
Y2Vzc0NvdW50KTsKIAogICAgIFtbY29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXSByZW1v
dmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1v
ZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsK
ICAgICAgICAgZG9uZSA9IHRydWU7CkBAIC0xOTEwLDYgKzE5MTAsNTMgQEAgVEVTVChTZXJ2aWNl
V29ya2VycywgUGFyYWxsZWxQcm9jZXNzTGF1bmNoKQogICAgIHdhaXRVbnRpbFNlcnZpY2VXb3Jr
ZXJQcm9jZXNzQ291bnQocHJvY2Vzc1Bvb2wsIDIpOwogfQogCitzdGF0aWMgc2l6ZV90IGxhdW5j
aFNlcnZpY2VXb3JrZXJQcm9jZXNzKGJvb2wgdXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2Vz
cykKK3sKKyAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0Zv
ckFsbE9yaWdpbnNdOworCisgICAgYXV0byogZGF0YVN0b3JlID0gZGF0YVN0b3JlV2l0aFJlZ2lz
dGVyZWRTZXJ2aWNlV29ya2VyU2NoZW1lKEAic3ciKTsKKworICAgIC8vIFN0YXJ0IHdpdGggYSBj
bGVhbiBzbGF0ZSBkYXRhIHN0b3JlCisgICAgW2RhdGFTdG9yZSByZW1vdmVEYXRhT2ZUeXBlczpb
V0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05T
RGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKKyAgICAgICAgZG9uZSA9
IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAg
ICBkb25lID0gZmFsc2U7CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNl
dFdlYnNpdGVEYXRhU3RvcmU6ZGF0YVN0b3JlXTsKKworICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIg
PSBhZG9wdE5TKFtbU1dNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIFtbY29uZmln
dXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1l
c3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJzdyJdOworCisgICAgYXV0byBoYW5kbGVyMSA9IGFk
b3B0TlMoW1tTV1NjaGVtZXMgYWxsb2NdIGluaXRdKTsKKyAgICBoYW5kbGVyMS0+cmVzb3VyY2Vz
LnNldCgic3c6Ly9ob3N0L21haW4uaHRtbCIsIFJlc291cmNlSW5mbyB7IEAidGV4dC9odG1sIiwg
bWFpbkJ5dGVzIH0pOworICAgIGhhbmRsZXIxLT5yZXNvdXJjZXMuc2V0KCJzdzovL2hvc3Qvc3cu
anMiLCBSZXNvdXJjZUluZm8geyBAImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiLCBzY3JpcHRCeXRl
cyB9KTsKKyAgICBoYW5kbGVyMS0+cmVzb3VyY2VzLnNldCgic3c6Ly9ob3N0Mi9tYWluLmh0bWwi
LCBSZXNvdXJjZUluZm8geyBAInRleHQvaHRtbCIsIG1haW5CeXRlcyB9KTsKKyAgICBoYW5kbGVy
MS0+cmVzb3VyY2VzLnNldCgic3c6Ly9ob3N0Mi9zdy5qcyIsIFJlc291cmNlSW5mbyB7IEAiYXBw
bGljYXRpb24vamF2YXNjcmlwdCIsIHNjcmlwdEJ5dGVzIH0pOworICAgIFtjb25maWd1cmF0aW9u
IHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlcjEuZ2V0KCkgZm9yVVJMU2NoZW1lOkAic3ciXTsK
KworICAgIGF1dG8gKnByb2Nlc3NQb29sID0gY29uZmlndXJhdGlvbi5nZXQoKS5wcm9jZXNzUG9v
bDsKKyAgICBbcHJvY2Vzc1Bvb2wgX3NldFVzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3M6
IHVzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3NdOworCisgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBOU1VS
TFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBV
UkxXaXRoU3RyaW5nOkAic3c6Ly9ob3N0L21haW4uaHRtbCJdXTsKKworICAgIFt3ZWJWaWV3IGxv
YWRSZXF1ZXN0OnJlcXVlc3RdOworCisgICAgd2FpdFVudGlsU2VydmljZVdvcmtlclByb2Nlc3ND
b3VudChwcm9jZXNzUG9vbCwgMSk7CisgICAgcmV0dXJuIHdlYlZpZXcuZ2V0KCkuY29uZmlndXJh
dGlvbi5wcm9jZXNzUG9vbC5fd2ViUHJvY2Vzc0NvdW50SWdub3JpbmdQcmV3YXJtZWQ7Cit9CisK
K1RFU1QoU2VydmljZVdvcmtlcnMsIE91dE9mQW5kSW5Qcm9jZXNzU2VydmljZVdvcmtlcikKK3sK
KyAgICBib29sIHVzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MgPSBmYWxzZTsKKyAgICBF
WFBFQ1RfRVEoMXUsIGxhdW5jaFNlcnZpY2VXb3JrZXJQcm9jZXNzKHVzZVNlcGFyYXRlU2Vydmlj
ZVdvcmtlclByb2Nlc3MpKTsKKworICAgIHVzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3Mg
PSB0cnVlOworICAgIEVYUEVDVF9FUSgydSwgbGF1bmNoU2VydmljZVdvcmtlclByb2Nlc3ModXNl
U2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2VzcykpOworfQorCiBURVNUKFNlcnZpY2VXb3JrZXJz
LCBUaHJvdHRsZUNyYXNoKQogewogICAgIEFTU0VSVChtYWluQnl0ZXMpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVy
LmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVz
dFJ1bm5lci5pZGwKaW5kZXggOTU3MDE0NDQxNTc0NmY4MzRlNzNkYzM3MWMwNDFhNTc0OWEwMWNk
ZC4uZTI2YjRmYThhZTI0ZmVlY2YyZWNjOTExMDBlYjlmMTZiMThhMDQxNCAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVy
LmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdz
L1Rlc3RSdW5uZXIuaWRsCkBAIC0zNjYsNiArMzY2LDcgQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIg
ewogCiAgICAgdm9pZCB0ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcygpOwogICAgIHZvaWQgdGVybWlu
YXRlU2VydmljZVdvcmtlclByb2Nlc3MoKTsKKyAgICB2b2lkIHNldFVzZVNlcGFyYXRlU2Vydmlj
ZVdvcmtlclByb2Nlc3MoYm9vbGVhbiB2YWx1ZSk7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
dW5zaWduZWQgbG9uZyBzZXJ2ZXJUcnVzdEV2YWx1YXRpb25DYWxsYmFja0NhbGxzQ291bnQ7CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuY3BwCmluZGV4IDQ2MTdlZTNkMzQxZGMxYTBlN2ZiM2MwMWJlZGI1OGRmNWVlODdhODEuLjkx
N2RlNDFjZjdlY2Y3NTkyYTQ5M2NmOWU5OGMxNDkzY2I1NDRiMTAgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtMTI2
NCw2ICsxMjY0LDEzIEBAIHZvaWQgVGVzdFJ1bm5lcjo6dGVybWluYXRlU2VydmljZVdvcmtlclBy
b2Nlc3MoKQogICAgIFdLQnVuZGxlUGFnZVBvc3RTeW5jaHJvbm91c01lc3NhZ2VGb3JUZXN0aW5n
KEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUu
Z2V0KCksIG51bGxwdHIsIG51bGxwdHIpOwogfQogCit2b2lkIFRlc3RSdW5uZXI6OnNldFVzZVNl
cGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MoYm9vbCB2YWx1ZSkKK3sKKyAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJTZXRVc2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzIikpOworICAgIFdL
UmV0YWluUHRyPFdLQm9vbGVhblJlZj4gbWVzc2FnZUJvZHkgPSBhZG9wdFdLKFdLQm9vbGVhbkNy
ZWF0ZSh2YWx1ZSkpOworICAgIFdLQnVuZGxlUGFnZVBvc3RTeW5jaHJvbm91c01lc3NhZ2VGb3JU
ZXN0aW5nKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKSwgbWVzc2Fn
ZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBudWxscHRyKTsKK30KKwogc3RhdGljIHVu
c2lnbmVkIG5leHRVSVNjcmlwdENhbGxiYWNrSUQoKQogewogICAgIHN0YXRpYyB1bnNpZ25lZCBj
YWxsYmFja0lEID0gRmlyc3RVSVNjcmlwdENhbGxiYWNrSUQ7CmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4IDYyNzFkNTIzMTE0
ZDg2OWM0ZmEyNjJhNzk1YmNkZmQ2MDQ4MjdhYjUuLmQ5MWRiNzhkYzNlNGVlZTk4ODY4M2UxODgz
OWE1MjBjZTg2MDNkOWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC00NjUsNiArNDY1LDcgQEAgcHVibGljOgogCiAgICAg
dm9pZCB0ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcygpOwogICAgIHZvaWQgdGVybWluYXRlU2Vydmlj
ZVdvcmtlclByb2Nlc3MoKTsKKyAgICB2b2lkIHNldFVzZVNlcGFyYXRlU2VydmljZVdvcmtlclBy
b2Nlc3MoYm9vbCk7CiAKICAgICB2b2lkIHJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscyhKU1Zh
bHVlUmVmKTsKICAgICB2b2lkIGNhbGxEaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHNDYWxs
YmFjaygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCBj
MWQyMGQ5YTQ1OTQxZjBhMjFkMjljY2RlNjQyNGFhMjJjNTg0OGRhLi5lOWQ0MjhlODM0ZjZkY2Nk
ZTk3M2UyZWVlOGI1MjJmODkzNGZkMDYxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcApAQCAtOTc4LDYgKzk3OCw4IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJl
c2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMsIFJl
CiAKICAgICBXS0NvbnRleHRDbGVhckN1cnJlbnRNb2RpZmllclN0YXRlRm9yVGVzdGluZyhUZXN0
Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuY29udGV4dCgpKTsKIAorICAgIFdLQ29udGV4dFNldFVz
ZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigp
LmNvbnRleHQoKSwgZmFsc2UpOworCiAgICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gc2hvdWxk
IGFsc28gZW5zdXJlIHRoYXQgdGhlcmUgaXMgb25seSBvbmUgcGFnZSBvcGVuLgogCiAgICAgLy8g
UmVzZXQgdGhlIEV2ZW50U2VuZGVyIGZvciBlYWNoIHRlc3QuCmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IGE4ZjlhNzliZTk1ODU3YjcwMGQ3ZmFiNjc3Mjg5
NzVjOTk0ZDA0YjIuLjhmZTkyNzljZmVmMTBiNDlhNDYzZWQyNjIyMmQ2YzYwMDI3NDI3M2MgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC0xNjE4LDYgKzE2
MTgsMTMgQEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2
ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5h
bWUsICJTZXRVc2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzIikpIHsKKyAgICAgICAgQVNT
RVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS0Jvb2xlYW5HZXRUeXBlSUQoKSk7Cisg
ICAgICAgIGF1dG8gdXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2VzcyA9IFdLQm9vbGVhbkdl
dFZhbHVlKHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4obWVzc2FnZUJvZHkpKTsKKyAgICAgICAg
V0tDb250ZXh0U2V0VXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2VzcyhUZXN0Q29udHJvbGxl
cjo6c2luZ2xldG9uKCkuY29udGV4dCgpLCB1c2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNz
KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCiAgICAgaWYgKFdLU3RyaW5nSXNF
cXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJUZXJtaW5hdGVOZXR3b3JrUHJvY2VzcyIp
KSB7CiAgICAgICAgIEFTU0VSVCghbWVzc2FnZUJvZHkpOwogICAgICAgICBUZXN0Q29udHJvbGxl
cjo6c2luZ2xldG9uKCkudGVybWluYXRlTmV0d29ya1Byb2Nlc3MoKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjMmI1Nzk2
ZmQwZTYwNjg3NDI2ZmJmNzMwNzdkZWQ0YmQ1MDFlNDhhLi5mYWI3MmVlODNkOGVhZGRmMGI3ZDZm
NDhkNTEyMmViOThiNTRjNzJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTktMTAtMTMgIHlv
dWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFJldXNlIGV4aXN0aW5n
IHdlYiBwcm9jZXNzZXMgZm9yIHJ1bm5pbmcgc2VydmljZSB3b3JrZXJzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDIxOTUKKworICAgICAgICBSZXZp
ZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2
aWNlL3Jlc291cmNlcy9wb3N0bWVzc2FnZS1hZnRlci1zdy1wcm9jZXNzLWNyYXNoLmpzOgorICAg
ICAgICAoYXN5bmMuZG9UZXN0KToKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2Vydmlj
ZS9yZXNvdXJjZXMvcG9zdG1lc3NhZ2UtYWZ0ZXItdGVybWluYXRlLmpzOgorICAgICAgICAoYXN5
bmMuZG9UZXN0KToKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJj
ZXMvcG9zdG1lc3NhZ2UtYWZ0ZXItdGVybWluYXRpbmctaHVuZy13b3JrZXIuanM6CisgICAgICAg
IChhc3luYy5kb1Rlc3QpOgorICAgICAgICAqIGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9vbmxp
bmUuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2Vydmlj
ZS13b3JrZXItZGlmZmVyZW50LXByb2Nlc3MuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItZGlmZmVyZW50
LXByb2Nlc3MuaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvc2VydmljZS13
b3JrZXJzL3NlcnZpY2Utd29ya2VyLXByb2Nlc3Mtd29ya2VyLmpzOiBBZGRlZC4KKwogMjAxOS0x
MC0xMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBbaU9TXSBD
cmFzaCBpbiBXZWJDb3JlOjpET01XaW5kb3c6OmluY3JlbWVudFNjcm9sbEV2ZW50TGlzdGVuZXJz
Q291bnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNl
L3Jlc291cmNlcy9wb3N0bWVzc2FnZS1hZnRlci1zdy1wcm9jZXNzLWNyYXNoLmpzIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3Bvc3RtZXNzYWdlLWFm
dGVyLXN3LXByb2Nlc3MtY3Jhc2guanMKaW5kZXggNGY3MjE2NGNhZmQ4Y2VjMDliZDhhODJlNzZi
YWFkYjIzZTkwNjhkZS4uMTIwNGNjNjU5NGY0NmUzNzVmODAzZjAyMzk5NDdiYzdkNWIzMjZkYSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3Vy
Y2VzL3Bvc3RtZXNzYWdlLWFmdGVyLXN3LXByb2Nlc3MtY3Jhc2guanMKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3Bvc3RtZXNzYWdlLWFmdGVy
LXN3LXByb2Nlc3MtY3Jhc2guanMKQEAgLTM3LDEwICszNywyMCBAQCBuYXZpZ2F0b3Iuc2Vydmlj
ZVdvcmtlci5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgZnVuY3Rpb24oZXZlbnQpIHsKICAg
ICBmaW5pc2hTV1Rlc3QoKTsKIH0pOwogCi1uYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rl
cigicmVzb3VyY2VzL3Bvc3RtZXNzYWdlLWFmdGVyLXN3LXByb2Nlc3MtY3Jhc2gtd29ya2VyLmpz
IiwgeyB9KS50aGVuKGZ1bmN0aW9uKHJlZ2lzdHJhdGlvbikgewotICAgIHdvcmtlciA9IHJlZ2lz
dHJhdGlvbi5pbnN0YWxsaW5nOwotICAgIGxvZygiKiBTZW5kaW5nIFN0YXRlIHRvIFNlcnZpY2Ug
V29ya2VyIik7Ci0gICAgd29ya2VyLnBvc3RNZXNzYWdlKCJTZXRTdGF0ZSIpOwotICAgIGxvZygi
KiBBc2tpbmcgU2VydmljZSBXb3JrZXIgaWYgaXQgcmVjZWl2ZWQgdGhlIHN0YXRlIik7Ci0gICAg
d29ya2VyLnBvc3RNZXNzYWdlKCJIYXNTdGF0ZSIpOwotfSk7Cithc3luYyBmdW5jdGlvbiBkb1Rl
c3QoKQoreworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVy
LnNldFVzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3ModHJ1ZSk7CisgICAgICAgIGF3YWl0
IGZldGNoKCIiKS50aGVuKCgpID0+IHsgfSwgKCkgPT4geyB9KTsKKyAgICB9CisKKyAgICBuYXZp
Z2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcigicmVzb3VyY2VzL3Bvc3RtZXNzYWdlLWFmdGVy
LXN3LXByb2Nlc3MtY3Jhc2gtd29ya2VyLmpzIiwgeyB9KS50aGVuKGZ1bmN0aW9uKHJlZ2lzdHJh
dGlvbikgeworICAgICAgICB3b3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFsbGluZzsKKyAgICAg
ICAgbG9nKCIqIFNlbmRpbmcgU3RhdGUgdG8gU2VydmljZSBXb3JrZXIiKTsKKyAgICAgICAgd29y
a2VyLnBvc3RNZXNzYWdlKCJTZXRTdGF0ZSIpOworICAgICAgICBsb2coIiogQXNraW5nIFNlcnZp
Y2UgV29ya2VyIGlmIGl0IHJlY2VpdmVkIHRoZSBzdGF0ZSIpOworICAgICAgICB3b3JrZXIucG9z
dE1lc3NhZ2UoIkhhc1N0YXRlIik7CisgICAgfSk7Cit9CisKK2RvVGVzdCgpOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3Bvc3Rt
ZXNzYWdlLWFmdGVyLXRlcm1pbmF0ZS5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vy
cy9zZXJ2aWNlL3Jlc291cmNlcy9wb3N0bWVzc2FnZS1hZnRlci10ZXJtaW5hdGUuanMKaW5kZXgg
OWQ1Zjk3NWVmNmNlOGE3ZDBhMDczZTk5ZTIzYzI2MmI4YmNlNTA1Mi4uYWM3Y2FkNzRlYzZhZThl
MTA5MDk1NTc1MzBiZTRlOGEyZTQzZDBmNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3Bvc3RtZXNzYWdlLWFmdGVyLXRlcm1pbmF0
ZS5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJj
ZXMvcG9zdG1lc3NhZ2UtYWZ0ZXItdGVybWluYXRlLmpzCkBAIC0xMCw2ICsxMCwxNSBAQCBuYXZp
Z2F0b3Iuc2VydmljZVdvcmtlci5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgZnVuY3Rpb24o
ZXZlbnQpIHsKICAgICAgICAgZmluaXNoU1dUZXN0KCk7CiB9KTsKIAotbmF2aWdhdG9yLnNlcnZp
Y2VXb3JrZXIucmVnaXN0ZXIoInJlc291cmNlcy9wb3N0bWVzc2FnZS1lY2hvLXdvcmtlci5qcyIs
IHsgfSkudGhlbihmdW5jdGlvbihyZWdpc3RyYXRpb24pIHsKK2FzeW5jIGZ1bmN0aW9uIGRvVGVz
dCgpCit7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIu
c2V0VXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzcyh0cnVlKTsKKyAgICAgICAgYXdhaXQg
ZmV0Y2goIiIpLnRoZW4oKCkgPT4geyB9LCAoKSA9PiB7IH0pOworICAgIH0KKyAKKyAgICBjb25z
dCByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rlcigi
cmVzb3VyY2VzL3Bvc3RtZXNzYWdlLWVjaG8td29ya2VyLmpzIiwgeyB9KTsKICAgICByZWdpc3Ry
YXRpb24uaW5zdGFsbGluZy5wb3N0TWVzc2FnZSgiTWVzc2FnZSAxIik7Ci19KTsKK30KKworZG9U
ZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2Vydmlj
ZS9yZXNvdXJjZXMvcG9zdG1lc3NhZ2UtYWZ0ZXItdGVybWluYXRpbmctaHVuZy13b3JrZXIuanMg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvcG9zdG1l
c3NhZ2UtYWZ0ZXItdGVybWluYXRpbmctaHVuZy13b3JrZXIuanMKaW5kZXggZTBmMmU4ZmU5MzZi
MTNjZTRlM2YwNTRhNThmZWQ0NGIwNjQyYjM1Ny4uODZhNDMxYjVjNzIxZTAyOTIwNmEyYTMzOWFh
MWRiODA4OWExZmNkMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJz
L3NlcnZpY2UvcmVzb3VyY2VzL3Bvc3RtZXNzYWdlLWFmdGVyLXRlcm1pbmF0aW5nLWh1bmctd29y
a2VyLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291
cmNlcy9wb3N0bWVzc2FnZS1hZnRlci10ZXJtaW5hdGluZy1odW5nLXdvcmtlci5qcwpAQCAtMjMs
NyArMjMsMTcgQEAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcigibWVz
c2FnZSIsIGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgfQogfSk7CiAKLW5hdmlnYXRvci5zZXJ2aWNl
V29ya2VyLnJlZ2lzdGVyKCJyZXNvdXJjZXMvcG9zdG1lc3NhZ2UtZWNoby13b3JrZXItbWF5aGFu
Zy5qcyIsIHsgfSkudGhlbihmdW5jdGlvbihyZWdpc3RyYXRpb24pIHsKK2FzeW5jIGZ1bmN0aW9u
IGRvVGVzdCgpCit7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RS
dW5uZXIuc2V0VXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzcyh0cnVlKTsKKyAgICAgICAg
YXdhaXQgZmV0Y2goIiIpLnRoZW4oKCkgPT4geyB9LCAoKSA9PiB7IH0pOworICAgIH0KKyAKKyAg
ICBjb25zdCByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdp
c3RlcigicmVzb3VyY2VzL3Bvc3RtZXNzYWdlLWVjaG8td29ya2VyLW1heWhhbmcuanMiLCB7IH0p
OwogICAgIHdvcmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOwogICAgIHdvcmtlci5wb3N0
TWVzc2FnZSgiSEFORyIpOwotfSk7Cit9CisKK2RvVGVzdCgpOworCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvb25saW5lLmh0dHBzLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvb25saW5lLmh0dHBzLmh0bWwKaW5kZXgg
ZmE1OGQ3ZGYxNzRhZjM4MWRhNDIwYzUyZDI4OWIyNTJkZGMxYjU0YS4uNGI5MmI0YmVlNzZmMWI1
MWMyZjA3Y2U0NmQ1ZDY3YWJjOTc5Y2U5ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93
cHQvc2VydmljZS13b3JrZXJzL29ubGluZS5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9vbmxpbmUuaHR0cHMuaHRtbApAQCAtOSw2ICs5LDExIEBA
IHZhciBzY29wZSA9ICIiOwogdmFyIGFjdGl2ZVdvcmtlcjsKIAogcHJvbWlzZV90ZXN0KGFzeW5j
ICh0ZXN0KSA9PiB7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RS
dW5uZXIuc2V0VXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzcyh0cnVlKTsKKyAgICAgICAg
YXdhaXQgZmV0Y2goIiIpLnRoZW4oKCkgPT4geyB9LCAoKSA9PiB7IH0pOworICAgIH0KKwogICAg
IHZhciByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rl
cigib25saW5lLXdvcmtlci5qcyIsIHsgc2NvcGUgOiBzY29wZSB9KTsKICAgICBhY3RpdmVXb3Jr
ZXIgPSByZWdpc3RyYXRpb24uYWN0aXZlOwogICAgIGlmIChhY3RpdmVXb3JrZXIpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIt
ZGlmZmVyZW50LXByb2Nlc3MuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLWRpZmZlcmVudC1wcm9jZXNzLmh0dHBz
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMTlhNzg4NmJmOGY2ZTRjMTM3Nzg4NjI3Mjk2ZGJm
NWE0NzM0OWRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2Vydmlj
ZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLWRpZmZlcmVudC1wcm9jZXNzLmh0dHBzLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBTZXR1cCB3b3JrZXIgCitQQVNTIFRlc3QgdGhh
dCBzZXJ2aWNlIHdvcmtlciBpcyBpbiBhIGRpZmZlcmVudCBwcm9jZXNzIAorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItZGlm
ZmVyZW50LXByb2Nlc3MuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Ut
d29ya2Vycy9zZXJ2aWNlLXdvcmtlci1kaWZmZXJlbnQtcHJvY2Vzcy5odHRwcy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjc4MzI2MzkzNjNhNGZiNjk2MTdhYmY1Y2I3ZWVkZjc1MDVkMzI0MmYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13
b3JrZXItZGlmZmVyZW50LXByb2Nlc3MuaHR0cHMuaHRtbApAQCAtMCwwICsxLDQwIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+Cit2YXIgYWN0
aXZlV29ya2VyOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRVc2VTZXBhcmF0ZVNlcnZp
Y2VXb3JrZXJQcm9jZXNzKHRydWUpOworICAgICAgICBhd2FpdCBmZXRjaCgiIikudGhlbigoKSA9
PiB7IH0sICgpID0+IHsgfSk7CisgICAgfQorCisgICAgdmFyIHJlZ2lzdHJhdGlvbiA9IGF3YWl0
IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCJzZXJ2aWNlLXdvcmtlci1wcm9jZXNz
LXdvcmtlci5qcyIsIHsgc2NvcGUgOiAiIiB9KTsKKyAgICBhY3RpdmVXb3JrZXIgPSByZWdpc3Ry
YXRpb24uYWN0aXZlOworICAgIGlmIChhY3RpdmVXb3JrZXIpCisgICAgICAgIHJldHVybjsKKyAg
ICBhY3RpdmVXb3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFsbGluZzsKKyAgICByZXR1cm4gbmV3
IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIGFjdGl2ZVdvcmtlci5hZGRFdmVudExpc3Rl
bmVyKCdzdGF0ZWNoYW5nZScsICgpID0+IHsKKyAgICAgICAgICAgIGlmIChhY3RpdmVXb3JrZXIu
c3RhdGUgPT09ICJhY3RpdmF0ZWQiKQorICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAg
ICAgfSk7CisgICAgfSk7Cit9LCAiU2V0dXAgd29ya2VyIik7CisKK3Byb21pc2VfdGVzdChhc3lu
YyAodGVzdCkgPT4geworICAgIGxldCByZXNvbHZlOworICAgIGNvbnN0IHByb21pc2UgPSBuZXcg
UHJvbWlzZShyID0+IHJlc29sdmUgPSByKTsKKyAgICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5h
ZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKGUpID0+IHJlc29sdmUoZS5kYXRhKSwge29uY2U6
IHRydWV9KTsgCisgICAgYWN0aXZlV29ya2VyLnBvc3RNZXNzYWdlKCJQSUQiKTsKKyAgICBhc3Nl
cnRfbm90X2VxdWFscyhhd2FpdCBwcm9taXNlLCB3aW5kb3cuaW50ZXJuYWxzLnByb2Nlc3NJZGVu
dGlmaWVyKTsKK30sICJUZXN0IHRoYXQgc2VydmljZSB3b3JrZXIgaXMgaW4gYSBkaWZmZXJlbnQg
cHJvY2VzcyIpOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1wcm9jZXNz
LXdvcmtlci5qcyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNl
LXdvcmtlci1wcm9jZXNzLXdvcmtlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YWU1NzcwY2NjZjhiZGRjMmYx
MmM4YzNjMWQ1NjIwMGRkYWRmZWFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXByb2Nlc3Mtd29ya2VyLmpzCkBA
IC0wLDAgKzEsMyBAQAorc2VsZi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKGV2ZW50KSA9
PiB7CisgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKHNlbGYuaW50ZXJuYWxzID8gaW50ZXJu
YWxzLnByb2Nlc3NJZGVudGlmaWVyIDogIm5lZWRzIGludGVybmFsIEFQSSIpOworfSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380875</attachid>
            <date>2019-10-14 04:26:29 -0700</date>
            <delta_ts>2019-10-14 08:37:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202195-20191014132628.patch</filename>
            <type>text/plain</type>
            <size>2046</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDc2YWI2NzAxNDgwMGNjZjJj
OWNhODBjYWRiZjMwNTViNDU3ZmQ3YzQuLjAzYWI3NTA0ZmQzY2I1MjVhODFlN2RiZDQwNWZiOGZj
MTFlNjgzNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTktMTAtMTQgIHlvdWVubiBm
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFJldXNlIGV4aXN0aW5nIHdlYiBw
cm9jZXNzZXMgZm9yIHJ1bm5pbmcgc2VydmljZSB3b3JrZXJzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDIxOTUKKworICAgICAgICBVbnJldmlld2Vk
LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlzYWJsZVNlcnZpY2VXb3JrZXJzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjplbmFibGVTZXJ2aWNlV29ya2Vycyk6CisgICAgICAg
IEZpeCBjYXNlIHdoZXJlIEVOQUJMRV9TRVJWSUNFX1dPUktFUiBpcyBub3QgZGVmaW5lZC4KKwog
MjAxOS0xMC0xMyAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAg
SGFuZGxlIHNlcnZpY2Ugd29ya2VyIGxvYWRzIHRocm91Z2ggTmV0d29ya1Jlc291cmNlTG9hZGVy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA2OTg4
NjU0OWJjNjhiNzllY2U1ZDk0YzVkYjZkYTZlNDMxYzg4ZTNkLi5lMDBjOGRmNjMwZDcyNjVlMWJi
MDY3NDM3YTA2MWZjNDg3MzFlN2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHAKQEAgLTE1NjgsNiArMTU2OCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5
Ojp1cGRhdGVTZXJ2aWNlV29ya2VyUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNl
c1N0CiAgICAgQVNTRVJUKG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKTsKICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VXBkYXRlUHJlZmVyZW5jZXNT
dG9yZSB7IHN0b3JlIH0sIDApOwogfQorI2VuZGlmCiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpk
aXNhYmxlU2VydmljZVdvcmtlcnMoKQogewpAQCAtMTU3NSw5ICsxNTc2LDExIEBAIHZvaWQgV2Vi
UHJvY2Vzc1Byb3h5OjpkaXNhYmxlU2VydmljZVdvcmtlcnMoKQogICAgICAgICByZXR1cm47CiAK
ICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiA9IHsgfTsKLSAgICBwcm9jZXNzUG9vbCgp
LnJlbW92ZUZyb21TZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKCp0aGlzKTsKIAorI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKKyAgICBwcm9jZXNzUG9vbCgpLnJlbW92ZUZyb21TZXJ2aWNlV29ya2Vy
UHJvY2Vzc2VzKCp0aGlzKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbjo6Q2xvc2UgeyB9LCAwKTsKKyNlbmRpZgogCiAgICAgbWF5YmVTaHV0RG93bigp
OwogfQpAQCAtMTU4OCw3ICsxNTkxLDYgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuYWJsZVNl
cnZpY2VXb3JrZXJzKCkKICAgICBBU1NFUlQoIW1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKTsK
ICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiA9IFNlcnZpY2VXb3JrZXJJbmZvcm1hdGlv
biB7IFdlYlBhZ2VQcm94eUlkZW50aWZpZXI6OmdlbmVyYXRlKCksIFBhZ2VJZGVudGlmaWVyOjpn
ZW5lcmF0ZSgpIH07CiB9Ci0jZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>